Commit Graph

310 Commits

Author SHA1 Message Date
xiaoju b2430172a2 docs: add changeset skip-rebuild rule to CLAUDE.md
CI / check (pull_request) Successful in 1m47s
No need to re-run build/test after adding a changeset markdown file.

小橘 🍊(NEKO Team)
2026-06-07 00:32:10 +00:00
xiaomo dd5cb49168 Merge pull request 'perf: implement lazy loading in FsStore (#85)' (#89) from fix/85-fsstore-lazy-loading into main
CI / check (push) Successful in 1m46s
Merge PR #89: perf: implement lazy loading in FsStore (#85)
2026-06-07 00:31:31 +00:00
xiaoju 48c099ba03 perf: implement lazy loading in FsStore
CI / check (pull_request) Successful in 1m40s
FsStore previously CBOR-decoded all .bin nodes into memory at startup,
making cold-open O(n) in time and memory. Now it scans only filenames
into a Set<Hash> at init and reads/decodes nodes from disk on first
get(). has() and listAll() use the filename set; put() write-throughs
to cache; delete() clears cache and disk. Index/meta migration still
performs a one-time scan when _index/ is missing.

Adds 12 new tests (L1-L12) covering startup-no-decode, lazy get,
filename-based has/listAll, write-through put, delete cleanup, list
operations, and migration/bootstrap regression. All existing tests
pass unchanged.

Fixes #85
2026-06-07 00:25:39 +00:00
xiaomo 22ec210813 Merge pull request 'docs: add efficiency guidelines to CLAUDE.md' (#88) from chore/claude-md-efficiency into main
CI / check (push) Successful in 1m42s
Merge PR #88: docs: add efficiency guidelines to CLAUDE.md
2026-06-06 23:51:12 +00:00
xiaoju 578973fd62 docs: add efficiency guidelines to CLAUDE.md
CI / check (pull_request) Successful in 1m44s
Reduce Claude Code agent overhead: skip malware comments on trusted code,
stop re-verifying after tests pass.

小橘 🍊(NEKO Team)
2026-06-06 23:47:12 +00:00
xiaomo 3e93794c59 Merge pull request 'fix: move CAS node files into nodes/ subdirectory (#84)' (#87) from fix/84-nodes-subdirectory into main
CI / check (push) Successful in 1m37s
Merge PR #87: fix: move CAS node files into nodes/ subdirectory (#84)
2026-06-06 23:46:07 +00:00
xiaoju 3b089c2291 fix: move CAS node files into nodes/ subdirectory
CI / check (pull_request) Successful in 1m45s
Restructure the FsStore on-disk layout so that all `<HASH>.bin` node
files live under a `nodes/` subdirectory of the store root, instead of
being interleaved with metadata directories (`_index/`, `_store.db`,
`_meta`) at the top level.

Pre-existing flat-layout stores are auto-migrated on first open: any
`.bin` files found in the store root are renamed (not copied) into
`nodes/`. Migration is idempotent and safe to re-run.

Fixes #84
2026-06-06 23:37:19 +00:00
xiaoju 5414332b7f Merge pull request 'chore: sync solve-issue workflow from uwf canonical version' (#86) from chore/sync-solve-issue-workflow into main
CI / check (push) Successful in 1m48s
2026-06-06 22:45:08 +00:00
xiaoju 146e7f4b69 chore: add changeset + doc update requirements to developer/reviewer
CI / check (pull_request) Successful in 1m49s
Developer: steps 12-13 — add changeset with correct bump type, update docs
Reviewer: checks 6-7 — verify changeset exists, docs updated for user-facing changes

小橘 🍊
2026-06-06 22:43:01 +00:00
xiaoju 071864c339 chore: sync solve-issue workflow from uwf canonical version
CI / check (pull_request) Successful in 1m46s
- Mode A/B/C logic for fresh issue / existing PR / tester bounce-back
- bun→pnpm references
- repoRemote frontmatter field
- Simplified oneOf schema (no redundant 'type: object')

小橘 🍊
2026-06-06 22:35:44 +00:00
xingyue 24bd04b884 Merge pull request 'chore: add changeset for prompt bootstrap rename' (#82) from chore/changeset-bootstrap into main
CI / check (push) Successful in 1m42s
2026-06-06 21:58:26 +00:00
xiaomo 7ae13289a9 chore: add changeset for prompt setup→bootstrap rename
CI / check (pull_request) Successful in 1m47s
2026-06-06 21:43:26 +00:00
xiaoju 0e71f4d88d Merge pull request 'chore: rename prompt setup→bootstrap, programmatic generation, bun→pnpm cleanup' (#81) from chore/80-bootstrap-cleanup into main
CI / check (push) Successful in 3m7s
2026-06-06 14:34:37 +00:00
xiaoju 7871db748f feat: add 'ocas prompt list' subcommand
CI / check (pull_request) Successful in 4m55s
Implements the missing 'list' case referenced in bootstrap output.

小橘 🍊
2026-06-06 14:29:22 +00:00
xiaoju e3c84c5794 chore: rename prompt setup→bootstrap, programmatic generation, bun→pnpm cleanup
CI / check (pull_request) Successful in 2m59s
Part 1: Rename 'ocas prompt setup' → 'ocas prompt bootstrap' in CLI
Part 2: Replace static setup.md with cmdPromptBootstrap() function
  - CLI_VERSION injected dynamically (same pattern as uwf)
  - Covers fresh install + upgrade scenarios
  - Includes preflight checks, skill install, e2e verification
Part 3: Clean up bun references in workflow YAML files
  - .workflows/retrospect-workflow.yaml: bun→pnpm
  - .workflows/solve-issue.yaml: bun→pnpm
  - .workflows/e2e-check.yaml: archived to legacy-packages/

Fixes #80
小橘 🍊
2026-06-06 14:03:24 +00:00
xiaomo 693feb19e2 Merge pull request 'chore: update workflow $START from _ to new/resume' (#79) from chore/uwf-start-new-resume into main
CI / check (push) Successful in 2m3s
2026-06-05 10:09:05 +00:00
xiaoju 050fc8eee4 chore: update workflow $START from _ to new/resume
CI / check (pull_request) Successful in 5m22s
Align with united-workforce#101 — $START now requires explicit
'new' and 'resume' status keys instead of magic '_'.

Refs shazhou/united-workforce#101
2026-06-05 09:57:24 +00:00
xiaoju 7c145597d5 Merge pull request 'fix: add allowBuilds for pnpm 11 CI' (#78) from fix/ci-allow-builds into main
CI / check (push) Successful in 1m50s
2026-06-04 10:46:07 +00:00
xiaoju 73db7b9cac fix: add allowBuilds for pnpm 11 CI
CI / check (pull_request) Successful in 2m10s
2026-06-04 10:39:12 +00:00
xiaoju 02a1c18ac5 Merge pull request 'fix: use corepack for pnpm in CI' (#77) from fix/ci-pnpm-setup into main
CI / check (push) Failing after 1m50s
2026-06-04 10:32:59 +00:00
xiaoju 1bd4edbdd1 fix: disable pnpm minimumReleaseAge in CI
CI / check (pull_request) Failing after 1m21s
pnpm 11 defaults minimumReleaseAge to 1440 min. Set to 0 in
pnpm-workspace.yaml for our own packages.
2026-06-04 10:13:46 +00:00
xiaoju 49f096b18f fix: use corepack for pnpm in CI
CI / check (pull_request) Failing after 32s
Drop pnpm/action-setup (requires explicit version), use corepack enable instead.
Also align Node to 22 (consistent with uwf).

Closes #76
2026-06-04 10:07:28 +00:00
xiaomo 0dfc26fcfe Merge pull request 'chore: add Gitea CI workflow' (#76) from chore/add-ci into main
CI / check (push) Failing after 16s
chore: add Gitea CI workflow (#76)
2026-06-04 09:38:05 +00:00
xiaoju 6b9ebd1796 chore: add Gitea CI workflow (build + lint + test)
CI / check (pull_request) Failing after 1m18s
小橘 🍊(NEKO Team)
2026-06-04 09:36:51 +00:00
xiaomo b3879c583a Merge pull request 'chore: use proman test instead of vitest run' (#75) from chore/proman-test-script into main
chore: use proman test instead of vitest run (#75)
2026-06-04 01:57:23 +00:00
xingyue 01d4f0fa14 chore: use proman test instead of vitest run 2026-06-04 09:51:30 +08:00
xiaomo d79d0227fa Merge pull request 'fix: resolve prompt files from package root instead of dist' (#74) from fix/prompt-path into main
fix: resolve prompt files from package root, suppress ExperimentalWarning in tests (#74)
2026-06-04 00:38:14 +00:00
tuanzi e4e4ce0f73 fix: suppress SQLite ExperimentalWarning in edge-cases and schema-validation tests
The local runCli helpers in edge-cases.test.ts (Phase 3/4/7) and raw
execFileSync calls in schema-validation.test.ts (tests 2.1, 2.3) were
missing NODE_NO_WARNINGS=1, causing ExperimentalWarning to leak into
stderr snapshots. Added env override to match what helpers.runCli
already does.
2026-06-04 00:36:38 +00:00
tuanzi 13b12ef50c fix: resolve prompt files from package root instead of dist
prompts/*.md files are not copied to dist/ during tsc build,
causing `ocas prompt setup/usage` to fail with ENOENT.

- Change join(__dirname, "prompts") → join(__dirname, "..", "prompts")
- Add prompts/ to package.json "files" for npm publishing
- Update snapshots (Node.js SQLite ExperimentalWarning + version string)
2026-06-04 00:11:28 +00:00
xiaomo a9d43abf28 release: @ocas/cli@0.3.1 @ocas/cli@0.3.1 2026-06-04 00:01:29 +00:00
xiaomo 6f054f6447 fix(cli): update prompts — bun→pnpm, remove stale --var-db flag 2026-06-03 23:49:11 +00:00
xiaomo 5e9b266ebd docs: add pkg descriptions/keywords/engines, fix core README
Fixes #70, #71, #72, #73
2026-06-03 23:23:48 +00:00
xiaomo c4d9205eb2 docs: update all documentation for node:sqlite, pnpm, proman workflow
- README: bun → pnpm, update API examples, add Node >=22.5.0 requirement
- CLAUDE.md: replace 3-phase release process with proman bump/publish
- Package READMEs: fix package names, update storage/API descriptions
- Cards: update store.md (sqlite), cli.md (db filename, remove --var-db)
- docs/sync-readme.md: update to proman workflow
2026-06-03 23:21:30 +00:00
xiaoju 9d17be8b7b release: v0.3.0 v0.3.0 2026-06-03 23:06:00 +00:00
xiaomo 7e9bd26fec fix: suppress ExperimentalWarning in tests via NODE_NO_WARNINGS env
- Use NODE_NO_WARNINGS=1 in execFileSync env instead of --no-warnings flag
- Remove overly broad process.removeAllListeners('warning') from CLI entry
- Add engines field requiring Node >=22.5.0 (node:sqlite availability)
- Update proman to 0.4.2
2026-06-03 23:02:43 +00:00
xiaomo 3168bf55c3 chore: add changeset for node:sqlite migration 2026-06-03 22:30:15 +00:00
xiaomo 00a536631a refactor: migrate from better-sqlite3 to node:sqlite
- Replace better-sqlite3 with built-in node:sqlite (DatabaseSync)
- Add transaction() helper for manual BEGIN/COMMIT/ROLLBACK
- Suppress ExperimentalWarning in CLI tests with --no-warnings
- Remove better-sqlite3 from dependencies and onlyBuiltDependencies
- No more native addon compilation issues across Node versions
2026-06-03 22:11:44 +00:00
xiaomo f8103e20ce chore: bump @shazhou/proman to 0.4.0, remove link override 2026-06-03 16:30:24 +00:00
xiaomo 5c567dc455 Revert "Merge pull request 'chore: remove redundant vite/vitest devDeps' (#69) from chore/remove-redundant-devdeps into main"
This reverts commit 08a2bddcf0, reversing
changes made to 36ebf42f2f.
2026-06-03 15:15:38 +00:00
xiaomo 08a2bddcf0 Merge pull request 'chore: remove redundant vite/vitest devDeps' (#69) from chore/remove-redundant-devdeps into main 2026-06-03 14:28:35 +00:00
xiaomo 6fc3b9030b chore: remove redundant vite/vitest devDeps (proman bundles them) 2026-06-03 14:25:35 +00:00
xiaoju 36ebf42f2f chore: bump 0.2.2, fix lint, biome format
- Bump all packages to 0.2.2
- Fix noNonNullAssertion in cli/index.ts
- Fix unused imports in fs/sqlite-store.ts
- Biome 2.4.16 migration + format all files
- Update snapshots for version change
v0.2.2
2026-06-03 11:16:16 +00:00
xiaoju f286df91f0 chore: restore workspace:* 2026-06-03 09:43:57 +00:00
xiaoju 8971206a3e Merge release/0.2.1 into main 2026-06-03 09:43:37 +00:00
xiaoju 807c0942e8 release: v0.2.1
- Clean dist: no stale variable-store.js (bun:sqlite reference removed)
- Fix vitest rejects pattern in liquid-render tests
- proman.yaml runtime: bun → node
- Upgrade @shazhou/proman to 0.2.2
v0.2.1
2026-06-03 09:43:27 +00:00
xiaoju 5c0670e69b release: prepare v0.2.1 2026-06-03 09:40:07 +00:00
xiaoju c90efda4dd chore: upgrade @shazhou/proman to 0.2.2 2026-06-03 09:39:59 +00:00
xiaoju 2d4f76330c fix: vitest rejects pattern + runtime config
- Fix 4 liquid-render tests: expect(async()=>{}).rejects → expect(promise).rejects
- proman.yaml: runtime bun → node (matches actual stack)
- package.json: test script uses vitest directly (avoid proman recursion)
- Add changeset for 0.2.1 patch (clean dist)
2026-06-03 09:30:23 +00:00
xiaomo 768ae20a24 Merge pull request 'feat: migrate var/tag store from JSONL to better-sqlite3' (#68) from feat/60-sqlite-var-tag into main
feat: migrate var/tag store from JSONL to better-sqlite3 (#68)
2026-06-03 08:40:45 +00:00
xiaoju 72ba313d12 fix: address review — transactions, LIKE escape, post-filter pagination
Critical fixes:
1. LIKE ESCAPE '\' clause added for namePrefix queries
2. list() limit/offset now applied AFTER tag/label post-filter
3. tag()/untag() wrapped in db.transaction()

Warning fixes:
4. set()/update() wrapped in db.transaction() (txnSetVar)
5. listByTag sort/limit/offset pushed to SQL
6. close() idempotent (double-close guard)
7. JSONL → SQLite migration on first open (vars + tags)
8. History truncation simplified (NOT IN subquery)
9. Removed unnecessary pre-fetch in upsert (ON CONFLICT handles it)

Nits:
10. Database.Database type instead of InstanceType
11. row.name instead of row["name"]
12. DESC index on var_history position
13. key+value composite index on tags
2026-06-03 08:38:44 +00:00