DocFast session 86: branded email, state update
This commit is contained in:
parent
98d148fa95
commit
6116b41cdb
5 changed files with 82 additions and 48 deletions
28
memory/2026-02-23.md
Normal file
28
memory/2026-02-23.md
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
# 2026-02-23 (Monday)
|
||||||
|
|
||||||
|
## Key Events
|
||||||
|
- Woke up ~7am Vienna, reported falling asleep shortly after midnight (good for him)
|
||||||
|
- **Chair testing** at 13:00 — Andere Perspektive, Absberggasse 29/Top 6 (Herman Miller Embody)
|
||||||
|
- No report back on how the chair was — ask tomorrow
|
||||||
|
|
||||||
|
## Work/Tech
|
||||||
|
- SnapAPI CEO: Sessions 14-16 — SDKs (Node.js + Python) created, competitive analysis, tabbed landing page examples
|
||||||
|
- DocFast CEO: Sessions 81-84 — DB cleanup system, rate limit headers, bug fixes (wrong API URLs in examples), WCAG audit
|
||||||
|
- Both products blocked on: production tags, CI runner, various tokens
|
||||||
|
- Asked about Claude Code agent team models (for another project, not DocFast/SnapAPI)
|
||||||
|
|
||||||
|
## Evening
|
||||||
|
- Researched SSH clients for iOS — tried Termius, has scroll issues with tmux/screen
|
||||||
|
- Explored alternatives: Blink Shell (costs money), iSH (FOSS)
|
||||||
|
- Decided on tmux over screen
|
||||||
|
- Reminder set: install tmux on Mac Mini and dev host
|
||||||
|
- Nose shower done ✅
|
||||||
|
- Wind-down ~22:30 Vienna — decent timing
|
||||||
|
|
||||||
|
## Reminders Triggered
|
||||||
|
- iPhone 15 case for friend
|
||||||
|
- GBV maintenance contract list for 2025
|
||||||
|
- Chair appointment at 13:00
|
||||||
|
|
||||||
|
## Portfolio
|
||||||
|
- DFNS: €58.85 close, +4.66% total P&L, slight pullback from €60.49 Thursday
|
||||||
|
|
@ -1,41 +1,14 @@
|
||||||
{
|
{
|
||||||
"date": "2026-02-22",
|
"date": "2026-02-23",
|
||||||
"events": [
|
"events": [
|
||||||
{
|
{"time": "20:07", "activity": "Wind-down check-in sent. Suggested Askir audiobook.", "source": "heartbeat"},
|
||||||
"time": "19:00",
|
{"time": "21:30-22:20", "activity": "Tinkering with SSH clients on iOS (iSH, tmux, screen). Light tech rabbit hole.", "source": "chat"},
|
||||||
"activity": "Gaming BG3 since morning — Act 3, level 8, good relaxation day",
|
{"time": "22:20", "activity": "Nose shower done ✅", "source": "chat"},
|
||||||
"source": "heartbeat"
|
{"time": "22:20", "activity": "Said 'I wanna try this and then stop' — winding down", "source": "chat"},
|
||||||
},
|
{"time": "~00:00", "activity": "No messages after 22:30. Likely asleep by midnight.", "source": "estimate"}
|
||||||
{
|
|
||||||
"time": "19:02",
|
|
||||||
"activity": "Nose shower reminder sent + tomorrow calendar reminder (chair testing 13:00)",
|
|
||||||
"source": "heartbeat"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"time": "22:00",
|
|
||||||
"activity": "Still gaming BG3 — exploring Rivington, Shadowheart quest, House of Grief",
|
|
||||||
"source": "heartbeat"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"time": "22:02",
|
|
||||||
"activity": "Second nose shower reminder sent, confirmed done ✅",
|
|
||||||
"source": "heartbeat"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"time": "23:00",
|
|
||||||
"activity": "Still gaming BG3 — suggested stopping, no response",
|
|
||||||
"source": "heartbeat"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"time": "23:55",
|
|
||||||
"activity": "Last message: 8 Mile download reminder request. Nudged to sleep.",
|
|
||||||
"source": "heartbeat"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"time": "03:00+",
|
|
||||||
"activity": "No response after midnight nudge — likely went to sleep around 01:00-02:00",
|
|
||||||
"source": "heartbeat-estimate"
|
|
||||||
}
|
|
||||||
],
|
],
|
||||||
"summary": "Great wind-down day — BG3 gaming all day. Nose shower done. Went to bed late again (~1-2am) despite nudge at 23:00. Pattern continues."
|
"yesterday": {
|
||||||
|
"sleep": "~midnight (reported fell asleep shortly after midnight)",
|
||||||
|
"summary": "BG3 gaming day, nose shower done, sleep ~midnight"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1859,6 +1859,28 @@
|
||||||
- Full audit: mobile, legal, compression, security headers, structured data, error handling
|
- Full audit: mobile, legal, compression, security headers, structured data, error handling
|
||||||
- Competitive analysis: well-positioned on pricing
|
- Competitive analysis: well-positioned on pricing
|
||||||
|
|
||||||
|
## Session 86 — 2026-02-24 07:00 UTC (Tuesday Morning)
|
||||||
|
- **Production:** v0.4.3 ✅ healthy (259k seconds uptime, ~3 days)
|
||||||
|
- **Staging:** v0.4.5 (commit 94586e3) ✅ healthy — CI hasn't built latest commit yet
|
||||||
|
- **Support:** Zero tickets
|
||||||
|
- **K8s cluster:** All 3 nodes Ready (k3s-mgr, w1, w2). Prod: 2 replicas, staging: 1 replica. Zero restarts.
|
||||||
|
- **DB stats:** 57 keys (1 pro, 56 free legacy), 4,178 total PDFs, 10 active keys
|
||||||
|
- **Improvements shipped (commit 272c03c):**
|
||||||
|
1. **Branded HTML verification email** — dark theme (#0a0a0a bg, #44ff99 accent), prominent code display in styled box, plain-text fallback, DocFast branding footer
|
||||||
|
2. **Fixed stale `df_free_` placeholder** — email change modal now shows only `df_pro_...` (free tier discontinued)
|
||||||
|
- **CI runner offline** — commit 272c03c pushed to main but not yet building. Same issue as session 81.
|
||||||
|
- **Codebase audit findings:**
|
||||||
|
- Graceful shutdown ✅ (SIGTERM/SIGINT handlers)
|
||||||
|
- Request ID tracking ✅ (X-Request-Id header)
|
||||||
|
- SSRF protection ✅ (DNS pinning + private IP block)
|
||||||
|
- DB connection resilience ✅ (client.release(true) on transient errors)
|
||||||
|
- Usage write-behind with batch flush ✅
|
||||||
|
- All routes properly typed and documented ✅
|
||||||
|
- No new bugs found
|
||||||
|
- **Investor Test:** All 5 ✅
|
||||||
|
- **Budget:** €181.71 remaining, Revenue: €9
|
||||||
|
- **Pending:** CI runner, prod tag approval (24 commits ahead), SDK tokens, GSC verification
|
||||||
|
|
||||||
## Session 85 — 2026-02-23 19:00 UTC (Monday Evening)
|
## Session 85 — 2026-02-23 19:00 UTC (Monday Evening)
|
||||||
- **Production:** v0.4.3 ✅ healthy (216k seconds uptime)
|
- **Production:** v0.4.3 ✅ healthy (216k seconds uptime)
|
||||||
- **Staging:** v0.4.5 (commit 94586e3) ✅ healthy
|
- **Staging:** v0.4.5 (commit 94586e3) ✅ healthy
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,8 @@
|
||||||
"phase": 1,
|
"phase": 1,
|
||||||
"phaseLabel": "Build Production-Grade Product",
|
"phaseLabel": "Build Production-Grade Product",
|
||||||
"status": "launch-ready",
|
"status": "launch-ready",
|
||||||
"product": "DocFast \u2014 HTML/Markdown to PDF API",
|
"product": "DocFast — HTML/Markdown to PDF API",
|
||||||
"currentPriority": "Staging on 94586e3 — all fixes deployed (db cleanup, rate headers, examples URLs, SDK notes, a11y labels). 7 commits ahead of prod (v0.4.3). Need investor approval for prod tag. Still need npm/PyPI tokens for SDKs + GSC verification.",
|
"currentPriority": "Staging on 272c03c — branded email template + placeholder fix. 24 commits ahead of prod (v0.4.3). CI runner offline. Need investor approval for prod tag. Still need npm/PyPI tokens for SDKs + GSC verification.",
|
||||||
"ownerDirectives_PRIORITY": "Process these IN ORDER. Do not skip. Remove items marked ✅ DONE/FIXED during housekeeping.",
|
"ownerDirectives_PRIORITY": "Process these IN ORDER. Do not skip. Remove items marked ✅ DONE/FIXED during housekeeping.",
|
||||||
"ownerDirectives": [
|
"ownerDirectives": [
|
||||||
"Stripe Product ID for DocFast: prod_TygeG8tQPtEAdE — webhook handler must filter by this product_id to ignore events from other projects on the same Stripe account."
|
"Stripe Product ID for DocFast: prod_TygeG8tQPtEAdE — webhook handler must filter by this product_id to ignore events from other projects on the same Stripe account."
|
||||||
|
|
@ -23,7 +23,7 @@
|
||||||
"rateLimitsDataBacked": true,
|
"rateLimitsDataBacked": true,
|
||||||
"landingPageHonest": true,
|
"landingPageHonest": true,
|
||||||
"legalPages": true,
|
"legalPages": true,
|
||||||
"legalPagesNote": "Impressum, Privacy Policy, Terms of Service \u2014 all live",
|
"legalPagesNote": "Impressum, Privacy Policy, Terms of Service — all live",
|
||||||
"euHostingMarketed": true,
|
"euHostingMarketed": true,
|
||||||
"jsDisabledInPdf": true,
|
"jsDisabledInPdf": true,
|
||||||
"zeroConsoleErrors": true,
|
"zeroConsoleErrors": true,
|
||||||
|
|
@ -31,7 +31,7 @@
|
||||||
"securityAuditPassed": true,
|
"securityAuditPassed": true,
|
||||||
"healthEndpointComplete": true,
|
"healthEndpointComplete": true,
|
||||||
"cicdPipeline": true,
|
"cicdPipeline": true,
|
||||||
"cicdPipelineNote": "Forgejo Actions with no-cache builds. Push main\u2192staging, tag v*\u2192prod. Fixed session 56.",
|
"cicdPipelineNote": "Forgejo Actions with no-cache builds. Push main→staging, tag v*→prod. Fixed session 56.",
|
||||||
"reproducibleInfra": true,
|
"reproducibleInfra": true,
|
||||||
"proLimitsSet": true,
|
"proLimitsSet": true,
|
||||||
"proLimitsNote": "5,000 PDFs/month for Pro. Enforced in usage middleware.",
|
"proLimitsNote": "5,000 PDFs/month for Pro. Enforced in usage middleware.",
|
||||||
|
|
@ -44,7 +44,9 @@
|
||||||
"compressionWorking": true,
|
"compressionWorking": true,
|
||||||
"compressionNote": "Gzip via `compression` package. Verified on production 2026-02-19.",
|
"compressionNote": "Gzip via `compression` package. Verified on production 2026-02-19.",
|
||||||
"freeAccountsRemoved": true,
|
"freeAccountsRemoved": true,
|
||||||
"demoEndpointLive": true
|
"demoEndpointLive": true,
|
||||||
|
"brandedEmails": true,
|
||||||
|
"brandedEmailsNote": "HTML verification emails with dark theme, prominent code display. Commit 272c03c."
|
||||||
},
|
},
|
||||||
"loadTestResults": {
|
"loadTestResults": {
|
||||||
"k3s_current": {
|
"k3s_current": {
|
||||||
|
|
@ -63,7 +65,7 @@
|
||||||
"email": "noreply@docfast.dev",
|
"email": "noreply@docfast.dev",
|
||||||
"supportEmail": "support@docfast.dev (FreeScout)",
|
"supportEmail": "support@docfast.dev (FreeScout)",
|
||||||
"backups": "CNPG WAL archiving + MinIO. Daily 03:00 UTC, 7-day retention.",
|
"backups": "CNPG WAL archiving + MinIO. Daily 03:00 UTC, 7-day retention.",
|
||||||
"smtp": "mail.cloonar.com:587 \u2014 MANAGED BY CLOONAR. DO NOT DEPLOY OWN MAIL SERVER. Verified working 2026-02-19."
|
"smtp": "mail.cloonar.com:587 — MANAGED BY CLOONAR. DO NOT DEPLOY OWN MAIL SERVER. Verified working 2026-02-19."
|
||||||
},
|
},
|
||||||
"credentials": {
|
"credentials": {
|
||||||
"file": "/home/openclaw/.openclaw/workspace/.credentials/docfast.env",
|
"file": "/home/openclaw/.openclaw/workspace/.credentials/docfast.env",
|
||||||
|
|
@ -78,10 +80,13 @@
|
||||||
"CRITICAL": [],
|
"CRITICAL": [],
|
||||||
"HIGH": [],
|
"HIGH": [],
|
||||||
"MEDIUM": [],
|
"MEDIUM": [],
|
||||||
"LOW": [],
|
"LOW": ["BUG-053: JS not minified (cosmetic)"],
|
||||||
"note": "All clear. SMTP is mail.cloonar.com:587 \u2014 tested and verified working."
|
"note": "All clear. SMTP is mail.cloonar.com:587 — tested and verified working."
|
||||||
},
|
},
|
||||||
"blockers": [],
|
"blockers": [
|
||||||
|
"CI runner offline — new commits pushed but not building",
|
||||||
|
"Production tag approval needed (24 commits ahead)"
|
||||||
|
],
|
||||||
"startDate": "2026-02-14",
|
"startDate": "2026-02-14",
|
||||||
"sessionCount": 85
|
"sessionCount": 86
|
||||||
}
|
}
|
||||||
|
|
@ -1,5 +1,11 @@
|
||||||
# SnapAPI Session Log
|
# SnapAPI Session Log
|
||||||
|
|
||||||
|
## Session 16b — 2026-02-23 20:00 UTC (Skipped)
|
||||||
|
|
||||||
|
Skipped — 3 reports already sent today (08:00, 14:00, 17:00). Production healthy. No investor responses. No new work.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Session 16 — 2026-02-23 17:00 UTC (Landing Page SDK Showcase + Deploy)
|
## Session 16 — 2026-02-23 17:00 UTC (Landing Page SDK Showcase + Deploy)
|
||||||
|
|
||||||
**Goal:** Deploy SDK code examples to landing page, get image onto staging.
|
**Goal:** Deploy SDK code examples to landing page, get image onto staging.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue