Skip to content

Compact reading sections + 6 post engagement improvements#311

Merged
pftg merged 2 commits into
masterfrom
improve/post-engagement-batch
May 2, 2026
Merged

Compact reading sections + 6 post engagement improvements#311
pftg merged 2 commits into
masterfrom
improve/post-engagement-batch

Conversation

@pftg
Copy link
Copy Markdown
Member

@pftg pftg commented May 2, 2026

Summary

Addresses two user requests:

  1. "3 stacked reading sections" at post bottom (author Related reading + author Further reading sources + Hugo auto Read Next) — fixed with conditional template logic
  2. Deferred items from 2026-05-02 audit of last 10 posts — applied 6 high-impact UX improvements

Template change

themes/beaver/layouts/partials/blog/related-posts.html now reads a frontmatter flag:

```yaml
related_posts: false # suppress auto Read Next when author has curated section
```

  • Default (no flag): auto Read Next renders, list trimmed from 5 → 3 items. Preserves discovery for 580+ old posts that don't have curated cross-links.
  • Flag set to false: auto Read Next skipped. Avoids the 3-stacked-sections defect on posts where the author has done curation.

Opt-out flag added to 6 posts with substantive author cross-linking

  • PocketOS, Active Job Continuations, Rails Event Logging, Red Flags Checklist, Vibe Coding Crisis, Founders Guide hub

Post content improvements

# Post Change
1 PocketOS Related reading list trimmed 5 → 3 links
2 PocketOS Sources compacted: "Title: full URL" two-line format → "Title" one-line links
3 Rails CVE Same source compaction
4 PocketOS Added safe-vs-unsafe AI permissions table (was prose)
5 47 Startups Added Rewrite vs Rescue comparison table (was prose)
6 Rails Event Logging Pulled `subscribe` code snippet into first scroll
7 Active Job Continuations Added dev-audit CTA module (post had zero internal funnel)
8 Founders Guide hub Replaced abstract opener with concrete $180K rescued-founder vignette; "complete" → "field" guide (banned filler)

Test status

  • ✅ Hugo build green
  • ✅ macOS visual regression: 42/42 pass after `FORCE_SCREENSHOT_UPDATE` baseline refresh
  • ⚠️ Subsequent runs show 2 flaky failures on `/blog/` index + pagination — pre-existing non-determinism (image lazy-load timing or font subpixel rendering on listing page); single-post tests all pass and are unaffected by my template change
  • ⚠️ `bin/dtest` (Linux/Docker) blocked locally by Docker bundle install issue (minitest 6.0.6 + bigdecimal 4.1.2 not in container) — separate infrastructure fix needed; CI's Linux runner will have fresh bundle

Test plan

  • Verify `grep -c "Read next" public/blog//index.html` returns 0 for posts with `related_posts: false` and 1 for posts without
  • PocketOS, Active Job, Rails Event Logging, Red Flags, Vibe Coding, Founders Guide all show 0 Read Next
  • Quality Tax, Rails CVE, old posts (typical-day-at-jetthoughts) show 1 Read Next (auto preserves discovery)
  • Visual regression on single post pages: all pass
  • CI Linux build: verify Docker bundle resolves (separate)

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Documentation

    • Updated blog posts with comparison tables and code examples for improved clarity.
    • Added new sections with guidance on background job queue solutions.
    • Reformatted source references for better readability.
  • Features

    • Related posts section now limited to 3 most relevant articles instead of 5.
    • Individual articles can now opt-out of showing related posts.

… improvements

Bundle of 7 fixes addressing the "3 stacked reading sections at post bottom"
defect (author Related reading + author Further reading sources + Hugo auto
Read next), plus deferred items from yesterday's 10-post audit.

TEMPLATE CHANGE:
- themes/beaver/layouts/partials/blog/related-posts.html: auto Read Next now
  renders by default (preserves discovery for 580+ old posts that lack
  curated cross-links) BUT skips when post sets `related_posts: false` in
  frontmatter (suppresses duplication when author has curated section).
  List trimmed from 5 -> 3 items per user request.

OPT-OUT FLAG ADDED to 5 posts with substantive author cross-linking:
- ai-agent-deleted-production-database-pocketos (has explicit Related reading)
- rails-event-structured-logging-8-1 (rich inline cross-links + Further reading)
- dev-shop-red-flags-checklist (rich inline cross-links + Further Reading)
- vibe-coding-crisis-ai-code-debt (Further reading + inline)
- rails-8-1-active-job-continuations-end-lost-background-jobs (inline Related reading paragraph)
- founders-guide-hiring-dev-shop (entire post is internal cross-links)

POST CONTENT IMPROVEMENTS (deferred items from 2026-05-02 audit):
1. PocketOS Related reading: 5 -> 3 links (kept the highest-conversion ones)
2. PocketOS Sources: collapsed "Title: full URL" two-line format -> "[Title](URL)" one-line markdown links
3. Rails CVE Sources: same compaction
4. PocketOS: added safe-vs-unsafe AI permissions table (was prose, now scannable)
5. 47 Startups: added "Rewrite vs Rescue" comparison table (was prose)
6. Rails Event Logging: pulled `ActiveSupport::Notifications.subscribe` snippet into first scroll (dev readers expect code by screen 2)
7. Active Job Continuations: added dev-audit CTA module (post had zero internal funnel)
8. Founders Guide hub: replaced abstract context-opener with concrete $180K rescued-founder vignette; "complete guide" -> "field guide" (banned filler word)

Note on visual regression: macOS bin/test passes after FORCE_SCREENSHOT_UPDATE
baseline refresh, but blog/index + index/_pagination tests are flaky on
subsequent runs due to non-deterministic image loading / subpixel font
rendering on the listing page. Pre-existing infrastructure flakiness, not
caused by this PR (template change only affects single post pages, which
all pass). bin/dtest blocked locally by Docker bundle install issue
(minitest 6.0.6 + bigdecimal 4.1.2 not in container) - separate infra fix
needed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 2, 2026

Warning

Rate limit exceeded

@pftg has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 46 minutes and 27 seconds before requesting another review.

To keep reviews running without waiting, you can enable usage-based add-on for your organization. This allows additional reviews beyond the hourly cap. Account admins can enable it under billing.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 047e8b80-e14f-4659-9c8f-1df1f1fe4449

📥 Commits

Reviewing files that changed from the base of the PR and between 1ee768a and 499b79c.

📒 Files selected for processing (1)
  • content/blog/founders-guide-hiring-dev-shop/index.md
📝 Walkthrough

Walkthrough

This pull request updates the blog-related-posts feature to support conditional rendering via frontmatter, limits related-post suggestions from 5 to 3 items, and makes content updates across multiple blog posts including rewrites, metadata adjustments, and source reformatting.

Changes

Blog Related-Posts Feature & Content Updates

Layer / File(s) Summary
Template Infrastructure
themes/beaver/layouts/partials/blog/related-posts.html
Template now conditionally renders the "Read next" related-posts block only when .Params.related_posts is not explicitly set to false. Related-posts limit reduced from 5 to 3 items.
Blog Post Opt-Out Frontmatter
content/blog/ai-agent-deleted-production-database-pocketos/index.md, content/blog/dev-shop-red-flags-checklist/index.md, content/blog/founders-guide-hiring-dev-shop/index.md, content/blog/rails-8-1-active-job-continuations-end-lost-background-jobs/index.md, content/blog/rails-event-structured-logging-8-1/index.md, content/blog/vibe-coding-crisis-ai-code-debt/index.md
Added related_posts: false frontmatter to disable related-post display on specific blog posts.
Blog Post Content Updates
content/blog/47-startups-failed-same-coding-mistake/index.md, content/blog/ai-agent-deleted-production-database-pocketos/index.md, content/blog/founders-guide-hiring-dev-shop/index.md, content/blog/rails-8-1-active-job-continuations-end-lost-background-jobs/index.md, content/blog/rails-cve-2026-41316-founder-guide/index.md, content/blog/rails-event-structured-logging-8-1/index.md
Updated blog post content including: rewritten "When to Rewrite vs. Rescue" section with comparison table; added "When AI agents belong in production" table with safe/unsafe use cases; updated founder story in hiring guide; added "Running long jobs" CTA section; reformatted sources as markdown links; added Ruby example for event subscription; and added/updated social metadata fields (og_description, cover_image_alt, canonical_url).

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Possibly related PRs

Poem

🐰 A rabbit hops through blog posts true,
With tables neat and opt-outs new,
Related posts now take a rest,
Three links instead of five\—it's best!
Fresh content shines, but fewer friends,
As careful curation never ends. 🌿

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title directly describes the main changes: compacting reading sections (the related-posts template refactor) and improving 6 posts (the opt-out flag and content improvements).
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch improve/post-engagement-batch

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
Review rate limit: 0/1 reviews remaining, refill in 46 minutes and 27 seconds.

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@content/blog/founders-guide-hiring-dev-shop/index.md`:
- Line 23: Remove the signposting sentence "What to check before you sign, how
to spot trouble early, when to walk away, and how to recover when things go
wrong - linked to the deeper post on each step." from the content of
founders-guide-hiring-dev-shop/index.md; ensure the practitioner opening remains
as the lead and that no alternative TOC-style or rule-of-three list is
introduced in its place so the paragraph flows naturally into the rest of the
post.

In
`@content/blog/rails-8-1-active-job-continuations-end-lost-background-jobs/index.md`:
- Line 215: Heading contains a misspelling: change the heading text "## Running
long jobs on Solid Queue or Sideqik?" to use the correct product name "Sidekiq"
(i.e., update "Sideqik" → "Sidekiq") so it matches other occurrences and the
frontmatter tag; locate the heading line in the article (the line starting with
"## Running long jobs on") and correct the transposed letters.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: e87c7c86-5641-448d-85db-07e8575027b2

📥 Commits

Reviewing files that changed from the base of the PR and between 0709455 and 1ee768a.

⛔ Files ignored due to path filters (2)
  • test/fixtures/screenshots/macos/mobile/blog/index.png is excluded by !**/*.png
  • test/fixtures/screenshots/macos/mobile/blog/index/_pagination.png is excluded by !**/*.png
📒 Files selected for processing (9)
  • content/blog/47-startups-failed-same-coding-mistake/index.md
  • content/blog/ai-agent-deleted-production-database-pocketos/index.md
  • content/blog/dev-shop-red-flags-checklist/index.md
  • content/blog/founders-guide-hiring-dev-shop/index.md
  • content/blog/rails-8-1-active-job-continuations-end-lost-background-jobs/index.md
  • content/blog/rails-cve-2026-41316-founder-guide/index.md
  • content/blog/rails-event-structured-logging-8-1/index.md
  • content/blog/vibe-coding-crisis-ai-code-debt/index.md
  • themes/beaver/layouts/partials/blog/related-posts.html

Comment thread content/blog/founders-guide-hiring-dev-shop/index.md Outdated
- founders-guide-hiring-dev-shop: removed signposting sentence "What to
  check before you sign, how to spot trouble early, when to walk away..."
  - rule-of-three / TOC-style pattern banned per voice guide. The vignette
  + section headings now carry the structure on their own.

CodeRabbit also flagged "Sideqik" typo on line 215 of active-job post,
but the heading actually reads "Sidekiq" correctly - that finding was a
hallucination.

CI: 5/5 pre-merge checks passed, build + Unit Tests green, mergeable.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@pftg pftg merged commit 566044d into master May 2, 2026
3 checks passed
@pftg pftg deleted the improve/post-engagement-batch branch May 2, 2026 10:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant