diff --git a/docs/design/002-direction-round-notes.md b/docs/design/002-direction-round-notes.md index ad4c3ff..b9e56ff 100644 --- a/docs/design/002-direction-round-notes.md +++ b/docs/design/002-direction-round-notes.md @@ -310,6 +310,10 @@ What is in `~/epic-the-musical-content/` (1.5 GB, checked 2026-10-30): `.lrc` lyrics and the actual Odyssey passage). Implemented as spec `docs/specs/003-content-mount.md`. - Note: Butler's translation uses Roman names (Ulysses, Minerva, Jove). Worth a line in the UI. +- **16 is finished and committed**; report in `docs/design/002-sea-chart-spikes/16-voyage-readable-report.md`. + Preview rebuilt with 01–16 and the content folder mounted. Known: timeline at its height budget with + 3 motif rows; the panel strip still shows numbers only; ribbon labels sit on the mountain face. + ## Open questions (in priority order) 1. ~~Which sea-chart approach (08–11) reads best, or which mix?~~ 11's navigation + 10's style (§9). diff --git a/docs/design/002-sea-chart-spikes/16-voyage-readable-report.md b/docs/design/002-sea-chart-spikes/16-voyage-readable-report.md new file mode 100644 index 0000000..20c91e3 --- /dev/null +++ b/docs/design/002-sea-chart-spikes/16-voyage-readable-report.md @@ -0,0 +1,123 @@ +# 16 Voyage, readable — report + +Status: **done** (not committed). Built from `16-voyage-readable-brief.md`, starting from a copy of 15. + +## What was built + +`src/mockups/16-voyage-readable/` is 15 (look 2, five beats, toon/ink 3D, meander accents on every +menu, panel and HUD, beat 2's colours, placeholders) with three changes. URL params: `?beat=` `?t=` +`?play=` `?panel=0` as before, plus **`?tab=about|listen|paths|fan`**, **`?timeline=open|closed`** +(default open), **`?ribbons=1`**, **`?motif=`** and **`?t_play=`**. `t_play` starts the +first song's player at that second, playing, so a screenshot can show playback. + +1. **Readable type.** 15's small Cormorant capitals with wide tracking are gone from every label. + - **Inter** (400/500/600) is used for all UI: caption eyebrow (15px), HUD (14px), tabs (15px, + sentence case), fact labels, panel eyebrow, strip and timeline labels, saga names, "you are + here", B labels and fan-work types. Tracking is 0 everywhere except the frieze's vertical saga + name (0.06em). + - **Cormorant** is kept only for big display text: the caption title, the panel song title, section + headings (22px), part headings in the lyrics, italic lyric lines (19px), the About fact (20px) and + the frieze inscriptions. These are now 27 units, which is about 19px on screen (15 used 19 units, + about 13px). + - **Nothing under 13px on screen.** This includes the SVG text: timeline titles, stop numbers and + saga names are 13px. The frieze's saga column and thread names are Inter at about 14px. The route + chart's 7px port numbers are hidden, and its place names were enlarged. Panel body text is 15px. + Text uses iron `#2b2118`, iron-soft `#5a4836` and clay-deep `#9a4520` on vellum, all about 5:1 or + better. +2. **Listen & lyrics, one tab** (`player.ts`, `panel.ts`). Tabs: About · Listen & lyrics · Paths · Fan + works. About keeps the facts, the Odyssey, parts and singers, and Watch. It also gains a "Listen + with the lyrics" button. + - **Player card** at the top of the tab, with a meander edge. It has a 56px play/pause button, the + current part and its singers, elapsed / total time, and a scrub bar with ticks at the part starts + (click or drag it; ←/→ seek 5s). Below the bar is one button per part ("Verse 2 0:50"), and the + current part is filled terracotta. The note under it reads "Preview player: no audio file yet. + Playback is simulated." + - **Lyrics by part** below the card. Each part heading is a button (▶ Verse 2 0:50) that jumps the + player there and plays. The current part gets a terracotta wash, an ink outline and a "Now + playing" chip, and it scrolls into view when the part changes. Singer pills and motif chips stay; + motif picks still dim and highlight parts. + - **Simulated playback.** A rAF clock runs over a made-up, stable duration per song (2:30–4:10). + Part starts use `part.startSec` when the data has it, and are otherwise spread evenly across the + song. If `song.audio` exists, a real `