Commit Graph

  • 43ce4514c4 location-first scan: geolocation prompt decides the scan (8s fallback to plain scan, never blocks); server 'location upgrade' rule re-alerts with map link when coords arrive after a no-loc alert main Sam Rolfe 2026-08-10 19:17:58 +10:00
  • f2d1acac35 scan flow: fire scan immediately on tag-page load (location is an upgrade, not a gate) so a tag view always records+alerts; add request logging middleware (method/path/status/duration) to stdout for diagnostics Sam Rolfe 2026-08-10 18:51:35 +10:00
  • 1fae314eb4 tag claim flow: scanned code auto-fills Add Tag field (?code=), unclaimed tag page shows 'Add this tag to my account' when logged in, login honors next= so code survives the login step Sam Rolfe 2026-08-10 17:04:21 +10:00
  • 04fd5ac63a fix: legacy QR URLs without '?' (productid in path) redirect to /t/CODE (new tag 97 now scans); preview page photo portrait aspect; Preview button on user tags list; admin photo form = preview + standalone Upload button (removed URL TextInput — no duplicate, no stale placeholder) Sam Rolfe 2026-08-10 16:54:10 +10:00
  • ae0290b343 admin: photo preview fixed size (inline styles); preview mode ?preview=1 (banner, no scan functionality) with Preview buttons in admin row action + owner edit link Sam Rolfe 2026-08-10 16:36:22 +10:00
  • eb3e4f45ad admin: Tags-list photo thumbnail (null when no photo — fixes empty src), edit-form photo preview (blade view), 'View live page' row action; owner: 'View the live tag page' link on edit Sam Rolfe 2026-08-10 16:27:40 +10:00
  • fd91d3c53e fix: admin upload action fillForm()->refreshFormData(['photo_url']) (fillForm threw in action closure); photo cache-busting (?v=updated_at) so overwritten photos don't show stale browser cache (user 'reverting to old images') Sam Rolfe 2026-08-10 16:18:08 +10:00
  • 0a66d92d31 FIX (root cause): trust Caddy proxies in bootstrap/app.php — Laravel saw http behind Caddy, so signed upload URLs never validated -> every Livewire upload 401 -> 'failed to upload' regardless of file size. Verified: upload returns 200 with temp path. Sam Rolfe 2026-08-10 16:00:02 +10:00
  • d3e51b0fd1 admin upload: Livewire temp max 50MB + php.ini conf.d mount (research-backed) Sam Rolfe 2026-08-10 15:48:04 +10:00
  • 8c2d65eabb docs+ini: upload limits via conf.d mount; AGENTS.md corrected Sam Rolfe 2026-08-10 15:34:13 +10:00
  • aaad9f2db6 fix (research-backed): admin upload limits via mounted php.ini conf.d (artisan serve child ignores -d flags — Filament docs: set php.ini); user photo preview always rendered (was conditional -> FileReader target missing); PNG upload+save+display verified Sam Rolfe 2026-08-10 15:34:13 +10:00
  • ab3aa5aee9 fix: remove photo_url text input from user form (photo only via file upload; handler keeps existing photo when no file); livewire config published (disk=local, 12MB, 2min upload — was 5s default breaking admin temp uploads) Sam Rolfe 2026-08-10 15:07:15 +10:00
  • f5e5989c64 docs: known-good state + gotchas (photo flows, admin upload, curl -F pitfall, logins) Sam Rolfe 2026-08-10 14:57:12 +10:00
  • ef20af0d92 fix: user photo upload now INSIDE the main edit form (one Save = file+fields, no JS); admin resource FQNs corrected (relative Filament\Forms refs = panel-wide 500) Sam Rolfe 2026-08-10 14:47:07 +10:00
  • fc7f3bf675 fix: user photo_url input type=text (type=url rejected relative /photos/ paths = form block); admin inline upload action leading-backslash namespace (was panel-wide 500) Sam Rolfe 2026-08-10 14:41:04 +10:00
  • 704cc4606f fix: user photo form explicit method=post+enctype (405 when htmx missed it); admin upload action moved inline as suffix on the photo field; verified real PNG upload+serve Sam Rolfe 2026-08-10 14:31:24 +10:00
  • 3001e816cd fix: admin 'Upload photo' action (modal FileUpload, stores to MinIO, sets photo_url — no foreach 500); user upload limit 5MB->10MB; photo_url input shows full value (visual truncation only) Sam Rolfe 2026-08-10 14:20:35 +10:00
  • b14341e344 fix: admin photo fields -> TextInput + ImageColumn (FileUpload foreach 500 gone); user upload syncs photo_url input so Save keeps the photo; ProductResource photo added Sam Rolfe 2026-08-10 14:13:18 +10:00
  • bcf6f3115d fix: admin FileUpload single-path columns (array state + dehydrate — was foreach error = admin edit 500); user photo upload targets thumb div only so the form/button survives re-uploads Sam Rolfe 2026-08-10 14:01:55 +10:00
  • f38beb4cfe fix: user tag edit photo upload — standalone form (was nested inside main form, invalid HTML), thumbnail on success; restore sms_enabled on tag 6; admin upload accepts HEIC (no image() rule) Sam Rolfe 2026-08-10 13:51:49 +10:00
  • 23508fc468 fix: Edit link navigates to the full tag edit page (was intercepted by hx-get inline); admin upload limits raised (12M via php -d) + FileUpload maxSize 10MB — fixes 'failed to upload' on phone photos Sam Rolfe 2026-08-10 13:14:47 +10:00
  • e38128c33f fix per feedback: remove home recent-scans; admin dashboard recent-scans -> tag edit links + item column; inline tag edit gets photo upload; explicit deploy sync (no dir-rsync flakiness) Sam Rolfe 2026-08-10 13:04:43 +10:00
  • 83d75cb29f home: recent-scans list (links + tag ids); admin tags: item_type column, searchable tag code/description/owner; admin photo upload: drop imageEditor (unbundled JS); owner edit photo upload confirmed Sam Rolfe 2026-08-10 12:52:52 +10:00
  • 9158681001 fix batch: admin login rehash->password_hash mapping (500); geolocation timeout 20s + hide button on approval + 'location shared' notice; sms: link includes typed number (Alpine); location page = found-dog + map + finder number + tag details; nicer closed page; password visibility toggles; product photos; templates use x-text (no {{}} in Alpine) Sam Rolfe 2026-08-10 12:27:20 +10:00
  • b5db858ef8 fix: seed-admin emits $2y$ bcrypt prefix so Laravel admin login works (was $2a$ -> 500 'does not use the Bcrypt algorithm') Sam Rolfe 2026-08-10 12:00:03 +10:00
  • ae231c97f6 compat: /index.php?productid= legacy URL form redirects to /t/{code} (covers old printed QR URLs) Sam Rolfe 2026-08-10 11:51:58 +10:00
  • 97cf0974a3 tag-lifecycle: owner close (status closed, gating + page) + move (copy details to new tag, close source) + legacy ?productid= redirect — verified with real tags 6 & 17 Sam Rolfe 2026-08-10 11:36:11 +10:00
  • 77a9f803f2 openspec: tag-lifecycle change (close/move/legacy redirect) Sam Rolfe 2026-08-10 11:33:25 +10:00
  • daf758d336 docs: product model — metering+renewal+unlock marked done Sam Rolfe 2026-08-10 10:11:31 +10:00
  • 9d43403f6f renewal-unlock: orders.renews_at lazy expiry + owner unlock notices (ntfy/sms channels, exempt from metering) — verified Sam Rolfe 2026-08-10 10:10:50 +10:00
  • 8b5db410a3 openspec: renewal-unlock change Sam Rolfe 2026-08-10 10:08:06 +10:00
  • 17150c405d ops: live SMS creds on .13; seed-admin cmd in make db-up (admin survives DB resets) Sam Rolfe 2026-08-10 10:07:29 +10:00
  • e1044f8c32 admin-insights-pages: dashboard customers+revenue (orders.amount), users->tags relation, pause customer (gates alerts), About/What-is-this/Contact pages Sam Rolfe 2026-08-10 09:19:14 +10:00
  • d80c08306c openspec: admin-insights-pages change Sam Rolfe 2026-08-10 09:17:11 +10:00
  • 426c99296d auth: shared session cookie domain (SESSION_COOKIE_DOMAIN) so apex + www stay logged in Sam Rolfe 2026-08-08 15:23:40 +10:00
  • 9349851bef roadmap: phase 5 metering+location-link done; gateway/renewal/unlock next Sam Rolfe 2026-08-08 14:39:42 +10:00
  • 5487cee966 sms-metering-location-link: per-tag SMS credits (allocated/used, admin top-up), short URLs + owner location page (map embed + finder details) — 13/13 scenarios Sam Rolfe 2026-08-08 14:38:32 +10:00
  • db1c358fe7 openspec: sms-metering-location-link change Sam Rolfe 2026-08-08 14:34:23 +10:00
  • 27826c6d93 docs: product model + AUD pricing, SMS metering, location-link flow, variants, scope Sam Rolfe 2026-08-08 14:25:11 +10:00
  • b63374d23e admin: sync MinIO disk config + Filament photo upload + flysystem dep back to repo Sam Rolfe 2026-08-08 10:01:24 +10:00
  • d5919315fa photo-object-storage: MinIO on .13 (9010/9011), Go upload+serve /photos, admin S3 disk + Filament upload, migrated, deployed Sam Rolfe 2026-08-08 10:01:02 +10:00
  • 61f16742ca openspec: photo-object-storage change — MinIO on .13, Go upload/serve, admin S3 disk Sam Rolfe 2026-08-08 09:55:43 +10:00
  • 87dcf4634a roadmap: phase 5-lite (gating+limits) done, gateway deferred Sam Rolfe 2026-08-08 09:25:17 +10:00
  • 3d242fdcaa scan-limits-gating: paid-order gating + per-tag daily cap + per-IP hourly rate (6/6 scenarios) — no gateway Sam Rolfe 2026-08-08 09:25:06 +10:00
  • 92ccf3d0f3 openspec: scan-limits-gating change — paid-order gating + daily/IP alert caps (no gateway) Sam Rolfe 2026-08-08 09:22:09 +10:00
  • 31174d41e6 docs: architecture, toolchain, resume highlights; AGENTS.md points to them Sam Rolfe 2026-08-08 09:21:37 +10:00
  • 5d4f30b0f0 tuxedo: mark DNS fix + Phase 8 admin deploy done; board current Sam Rolfe 2026-08-08 09:08:17 +10:00
  • e98b166382 admin: User implements FilamentUser (canAccessPanel=isAdmin) — fixes 403 in production Sam Rolfe 2026-08-08 08:52:24 +10:00
  • 3e571f75bf admin: force https scheme/root URL behind Caddy (fixes mixed-content broken CSS/JS) Sam Rolfe 2026-08-08 08:39:54 +10:00
  • aa465cae2e admin: redirect / to /admin (root was showing default Laravel welcome page) Sam Rolfe 2026-08-08 08:24:40 +10:00
  • e317b9e1d8 plan: admin port .13:3031 (3030=Langfuse) Sam Rolfe 2026-08-08 07:41:58 +10:00
  • d441c13293 deploy-admin: admin live on .13:3031 (3030=Langfuse), Caddy -> 3031, firewall 3031 pending Sam Rolfe 2026-08-08 07:41:45 +10:00
  • e5f13e77f1 deploy-admin: add admin-live spec Sam Rolfe 2026-08-08 07:38:34 +10:00
  • d88871e914 openspec: deploy-admin change — Laravel admin to .13:3030 Sam Rolfe 2026-08-08 07:38:14 +10:00
  • 3cda4df528 docs EOD: roadmap status (phases 1-4,7 done), AGENTS.md live-state, tuxedo board, deploy-frontend tasks Sam Rolfe 2026-08-07 21:49:14 +10:00
  • 496cbd8a2c openspec: deploy-frontend change — .13:3020 systemd service + Caddy/DNS Sam Rolfe 2026-08-07 21:04:00 +10:00
  • af0a77fbfe schema: add users.remember_token for Laravel session auth (idempotent) Sam Rolfe 2026-08-07 20:53:39 +10:00
  • b53c28c1b1 laravel-admin: Docker Laravel + Filament panel — users/tags/products/orders resources, dashboard stats, is_admin gate, shared Postgres (verified data layer) Sam Rolfe 2026-08-07 20:31:29 +10:00
  • 224545ac64 openspec: laravel-admin change — Filament admin (users/tags/products/orders/dashboard) on shared Postgres Sam Rolfe 2026-08-07 20:23:02 +10:00
  • 0ee211d156 tuxedo notes: photo upload, username/email display + confirm-email, favicon; verified owner-only edit Sam Rolfe 2026-08-07 19:46:08 +10:00
  • f7e018cf64 roadmap: Phase 3 done Sam Rolfe 2026-08-07 18:18:54 +10:00
  • aa023cf89e Phase 3: HTMX inline tag editing, swap animations, loading indicators, Alpine phone validation Sam Rolfe 2026-08-07 18:18:49 +10:00
  • e264125214 Add decoded preset tag-ID mapping (0-99) — AES-256-ECB(json n), key Harry13052009Finn05092013 Sam Rolfe 2026-08-07 18:17:27 +10:00
  • 61737825ea scan-alert-hardening: different-finder re-alert within 250m window + fingerprint 24h block (12/12 scenarios pass) Sam Rolfe 2026-08-07 17:29:47 +10:00
  • f646af3ec6 openspec: scan-alert-hardening change — different-finder re-alert + fingerprint 24h block Sam Rolfe 2026-08-07 17:26:18 +10:00
  • e3bcd2e6e0 tag-registry-product-link: seed 100 real preset IDs (seed-registry cmd), products/orders schema + tag linkage, fix case-sensitive tag-code bind Sam Rolfe 2026-08-07 16:56:50 +10:00
  • 24c7728559 openspec: tag-registry-product-link change — real registry seed + products/orders schema Sam Rolfe 2026-08-07 16:54:03 +10:00
  • 833c292b6a Add recovered preset tag-ID registry (100 manufacturer product IDs from Where_woof_0_100.xls) Sam Rolfe 2026-08-07 16:50:23 +10:00
  • 22efe5e632 Plan: preset tag-ID registry requirement (anti-scam — codes must match DB, no user-created codes) Sam Rolfe 2026-08-07 16:37:50 +10:00
  • 0dbf728f00 Fix transposed test number: +61 423 274 487 (61423274487) everywhere Sam Rolfe 2026-08-07 16:17:55 +10:00
  • d4679068ba scan-flow step 9: real SMS via SMSGlobal HTTP API (smshttp sender, proven live OK:0) + docs Sam Rolfe 2026-08-07 16:10:52 +10:00
  • 453c61b57a Add AGENTS.md — resume brief: pipeline, stage, locations, tools Sam Rolfe 2026-08-06 08:00:40 +10:00
  • e95eb358b3 README: add dev testing guide (owner form flow, finder URL, throttle, SMS log mode) Sam Rolfe 2026-08-05 21:24:21 +10:00
  • c2fa04afd0 scan-flow: geolocation scan, location-aware SMS throttle (log sender), finder contact, sms_enabled toggle, branding — 19/19 phase-2 scenarios pass Sam Rolfe 2026-08-05 18:23:34 +10:00
  • 4666751e92 openspec: scan-flow change — proposal, design, 5 specs (3 new + 2 deltas), tasks Sam Rolfe 2026-08-05 15:06:08 +10:00
  • 0b35aab80c Plan: add branding note — 'Where Woof' (werewolf wordplay), title 'Where Woof !' Sam Rolfe 2026-08-05 14:53:55 +10:00
  • 8c44eabeee Makefile: dev-default SESSION_SECRET so make run works out of the box Sam Rolfe 2026-08-05 13:47:14 +10:00
  • 133e375b6b frontend-foundation: GOAT front-end Phase 1 — auth, tag management, public tag page (22/22 spec scenarios pass) Sam Rolfe 2026-08-05 13:46:50 +10:00
  • b846c2c58e openspec: frontend-foundation change — proposal, design, specs (4 capabilities), tasks Sam Rolfe 2026-08-05 12:51:44 +10:00
  • c2d6f00241 Rewrite plan: return-tag platform (not tracker), GOAT + shared Postgres Sam Rolfe 2026-08-05 12:48:58 +10:00
  • 9450834463 first commit Sam Rolfe 2026-08-05 10:21:02 +10:00