Skip to content

.ezy format v3: ZIP container with deduplicated underlay assets#157

Merged
trailcode merged 7 commits into
mainfrom
Trailcode/ezy_format
Jul 4, 2026
Merged

.ezy format v3: ZIP container with deduplicated underlay assets#157
trailcode merged 7 commits into
mainfrom
Trailcode/ezy_format

Conversation

@trailcode

@trailcode trailcode commented Jul 4, 2026

Copy link
Copy Markdown
Owner

Summary

  • .ezy format v3: Saved projects are a ZIP archive (manifest.json + deduplicated assets/*.rgba underlay blobs). Sketch underlays reference assets by content hash instead of inline base64.
  • Ezy_asset_store: Session-lifetime content-addressed registry for underlay RGBA blobs; undo/redo snapshots share assets instead of re-embedding pixels.
  • ezy_io: Zip pack/unpack, format sniff, and base64 helpers for Wasm startup storage.
  • Backward compatibility: Legacy plain-JSON .ezy files (v1/v2, including rgba_b64 underlays) still load; pixels migrate into the asset store on read.
  • GUI refactor: Split gui.cpp (gui_add.cpp, gui_settings.cpp), tidy gui_mode.cpp (shared default-material combo helper), rename gui_modesmode.
  • Extrude UX: Hide permanent sketch nodes and snap annotations during sketch face extrude (consistent with operational axis behavior).

Closes #156

Files changed

  • src/ezy_asset_store.h/.cpp, src/ezy_io.h/.cpp — new I/O and asset store
  • src/occt_view.*, src/sketch_underlay.*, src/sketch_json.* — v3 save/load and asset refs
  • src/gui.cpp, src/gui_add.cpp, src/gui_mode.cpp, src/gui_settings.cpp, src/gui.h — GUI split and cleanup
  • src/mode.h/.cpp (renamed from gui_modes)
  • tests/sketch_tests.cpp — pack/unpack, dedup, legacy migration tests
  • CHANGELOG.md — format v3 entry

Test plan

  • Build EzyCad_lib and EzyCad_tests (Debug + Release).
  • Run EzyCad_tests — ezy zip round-trip, asset deduplication, legacy rgba_b64 load.
  • Manual: save project with image underlay, reopen, verify underlay renders correctly.
  • Manual: open older plain-JSON .ezy, save again, confirm v3 ZIP output.
  • Manual: sketch face extrude — perm nodes / snap suppressed during tool.
  • Verify Options panel material combos still work (Normal, polar dup, sketch extrude).

@cursor

cursor Bot commented Jul 4, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@trailcode trailcode merged commit 89adb08 into main Jul 4, 2026
3 checks passed
@trailcode trailcode deleted the Trailcode/ezy_format branch July 4, 2026 23:50
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.

.ezy format v3: ZIP container with deduplicated underlay assets

1 participant