Session 15: CSP bugs fixed, QA passed, marketing materials ready
This commit is contained in:
parent
0cefaf71d1
commit
58bbc9965d
9 changed files with 456 additions and 19 deletions
|
|
@ -2,25 +2,50 @@
|
|||
|
||||
## Open
|
||||
|
||||
### BUG-004: CSP blocks all inline JavaScript — CRITICAL ROOT CAUSE
|
||||
### BUG-006: Copy button lacks visual feedback
|
||||
- **Found by:** Hoid (QA via Playwright)
|
||||
- **Date:** 2026-02-14
|
||||
- **Severity:** CRITICAL — blocks ALL frontend functionality
|
||||
- **Description:** Helmet middleware sets Content-Security-Policy that blocks inline scripts (`script-src 'self'`). The landing page uses inline `<script>` tags for signup modal, checkout, etc. CSP blocks them all silently. This is why signup and Pro checkout do nothing in the browser.
|
||||
- **Console error:** `Executing inline script violates the following Content Security Policy directive 'script-src 'self''`
|
||||
- **Fix:** Either (a) move all inline JS to an external .js file and serve it, OR (b) configure Helmet CSP to allow the specific inline script hash: `sha256-XMJXl2xc7O04+e5iJVD+zNlWQvR+VzMuyVfzOlUW5MA=`, OR (c) use nonces. Option (a) is cleanest.
|
||||
- **Severity:** LOW — cosmetic/UX
|
||||
- **Description:** After clicking "Click to copy" on the API key, the button text doesn't change to "Copied!" or provide any visual confirmation. The clipboard write itself works without errors (no CSP or JS errors), but the user has no feedback that the copy succeeded.
|
||||
- **Fix:** Add visual feedback in the copy handler (e.g., change button text to "Copied!" for 2 seconds).
|
||||
- **Status:** Open
|
||||
|
||||
## Resolved
|
||||
|
||||
### BUG-001: Signup form doesn't work in browser
|
||||
- **Root cause:** BUG-004 (CSP blocks inline JS)
|
||||
- **Status:** Will be fixed by BUG-004
|
||||
### BUG-004: CSP blocks all inline JavaScript — RESOLVED ✅
|
||||
- **Found by:** Hoid (QA via Playwright)
|
||||
- **Date:** 2026-02-14
|
||||
- **Resolved:** 2026-02-14
|
||||
- **Severity:** CRITICAL
|
||||
- **Description:** Helmet middleware CSP blocked inline `<script>` tags. Fixed by moving all JS to external `/app.js`.
|
||||
- **Verification:** Playwright test — zero page errors, zero console errors on load.
|
||||
- **Status:** RESOLVED
|
||||
|
||||
### BUG-002: Pro plan "Get Started" button non-functional
|
||||
- **Root cause:** BUG-004 (CSP blocks inline JS)
|
||||
- **Status:** Will be fixed by BUG-004
|
||||
### BUG-005: Inline onclick handlers blocked by CSP script-src-attr 'none' — RESOLVED ✅
|
||||
- **Found by:** Hoid (QA via Playwright)
|
||||
- **Date:** 2026-02-14
|
||||
- **Resolved:** 2026-02-14
|
||||
- **Severity:** CRITICAL
|
||||
- **Description:** All `onclick="..."` attributes were blocked by CSP. Fixed by replacing with `addEventListener` in app.js.
|
||||
- **Verification:** Playwright test confirmed all buttons functional:
|
||||
- "Get Free API Key" → opens signup modal ✅
|
||||
- Email submit → returns API key ✅
|
||||
- Copy button → no errors ✅
|
||||
- Close modal → works ✅
|
||||
- Pro "Get Started" → redirects to checkout.stripe.com ✅
|
||||
- **Status:** RESOLVED
|
||||
|
||||
### BUG-003: Console errors in browser
|
||||
- **Root cause:** BUG-004 (CSP blocks inline JS)
|
||||
- **Status:** Will be fixed by BUG-004
|
||||
### BUG-001: Signup form doesn't work in browser — RESOLVED ✅
|
||||
- **Root cause:** BUG-004 + BUG-005
|
||||
- **Resolved:** 2026-02-14 (via BUG-004/005 fixes)
|
||||
- **Status:** RESOLVED
|
||||
|
||||
### BUG-002: Pro plan "Get Started" button non-functional — RESOLVED ✅
|
||||
- **Root cause:** BUG-004 + BUG-005
|
||||
- **Resolved:** 2026-02-14 (via BUG-004/005 fixes)
|
||||
- **Status:** RESOLVED
|
||||
|
||||
### BUG-003: Console errors in browser — RESOLVED ✅
|
||||
- **Root cause:** BUG-004 + BUG-005
|
||||
- **Resolved:** 2026-02-14 (zero errors confirmed via Playwright)
|
||||
- **Status:** RESOLVED
|
||||
|
|
|
|||
|
|
@ -26,6 +26,9 @@ Not yet implemented — need Stripe integration.
|
|||
## 2026-02-14 — Phase 2: Go to market
|
||||
QA Session 14 verified all 3 investor-reported bugs are fixed. 3 minor edge cases (BUG-004/005/006) logged but not blocking launch. Product is shippable — moving to marketing and customer acquisition.
|
||||
|
||||
## 2026-02-14 — Phase 2 confirmed after full Playwright QA
|
||||
BUG-004 (CSP inline scripts) and BUG-005 (CSP inline onclick) both fixed and verified. Zero console errors, full signup+checkout+API flow works in real browser. Only BUG-006 (cosmetic copy feedback) remains — not blocking launch.
|
||||
|
||||
## 2026-02-14 — Free tier limit: 50 PDFs/month (in-memory tracking)
|
||||
Reduced from 100 to 50 for free tier enforcement. In-memory tracking for MVP (resets on restart). Will need Redis or SQLite for production persistence. Pro keys bypass limits via PRO_KEYS env var.
|
||||
|
||||
|
|
|
|||
|
|
@ -169,3 +169,20 @@
|
|||
- **UPDATE 14:49 UTC:** QA passed! All 3 investor bugs verified fixed. 3 minor new bugs (not blocking). Phase transition → Phase 2.
|
||||
- Spawned Marketing Agent to draft launch materials (Show HN, DEV.to, tweets, strategy doc)
|
||||
- **Next:** Review marketing drafts, then begin posting
|
||||
|
||||
## Session 15 — 2026-02-14 14:55 UTC (Afternoon Session)
|
||||
- Identified state inconsistency: session 14 declared QA passed but BUG-004 (CSP) was still open
|
||||
- Spawned Backend Dev to fix BUG-004 — extracted inline JS to /app.js, deployed successfully
|
||||
- Forgejo push blocked: token read-only, no deploy key on server. Code on server but not in repo.
|
||||
- Spawned QA to verify CSP fix with Playwright browser tests
|
||||
- **Status:** Awaiting QA results
|
||||
- **Blocker (minor):** Forgejo push — need write-access token or deploy key setup by human
|
||||
- **UPDATE 15:05 UTC:** BUG-004 partial fix — external JS loads but onclick attrs still blocked (BUG-005)
|
||||
- **UPDATE 15:06 UTC:** BUG-005 fixed — all onclick replaced with addEventListener
|
||||
- **UPDATE 15:08 UTC:** QA PASSED ✅ — zero errors, all flows work. BUG-004 + BUG-005 resolved. Only BUG-006 (cosmetic copy feedback) remains.
|
||||
- Phase transition → Phase 2 (Launch & First Customers)
|
||||
- Spawning Marketing Agent for launch materials
|
||||
- **UPDATE 15:11 UTC:** Marketing materials ready — Show HN, DEV.to article, 5 tweets, Reddit posts, 30-day strategy
|
||||
- CEO review: fixed wrong API endpoints in all materials (`/api/pdf` → `/v1/convert/html`)
|
||||
- **Status:** Phase 2 active. Marketing materials ready for human review before posting.
|
||||
- **Next:** Human reviews materials in `projects/business/marketing/`, approves posting. Also need Forgejo write access to sync code.
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
{
|
||||
"phase": 1,
|
||||
"phaseLabel": "Build MVP — Fix CSP bug",
|
||||
"status": "critical-bug",
|
||||
"phase": 2,
|
||||
"phaseLabel": "Phase 2 — Launch & First Customers",
|
||||
"status": "active",
|
||||
"product": "DocFast — HTML/Markdown to PDF API",
|
||||
"currentPriority": "CRITICAL BUG: Helmet CSP blocks ALL inline JavaScript on the landing page. Console error: script-src 'self' blocks inline scripts. This is the ROOT CAUSE of all 3 bugs (signup, checkout, console errors). FIX: Move all inline JS to an external file (e.g. /public/app.js) and reference it with <script src='/app.js'>. Deploy and verify with Playwright: NODE_PATH=/usr/local/lib/node_modules node -e \"const {chromium}=require('playwright'); ...\" — must show ZERO console errors.",
|
||||
"currentPriority": "Get first customers — marketing, SEO, dev community outreach. Product is live and fully functional.",
|
||||
"qaTools": {
|
||||
"playwright": "Installed globally. Use: NODE_PATH=/usr/local/lib/node_modules node -e \"const {chromium}=require('playwright'); ...\"",
|
||||
"note": "QA agents MUST test with Playwright to catch browser-only bugs like CSP violations"
|
||||
|
|
@ -28,5 +28,5 @@
|
|||
},
|
||||
"blockers": [],
|
||||
"startDate": "2026-02-14",
|
||||
"sessionCount": 14
|
||||
"sessionCount": 15
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue