Make this extension a joy to use#18
Conversation
npm test ran the e2e suite, which needs `pi` on PATH and an API key — so the pre-commit hook (npm test + lint) failed for any contributor without a configured key, and "the test command" meant different things in CI vs locally. - npm test now runs the canonical bun unit suite (no key, ~0.5s) - npm run test:e2e / test:eval cover the gated suites - remove test/unit.ts, the stale 18-test predecessor of unit.test.ts (125 tests, the one CI actually runs) - add engines.node >=20 and raise pi peerDependency floors from the meaningless >=0.0.1 to the tested >=0.52.0 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Signed-off-by: Jay Zeng <jayzeng@users.noreply.github.com>
The publish workflow ran `npm ci && npm publish` with no verification, so a broken build or a tag that disagrees with package.json could ship. Add lint + build + unit tests before publish, and assert the pushed v* tag matches package.json version. Point the CI unit job at `npm test` so local, CI, and pre-commit all run the same command. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Signed-off-by: Jay Zeng <jayzeng@users.noreply.github.com>
package.json was 0.3.12 but the README changelog jumped Unreleased -> 0.3.6 -> 0.2.0, with six shipped releases missing and an "Unreleased" block describing already-released work. Backfill an accurate, dated CHANGELOG.md from git history, ship it in the npm tarball, and replace the README's manual `npm publish --access public` instructions with the actual tag-driven flow. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Signed-off-by: Jay Zeng <jayzeng@users.noreply.github.com>
Surfaces what was previously internal-only: memory dir, file inventory, qmd availability, whether the pi-memory collection exists, whether embeddings are ready (bounded probe), and the active env configuration — so users can diagnose search problems in one tool call instead of reasoning about qmd state themselves. Also fix the AGENTS.md lint reference (Biome, not ESLint) and document the new test scripts. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Signed-off-by: Jay Zeng <jayzeng@users.noreply.github.com>
Restructure the README so a reader sees what cross-session memory feels like before install plumbing: a two-session transcript and a raw-markdown peek. Offer the lower-friction `npm install -g @tobilu/qmd` path alongside Bun (and update the in-extension install hint to match). Add a symptom->fix Troubleshooting table, point it at the new memory_status tool, and refresh test commands/levels after the unit.ts removal. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Signed-off-by: Jay Zeng <jayzeng@users.noreply.github.com>
- probeEmbeddings: clear the 4s probe timeout so short-lived pi -p runs exit promptly; document that "ready" means no embeddings warning, not a populated index - publish workflow: require a v* tag ref unconditionally, so manual workflow_dispatch runs also get the tag-matches-version check - changelog: record the peer-dependency floor bump to >=0.52.0 and note the next release should be a minor Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Signed-off-by: Jay Zeng <jayzeng@users.noreply.github.com>
Signed-off-by: Jay Zeng <jayzeng@users.noreply.github.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b65ca43280
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| export function ensureQmdEmbed(): boolean { | ||
| if (getQmdUpdateMode() !== "background") return false; | ||
| if (!qmdAvailable) return false; | ||
| if (embedInFlight) return true; |
There was a problem hiding this comment.
Queue another embed when one is already running
When a memory write's qmd update finishes while an earlier embed is still running, this branch discards the new embed request. This is especially likely during the initial model download: the active process may already have selected its work before the new chunks are indexed, leaving those chunks without vectors until the next session starts. Track a pending request and run another incremental embed after the current callback completes so semantic/deep search sees all in-session writes.
Useful? React with 👍 / 👎.
ensureQmdEmbed() previously dropped requests that arrived while an embed was in flight. If a write's qmd update finished after the in-flight embed had already enumerated its work, that write's chunks could go unembedded until the next session start. Signed-off-by: Jay Zeng <jayzeng@users.noreply.github.com>
Issue #, if available:
Description of changes:
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.