Release notes

1.0.0 — Bilingual teaching platform

New components: agenda/recap, code (output panel, highlighted lines, line numbers), trace (step-by-step execution with variables), compare (common mistake vs better approach), quiz (graded multiple choice without JavaScript), exercise (progressive hints, hidden solution), callout (six styles), figure (embedded images) and divider.

Languages: interface labels follow the lecture’s locale (ar, en, or your own with register_locale); direction follows the locale. English lectures no longer show Arabic interface text.

Themes: a token-driven stylesheet where every color is a --ls-* variable; new paper (light), violet and ruby themes; per-deck tokens= overrides; register_theme for institutional identities; automatic RTL/LTR mirroring with logical properties.

Sharing: student copies without answers (include_answers=False), presentation mode (present=True) with keyboard navigation, fit-to-screen scaling, fullscreen, speaker notes and optional step-by-step reveal; JSON round trip with deck.save() and from_dict(); validate, info, --student and --present in the CLI.

Notebooks: re-running a cell replaces its components in place; embedded fonts are sent once per notebook (about 80% smaller outputs); identical content gives identical HTML.

Subject visuals: math (LaTeX to MathML, with a symbol legend, and $...$ inside any text), array, matrix and confusion_matrix, chart (line, bar, scatter), network, tree, graph, memory (frames, objects and references) and schema (tables, keys and relationships). All are laid out in Python and drawn as HTML or SVG, with no JavaScript.

Programming languages: built-in highlighting for about twenty teaching languages, identical on every machine without Pygments; register_highlighter for more. Code never shows typographic ligatures.

PDF: execution traces print every step; short callouts share the previous page; searchable (vector) PDFs keep their layout at page boundaries and no longer show grey boxes in macOS Preview.

Text: inline `code` and **bold** in plain text; automatic bidi isolation of C++/C# in Arabic; Arabic text never receives letter spacing; Arabic comments inside code stay joined.

Engineering: document model with a component registry and plugin entry points (lecture_studio.components), typed public API (mypy clean), ruff, 84 tests including real-browser PDF checks, visual-parity tooling, CI for Linux/macOS/Windows and Python 3.10–3.13.

Compatibility: the gold design is unchanged (verified element by element); the public Python API, JSON format, CLI and LuxurySlideDeck keep working. HTML class names now use the ls- prefix; see the migration guide.

0.3.0.dev0 — Local PDF preview

Optional offline PDF export for decks, JSON, HTML and saved notebooks, with faithful snapshots or searchable vector output.

0.2.0 — PyPI distribution

  • Public distribution name: jupyter-lecture-studio; matching import jupyter_lecture_studio.

  • English and Arabic documentation, local search and an offline documentation command.

  • Explicit Python and font license notices in the release archives.

0.1.1 — Design parity

Bundled fonts, original palette, cover spacing, code alignment and footer label.

0.1.0 — Initial local library

Course-independent covers, cards, diagrams, activities, notes, tables, themes, JSON loading and HTML export extracted from the original teaching notebook.