Skip to content

browser: streamline Memory Hub navigation and harden CI tests - #3275

Merged
Hillary Mutisya (hillary-mutisya) merged 2 commits into
mainfrom
dev/hillarym/memory-hub-navigation-20261109
Nov 10, 2026
Merged

Hillary Mutisya (hillary-mutisya) merged 2 commits into
mainfrom
dev/hillarym/memory-hub-navigation-20261109

Conversation

@hillary-mutisya

@hillary-mutisya Hillary Mutisya (hillary-mutisya) commented Nov 9, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

  • Replace the Memory Hub Views horizontal-scrolling type bar with a vertical-ellipsis overflow menu: empty types stay in overflow, and populated types move there when space is limited.
  • Preserve type selection, collection scope, search, pagination and keyboard focus, including when a selected type cannot fit on the bar.
  • Hide inventory pagination when neither forward nor backward navigation is possible. Label the Inbox's independent View issues and Build issues pagers when navigation is needed.
  • Add regression coverage for scoped/later-page presence, responsive layouts, menu accessibility, independent pagination and empty attention states.

Motivation

The gallery previously showed tabs for types with no saved instances and needed horizontal scrolling on narrow screens. Inbox Views also showed two indistinguishable, disabled page-one controls. Both controls belonged to that panel's real saved-view and build-receipt feeds; neither was a hidden-module leak.

Behavior and configuration

  • Enabled by default; no configuration, storage migration or API changes.
  • View-type availability covers the selected collection scope, including saved drafts, rather than only the current search/filter/page. One-item existence probes are cached across ordinary filtering and invalidated by explicit refresh, scope and collection-head changes.
  • Populated selected types are prioritized on the bar when they fit. Otherwise selection remains visible and accessible in overflow. Arrow keys, Home/End and Escape retain appropriate focus.
  • Shared inventory pagers are hidden on empty/single-page inventories, but remain available on a last page with backward navigation.
  • Inbox feeds retain separate continuation tokens and existing attention counts; they are not merged or dropped.
  • No ingestion, model inference, publication, dataset changes or procedural-view implementation changes are included. The branch starts from current main, after memory: add source-grounded procedural view examples #3273 and ci: upload fork CodeQL results to the verified PR commit #3274.

Reviewer guide

  1. memoryHubViewTypeFilter.ts: bounded presence requests, responsive selection/layout and menu keyboard lifecycle.
  2. memoryHubViews.ts: scoped presence caching, filter integration, refresh/disposal and visible-target focus restoration.
  3. memoryHubUi.ts and memoryHub.css: opt-in radio-menu semantics and scoped styling; other menus retain their existing roles.
  4. memoryHubInventoryPager.ts and memoryHubViewActivity.ts: navigation visibility, visible feed labels and removal of phantom empty headings.

Fixture updates respect requested view kinds and allow the additional asynchronous presence requests to settle; no tests are skipped.

Validation

Windows, Node 26.13.0, standalone pnpm 11.9.0; initial UX commit 16a917a82; final CI-repair qualification is recorded below.

Check Command / evidence Result
Clean build pnpm run clean, then pnpm run build from ts; full build rerun after final focus fix Passed
Browser client regression suite pnpm --filter @typeagent/browser run test:views:client 47 suites, 516 tests passed
Formatting pnpm run prettier:changed:fix; no changes produced Passed
Whitespace git diff --check Passed
Lint ratchet pnpm run code-lint -- --ratchet --base origin/main 0 to 0 violations
Complexity ratchet pnpm run code-complexity -- --ratchet --base origin/main --cyclomatic 25 --cognitive 30 --new-file-cyclomatic 25 --new-file-cognitive 30 No added over-budget functions; new file meets 25/30 caps
Circular ratchet pnpm run code-circular -- --ratchet --base origin/main --exceptions-file tools/scripts/code/circular-baseline-exception.json 210 to 210 cycles; 11 established baseline exceptions unchanged
Test-debt gate pnpm run code-debt -- --gate --base origin/main No focused or newly skipped tests
Actual browser checks Existing saved corpus, desktop and 390px/320px layouts See below

All four PR gates ran against the committed final HEAD, not just uncommitted edits.

UI verification

  1. Open Memory Hub Views with populated and empty view types. Confirm only populated types appear on the bar, with other supported types in the three-dot menu.
  2. Narrow to 320px and select Project Brief from overflow. Confirm its selected state and keyboard focus remain on the replacement overflow trigger when the type cannot fit.
  3. Verify no horizontal filter scrolling: the measured bar client and scroll widths were both 217px at 320px. Desktop/mobile popup widths were both 188px without horizontal overflow.
  4. Open Inbox, then Views. The existing eight attention cards remain, with neither redundant page-one control visible.
  5. Multi-page fixture tests cover either or both feeds needing paging, independent tokens, and last-page backward navigation. Empty fixtures verify no phantom attention heading.

The browser checks used existing saved content; deterministic fixtures are engineering regressions, not live-model quality evidence.

Risks and rollback

The additional scoped existence requests occur on initial load or invalidation, not each ordinary filter/search refresh. Resize/font observers and menus are disposed on rerender, scope changes and teardown. Product changes are client-only; CI follow-up also hardens test/qualification harnesses. No data migration or corpus mutation is required.

Remote CI and human review are separate from the local results above.

CI repair follow-up (9a860cc68)

The original six build_ts failures were aggregate coverage gates. Their underlying failures were incomplete recovery checkpoint JSON on Ubuntu/macOS Node 24, and an Ubuntu Node 24 workflow CLI child timeout reported as exit zero by its test helper. The runner-image migration notices were informational.

  • Publish complete checkpoint JSON through an exclusive hard link from an owned sibling temporary file. Readers never see a partially written final checkpoint; existing checkpoints cannot be overwritten.
  • Add deterministic partial-write visibility and exclusive-publication regressions while retaining all five real SQLite hard-crash scenarios.
  • Run CLI children with the current Node executable, close their non-interactive stdin, and reject killed/signalled/nonnumeric failures with diagnostics. Add a timeout regression. The default 30-second child and 35-second Jest deadlines are unchanged.
  • No assertions, gates, thresholds or test coverage were weakened; no tests were skipped and no dependencies changed.

Reviewer entry points: ts/tools/memory-maintenance-qualification/longmemeval-indexing-storage.mjs, its indexing test, and ts/examples/workflow/cli/test/cli.spec.ts.

Final local validation on 9a860cc68:

  • pnpm run build: passed.
  • pnpm run test:memory-quality: 349 tests passed, zero skipped.
  • pnpm --filter workflow-cli test:local: 12 tests passed, zero skipped.
  • Browser client suite: 47 suites / 516 tests passed.
  • Pinned changed-file formatting, whitespace and all four committed-HEAD PR gates passed against origin/main (lint, complexity, circular dependencies and test debt).

The new-head CI run and human review remain separate from these local results. No merge or automatic merge is requested.

Move empty and non-fitting view types into an accessible overflow menu while preserving scoped inventory, selection and keyboard focus. Hide static pagination and distinguish independent view and build issue feeds in Inbox.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@hillary-mutisya

Copy link
Copy Markdown
Collaborator Author

CI follow-up for 16a917a82:

  • The browser client suite passed in CI: 47 suites / 516 tests, including the new overflow, focus and pagination regressions. Local full build and all four committed-HEAD PR gates also passed.
  • Ubuntu/Node 24 roots failed in the unchanged SQLite crash-recovery qualification: Unexpected end of JSON input while polling checkpoint.json. This is consistent with the checkpoint writer publishing the file before the reader sees its complete JSON. The exact test passed locally; Ubuntu/Node 26 roots also passed.
  • Ubuntu/Node 24 remainder (3) failed in the unchanged workflow CLI D1 dry-run test after its child reached the 30-second timeout. Its helper maps a missing exit code to zero, causing the assertion failure. The exact test passed locally in about two seconds.
  • Neither failing area is modified by this PR. No test skips, threshold changes or unrelated fixes were added.
  • A targeted root-job rerun was not started: GitHub returned HTTP 403 because its containing workflow is still running. Once that workflow finishes, the failed jobs need a bounded rerun and confirmation on this same head.

Other CI is still running and human approval remains required. This is not a green/merge-ready claim; the bounded observation window has ended.

Publish complete checkpoint JSON atomically without overwriting existing checkpoints, and cover partial-write visibility and exclusive publication. Keep workflow CLI tests non-interactive and reject abnormal subprocess termination instead of reporting exit zero, with a timeout regression and unchanged default deadlines.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@hillary-mutisya Hillary Mutisya (hillary-mutisya) changed the title browser: streamline Memory Hub view navigation browser: streamline Memory Hub navigation and harden CI tests Nov 10, 2026
@hillary-mutisya

Copy link
Copy Markdown
Collaborator Author

CI repairs are pushed in 9a860cc68 and verified on that exact head.

Area New-run result
Previously failing Ubuntu/Node 24 recovery roots Passed
Previously failing macOS/Node 24 recovery roots Passed
Previously failing Ubuntu/Node 24 workflow CLI lane Passed
Fan-out qualification Passed
Required smoke tests, repository policy and .NET checks Passed
Six final build_ts matrix summary checks Still queued

New run. No failed or cancelled checks were reported on this head at the end of observation. The remaining matrix checks are waiting in GitHub's queue, not failing in the repaired test phases; no blind reruns or workflow changes were made.

Local validation also passed: full build, 349 memory-quality tests, 12 CLI tests, 516 browser client tests, pinned formatting and all four committed-HEAD PR gates.

The 30-minute observation window has ended. Next action is to let the six queued summary jobs execute and confirm their results; human approval remains required. This is not a claim that all required checks are green yet.

@hillary-mutisya
Hillary Mutisya (hillary-mutisya) merged commit 3c11e64 into main Nov 10, 2026
109 checks passed
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