aboutsummaryrefslogtreecommitdiffstats
path: root/docs/superpowers/plans/2026-08-03-post-0.1.0-usability.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/superpowers/plans/2026-08-03-post-0.1.0-usability.md')
-rw-r--r--docs/superpowers/plans/2026-08-03-post-0.1.0-usability.md44
1 files changed, 1 insertions, 43 deletions
diff --git a/docs/superpowers/plans/2026-08-03-post-0.1.0-usability.md b/docs/superpowers/plans/2026-08-03-post-0.1.0-usability.md
index c02de31..e921e89 100644
--- a/docs/superpowers/plans/2026-08-03-post-0.1.0-usability.md
+++ b/docs/superpowers/plans/2026-08-03-post-0.1.0-usability.md
@@ -86,7 +86,7 @@ taking that too literally.
| 19 | No prompt to sync on exit when edits are pending | behavior | S | **done** |
| 20 | Thread view does not match the user's mental model | presentation | L | **done** 2026-08-10, as the card list; see 53 |
| 21 | Default shortcuts are not sensible enough | discoverability | S | open |
-| 22 | Translatability audit and i18n wiring | correctness | M | open |
+| 22 | Translatability audit and i18n wiring | correctness | M | **done** 2026-08-15, unreleased; see `specs/2026-08-15-i18n-design.md`. Found eight rule-builder labels that could never be translated in any language, and twenty untranslatable warnings. Ships an Italian translation of all 355 strings |
| 23 | No way to save a search query from the UI | workflow | M | **done** 2026-08-13, shipped in 0.18.0; see `specs/2026-08-13-saved-queries-design.md` |
| 24 | No right-click actions on the thread list | discoverability | S | **done** |
| 25 | No select-all, and bulk actions are undiscoverable | workflow | S | **done** |
@@ -194,48 +194,6 @@ that appeared to be bound. See `KeyMap::defaultBindings()` and
the query bar claims it back while focused, so a proposal that moves it must
not resurrect that bug.
-## 22. Translatability audit and i18n wiring
-
-**Observed (user, 2026-08-04):** "a full check of the codebase and wiring up of
-the i18n system."
-
-**This is a debt `CLAUDE.md` already records.** The rule that every user-facing
-string must be wrapped in `tr()` was added while building query completion, and
-that file states plainly that "pre-existing code has not been audited against
-this rule". This item is that audit, plus the loading machinery which does not
-exist at all.
-
-**Two halves, and they are different sizes.**
-
-- *The audit.* Every user-visible string in `src/` checked for `tr()`, with the
- translation context correct: a string in a free function needs
- `Q_DECLARE_TR_FUNCTIONS`, since calling `QObject::tr()` compiles but files it
- under the wrong context. `lupdate` output is the evidence here, not reading.
-- *The wiring.* Nothing loads a `.qm` file today: there is no `QTranslator` in
- `main.cpp`, no `.ts` files in the tree, and no CMake rule to build or install
- them. Until that exists, a translated string has nowhere to come from.
-
-**Constraint:** query syntax is not user-facing text. notmuch keywords such as
-`tag:` and `date:` are wire format and must never be translated, only the prose
-describing them. The completion vocabulary is exactly this trap: the values are
-literal, the descriptions are prose.
-
-**Verification:** run `lupdate` and read the generated `.ts`. A string that
-does not appear there is not translatable, whatever the source looks like.
-
-**No longer on demand.** The entry said to do this when a defect needs it, not
-before (user, 2026-08-04). Item 66 needs it now, so the deliverable is a RED
-reproduction of that defect, not fixture wiring on its own. Fixing 66 is
-deliberately excluded: it has never been isolated, and designing a fix beside a
-hypothesis is how a wrong one gets locked in.
-
-**Smaller than this entry has read since 2026-08-04.** No hook has to be added
-to `MainWindow`. `wireWorker()` (`src/mainwindow.cpp:1440`) already builds the
-worker from `m_config.notmuchConfig()`, an ordinary config key, so a test that
-writes a `qtmaildir.conf` pointing at the fixture gets a real worker through the
-shipping path with nothing in `src/` changed. Mind the `[general]` prefix trap
-when writing that file.
-
## 40. No live filter over the current view
**Observed (user, 2026-08-05):** "search in current view", spelled out as two