Skip to content

v0.5.0

Latest

Choose a tag to compare

@github-actions github-actions released this 27 Jul 17:24
Fix data-safety bugs and packaging (v0.5.0)

Rename engine (ops.ts):
- applyRename now returns per-file OpResult[] and refuses to run if two
  files collide on one target or an unrelated existing file would be
  clobbered; renames go through temp names so chains (a->b, b->c) can't
  destroy data, with rollback on failure.
- uniquePath() everywhere so no output ever overwrites an existing file.
- unzip: Zip Slip guard (entries must resolve under the output dir).
- zipFiles: de-duplicate entry names; guard empty input.

UI (App.tsx):
- RenamePanel surfaces the OpResult[] instead of silently discarding it;
  the file list only clears when every rename actually succeeded. Fixes a
  silent "fake success" data-loss path.
- SHA-256 button catches errors and reports them instead of throwing an
  unhandled rejection.

Main process (index.ts):
- runBatch uses bounded concurrency (max 4) so large batches don't spawn
  hundreds of parallel pipelines.
- filesFromArgv resolves paths and ignores flags.

Packaging (package.json):
- asarUnpack sharp/@img so the native module actually loads in the packaged
  app (previously invisible because tests run from source).
- macOS builds arm64-only; the cross-compiled x64 dmg had a broken native
  binary. Intel Macs build from source (README updated).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>