53ba0c815d
fix: devShell packages with sd-card tools
...
Build and Push OCI Image / build (pull_request) Successful in 1m57s
Use inputsFrom instead of concatenating to packages list
2026-02-27 00:26:37 +01:00
9621c1b727
Merge branch 'main' into feat/20260226-photo-capture
...
Resolved conflicts:
- flake.nix: Combined flake-parts + sd-card + OCI image
- flake.lock: Updated to include flake-parts input
2026-02-27 00:25:53 +01:00
1f35ca1190
docs: add Nix build system documentation
...
Build and Push OCI Image / build (pull_request) Successful in 2m22s
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-27 00:00:44 +01:00
0160483e9a
feat: nix flake with OCI image + Forgejo CI
...
Build and Push OCI Image / build (pull_request) Successful in 2m49s
Add Nix flake build system with automated container image building:
**Nix Flake (flake.nix)**
- Built with flake-parts for modularity
- `solidhaus` package: builds SvelteKit app with buildNpmPackage
- `solidhaus-image` package: OCI image with nginx serving app
- `push-solidhaus-image` app: pushes to registry.toph.so
- Dev shell with Node.js 22
**OCI Image**
- Based on nixpkgs nginx
- Serves SvelteKit build/ as static SPA
- SPA fallback routing configured
- Security headers (X-Frame-Options, X-Content-Type-Options, X-XSS-Protection)
- Gzip compression for text assets
- 1-year cache for immutable static assets
**Forgejo CI (.forgejo/workflows/build-image.yml)**
- Runs on 'nix' runner (uses nix-runner-image)
- Builds OCI image on every push
- Pushes to registry.toph.so on main branch
- Tags with :latest and :${commit-sha}
**Build commands**
- `nix build .#solidhaus` — build app
- `nix build .#solidhaus-image` — build OCI image
- `nix run .#push-solidhaus-image` — push to registry
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-27 00:00:00 +01:00
bf80685b77
chore: log request #req_20260226_234700_photo
...
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-26 23:45:59 +01:00
91c7476d37
feat: PWA photo capture with IndexedDB storage
...
Add full photo capture and management functionality using standard Web APIs:
- Photo capture via getUserMedia (camera) or file upload
- Automatic thumbnail generation (max 200px width)
- IndexedDB storage for photos with Blob support
- PhotoCapture component with camera preview and capture controls
- PhotoGallery component with grid view and fullscreen modal
- Integration into item detail page
- 9 new unit tests (all passing)
PWA-friendly implementation:
- No native dependencies required
- Works in mobile browsers
- Falls back to file upload if camera unavailable
- Stores photos locally in IndexedDB
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-26 23:44:46 +01:00