pcbjam/scripts
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Gergő Törcsvári ce9ede1e9e
feat(standalone): browser-local (IndexedDB) virtual projects
Loading a folder now imports a COPY into a browser-local IndexedDB project with
its own /p/:slug URL (original disk files untouched): edits persist to IDB across
visits, and the project exports via Download .zip or per-file. Gated by
VITE_LOCAL_PROJECTS=idb (on for the demo; off keeps the File System Access
write-back flow), so it's configurable per deployment.

Modular, swappable project sources behind the shared ProjectSource interface,
each self-describing via a SourceDescriptor whose kind is shown verbatim in the
UI — "Local (this browser)", "Remote · read-only", "Remote · editable" — on the
home page, the project view, and inside the editor, so the user always knows
whether/how Save persists:
  - remote      → REST backend (remote-rw)
  - static      → CDN gallery (remote-ro), saves download
  - local (new) → idbProjectStore, writable IDB store
A composite layers the local store over the configured remote/gallery source,
routing per slug so imported/saved projects and the gallery share one namespace.

New, dependency-free (matching sync-client's raw-IDB ethos):
  - lib/idb-project-store.ts  raw IndexedDB store + create/delete/rename/export
  - lib/zip.ts                store-only ZIP writer (verified via system unzip)
  - lib/import-folder.ts      FSA/webkitdirectory folder → in-memory bytes
  - lib/project-source-shared.ts  source descriptors + deterministic uuid
  - components/SourceChip, components/LocalProjectsSection
Home lists local projects (open/export/rename/delete). Verified: typecheck,
project-source tests, prod build, and IDB key-range project isolation in-browser
(prefix-colliding slugs don't leak).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 08:24:14 +02:00
..
bench bench: wasm-opt benchmark harness — Hetzner config sweeps + local QEMU VM 2026-06-11 07:48:46 +02:00
common ci: 🎡 -o1 & test workers 2026-06-16 14:46:18 +02:00
config Add autom4te wrapper to keep submodules clean 2025-12-27 09:21:31 +01:00
deploy feat(standalone): browser-local (IndexedDB) virtual projects 2026-06-20 08:24:14 +02:00
deps Remove .git from meson subprojects to keep IDE clean 2025-12-27 09:37:20 +01:00
git-workflow chore(skills): include pcbjam-shared in the git-feature workflow 2026-06-12 14:05:40 +02:00
kicad feat: enable WASM 3D viewer build — FFP link stubs, drop glemu shim 2026-06-19 09:21:37 +02:00
build-gal-native-test.sh feat(webgl): Add GAL native test harness for visual regression testing 2026-01-07 09:42:31 +01:00
build-gal-webgl-test.sh fix(wasm): Fix asyncify rewind with asyncify-aware dynCall shims 2026-03-13 12:26:48 +01:00
build-monitor.sh chore: 🤖 add build monitor 2026-06-01 17:37:00 +02:00
build-wasm-test.sh refactor: collapse dual-mode plumbing — the DOM port is the only WASM build 2026-06-12 20:19:48 +02:00
build-wx-wasm.sh feat(wasm-dom): tests for context menus + scrollbars; fix clean wx build 2026-06-13 23:15:49 +02:00
compare-screenshots.sh refactor: collapse dual-mode plumbing — the DOM port is the only WASM build 2026-06-12 20:19:48 +02:00
create-feature-patches.sh feat(schematic): eeschema WASM build + e2e harness 2026-05-29 16:01:17 +02:00
kicad-diff-stats.sh Reduce KiCad fork divergence with CMake cleanup 2026-01-05 14:03:03 +01:00
setup-emsdk.sh fix(wasm): Fix asyncify rewind with asyncify-aware dynCall shims 2026-03-13 12:26:48 +01:00
setup-worktree.sh chore: 🤖 add new worktree setup script 2026-06-16 14:46:18 +02:00
test-gal-regression.sh refactor(webgl): Move WebGL GAL from test harness to KiCad source tree 2026-01-10 13:15:58 +01:00
test-gal-webgl.sh refactor(webgl): Move WebGL GAL from test harness to KiCad source tree 2026-01-10 13:15:58 +01:00
update-baseline-screenshots.sh refactor: collapse dual-mode plumbing — the DOM port is the only WASM build 2026-06-12 20:19:48 +02:00