Commit Graph
9 Commits
Author SHA1 Message Date
Jesse_ChenandClaude Opus 5.5 5fd79a5649 Chart surfaces start Vimshottari from the birth moment, as reports do (issue #137, BUG-1492)
/api/chart, /api/dasha and the analysis layer, daily guidance and the KP
monthly packet used compute_vimshottari_timeline, which hands
build_dasha_timeline only the birth date, so periods started at midnight;
cmd_dasha (reports) starts from the birth clock and lays antardashas from the
full parent with float days. scripts/chart_dasha/birth_moment.py reproduces
cmd_dasha; 60 standard charts: MD and AD 60/60 equal (old chart path 9/60),
51 charts move by at most one day. Frozen scoring files are untouched, so
rectification probes keep the day start (left for a product decision).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 14:27:35 +08:00
Jesse_ChenandClaude Opus 5.5 699e353887 Rectification turns no longer spend a model call reading the case (issue #136, BUG-1491)
Step 0 of every turn could only call rectification-read-case with the
default projection, a result the server can compute. The runner now runs the
agent's own read-case tool after the Skill is bound (same tool, receipts and
projection), passes the call and result to the model as the turn's opening,
and gives step 0 the full tool set. Synthetic chunks go through the same loop
(case.loaded, activity and Skill receipt once each) but not into step timings.
The synthetic call carries a short reasoning line: thinking-mode DeepSeek
rejects a prior tool call without reasoning_content (checked live). read-case
stays callable for resume / full_diagnostics. Agents without listTools keep
the step-0 read. The Skill package has no "read first" text; prompts updated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 14:27:27 +08:00
Jesse_ChenandClaude Opus 5.5 06d0c7dc37 Cold /chart, /people, /synastry read in one round and stop re-reading the shell's data (issue #127, BUG-1478)
- The HTML early-read script also runs on /chart, /people and /synastry:
  account, people list and the current person's sessions, plus on /chart the
  remembered person's chart-view (bound to that person, page deadline kept).
  The model list stays home-only.
- Account and people-list early reads hand one clone to the shell and one to
  the page, once each, in either order; later reloads go to the network.
- Synastry sends product-access, account, people and history together; access
  is still decided before anything about people paints.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 12:11:03 +08:00
Jesse_ChenandClaude Opus 5.5 16fcb8c289 A ?c= link reads its conversation in the HTML's first round (issue #126, BUG-1477)
Independent Staging Quality Gate / validate (push) Successful in 15m37s
Independent Staging Quality Gate / publish (push) Successful in 8m8s
The early-read script now also sends /api/sessions/<id> when ?c= carries a
valid session id (same rule as parseSessionUrlQuery), next to the account.
Only the home bootstrap takes it, bound to that id and once: the lookup for a
conversation off the first page, or the landing fetchSessionDetail. 401/404/
error handling and notices are unchanged; a failed early read refetches.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 11:59:01 +08:00
Jesse_ChenandClaude Opus 5.5 a81b32349f First screen drops date-fns, the auth client and the report export (issue #125, BUG-1475)
Independent Staging Quality Gate / validate (push) Successful in 14m54s
Independent Staging Quality Gate / publish (push) Successful in 4m7s
- parseBirthDate/formatBirthDate: hand-written yyyy-MM-dd with the same strict
  round-trip check; equal to the date-fns version on 97,507 inputs.
- Sign-out imports the better-auth client on click.
- The share report export downloads at idle after first paint; once loaded,
  share writes the clipboard inside the click exactly as before.
- page.tsx: drop the unused consultationReportMarkdown import.

gzip-9 of every referenced JS/CSS: / -29,240 B (still Static); /chart, /people,
/reports about -29 KB; /ephemeris -23.6 KB.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 11:35:09 +08:00
Jesse_ChenandClaude Opus 5.5 55ebdd7a95 Home first screen no longer carries the rectification surface or react-markdown (issue #124, BUG-1474)
Independent Staging Quality Gate / publish (push) Canceled after 0s
Independent Staging Quality Gate / validate (push) Canceled after 9m27s
page.tsx imported the whole rectification surface statically; its verification
report also imported chat-markdown-view statically, which pulled react-markdown
into / even though chat-message-content already loaded it lazily.

- Home renders a same-named lazy wrapper; openRectificationCase starts the
  download with the open request and awaits it before setting the ids that
  mount the surface, so it still reveals once, drawn.
- The markdown loader moves to lib/chat-markdown-loader; the home bootstrap
  awaits it before revealing a conversation with messages (no plain-text flash
  on ?c=). The blank home does not wait.

/ first load, gzip-9 of every referenced JS/CSS: 704,165 -> 609,606 B (-13.4%),
still Static.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 11:25:43 +08:00
Jesse_ChenandClaude Opus 5.5 ad801a5db7 Home and the chat chart no longer re-render on every streamed frame (issue #123, BUG-1472)
Independent Staging Quality Gate / publish (push) Canceled after 0s
Independent Staging Quality Gate / validate (push) Canceled after 2m12s
Home subscribed to the whole streamingReply object, so each animation frame of
an answer re-ran the page (header, picker, composer, overlays) and the desktop
natal panel under it. ChatStreamingTranscript now subscribes for its session
and feeds ChatTranscript; Home reads one derived boolean for the stop label.
ChatChartSplit is memoized. 100 frames: Home <=2 commits (was >=100), panel 0.

Two source-contract tests now pin the new component instead of the old names.
The onboarding typewriter still ticks at Home level (out of this ticket).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 11:13:55 +08:00
Jesse_ChenandClaude Opus 5.5 584a72454b Chart head, inspector, chart-type sheet and dark-mode fills tidied (issue #140, BUG-1470)
Independent Staging Quality Gate / validate (push) Successful in 16m53s
Independent Staging Quality Gate / publish (push) Successful in 4m23s
- Composer cancels InputGroup's dark-mode fills too (BUG-1466 covered light only).
- Chart head controls share one 32px height, tags 28px, per the signed prototype;
  the birth line moves under the name so the phone top bar is one line.
- Inspector card has one fixed height and scrolls inside.
- Chart-type sheet header is a row (SheetHeader ships flex-col).
- Restore shadcn's base border-color rule: bare kit borders were drawn in
  currentColor, a white line in dark mode; the phone chart sheet pads once.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoz1Qk3y9buDv1mkmTu
2026-10-28 06:29:41 +08:00
Jesse_ChenandClaude Opus 5.5 142595f810 Chart and people pages no longer load the city table up front (issue #120, BUG-1469)
Independent Staging Quality Gate / publish (push) Canceled after 0s
Independent Staging Quality Gate / validate (push) Canceled after 11m35s
The birth editor on /chart now loads when the pen row is clicked (warmed on
hover/focus), the people page's add/edit form is fetched after mount, and
the people city column reads the on-demand table. /chart first load
-116 KB gzip, /people -111 KB; home +0.19%, still static. A static import
graph test keeps the table out of both pages.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DbBXoz1Qk3y9buDv1mkmTu
2026-10-28 06:18:05 +08:00