Repository navigation
feat(s100): the desktop shell, proven on Linux - #118
Merged
Merged
Conversation
Slice 100, everything that can be built and proven on Linux. macOS and Windows, and a real tray panel and notification daemon, are in the slice's manual queue. - Trinity.Desktop is a behaviour with Tauri and Noop implementations. Noop is selected with no shell or when headless. - Trinity.Desktop.Shell keeps the tray current and notifies on approvals, finished tasks and gateway messages when the window is not focused. Notifications carry names only, never arguments. Only a hello carrying the launch token is trusted. - Secrets come from the OS keychain first and the environment second, through the shell binary run as a helper. Values travel hex-encoded on stdin and stdout, never on a command line. With no keychain, storing is an error, never a file. - The receipt signing key moves into the keychain by rotation when one answers. The old key is retired with valid_until, and a move interrupted by a crash resumes. Headless and regulated builds stay file-backed. - Quitting during a turn keeps what arrived: prep_stop interrupts every session before the Repo stops, and Session.terminate/3 is the backstop. - Settings and a first-run setup flow. Folders the owner chooses there extend the file tool's roots; only those two screens write them. - The Tauri shell gains single instance, a global shortcut, autostart, a native dialog, clickable notifications, and a SIGTERM to the sidecar's BEAM. The sidecar is started with --no-halt. The red evidence is in the slice NOTES: 57 of 74 tests failing at their own assertions, and the packaged sidecar halting a second after boot. Signed-off-by: Ayla Croft <aylacroft@proton.me>
…n is SQLite only Run 37743757349 failed on all three OSes because a fresh bundle answers `/` with 302 to `/setup` (AC11), which is intended. The step now follows the redirect and fails unless it lands on `/` or `/setup` with a 200. Run 37743785739 (postgres) failed AC5's `assert files != []`: that job has no database file to read. The `strings trinity.db` scan is now its own test tagged :sqlite, and the keychain, render and log assertions still run on both adapters. Signed-off-by: Ayla Croft <aylacroft@proton.me>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Slice 100, the desktop shell: everything that can be built and proven on Linux. The slice stays
in_progress. macOS and Windows, and a real tray panel and notification daemon, are in its manual queue.What lands
Trinity.Desktop: a behaviour withTauriandNoopimplementations.Noopis selected with no shell or when headless.Trinity.Desktop.Shellkeeps the tray current and notifies on approvals, finished tasks and gateway messages while the window is not focused. Notifications carry names only, never arguments.Trinity.Secrets). The shell binary runs as a helper; values travel hex-encoded over stdin and stdout, never on a command line. With no keychain, storing is an error, never a file.valid_until, and a move interrupted by a crash resumes. Headless and regulated builds are unchanged and stay file-backed.prep_stopinterrupts every session before the Repo stops./setupand the Settings page. Folders chosen there extend the file tool's roots, and only those two screens write them.--no-halt, which was the packaged-app red. 54 crates are added and none changed; tauri stays at 2.11.5.package.yml: checks three new smoke lines (FTS5,WATCHER,MODEL_CACHE) on all three OSes.Criteria
/setup. A first turn with a real key is the owner's.Evidence
1033 passed (20 properties, 1013 tests), 18 excluded,prod_check: PASS, coverage 80.37% against 80.31%.mix format --check-formattedOK;mix credo --strict --allfound no issues.Before slice 101
The bundle identifier is still the generator's
you.app.trinity. Single instance, notification identity and autostart all derive from it, so it needs a real value before signing.