Skip to content

Correct project names, fix Cursor listing OOM, bundle project config, version the extension - #5

Merged
kv4u merged 5 commits into
mainfrom
fix/remaining-issues
Oct 13, 2026
Merged

kv4u merged 5 commits into
mainfrom
fix/remaining-issues

Conversation

@kv4u

@kv4u kv4u commented Oct 9, 2026

Copy link
Copy Markdown
Owner

Summary

Fixes for the items left over after v1.0.1.

Project names for hyphenated folders

Cursor (c-Work-my-app) and Claude Code (C--Work-my-app) store projects under lossy folder names: /, -, . and spaces all encode to -. Guessing therefore produced wrong names (app, Personal-Flutter-HexoraX-ca), and imports could land in the wrong sibling folder. The new EncodedPathResolver walks the file system and matches each directory's encoded name, so names that exist on this machine are exact (e.g. HexoraX.ca). It falls back to the old guess only when the folder isn't on this machine.

list-sessions --tool=cursor ran out of memory

Found while checking real data: listing parsed every full Cursor transcript and exhausted PHP's default 128 MB limit (Allowed memory size … exhausted). Cursor now has a streaming metadata path that counts turns and keeps only the first message, and title extraction looks at no more than the first 4 KB. Listing 37 real sessions now works at the default limit, with real turn counts.

Project config in bundles (--with-config)

config.json was reserved in the bundle format but never written or read.

  • export --with-config bundles CLAUDE.md, AGENTS.md, .cursorrules and .mcp.json from the project. With --encrypt, they're encrypted along with the sessions.
  • import --with-config restores them into --project and keeps existing files unless --overwrite-config is given.
  • Opt-in on both sides, because these files can contain private instructions.

Extension version

Set to 1.0.1. The release workflow now stamps the tag version into the VSIX, as it already does for the desktop app.

Investigated, no change

The desktop app's bundled php.ini uses a relative extension_dir. It turns out PHP on Windows resolves it correctly from any working directory (tested), so I left it unchanged.

Test plan

  • cd movez && php vendor/bin/pest: 100 passed, 1 skipped. New tests cover the resolver (hyphens, decoy folders, spaces and dots, missing paths) and the encrypted config round-trip, including keeping and overwriting existing files.
  • Real-machine check: list-sessions --tool=cursor --json at the default memory limit returns 37 sessions with resolved project names.
  • cd vscode-extension && npm install --package-lock-only: lockfile is in sync.

🤖 Generated with Claude Code

kv4u and others added 5 commits October 9, 2026 17:32
- Cursor and Claude Code store projects under lossy encoded folder names
  ("c-Work-my-app"), so hyphenated folders were guessed wrong ("app",
  "Personal-Flutter-…"). EncodedPathResolver now walks the file system and
  matches encoded directory names, falling back to the old guess only when
  the project isn't on this machine. Writers place imported sessions into
  the correct sibling folder as a result.
- `list-sessions --tool=cursor` exhausted PHP's default 128 MB limit:
  metadata listing parsed every full transcript. Cursor now has a
  streaming metadata path (counts turns, keeps only the first message) and
  bounds title extraction to the first 4 KB.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The bundle format reserved config.json but nothing wrote or read it.

- `export --with-config` adds CLAUDE.md, AGENTS.md, .cursorrules and
  .mcp.json from the project; encrypted with the sessions under --encrypt
- `import --with-config` restores them into --project, keeping existing
  files unless --overwrite-config
- Opt-in on both sides: these files can contain private instructions

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The extension stayed at 0.1.0 while the release was v1.0.1. Set it to
1.0.1 and stamp the tag version into it at release time, as the desktop
app already does.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
phpunit.xml set DB_DATABASE=:memory: as a plain <env>, which loses to an
existing environment variable, and Laravel reads $_SERVER before $_ENV
anyway. With DB_DATABASE set in the shell (as on a server), `php artisan
test` ran RefreshDatabase against the real database and emptied it —
reproduced locally against a seeded SQLite file.

Force the test env and add matching <server> entries so the tests always
use the in-memory database.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kv4u
kv4u merged commit 0d1fa74 into main Oct 13, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant