docs: tighten wording, drop the planning scratch files

Removes docs/superpowers, which held a design note and an implementation
plan. Those were working notes rather than anything the project needs, and
they don't belong in the repo.

Everything else here is wording: em dashes swapped for ordinary
punctuation across the README and the code comments, and a few sentences
straightened out.
This commit is contained in:
Aculix Technologies
2026-08-16 01:50:59 +05:30
parent 7e030722a9
commit 6b01e4c246
9 changed files with 22 additions and 1584 deletions
+2 -2
View File
@@ -7,7 +7,7 @@ import { toKey } from './dates.js'
* today (oldest day first, within-day order preserved, ahead of anything
* already in today), completed tasks are discarded, and the old key is
* deleted. Pruning is therefore a side effect of carrying, so there is no
* separate retention policy. Future keys Tomorrow are never touched.
* separate retention policy. Future keys, meaning Tomorrow, are never touched.
*
* `now` is a parameter rather than a `new Date()` call so the boundary is
* testable. This replaces `checkAndMigrateTasks`, whose guard compared a
@@ -17,7 +17,7 @@ export function rollover(storage, now) {
const todayKey = toKey(now)
// listTaskKeys yields only well-formed ISO keys, which is what makes this
// string comparison safe and is why the key format changed.
// string comparison safe, and is why the key format changed.
const pastKeys = storage
.listTaskKeys()
.filter((key) => key < todayKey)
+2 -2
View File
@@ -4,10 +4,10 @@ const TEXT_FIELDS = new Set(['INPUT', 'TEXTAREA'])
* Whether a keydown should trigger task undo.
*
* The subtlety is the text field. Deferring to a focused field's own undo
* sounds right, but the add-task input is where focus normally sits — you
* sounds right, but the add-task input is where focus normally sits. You
* click it to add a task and focus stays there, and on macOS clicking a
* button does not move focus. Guarding on focus alone therefore disables
* undo in precisely the situation it is needed: right after deleting a task.
* undo in the one situation it is needed: right after deleting a task.
*
* So it defers only when the field actually holds text worth undoing. An
* empty input has nothing for the browser to restore, and task undo wins.
+1 -1
View File
@@ -1,5 +1,5 @@
/** crypto.randomUUID requires a secure context, and Negotium over plain HTTP
* on a LAN is a real self-hosted deployment shape hence the fallback. */
* on a LAN is a real deployment shape for this app, hence the fallback. */
function newId() {
if (typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function') {
return crypto.randomUUID()
+1 -1
View File
@@ -24,7 +24,7 @@ export function createUndoStack(limit = 10) {
* Reverses one entry against the current task list.
*
* Indices are clamped because the list may have changed since the entry was
* recorded — a task deleted from position 5 can be restored into a list that
* recorded. A task deleted from position 5 can be restored into a list that
* has since shrunk to two items, and landing at the end beats throwing.
*
* `clearCompleted` entries must record `removed` in ascending index order, so