Skip to content

Commit 39460cd

Browse files
authored
Merge pull request #59 from savvides/release/v3.3.0.2
v3.3.0.2 — apostrophe search returned wrong results
2 parents e85ac78 + a38f41e commit 39460cd

4 files changed

Lines changed: 20 additions & 5 deletions

File tree

.claude-plugin/plugin.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "idstack",
3-
"version": "3.3.0.1",
3+
"version": "3.3.0.2",
44
"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.",
55
"author": {
66
"name": "Philippos Savvides",

CHANGELOG.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,19 @@
11
# Changelog
22

3+
## v3.3.0.2 (2026-08-06)
4+
5+
To get these fixes: `cd` into your idstack clone, then `git pull && ./setup`. Restart Claude Code afterward — plugins load at session start.
6+
7+
### Fixed — learnings search returned wrong results for apostrophes
8+
9+
- **Searching your learnings for a term with an apostrophe returned the wrong answer, silently.** `bin/idstack-learnings-search` spliced `$SOURCES`, `$TYPE`, `$KEYWORD` and `$LIMIT` straight into Python source. A search for `Bloom's` or `learner's` made that source a SyntaxError, `2>/dev/null` swallowed it, and the script fell through to a `grep` fallback that has no `--type` filter — so it answered with a record of the wrong type rather than failing. In a tool for instructional designers, those are ordinary search terms. The values now travel as `sys.argv` arguments, and a non-numeric `--limit` falls back to 3 instead of reaching `tail -"abc"`. This is the same defect class v3.3.0.0 fixed in `bin/idstack-status`; that pass missed this file. Thanks to the Jules bot run that flagged it (#33).
10+
- **A malformed payload could corrupt the manifest.** `bin/idstack-manifest-merge` validated that the *manifest* root was a JSON object but never checked the *payload* root, so a bare JSON array merged in cleanly and surfaced much later as `AttributeError: 'list' object has no attribute 'get'` inside `bin/idstack-status --readiness`. It now rejects a non-object payload with exit 1 (#48).
11+
12+
### For contributors
13+
14+
- `test/test-manifest-merge.sh` covers non-object payload roots (list and string): 21 → 23 assertions.
15+
- Closed 15 stale bot PRs from May/June that the v3.3.0.0 audit had already superseded, that duplicated a better sibling, or that were incorrect (deleting live migration code, converting a clean exit into a traceback, a benchmark that does not reproduce, and one whose pty assertion deadlocks `smoke-test.sh` under CI).
16+
317
## v3.3.0.1 (2026-08-05)
418

519
To get this fix: `cd` into your idstack clone, then `git pull && ./setup`. Restart Claude Code afterward — plugins load at session start.

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
3.3.0.1
1+
3.3.0.2

docs/index.html

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
"operatingSystem": "macOS, Linux, Windows",
4545
"softwareVersion": "3.3.0",
4646
"datePublished": "2026-04-20",
47-
"dateModified": "2026-08-05",
47+
"dateModified": "2026-08-06",
4848
"offers": {
4949
"@type": "Offer",
5050
"price": "0",
@@ -926,7 +926,7 @@
926926
<span class="dot" aria-hidden="true"></span>
927927
<span>MIT</span>
928928
<span class="dot" aria-hidden="true"></span>
929-
<span>v3.3.0.1 — Course memory fixed</span>
929+
<span>v3.3.0.2 — Course memory fixed</span>
930930
</p>
931931
<h1 id="hero-title">Evidence-based instructional design, transparently cited.</h1>
932932
<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>
@@ -1176,11 +1176,12 @@ <h2 id="whatsnew-title">v3.3.0.0 — Course memory that actually remembers.</h2>
11761176
</header>
11771177

11781178
<article class="release-card">
1179-
<p class="release-meta">August 4, 2026 · v3.3.0.0 · patched by v3.3.0.1</p>
1179+
<p class="release-meta">August 4, 2026 · v3.3.0.0 · patched by v3.3.0.2</p>
11801180
<h3>Welcome-back messages work on stock macOS now.</h3>
11811181
<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>
11821182
<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>
11831183
<p>Patched in v3.3.0.1 (August 5): skills no longer point you at commands that don't exist. Welcome-back and next-step messages now name the runnable <code>/idstack:&lt;skill&gt;</code> form.</p>
1184+
<p>Patched in v3.3.0.2 (August 6): searching your learnings for a term with an apostrophe — <code>Bloom's</code>, <code>learner's</code> — returned a wrong-typed result instead of the right one. Fixed.</p>
11841185
<p><a href="https://github.com/savvides/idstack/releases" rel="noopener">→ All releases on GitHub</a></p>
11851186
</article>
11861187

0 commit comments

Comments
 (0)