Skip to content

v0.6.3

Latest

Choose a tag to compare

@moiku moiku released this 01 Nov 04:00
· 91 commits to main since this release

Egatari Studio v0.6.3

Egatari 1.0 Working Draft wd-2026-11-01 に従います。

v0.6.3 は、録音を続けて進められるようにし、パーツの効果音と、発表中の見る人の入力を加えた版です。先生が気づく変更から先に書きます。

先生にとって変わること

1. 録音を続けて録れます

録音モードに「続けて録る」が加わりました(初めはオン。この端末に覚えます)。

  • Enter でテイクを残すと、整えて保存してから、音声のない次のステップを続けて録り始めます。
  • 今の台本に合う音声があるステップでは待ちます。最後のステップで止まります。
  • オフにすると、ステップごとに待ちます。
  • ステップを替えても、音声や効果音は鳴りません。
  • 録り始めと録り終わりのキーやトラックパッドのクリック音を取り除きます。マイクの遅れ(ヘッドセットなど)も見込みます。

2. パーツの効果音

ベル・チャイム・音符を鳴らすパーツが使えます。

  • 発表(talk)と学習(learn)で、前へ進んだときだけ鳴ります。戻る・跳ぶ・印刷では鳴りません。動画には音が入ります。
  • ツールバーの「効果音を消す」で消せます(この端末に覚えます)。このボタンは、効果音を持つパーツがある教材にだけ出ます。
  • 録音モードの間は、この設定によらず鳴りません。

3. 発表者ビューから、予想の数とタイマーを操作できます

発表者ビューの「今の画面」で、m-predict の数を入れたり、タイマーの +1 分/−1 分 で時間を変えたりできます。

  • 本体にも同じ数と延長が出て、本体での変更も発表者ビューに映ります。
  • 同じスライドの中では、ステップを進めても戻しても残ります。別のスライドから入ったときや、スライドへ跳んだときに作者の値へ戻ります。
  • −1 分は、残り時間が 0 になったところで止まります。延長は 1 時間までです。
  • 作者の指定した時間・タイムライン・動画・印刷は変わりません。

4. 台本に発表者向けのメモを書けます

台本に {note:…} と書くと、発表者ビューにだけ出ます。読み上げ・字幕・動画・印刷には入りません。書き方の誤りは品質チェックが知らせます。

5. パーツライブラリ 2.0(試し。教材ごとに選ぶ)

egatari.json に "componentsCatalogue": "2" と書いた教材は、パーツライブラリ v2.0.0 のパーツで組みます。ほかの教材は今までどおりです。

  • 楽譜(ABC)と数式を、組み立てのときに描いてファイルに入れます。
  • 書き順(m-kakijun)などのデータは、教材が使う字の分だけ入ります。
  • 足りないパーツがある教材は組めません(品質チェックが component-requires-missing で知らせます)。そうしたファイルも開けて、台本・音声・タイミングは直して保存できます。スライドの編集・テーマの切り替え・差し替えはできません。

技術的なこと

  • 形式:Egatari 1.0(Working Draft wd-2026-11-01、規格 0fcc556)。
  • プレーヤー:Egatari Player 1.1.0(minor。kit/player.lock.json)。2.0 のパーツの ctx(ctx.extend)、効果音と消音、発表者ビューからの入力(#110)、録音モードの消音。前の版で作ったファイルは、そのファイルのプレーヤーのまま再生されます。
  • ctx.live:この版では休眠です。poll() はいつも null を返し、ライブの集計はまだ出ません。
  • パーツライブラリ:1.x は 1.13.1 のまま既定。2.x はカタログ v2.0.0(m-timer・m-predict・m-flow・m-quad・m-cycle は 2.0.1)。components2.lock.json。
  • 描画:KaTeX 0.19.1、abcjs 6.7.2(組み立てのときだけ。教材には SVG だけが入る)。
  • チャットの AI への指示:指示の版は 2dcad2a6。
  • Colab:ノートブックは v0.6.3 を取得する(COLAB.ref)。
  • 配布物:サンプルの Egatari ファイルと、編集アプリの凍結した写し editor-site-v0.6.3.tar.gz。写しは /v0.6.3/ で配られ、下の sha256 で照らされる。
  • 全部の変更は CHANGELOG.md(下に同じ節を載せる)。

Egatari Studio v0.6.3

Follows Egatari 1.0 Working Draft wd-2026-11-01.

v0.6.3 lets you record step after step, and adds sound effects in parts and viewer input during a talk. Changes teachers will notice come first.

What changes for teachers

1. Keep recording

Recording mode has a "Keep recording" option (on at first; remembered on this device).

  • When you keep a take with Enter, it is processed and saved, then the next step without audio starts recording.
  • Steps whose audio matches the current script wait. The last step stops.
  • Turn it off to wait at every step.
  • Changing steps plays no audio and no sound effects.
  • Key and trackpad clicks at the start and end of a take are removed, allowing for microphone delay (headsets and the like).

2. Sound effects in parts

Parts can ring bells, chimes and notes.

  • In talk and learn they sound only when you move forward; not on back, jumps or printing. Videos include them.
  • "Mute sound effects" on the toolbar turns them off (remembered on this device). The button appears only in lessons with parts that have sounds.
  • Recording mode is always silent, whatever this setting says.

3. Predictions and timers from the presenter view

In the presenter view's current pane you can enter m-predict counts and change a timer with +1 min / −1 min.

  • The stage shows the same counts and extension, and changes on the stage show in the presenter view.
  • They stay while you move between steps on a slide, and go back to the author's values when you enter the slide from another one or jump to it.
  • −1 min stops when no time is left. Extensions go up to one hour.
  • Authored durations, the timeline, video and print do not change.

4. Presenter notes in the script

Write {note:…} in the script to show a note only in the presenter view. Notes are left out of narration, captions, video and print. The quality check reports malformed notes.

5. Components 2.0 (preview; chosen per lesson)

A lesson whose egatari.json has "componentsCatalogue": "2" is built with the parts of components v2.0.0. Other lessons build as before.

  • Music (ABC) and formulas are drawn at build time and stored in the file.
  • Data such as stroke order (m-kakijun) is included only for the characters the lesson uses.
  • A lesson with a missing part cannot be built (the quality check reports component-requires-missing). Such files still open; you can edit and save the script, audio and timing, but not the slides, theme or replacement.

Technical notes

  • Format: Egatari 1.0 (Working Draft wd-2026-11-01, spec 0fcc556).
  • Player: Egatari Player 1.1.0 (minor; kit/player.lock.json): the 2.0 parts' ctx (ctx.extend), sound effects and mute, viewer input from the presenter view (#110), and silence in recording mode. Files from earlier versions keep their own player.
  • ctx.live: dormant in this release. poll() always returns null; no live counts are shown yet.
  • Components: 1.x stays at 1.13.1 as the default. 2.x uses catalogue v2.0.0 (m-timer, m-predict, m-flow, m-quad and m-cycle are 2.0.1); components2.lock.json.
  • Rendering: KaTeX 0.19.1; abcjs 6.7.2 (build time only; lessons carry SVG).
  • Instructions for the chat AI: pack version 2dcad2a6.
  • Colab: the notebook fetches v0.6.3 (COLAB.ref).
  • Assets: the example Egatari files, and editor-site-v0.6.3.tar.gz, a frozen copy of the editor served at /v0.6.3/ and checked against the sha256 below.
  • The full list is in CHANGELOG.md (the same section follows).

CHANGELOG [0.6.3]

[0.6.3] - 2026-11-01

Added

  • Forward viewer counts and timer extensions from the presenter view's current pane to the stage, and mirror stage changes back. Keep input across steps on a slide and reset it only on slide entry or a jump, including a jump to the current slide. Preserve the author's values in the next pane, video and print.
  • Reserve keys inside viewer input parts and fields for those controls; keep digits available for page navigation outside parts. Mouse timer clicks leave Space available to advance. Carry the manifest's viewerInput capability into built players and portable component entries.
  • Support presenter stage directions {note:…} in scripts, shown inline in presenter view and omitted from narration, captions, video, print and audio hashes. The checker reports malformed notes.
  • Add component sound synthesis for bells, chimes and notes, with deterministic PCM rendering and video audio mixing that preserves notes across steps. In talk and learn playback, sound only forward time crossings after a user gesture; preserve note tails on forward step entry and stop them on back, jump or seek. Re-time live events for viewer step extensions.
  • Add a keyboard-accessible “Mute sound effects” toolbar toggle, shown when a component declares sounds or implements events(k), with a saved device preference. Temporarily silence component sounds in editor recording mode without changing that preference. Bundle both sound modules into built lessons and the editor.
  • Components 2.0 lessons can be exported as portable .ega.html files. The index records the parts actually written, including libraries in dependency order, exact versions and requirements, embedded part metadata, licenses, build-time renderer records and subset hashes. Unpacking, rebuilding and tier A edits preserve those records.
  • The editor bundle carries the Components 2.0 catalogue and host. Parts use the shared components.lock.json content table and resolveComponent() to find vendor/components/sha256/<hash>/; existing 1.x defaults stay unchanged.
  • Quality checks show a part's layout reports as warnings in Japanese and English, with the part's name, its explanation and a suggestion to give it more space or show less content. The editor preview uses the same warning categories.
  • Components 2.0 build.fields now renders ABC scores with pinned abcjs 6.7.2: abcSvg, abcMap, note/beam/measure/arc tags and renderer version/options in the data and portable index. The CLI uses Chromium through a synchronous helper; the editor's build worker requests main-thread rendering over RPC, and exports use the same renderer. Output follows the vendored rendered-markup allow-list, omits abcjs text, and leaves the ABC source with a build warning when rendering is unavailable or fails. abcjs is bundled only for editor rendering, with its MIT notice; lessons carry SVG without the abcjs runtime.
  • Components 2.0 (preview, opt-in per lesson): Studio vendors egatari/components v2.0.0 (tag commit dd4d4f0; m-timer, m-predict, m-flow, m-quad and m-cycle are 2.0.1) next to 1.13.x (components2.lock.json, tools/components2-update.mjs; code shares vendor/components/sha256/ and the content table in components.lock.json). A lesson uses it only when egatari.json has "componentsCatalogue": "2" (or a catalogue version) or the build is given --components-catalogue 2; every other lesson builds with 1.x exactly as before.
  • For a 2.0 lesson the build writes the parts registry (egatariParts, format spec §6.1) and then the parts in dependency order with exact versions, renders the declared tex fields with KaTeX at build time (texHtml, renderers; spec §6.2), and keeps only the characters the lesson uses in subset blocks (e.g. m-kakijun stroke data): the whole slide source including attribute values, the narration, the data passed to parts and the part's glyphs, each declared entry on its own in declared order.
  • Every part's meta is read from its text without running it and must be a static object literal (spec §6.1); an embedded part whose meta is not is reported and left out. A lesson whose parts need two definitions of one element name (two versions of one part, or two differently named parts) is refused with the conflict reported. The registry's status() returns {defined, failed: [{name, version, element?, reason}]} with reason one of meta, factory, missing, dependency, duplicate, element; a second definition of an element name keeps the first.
  • The player passes the navigation and reporting context of spec §8.4 (lang, slides, go, report, visited, alongside mode, preview, slide, instant, entered, reset) and calls layout(ctx) when the window is resized, fonts finish loading, a slide becomes visible or the document becomes visible again. Exceptions in parts are contained by the part's base and again by the player; reports are kept in DECK.componentReports (errors also in DECK.componentErrors).
  • Live step extensions persist across steps on the same slide, reset on slide entry or jumps, and adjust animation clocks and autoplay without changing authored durations, timelines, video or print.
  • Portable theme index entries include optional extends from the child's theme.json, alongside a separate entry for the parent theme.
  • Recording mode has a “Keep recording” option, on by default and remembered on this device. Enter keeps the take and, after processing and saving it, starts recording the next step if its audio is missing or stale. Steps with current audio wait, and the last step stops. Turn the option off to wait at every step. Enter's press and release clicks are removed from both takes; step changes play no audio. Screen readers announce the step while recording continuously.
  • Click removal accounts for reported microphone input latency. Takes started with a key or button remove at least the first 30 ms plus that latency, including when a headset starts capturing after the key is released.

Changed (API)

  • Player components receive ctx.extend(seconds) for per-step viewer timing. DECK.stepExtension(i, k) exposes the accumulated extension; part sounds on the live step are retimed to it.
  • ctx.live exists with a live client but ships dormant in v0.6.3: no live source feeds it yet. poll(id) returns null until the live service sends reveals (backlog #112, outside the pre-GA plan), so parts keep their viewer/author counts. The live client's setPollResult(id, {revealed, counts}) is a future integration point requiring an explicit reveal and at least three answers.

Changed

  • Deduplicate vendored component folders and the editor bundle by content hash, preserving pinned lessons and withdrawn versions byte for byte.
  • KaTeX 0.19.0 → 0.19.1 (bug fixes; the formulas lessons can use are unchanged).
  • Builds and portable exports refuse parts with unavailable exact requirements; source checks report component-requires-missing errors in English and Japanese. Existing files still open with their own player and play the remaining parts. A notice names each missing requirement and asks for updated parts to rebuild. Script, audio and timing can be edited and saved without rebuilding (tier A); slide editing, theme switching and replacement are disabled.
  • Egatari Player 1.1.0 (the bundled player that files carry, player in the index and deck-meta): minor release. It hosts the Components 2.0 parts' context (ctx.extend for viewer time extensions, clamped so no step runs below zero remaining time or past one hour; ctx.live, dormant: poll() returns null and nothing shows live counts yet), plays part sounds in talk and learn with a toolbar mute, takes viewer input from the presenter view (#110), and keeps recording mode silent. Files from earlier versions keep their own player.

Fixed

  • Clamp timer shortening to the elapsed time so that remaining time stays nonnegative. Keep the extension total through step resets, make extend(0) read-only, and retain the one-hour cap without changing authored durations or the timeline.
  • Lessons using only 2.0 parts omit the player's 1.x component base, registration function and public drawing helpers. Lessons using 1.x parts keep them. Layout calls and the following renders receive separate context objects.
  • Merge the 2.0 registry, context, containment, layout and off-screen rendering rules with narration notes, the existing themes and fonts, SVG text overlap checks and content-addressed component storage. Refresh the local specification fixtures used by these checks.
  • Printing, the slide overview and the quality check no longer count as entering a slide (ctx.entered), and returning from them keeps the viewer's input (counts in m-predict, a timer's extension); video frames never enter (spec §8.4).
  • Live and embed follow extension version governance (format spec §9A): higher versions are ignored and preserved through editor saves, exports and pack/unpack. They add no connection or frame destinations to the file policy; neither the bundled Live player nor the Viewer's Live host connects. The Live settings panel leaves unsupported versions untouched, and the checker reports them only as extensionVersion information
  • Optional additions within Live v1 remain usable and are preserved, including members on the extension, its window and activities. Embed v1 keeps optional members and its existing allowed destinations
  • Remove keyboard and trackpad clicks at the start and stop of recording-mode takes before trimming silence and normalizing the level. Takes too short to keep after removing the clicks show a clear message.
  • Shift click cuts by reported input latency and keep a 30 ms head cut plus that latency for key or button starts, including delayed headset capture.

editor-site-v0.6.3.tar.gz sha256: 6b7c094f7dc7cef5c3f3df3eea4f33e387344e6929178b1943c742c3b027d619