Skip to content

CLM v1.9.0

Choose a tag to compare

@github-actions github-actions released this 06 Jun 19:34
· 270 commits to master since this release
f6a4e88

Added

  • The slide authoring tooling now works on C#/C++/Java/TypeScript decks, not
    just Python.
    CLM's build has long been multi-language, but the authoring
    tooling — slides split / unify, sync, voiceover extract / inline,
    assign-ids, normalize, validate, coverage / lang-coverage /
    language-view, deck discovery, and translate / bootstrap — hardcoded the
    Python # comment token and .py extension. The deck's comment token (//
    for the c-family, # for Python) and extension are now threaded through every
    authoring consumer, resolved per file from the extension via
    comment_token_for_path(). The //-family languages (C#, C++, Java,
    TypeScript) get the same split/sync/voiceover authoring workflow Python already
    had, including .de/.en split companions that preserve the deck extension
    (*.de.cs, *.en.cpp). The default everywhere stays #, so Python output
    is byte-identical
    . This completes the multi-language authoring migration whose
    structural prerequisite (the header-line-less title convention) shipped in
    1.8.4. Investigation + validation:
    docs/claude/multi-language-authoring-tooling-investigation.md §10.

Changed

  • sync translate prompts are now language-aware. A code cell in a //-deck
    is translated as that language (e.g. C# is translated as C#, not "runnable
    Python"), and the model is instructed to preserve // comment prefixes. The
    programming language folds into the translation-cache key for non-Python decks,
    so cached Python translations are unaffected.
  • --help text and clm info topics use a language-neutral <ext>
    placeholder
    instead of implying .py-only, and two now-inaccurate
    "Python-only" claims in the info topics were corrected.

Fixed

  • The build no longer silently drops voiceover on //-family decks. The
    host-side voiceover companion merge and the authoring voiceover writers were
    Python-token-only, so a voiceover_*.cs / *.cpp companion was never merged
    into the built notebook. The merge, the companion writers, and extract /
    inline are now token-aware, and the SKIP_OUTPUT globs were broadened so
    voiceover_*.{cs,cpp,java,ts} companions never leak into output.
  • assign-ids / normalize / validate now discover .cs / .cpp / .java
    / .ts decks.
    Deck discovery (rglob + is_slides_file) and validate
    kind-inference were Python-extension-only; the //-family decks are now found
    and dispatched.
  • Comment-prefix stripping removes the literal prefix, not a character set.
    _strip_comment_prefix previously used lstrip("// "), which strips any
    leading / or space — turning // /usr/bin into usr/bin and collapsing a C#
    /// doc comment. It now strips the exact // prefix once.