From 9500c309d1819469cf2e1245cb9ee9972a950beb Mon Sep 17 00:00:00 2001 From: Firehose Bot Date: Tue, 24 Mar 2026 19:51:08 +0000 Subject: [PATCH] Style headings and quote --- app/assets/css/app.css | 6 +- .../engineering/2026/03-24-blog-triage.md | 5 +- planner_request.md | 61 ------------------- 3 files changed, 6 insertions(+), 66 deletions(-) delete mode 100644 planner_request.md diff --git a/app/assets/css/app.css b/app/assets/css/app.css index d779112..f72dece 100644 --- a/app/assets/css/app.css +++ b/app/assets/css/app.css @@ -187,14 +187,16 @@ body { font-family: 'Source Sans 3', sans-serif; } line-height: 1.75; } -.blogex-post-body h2 { font-size: 1.5rem; font-weight: 600; margin-top: 2rem; margin-bottom: 0.5rem; } -.blogex-post-body h3 { font-size: 1.25rem; font-weight: 600; margin-top: 1.5rem; margin-bottom: 0.5rem; } +.blogex-post-body h1 { font-family: 'Fraunces', serif; font-size: 1.75rem; font-weight: 700; margin-top: 2.5rem; margin-bottom: 0.5rem; } +.blogex-post-body h2 { font-family: 'Fraunces', serif; font-size: 1.5rem; font-weight: 600; margin-top: 2rem; margin-bottom: 0.5rem; } +.blogex-post-body h3 { font-family: 'Fraunces', serif; font-size: 1.25rem; font-weight: 600; margin-top: 1.5rem; margin-bottom: 0.5rem; } .blogex-post-body p { margin-top: 1rem; } .blogex-post-body ul { list-style: disc; padding-left: 1.5rem; margin-top: 0.5rem; } .blogex-post-body ol { list-style: decimal; padding-left: 1.5rem; margin-top: 0.5rem; } .blogex-post-body pre { background: oklch(var(--color-base-200)); padding: 1rem; border-radius: 0.5rem; overflow-x: auto; margin-top: 1rem; } .blogex-post-body code { font-size: 0.875em; } .blogex-post-body a { color: oklch(var(--color-primary)); text-decoration: underline; } +.blogex-post-body blockquote { border-left: 3px solid oklch(var(--color-primary)); padding-left: 1rem; margin-top: 1rem; margin-bottom: 1rem; font-style: italic; opacity: 0.85; } .blogex-tag-list { display: flex; diff --git a/app/priv/blog/engineering/2026/03-24-blog-triage.md b/app/priv/blog/engineering/2026/03-24-blog-triage.md index 3e6d718..d02e2f0 100644 --- a/app/priv/blog/engineering/2026/03-24-blog-triage.md +++ b/app/priv/blog/engineering/2026/03-24-blog-triage.md @@ -26,9 +26,8 @@ I like "The Art of Action" - detailed, yet practical. So I had a chat with a fro This was my initial prompt. Full chat transcript in the Further Reading section. -#+begin_quote -https://www.chrismdp.com/stop-prompting-start-briefing/ suggests an art of action style backbriefing loop for daily work. I would like to use a local model with pi, the shitty coding agent, instead of claude code. I have trouble publishing blogposts. I have many drafts, marked as CandidateBlogPost in an org-roam directory. I wonder if I could make some kind of pi extension or skill that finds candidate blogposts, helps identify ones that are almost finished, with a suggesion on what to do next for the top 3 almost finished, and suggestions for others on what to add. Probably prioritize recency. I could run that as a cron job in the morning, and create a new daily entry (I use daily entries for org-roam) to get me starte.d Goal would be not to have AI write my posts, but help me finish in pomodori instead of days. -#+end_quote + +> https://www.chrismdp.com/stop-prompting-start-briefing/ suggests an art of action style backbriefing loop for daily work. I would like to use a local model with pi, the shitty coding agent, instead of claude code. I have trouble publishing blogposts. I have many drafts, marked as CandidateBlogPost in an org-roam directory. I wonder if I could make some kind of pi extension or skill that finds candidate blogposts, helps identify ones that are almost finished, with a suggesion on what to do next for the top 3 almost finished, and suggestions for others on what to add. Probably prioritize recency. I could run that as a cron job in the morning, and create a new daily entry (I use daily entries for org-roam) to get me starte.d Goal would be not to have AI write my posts, but help me finish in pomodori instead of days. What I found interesting was that, maybe because I mentioned the links were in an sqlite database, claude desktop spontaneously suggested to create a bash script as part of the skill. I used to have a meta-skill to separate the deterministic parts of agent skills into scripts, but that does not seem to be necessary anymore. I prune my agent setups continuously, only keeping what is needed. diff --git a/planner_request.md b/planner_request.md deleted file mode 100644 index b282250..0000000 --- a/planner_request.md +++ /dev/null @@ -1,61 +0,0 @@ -# Refactoring Plan for Firehose Blog Controller Tests - -## Context -Based on context.md, we have a Phoenix blog controller with repetitive validation tests that need refactoring. - -## Goals -1. Extract test helpers to reduce code duplication -2. Standardize test naming conventions -3. Reorganize tests to follow defensive programming flow -4. Add missing negative test coverage -5. Create separate contexts for different refactorings - -## Recommended Planner Agents - -### 1. TestHelperExtractor Agent -**Purpose**: Handle Smell 1 (Repetitive Validation Tests) and Smell 4 (Redundant Layout Assertions) - -**Tasks**: -- Extract page validation test logic into `test_page_fallback/2` helper -- Create `assert_has_app_layout/1` helper for layout assertions -- Move helpers to support module or test case - -**Context Isolation**: This can run in a separate test context without affecting controller logic. - -### 2. TestOrganizer Agent -**Purpose**: Handle Smell 5 (Test Order) and Smell 3 (Inconsistent Naming) - -**Tasks**: -- Reorder test blocks: validation first, then success cases, then edge cases -- Standardize all test descriptions to follow pattern: "GET /blog/:type/:slug returns [result]" -- Rename describe blocks to follow semantic order - -**Context Isolation**: Pure test organization, no production code changes. - -### 3. CoverageExpander Agent -**Purpose**: Handle Smell 2 (Missing Negative Tests) and Smell 8 (Edge Cases) - -**Tasks**: -- Add test for unknown blog_id (`/blog/invalid`) -- Add test for empty page parameter (`?page=`) -- Add test for very large page numbers -- Add test for invalid blog halt behavior (Smell 6) - -**Context Isolation**: Adds new tests without modifying existing logic. - -### 4. ResponseHelperCreator Agent -**Purpose**: Handle Smell 7 (Mixed Response Types) - -**Tasks**: -- Create `assert_html/2` and `assert_json/2` helpers -- Ensure proper content-type verification -- Update existing tests to use new helpers - -## Execution Strategy -Run each agent in isolated contexts: -1. TestHelperExtractor → creates helper functions -2. ResponseHelperCreator → builds response assertions -3. TestOrganizer → reorganizes existing structure -4. CoverageExpander → adds new test cases - -This keeps the main thread clean and allows focused changes per agent. \ No newline at end of file