1.4.2 is a regular patch release. Its main addition is course-level undo: one undo/redo line per course that covers manual edits, page add/delete/reorder, narration, titles and agent runs, with buttons in the workbench header and Cmd/Ctrl+Z. It also stops a Director from retrying a failing child agent without end (the 1.4.0 known issue #2122), keeps Pro edits from leaving an interactive page empty, lets ALLOW_LOCAL_NETWORKS cover TUN/fake-ip proxies, and carries a batch of PBL v3 fixes plus Java application previews. There are no schema or migration changes over 1.4.1. Read Behavior Changes before upgrading: sandboxes are no longer limited to one role, and ASSET_COLLECTION_GRACE_MS must stay at 45 minutes or more.
Behavior Changes
- Sandbox: once a deployment enables sandboxes, any owner it admits may use them, including anonymous and shared-team owners; the
sandbox:userole and the single-user requirement are gone, andSANDBOX_FORBIDDENis no longer returned. Model calls were never gated by identity either. Each owner still reaches only its own sandboxes, files, previews and checkpoints. On an anonymous public deployment this lets any visitor start billable sandboxes up tomaxActivePerOwnerandmaxActive: protect it withACCESS_CODEor your own sign-in, keep the caps and lifetime low, and set a budget at the sandbox provider. See SECURITY.md. #2191 - Network:
ALLOW_LOCAL_NETWORKS=truenow also allows198.18.0.0/15, the range TUN/fake-ip proxies (Clash, Surge, Shadowrocket and similar) answer DNS with for public hostnames, so operator-configured TTS, image and other providers work behind such a proxy. It applies only to that block and only to operator-configured endpoints; client-supplied endpoints and the other reserved ranges stay refused. The refusal now names the proxy and suggests excluding the provider's domain from fake-ip, which remains the preferred fix. #2186 (by @hackdion) - Storage:
ASSET_COLLECTION_GRACE_MSbelow 45 minutes (2700000) is unsupported, because undo can restore a reference to media removed up to 45 minutes earlier. The default (one hour) is unaffected. #2159
Features
- Editor: course-level undo and redo. Each open course keeps one in-memory history of up to 100 steps that survives page, mode and course-tab switches and clears on reload. It covers slide and quiz edits (a burst of typing is one step), narration, page titles, page add, duplicate, delete and reorder, and agent changes (one run is one step). Buttons sit in the workbench header and the standalone command bar on every scene type, with Cmd/Ctrl+Z and Cmd/Ctrl+Shift+Z. The workbench had no undo since 1.0.0. #2159
- PBL v3: Java packages can run application previews. The declared sources are compiled with
javacand the declared main class is launched through the existing preview lifecycle; packages that need it declarepbl-v3-java-application@1, so an older host rejects them explicitly. #2188 (by @Irisdai517) - PBL v3: course packages can give a choice option a
previewLabelfor the application preview; the decision drawer keeps the shortlabel, which stays the fallback. #2201 (by @Irisdai517)
Bug Fixes
- Classroom: a Director no longer retries a teacher or assistant that keeps failing. A failed, timed-out or empty child call now comes back to the Director as a clear failure, after which it may call another agent or hand the turn back to the learner. The learner sees a fixed, translated notice ("The teacher didn't respond" when nothing visible came through, a one-time "couldn't finish" toast when part of the turn did) instead of a stream error or model-written text. No server-side retry cap is added; forced-failure runs on three models ended every turn this way. #2144 (by @LING-6150, with @bhushan4work)
- Agent:
patch_stagerefuses to replace an existing interactive page's HTML with an empty value, a standalone placeholder or a bare DOCTYPE, and leaves the page as it was. An agent that cleared a page and meant to rebuild it over later calls could leave it broken if the run stopped in between; a placeholder filled within the same call is still allowed. #2194 (by @yipwingtim) - Narration: with a VoxCPM TTS slot, narration generated by the agent's
generate_ttsno longer fails on every line when the teacher has no bound voice. The auto voice now gets the narrating teacher's voice design, persona, or role and name, as the browser path already did. #2197 - Models: an explicit thinking on/off setting is no longer dropped for models without a built-in thinking entry, such as a self-hosted Qwen3-family model behind an OpenAI-compatible provider. It is sent as
chat_template_kwargs.enable_thinking, so these models stop writing their reasoning into structured output and generated HTML. #2190 - Playback: the laser pointer lands where the editor shows it, in both the legacy playback canvas and
@openmaic/renderer, instead of drifting down and to the right or toward the slide center.@openmaic/renderer0.2.1. #2213 - Interactive pages: the page writer now receives the widget outline as written. Variables given as objects (name, range, unit) read as
angle (0–90, deg)instead of[object Object], with range constraints such asstepkept, the design idea is passed on instead of left empty, and outline fields with no slot of their own, such as controls or readouts, reach the prompt as additional design requirements.@openmaic/generation0.3.30; range constraints kept in 0.3.31. #2209 #2210 - Interactive pages: a hosted library named with a version that does not exist on the hosted release line, such as
@tailwindcss/browser@4.11.18for 4.1.18, now loads the hosted build instead of failing with a 404 and leaving the page unstyled or broken. This applies to both deployment-hosted/vendor/interactive/paths and public CDN URLs, including versions above the hosted one, at render time and in HTML/ZIP export. Unknown packages and other major versions (or other 0.x minors for pre-1.0 libraries) are left as written.@openmaic/generation0.3.30. #2209 - PBL v3: ordinary coding and review turns stay within the request budget. Large protected files are returned in excerpts of at most 8 KiB with line ranges and a continuation offset, and course references are sent once in the system prompt instead of in every section result. #2204 (by @Irisdai517)
- PBL v3: learning reports and share images show what the learner built: completed milestone titles and goals, each milestone's decision next to its test and quiz results, and course-authored result cards. Decisions, rationales and AI findings stay in the private report. #2205 (by @Irisdai517)
- PBL v3: the application preview shows only the current milestone's submitted choices. #2201 (by @Irisdai517)
- PBL v3: after a recap that leads to another milestone, the task bar says "Enter next milestone". #2199 (by @Irisdai517)
- PBL v3: quiz options in the task drawer are aligned cards with letter badges, a clear selected state and a visible keyboard focus, on native radio inputs. #2193 (by @Irisdai517)
- PBL v3: entering Tests or Quiz with the conversation at the bottom keeps following the tutor's output. #2196 (by @Irisdai517)
- PBL v3: dragging a workbench divider no longer resizes unrelated columns, IDE file tabs stay on one scrolling row that reveals the active tab, and the expanded assistant can be narrower. #2212 (by @Irisdai517)
Packages
@openmaic/generation0.3.31 (was 0.3.29; 0.3.30 was published along the way) and@openmaic/renderer0.2.1 (was 0.2.0). Other packages are unchanged from 1.4.1.