Releases: redmodd/tessera
tessera-learn@0.2.2
Patch Changes
- 663357a:
tessera a11y/tessera checknow auto-install Chromium for Playwright on first use instead of failing with a manual instruction. - fc41b00: a11y audit now reports which element triggered each violation:
a11y-report.jsonrecords the selector, HTML, and axe's failure summary per node, and the console output lists the offending selector and failure summary. - ba866d1: Rewrite the course authoring guide (
AGENTS.md) into a procedural, LLM-facing instruction set — converting prose to rules/tables and trimming runtime-internal reference that authors never write. - 701a18d: Internal refactor with no author-facing changes: the four question widgets now share a
QuestionShellcomponent for their standalone-vs-quiz render, and the LMS adapter labels and cmi5 context builder were de-duplicated. - 7978096: A course directory under
courses/that has apages/folder but is missing itscourse.config.jsis now reported as skipped when listing the workspace's courses, instead of being silently dropped.
create-tessera@0.2.2
Patch Changes
- 455a7d4: Scaffolded workspaces now include a human-facing
README.mdand a "Project notes" section inAGENTS.mdwhere users add their own context for the agent.
tessera-learn@0.2.1
Patch Changes
- 1ddd286:
tessera a11ynow audits every page of a course that uses a customlayout.svelte, instead of silently scanning only the entry page and reporting a pass. A page that fails to load at runtime is flagged in the report and fails the audit, rather than being scanned as an accessible error screen. - eac739d: Scaffolded root scripts now pass through to the CLI (
tessera dev) instead of hardcoding the seed course.pnpm dev <course>runs the course you name, and a barepnpm devlists the available courses rather than silently running the seed.
tessera-learn@0.2.0
Minor Changes
-
a60b5bb: Workspaces: one project, many courses.
npm create tesseranow scaffolds a workspace — a single package that holds many courses undercourses/<name>/, sharing onenode_modulesand ashared/design system imported as$shared(resolved in dev, bundled into each export). Every course still exports independently to its own SCORM 1.2 / SCORM 2004 4e / cmi5 / web package.tessera new <name>stamps a new course;tessera duplicate <source> <new>copies an existing one verbatim (config and title included).dev/export/validate/a11y/checktake an optional course name (tessera dev <name>), or run bare from inside a course folder; a bare command at the workspace root lists the available courses instead of guessing.
Breaking: the standalone single-course layout is no longer scaffolded or supported — the workspace is the only shape going forward. Pre-1.0, so this ships as a
minor(0.x).
Patch Changes
- 5f18964: Correct the
tesseraCLI's invocation hints and docs for a project-local bin, and add ana11yscript to scaffolded projects (pnpm a11y).
create-tessera@0.2.1
Patch Changes
- eac739d: Scaffolded root scripts now pass through to the CLI (
tessera dev) instead of hardcoding the seed course.pnpm dev <course>runs the course you name, and a barepnpm devlists the available courses rather than silently running the seed.
create-tessera@0.2.0
Minor Changes
-
a60b5bb: Workspaces: one project, many courses.
npm create tesseranow scaffolds a workspace — a single package that holds many courses undercourses/<name>/, sharing onenode_modulesand ashared/design system imported as$shared(resolved in dev, bundled into each export). Every course still exports independently to its own SCORM 1.2 / SCORM 2004 4e / cmi5 / web package.tessera new <name>stamps a new course;tessera duplicate <source> <new>copies an existing one verbatim (config and title included).dev/export/validate/a11y/checktake an optional course name (tessera dev <name>), or run bare from inside a course folder; a bare command at the workspace root lists the available courses instead of guessing.
Breaking: the standalone single-course layout is no longer scaffolded or supported — the workspace is the only shape going forward. Pre-1.0, so this ships as a
minor(0.x).
Patch Changes
- 5f18964: Correct the
tesseraCLI's invocation hints and docs for a project-local bin, and add ana11yscript to scaffolded projects (pnpm a11y).
tessera-learn@0.1.0
Minor Changes
-
8ff7039: The
tessera-validateandtessera-a11ybinaries are now onetesseraCLI withvalidate,a11y, andchecksubcommands; new projects are set up for pnpm (runpnpm exec playwright install chromiumonce to enable the browser-backedcheck/a11yaudit). -
09314ec: The
tesseraCLI now owns the build —tessera dev/tessera exportrun Vite programmatically, so scaffolded projects no longer carryvite.config.jsor avitedevDependency (add an optionaltessera.config.jsto customise), and thecreate-tessera upgradecommand is gone (update a course withpnpm add tessera-learn@latest). The authoring guide now ships insidetessera-learnatnode_modules/tessera-learn/AGENTS.md, withCLAUDE.md/AGENTS.mdpointer stubs in scaffolded projects.Migrating a project scaffolded before this release: swap the npm scripts to
tessera dev/tessera export/tessera validate/tessera check, dropviteand@sveltejs/vite-plugin-sveltefromdevDependencies, and deletevite.config.js.
Patch Changes
- df7b48b: Fix flat-shape courses (
.sveltepages directly inside a section directory) rendering no pages: manifest generation and validation now share one page walker. - 9020eeb: The build-time validator now catches cases the old regex scanner skipped — components carrying a
:directive (class:/bind:/transition:) and unparseable Svelte — and no longer false-matches commented-out or string-embedded tags. - Internal: dependency bumps (including Svelte 5.56), test hardening and dedup, runtime refactors, a doc-anchor fix, and CodeQL/CI cleanup — no API or behavior changes.
create-tessera@0.1.0
Minor Changes
-
8ff7039: The
tessera-validateandtessera-a11ybinaries are now onetesseraCLI withvalidate,a11y, andchecksubcommands; new projects are set up for pnpm (runpnpm exec playwright install chromiumonce to enable the browser-backedcheck/a11yaudit). -
09314ec: The
tesseraCLI now owns the build —tessera dev/tessera exportrun Vite programmatically, so scaffolded projects no longer carryvite.config.jsor avitedevDependency (add an optionaltessera.config.jsto customise), and thecreate-tessera upgradecommand is gone (update a course withpnpm add tessera-learn@latest). The authoring guide now ships insidetessera-learnatnode_modules/tessera-learn/AGENTS.md, withCLAUDE.md/AGENTS.mdpointer stubs in scaffolded projects.Migrating a project scaffolded before this release: swap the npm scripts to
tessera dev/tessera export/tessera validate/tessera check, dropviteand@sveltejs/vite-plugin-sveltefromdevDependencies, and deletevite.config.js.
Patch Changes
- df7b48b: Fix flat-shape courses (
.sveltepages directly inside a section directory) rendering no pages: manifest generation and validation now share one page walker. - Internal: dependency bumps (including Svelte 5.56), a doc-anchor fix, and CodeQL/CI cleanup — no API or behavior changes.
tessera-learn@0.0.13
Patch Changes
-
1edf88f: Accessibility checker — a three-tier system for catching a11y issues, plus the component and config changes to support it.
- Components.
Imagenow requires eitheraltor the newdecorativeflag (was silently optional).Video/Audiorequire atitleand accepttracks(rendered as<track>) and atranscriptdisclosure. A new top-levellanguageconfig field (BCP-47, default'en') sets<html lang>. - Static analyzer (build + dev, no new deps). Routes Svelte's
a11y_*compiler warnings through the validation reporter, plus tessera-specific rules for missing alt/title/captions, empty question labels, skipped heading levels, lowprimaryColorcontrast, and malformedlanguagetags. - Runtime auditor. New
tessera-a11ybin runs Playwright + axe-core over a built course, writesa11y-report.json, and exits non-zero above an impact threshold (defaultserious). Playwright and@axe-core/playwrightare optional. - Config. New
a11yblock:level(warn/error),standard(axe ruleset tags), andignore(per-rule escape hatch). - Scaffold. New courses ship
language: 'en'and a reservedaccessibility-checkscript (→tessera-a11y);upgradeadds it to existing projects. - Fix.
$assets/references with a Vite query suffix (?raw,?url) are no longer mis-reported as missing.
- Components.
-
64bc37c: Fix correctness issues surfaced by new static analysis: four unhandled promises in async LMS/runtime work (cmi5 State PUT, the write-queue flush, ZIP finalize, page prefetch) are now explicitly fire-and-forget (behavior unchanged); cmi5 launch-parameter errors attach the underlying error via
cause; and<AccordionItem>derives its element ids from$props.id()instead of a module-level counter. Also adds monorepo type-checking, ESLint, and Prettier (internal tooling). No public API change. -
4e69ce8: Internal: extract
QuizEnginefrom theuseQuizclosure into a standalone, DOM-free class. No public API or behavior change. -
cc638d6: Close build-time validation gaps so authors get a diagnostic instead of silent misbehavior:
quiz.feedbackMode/quiz.retryMode— enum-checked; catches typos that previously fell through to the default.title— warns when missing or empty, errors when non-string.- Question
weight— warns when ignored or coerced; errors on a non-finite value that would make the scoreNaN. - Question
id(SCORM 1.2) — warns when sanitization would rewrite it, errors on a post-sanitization collision. MultipleChoice.optionFeedback— warns when it has more entries thanoptions.scoring.passingScore— warns whencompletion.mode: "quiz"leaves it at the implicit default (70%).branding— warns on a malformedlogo,primaryColor, orfontFamily.- Empty sections — warns when a section contributes no pages.
create-tessera@0.0.13
Patch Changes
-
1edf88f: Accessibility checker — a three-tier system for catching a11y issues, plus the component and config changes to support it.
- Components.
Imagenow requires eitheraltor the newdecorativeflag (was silently optional).Video/Audiorequire atitleand accepttracks(rendered as<track>) and atranscriptdisclosure. A new top-levellanguageconfig field (BCP-47, default'en') sets<html lang>. - Static analyzer (build + dev, no new deps). Routes Svelte's
a11y_*compiler warnings through the validation reporter, plus tessera-specific rules for missing alt/title/captions, empty question labels, skipped heading levels, lowprimaryColorcontrast, and malformedlanguagetags. - Runtime auditor. New
tessera-a11ybin runs Playwright + axe-core over a built course, writesa11y-report.json, and exits non-zero above an impact threshold (defaultserious). Playwright and@axe-core/playwrightare optional. - Config. New
a11yblock:level(warn/error),standard(axe ruleset tags), andignore(per-rule escape hatch). - Scaffold. New courses ship
language: 'en'and a reservedaccessibility-checkscript (→tessera-a11y);upgradeadds it to existing projects. - Fix.
$assets/references with a Vite query suffix (?raw,?url) are no longer mis-reported as missing.
- Components.
-
28cdba8: Pin scaffolded and upgraded
tessera-learnto the exact version create-tessera ships, derived from its own version rather than a hand-maintainedtesseraVersionfield. The two packages now release in lockstep, so the pinned runtime can't drift from what was published. -
d4e0351: Move scaffolder templates from inline strings to real on-disk template directories copied by a token-substituting walker, and make the post-scaffold "Next steps" hint package-manager-aware (npm/pnpm/yarn/bun). Mostly internal, but scaffolded output changes slightly: the bare template's demo question now uses the documented choice pattern (readable ids +
options, so SCORM 1.2 export emits the position indexes SCORM Cloud requires), and the README/AGENTS.md note thatnpmcommands can be swapped for your package manager.