Letsbegin
Search the build
-
24d29e12026-07-16 Strip hardcoded Shopify API tokens from source (env-first); no rotation/deploy — response to Shopify exposed-credentials notice -
2c41f832026-07-03 chore: macstudio3 migration — reconcile from mac2 + repoint paths (stevestudio2→macstudio3, node/npm/npx→/opt/homebrew) -
76bceba2026-06-21 auto-save: 2026-06-21T18:53:00 (9 files) — rw-fix-rollprice.js rw-price-group-slice16.js rw-price-group-slice17.js rw-price-group-slice19.js rw-price-group-slice2.js -
e1f71212026-06-12 schumacher gallery dedup tooling: visual (md5+phash) audit + keep-first cleanup engine (cleaned 1498 dup images across 161 live products) -
19a27142026-06-11 codehealth: add sandbox guards to 3 env-default Shopify writers; generalize .gitignore for transient artifacts; untrack generated cohort dump -
1c651fe2026-06-11 Add rw-recrawl-backfill.js: set-based DB update + idempotent sandbox Shopify variant-sku/metafield backfill for the 94 re-crawled RW murals (94/94, 0 failures) -
7f507502026-06-11 Add rw-catalog-recrawl.js: feed-first RW re-crawl into vendor_catalog to recover real R##### skus for the 94 unmatched mural cohort + build backfill match table -
df2dbbf2026-06-11 Add 3-material-options priced metafield (Standard/P&S/Commercial, per-m2 retail+cost) on 1000 RW murals -
3c0c7fa2026-06-11 Backfill SKUs (mfr_sku/dw_sku/variant sku + rw url metafield) on RW cohort via pattern+color rematch -
62605f82026-06-11 Write C3 per-m2 cost ($44.50) metafield on 1000 Rebel Walls murals (portal-confirmed Net) -
857b11f2026-06-11 Class-wide tag/entity cleanup on 1003-product cohort (decode &, strip color-name tags, lowercase+dedupe, lemma map) -
9b884d72026-06-11 Add color_family controlled-vocab metafield from vendor motif color (1003 cohort) -
f5b11c22026-06-11 Add Claude-vision enrich-write helper (color+specs+tags→metafields, bypass Gemini cap) -
a780b032026-06-11 Add last-20-day Full Monty backfill runner (1003 items, metafields+specs+color+tags; no rooms) -
55eb2292026-05-30 security: strip hardcoded dw_admin DSN password -> env-first. No rotation/deploy. -
cecf2c32026-05-13 letsbegin: shared cost-tracker helper + hook 7 Gemini routes -
7a38d322026-05-13 url-info: hook Gemini call into cost-tracker (best-effort) -
5987dec2026-05-06 initial scaffold (gitify-all 2026-05-06)
Authors
- Steve17
- steve1
Agents used
Skills used
- /prd4
- /processes4
- /deploy2
- /clarify2
- /generate2
- /ralph2
- /convert2
- /claude2
- /suggest2
- /analyze2
- /fix2
- /npm1
- /npx1
- /homebrew1
- /metafield1
- /variant1
- /entity1
- /cost-track1
- /skills1
- /cost-tracker1
- /url-info1
- /cost-ledger1
- /catch1
- /projects1
- /scan1
Creative ideas + design notes
19a2714 · 2026-06-11 · codehealth: add sandbox guards to 3 env-default Shopify writers; generalize .gitignore for transient artifacts; untrack generated cohort dump
- enrich-write.js / rw-sku-backfill.js / cohort-tag-cleanup.js read SHOPIFY_STORE from env (default sandbox) but lacked the hard sandbox-only guard the sibling scripts (rw-cost-write, rw-material-options, rw-recrawl-backfill, slices) already carry. Added the same guard so a stray SHOPIFY_STORE override cannot point a write run at a live store. - .gitignore: replace per-file transient entries with *.run.log / *.progress.jsonl / *.jsonl / .producer-* globs. - git rm --cached color-family-cohort.jsonl (generated cohort data dump, was tracked). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
a780b03 · 2026-06-11 · Add last-20-day Full Monty backfill runner (1003 items, metafields+specs+color+tags; no rooms)
Resumable cohort runner adapted from glitter_full_monty.js: migrates global->custom metafields, Gemini color analysis, title normalization (vendor-aware, multi-pipe safe), image alt tags, then stamps full_monty_at/fm_metafields_verified/fm_specs_at/fm_tags_at in shopify_products. Validated on 3 (Cole&Son/DW/Glitter): Shopify writes land cleanly. BLOCKED on full 1000-run: Gemini key over monthly spend cap (HTTP 429 RESOURCE_EXHAUSTED). pm2 wrapper run-last20-fullmonty.sh sources only the 2 needed keys. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
cecf2c3 · 2026-05-13 · letsbegin: shared cost-tracker helper + hook 7 Gemini routes
New: lib/cost-track.ts — best-effort logGemini wrapper that fails soft when ~/.claude/skills/cost-tracker isn't present (e.g. Kamatera deploy). Hooked all 7 Gemini-using API routes via the shared helper: /api/url-info, /api/prd/clarify, /api/prd/generate, /api/ralph/convert, /api/claude/suggest, /api/processes/analyze, /api/processes/fix Every Gemini call now logs token usage to ~/.claude/cost-ledger.jsonl with app='letsbegin' / note=<route-name>.
7a38d32 · 2026-05-13 · url-info: hook Gemini call into cost-tracker (best-effort)
require()-based dynamic load with try/catch so Next.js Edge runtime falls through cleanly if cost-tracker isn't present (e.g. on Kamatera deploy). Pattern to replicate across the other 7 Gemini-using routes: /api/prd/clarify, /api/prd/generate, /api/ralph/convert, /api/claude/suggest, /api/processes/analyze, /api/processes/fix, /api/projects/scan
File tree
- .gitignore
- CHANGES.md
- CHANGES2.md
- CLAUDE.md
- DEBUG_SUMMARY.md
- add_ai_desc_thibaut.js
- ani_full_monty.js
- app/api/auth/login/route.ts
- app/api/auth/logout/route.ts
- app/api/auth/session/route.ts
- app/api/claude/suggest/route.ts
- app/api/directory/route.ts
- app/api/files/route.ts
- app/api/live/check/route.ts
- app/api/live/route.ts
- app/api/prd/clarify/route.ts
- app/api/prd/generate/route.ts
- app/api/processes/analyze/route.ts
- app/api/processes/details/route.ts
- app/api/processes/fix/route.ts
- app/api/processes/route.ts
- app/api/processes/start/route.ts
- app/api/processes/stop/route.ts
- app/api/projects/route.ts
- app/api/projects/scan/route.ts
- app/api/quickmode/route.ts
- app/api/ralph/continue/route.ts
- app/api/ralph/control/route.ts
- app/api/ralph/convert/route.ts
- app/api/ralph/run/route.ts
- app/api/ralph/status/route.ts
- app/api/ralph/stop/route.ts
- app/api/tracking/route.ts
- app/api/upload/route.ts
- app/api/url-info/route.ts
- app/globals.css
- app/icon.svg
- app/layout.tsx
- app/live/page.tsx
- app/login/page.tsx
- app/page.tsx
- cohort-tag-cleanup.js
- color-family-harvest.js
- color-family-map.js
- color-family-write.js
- components/AuthProvider.tsx
- components/CollapsibleSection.tsx
- components/DirectoryTree.tsx
- components/PRDGeneratorStep.tsx
- components/ProcessStatusBar.tsx
- components/ProjectSelector.tsx
- components/QuickModeStep.tsx
- components/RalphConverterStep.tsx
- components/RalphyBoyStep.tsx
- components/RecentItemsFooter.tsx
- components/SimplifiedQuestionnaire.tsx
- components/StepTabs.tsx
- components/ui/SidebarDemo.tsx
- components/ui/sidebar.tsx
- croppy_glm.js
- data/tracking.json
- ecosystem.config.js
- enrich-write.js
- fix_dwpx_images.js
- fix_rew_products.js
- fix_x_mfr.js
- glitter_full_monty.js
- last20day_full_monty.js
- lib/auth.ts
- lib/cost-track.ts
- lib/gemini-image.ts
- lib/git.ts
- lib/llm-local.ts
- lib/sheets.ts
- lib/utils.ts
- middleware.ts
- migrate_global_to_custom.js
- next.config.ts
- nina_crop.js
- nina_full_monty.js
- nina_names_colors.js
- package-lock.json
- package.json
- postcss.config.mjs
- retro_full_monty.js
- run-last20-fullmonty.sh
- rw-catalog-recrawl.js
- rw-cost-write.js
- rw-fix-rollprice.js
- rw-material-options.js
- rw-price-group-slice16.js
- rw-price-group-slice17.js
- rw-price-group-slice19.js
- rw-price-group-slice2.js
- rw-price-group-slice21.js
- rw-price-group-slice22.js
- rw-price-group-slice25.js
- rw-price-group.js
- rw-recrawl-backfill.js
- rw-sku-backfill.js
- schu-dup-image-audit.js
- schu-gallery-dedup.js
- schu-visual-dup-audit.js
- scrape_dg_specs.js
- scripts/ralph-llm-runner.js
- sequin_colors_titles.js
- sequin_full_monty.js
- sequin_monty_noimages.js
- sync_brands_page.js
- test_brands.js
- tsconfig.json