This website requires JavaScript.
dfd3221617
docs: point the PLATFORM.md link at ../dealgod/PLATFORM.md (now version-controlled)
main
type-two
2026-07-08 14:03:37 +1000
79b0f7e439
docs: README — RecordGod is a StoreGod module; live code = STOREGOD/plugins/recordgod
type-two
2026-07-08 13:14:58 +1000
720afcaee4
feat(storegod_v1): ping returns name+role (parity with STOREGOD)
type-two
2026-07-07 22:23:29 +1000
840e1c4359
refactor: wowplatter_v1 → storegod_v1; mount /storegod/v1 canonical + /wowplatter/v1 legacy alias
type-two
2026-07-07 21:50:46 +1000
e8013a4633
feat(shop): DECKS — two-channel preview mixer on release pages (Serato internal-mode vibe)
type-two
2026-07-06 22:57:47 +1000
00e08a86dd
feat(sku): canonical 14-digit timestamp SKUs so RFID/EPC tagging works (new items)
claude/review-fixes
type-two
2026-07-05 03:34:27 +1000
61601f1067
money: atomic stock claims, amount validation, discount gate (converge with StoreGod twin)
type-two
2026-07-05 03:02:30 +1000
8535389cf1
security(layout): SSRF guard on /layout/import-brand (reject internal hosts, no redirects)
type-two
2026-07-05 02:49:09 +1000
5ebb997978
security(pii): keep customer SQL dumps out of git and the Docker image
type-two
2026-07-05 02:04:45 +1000
cfd6b54731
chore(security): gitignore live-site MariaDB dumps (customer/order PII)
type-two
2026-07-03 14:16:09 +1000
db1788bfe5
feat(app): payments/packs/discogs-mp/dealgod modules + admin, shop, sales route work
type-two
2026-07-02 23:07:28 +1000
d46025e887
fix(virtual): cyclorama extent for east/west coves + never frustum-cull the cove
type-two
2026-07-02 23:07:28 +1000
d0c91faf79
feat(dig): port THRIFTGOD's evolved crate-flip back into /store
type-two
2026-07-02 23:07:28 +1000
916b26102c
docs: DIG_FLIP_HANDOVER — port THRIFTGOD's evolved crate-riffle into /store
type-two
2026-07-02 22:52:26 +1000
b6994a96e3
feat(admin): legacy-panel banner — new admin lives at robotmonster.party/admin + copy-my-token
type-two
2026-07-02 17:40:40 +1000
c44e6643db
feat(intake): condition dropdown auto-fills suggested price
type-two
2026-06-30 18:40:06 +1000
ca84b7f82f
chore(docs): move 14 planning/handover docs to docs/ — declutter repo root
type-two
2026-06-30 15:22:45 +1000
9e3c132a11
chore(security): purge distro raw dumps (supplier PII + account JWT) from git + image
type-two
2026-06-30 15:15:43 +1000
5551963ef4
feat(3d): procedural cyclorama / infinity cove (new — not in WowPlatter)
type-two
2026-06-27 12:47:11 +1000
205967d506
feat(3d): crate-type + rack logo decals on object faces; verified bin slope
type-two
2026-06-27 12:33:30 +1000
44517d4930
fix(3d): decals snap to their preferred_wall (ported WowPlatter snapToWallAndOrient)
type-two
2026-06-27 12:23:18 +1000
d489e8807d
feat(buylist): wishlist scarcity ranking via DealGod /api/supply
type-two
2026-06-27 12:07:48 +1000
379a53bc01
docs(wishlist): scarcity needs a DealGod per-release supply endpoint (request brief)
type-two
2026-06-27 11:42:31 +1000
ef37063b2e
feat(distro): Inertia xlsx ingest + cost/new-used/margin in inventory editor
type-two
2026-06-27 11:39:39 +1000
926468a8b5
feat(distro): RareWaves order ingest → cost-tracked NEW stock + approval landing
type-two
2026-06-27 11:13:48 +1000
4c462861f5
feat(inventory): cost_price + cost_source + new/used split (distro-ingest foundations)
type-two
2026-06-27 10:49:51 +1000
1c8f15514c
fix(auth): login loop — signin() wiped the stored token with the empty token-box
type-two
2026-06-26 17:25:21 +1000
bc59cc1c4c
fix(deploy): stop excluding webstore/ from the image — it broke the /store 3D mount
type-two
2026-06-26 17:10:05 +1000
9a66f59bfe
feat(auth): staff email+password login + password reset (login stays token-based under the hood)
type-two
2026-06-26 16:24:34 +1000
f9ab9527f3
perf(search): pg_trgm fuzzy staff search — typo-tolerant, multi-word, ~100ms (was ILIKE seq scan)
type-two
2026-06-25 16:10:36 +1000
56eab72c9c
feat(intake): wowplatter/v1 intake carries est_market_value (DealGod target from PRICEGOD)
type-two
2026-06-25 02:00:40 +1000
03be6bb67f
fix(admin): escapeH crashed on numbers (intake search cards)
type-two
2026-06-25 01:11:38 +1000
1695b2dfbb
docs(scangod): connection details for the DealGod bridge (network + auth, no secret)
type-two
2026-06-24 17:48:44 +1000
2a41731fd3
feat(intake): ScanGod bridge — POST /admin/intake/scan (photo→staged product) + reply
type-two
2026-06-24 17:16:18 +1000
e7335d77ab
docs(ai): detailed build plan for the RecordGod AI assistant (for review)
type-two
2026-06-24 16:22:04 +1000
9e028db735
feat(connect): OpenRouter key + test in vault; AI agent integration plan
type-two
2026-06-24 16:12:19 +1000
9a0bf41fbe
feat(intake): Heal sweep — backfill missing catalog metadata (salvaged self-healing pass)
type-two
2026-06-24 11:57:36 +1000
beabfe1297
docs(audit): WowPlatter mega deep-dive + reorganise
type-two
2026-06-24 11:07:38 +1000
25127b1b72
feat(intake): connected Google sheet via service account + skip-existing bulk stage
type-two
2026-06-24 10:32:31 +1000
88172924eb
feat(intake): three-source intake — internal lookup + Discogs collection + Google Sheet
type-two
2026-06-24 10:05:46 +1000
5ad4de1d2c
feat(bridge): RecordGod WP bridge plugin (WowPlatter successor) + thumb on browse/release
type-two
2026-06-24 01:43:30 +1000
8a3d833986
feat(shop): WP/Woo bridge endpoints — /shop/item, /shop/shipping/quote (public), /shop/woo-order (key-gated)
type-two
2026-06-24 01:28:34 +1000
bfe6a08dfb
feat(shipping): use current AusPost own-packaging rates (RecordGod not live pre-1-Jul, no dating needed)
type-two
2026-06-24 01:05:12 +1000
ef4769784f
feat: Woo customer sync (non-destructive, in refresh.sh) + AusPost rates mirror & quote calc
type-two
2026-06-24 00:55:56 +1000
4c152954b5
fix(shop): key YouTube dead-cache by (release_id, uri) — mirrored video table has no id col
type-two
2026-06-23 23:47:42 +1000
988e6437cb
feat(shop): per-track Apple previews (lazy iTunes) + jog mini-player + dead-YouTube check
type-two
2026-06-23 23:44:17 +1000
d6e1e15982
feat(shop): storefront release page gets ▶ Listen too (Apple preview / YouTube / Beatport)
type-two
2026-06-23 23:22:46 +1000
aa56e874ad
feat(shop): country-scoped Apple ids in audio — AU-preferred music.apple.com link + clean preview
type-two
2026-06-23 23:17:06 +1000
7e9d5028b0
fix(shop): apple_preview_url is a JSON array — return the first clean preview URL
type-two
2026-06-23 23:12:39 +1000
16c85184cd
feat(shop): wire audio/video previews — kiosk Listen (Apple 30s / YouTube / Beatport)
type-two
2026-06-23 23:10:02 +1000
bab0826fea
feat(shop): in-store kiosk page — touch browse, locate-in-store, scan-to-buy QR
type-two
2026-06-23 23:01:54 +1000
d6c08f05ce
feat(nav): rotate diagram button — 90° view rotation (rack + store), text stays upright
type-two
2026-06-23 21:55:51 +1000
e20be06bf0
feat(nav): Quick Insert + click-to-pick insert slot (insert-with-shift)
type-two
2026-06-23 19:45:42 +1000
a57b74700c
feat(admin): System tab — read-only Postgres health (db size/version/uptime/conns/cache-hit, largest tables, data freshness)
type-two
2026-06-23 18:44:44 +1000
6a95efb9bb
fix(report): count paid+completed sales (migrated=paid), fix hour :00 bind-param, add format breakdown
type-two
2026-06-23 18:26:57 +1000
336d525585
feat(admin): comprehensive lazy dashboard + reports workbench (Chart.js)
type-two
2026-06-23 18:22:17 +1000
4ab9c09899
feat(pos): Square Terminal payments — push checkout to a paired terminal
type-two
2026-06-23 17:57:26 +1000
5673ee125d
fix(sales): register GET /{sale_id} last so /settings /customers /past /discounts resolve
type-two
2026-06-23 17:38:16 +1000
bf08cd9b35
feat(pos): receipt logo + Monster Robot template (store name/address/footer)
type-two
2026-06-23 17:33:08 +1000
5351cfb9c2
feat(pos): rebuild Sales — 3 tabs, smooth checkout + tender/change, print+email receipts
type-two
2026-06-23 16:29:42 +1000
b46930d468
feat(staff): time clock — clock on/off = shift = timecard
type-two
2026-06-23 15:40:02 +1000
5e2a9e7ab1
feat(auth): staff accounts + roles — operators run the store, admins keep the keys
type-two
2026-06-23 15:33:19 +1000
13e5200b8d
feat(nav): colour crates by type in the rack diagram (material_color)
type-two
2026-06-23 11:26:34 +1000
cba339151f
feat(nav): Crate Info panel — edit label_text + rotate crate.direction in /search
type-two
2026-06-23 10:51:41 +1000
6b679152bc
feat(nav): reorganize targets = picked crates sorted (editable) + per-crate landing summary
type-two
2026-06-23 10:15:50 +1000
c4b544373d
feat(nav): unified tabbed Search & Inventory workstation (WowPlatter parity)
type-two
2026-06-23 09:58:18 +1000
48f8579bff
feat(shop): P4 wantlist — public 'request a record' page + admin queue
type-two
2026-06-23 01:26:16 +1000
28a46615a5
feat(shop): entity browse pages — artist/label/genre/style storefront views
type-two
2026-06-23 01:13:52 +1000
386343cdd3
feat(builder): P1 page editor — live preview now renders a REAL release from the catalog (real covers/tracklist) so block-arranging is WYSIWYG; + View-live link
type-two
2026-06-23 01:00:28 +1000
fcc3d7b2ff
feat(storefront): P0 — public Browse (faceted release catalog) + Release detail pages + /shop/{browse,facets,release} API; Woo-transacted
type-two
2026-06-23 00:37:04 +1000
0269decb87
feat(search): editable Rack Info (name) + Reorganize planner UI (scan source crates → filter → A-Z distribute into target crates → review → apply)
type-two
2026-06-22 23:58:10 +1000
83466389af
feat(scanner): scan-to-slot assigner (replace/append/prepend/insert + Test preview + recover-last) + editable crate info (name/label); hdr Content-Type fix
type-two
2026-06-22 23:46:14 +1000
19c6e03c70
feat(search): clickable crate contents → Release Info panel (cover/label/format/country/year/genre/style + all copies + locate); crate genre/style + last-scanned + compress
type-two
2026-06-22 23:40:06 +1000
d6e75667bf
feat(customers): CRM — list with spend/orders/last + record page (overview stats, editable info, mailing opt-in, sales history)
type-two
2026-06-22 23:17:11 +1000
38c6714184
feat(print): label print (artist/title/price/SKU/QR, Dymo 54x25mm) + optional RFID chip program (Chafon H102 via local :7790 daemon)
type-two
2026-06-22 22:55:31 +1000
a817b9d163
feat(import): bulk stock-in — resolve Release ID/barcode/catno against disc_release → create inventory (UI + endpoint)
type-two
2026-06-22 22:48:43 +1000
c5ce84de1c
feat(inventory): management UI — row edit modal, add-item, delete, bulk-select actions, webp thumbs
type-two
2026-06-22 22:45:37 +1000
4ece321b76
feat(inventory): CRUD backend (add/edit/delete/bulk) — first cream from the WowPlatter audit; + migration audit doc
type-two
2026-06-22 22:39:17 +1000
0b679ba079
fix(images): /img/r serves local copy else 302 to discogs webp (server-side fetch is CF-blocked); drop unused pillow
type-two
2026-06-22 21:48:08 +1000
ddaa6ecedf
feat(images): RecordGod WebP cover cache (/img/r/{release_id}) — same-VPS, configurable DISC_IMAGE_DIR, no DealGod dep
type-two
2026-06-22 21:45:31 +1000
af3a611667
feat(collections): interactive editor — click-map crate select, genre/style/price/year rules, live match stats, priority
type-two
2026-06-22 21:33:15 +1000
10af3464ac
feat(disc): mirror WowPlatter Discogs metadata into recordgod (disc_sync.py) + locator matches on collection genre/style ids
type-two
2026-06-22 21:19:47 +1000
a1b4538954
fix(collections): is_active is int not bool — cast in queries
type-two
2026-06-22 20:58:50 +1000
879a58992f
feat(collections): Collections CRUD + fallback locator + Reorganize scan/apply/compress API + Collections UI
type-two
2026-06-22 20:56:34 +1000
0767778931
fix(store): WowPlatter coordinate convention in webstore renderer
type-two
2026-06-22 19:57:17 +1000
fb533a7701
fix(nav): store view shows functional racks only (rack_purpose<>prop), truncate labels
type-two
2026-06-22 19:38:29 +1000
53b1a64a48
feat(nav): light/dark switch every page + store→rack→crate navigator
type-two
2026-06-22 19:33:24 +1000
180615c7e0
ui: light theme for Search + POS (shop-admin readability)
type-two
2026-06-22 19:01:07 +1000
eb502efaf4
feat(pos): full Sales console + migrate customers/discounts/settings
type-two
2026-06-22 02:40:35 +1000
584fd140ad
feat: Search/locate workstation + Search & Sales in nav (cache-bust nav.js)
type-two
2026-06-22 01:57:54 +1000
6dd893fd01
feat: owner login landing + Sales POS + Sales in nav
type-two
2026-06-22 01:49:00 +1000
80ff669cac
feat(pos): Sales tab — ring-up, discounts, payment plans, holds, locate
type-two
2026-06-22 01:43:14 +1000
e8e526f48e
feat: unified owner nav bar across admin/builder/dash
type-two
2026-06-22 01:22:25 +1000
19e3cb131f
feat: clean stub URLs (/builder /shop /admin /dash) + store geometry + storefront
type-two
2026-06-21 23:16:57 +1000
a9076af19d
feat(builder): storefront customizer
type-two
2026-06-21 21:29:55 +1000
8c25b65d7e
feat(virtual): finish the 3D store port — per-room scoping, decals, portals
feat/virtual-store-port
type-two
2026-06-21 21:00:02 +1000
a304476645
docs: Wax Museum report — three-layer model + feature matrix
type-two
2026-06-21 20:39:40 +1000
b256b1399c
docs: Wax Museum deep-dive + onboarding report (first enterprise target)
type-two
2026-06-21 20:33:24 +1000
b4cdc8aee4
feat(admin): Store Map + Intake/Crates/Reports
type-two
2026-06-21 20:03:08 +1000
3732dfa325
feat(admin): Intake, Crates, Reports views + endpoints
type-two
2026-06-21 19:50:47 +1000