SPEC v0.11: M7 wave and M6b outcomes (D-069 to D-080), HANDOFF, prompts
Records the readings of M7a to M7f (b9b061a, 6ac711d, 082b8dc, 31760f9, 1e42f76, a54eb7c) and the M6b design-system fix pass (3a1bd14): S-11/S-12 captions, titles and states; navigation wiring and result snackbars (§13.2); new template day default (AC-9.8); manual update check (AC-16.6); FieldError field names and settlement editing (AC-11.6); quickRowCategories; two-line category labels; long day ranges (§9.8); amounts open with two decimals (§9.6); string keys (strings.csv 578 rows); "Synka nu" online only (§9.9). §11 marks M7a-M7f and M6b landed, M8 and M7g started; §11.3 lists contract requests for a later contract pass (M12e). Docs only. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TQd3pEP9UeN2uifbHknQ7B
This commit is contained in:
+25
-19
@@ -3,40 +3,46 @@
|
||||
Living document, rewritten in place (never a second copy). A new orchestrator session reads CLAUDE.md, then this.
|
||||
|
||||
## 1. Where things stand
|
||||
- `main` at `3080804` (M6 design system, on top of `bdba9d3` M12d) plus the SPEC v0.10 docs commit from `agent-spec10` once it lands. History: `5e1be38` plans and prompts, `c885aba` M2c-dev, `76ee957` SPEC v0.3, `fad6fc9` M2b, `fdf2093` M2a, `040bf41` SPEC v0.4, `503cee5` M3, `c28c52b` M5, `982451d` SPEC v0.5, `bd6f10a` M4, `23a2f1e` SPEC v0.6, `ab298ab` M9, `e8ee518` SPEC v0.7, `6b60ef7` M12a, `7fb9f6f` SPEC v0.8, `e499107` M12c, `2e2ebe7` M12b, `d452fa6` UX Kalas categories and tokens, `16c4d01` UX sprint U2, `45eecd1` SPEC v0.9, `bdba9d3` M12d, `3080804` M6.
|
||||
- Landed: M0 spec, M1 contracts and vectors (`c6df2ab`), M2a server skeleton and `kvitt-domain` (`fdf2093`), M2b Android skeleton and `:domain` (`fad6fc9`), M2c-dev infra for development (`c885aba`), M3 server core API (`503cee5`), M4 server sync, audit, push, scheduler (`bd6f10a`), M5 Android data layer (`c28c52b`), M9 Splitwise importer (`ab298ab`), M12a (`6b60ef7`), M12b (`2e2ebe7`), M12c (`e499107`), U1 and U2 (`16c4d01`, owner approved), SPEC v0.9 (`45eecd1`, D-055 to D-059), M12d UI contract additions (`bdba9d3`, D-060 to D-062), M6 design system (`3080804`, D-063 to D-066).
|
||||
- With `agent-spec10`: SPEC v0.10. D-060 `frequentCategoryIds` holds only used categories, the editor fills to five; D-061 a key per active account, none for archived, ties by count, `sort_order`, category id; D-062 `deletable` false for unknown or deleted ids, archived follow AC-7.6, fake `delete` and `deletable` share one rule; D-063 charts on Compose `Canvas`, Vico unused in the catalog (removable later); D-064 Expressive fallbacks against material3 1.4.0 (only `ShortNavigationBar` used); D-065 month and weekday tables in `DateFormatter`, chart labels without dots, SI megabytes with one decimal (§9.8); D-066 golden layout (sheet × light/dark × sv/en, +200 %), M7a–M7f follow it; D-067 English "Dining" for `category_default_restaurants` (`strings.csv`, `:core:design`, AC-7.2); D-068 shared `ledger_settlement_label` ("Payment" / "Betalning"), settlement titles wrap to 2 lines (3 at 200 %), an empty chart shows only the 0 baseline (§13.3).
|
||||
- `main` at `3a1bd14` (M6b design-system fixes after the M7 wave) plus the SPEC v0.11 docs commit from `agent-spec11` once it lands. History: `5e1be38` plans and prompts, `c885aba` M2c-dev, `76ee957` SPEC v0.3, `fad6fc9` M2b, `fdf2093` M2a, `040bf41` SPEC v0.4, `503cee5` M3, `c28c52b` M5, `982451d` SPEC v0.5, `bd6f10a` M4, `23a2f1e` SPEC v0.6, `ab298ab` M9, `e8ee518` SPEC v0.7, `6b60ef7` M12a, `7fb9f6f` SPEC v0.8, `e499107` M12c, `2e2ebe7` M12b, `d452fa6` UX Kalas categories and tokens, `16c4d01` UX sprint U2, `45eecd1` SPEC v0.9, `bdba9d3` M12d, `3080804` M6, `7bd0aa1` SPEC v0.10, `72f21b2` app debug fakes bindings (temporary), `e6ad858` app release wiring of `:data` (pre-M8), `b9b061a` M7a, `6ac711d` M7e, `082b8dc` M7d, `31760f9` M7b, `1e42f76` M7c, `a54eb7c` M7f, `3a1bd14` M6b.
|
||||
- Landed: M0 spec, M1 contracts and vectors (`c6df2ab`), M2a (`fdf2093`), M2b (`fad6fc9`), M2c-dev (`c885aba`), M3 (`503cee5`), M4 (`bd6f10a`), M5 (`c28c52b`), M9 (`ab298ab`), M12a (`6b60ef7`), M12b (`2e2ebe7`), M12c (`e499107`), U1 and U2 (`16c4d01`, owner approved), SPEC v0.9 (`45eecd1`), M12d (`bdba9d3`), M6 (`3080804`), SPEC v0.10 (`7bd0aa1`, D-060 to D-068), M7a onboarding (`b9b061a`), M7e analytics (`6ac711d`), M7d settle (`082b8dc`), M7b home and account (`31760f9`), M7c expense (`1e42f76`), M7f settings (`a54eb7c`), M6b `:core:design` fixes (`3a1bd14`).
|
||||
- With `agent-spec11`: SPEC v0.11, D-069 to D-080 (owner approved in advance). D-069 S-11 caption, legend order, loading = no successful sync yet; D-070 S-12 titles, no error or loading state; D-071 top-level screens draw their own `KvittNavigationBar`, feature argument-key constants, result snackbars on the screen returned to (archive with undo); D-072 new template day = today; D-073 "Du har den senaste versionen" when `UpdateState` stays `None`; D-074 `FieldError.field` names, edited settlement keeps its rows, "Föreslå igen"; D-075 `quickRowCategories` in `:core:design`; D-076 two-line category labels with "…" for long custom names; D-077 long day ranges with the year; D-078 amounts open with two decimals; D-079 new string keys, `strings.csv` 578 rows; D-080 "Synka nu" online only, discard dialogs without body. §11.3 has the list of contract requests for a later contract pass (M12e).
|
||||
- Both gates exist: Android `tools/gradle-serial.sh check` (from `android/`), server `cargo fmt --check && cargo clippy --all-targets -- -D warnings && cargo test` (from `server/`). Both are green on `main` as far as reported.
|
||||
- Worktrees in flight under `.claude/worktrees/`: `agent-m7a` to `agent-m7f` (M7a to M7f, started 2026-10-18, in parallel, disjoint paths `android/feature/<x>/**` and `android/core/fakes/**/fakes/<x>/`), `agent-spec10` (this docs change: SPEC v0.10).
|
||||
- Worktrees in flight under `.claude/worktrees/`: `agent-m8` (M8 app integration, started 2026-10-18; the phone agent; stops at the pairing HUMAN step), `agent-m7g` (M7g feature cleanups in `android/feature/**`, started 2026-10-18), `agent-spec11` (this docs change: SPEC v0.11).
|
||||
- The UX sprint (owner's session in `~/orca/workspaces/kvitt/UX-sprint`, branch `UX-sprint`) has landed; nothing is in flight there.
|
||||
- Importer: the dry run of 2026-10-18 with M12b's mapping reconciled on both real files (Vardag 1746 rows, 0 unmapped; Hemma 37 rows, 0 unmapped). The CSV files stay in `export/` (git-ignored).
|
||||
- Development stack (M2c-dev): running on the Mac, reachable at `http://192.168.1.210:8080`; its database was migrated to schema 2 on 2026-10-18 after a backup. Firebase project `kvitt-1337` with apps `se.hagstedt.kvitt` and `se.hagstedt.kvitt.debug`; service account `kvitt-fcm`; `infra/secrets/fcm-service-account.json` and `infra/secrets/google-services.json` in the main checkout (git-ignored).
|
||||
- Installed on the owner's phone (SM-S942B): the debug app `se.hagstedt.kvitt.debug` built from `c28c52b` (older than `main`), as of 2026-10-18.
|
||||
- Development stack (M2c-dev): running on the Mac, reachable at `http://192.168.1.210:8080`; database at schema 2 since 2026-10-18 (migrated after a backup). Firebase project `kvitt-1337` with apps `se.hagstedt.kvitt` and `se.hagstedt.kvitt.debug`; service account `kvitt-fcm`; `infra/secrets/fcm-service-account.json` and `infra/secrets/google-services.json` in the main checkout (git-ignored).
|
||||
- Installed on the owner's phone (SM-S942B): the debug app `se.hagstedt.kvitt.debug` built from `c28c52b`, as of the last report; M8 installs its build.
|
||||
|
||||
## 2. Open work (one line each, with who owns it: agent or owner)
|
||||
- Land `agent-spec10` (orchestrator): SPEC v0.10, D-060 to D-068, the "Dining" label and `ledger_settlement_label` in `docs/ux/strings.csv` and `:core:design`, HANDOFF, `prompts/README.md`, `android/README.md`.
|
||||
- M7a to M7f (`agent-m7a` to `agent-m7f`, in flight, parallel). Decision ranges: M7a D-070–D-074, M7b D-075–D-079, M7c D-080–D-084, M7d D-085–D-089, M7e D-090–D-094, M7f D-095–D-099; spec version v0.11 for all; the second and later to land renumber to be contiguous.
|
||||
- M8 App integration after M7 (orchestrator brief), carrying: M5's contract requests (§11.3); M6's (`LocalAvatarPictures`/`AvatarPictures` with the authenticated E-11 Coil request from user id and `pictureVersion`, `ProvideHousehold(me, partner)` around screens, `LocalKvittClock`); the `SyncSummary` "last attempt failed" field so `SyncStatusPill` drops its `failed` flag; the D-027 re-stamp (on the first sync attempt after a `clock_skew` rejection the phone re-stamps `updated_at` of each such pending row before pushing; not in `:data` yet); the picture size question (`:data` always fetches E-11 at 512; a 128 variant needs a size parameter on `:core:model` and `:data`); the design-spec §2.7 check on the S26 that `FontFamily.Default` keeps tabular figures and distinct weights 500/600/700 under One UI fonts.
|
||||
- Land `agent-spec11` (orchestrator): SPEC v0.11, D-069 to D-080, HANDOFF, `prompts/README.md`, `android/README.md`, PLAN-M8 §3 facts.
|
||||
- M8 App integration (`agent-m8`, in flight, phone agent). Decision range D-085 to D-089 reserved; renumbered to D-081 onwards on landing (after `agent-spec11`). Spec version v0.12. It wires the §13.2 navigation (D-071), deletes `android/app/src/debug/.../DebugFakesModule.kt` (`72f21b2`), keeps the `:app` requests of M6 (`LocalAvatarPictures`, `ProvideHousehold`, `LocalKvittClock`) and the design-spec §2.7 One UI font check on the S26.
|
||||
- M7g Feature cleanups (`agent-m7g`, in flight): feature modules after M6b; no phone.
|
||||
- Later contract pass M12e (not started; SPEC §11.3 list): invite kind in the `pair()` result, admin name in the invite link, `SyncSummary` "last attempt failed", actor on `Rejection`, version name on `Device`, `RecurringRepository.create` without a caller-made `TemplateId`, a result for `UpdateRepository.check()`, untouched accounts in `SettleState`, the D-027 re-stamp in `:data`, the 128 px picture size (owner question).
|
||||
- Image build for the Pi (M2c-pi or M10): since M4 the arm64 server image needs a C toolchain in the build stage (aws-lc-rs) and CA roots in the distroless image (§10.3); confirm both and one FCM send from the shipped image.
|
||||
- Later cleanup (any Android plan that owns `android/gradle/**`): remove the unused Vico entries from `libs.versions.toml` (D-063).
|
||||
- Plans (SPEC §11.2 v0.10), in dependency order; prompt `prompts/<id>.md`:
|
||||
- M1, M2a, M2b, M2c-dev, M3, M4, M5, M6, M9, M12a, M12b, M12c, M12d, U1, U2: landed.
|
||||
- Now: M7a to M7f in parallel.
|
||||
- Next: M8 App integration after M7; M2c-pi Infra on the Pi after M8 (owner: answer OQ-3, grant the Pi, Home Assistant Pi, Gitea and Drive allowances at the start, D-023); M10 First release after M2c-pi (owner: keystore per §10.6, D-024); M11 Import history after M9 and M10 (procedure §10.8 "Production run", D-025; each run must reconcile, D-045).
|
||||
- Plans (SPEC §11.2 v0.11), in dependency order; prompt `prompts/<id>.md`:
|
||||
- M1, M2a, M2b, M2c-dev, M3, M4, M5, M6, M6b, M7a to M7f, M9, M12a, M12b, M12c, M12d, U1, U2: landed.
|
||||
- Now: M8 and M7g in parallel.
|
||||
- Next: M2c-pi Infra on the Pi after M8 (owner: answer OQ-3, grant the Pi, Home Assistant Pi, Gitea and Drive allowances at the start, D-023); M10 First release after M2c-pi (owner: keystore per §10.6, D-024); M11 Import history after M9 and M10 (procedure §10.8 "Production run", D-025; each run must reconcile, D-045); M12e contract pass when scheduled.
|
||||
|
||||
## 3. HUMAN steps pending (relay in chat)
|
||||
- Later, at the owner's convenience: look through M6's component screenshots (`android/core/design/src/test/screenshots/`); approved in advance ("go with your recommendations"), so nothing blocks on it.
|
||||
## 3. HUMAN steps pending (relay in chat; the owner does them tonight, 2026-10-18)
|
||||
1. M8 pairing and offline test on the phone; relay wording comes from the M8 report.
|
||||
2. Look through the M6 component screenshots (`android/core/design/src/test/screenshots/`); approved in advance, nothing blocks on it.
|
||||
3. Answer OQ-3 for M2c-pi (§4).
|
||||
4. Release keystore per SPEC §10.6 for M10, or allow an agent to generate one.
|
||||
5. Yes/no: the keyword "boende" maps to travel. Yes/no: is the 128 px picture size needed?
|
||||
|
||||
## 4. Owner questions (asked, unanswered)
|
||||
- OQ-3 LAN addresses and SSH users of the Kvitt Pi and the Home Assistant Pi; SSH port of the HA Pi; certificate directory there; which SSH add-on (SPEC §12). Needed by M2c-pi only. The only open question (OQ-1, OQ-2, OQ-4 answered: D-001, D-003, §10.9).
|
||||
- OQ-3 LAN addresses and SSH users of the Kvitt Pi and the Home Assistant Pi; SSH port of the HA Pi; certificate directory there; which SSH add-on (SPEC §12). Needed by M2c-pi only.
|
||||
- "boende" keyword → travel (yes/no); 128 px picture size needed (yes/no) (§3 item 5).
|
||||
|
||||
## 5. Paused (waiting on something outside the repo)
|
||||
- Nothing.
|
||||
|
||||
## 6. Numbering
|
||||
- Decisions: D-001 to D-068 used (D-008 and D-009 unused). Next free: **D-069**; D-070 to D-099 are handed to M7a to M7f (§2).
|
||||
- Spec version: v0.10 written; next **v0.11** (shared by the M7 landings).
|
||||
- Server schema version **2** (migration 0002, landed with M12b); next **3**. Room schema version **1** (`android/data/schemas/se.hagstedt.kvitt.data.db.KvittDatabase/1.json`, unchanged by M12, M12d and M6); next **2**.
|
||||
- Decisions: D-001 to D-080 used (D-008 and D-009 unused). D-085 to D-089 reserved by M8 (renumbered to D-081 onwards on landing). Next free: **D-081**.
|
||||
- Spec version: v0.11 written; next **v0.12**.
|
||||
- Server schema version **2** (migration 0002, landed with M12b); next **3**. Room schema version **1** (`android/data/schemas/se.hagstedt.kvitt.data.db.KvittDatabase/1.json`); next **2**.
|
||||
- Sync protocol **1**, push payload **1**.
|
||||
|
||||
## 7. How the work is run
|
||||
|
||||
@@ -73,3 +73,15 @@ entry and the old one a strike-through plus a pointer. The spec is updated in th
|
||||
| D-066 | 2026-10-18 | Golden layout: one Roborazzi golden per component sheet × light/dark × sv/en (`<sheet>_<lang>_<theme>.png`), plus a 200 % font-scale variant for long states; the content is composed once and language, theme and font scale are switched through a configuration context, so Compose's non-linear font scaling still applies. Feature modules (M7a to M7f) follow the same layout. | M6 report: one layout keeps the goldens reviewable and the feature agents' screenshot tests consistent. | SPEC §6.2 (Screenshot tests) |
|
||||
| D-067 | 2026-10-18 | The English default name of the category `restaurants` is "Dining" (was "Restaurants"); Swedish "Restaurang & café" stays. Changed in AC-7.2, `docs/ux/strings.csv` and `android/core/design/src/main/res/values/strings.xml` (`category_default_restaurants`) together. | Owner approved: "Restaurants" clips at 11 sp in the six-column `CategoryQuickRow`, and design-spec §3.7 allows no ellipsis there. | SPEC AC-7.2, §13.4; `docs/ux/strings.csv` |
|
||||
| D-068 | 2026-10-18 | New shared string `ledger_settlement_label` ("Payment" / "Betalning", `module=core:design`) as the type label on the second line of a settlement row (design-spec §3.5), added to `docs/ux/strings.csv` beside the other `ledger_settlement_*` rows and to `:core:design`'s `values/strings.xml` and `values-sv/strings.xml`. Also: `SettlementRow` titles may wrap to 2 lines (3 at 200 % font scale), and a chart whose range has no expenses shows only the 0 baseline with no gridline values (design-spec §3.10). | M6 report: `settle_detail_title` belongs to `:feature:settle` and `:feature:account` cannot use it (D-017); the wrap and the empty-chart rendering were not stated in the design spec. | SPEC §13.3 (S-5, S-11), §13.4; `docs/ux/strings.csv` |
|
||||
| D-069 | 2026-10-18 | S-11 readings. Total-card caption "<range> · Hushållet" for the household measure and "<range> · N veckor" in week granularity; for my share the label is "Totalt · Min del", so the caption does not repeat it. Month presets show whole-month ranges ("maj–okt 2026"), custom ranges and week granularity show days. Legend and stacking order: categories by `sortOrder`, accounts in `AccountRepository.all()` order; the order of `AnalyticsState.groups` is unspecified and the UI sorts. "Loading" means `SyncSummary.lastSuccessAt == null` and shows skeleton cards; the design spec has no offline or loading frame for S-11/S-12, so offline looks like loaded. | M7e report (`6ac711d`): the design spec left caption wording, order and the loading condition open. | SPEC §13.3 (S-11), §14.2.4 ("Readings fixed in v0.11") |
|
||||
| D-070 | 2026-10-18 | S-12 readings. A week title follows `docs/ux/strings.csv` ("Vardag, vecka 41"), not "v. 41"; a category or account over the whole range is titled "<name>, <range caption>". No error state on S-11 or S-12 (analytics are local, AC-14.1); S-12 has no loading state. | M7e report (`6ac711d`): design spec and strings disagreed on the week title; the error and loading states of §13.3 do not apply to local analytics. | SPEC §13.3 (S-11, S-12) |
|
||||
| D-071 | 2026-10-18 | Navigation wiring. The top-level screens S-3, S-4, S-11 and S-13 render their own `KvittNavigationBar` and take `onNavigate: (KvittDestination) -> Unit`; the `:app` scaffold draws no second bar; the `NavHost` switches top-level destinations from those lambdas. Navigation-argument keys are constants in each feature (`ARG_EXPENSE_ID`/`ARG_ACCOUNT_ID`, `SettleArgs.SETTLEMENT_ID`/`ACCOUNT_ID`, `DrillDownArgs.KEYS`, settings `"categoryId"`/`"templateId"`), read through `SavedStateHandle`. Result snackbars of S-7, S-9 and account archiving are shown by the screen returned to (Home through its `snackbarHostState`); the account-archived snackbar has an undo action (`common_undo`). | M7a, M7b, M7e, M7f reports and M8's brief: the features built the bar and the argument keys themselves; M8 needs one rule to wire them. | SPEC §13.2, §11.2 (M8), §11.3 (M8) |
|
||||
| D-072 | 2026-10-18 | A new recurring template's "Dag i månaden" defaults to today's day of the month; the start month is the current month if that day is today or later, else the next month (so by default the current month). | M7f report (`a54eb7c`): AC-9.8 gave the start-month rule but no default day. | SPEC AC-9.8, §13.3 (S-19) |
|
||||
| D-073 | 2026-10-18 | "Sök efter uppdatering" (S-22) reports "Du har den senaste versionen" when `UpdateState` is still `None` after `check()`; a network failure cannot be told apart because `check()` returns nothing. Accepted for v1; "give `UpdateRepository.check()` a result" is a contract request for a later contract pass. | M7f report (`a54eb7c`): the UI contract has no result for a manual check. | SPEC AC-16.6 (new), §13.3 (S-22), §14.2.4, §11.3 |
|
||||
| D-074 | 2026-10-18 | `FieldError.field` values are the model property names `amountOre`, `description`, `notes`, `date`, `split`, `accountId`, `categoryId`, `allocations`, as `:core:fakes` and `:data` emit them. Editing a settlement opens with its saved rows counted as user-edited, so changing the amount keeps them; "Föreslå igen" re-proposes. The S-9 info line on untouched accounts derives them from Home balances and may be slightly off while editing (balances include the settlement being edited). | M7c (`1e42f76`) and M7d (`082b8dc`) reports: field names were not fixed; AC-11.6 did not say whether an edit re-proposes; `SettleState` has no untouched-accounts list. | SPEC §14.2.4, AC-11.6, §13.3 (S-9), §11.3 |
|
||||
| D-075 | 2026-10-18 | The quick-row fill of D-060 lives in `:core:design`'s `quickRowCategories(categories, frequent, selected)`; editors pass the raw `frequentCategoryIds[accountId]`; an empty or short list is filled from `sort_order`, and the selected category takes fifth place when absent. Replaces `docs/ux/design-spec.md` §3.7's interim "selected first, then sort_order". | M6b (`3a1bd14`): S-7 and S-19 both need the fill; one helper keeps them identical. | SPEC §14.2.4, §13.3 (S-7), §11.2 (M6b) |
|
||||
| D-076 | 2026-10-18 | Category item labels (quick row and grid) take up to two centred lines; longer custom names end the second line in "…"; single long words still hyphenate ("Entertain-ment"); TalkBack reads the full name. "No ellipsis" (design-spec §3.7) still holds for the default names. | M6b (`3a1bd14`): custom category names (up to 40 code points, §9.6) can be longer than two lines; the default names still fit without an ellipsis. | SPEC §13.3 (S-7); `docs/ux/design-spec.md` §3.7 |
|
||||
| D-077 | 2026-10-18 | Day ranges in captions and summaries are written out with the year ("24 augusti–17 oktober 2026", "1–30 november 2026", "28 december 2025–3 januari 2026"); the period chip and the S-12 title keep the short form "24 aug.–17 okt.". Extends D-065. | M6b (`3a1bd14`, `DateFormatter.dayRangeLong`): M7e needed a long form for the total caption. | SPEC §9.8, §13.3 (S-11) |
|
||||
| D-078 | 2026-10-18 | A stored amount opens for editing with both decimals ("1 247,60", "12 400,00"); ratio percent fields keep the trimmed form ("60", "60,5"). Note: `viewerPercentOf` now reads basis points (bug fix, no rule change). | M6b (`3a1bd14`, `AmountInput.of` and `AmountInput.percent`, replacing M7c's own `moneyInput`): money is always shown with two decimals (§9.8), percents are not money. | SPEC §9.6 |
|
||||
| D-079 | 2026-10-18 | New shared keys `common_ok`, `common_undo`, `editor_split_full_on_you` ("All on you" / "Allt på dig"; `ledger_settlement_label` was D-068). The module keys proposed by M7b to M7f are recorded in `docs/ux/strings.csv` as built: `analytics_granularity`, `analytics_measure`, `analytics_group_by`, `analytics_range_apply`; `settle_row_amount`, `settle_detail_delete`, `settle_detail_sync_now`; `expense_detail_sync_now`; `home_archived_expanded`, `home_archived_collapsed`; `settings_category_archived_snackbar`, `settings_category_unarchived_snackbar`, `settings_recurring_summary_none`, `settings_expanded`, `settings_collapsed`, `settings_partner_missing`. `strings.csv` has 578 rows, header included. | M7b to M7f reports and M6b (`3a1bd14`): §13.4 requires a decisions entry for strings not in the file. | SPEC §13.4; `docs/ux/strings.csv` |
|
||||
| D-080 | 2026-10-18 | "Synka nu" (the missing states of S-8 and S-10, and S-16) is an online-only action, disabled with "Kräver anslutning" offline. Discard dialogs (S-6, S-7, S-9, S-19) have a title and no body text. | M7c report (`1e42f76`): §9.9 did not list "Sync now", which needs the server; the discard dialogs' body text was not fixed. | SPEC §9.9, §13.3 (S-6, S-7, S-8, S-9, S-10, S-16, S-19) |
|
||||
|
||||
Reference in New Issue
Block a user