1const e=`# v5.5 â Continuation plan 2 3**Opened:** 2026-04-17 4**Supersedes (partial):** [\`2026-04-17-v5.5-admin-polish.md\`](2026-04-17-v5.5-admin-polish.md) â the 17-todo source doc. This file reconciles shipped vs pending, adds new todos, and freezes the forward order. 5**Running log:** [\`2026-04-17-v5.5-running-log.md\`](2026-04-17-v5.5-running-log.md) â appended per task so progress survives context resets. 6**Workflow:** branch off \`v5\`, ship small, push often, merge \`--no-ff\` back, update \`STATE.md\` + \`CHANGELOG.md\` in the merge commit. \`v5\` is the Cloudflare Pages production branch â never edit directly. 7 8--- 9 10## Reconciled status (of the original 17) 11 12| # | Scope | Status | Commit / Branch | 13|---|---|---|---| 14| 1 | SEO + social sharing admin | **Pending** | â | 15| 2 | Newsletter popup guard (logged-in users) | â Shipped | \`52f27cd\` | 16| 3 | Reviews admin + shop identity editor | â Shipped | \`23bf71c\` | 17| 4 | Shop inline / admin product editing | **Pending** | â | 18| 5 | OAuth connect for Codex + Gemini | **Blocked** | Needs operator OAuth-app registration | 19| 6 | LLM keys auto-ping + explicit primary | â Shipped | \`646787d\` | 20| 7 | Mid-width sidebar hover-expand + pin | **Pending** | â | 21| 8 | Messages counterparty + admin outbound | **In progress** | \`08dc0cd\` (RPC + messagingDB prep); UI unshipped | 22| 9 | AdminProducts eye-toggle icon | â Shipped | \`436ac38\` (bundled with 17) | 23| 10 | Fix broken product images | â Shipped | \`feat/v5.5-product-images\` merged | 24| 11 | AI cart-announcement suggest | â Shipped | \`feat/v5.5-cart-ai-suggest\` merged | 25| 12 | Partner signers directory | **Pending** | Depends on 8 | 26| 13 | AI newsletter auto-draft + schedule | **Pending** | Depends on 6 (done) | 27| 14 | AdminNavigation visibility toggle | â Shipped | \`feat/v5.5-nav-visibility\` merged | 28| 15 | Shared ImageInput (paste/upload/AI) | **Pending** | Blocked on storage RLS | 29| 16 | AdminPageContent raw JSON + AI fill | **Pending** | Depends on 6 (done) | 30| 17 | ProductDetail tier selector spacing | â Shipped | \`436ac38\` | 31 32**Scorecard:** 9 shipped · 1 in-progress · 1 blocked · 6 clean-pending. 33 34--- 35 36## New todos (this plan) 37 38### Todo 18 â Priority Support button opens chat widget 39 40**Problem.** The white "Priority Support" button on \`/account/tickets\` is non-functional â clickable but does nothing. User in the session sent a screenshot of the dead button. 41 42**Target.** Click fires \`document.getElementById('chatbase-bubble-button').click()\`, which opens whichever chat widget is configured in \`/account/admin/chatbot\` (Chatbase by default). Fallback: \`mailto:[email protected]?subject=Priority%20Support%20Request\` when no widget is present. 43 44**Files touched.** 45- \`src/pages/account/Tickets.jsx\` â add \`openChatWidget\` helper + \`onClick\`. 46 47**Verification.** 48- Navigate to \`/account/tickets\`. Click "Priority Support". Chatbase panel opens in bottom-right. 49- With widget disabled: click opens the user's mail client to the support address. 50 51**Out of scope for v1.** 52- Pre-filling the chat input with "Priority request from <user>". 53- Pulsing the button when ticket count is high. 54 55**Estimate.** 15 min. **Actual:** shipped on \`feat/v5.5-priority-support-chat\` (this branch). 56 57--- 58 59### Todo 19 â Replace /shop photos with AI-generated via Grok 60 61**Problem.** The \`/shop\` product thumbnails are a mix of stale Unsplash URLs and occasional hardcoded \`/images/products/*.jpg\` that don't exist. Visual consistency is poor. 62 63**Target.** Dispatch an agent using the \`generate-site-images\` skill (already installed â drives signed-in ChatGPT/Gemini/**Grok** tabs via the Claude-in-Chrome extension) to generate a fresh hero image per product. Save under \`public/images/generated/shop/<slug>.jpg\`. Update each product's \`image_url\` in the \`products\` table (and the fallback \`src/data/shopData.js\` entry) to the new asset path. 64 65**Approach.** 661. Dispatch the \`generate-site-images\` skill with a prompt template pointed at Grok's computer-use tab. 672. For each of the 22 shop products, generate one 1200Ã800 editorial hero in the site's visual language (dark, minimal, motion-blur accent â match existing hero style). 683. Write files into \`public/images/generated/shop/\`. 694. Batch-update \`products.image_url\` via \`UPDATE products SET image_url = ... WHERE slug = ...;\` â one commit per batch of 5 for reversibility.
705. Update \`shopData.js\` fallback entries in the same commit. 71 72**Files touched.** 73- \`public/images/generated/shop/<slug>.jpg\` Ã 22 (new). 74- \`src/data/shopData.js\` â swap \`image\` strings. 75- \`supabase/migrations/YYYYMMDD_shop_image_refresh.sql\` â one-shot UPDATEs. 76 77**Verification.** 78- \`/shop\` grid renders all 22 thumbnails with no broken images. 79- \`AdminProducts\` table matches. 80- Screenshots at lg + md + sm breakpoints. 81 82**Out of scope for v1.** 83- Product-detail hero backgrounds (current full-bleed headers stay). 84- Animated/video thumbnails. 85 86**Estimate.** 2-3 hrs (mostly image-generation round-trips). 87 88**Blocker.** Need Grok tab signed-in in Chrome. Operator confirms before dispatch. 89 90--- 91 92## Forward ship order 93 94Smallest wins first, then unblock dependents. 95 961. **Todo 18** (NEW) â Priority Support button. 15 min. **DONE on this branch.** 972. **Todo 8** â Messages counterparty + admin outbound. 3-4 hrs. Finish the UI on top of the merged RPC prep (\`08dc0cd\`). 983. **Todo 12** â Partner signers directory. 2-3 hrs. Reuses Todo 8's admin-user search pattern. 994. **Todo 16** â AdminPageContent raw-JSON + AI fill. 2-3 hrs. Todo 6 already shipped â unblocks AI section. 1005. **Todo 19** (NEW) â Grok image refresh for /shop. 2-3 hrs. Parallelizable with 16. 1016. **Todo 15** â Shared ImageInput. 3-4 hrs. Depends on storage RLS migration (see STATE.md #5). 1027. **Todo 7** â Mid-width sidebar hover-expand + pin. 2-3 hrs. 1038. **Todo 13** â AI newsletter auto-draft + scheduled send. 4-5 hrs. 1049. **Todo 1** â SEO + social sharing admin panel. 3-4 hrs. 10510. **Todo 4** â Shop inline / admin product editing. 4-6 hrs. Do last â biggest scope. 10611. **Todo 5** â OAuth Codex + Gemini. **Blocked** on operator OAuth registration. 107 108Total remaining (excluding blocked): **~22-31 hrs** across 10 todos. 109 110--- 111 112## Parked branches (do not delete, revisit later) 113 114From the 10 branches not merged into \`v5\` as of 2026-04-17: 115 116| Branch | Status | Revisit when | 117|---|---|---| 118| \`feat/dashboard-v3-light-shell-2026-04-13\` | parked | If v3 dashboard direction resumes | 119| \`feat/dashboard-redesign-2026-04-12\` | parked | Superseded-probably by v3 | 120| \`cloudflare-database\` | parked | If D1/Workers strategy resumes over Supabase | 121| \`tmp-phase-2-clean\` | parked | Admin user-drawer + activity feed â review later | 122| \`feat/image-generation-skill\` | parked | Contains skill file; conflicts with shipped \`AdminLLMKeys.jsx\`. Cherry-pick skill alone if wanted | 123| \`feat/nda-approval\` | parked | Same commit as v5 (via PR #15) â harmless | 124| \`fix/nda-gate\` | parked | Duplicate of \`feat/nda-approval\` â harmless | 125| \`feat/v5.5-messages-ui\` | parked | Contains only the chat-bubble delay already on v5 â harmless | 126| \`design/editorial-refresh\` | parked | Single "claude" commit with agent artifacts | 127| \`fix/audit-improvements-apr2026\` | parked | Pre-v5 audit â revisit if any specific fix is needed | 128 129--- 130 131## Workflow per todo 132 133\`\`\`bash 134git checkout v5 && git pull origin v5 135git checkout -b feat/v5.5-<track-name> 136# ship small, push often 137git push -u origin feat/v5.5-<track-name> 138# when done, open a PR or do a local: 139git checkout v5 && git merge --no-ff feat/v5.5-<track-name> 140# update STATE.md + append to CHANGELOG.md IN THE SAME COMMIT as the merge 141git push origin v5 142\`\`\` 143 144Update this file's reconciled-status table + append to \`2026-04-17-v5.5-running-log.md\` after every merge. 145`;export{e as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.