feat(frontend): A1-A10 polish bundle — dark variants + sort affordance + a11y + stale copy#244
Merged
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
…e + a11y + stale copy 10 quick-win design polish items surfaced by the post-#242 frontend-design-reviewer open-scope audit. All single-line or two-line fixes across 6 files. No schema / Python / scoring / valuation / output JSON change. A1 app/stock/[ticker]/page.tsx:190,239 — 2 h2 section headers ("Price (1y)" + "Raw fundamentals") gain dark:text-slate-400 (other h2s on same page already had the pair; these two were overlooked) A2 app/stock/[ticker]/page.tsx:76 — "← Back to ranking" link gains dark:text-slate-400 dark:hover:text-slate-100 (sibling not-found path already had the dark variants) A3 FilterDrawer.tsx:238 — Valuation/MoS chips gain dark:bg-slate-900 dark:text-slate-400 dark:ring-slate-700 dark:hover:bg-slate-800 on unselected state (other 3 filter groups already had it; this one was missed) A4 FairPriceCard.tsx:97,106,116,124 — 4 KPI dd values (Median fair / Margin of safety / Max ex-outliers / Tangible BVPS) gain font-mono font-semibold leading-none. Was reading visibly weaker than the hero-metric pattern (ScoreBadge lg + MoSBadge + CurrentPriceLine all use font-mono font-semibold). A5 RankingTable.tsx:243 — inactive sortable columns now render a subtle "↕" glyph in text-slate-300/dark:text-slate-700 instead of an empty string. Communicates sortability before interaction (Bloomberg/Google Finance standard pattern). A6 RankingTable.tsx headerCell() — aria-sort={ascending | descending | none} attribute added to sortable <th> elements. Screen readers can now announce column sort direction (WAI-ARIA standard). A7 FilterDrawer.tsx:146 — search input gains dark:focus:border-slate-500 dark:focus:ring-slate-500. Sibling input in RankingTable already had the dark focus variants; drawer input was inconsistent. A8 FilterDrawer.tsx 4 chip surfaces — `transition` (transitions ALL CSS props) → `transition-colors` (scoped to bg/color/ring). Matches PriceTimePeriodSelector pattern; minor but correct. A9 app/page.tsx:22 + app/stock/[ticker]/page.tsx:291 — stale "Phase 3b" / "Phase 3c" references stripped from user-facing footer copy. These were internal implementation notes that leaked into user-facing text; current schema is 0.10.2-phase4.5e. Explanatory content preserved; just the phase tags removed. A10 PriceHistoryChart.tsx:368 — Recharts tooltip borderRadius: '0.375rem' (6px) → '0.25rem' (4px) matching the post-A3 4px card-radius normalization. SKILL.md Rule 0 carve-out covers the inline JS object pattern; the radius value itself can still align with the spec. Out of scope (deferred from audit) - B1: dead-sort-key SortKey cleanup (no UI impact today) - B2/C1: Instrument Serif use-on-hero or remove-import decision (design taste call — needs user direction) - B3/C2: MoS column on desktop ranking table (data-density tradeoff — needs user direction) - C3: focus-visible ring system across all 23 interactive buttons (a11y improvement, wider scope) Lockstep - PHASE_STATUS_INFLIGHT.md side-file entry appended per PR #237 convention (CLAUDE.md / AGENTS.md substance UNCHANGED — doc-only in-flight entry lives in the side file) - No schema / Python / scoring / valuation / output JSON change - className + attr + copy-text diff only; no test changes required - tsc --noEmit errors in sandbox are env noise (no node_modules); CI runs with deps and will validate
403484e to
136877f
Compare
This was referenced May 25, 2026
dackclup
added a commit
that referenced
this pull request
May 26, 2026
…Craft frontend (#266) Cuts the v1.3.0-phase4.5e release tag, closing the Phase 4.5e Form-4 insider-clustering ladder (PRs #167+#205+#222+#224+#238) and shipping the LedgerCraft frontend reskin (A1-A3+B1-B4+animation PRs 1-3+#244 polish+dark-mode tooltip fixes through PR #263) since v1.2.0-phase4.5 (6d414a9, 2026-05-17). Scope (3 files): - pyproject.toml — version 0.3.0 → 1.3.0 - docs/release-notes/v1.3.0-phase4.5e.md (NEW) — release body grouped by Form-4 cluster / data-quality / defense layer / frontend / methodology + agent infra / CI hygiene; ~800 words - PHASE_STATUS.md — Current state schema 0.10.4 → 0.10.5-phase4.5e, defense layer headline 32 → 33 declared flags, production-run pointer refreshed to 26423296287 Pre-flight ladder verified by release-captain (opus): - ruff clean - pytest 1216 passed (offline) - schema_check in sync at 0.10.5-phase4.5e - verify-production-output Section A-G + I-L PASS; Section H 1 known FAIL (orphan BK.json legacy snapshot, pre-existing) - frontend build verified via vercel-preview-auditor (sonnet) on main HEAD e6013ba — 506/506 routes compiled, types validated, runtime clean, 3-route UA probe PASS Defense scorecard: 7 active vetoes unchanged (altman_distress / sloan_accruals_top_decile / net_issuance_top_decile / non_reliance_filing / beneish_manipulation_veto / dechow_manipulation_veto / data_quality_input_corruption). Headline 32 → 33 declared boolean flags (adds multi_class_aggregate_shares_suspected per PR #264; PR #265 DQIC rename is identifier-shape, not new flag). Production output: metadata.json reports 0.10.4-phase4.5e from cron #4 (2026-05-26T01:12); next weekday cron Wed 2026-05-27 22:00 UTC re-renders at full 0.10.5-phase4.5e semantics. Tag is anchored to code, not last committed snapshot per release-tag SKILL.md §Gotchas. CVE baseline 25 → 15 open (0C/6H/7M/2L); all 15 are next@14.x SSR advisories with zero exploitability on static-export. Post-merge: tag command + GitHub Release creation require explicit user authorization per CLAUDE.md §Executing actions with care. https://claude.ai/code/session_01JwntEE4PNAXSMkZxRA9BB4 Co-authored-by: Claude <noreply@anthropic.com>
Merged
3 tasks
dackclup
added a commit
that referenced
this pull request
May 26, 2026
…stale INFLIGHT markers (#267) Phase B (post-tag housekeeping) per the v1.3.0 release plan. Pure doc-pointer maintenance; no code touched. Scope (3 files): - CLAUDE.md §Phase status — Latest release tag pointer bumped v1.2.0-phase4.5 (6d414a9) → v1.3.0-phase4.5e (5db3b97); prior tag preserved as historical reference - PHASE_STATUS.md §Current state — same pointer bump + one-line description of what the release closes - PHASE_STATUS_INFLIGHT.md — 11 stale (in flight) header markers updated to (merged YYYY-MM-DD, SHA) with PR number prefix; PRs drained: #244 / #245 / #246 / #250 / #251 / #252 / #256 / #257 / #258 / #263 / #266. Bodies stay in place (full historical record preserved); future weekly housekeeping commit moves them between sections per PR #237 convention. Note on tag: v1.3.0-phase4.5e was created locally during the release session but `git push origin <tag>` failed HTTP 403 from sandbox (proxy permits branch pushes, not tag-ref pushes). User runs the tag commit + push from their own machine on the squash- merge SHA 5db3b97. This PR's pointer bumps reference the tag AS IF live per release-tag SKILL.md §7 (anchors to commit SHA, not tag-availability state). Markdown-only diff; ruff / schema_check / pytest N/A. PHASE_STATUS_INFLIGHT.md side-file satisfies §Conventions "ship with every PR" lockstep per PR #237 convention. https://claude.ai/code/session_01JwntEE4PNAXSMkZxRA9BB4 Co-authored-by: Claude <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.
Summary
10 quick-win design polish items surfaced by the post-#242
frontend-design-revieweropen-scope audit. All single-line or two-line fixes across 6 files. No schema / Python / scoring / valuation / output JSON change. Closes residual gaps that slipped through the LedgerCraft A1-B4 + #242 polish series.Scope (7 files, ~67 insertions / ~22 deletions)
app/stock/[ticker]/page.tsx(2 h2s)dark:text-slate-400app/stock/[ticker]/page.tsxdark:text-slate-400 dark:hover:text-slate-100FilterDrawer.tsxdark:bg-slate-900 dark:text-slate-400 dark:ring-slate-700 dark:hover:bg-slate-800FairPriceCard.tsx(4 KPI dd)font-mono font-semibold leading-noneRankingTable.tsx↕glyph intext-slate-300RankingTable.tsxheaderCell()aria-sort={ascending | descending | none}FilterDrawer.tsxsearch inputdark:focus:border-slate-500 dark:focus:ring-slate-500FilterDrawer.tsx4 chipstransition(ALL CSS props) →transition-colors(scoped)PriceTimePeriodSelectorpatternapp/page.tsx+app/stock/[ticker]/page.tsxPriceHistoryChart.tsxborderRadius: '0.375rem'(6px) — post-A3 inconsistency'0.25rem'(4px)Out of scope (deferred from audit — need user direction)
fair_price/margin_of_safety_pctkeys inSortKey(no UI impact)Instrument Serifloaded but unused (~40-60KB) — decide use-on-hero or removeLockstep
PHASE_STATUS_INFLIGHT.mdside-file entry appended per PR #237 convention. CLAUDE.md / AGENTS.md substance UNCHANGED.Test plan
↕until clicked, then▲/▼Risk
🤖 https://claude.ai/code/session_01Dk82y7Eswz745NuBQH3CaG
Generated by Claude Code