feat(ui): dispatch ticker, persona type split & theme preset regroup (#607) - #652
Draft
IBondarenko-iwg wants to merge 16 commits into
Draft
feat(ui): dispatch ticker, persona type split & theme preset regroup (#607)#652IBondarenko-iwg wants to merge 16 commits into
IBondarenko-iwg wants to merge 16 commits into
Conversation
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.
Warning
Stacked on #640 — this diff includes the #606 commits until #640 merges.
Review only the last 6 commits (
feat(shell): dispatch ticker…onward).After #640 merges this branch will be rebased onto
releases/4.1.0and the diff will collapse to #607 changes only.Linked issue
Closes #607
Part 4 of 4 for #551 (R1). #551 itself stays open — R2 scope (Studio merge) continues under the v4.2.0 milestone.
Summary of changes
Four features, one commit each (plus Mothership + e2e commits):
feat(shell)) — the Navigation shell: top bar + icon rail rendered in both Studio and Mothership #605 static footer line becomes a two-mode control: click toggles between the summary line (default) and a scrolling dispatch feed fed from/api/activity/tail. Wire-report voice per the design doc ("task 9f8e7d6c moved to analysed · stop", "run a1b2c3d4 completed — M"). Cycle ≥ 20s, pause on hover/focus (position retained), choice persisted. Reduced motion (OS flag or toggle) renders the latest item static instead of scrolling.feat(server)) — same footer behaviour on the dashboard, feed-expanded by default (PRD decision 3). Interim implementation derives lines from polled instance data; replaced by the Event forwarding — outpost-to-Mothership event sink #599 event feed later. Rebuilds are deferred to the animation loop boundary so the 30s fetch never snaps the scroll.feat(outpost), PRD 5.7) — Tasks, Product and Decisions panes getdata-persona="stakeholder": prose reads in Inter 14px, data values (ids, dates, counts, statuses) stay mono 12px via a curated re-mono list. Operator surfaces (Overview, Workflows, Settings, Mothership dashboard) keep the 13px mono base — zero new rules needed.feat(outpost), PRD 5.8) — Default (Amber) and Calm (Cyan) featured; Matrix Green / Deep Blue / Violet Haze / Clean White move behind a collapsed Classics toggle (auto-expands when a classic is active). Labels are display-only; preset keys andtheme-config.jsonunchanged.feat(settings)) — explicit override in Settings → Theme (PRD decision 7). Setsbody[data-motion="reduced"], killing all shell animation (ticker, LED pulse, CRT flicker) with the same scope as the OS flag. Outpost-only; Mothership honours the OS flag.Documented deviations
<main>— Outpost is a SPA with one<main>for six panes; same intent, better granularity.reduceMotion— Get-Settings re-defaults on read.Screenshots / recordings
Feed mode:
· closeup: 
· closeup: 
· single static entry 
Mothership:
Reduce motion: toggle row
Recording: scrolling feed with hover-pause after-ticker-feed-scroll.webm
Testing notes
pwsh -File tests/Test-UI-E2E.ps1— 26/27 passing incl. 4 new specs (ticker.spec.ts× 3, reduce-motion persistence insettings.spec.ts); the 1 failure is the known pre-existing stop-button flake.Test-Structure.ps1361/361,Test-Aether.ps112/12.task.status_changedline to.bot/.control/activity.jsonl→ dispatch line appears within ~2s; Settings → Theme → Reduce Motion → ticker/LED/CRT animation stops, survives reload (ui-settings.jsongainsreduceMotion); DevTools reduced-motion emulation → single static entry.textContent(no innerHTML with event/instance data);/api/settingsPOST covered by the global CSRF header check.Checklist