You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Ships the thin alpha surface (requirement 6b), the last build milestone: users can now see their file-operation history and roll operations back, from a menu item and a keyboard shortcut. Debugging/demo quality by design (it may become a sidebar once the agent's decision log converges onto the same timeline), but fully i18n'd, style-guide compliant, and a11y-basic.
Frontend (`src/lib/operation-log/`), modeled on the What's-new dialog:
- `operation-log-trigger.svelte.ts`: reactive `$state` + `openOperationLog()`/`loadMoreOperations()` over the M4 read API (newest 50, then 50 more; offset is `entries.length` so appends can't dup or desync). Opens even on a read failure so the menu item never feels dead.
- `OperationLogDialog.svelte`: soft `ModalDialog` (`dialogId="operation-log"`), one collapsible row per operation, expandable to its per-item rows (lazy-fetched, cached). ALPHA badge via `StatusBadge` + a new `operation-log` entry in `feature-status.json`.
- `operation-log-labels.ts`: PURE typed-enum→i18n mapping. The per-op summary ("Moved 214 items") is formatted client-side from `kind` + `itemCount` via an ICU plural key, so it localizes per viewer with a thousands separator — the backend ships no rendered English string. `failed` statuses read "Didn't finish", never "failed".
- `$lib/tauri-commands/operation-log.ts`: wrappers unwrapping the two `Result` read commands.
Menu + command (`log.operationLog`, App scope): the four places (registry entry, `app-dialog-handlers.ts` handler, `mod.rs` mappings + `MenuItem::with_id` in BOTH `macos.rs` and `linux.rs` under the **View** menu, `menuCommands`) plus the `COMMAND_IDS` id.
Shortcut: configurable default **⌘⌥L**. The plan's first pick ⌥⌘O is already bound to `file.showInFinder`, so `L` (for "log") is the mnemonic; Command-then-Option order matches what `formatKeyCombo` emits, so it fires via the in-app JS dispatch (not native-menu-only). Guarded by a collision test and a full-chain dispatch test.
i18n: new `operationLog.json` area + the `commands.logOperationLog.*` keys, propagated and translated to all 10 locales (each reusing the term already settled for "operation log" / "roll back" in that language from earlier milestones). `operationLog` added to the message-key-naming allowlist.
Tests: trigger paging (append-without-dupes), the dialog component (grouped rows, ALPHA badge, lazy expand), the pure labels (every enum branch), the wrapper unwrap, and an E2E opening the dialog BOTH from the View menu and the ⌘⌥L shortcut with the ALPHA badge asserted.
Docs: `operation_log/DETAILS.md` § Alpha UI (scope, client-side summary, shortcut-order rationale, agent-log convergence per D7/naming), the `CLAUDE.md` shipped-line, and a frontend row in `docs/architecture.md`.
0 commit comments