Add comprehensive feature specification for item UID generation with:
- 7-character collision-resistant IDs using safe alphabet
- Pre-generation on form load with regenerate option
- UI/UX guidelines for monospace display and inline controls
- Edge case handling for collisions and persistence
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
nixos-25.11 has hash mismatch for bash-5.3.tar.gz upstream source.
Switch to nixos-unstable which has updated/fixed hashes.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Build can fail with EOF errors when fetching from cache.
Add fallback to build from source if cache fails.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
skopeo needs /var/tmp or /tmp for temporary files when copying
docker-archive images. Use --tmpdir flag to explicitly use /tmp.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
## Summary
Integrated **sd-card** workflow for interactive specification generation:
- ✅ Added sd-card flake input
- ✅ Created `nix run .#dev` - starts Vite with annotation proxy
- ✅ Updated dev shell with sd-card tools (tea, playwright, nodejs)
- ✅ Replaced old forgejo-workflow with sd-card
## Usage
### Widget-based annotation
```bash
FORGEJO_TOKEN="your-token" nix run .#dev
```
Opens SvelteKit with ✦ widget injected on every page.
### Interactive annotation (recommended)
Ask Claude to interact with the app via Claudezilla:
```
User: "Open solidhaus"
Claude: [opens in Firefox]
User: "Click the scan barcode button"
Claude: [clicks, shows screenshot]
User: "This should open the camera"
Claude: [generates Gherkin scenario]
```
## Test Plan
- [x] Flake builds successfully
- [x] `nix run .#dev` starts dev server with proxy
- [x] Widget injects on pages
- [x] Claudezilla can open and interact with app
- [x] Dev shell includes all sd-card tools
🤖 Generated with Claude Code
Reviewed-on: toph/solidhaus#2
Co-authored-by: Christopher Mühl <toki@toph.so>
Co-committed-by: Christopher Mühl <toki@toph.so>
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>
50 Playwright E2E tests across 13 spec files covering all routes and
user flows (items CRUD, check-out/in, locations, labels, scanning,
search/filter). Uses vitest as runner with playwright-core for browser
automation (bun-compatible alternative to @playwright/test).
Includes Gherkin .feature files as living documentation, test support
infrastructure (IDB seeding, item factories, assertion helpers, layout
measurement), and HANDOFF.md covering project state, deployment, and
open design decisions.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Dashboard with stats grid, checked-out/low-stock/recent items
- Scan route with check-in/out flow
- Items list with search, filters (category/type/custody), sorting
- Item detail with full metadata, check-in/out, edit, delete
- New item form wired to inventory store
- Locations browser with tree view and items-at-location
- Labels page with batch generation and PDF download
- Settings page with DB stats
- Fixed Svelte 5 event modifier syntax (no pipe modifiers)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Barcode scanner with ML Kit (native) and BarcodeDetector API (web)
- Label sheet PDF generator with QR codes via bwip-js + jsPDF
- Print server REST client with health check
- 6 print server tests passing
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Includes ConfidenceBadge and CustodyBadge helper components.
Dark slate theme with confidence/custody color coding.
ItemCard test suite (6 tests). Fixed vitest browser resolve conditions.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Reactive store with $state/$derived for items, locations, checked-out
items, overdue items, and low-stock items. Supports CRUD, check-in/out,
sighting recording, and location tree queries. 12 tests passing.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- IndexedDB data layer: db.ts, items.ts, locations.ts, sightings.ts, labels.ts
- Pure algorithms: confidence decay, custody state transitions
- Barcode parser: HTTPS URI, haus:// scheme, raw ID parsing
- 150 tests all passing
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Set up vitest with jsdom, fake-indexeddb, @testing-library/svelte,
$app mock modules, and agent definitions for test-writer/implementer/reviewer.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>