fix: polish round 3 — tasks empty group, browser security badge, contacts glyph, flaky test#67
Merged
Merged
Conversation
…acts glyph, flaky test From a fresh all-apps visual triage: - tasks: suppress the empty 'TODAY' group header (Overdue had a guard, Today didn't) — a bare header with no rows read as broken; the genuinely-empty view still shows its 'all caught up' state. - browser: the stray dark dot was the connection-security badge rendering as a bare 10px dot for the 'Local' state (blank new tab). Now it renders a real lock/warning Icon on secure/insecure pages and nothing on blank tabs. (The two 'New tab' tabs are persisted Northbound-vault session state, not a bug — left unchanged, regression-guarded by a test.) - contacts: the 'No contact selected' empty state used the generic cube fallback icon. Added a real AddressBook people glyph to the shared SDK icon set (enum + ICON_ASSET + ICON_REGISTRY + regenerated glyph pack) and use it. - database: fix the recurring CI flake — entity-icon-read.test.ts booted the whole app (import '../src/app') just to reach readEntityIcon, leaking window-referencing async work (menu host, perf sub, resize listeners, MutationObserver) past jsdom teardown → intermittent 'window is not defined' unhandled error failing green runs (3×). Extracted readEntityIcon to a renderer-free logic/entity-icon.ts; the test no longer boots the app. verify + lint green; per-app suites: tasks 449, browser 110, contacts+sdk-icon 171, database 836 (×3 clean, no unhandled errors). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
th3-br41n
added a commit
that referenced
this pull request
Jul 3, 2026
…aked servers (#72) The recurring CI flake — 'Vitest caught N unhandled errors' failing otherwise-green runs — had two roots this session. entity-icon-read (booting the whole app past teardown) was fixed in #67; this fixes the other: - oauth-redirect.test.ts 'state mismatch': codePromise rejected DURING the await hit() that triggers it, but the .rejects assertion was attached on the NEXT line — leaving a microtask window where the rejection was unhandled, which vitest catches and fails the run. Attach the assertion before the trigger. - Also track every loopback capture and close() it in afterEach so a server from a non-terminal path (mismatch / early redirect) can't outlive its test and emit a late error event. Verified: oauth suite 3× clean (no Errors); full suite 2× clean of unhandled errors (14084 passed). A grep for the reject-var-then-.rejects race pattern across all test files finds only this file — no other test carries it. Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
th3-br41n
added a commit
that referenced
this pull request
Jul 3, 2026
…aked servers (#77) The recurring CI flake — 'Vitest caught N unhandled errors' failing otherwise-green runs — had two roots this session. entity-icon-read (booting the whole app past teardown) was fixed in #67; this fixes the other: - oauth-redirect.test.ts 'state mismatch': codePromise rejected DURING the await hit() that triggers it, but the .rejects assertion was attached on the NEXT line — leaving a microtask window where the rejection was unhandled, which vitest catches and fails the run. Attach the assertion before the trigger. - Also track every loopback capture and close() it in afterEach so a server from a non-terminal path (mismatch / early redirect) can't outlive its test and emit a late error event. Verified: oauth suite 3× clean (no Errors); full suite 2× clean of unhandled errors (14084 passed). A grep for the reject-var-then-.rejects race pattern across all test files finds only this file — no other test carries it. Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
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.
From a fresh all-apps visual triage. (Several other triage findings were confirmed to be accumulated vault data — clipped calendar/graph/files titles — not code defects, and were left.)
Fixes
length > 0guard; Today was pushed unconditionally, so a view with overdue-but-nothing-today drew a bare "TODAY" header with no rows. The genuinely-empty view still shows its "all caught up" empty state (separate path).Localstate (blank new tab). Now it renders a real lock / warning<Icon>on secure/insecure pages and nothing on a blank tab. (The two "New tab" tabs are persisted Northbound-vault session state, not a bug — left unchanged, regression-guarded.)AddressBookpeople glyph to the shared SDK icon set (enum +ICON_ASSET+ICON_REGISTRY+ regenerated DOM glyph pack) and use it.entity-icon-read.test.tsbooted the whole app (import '../src/app') just to reachreadEntityIcon, leakingwindow-referencing async work (menu host, perf sub, resize listeners, MutationObserver) past jsdom teardown → intermittentReferenceError: window is not definedunhandled error that failed 3 otherwise-green CI runs (PR release: v0.1.7 — dogfood visual-audit fixes (F-316..F-321 + review findings) #62/fix(release): auto-publish + generate notes in CI, refresh in-app changelog #64/fix(focus): stop the focus ring from framing whole list/grid/tab containers (F-374) #66). ExtractedreadEntityIconto a renderer-freelogic/entity-icon.ts; the test no longer boots the app (ran ×3 clean).Verification
bun run verify+bun run lintgreen. Per-app suites: tasks 449, browser 110, contacts + sdk-icon 171, database 836 (×3, zero unhandled errors). Visual re-verify of Contacts/Tasks/Browser in the shell to follow.🤖 Generated with Claude Code