diff --git a/context/plan.md b/context/plan.md index 64eae032..2abf1f68 100644 --- a/context/plan.md +++ b/context/plan.md @@ -175,7 +175,7 @@ Generate the GIF by running `nix develop --command vhs docs/demo.tape`. Iterate Asciinema produces `.cast` files that the asciinema-player JS widget can replay in a browser, with selectable text and pixel-perfect terminal rendering. These will be embedded in the GitHub Pages landing page in Phase 4. -Before recording, set the terminal to exactly 100 columns by 30 rows: `stty cols 100 rows 30` (or resize the terminal window manually if `stty` doesn't take). This matters because the asciinema player renders at the recorded dimensions and a wrong size will look broken on the landing page. +Before recording, set the terminal to match what `docs/index.html` declares. That is **120 columns by 37 rows** today, not the 100x30 this plan originally said: the casts that were actually recorded are 120x37, and the landing page follows the recordings rather than the other way round, because a 30-row player clips the bottom seven rows of a 37-row cast — which is where the tile bar and the status line are. `stty cols 120 rows 37` (or resize the window manually if `stty` doesn't take). Whichever geometry is used, the two must agree: the player renders at the size it is told and a mismatch looks broken. If a re-recording changes it, change `cols`/`rows` in `docs/index.html` in the same commit (improvise-2oxt). Record four casts under `docs/casts/`: @@ -235,11 +235,15 @@ Vanilla HTML, single file, under 200 lines. No framework, no build step. Dark ba Section structure: title and one-line tagline → "Reassign axes on the fly" with the pivot cast → "Drill into aggregated cells" with the drill cast → "Formulas over dimensions" with the formulas cast → "Import a CSV" with the import cast → "Get it" with the install commands and a GitHub link. -Each cast should be embedded with `AsciinemaPlayer.create()` configured with `rows: 30, cols: 100, theme: 'monokai', autoPlay: false, loop: true`. +Each cast should be embedded with `AsciinemaPlayer.create()` configured with `theme: 'monokai', autoPlay: false, loop: true`, and `cols`/`rows` set to the casts' own geometry — 120x37 as recorded, not the 100x30 this plan first specified. See 2.4. ### 4.2 Enable GitHub Pages -In the GitHub repo settings, enable Pages with source set to the `main` branch and folder set to `/docs`. Verify the site is live at `https://.github.io/improvise/` within a few minutes of pushing. +**Not branch-and-folder.** Pages is served from the GitHub Actions artifact that `pages-build` / `pages-deploy` publish in `.github/workflows/ci.yml` (Settings → Pages → Source: GitHub Actions), and the tree is assembled by `web/assemble.sh`: `docs/index.html` and `docs/casts/` at the root, the browser app under `app/`. + +Setting the source to branch `main` / folder `/docs` instead would serve `docs/` raw. That used to fail loudly — there was no `docs/index.html`, so it was a 404 — and since improvise-e61 it fails **quietly**: the landing page renders perfectly and its "Run improvise in your browser" link 404s, because `app/` exists only in the assembled tree. A page that looks right with a dead front door is worse than a page that is missing. + +Verify the site is live at `https://.github.io/improvise/` within a few minutes of pushing, and click through to the app rather than only loading the root. --- diff --git a/docs/index.html b/docs/index.html index 960356d6..acdaa0cd 100644 --- a/docs/index.html +++ b/docs/index.html @@ -95,6 +95,16 @@ border-radius: 6px; overflow: hidden; } + /* A 120-column cast shrunk to a phone gives a ~5px font. Scroll it + sideways at a legible size instead of rendering it unreadable. */ + @media (max-width: 900px) { + .player { + overflow-x: auto; + } + .player > * { + min-width: 880px; + } + } pre { background: var(--panel); border: 1px solid var(--rule);