Repository navigation
feat(ui): mark & ledger chrome, learning-time & dictionary, sticky fo… - #101
Merged
Merged
Conversation
…oter shell - footer promoted to persistent app-shell chrome: one <app-footer/> under the router-outlet, flex-pinned to the viewport bottom (margin-top:auto + flex-shrink:0 in app-root's 100vh column - no position:fixed, so no hardcoded clearance); compact <=884px tier keeps the pinned band slim on phones; per-page <app-footer> removed from the 8 page templates that carried it - Mark & Ledger work wave (pre-existing tree, committed together as files overlap): UserLearningTimeService heartbeat + leaderboard, WordDictionaryService review lookups, /help compiled bilingual guide, NAV_ICON single source, vocabulary autoplay options dialog, habits/homepage/toolbar refinements, single azure theme (4-palette switcher removed), page title "K.H.B., by Alva Chien", version 1.9.52 -> 1.9.64 (released 2026-11-08) - delete orphaned quit-confirm dialog template + its quitConfirm* i18n keys; bind habit-list header glyph to NAV_ICON.habits - docs: full CLAUDE.md audit vs code - HOWLER_GLOBAL token, Vocabulary* store names, class-guard status (sanctioned exception), help fragment scroll mechanics (no withInMemoryScrolling), filtering-pattern rewrite, test counts, tools/ + docs/ inventories; architecture doc tree line for the deleted orphan; stale navbar breakpoint comments corrected Verify: ng build clean; ng test 93 files / 2229 tests green (2026-11-11). Co-Authored-By: Claude Code <noreply@anthropic.com>
…ial CI workers The build-and-test workflow failed PR #101 with pure timeouts under runner CPU contention (no assertion failures): habit DOM tests died at the default 5s budget, and the playAuthenticatedOneShot onEnd tests blew past their 20s escape hatch (MockHowl defers onload on a real 1ms timer). - vitest.config.ts: maxWorkers 1 when CI is set (full parallelism locally), testTimeout 15s for the heavy interactive specs - audio-service.service.spec.ts: onEnd describe drives fake timers via advanceTimersByTimeAsync — deterministic, no wall-clock dependence Co-Authored-By: Claude Code <noreply@anthropic.com>
…erConfig The habit-spec CI timeouts were not CPU contention: the translate review store spec installed vi.useFakeTimers() in its quit/destruction describes with no restore, and the unit-test builder runs files with isolate:false (shared worker globals). The fake clock leaked into the next spec file in the same worker, hanging every real-timer await (flush/setTimeout) until the 5s default timeout — the victim file varied with worker assignment, so it passed locally and failed in CI. Reproduced with a cold vitest cache + VITEST_MAX_WORKERS=1 (leaker first, victim times out 4/4). - translate store spec: afterEach(vi.useRealTimers) on quit + destruction - vocabulary store spec: move in-test afterEach registrations (they landed on the file suite and worked only by accident) to describe level - angular.json: set test.options.runnerConfig — without it the builder silently ignores vitest.config.ts, so 90bba4b's 15s testTimeout and serial CI workers never applied (CI still showed the 5s default) - vitest.config.ts: keep runner-level options only (the builder manages include/setupFiles/globals); correct the rationale comments - CLAUDE.md: document the fake-timer restore rule and runnerConfig wiring Verified: full suite 2229/2229 green serially (1 worker) and in parallel. Co-Authored-By: Claude Code <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.
…oter shell
Verify: ng build clean; ng test 93 files / 2229 tests green (2026-11-11).