fix(bin): calm the phone glance with focused work groups - #91
Merged
Conversation
Show at most five live asks, hide parked duplicate and retire holds from that list, and replace the waiting wall with per-project count chips. Co-authored-by: Cursor <cursoragent@cursor.com>
Amplify-Logic
added a commit
that referenced
this pull request
Aug 23, 2026
) Surface 1 (CONTRIBUTING upstream pointer): fixed. Step 1 of the workflow still told contributors to set origin to the pre-fork git@github.com:kunchenguid/firstmate.git. It now targets git@github.com:Amplify-Logic/firstmate.git and credits kunchenguid/firstmate explicitly as the upstream this fork descends from, matching fork-surface.conf's upstream_remote declaration. Surface 2 (validation-pipeline fork target): already correct, no change. The only tracked no-mistakes configuration is .no-mistakes.yaml, which carries no push or PR target; the pipeline's push target lives in gitignored local state. git grep over tracked files finds no pipeline-target reference to the pre-fork repository. Surface 3 (PR compliance marker): already correct, no change. The marker in .github/workflows/no-mistakes-required.yml references the no-mistakes tool project (kunchenguid/no-mistakes), not the pre-fork firstmate repository, and is byte-identical to the signature the installed pipeline writes into this fork's PR bodies (verified against merged PR #91's body). Changing it would break the compliance check, and tests/no-mistakes-required-workflow.test.sh asserts the marker contract. Remaining tracked kunchenguid/firstmate references are deliberate: the new upstream-credit line in CONTRIBUTING.md, fork-surface.conf's upstream_remote declaration, an upstream-recorded verification transcript in docs/gitlab-merge-watch.md, and synthetic test-fixture URLs.
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.
Intent
Calm the captain's phone glance page (bin/fm-bridge-view.py, shipped in PR #90) after voice feedback that the page lists too many items and feels overwhelming. The default view must fit one iPhone screen and show only what genuinely needs the captain now.
Needs you: cap at the 5 most relevant items. Exclude anything whose underlying backlog hold is parked, a recorded duplicate, or a retire candidate, filtering on backlog hold kinds and parked reasons rather than guessing from titles. Below the five, one quiet line "N more waiting on you - show all" that expands on tap. Stuck live work (blocked, failed, or parked at a gate) leads that list because it needs the captain now; deferred holds are moved into Waiting so they stay reachable instead of disappearing.
Under way stays as is.
Waiting: replace the long item list with per-project count chips (Artevo, Journey, Finances, Fleet, Glasses), each expanding to that project's complete items on tap. No global wall of items by default. The full list remains reachable once expanded (the no-arbitrary-truncation rule from #90 still holds). Chips are visible under a Waiting heading, not hidden behind a collapsed fold, so one tap reaches a project's items.
Tone: quiet and plain. No jargon in the default view.
Constraints: do not change Talk, photo upload, or answer-polling from #90; this is layout and selection only. Keep it dependency-free and tailnet-only; no external CDNs. iPhone Safari is the only client that matters; keep the #86/#87 Origin handling untouched. Do not restart or repoint any launchd service from the worktree.
The glance filters and groups from structured snapshot fields (hold_kind, hold_reason, repo) passed through fm-bearings-snapshot.sh, not from titles. Tests cover parked/duplicate/retire exclusion, the cap of 5, waiting counts, chip rendering, and live observation through the existing tests/fm-bridge-view.test.sh suite. #90 features (multi-photo, hold-to-speak, answer display) must stay unchanged and passing.
What Changed
Risk Assessment
✅ Low: Captain, the follow-up correctly passes structured repository data through the snapshot and covers paused live work in the end-to-end observation path; the overall change is bounded and matches the stated intent.
Testing
The full bridge suite passed, including structured filtering/grouping and unchanged photo, speech, answer, and Origin behavior; an authenticated 390×844 phone rendering showed the calm capped glance view, and expanded visual evidence confirmed hidden Needs You and complete project Waiting items remain reachable.
/var/folders/1g/hctp3vpn27b1zrlsn4nsfg680000gn/T/no-mistakes-evidence/01M0FVNJWPPQ0Z4T5ZG5QGEV4N/bridge-glance-default-iphone.png)/var/folders/1g/hctp3vpn27b1zrlsn4nsfg680000gn/T/no-mistakes-evidence/01M0FVNJWPPQ0Z4T5ZG5QGEV4N/bridge-glance-expanded.png)Evidence: Interactive default glance evidence
Evidence: Expanded glance evidence
Pipeline
Updates from git push no-mistakes
✅ **intent** - passed
✅ No issues found.
✅ **Rebase** - passed
✅ No issues found.
🔧 **Review** - 1 issue found → auto-fixed ✅
bin/fm-bridge-view.py:974- Required intent says Waiting must use per-project chips and that grouping must come from structuredrepofields. This new branch readsrow.get("repo")for paused live work, butfm-bearings-snapshot.shstill omitsrepoandownerfrom everyin_flightrow. Consequently, paused work is grouped under “Other” instead of Artevo/Journey/Finances/Fleet/Glasses. Include the structured repository fields in the in-flight projection and cover the live snapshot path with a paused task.🔧 Fix: Preserve paused-work repository grouping
✅ Re-checked - no issues remain.
✅ **Test** - passed
✅ No issues found.
Inspectedgit diff e66a149f5847016e11c5b638a62b5029e858ef48..43aed0ee20f87c2d83604f754cea0d9ed6b92faebash tests/fm-bridge-view.test.shStarted an isolated structured-snapshot fixture withbin/fm-bridge-view.sh serve --host localhost --port 18766Authenticated in Chrome at a 390×844 iPhone viewport and verified the default five-item Needs You list, stuck-work priority, remainder disclosure, unchanged Under Way section, and visible Waiting count chipsExpanded2 more waiting on you - show alland theArtevo 2chip, verifying all hidden items remained reachableCaptured production-rendered HTML and screenshots using the authenticated page DOM and headless ChromeConfirmedgit status --shortremained empty after testing✅ **Document** - passed
✅ No issues found.
✅ **Lint** - passed
✅ No issues found.
✅ **Push** - passed
✅ No issues found.