27 Commits

Author SHA1 Message Date
Jesse_Chen c2d705ef6e feat(frontend): add a warm dark theme and close the DESIGN.md drift
Independent Staging Quality Gate / validate (push) Has been cancelled
Independent Staging Quality Gate / publish (push) Has been cancelled
The palette is restated for dark rather than inverted: elevation reads
through lightness on dark and through darkness on light, so the floor is
the darkest surface here and the second-lightest there. The clay hue is
kept and lifted, because #85432f is 2.1:1 on a dark ground. All 37
themeable tokens are covered, in an OS-preference block and a data-theme
block that a contract test keeps identical, and ink, action, danger,
success and warning are asserted at 4.5:1 against the dark canvas.

Four raw colors that would have stayed light-theme values are tokenised
(the avatar hairline, the sheen sweep, a one-off shadow, a literal
warning hex). The QR keeps literal white in both themes, since scanners
need light modules to be light, and print keeps white paper.

The four root boundary pages cannot read a token, so they restate the
handful they need in both themes. forbidden.tsx also stops painting a
bespoke near-black page in four colours that appear nowhere in the
palette, which broke the rule that dark ink is never a page-scale
surface.

Also fixes what the audit found in DESIGN.md itself: two ink values that
had drifted from the code, a motion tier documented at 360ms that was
never implemented, a breakpoint section claiming three tiers where the
stylesheet has eleven, an undocumented report-paper palette, and an admin
section describing a bespoke panel that antd + Refine replaced. Five
zero-reference admin rules go with it.

The sidebar gets the accent, opaque drawer, heading rank and empty-state
guidance settled earlier, and fenced code blocks finally get a container.

BUG-439.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0155nFCgCHtoA7jhSDGmZmMu
2026-08-29 12:01:50 +00:00
Jesse_Chen d02fa8bbf3 fix(frontend): left-align the sidebar nav items on the mobile drawer
Independent Staging Quality Gate / validate (push) Successful in 11m52s
Independent Staging Quality Gate / publish (push) Successful in 16m19s
The nav buttons defaulted to centered for the desktop icon rail and were
flipped back by `[data-state="expanded"]`. That attribute tracks the
desktop open state, while the mobile drawer runs off `openMobile`, so on
a phone the labels rendered but the override never matched: 新建对话 and
我的报告 floated mid-drawer while every other row sat flush left.

Left alignment is the base layer now, correct for both the drawer and the
expanded desktop sidebar, and centering moved into the >=768px collapsed
block beside the rest of the rail rules. That was the only top-level
`[data-state=...]` selector left in the stylesheet.

personal-report-entry asserted `justify-content: center` on the report
button, which is the defect itself; the value is updated and the rest of
that assertion stands.

BUG-438.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0155nFCgCHtoA7jhSDGmZmMu
2026-08-29 11:22:39 +00:00
Jesse_Chen 92558ee61d fix(web): stack mobile audit tables and restore sidebar hierarchy
Independent Staging Quality Gate / validate (push) Successful in 9m27s
Independent Staging Quality Gate / publish (push) Successful in 7m40s
Narrow screens were wrapping 已执行 into a glyph column and painting every sidebar row the same gray, so history looked like top-level chrome.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-22 09:57:06 +08:00
Jesse_Chen 59559d4b24 fix(web): persist thinking, title sessions distinctly, and send follow-ups from the answer
Thinking disappeared on failure and never reached session storage. Keep the
sanitized chain on disk and on errors, and regroup the sidebar around reports,
charts, favorites, and dated history titles.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-22 09:10:47 +08:00
Jesse_Chen 994f0583af fix(rectification): stream answers live and keep mobile chat visible
Use the quiet overlay scrollbar on chat and the house board, replace the blocking mobile dialog with a bottom sheet, and emit agent deltas before billing so users can read progress and stop a run.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 19:46:27 +08:00
Jesse_Chen 3970410e66 fix(ci): keep sidebar contract aligned with rectification chat-panel class
BUG-322 added an is-rectification modifier on SidebarInset, but the sidebar source contract still required a fixed className and failed staging frontend CI.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 15:51:20 +08:00
Jesse_Chen 99833eba56 fix(sidebar): restyle session history as a quiet overlay scrollbar
Independent Staging Quality Gate / validate (push) Successful in 9m58s
Independent Staging Quality Gate / publish (push) Successful in 9m28s
The native always-on track and white chrome were competing with the parchment sidebar.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-19 18:36:36 +08:00
Jesse_Chen 2d370f2e9d fix(tests): read every CSS rule for a selector, not the first one
Independent Staging Quality Gate / validate (push) Has been cancelled
Independent Staging Quality Gate / publish (push) Has been cancelled
The sidebar contract read a selector with indexOf, so it returned whichever
rule appeared earliest in the file. A responsive override added above the base
rule made the gate report a missing min-height that was never removed, which
blocked staging on a change that was correct.

Share one helper that strips comments, parses rule by rule, accepts a whole
group as the query, and returns the declarations of every matching rule. The
union also makes a negative assertion mean no rule may declare the property,
which is what these contracts intend.

The helper was duplicated in two files and had no tests of its own; it now has
regressions for each way it read the wrong block.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-17 13:03:57 +08:00
Jesse_Chen a17ff258d8 fix: correct membership back flow and add onboarding paywall
Staging Backend Quality Gate / validate (push) Has been cancelled
Staging Backend Quality Gate / publish (push) Has been cancelled
2026-08-10 11:14:31 +08:00
Jesse_Chen 17430a1f21 fix(reports): trust verified proxy origin
Staging Backend Quality Gate / validate (push) Successful in 12m13s
Staging Backend Quality Gate / publish (push) Has been cancelled
2026-08-09 00:54:55 +08:00
Jesse 280d3e7a35 feat(membership): replace purchase modal with membership page 2026-08-07 18:24:16 +08:00
Jesse_Chen 5957803de4 Merge GitHub upstream into Gitea primary 2026-08-05 11:13:34 +08:00
Jesse_Chen 58f6b5f821 refine web session and account UI 2026-08-04 21:59:59 +08:00
linmeng f4e35974c6 Revert "merge: sync GitHub staging to Gitea"
Deploy staging to test server / deploy (push) Failing after 14m49s
This reverts commit a55c69115d, reversing
changes made to 02c9c9f3d6.
2026-07-30 14:38:17 +08:00
Jesse_Chen 3069a7c8a0 feat: streamline conversational birth-time rectification 2026-07-22 17:39:11 +08:00
Jesse_Chen bfc6870614 feat: complete verifiable birth-time rectification flow 2026-07-21 22:16:18 +08:00
Jesse_Chen 00d8762c13 fix: left align chat session title 2026-07-18 21:47:55 +08:00
Jesse_Chen 9efe55ea49 fix: show chat sidebar trigger 2026-07-18 21:45:38 +08:00
Jesse_Chen 651c8a1a50 fix: align sidebar truncation contract 2026-07-18 19:18:41 +08:00
Jesse_Chen 35a2be88eb style: add responsive sidebar rail and drawer 2026-07-17 19:43:10 +08:00
Jesse_Chen a530a5a5d3 refactor: migrate chat shell to app sidebar 2026-07-17 18:12:54 +08:00
Jesse_Chen c6467d8604 fix: harden app sidebar popover 2026-07-17 18:03:10 +08:00
Jesse_Chen 626524b186 feat: compose Jyotisha app sidebar 2026-07-17 17:55:55 +08:00
Jesse_Chen fcaece87df fix: preserve sidebar subtree across drawer state 2026-07-17 17:45:42 +08:00
Jesse_Chen 6cc425d9d9 fix: guard sidebar mobile overlay lifecycle 2026-07-17 17:40:22 +08:00
Jesse_Chen 62382d9828 fix: tighten composable sidebar primitives 2026-07-17 17:32:42 +08:00
Jesse_Chen c45f21e8d8 feat: add composable sidebar primitives 2026-07-17 17:17:10 +08:00