Add the ability to use custom urls - #8
Merged
Conversation
pftg
reviewed
May 22, 2024
Member
There was a problem hiding this comment.
can we use devto_urls_mapping.csv or use _ instead of -
pftg
reviewed
May 22, 2024
| end | ||
|
|
||
| pp "TODO: Need to uncomment canonical url update when blog will be live." | ||
| pp 'TODO: Need to uncomment canonical url update when blog will be live.' |
pftg
requested changes
May 22, 2024
pftg
left a comment
Member
There was a problem hiding this comment.
@dgorodnichy please add readme how to provide custom name for blog post from dev.to
pftg
approved these changes
May 22, 2024
pftg
added a commit
that referenced
this pull request
Apr 10, 2026
…inks Expanded from 5 signs to 8, adding JetThoughts-specific signals: - #3 "Every deploy breaks something" (no tests → deployment fear) - #4 "They won't refactor" (technical debt compounds) - #5 "No transparency" (no reports, no demos) - #8 "You feel afraid to ask questions" (emotional signal) Internal links expanded from 6 to 12 unique JetThoughts posts: - Added: Shape Up, fixing slow teams, code quality evaluation, onboarding checklist, red flags in big PRs, knowing what team does - "Finding the Next Partner" section now references specific practices (daily deploys, CI/CD, async standups, delivery flow, onboarding) - Closing section replaced with 7 internal link list to practice posts Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
pftg
added a commit
that referenced
this pull request
Apr 29, 2026
…6-05-06 Full pipeline executed end-to-end: - Drafter agent: 1820 words, 5 verified internal links, 5 external citations (Bug0 2026, Osmani 80% problem, Stack Overflow 2025, GitClear 2025, Veracode 2025). Three rescue stories with industry/quarter/version/dollars. - Round 1 (3 critics): founder persona 6.5/10, SEO/slop 6/10, editor "minor". Synthesized 10 fixes: lead with healthtech founder story (founder's #1 ask), cut consultant-speak, vary section openers, kill slogany closer. - Round 2 (3 NEW critics): senior dev caught Osmani title fact-check, copywriter caught compass-metaphor TED-talk, AI detector caught three "Not X - Y" patterns. 9 fixes applied. - Round 3 (3 NEW critics): DevOps practitioner 7/10 ("missing the smell of an actual on-call shift" - added Honeycomb p99 detail, named SQL injection vector); conversion optimizer 6.5/10 ("biggest attention drop is Osmani paragraph") - inserted primary CTA after Section 5 peak-pain moment; tired reader Lisa skimmed past section 5 - confirmed CTA placement fix was correct. - Cold-eyes Agent 4 (LLM-enforced final gate per docs/workflows/blog-pipeline.md STEP 5c): 9/9 PASS, PUBLISH-READY. Frontmatter consistency, no fluffy narration, no fake authority, no timeline fabrication, no "Not X but Y", no em dashes, no rule-of-three triads, no template repetition, no impersonal fragments. - Cover image: duplicate of vibe-coding-crisis template, customized for Quality Tax ($60-90K headline gradient, BUG0/OSMANI/RESCUE BOOK chips), rendered 2400x1260x2 via chrome-devtools, Lanczos downsample to 2400x1260. Status: draft:true, date:2026-05-06. Hugo respects future-dated content; flip the flag on May 6 with no further work needed. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
pftg
added a commit
that referenced
this pull request
Apr 30, 2026
Reader-experience agent's #1 conversion finding: end-of-article CTAs were invisible (italic line / inline blue link / nothing at all). After 11-12 min reading, ICP-E hit the bottom and visually defaulted to "I guess that's it?" Highest-intent moment, weakest visual treatment. CSS (themes/beaver/assets/css/style.css): - .blog .cta-link: Ruby red background (#cc342d), white text, 14/28 padding, 8px radius, 600 weight, no underline - :hover state, :visited state, mobile breakpoint (full-width centered on phones with adjusted padding) - Selectors: .blog p a.cta-link / .blog li a.cta-link / .blog .cta-link override the body link styles Posts adopted (replaced markdown link with inline HTML <a class="cta-link">): - fire-dev-shop-guide (post #1) - "Get an honest audit" - 47-startups-failed-same-coding-mistake (post #5) - "Book a 45-minute codebase health check" - rails-event-structured-logging-8-1 (post #6) - "Book the free monitoring audit" - hiring-dev-shop-questions (post #7) - "Book the 45-minute checklist call" - quality-tax-ai-mvp-cost (post #8) - "Send your repo for the read" Verified visually at /tmp/typo-sprint2-after-cta-link.png. Hugo build clean (655 pages, 1494 non-page files). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
pftg
added a commit
that referenced
this pull request
Apr 30, 2026
…d bin/dtest to test gate User flagged 2026-04-30 that data-dense paragraphs (e.g. Quality Tax post section 2: '$34K -> $4K -> $19K -> $38K -> 9.5x -> $72K') buried the financial story in plain prose. Founders skim for numbers; bold rendering helps the eye land. Per the voice-guide "Data emphasis" rule (added in commit 1712b60): - Bold percentages, currency, sizes, latencies, multipliers, rescue counts - Don't bold common nouns (Rails, Ruby, AI) - Skip fields already in code blocks or external quotes 128 data points bolded across 11 posts (10 most recent + the user's Quality Tax #8 example): - ruby-on-rails-performance-optimization-patterns-2026 (12) - fire-dev-shop-guide (14) - solid-trifecta-hybrid-redis-rails-8 (13) - rails-8-1-active-job-continuations-end-lost-background-jobs (10) - vibe-coding-crisis-ai-code-debt (14) - 47-startups-failed-same-coding-mistake (16) - dev-shop-red-flags-checklist (12) - founders-guide-hiring-dev-shop (2 - sparse pillar overview) - rails-event-structured-logging-8-1 (9) - hiring-dev-shop-questions (13) - quality-tax-ai-mvp-cost (heavy pass; user's flagged section) Also: CLAUDE.md visual regression gate now requires BOTH bin/test (macOS host) AND bin/dtest (Linux/Docker). CI runs Linux, so a green PR locally that skipped bin/dtest will break the build. Both must pass before commit. bin/test passed: 42 runs, 116 assertions, 0 failures, 84 screenshots compared, 0 diffs. Hugo build clean. bin/dtest follow-up: 81 Linux baselines pending update from prior sprints. Will be handled in a separate commit after running bin/dtest fresh to confirm they reflect the fully-fixed state. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
pftg
added a commit
that referenced
this pull request
May 1, 2026
…6-41316 Two posts shipped: 1. Post #8 "The Quality Tax: AI MVPs Cost More to Fix" - already passed full 9-persona + cold-eyes pipeline pre-PR. Flipped draft: true → false and adjusted date 2026-05-06 → 2026-05-02 to publish today instead of future-dated (Hugo would otherwise hide it). 2. Post B "The Rails CVE Your Dev Shop Skipped" - new draft for the April 21, 2026 universal RCE disclosure (CVE-2026-41316). Abbreviated team- mode pipeline: draft → Round 1 3-critic loop (founder/SEO-slop/copy editor) → cold-eyes Agent 4 final gate (9/9 PUBLISH-READY, zero edits). Round 1 caught heavier triadic patterns than post A: 3 rule-of-three triads, 4 parallel-template paragraphs, 1 duplicate slogan, opening jargon dump - all rewritten before cold-eyes. ~1500 body words, 5 internal links, 6 external citations. Cover image: monospace "CVE-41316" identifier + red→purple gradient "8.1 / 10" severity + Ruby gem with alert glow. Build green. Both news-pegged: posts A (PocketOS), #8 (Quality Tax), and B (Rails CVE) ship inside the same 2-week trend window the 4-agent research synthesis identified. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
pftg
added a commit
that referenced
this pull request
May 2, 2026
…nds) (#310) * docs(content): 4-agent research synthesis - revise content plan Cross-validated 14-day signal scan (Apr 17 - May 1, 2026) across 4 parallel research agents (Rails, AI/vibe-coding, founder forums, competitor publishing): - PocketOS database wipe (Apr 25, 851 HN points, 30hr outage) - inserted as urgent post A (publish 2026-05-04, news-pegged time-decays) - Rails CVE-2026-41316 universal RCE (Apr 21) - inserted as B (May 7) - 6 additional posts from cross-agent signals: NEW-C2 founder trust voice (Apr 20 IG), NEW-D2 AI token bill (Apr 23 Pragmatic Engineer), NEW-E agency-uses-AI (Apr 30 Wilbur Labs + Amazon rollback), NEW-F Rails 7 EOL, NEW-G retros founder edition, NEW-H PaaS bill trap Dropped #16 Budget Creep (generic angle). Merged #10 into NEW-E (sharper Apr 30 hook). Stream ratio: 13:7:7 Founders:Rails:AI (27 posts total). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * publish(blog): post A "9 Seconds: An AI Agent Wiped a Live SaaS" News-pegged ICP-E post on the April 25, 2026 PocketOS incident (Cursor + Claude + Railway stack deleted production DB and backups in 9 seconds, 30hr outage). Full team-mode pipeline: 3-round 9-persona critic loop (founder persona, SEO-slop, copy editor, senior dev, copywriter, AI detector, DevOps practitioner, conversion optimizer, tired founder reader) + cold-eyes Agent 4 final gate (9/9 checks PUBLISH-READY). ~1500 body words, 5 internal links, 6 external citations, primary keyword in first sentence. Cover image: strike-through database SVG with 30hr/HN/ backup-gap chips. Build green, zero console errors, mobile renders clean. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * publish(blog): post #8 Quality Tax (flip live) + post B Rails CVE-2026-41316 Two posts shipped: 1. Post #8 "The Quality Tax: AI MVPs Cost More to Fix" - already passed full 9-persona + cold-eyes pipeline pre-PR. Flipped draft: true → false and adjusted date 2026-05-06 → 2026-05-02 to publish today instead of future-dated (Hugo would otherwise hide it). 2. Post B "The Rails CVE Your Dev Shop Skipped" - new draft for the April 21, 2026 universal RCE disclosure (CVE-2026-41316). Abbreviated team- mode pipeline: draft → Round 1 3-critic loop (founder/SEO-slop/copy editor) → cold-eyes Agent 4 final gate (9/9 PUBLISH-READY, zero edits). Round 1 caught heavier triadic patterns than post A: 3 rule-of-three triads, 4 parallel-template paragraphs, 1 duplicate slogan, opening jargon dump - all rewritten before cold-eyes. ~1500 body words, 5 internal links, 6 external citations. Cover image: monospace "CVE-41316" identifier + red→purple gradient "8.1 / 10" severity + Ruby gem with alert glow. Build green. Both news-pegged: posts A (PocketOS), #8 (Quality Tax), and B (Rails CVE) ship inside the same 2-week trend window the 4-agent research synthesis identified. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
pftg
added a commit
that referenced
this pull request
Jul 11, 2026
…es, citations, covers (40.17) (#354) * feat(course): branch-aware nav strip + walkthrough nav + ranked entry orientation (40.17 P1 #1-2) - course-prev-next partial: sequence entries may declare 'branches' (2.4 run-interviews loop, 2.5 build/pivot/kill gate, 5.1 core-vs- optional) so the strip never contradicts the footer routing - frontmatter fallback (course_nav_prev/next) puts the strip on the 5 Mia walkthroughs + vibe-prd-template; M5 walkthrough now exits to the landing Going-further section instead of dead-ending - glossary utility link under every strip (glossary was reachable from one landing card only) - landing orientation line ranked: Ch0 first, quickstart as the time-poor alternative Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V * fix(course): rewrite the two RED legacy companions - worksheet gate + stack-walkthrough pace (40.17 P1 #4-5) build-path-decision-worksheet: - Q1 gate now matches 4.1 canon (M1-M2 evidence; pre-orders explicitly deferred to Module 5) - no more false 'not ready' bounce - route ghosts 6A/6B/5.2/Module-2-retake replaced with real slugs - Q2 jargon translated to Sam-answerable plain English self-serve-stack-walkthrough: - reframed from 4-week full-time to session-based with the 10-week evenings pace as primary (matches 4.4 + Mia canon) - webhook debugging is Dashboard-first; Stripe CLI demoted to optional branch (keeps 4.3's no-terminal promise) - 2 dead docs.stripe.com URLs replaced with verified 200s +9 ratchet signatures for the removed defects Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V * fix(course): citations, glossing, scannability + 5.6 completion moment (40.17 P1 #3/6, P2 #7/11-14, P3 #15-17/20) Citations (all replacements curl-verified 200): - 30 dead external links replaced across 18 files (Steve Blank, Lenny, YC Library, First Round, SaaStr, Stripe docs, Vanta, ICANN, Snyk, Veracode, Octoverse, ProfitWell->Paddle, Bolster, Wes Kao, Pragmatic Engineer, latent.space, Simon Willison; 2 archive.org snapshots for JTBD sources); dead gocofound.com removed entirely (DNS gone) - fabricated '47% of all merged PRs' Octoverse stat corrected to the sourced ~46%-of-code-by-Copilot-users figure Journey fixes: - 5.6 footer now declares the core course COMPLETE and routes finishers to Going-further (graduation was stranded on optional 5.7) - H2 subheadings added to 1.2-1.5 (four ~1,000-word walls, zero headings); glossary grammar bug + softened rescue lede; glossary and FAQ forward CTAs; validation-tools-field-guide linked from 1.1 - 2.4 research-panel cost explained ($0 default vs paid shortcut) - glosses at first mention: ICP/SOW (4.1), IP/DBA (4.2), Calendly (5.4), Apollo/Sales Navigator (5.7), CSV/CRM (3.2), SKU (churn), Cursor (vibe-prd-template); 4.3 'Modules 1-4' slip + prototype-reuse repetition trimmed; quickstart fear anchor $10K+ -> $30K+ - 5.3 network-buckets.svg stale '8.1' -> '5.1'; friday-demo-template demo credential un-mailto'd; churn/pivot 'X of N' denominators dropped; hire-track named consistently +30 ratchet signatures for the removed defects Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V * fix(course): cover/badge reconciliation - 10 covers regenerated (40.17 P2 #8-9) Wrong-promise badges fixed: 2.4 (Clay+Lindy/$200-500 -> Gmail+list/$0 panels optional), 4.1 (Keep/Rebuild rescue tree -> 4 build paths, 30min -> 14min), 4.5 (Module 4B -> OPTIONAL Next 5.1), ownership-checklist (Hostage list -> 12-row ownership audit), outreach-sequence-template (Clay+Lindy -> Gmail+NeetoCal+Reddit), 1.1 (TIME 90 min -> EXERCISE 90 min vs the 6-min-read byline) Cover reuse killed: distinct covers for 5.4 (message variants + Loom) and 5.5 (reply tracker) - both previously byte-identical to 5.3's; new Going-Further covers for churn (leaky bucket) and pivot (decision ledger) - both previously reusing 5.1's Sean Ellis gauge Stale metadata aligned: 4.1 + 2.4 cover_image_alt describe the new art; churn og_title old-spine '7.5 ·' prefix dropped Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V * fix(course): cold-eyes review round - source-truth 3 slopsquatting claims + worksheet signal attribution Diff-regression reviewer verified the fixes against their cited sources: - 'Snyk reproduction confirmed rate had not improved' - not in the cited article; now states the supported ~1-in-5 hallucination rate - ToxicSkills 13.4% re-stamped to the real frame (534 ClawHub skills, Feb 2026) and the fabricated June-Sept-vs-Q1 trajectory dropped - fabricated '12 codebases with hallucinated requestz' replaced with the article's real huggingface-cli 30k-download datapoint - worksheet Good-example 8% now attributed to email sign-ups (the 1.4 'Promising' band), not the 1.5 Buy-button price test +3 ratchet signatures Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V * docs(course): 40.17 execution log + tracker - ICP journey fix sprint complete Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V * fix(course): address PR #354 review - CodeRabbit 15 comments + premium anchor-text class Premium bar (user-reported): raw course paths as visible anchor text replaced with named anchors (2.1 Mom Test script, 4.2 ownership checklist); class ratchet-banned CodeRabbit review comments (all 15 verified and addressed): - worksheet: Q1 metric un-conflated (Promising band = 1.4 email sign-ups, not the 1.5 Buy button); verdict table aligned with the authoritative Q1-Q5 flow (Path 2/3/4 conditions now partition every answer combination) - stack-walkthrough: verify_jwt-off + Stripe-Signature verification step added (deliveries 401 otherwise); AI-paste debugging now says redact PII/secrets; idempotency upgraded to atomic unique-constraint event ledger; Stripe checklist scoped to the one wired event; PostHog/Plausible replay capability untangled - slopsquatting: three unsupported production-incident bullets removed (cited article covers a different attack); further-reading annotation neutralized - 4.2: current ICANN Transfer Policy URL + precise code-release/ transfer-release/60-day-lock timing - counts: 'Seven platforms ranked' / 'The 7 platforms ranked' / 'seven-row list' -> six after gocofound removal - demo credential founder@test.com/demo1234 -> demo@example.com everywhere (incl. 2 SVGs); landing 'Chapter 1.1' now a link; Veracode 'shipped' -> 'tested samples'; vibe-prd 'ship from on' grammar; 40.17 typo +11 ratchet signatures Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GYRU9wGepomJo5hSuqtu7V --------- Co-authored-by: Paul Keen <pftg@Mac.fritz.box> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
pftg
pushed a commit
that referenced
this pull request
Jul 24, 2026
Code-review of the rescue-sprint kit before first sends. Fixes: - Joy Adamson routing (SEND-SHEET msg 5, opener #3, prospect row 3): her quote is a comment on Nico Casavecchia's post; copy said 'your post' and pointed Paul at Nico's thread. Now says 'your comment', with a DM-via-profile routing note. - Pre-send gate added to SEND-SHEET + backlog Next: confirm NeetoCal S0 checklist (URL resolves 200, but event setup unchecked), tracking sheet, msg-5 routing — THEN send. - New rescue-sprint/pipeline.md: send/reply/booking ledger so A0 kill-criteria (~20 touches / ~10 calls) are countable; added as P10. - SEND-SHEET next-batch fixed: #6-10 → #4-#8 (batch 1 used #1-3,#12,#13; #4/#5 are the highest-trigger unsent rows). - Channel contradiction resolved: openers' thread-reply choice supersedes prospect-list 'IH DM' column (note added); SEND-SHEET labels actions. - Retention claim unified to sourced 5-year average (one-pager, four-forces) per warm-intro sourced-claims registry; was 3-year/'three years' in two docs. - Rows 16-17 downgraded to semi-ICP (pre-build/partner-seeking; audit offer may not fit) with send-last note. - P3 (HN) marked retired venue (0 rows, dev-dominated) so no future session re-runs it; kanban board noted as local-only. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
pftg
added a commit
that referenced
this pull request
Jul 25, 2026
…rnal accuracy Founder-facing (7): r/cursor opener no longer borrows Saul_E's $55K figure; openers #2/#4/#6/#8 + SEND-SHEET align to the real delivery (45-min call -> 48h offline audit, not audit-in-45-min); Touch 1 follow-up no longer claims 'slot is still yours' to never-booked founders; pre-call email asks founders to HOLD admin and grant read-only (never hand admin credentials); discovery-kit secrets rule is absolute (sanitized excerpts only, synced to runbook event note); booking confirmation sets read-access expectation with a hostage-case escape hatch (spec + runbook copies). Internal accuracy (14): runbook P2/T9 stale $25K -> confirmed tiers; D1 card marked done via T8/T9; VoC cold-eyes Push count 10->13; sourcing-pipeline cold-row target + stale 'run now' footer; taxonomy Reddit access = excerpt/F5Bot; GOAL-AT-A-GLANCE demoted to supporting workstream under bet #1; RUN.md portable repo root + P7 non-blocking; strategy roadmap/risk reflect partner locked 2026-07-21; KR3 counts free audits (funnel entry); warm-intro table gains Last-touch column; p1 verdicts downgraded (dianewilliams75, 659ertramp, J_Jie556517) with cold-list row 15 synced; assumptions-register + grooming vote totals recomputed (A3 18, B1 23, B2 33, C3 17, C4 18, D2 25; V1 44/32/35, V2 C 32) — no winner flips. All 47 CodeRabbit comments triaged: 9 already fixed, 21 fixed here, rest dismissed with reasons (see session notes). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
pftg
added a commit
that referenced
this pull request
Aug 1, 2026
* refactor(course): card-grid the operating-kit's 6 components + one How-to-run section 40.24 L3 contract, commit 1 of 3 (40.23 C4 rider). The kit's six component blocks become a 2-column card grid (reusing .module-card + a new .kit-grid rule), each card closing with the same single 'Payoff:' label - replacing the six mismatched payoff labels (In practice / Why it matters / The outcome / What it does / Result / The payoff). The DPA deposit clause moves to a full-width fence just below the grid (narrow-card pre wrapped badly). The four trailing prose H2s (How to use / What this kit is not / How to get / Where this fits) collapse into one 'How to run the kit' with a v2 Done/Next closure. No new facts, no canon changes; all lesson and reference links kept. Kit PDF regenerated. Gates: bin/hugo-build green (8 validators), bin/qtest --changed green (34 runs, 0 failures, 53 screenshots no diffs). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * refactor(course): move Going-further tables to the kit, Already-building steps to Lesson 4.2 40.24 L3 contract, commit 2 of 3. The landing's three Going-further trigger tables relocate verbatim to a new 'Going further triggers' section (#going-further-triggers) at the close of the First-Paying-Customer Operating Kit; the landing section keeps its byte-identical H2 and points there. The Already-building 6-step pre-flight body relocates to Lesson 4.2 as an 'Already mid-build with a contractor?' side-path (step 1, the ownership audit, is that lesson itself, so the list carries the remaining 5); the landing section keeps its byte-identical H2 + fork sentences. The two completer 'Next' links (paid-pilot 5.6, outbound 5.7) repoint from the landing anchor to the kit's trigger section. GA4 branch-click label continuity: the branch links generated from churn-triage / pivot-or-persevere / module-5-walkthrough frontmatter still target the landing's unchanged #going-further-after-first-paying-customer anchor, so existing data-course-label values keep reporting under the same labels. Gates: bin/hugo-build green (8 validators); bin/qtest --changed reports no visual-affecting changes (markdown-only diff). Kit PDF regenerated. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * feat(course): restructure landing to the L3 target order - hero Free note, two doors, Who-built-this up top 40.24 L3 contract, commit 3 of 3. New section order: hero (+ one-line 'Free' reconciliation note rendered under the chips via a new hero_note frontmatter slot in layouts/course/list.html), intro compressed to two doors (Start Lesson 1.1 / see the syllabus), Take this course if / Skip if + a 2-line already-building router to Lesson 4.2, the approved Who-built-this draft (softer variant, verbatim from the contract), Why-this-course-exists with the 'since 2011' clause removed from its intro (the Who block carries it) and bullets lightly trimmed (deep links kept), What-NOT-cover whole with its Going-Further reference repointed to direct chapter links, Module map (fundraising clause out of the intro; 16 Optional-reference rows removed; external tool names de-linked inside the cards - NOT-cover keeps the linked versions), the two byte-identical stub H2s, and the template end-cap's Start Lesson 1.1 as the final element. The 16-word share line is cut from the landing and re-homed at the operating kit's close. All 7 inbound anchors (#going-further-after-first-paying-customer x5, #already-started-building, #module-map) verified intact in built HTML. Mia walkthrough rows, chapter/template links, canon numbers, and the zero-service-CTA rule untouched. Intended visual change: macos desktop+mobile course/landing baselines updated in this commit. Linux baselines NOT re-recorded locally (emulated-Docker rule) - the dtest leg runs at PR prep. Gates: bin/hugo-build green (8 validators); bin/qtest --changed 34 runs, 2 failures = exactly the two intended course/landing screenshots (baselines accepted here), 51/53 others unchanged. Kit PDF regenerated. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * feat(course): L4-visual V1 - mistake-card grid, module-card elevation, dark endcap, section eyebrows 40.25 brief, commit V1 of 3. course-list.css only (bundle exclusive to the landing): (1) ul.mistake-list becomes a 2-col card grid with ruby CSS counters 01-05 replacing the x bullets; (2) module cards get elevation, the leading 'Output:' strong restyled as a top-right ruby pill, and the 'You leave with' line promoted to a green tinted panel; (3) .course-endcap becomes an obsidian (#0d1117) island with a soft ruby radial glow behind the Start Lesson 1.1 CTA; (4) ruby uppercase eyebrow kickers above each section H2 keyed off stable heading ids, plus hero polish (ruby-tinted Free chip, CTA shadow). Zero copy changes; JetVelocity tokens only. Visual score (inspected 1280x800 + 390x844 in chrome-devtools): 1. Great look: YES - consistent ruby/obsidian tokens, aligned grid. 2. Functional: YES - no horizontal overflow at 390px, contrast holds. 3. Earns next scroll: YES - card grid breaks the mistake text wall; dark endcap gives the page a terminal CTA moment. 4. Helpful: YES - counters encode sequence, leave-panels surface the deliverable, eyebrows aid section scanning. No decorative-only art. Gates: bin/hugo-build green. bin/qtest --changed: desktop landing within 0.03 tolerance (baseline unchanged); mobile landing 0.045 intended diff - macos mobile baseline updated in this commit; all other tests green (css_orphan_guard 2 runs, color_system 1 run, 0 failures). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * feat(course): L4-visual V2 - timeline rail, mid-page CTA card, two-col module cards, gloss restore 40.25 brief, commit V2 of 3. Markup (_index.md) + course-list.css: (1) the five module cards wrap in a .module-rail div - a vertical ruby-fading rail with an 8px node per card, >=1000px only (no gutter below, hidden per the brief's mobile-alignment escape hatch); (2) a 6th mistake-grid cell: dark inverted CTA card 'Each mistake maps to a module - jump to the module map' (10 words) targeting the existing #module-map anchor, no counter/x marker; (3) module cards go two-column on >=768px via grid-template-areas - chapters left, 'You leave with' panel right - stacking back to one column below; (4) 40.24-addendum P3: the Founding-Hypothesis gloss restored to the full 'who the customer is, what problem you solve, why they'd pick you' wording (revert of the L3 trim). kit:168 '20 years' NOT touched (queued for W2). These two text items are the only word changes. Visual score (inspected 1280x800 + 390x844 in chrome-devtools): 1. Great look: YES - rail+nodes echo the course sequence, dark CTA cell balances the 2x3 mistakes grid. 2. Functional: YES - no overflow at either viewport, leave-panel column readable at 240px, mobile stacks cleanly with rail hidden. 3. Earns next scroll: YES - the dark cell hands scanners a door to the map at the exact decision moment. 4. Helpful: YES - two-col layout puts chapters and the deliverable side by side; nothing decorative-only. Gates: bin/hugo-build green. bin/qtest --changed green - all diffs within the 0.03 landing tolerance, so no baseline changes in this commit (desktop 3 runs, mobile 1 run, unit+color+random extras all 0 failures; final clean run: '1 screenshot compared, no failures', 'qtest: green in 83s'). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * feat(course): L4-visual V3 - dark hero course-artifact card replaces the cover figure 40.25 brief, commit V3 of 3 - the ONE bold move, kept separate and revertable (drop this commit to restore the cover-image hero). layouts/course/list.html: hero content wraps in .course-hero__main; the cover <figure> is REMOVED (never both) and replaced by an obsidian .course-hero-card aside - ruby 'FREE COURSE' eyebrow, the page title in Space Grotesk, stat chips (5 modules / 25 lessons / 6 artifacts, derived in-template from data/course_sequence.yaml with the same logic as the course-stat shortcode - single source, canon untouched), and a leave-with line reusing the hero lede's contracted 'signed paid pilot - a real customer paying real money' phrasing. og:image still serves cover.png via frontmatter metatags. On >=980px the hero breaks out to min(1080px, 100vw-48px) as a two-column grid (content left, card right); below 980px the card stacks under the CTAs in the cover's old slot. JetVelocity tokens only: obsidian #0d1117, ruby #cc342d glow, purple #a855f7 glow, Space Grotesk. No blue, no orange. Visual score (inspected 1280x800 + 390x844 in chrome-devtools): 1. Great look: YES - the obsidian island with ruby+purple radial glows gives the first fold a brand-anchored artifact; chip row is crisp. Known nit: card title duplicates the H1 verbatim (title copy is contracted; demo's variant title is killed demo-copy). 2. Functional: YES - zero horizontal overflow at both viewports; contrast holds (white/#e7e7ee on #0d1117); stats readable. 3. Earns next scroll: YES - first fold now carries a visual hook (Pew 3-second rule) instead of pure text + below-fold cover. 4. Helpful: YES - the card encodes real orientation data (module/ lesson/artifact counts + the end-state); it replaces, not adds. Gates: bin/hugo-build green. bin/qtest --changed: intended failures ONLY on the two landing screenshots (desktop 0.228 hero region, mobile 0.109 hero-card region) - both macos baselines updated in this commit; css_orphan_guard, color_system and all other runs 0 failures. No non-landing baseline shifted. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * fix(course-landing): L4 fix round - output pill, module-card void, endcap gap Fixes the 1 P2 + 2 P3 findings from the L4-visual cold critique (29/36, beats the 25/36 gate): - P2: module-card "OUTPUT:" pill was position:absolute top-right, detached from the sentence it labels (read as a broken data binding). Restyled as an inline ruby lead-in attached to its line. - P3: desktop module cards 4 and 5 had a ~500px empty void under the "You leave with" panel because the shared grid row height tracked the much-taller chapters column. align-self:start alone doesn't shrink the row - collapsed just those two cards to single-column so the row height tracks the panel's own content. - P3: mobile had a ~170px dead black gap between the endcap card and the footer logo - endcap bottom padding (38px) + footer.css top padding (130px) collide with no visual seam since both are black. Scoped the fix to course pages via body:has(.course-endcap), so the shared footer.css rule other pages depend on is untouched. Verified via chrome-devtools at 1280x800 and 390x844: pill reads attached, void is gone on modules 4/5, gap collapses to normal section spacing, modules 1-3 (shorter chapter lists) unaffected, zero console errors. 4-criteria score: great look (yes - fixes read as intentional, not patched), functional (yes - no zoom, no overflow), earns scroll (yes - card rhythm reads clean start to finish), helpful (yes - removes two "looks broken" signals a reader would bounce on). bin/hugo-build: exit 0, 8 validators passed. bin/qtest --changed: green in 151s, 0 failures - both course/landing screenshot diffs (desktop + mobile) fell under the 0.03 tolerance, no baseline update needed. * docs(2605): 40.26 L5-condense spec - density directive, expander moves, guards Records Paul's 2026-08-01 directive: landing's one job is attract + route to Lesson 1.1; shuffle demo 1 density is the target; native <details> expanders allowed (un-kills 40.25's modules-collapse item, which assumed JS was needed). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * feat(course-landing): L5 module cards - lesson lists into native <details>, compact card face Per 40.26: visible card = badge, title, Output line, one-line leave-with, Start Module N link, Mia walkthrough row. Lesson list + Start-here router + template rows move inside a closed-by-default <details><summary>N lessons</summary> (still on-page for SEO/anchors). No JS. V2.3 two-col grid deleted (no second column left to balance; also removes its module-4/5 void workaround). Landing journey test updated: opening the expander is now part of the flow. 4-criteria (1280x800 + 390x844, closed + open states): (1) great look YES - cards read as compact tiles, expander box matches the card system; (2) functional YES - opens cleanly both viewports, lesson links tappable, zero console errors; (3) earns next scroll YES - all 5 modules now fit ~3 screens instead of a wall; (4) helpful YES - Output + leave-with orient, detail on demand. Gates: hugo-build exit 0, qtest --changed green (viewport baselines unchanged - hero untouched). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * feat(course-landing): L5 NOT-cover - two-col exclusion list + one why-details Per 40.26: the seven exclusions become a tight two-column list; the why-excluded explanations (with their outbound links, all kept) move into one closed <details>Why these are out</details>. FAQ checked - it does not carry these, so nothing duplicated. Labels inside the details are cut-only shortenings of the original bold leads. 4-criteria (1280x800, closed + open): (1) YES - list scans in one glance, expander box matches the module-card system; (2) YES - opens cleanly, links intact; (3) YES - section shrank from a 7-paragraph wall to half a screen (page 8506px -> 8235px); (4) YES - qualify-out info stays one click away. Gates: hugo-build exit 0, qtest --changed green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * feat(course-landing): L5 prose diet - router merge, module-map preamble halved, stub merge Per 40.26 move 3, cut/merge only: the two post-intro router lines merge into one paragraph; the module-map preamble drops the Founder-OS elaboration and artifact-count restatement (hero card carries the stat; pack-index link kept); the Already-started-building stub drops its throat-clearing opener and merges to two routing sentences. Protected content untouched: hero + Free line, checkpoint sentence, Take/Skip-if (YC in place), 95-word Who-built, mistake cards, stub H2s byte-identical, endcap. Prose words (tags stripped): 1655 -> 1636. Visible-by-default words on the rendered page: 1226 vs 1770 with all expanders open (-31% on screen). 4-criteria (1280x800 + 390x844 full-page walk): (1) YES; (2) YES - anchors, Mia links, mistake deep links all visible and live; (3) YES - page now ~8035px at 1280w, five compact module tiles; (4) YES - density tracks shuffle demo 1. Gates: hugo-build exit 0; qtest correctly reports no visual-affecting changes (markdown-prose-only diff). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * docs(2605): 40.26 amendments - demo 1 = ideal reference (persisted capture), decided items Records Paul's demo-1-as-ideal directive with the durable full-page capture (shuffle URLs are ephemeral), the modules-3-5 group decision (anchor-safe, rg-verified), the hero-card title cut, the sanctioned verdict chip, and the skips with reasons (gradient H1 kill condition, section-order conflict, worktree-vacuous dtest). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * feat(course-landing): modules 3-5 grouped behind one card-summary details (demo 1 #8) Modules 1-2 stay visible compact cards; 3-5 collapse into one native <details> whose summary renders as a card: 'MODULES 3-5 · Design, build, first customer' + ruby chevron (site-wide summary::before triangle suppressed for this element only). Anchor-safe: zero inbound links to #module-2..5 (rg-verified); ids remain in DOM and fragment navigation auto-expands details. Summary title is a 4-word cut-merge of the three module titles. No JS. 4-criteria (1280x800, closed + open): (1) YES - reads as one more card in the rail, chevron affords expansion; (2) YES - opens to the three full cards, each with its own lesson expander; (3) YES - page 8035px -> 6834px, module map now ~2 screens; (4) YES - matches the ideal reference's collapsed-group pattern. Gates: hugo-build exit 0, qtest --changed green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * feat(course-landing): hero-card title cut, verdict chip, CSS convergence on demo-1 component spec Per 40.26 amendments: (1) hero course-window card drops the duplicated H1 title - now eyebrow + stat chips + leave-with (cut-only, cold-critic fix); (2) hero chip row gains 'First verdict in 2-3 weeks' (the one sanctioned copy addition; on-page number, two independent panel recommendations); (3) course-list.css converges on docs/design-system/ course-landing-components-2026-08.md: chips -> gray-100 uppercase 12px/600 radius-2 (Free keeps ruby tint), primary CTAs -> spec shadow + hover lift (hero + endcap, old endcap shadow rule deleted), module-card Output -> ruby-tint panel, leave-with -> border-top footer (green panel dropped), badge -> gray-400, card radius 16, timeline rail -> 1px gray-200 with 16px obsidian nodes. Intentional hero change: macos landing baselines (desktop 0.11 / mobile 0.358 diff vs old) re-recorded and committed here; linux pair left for CI. 4-criteria (1280x800 + 390x844): (1) YES - hero reads like the ideal reference, one loud element (ruby CTA); (2) YES - chips wrap 3+2 desktop, stack clean at 360/390, zero console errors; (3) YES - verdict chip gives the first fold a concrete promise; (4) YES - all changes converge on measured spec values, nothing decorative added. Gates: hugo-build exit 0; qtest re-run post-commit (baselines compare vs HEAD). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * docs(2605): 40.26 result capture - final rendered landing at 1280w for side-by-side vs demo 1 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.