Spaces:
Running on Zero
Running on Zero
Commit History
-
feat(02-08): word-lookup popover (reading, glosses, level, dictionary form) with published numbers
- transcript.js: openPopover / closePopover / bindPointer and a seeded debug.popover (open, lineId, tokenIndex, surface, reading, level, glossCount, left, top, width, insideTranscript, openCount, closeCount). The card is filled from the token record the line already holds, so a tap issues no request of any kind - pointerup opens, a capture-phase pointerdown on the document dismisses (so a tap on another word re-anchors without passing through a closed state), Escape closes, Enter/Space open the focused word, the column's scroll closes; setMode / setLevel / setTokens close first, because a re-render replaces the anchor - transcript.css: the card, five level-rank hues on the badge and a 1 px rank underline on tappable words; #transcript-text becomes a real column (min-height 9em, max-height 40vh, overflow-y auto) so "the card stayed inside the transcript" is a measurable fact - host.js calls the renderer's bindPointer once and publishes debug.popover on __debug - standalo…89a4bf6 -
feat(02-07): DOM-built ruby transcript renderer, stylesheet and standalone harness
- avatar/transcript.js: createTranscript (addLine/setTokens/setMode/setLevel), showRt on the kanji axis, LEVEL_RANK/FURIGANA_MODES/LEVELS, debug.furigana numbers (rt count, rt height, line height) - avatar/transcript.css: line-height 2.1, ruby-position over, rt 0.55em, .tok touch-action - avatar/transcript-harness.html: fixture tokens -> DOM with no server, 1-based sentence numbers - tests/e2e/test_transcript_standalone.py: 4 tests incl. the height proof and the oracle-gated modes - tests/e2e/test_avatar_loop.py: expected_rt, the Python oracle shared by all three layers - tests/test_transport_seam.py: transcript.js DOM-only, css rules, ruby-not-rp guards7d7a567