Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "idstack",
"version": "3.3.0.3",
"version": "3.3.0.4",
"description": "Evidence-based instructional design pipeline. 11 skills backed by peer-reviewed research across 11 domains. Analyze, design, build, review, and export courses with every recommendation citing its evidence tier.",
"author": {
"name": "Philippos Savvides",
Expand Down
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,16 @@
# Changelog

## v3.3.0.4 (2026-08-06)

No user-facing change — this release is test coverage for the two scripts a user runs when something has gone wrong.

### For contributors

- **`bin/idstack-doctor` now has execution coverage.** It had none: smoke-test checked only that the file existed and parsed. Since doctor's entire job is telling a user why `/idstack:<skill>` is missing, every branch it prints is one somebody acts on. 13 cases covering both missing manifests, an unparseable `plugin.json` (doctor parses it as JSON, so a regex-shaped test would miss this), missing `SKILL.md`, absent `claude` as a WARNING rather than a failure, installed-but-disabled, not-installed, all three legacy-conflict shapes, and an unrecognized directory being warned about rather than claimed.
- **`bin/idstack-status --readiness` now has coverage** — roughly 100 lines deciding whether a course is fit to export. Each threshold is probed at its own boundary with the other two held passing (quality 70 vs 69, accessibility 80 vs 79, red-team 0 vs 1 critical), because a fixture failing everything at once still passes when a single constant is wrong. The WCAG Level-A override is asserted in both places it is implemented; removing either one alone leaves the other reporting.
- **One shared assertion helper.** Nine suites each carried their own `PASS`/`FAIL`/`TOTAL` and copy of `check()`, and they had drifted: two spelled it `assert`, and one ran assertions with `>/dev/null 2>&1` and printed a bare `FAIL` — a red CI run that said something broke but not what. `test/test-helper.sh` owns it now. Two suites keep a differently-shaped wrapper, named so they cannot shadow the shared one. smoke-test asserts no suite regrows private counters, and a mutation proves that guard works.
- Test suites 9 → 11 in CI. smoke-test 371 → 393 assertions, mutation suite 14 → 18.

## v3.3.0.3 (2026-08-06)

To get this fix: `cd` into your idstack clone, then `git pull && ./setup`. Restart Claude Code afterward — plugins load at session start.
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.3.0.3
3.3.0.4
4 changes: 2 additions & 2 deletions docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -926,7 +926,7 @@
<span class="dot" aria-hidden="true"></span>
<span>MIT</span>
<span class="dot" aria-hidden="true"></span>
<span>v3.3.0.3 — Course memory fixed</span>
<span>v3.3.0.4 — Course memory fixed</span>
</p>
<h1 id="hero-title">Evidence-based instructional design, transparently cited.</h1>
<p class="lede">108 peer-reviewed studies across 11 research domains. Every recommendation tagged with its evidence tier — <span class="tier tier-1">T1</span> meta-analyses and RCTs through <span class="tier tier-5">T5</span> expert opinion. Runs in Claude Code, OpenAI Codex CLI, and (soon) Gemini.</p>
Expand Down Expand Up @@ -1176,7 +1176,7 @@ <h2 id="whatsnew-title">v3.3.0.0 — Course memory that actually remembers.</h2>
</header>

<article class="release-card">
<p class="release-meta">August 4, 2026 · v3.3.0.0 · patched through v3.3.0.3</p>
<p class="release-meta">August 4, 2026 · v3.3.0.0 · patched through v3.3.0.4</p>
<h3>Welcome-back messages work on stock macOS now.</h3>
<p>On any Python older than 3.12 — including the 3.9 that macOS ships — the session-memory code inside every skill hit a silent syntax error. No welcome-back summary, no quality-score trend, no suggested next step. Fixed, and now exercised on Python 3.9 in CI so it stays fixed.</p>
<p>Also in this release: <code>/idstack:pipeline</code> invokes its child skills correctly in Claude Code, skills notice previous runs again ("update the results or start fresh?"), imported courses get a proper next-step suggestion, and a course name with an apostrophe no longer blanks the status dashboard. To update: <code>cd</code> into your idstack clone, then <code>git pull &amp;&amp; ./setup</code>.</p>
Expand Down
Loading