Release history

Changelog

Every release, in order — newest first.

26 releases

2026-10-13
Reader

A public demo reader for the portfolio

  • An original two-scene mini-musical, 「달빛 세탁소 · The Moonlight Laundromat」, built through the same reader so every feature can be shown publicly without exposing a production script or needing a PIN
  • The practice preview now samples each script's own lines (a fixed Season 2 exchange appeared in every reader), and Word export / review-copy titles use the script's own name instead of always 유월
  • The demo opens in English with an English interface and a welcome screen explaining what the tool is and what to try; the real readers stay Korean-first
  • Public at /demo.html — it's original text, so it opens without a PIN
2026-10-06
Reader

Reader polish: songs in the contents, guided practice, consistent controls

  • Contents now lists every song under its scene (♪ number and title), so you can jump straight to your number
  • Practice: filters and highlights stay locked with a hint until you pick a part, and the line/song counts are labelled
  • One selected style across every control, one overlay open at a time, bilingual Export labels with proper icons, and no ⌘P hint on phones
  • Season 2 settings no longer show the natural/literal switch, which does nothing for its single translation
  • With 한국어 selected the interface is Korean too: scene numbers (1장), dates, menu headings, search boxes and cast names no longer mix in English; turning English on brings the English labels back
  • Bigger, higher-contrast text for older readers: nothing in the menus under 13px, and no more tiny uppercase letter-spaced labels
  • On phones the five toolbar buttons are now equal in size and spacing, each with a Korean label under its icon
  • The new company mark is now the favicon, home-screen icon, site nav logo and the Season 2 reader's icon; the 유월 readers keep their butterfly
  • First-run setup in three short steps — text size, your part (every speaking part, ensemble and small roles included), and a hands-on preview of spotlight, line test and line drill. Starts in Korean; rerun it from the 글자 menu
  • Part picker as large cards for the leads (colour, name, 'lines 237 · songs 50'); smaller parts fold under 그 외 배역
  • Settings reordered: text size first with 보통/크게/아주 크게 presets, then language and brightness; typeface, line numbers and export sit under 더 보기
  • The 저장 (export) button is hidden from the toolbar for now; export stays reachable from 글자 › 더 보기
  • No more coloured stripes down the left edge: spotlight, song boxes, the contents and review marks use a rounded tint instead
  • The setup preview of line drill now works like the real drill (cue → 확인 → ⭕/❌) instead of repeating line test
  • The second 10장 is marked 2막, so the two scene 10s are no longer identical
2026-10-05
Reader

Season 2's script, in the reader

  • The 24 September PDF draft, parsed into the same reader as Season 1: 13 scenes, ~670 lines of dialogue, 20 songs, every stage direction
  • Every line, lyric and direction has a first-pass English translation for rehearsal — flag anything wrong with review marks
  • Songs show their section and singer labels (Verse, Danbi Chorus…) so you can find your part
  • Line practice, search, surtitle export and review marks all work with the new cast
  • Opens from /scripts behind the same team PIN
  • Fixed: a part chosen in 유월 (e.g. "only 유근's lines") carried over to Season 2, where nobody has that name, so the page looked empty. Each show now remembers its own part
  • Season 2 opens in Korean only by default, instead of inheriting the language toggles from 유월
  • Fixed the toolbar breaking into three lines under the long title: the title now truncates to one line and button labels never wrap
  • Phone-first intro: keyboard shortcuts are hidden on touch screens and replaced by a tip to open it on a computer for PDF/surtitle export and the wide two-column view; buttons are described by their icons, which is all a phone shows
2026-10-03
Platform

Mobile polish, and a PIN field phones can actually type into

  • The PIN field opened a number pad on phones, but the team PIN has letters and symbols. It now opens the full keyboard, with no auto-capitalising or autocorrect
  • Show/hide toggle on the PIN; a wrong attempt now keeps and selects what you typed instead of wiping it, so a one-character typo is a one-character fix
  • Pinch-zoom was disabled site-wide (an accessibility failure on Android); it works again, and inputs are 16px so iOS doesn't jump-zoom into them
  • The unlock page's browser tab said “Musical 2026 — Schedule” even when unlocking the script
  • Headlines break evenly (no lone “the” on its own line), the Reader link shows in the phone nav, and each script card is tappable as a whole
  • On phones each changelog entry puts version, date and area on one line; the changelog's Reader link now goes to the version chooser like everywhere else
2026-10-03
Schedule

Schedule app polish (yuwol-schedule.vercel.app)

  • Tapping a cell used to insert a banner above the table, shoving every row down so the next tap landed on the wrong person. Unsaved state now lives in the save bar, with a Discard button
  • The role picker was clipped by its cell and effectively invisible; it now opens fully, and the 8px dot has a thumb-sized target
  • After 8pm Toronto time the “today” column jumped to next week (a UTC date bug)
  • The next rehearsal scrolls into view clear of the name column; date headers lead with a large day number and mark the month
  • A failed save keeps your name and reason; system alert/prompt dialogs are replaced by in-app toasts and an inline name field for reverts
  • Switching department tabs with unsaved edits now asks before discarding them
  • Every dialog is one bottom-sheet component: Escape/backdrop to close, home-indicator padding, 44px controls; emoji icons replaced with one icon set
  • Light-theme and large-text users no longer see a flash of the dark default on every load
2026-09-06
Platform

A review sheet for the revision, and a changelog that can't drift

  • The revision finally has its own review sheet. Until now only the frozen full script had one, so the version actually being worked on was the one you could not review offline
  • Both sheets are keyed by the permanent line ids, so a note like “3-2/017 is wrong” lands on the same line for everyone
  • Filled a release that was never logged and corrected four release dates that were 11 days off from the commits that shipped them
  • Shipping user-facing code without a changelog entry now fails the build — the log of record is enforced rather than merely intended
2026-08-18
Platform

The first test suite — and six bugs it found

  • 168 tests, written around the bugs this project has actually had rather than around the code
  • Four lines of Korean stage direction were being projected onto the surtitle wall; they are gone, along with staging notes inside song blocks
  • Any lyric whose English ended in a colon was mistaken for a singer label, dropped from the cue sheet, and corrupted the speaker for every cue after it
  • One stray period on a song's end marker silently deleted the entire song and everything after it; markers now tolerate it, and a genuinely unclosed song stops the build
  • A speaker written with an ASCII hyphen was being merged into the previous speaker's line, misattributed with no warning
  • A refused build no longer leaves its output file half-updated
  • Added tests that execute the PIN check itself: an auth bypass granting every gated zone to anyone with a cookie previously passed all 148 tests, lint and typecheck
2026-08-17
Platform

The system layer: one manifest, one build command, one control plane

  • The 276-page PDF of the complete script was downloadable with no PIN — now gated. It was registered in none of the three places artifacts had to be listed
  • One manifest now decides what we serve: add a file to public/ without declaring it and the build fails, so the leak that happened twice cannot happen again
  • npm run script:build runs all six pipeline steps in dependency order; the review CSV had gone two rows stale because one step was never re-run
  • Revision line ids are now permanent: inserting a line used to shift every id below it, silently re-pointing review marks and surtitle cues
  • An untranslated line now stops the build instead of quietly rendering Korean in the English column
  • Filled in English names for 12 characters that were still rendering in Korean
  • New owner-only /backstage: which zones are currently open, translation coverage, artifact registration and build freshness — every figure computed, never typed
  • Two handover runbooks — translation & script edits, schedule & attendance — written for someone who has not read the codebase
  • A documentation set for new contributors, including a change-impact map of what breaks what, checked so its file paths cannot rot
2026-08-17
Platform

Review sheet locked down; changelog is searchable

  • The review CSV — the entire script, 1,801 rows — was reachable without the PIN; it now sits inside the same lock as the readers
  • The revision reader was missing from the cache rule, so all 665KB was refetched on every open; fixed
  • The changelog now has search and an area filter, and it indexes the Korean text too
  • Every release has its own link, so you can point someone straight at one change
2026-08-17
Reader

Surtitle cue sheet export

  • A projection-ready cue sheet: a blank line is a slide break, so pasting into PowerPoint, Keynote, ProPresenter or OpenLP arrives already grouped — no more chunking by hand
  • The speaker is named whenever it changes, so attribution survives the grouping — the problem that started this
  • Every cue carries its permanent line id, so anyone can say “cue 0143 / 3-2/017” and the whole team lands on the same line
  • Long speeches split at sentence boundaries, with a choice of cue length (standard ~150 chars, or short ~90 for smaller screens)
  • Acting notes and stage directions are excluded — instructions to the actor never reach the audience's screen
  • Optionally carries the Korean under each cue so the operator can follow along
2026-07-27
Reader

Revision rebuilt from the latest draft

  • The revision was rebuilt from the latest pasted draft rather than the earlier document
  • Note: this version no longer contains the final reunion scene — it ends at 10-1. That was in the draft we were given, not an error. The earlier version is still recoverable from git if it should come back
  • Yuwol is male: the English now says he/him throughout. Korean marks no gender, so two of Yuhwa's lines had been translated as 'save her'
  • 영아 and 아그네스 are the same person under two names in the script; they now map to one role
  • Parenthetical acting notes left in the English dialogue have been removed
2026-07-27
Reader

Revision fully translated

  • Every line of all 21 songs is now translated — no gaps left
  • 31 spoken lines that were being rendered as song lyrics are now dialogue
  • Part labels inside songs (엄마:, 유월:) now render in English automatically
  • Stray production marks inside the lyrics have been cleaned out
2026-07-27
Reader

Full revision loaded

  • The revised script now runs Acts 1–10 in full: 19 scenes and 21 songs
  • Every spoken line is translated — all 824 of them
  • Song-lyric English is still in progress; untranslated lines show the Korean instead of a blank
  • The REPRISE numbers and song 17 are now picked up correctly
  • Acts 8 and 9 scenes now carry their location as a title
2026-07-27
Reader

Revised script added

  • The revised script (Acts 1–6-1) is now its own reader; pick a version at /scripts
  • Stage directions and the parenthetical acting notes are stripped — dialogue and songs only
  • Keeps every feature: translation, line practice, search, and review marks
  • Lines whose Korean is unchanged reuse the English we already had
  • Review marks are kept separately for each script
2026-07-27
Reader

Review marks & a script we can edit

  • Review mode: flag any line as needs-edit or remove-it, or mark a gap where content is missing, right where you see it
  • Lines flagged for removal show struck through rather than disappearing — it's a proposal until we fold it in
  • Add a note and the corrected or missing text; works on song lyrics line-by-line too
  • Jump straight to any mark from the list, and tag marks with your name
  • Export as JSON to send back, or copy as text to paste into the team chat
  • Every line now has a permanent id, so marks and references survive lines being added or removed
2026-07-16
Platform

Faster & sturdier

  • Script reader is 34% lighter (41% less over the network) — much faster to open on phones
  • Errors and missing pages now show designed screens with a way back, not raw error dumps
  • API failures return clear, typed responses — a failed save can't silently vanish
  • Security headers on every page; dependency vulnerabilities cut from 11 to 2 upstream-only
  • Repeat opens load the script from cache, with new releases picked up within 5 minutes
  • Accessibility: accent buttons now always render white text (5.5:1 contrast); English pages announce the right language to screen readers
2026-07-16
Reader

Faster navigation & search

  • In-field match counter (3/34) with prev / next / clear; a miss now shows 0
  • Current match highlighted in accent so you can see which of many you're on
  • Full-width sticky Act bar with jump-to previous / next Act
  • Reading-progress hairline under the toolbar for at-a-glance position
  • Resumes your last spot on return, with a one-tap way back to the top
  • Keyboard shortcuts: / search · Enter/⇧Enter next·prev · [ ] Acts · ? help
2026-07-13
Reader

Editing & practice

  • Korean shown by default — the original script leads
  • Editable Word (.docx) export the team can revise, with correct Korean
  • Lines / Songs split in the practice filter — study either on its own
  • Tidied the My Part panel so highlight options aren't buried in long lists
2026-07-11
Reader

Dark theme

  • Auto / light / dark, for low-light backstage reading
  • Follows your OS or your manual choice; remembers it
  • Every speaker colour + control still passes WCAG AA in dark
2026-07-11
Reader

Accessibility & mobile reading

  • Bilingual lang tags so screen readers use the right voice
  • Skip link, keyboard + reduced-motion + high-contrast support
  • Act header pins flush under the toolbar; live location crumb
2026-07-10
Reader

Scene-partner practice & mobile sheets

  • Filter by me + scene partners to run lines together
  • Translation compare mode; consolidated into one toolbar
  • Popovers rebuilt as proper mobile bottom sheets
2026-07-09
Reader

Design system & export

  • Design-token system for consistency; first-visit onboarding
  • Filter modes, shareable preset links, line numbers, JSON export
  • Two-column PDF export in the original script format
2026-07-07
Reader

Role filter & legibility

  • Role filter rebuilt as an always-visible bar
  • Sharper bilingual legibility, sans-serif body
2026-07-05
Reader

Practice modes & full translation

  • Line practice (spotlight, line test) + a memorisation drill
  • Natural English translation complete — all 18 scenes
  • Script-hub landing page
2026-07-04
Reader

The script reader

  • A fully responsive Korean/English bilingual script reader
  • Translation review, line memorisation, and sharing in one place
2026-07-03
Platform

Schedule workspace

  • Attendance & rehearsal schedule grid with a D-day countdown
  • Role filters, notice board, PIN-protected admin editing