Repository navigation
Fix broken build/release, CLI, sync, web, extension and desktop app; rewrite README - #1
Merged
Merged
Conversation
- Rename contextbridge/ to movez/ and the entry script to movez, matching
composer.json bin, box.json, the spec and the release workflow
- export writes real .cbz bundles (optionally encrypted); import, unpack
and package handle encrypted and invalid bundles without crashing
- --project now filters sessions on export, transfer, list and sync:push
- Sync client uses Guzzle (illuminate/http was never installed), sends
{ sessions, count }, handles empty pulls, reads MOVEZ_TOKEN / MOVEZ_SERVER_URL;
sync:pull accepts --from-path/--to-path
- Encryptor no longer creates a key on decrypt and validates the key file
- Reject unsafe session ids / project names before building file paths
- Codex: read and write the dated rollout format; Cline: read per-task
history files; flatten block content in all parsers; skip malformed lines
- Windsurf reports "not supported yet" instead of returning Cursor sessions
- ClaudeCodeWriter: keep POSIX paths, no duplicate desktop registry entries
- Remove Laravel Zero boilerplate, add strict_types, ext-* requirements
- Tests: stop touching the real Cursor DB, test the real ClaudeCodeWriter,
add coverage for sync, encryption, bundles, parsers and commands
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- release.yml: build the PHAR from movez/ (the old `php movez` entry point did not exist), publish it as movez.phar, add a Windows desktop installer job that bundles PHP + the PHAR, and publish all assets in one release - ci.yml: point at movez/, MOVEZ_* env vars, PHP 8.2/8.3 matrix, real extension type check (no continue-on-error), VSIX packaging check, web type check and a desktop app type check - build.bat: fail clearly when box.phar or movez.phar is missing - Electron: stable installer name, Windows-only target, vue-tsc type check - Stop tracking *.tsbuildinfo; ignore extension and web build output Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Sync API now matches the spec ({ sessions, count }); encrypted blobs live
in their own sync_blobs table instead of masquerading as an AiSession,
push/pull events record real session counts
- New `php artisan movez:token <email>` issues API tokens; api_token is
hidden from serialization and seeded tokens are printed once
- Migration wizard returns the exact `movez transfer` command to run
locally instead of claiming a migration was queued when nothing ran;
checks response.ok and shows validation errors
- Dashboard stat cards render (runtime template string needed the
compiler build) via a proper StatCard SFC
- Stop sending raw session_data blobs to pages; safe JSON decoding
- Remove leftover app.js/bootstrap.js/welcome.blade.php, add tsconfig,
vue-tsc type-check and test:e2e scripts, fix ambiguous e2e locators
- strict_types everywhere, Pest-only tests, MoveZ naming; new tests for
dashboard, sessions, sync isolation and the wizard command
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Shared CLI runner: runs movez.phar through PHP (new movez.phpPath),
reads settings on every call, runs in the workspace folder, surfaces CLI
errors in notifications and a MoveZ output channel instead of hiding them
- Sessions view shows sessions for the open project with real turn counts
- Export via save dialog to .cbz (optionally encrypted); import accepts
.cbz/.json; target lists only contain tools the CLI can write to
- Sync token stored in SecretStorage ("MoveZ: Set Sync Token") and passed
as MOVEZ_TOKEN instead of a command-line argument
- Migration wizard runs `movez transfer` locally behind a strict CSP
instead of iframing a server that cannot reach local sessions
- Add icon, README, LICENSE, repository/license metadata and .vscodeignore
so `vsce package` runs non-interactively in CI; `npm test` type-checks
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
list-sessions only reads metadata for Claude Code (60 MB+ transcripts), so clients had no way to display a session's turns. ClaudeCodeParser can now parse a single transcript by id without scanning every file. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Sync pull no longer fails on --from-path/--to-path (CLI now accepts them); the sync token is passed as MOVEZ_TOKEN, not a CLI argument - Session detail loads full turns via `movez show` when the list only has metadata (Claude Code sessions always showed "No turns") - Settings IPC only accepts known keys with validated values, since cliPath/phpPath are executed by the main process - Enable the renderer sandbox; platform-aware bundled PHP binary name - Source/target pickers only offer tools the CLI can read/write - Real type check (vue-tsc + tsc); fixes the missing phpPath type Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
`--project=.` has basename ".", which normalised to an empty string and silently disabled the filter. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- README: correct download names (movez.phar, MoveZ-Setup-*.exe,
movez-vscode.vsix), every command/option checked against the CLI,
honest support matrix (Windsurf unsupported; Cline/Continue read-only),
sync key-sharing step, real bundle format, build/test instructions,
roadmap for deferred work
- Sync server guide: correct repo/paths, PHP 8.2+, `movez:token`,
{ sessions, count } API, Windows/Horizon notes, dashboard-auth warning
- Extension guide: VSIX install, phpPath, SecretStorage token, real
command behaviour
- Replace Laravel boilerplate READMEs in movez/ and web/
- AGENTS.md: bundle/manifest shape, tool storage, sync API, desktop app
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
An audit found that v1.0.0 could not build or ship, and several core flows were broken. This PR fixes the release blockers and functional bugs (P0/P1) and rewrites the README to match what actually works.
Build & release
contextbridge/→movez/rename. The release workflow called amovezentry script that didn't exist.movez.phar,movez-vscode.vsixand a Windows installer (MoveZ-Setup-<version>.exe) that bundles PHP and the PHAR.*.tsbuildinfofiles are no longer tracked.CLI (
movez/)exportwrites real.cbzbundles (optionally encrypted). Before, it wrote plain JSON thatimportcouldn't read.--projectnow filters sessions, and relative paths like.work.{ sessions, count }and Guzzle;illuminate/httpwas never installed.MOVEZ_TOKEN/MOVEZ_SERVER_URL.sync:pullaccepts--from-path/--to-path.~/.movez/key.showcommand: loads one full session. The desktop app needs it for Claude Code session details.Web (
web/)sync_blobstable instead of a fakeAiSession.php artisan movez:tokencommand issues them, andapi_tokenis hidden from serialization.movez transfercommand to run instead of claiming a migration was queued.tsconfigandvue-tsc, fixed the e2e locators, and added new tests.VS Code extension
.pharthrough PHP via a newmovez.phpPathsetting, and shows CLI errors instead of hiding them.transferlocally, behind a strict CSP.vsceneeds to package without prompting.Desktop app
Docs
Deferred (listed in the README roadmap)
Test plan
cd movez && php vendor/bin/pest: 95 passed, 1 skipped (Linux-only path test)cd web && php artisan test: 21 passed;npm run type-checkandnpm run buildare cleancd vscode-extension && npm test;npx vsce packageruns without promptscd electron-app && npm run typecheck && npm run builddoctor,export --project,unpack🤖 Generated with Claude Code