发布

  • fix(dsl): migrate away legacy rotate/height fields on line elements (#1261)

    frostbyte_neo 发布于 2026-08-28 06:06:03 +00:00

    • fix(dsl): strip legacy rotate/height from line elements on migration and import (#1260)

    • fix(dsl): cover whiteboard slides in the legacy line strip, drop redundant import wiring

    Round-1 review findings (#1261): the strip only walked
    scenes[].content.canvas.elements, leaving the same bug class latent on
    interactive whiteboard slides (scenes[
    ].whiteboards[*].elements); and the
    import-site sanitize was redundant because the document store already runs
    the ladder on save, while its comment misdescribed that mechanism. Extend
    the strip to whiteboards and let the ladder alone own the cleanup.

    • fix(dsl): cover stage-level whiteboard boards and row envelopes in the legacy line strip

    Round-2 terminal audit findings (#1261): the strip walked only the
    document envelope's scene surfaces, so dirty line elements under
    stage.whiteboard (the stage-level explainer boards) and under bare
    Scene/Stage row envelopes passed through while the runner stamped the
    document current. Walk every line-element surface of every migratable
    envelope: scene canvas, scene whiteboards, and stage whiteboard, at
    document, Scene-row, and Stage-row roots.

    • fix(dsl): gate the canvas strip on the slide discriminant; run the ladder on legacy-only exports

    Round-3 terminal audit findings (#1261): the canvas walk fired on any
    canvas-shaped content regardless of the scene kind, so a non-slide scene
    carrying a canvas-shaped app extension would have fields deleted from it
    — gate on content.type ('slide' or absent, the dirty-line epoch predates
    schema enforcement). And the lock-free exportDatabase fallback
    hand-stamped DSL_VERSION onto a payload the ladder never walked, so a
    backup could read as current on restore and permanently skip the
    migration — build the export unstamped and let migrate stamp it.

    • fix(agent-runtime): bring stale-stamped documents current before incremental scene writes

    Round-4 audit finding (#1261): putScene rejects documents whose stored
    DSL stamp is older than the current one, and the aggregate read migrates
    in memory only, so the first server-side tool write into a course stored
    at an older version (every pre-bump course, including previously
    imported ones) failed with a version error. Route the server tools'
    incremental scene writes through a wrapper whose not-current fallback
    reloads the migrated aggregate and full-saves it with the scene spliced
    in — the server-side counterpart of the app autosave's
    catch-and-full-save.

    • style: prettier

    • docs(agent-runtime): record the reviewed concurrency window on the stale-stamp fallback

    下载附件