Skip to content

fix: polish round 3 — tasks empty group, browser security badge, contacts glyph, flaky test#67

Merged
th3-br41n merged 1 commit into
mainfrom
fix/polish-r3
Jul 2, 2026
Merged

fix: polish round 3 — tasks empty group, browser security badge, contacts glyph, flaky test#67
th3-br41n merged 1 commit into
mainfrom
fix/polish-r3

Conversation

@th3-br41n

Copy link
Copy Markdown
Contributor

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

  • Tasks — suppress the empty "TODAY" group header. Overdue had a length > 0 guard; 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).
  • Browser — the stray dark dot in the toolbar 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 a blank tab. (The two "New tab" tabs are persisted Northbound-vault session state, not a bug — left unchanged, regression-guarded.)
  • Contacts — the "No contact selected" empty state used the generic cube fallback icon (the SDK had no person glyph). Added a real AddressBook people glyph to the shared SDK icon set (enum + ICON_ASSET + ICON_REGISTRY + regenerated DOM glyph pack) and use it.
  • Database (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 ReferenceError: window is not defined unhandled 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). Extracted readEntityIcon to a renderer-free logic/entity-icon.ts; the test no longer boots the app (ran ×3 clean).

Verification

bun run verify + bun run lint green. 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

…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 th3-br41n merged commit ae84f54 into main Jul 2, 2026
3 checks passed
@th3-br41n th3-br41n deleted the fix/polish-r3 branch July 2, 2026 13:39
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant