Skip to content

CLM v1.8.3

Choose a tag to compare

@github-actions github-actions released this 06 Jun 01:42
· 293 commits to master since this release
dfc8abd

Fixed

  • A title-slide greeting voiceover now survives clm voiceover extract (#242).
    The title slide is generated by the j2 header / header_de / header_en
    macro and carries no slide_id of its own; the greeting voiceover attaches by
    the slide_id="title" convention. Previously extract wrote the companion
    cell with no for_slide (its backward owner-walk skipped the j2 macro), so the
    build merge dropped the narration — a hard error under --fail-on-error/CI —
    and clm voiceover inline stranded it. Both sides now recognize the title
    macro (reusing is_title_macro_cell / TITLE_SLIDE_ID): extract stamps
    for_slide="title", and the build merge / inline anchor a for_slide="title"
    (or legacy slide_id="title" with no for_slide) voiceover to the title slide,
    matching the inline-build output byte-for-byte. Companions extracted before the
    fix merge without a re-extract. Adding slide_id to the macros (the issue's
    alternative) is neither necessary nor sufficient — the merge runs before j2
    expansion and the worker strips slide_id/for_slide from output.
  • load_worker_config no longer poisons the global config singleton (#223).
    Applying CLI --workers overrides mutated get_config().worker_management
    a process-global singleton — in place, so a build/test that resolved to Docker
    mode permanently flipped default_execution_mode to "docker" for every later
    call in the process; a subsequent override-free build then built a Docker
    executor with no image and raised ValueError: Docker execution mode requires 'image'. Order-dependent under pytest-xdist, so it surfaced as a rare CI
    flake. The loader now deep-copies (model_copy(deep=True)) before applying
    overrides, so each call is self-contained and the shared default can't be
    poisoned.

Added

  • clm slides sync now reconciles a committed mismatched-id twin instead of
    only refusing it (#228, strategy B).
    When a committed split pair shares a
    slide_id but gave one slide a different id on each half (e.g. a per-half
    assign-ids), sync previously refused the ambiguous both-directions bucket to
    avoid silently doubling the slide (#226). With a correspondence verifier
    available (the default --verify-cold-pairs when $OPENROUTER_API_KEY /
    $OPENAI_API_KEY is set), sync now cross-pairs the suspects by content
    correspondence (the cheap Haiku verifier) and, for a confirmed twin, rewrites
    the divergent id so both halves share one (EN-authority) — no manual fix needed.
    Leftover suspects with no confirmed twin use a direction-guarded hybrid:
    single-direction → cross-add the genuinely-distinct slide; both-direction →
    defer. No provider or an unconfirmed pair → refuse, exactly as before (never
    bakes a wrong id). Surfaced as a reconcile proposal in the plan / --json /
    dry-run.