aboutsummaryrefslogtreecommitdiff
path: root/docs/design.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/design.md')
-rw-r--r--docs/design.md25
1 files changed, 7 insertions, 18 deletions
diff --git a/docs/design.md b/docs/design.md
index a7584e6..a3356c7 100644
--- a/docs/design.md
+++ b/docs/design.md
@@ -1,20 +1,9 @@
# krino design
-Status: describes krino 0.0.1, 2026-09-13; amended 2026-09-14 for 0.0.2:
-duplicates are never deleted (§5.5), and coloured output with `--no-color`
-(§8.2, §11); amended again 2026-09-14 for 0.0.3: the plan
-shown as one block per file, wrapped to the terminal, and `-P` (§8.2, §8.3, §11);
-amended again 2026-09-14 for 0.0.4: `max-size` (§4.4), `(exclude ...)`
-(§4.2, §4.3, §4.6) and `--min-age` (§11); amended again 2026-09-14 for
-0.0.5: the keyword cache (§3, §6.1, §13), and `t`, `d` and `w` in review
-(§8.3, §10); amended again 2026-09-14 for 0.0.6: `w` applies and quits, and
-each choice is echoed in red (§8.2, §8.3); amended again 2026-09-14 for
-0.0.7: the threat model and its tests (§15.1); amended 2026-09-15 for
-0.0.8: three-valued content tests (§4.6, §5.4), captures from the original
-name (§7.3), claims across directories (§7.4), `-v` destinations not scanned
-(§8.1), `(partly undone)` (§10), build checks (§14) and real document
-fixtures (§15); amended 2026-09-15 for 0.0.9: failed duplicate lookups and
-undecided `(stop)` rules (§5.4), placeholders refused at load (§7.3).
+The design of krino's engine and command line, up to date for 0.0.9. The
+window has a document of its own, `gui-design.md`; what changed in each
+release is in `CHANGELOG.md`. Source comments cite the sections here by
+number, so the numbering is stable.
krino (from Greek κρίνω, "to separate, to judge, to decide") sorts files in
chosen directories by rules. A rule tests a file's type, name, path, size,
@@ -515,8 +504,8 @@ name.
that exists, under "not scanned".
Known limitation: a `DEST` whose *first* path component is itself a
placeholder (`{ext}`, `{mtime:%Y}`) has no static prefix, so nothing can be
- excluded before the walk, and krino would re-examine its own output; plan 3
- closes this by treating a file already at its computed destination as a
+ excluded before the walk, and krino would re-examine its own output. What
+ closes it is treating a file already at its computed destination as a
no-op.
- Skipped: files newer than `min-age` ("too new"), larger than `max-size`
("too big"), or with a `busy` sibling ("busy").
@@ -990,7 +979,7 @@ keyword. Its defects shaped these decisions:
| `pdftotext` rather than a Go PDF library | best text quality of the open tools, fast, packaged on all three systems |
| Delete to Trash by default | recoverable, and undo can restore it |
| Duplicates are found, never deleted | duplicate conditions with different scopes elect different originals, so deleting duplicates could remove every copy; moving them aside is always recoverable, and choosing which copy to delete belongs to the user or a tool built for it (jdupes). Decided 2026-09-14 after 0.0.1 shipped with the hazard documented |
-| A new repository rather than the prototype's | the prototype's history holds personal data; the prototype keeps working until krino reaches parity |
+| A new repository rather than the prototype's | a history that can be published as it stands; the prototype keeps working until krino reaches parity |
| Personal configuration never enters the repository | rules hold private data; the leak check enforces it on every commit and in `make ci` |
## 18. Settled before implementation