Skip to content

Commit 390d42f

Browse files
committed
chore: update changelog, improve navigation error handling, and adjust configuration files
1 parent 3c83e94 commit 390d42f

6 files changed

Lines changed: 31 additions & 36 deletions

File tree

.beads/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ sync-state.json
1010
last-touched
1111
.sync.lock
1212
export-state/
13+
.write.lock
1314

1415
# Local version tracking
1516
.local_version

.changeset/config.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"$schema": "https://unpkg.com/@changesets/config@3.0.4/schema.json",
2+
"$schema": "https://unpkg.com/@changesets/config@3.1.4/schema.json",
33
"changelog": "@changesets/cli/changelog",
44
"commit": false,
55
"fixed": [],

.cursorindexingignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
2+
# Don't index SpecStory auto-save files, but allow explicit context inclusion via @ references
3+
.specstory/**

CHANGELOG.md

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,12 @@
4141

4242
- b125efa: Add breadcrumb navigation component for multi-level page context (Home > Blog > Article Title)
4343
- d90e7c4: feat: add visual system design tokens for shadows, transitions, and easing
44-
4544
- Define shadow presets (card, card-hover, heading, glow-green) in Tailwind v4 @theme block
4645
- Define transition duration scale (fast/normal/slow) and easing curves (default/in-out/spring)
4746
- Mirror tokens in tailwind.config.js extend for editor intellisense support
4847

4948
- 74b4c32: Add Playwright-based WCAG AA contrast regression tests using axe-core. Tests 8 pages in both light and dark mode (16 test cases). Includes Playwright config, scoped tsconfig for Playwright types, and test:contrast npm script.
5049
- d6bd63b: refactor: deepen frontend architecture — extract utilities, fix bugs, consolidate components
51-
5250
- Extract shared slug utility (toSlug) from 4 duplicated implementations, fixing a regex ordering bug in CollectionPageLayout
5351
- Consolidate 4 duplicate component pairs (Card, Skill, Skills, Navigation) into canonical locations
5452
- Merge HTMX attributes and active-page detection into Navigation (was missing from live site)
@@ -72,7 +70,6 @@
7270
- 741c97c: fix: resolve remaining WCAG AA contrast violations on 404 page in both light and dark modes
7371
- e2ffb40: fix: 404 page heading text contrast — ensure h2 "Page Not Found" uses gray-900/gray-100 for WCAG AA compliance in both light and dark modes
7472
- bc17a2c: fix(a11y): blog sort button and prose link contrast for WCAG AA
75-
7673
- Sort button active state: `bg-green-600 text-white` (3.21:1) → `bg-green-800 text-green-50` (passes 4.5:1) in both light and dark modes
7774
- `.content a` prose links: `text-blue-300` in light mode (1.5:1 on bg-green-200) → `text-blue-700` (passes 4.5:1); dark mode stays `text-blue-300`
7875
- Closes pendragon-coding-we9: all 16 axe-core contrast audit tests pass across 8 pages × 2 modes
@@ -192,23 +189,20 @@
192189
Implemented a theme toggle component that allows users to switch between light and dark modes with a smooth sliding animation. The theme preference is persisted in localStorage and respects system preferences on first visit.
193190

194191
**New Features:**
195-
196192
- Theme toggle button with sliding animation positioned at the right edge of the header
197193
- Sun and moon icons that smoothly transition based on the selected theme
198194
- localStorage persistence to remember user's theme preference across sessions
199195
- System preference detection on first visit (respects `prefers-color-scheme`)
200196
- Smooth color transitions throughout the site when switching themes (300ms duration)
201197

202198
**Improvements:**
203-
204199
- Light mode uses a clean gray-50 background with dark text for improved readability during daytime
205200
- Dark mode maintains the existing green-950 background with light text optimized for low-light environments
206201
- Navigation underlines adapt to theme: green-600 in light mode, green-400 in dark mode
207202
- Footer links have theme-aware hover states for better visual feedback
208203
- Accessible implementation with proper ARIA attributes and keyboard focus states
209204

210205
**Technical Details:**
211-
212206
- Created ThemeToggle.astro component with inline script for theme management
213207
- Configured Tailwind CSS with class-based dark mode strategy
214208
- Added tailwind.config.js with dark mode enabled
@@ -220,14 +214,12 @@
220214

221215
- e5e448b: Add Bun test runner tooling to the project. Includes test scripts in package.json (test, test:watch, test:coverage), example test file demonstrating Bun's test syntax, and updated documentation in CLAUDE.md with testing commands and conventions.
222216
- b090c8e: Add GitHub Action for opencode integration on issue comments
223-
224217
- Add .github/workflows/opencode.yml to enable opencode AI assistance
225218
- Triggers on issue comments containing '/oc' or '/opencode' commands
226219
- Uses sst/opencode/github action with opencode/big-pickle model
227220
- Includes proper permissions for repository access
228221

229222
- 201f90b: Migrate blog and testimonials to Astro Content Collections API
230-
231223
- Create content config with Zod schemas for type safety
232224
- Move markdown files from pages to content directory
233225
- Standardize blog dates to ISO format
@@ -239,7 +231,6 @@
239231

240232
- 930f48e: Add article on DORA metrics misuse to bookshelf
241233
- b090c8e: Refactor testimonials to use ContentSection component like myWork page
242-
243234
- Convert testimonials from Astro Content Collections to static TypeScript data file
244235
- Update testimonials page to use ContentContainer and BaseLayout instead of CollectionPageLayout
245236
- Remove individual testimonial markdown files and dynamic routing
@@ -261,29 +252,25 @@
261252
This release introduces a modern navigation system using HTMX that provides a single-page application experience while maintaining progressive enhancement and SEO-friendly fallbacks.
262253

263254
**New Features:**
264-
265255
- HTMX-powered navigation that swaps content without full page reloads
266256
- Smooth transitions between pages using HTMX's built-in transition system
267257
- Browser history and URL preservation with `hx-push-url`
268258
- Seven new API endpoints (`/api/*.html`) returning HTML fragments for HTMX requests
269259
- Progressive enhancement: navigation works with and without JavaScript
270260

271261
**Improvements:**
272-
273262
- Fixed animation stutter by eliminating conflicting CSS animations during HTMX transitions
274263
- Added `noAnimation` prop system to Skills and Skill components for conditional animation control
275264
- Faster page navigation with reduced bandwidth usage (only content updates, not full page)
276265
- Maintained SEO compatibility with full-page fallbacks for search engine crawlers
277266

278267
**Code Quality Refactors:**
279-
280268
- Refactored Navigation component to use data-driven link array, reducing code from ~93 lines to ~38 lines
281269
- Extracted HTMX configuration into reusable constants for maintainability
282270
- Created ApiContentLayout wrapper to eliminate duplication across API endpoints
283271
- Improved code maintainability: adding/removing navigation links now requires only updating the data array
284272

285273
**Technical Details:**
286-
287274
- Navigation links use `hx-get`, `hx-target`, `hx-swap`, and `hx-push-url` attributes
288275
- Original page routes remain unchanged for direct access and SEO
289276
- API endpoints share components with full pages, ensuring consistency

docs/distillation-2026-05-11T17:24:06.md

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
## Applied Changes
88

99
### cm Rules (19 added)
10+
1011
- **Rule**: Early-return paths with global constraints — assert on each path or unify before constraint
1112
**Source**: post-mortem-2026-03-31-blog-excerpt
1213
**Category**: typescript
@@ -66,6 +67,7 @@
6667
**Category**: general
6768

6869
### Skill Update Proposals
70+
6971
- **Skill**: hook-authoring
7072
**Change**: Add guidance on TTY guard placement — guard must go in shared lib, not consumer; document that any function calling Bun.stdin.text() needs a TTY guard
7173
- **Skill**: testing-patterns
@@ -78,29 +80,29 @@
7880
## Proposed Changes (Requires Confirmation)
7981

8082
### Hooks
81-
```json
82-
// Proposed: Changeset YAML quote enforcement hook
83+
84+
```text
85+
// Proposed: Changeset YAML quote enforcement hook (illustrative — not JSON)
8386
// PostToolUse on Write, pattern match .changeset/*.md
8487
// Block with exit 2 if single-quoted package names found
8588
// Pattern: ^'[^']+': (patch|minor|major)
8689
{ "event": "PostToolUse", "command": "changeset-quote-guard" }
8790
```
8891

8992
### Hook Proposals
93+
9094
- **Changeset YAML quote linter** — blocks `.changeset/*.md` writes containing single-quoted package names. Pattern: `^'[^']+': (patch|minor|major)`. Survives worktree isolation.
9195
- **Voice-dna banned phrase lint** (low priority) — scans `.md`/`.astro` files for phrases banned by docs/voice-dna.md (em dashes, "harness", negation framing)
9296

9397
### Infrastructure Proposals
98+
9499
- **ralph.ts spike timeout override** — dispatch spike-label beads with 25-min timeout instead of default 15-min
95100
- **Add `bun audit` to vet script** or as separate `bun run security` script for periodic vulnerability scanning
96101

97102
## Deferred / Low Priority
98103

99-
- **Word-boundary truncation** — blog excerpt truncates at exactly 200 chars, potentially mid-word. Tracked as bead.
100-
- **Setext heading stripping** — stripMarkdown only handles ATX headings, not underline-style. Low frequency in practice.
101104
- **Vite audit advisory resolution** — bun vet blocked by vite GHSA entries. Dep bump or overrides needed.
102105
- **j2u timeout investigation** — 404 page contrast bead consistently exceeds 15-min ralph limit. May need splitting.
103-
- **voice-dna lint hook** — nice-to-have automated banned phrase checker. Low priority.
104106
- **Acceptance criteria: sentinel inputs** — backlog item to standardize AC templates to cover empty string vs undefined explicitly.
105107

106108
## Patterns Worth Repeating
@@ -132,29 +134,31 @@
132134

133135
## Metrics Summary
134136

135-
| Metric | Value |
136-
|--------|-------|
137-
| Post-mortems consumed | 13 |
138-
| cm rules applied | 19 |
139-
| Skills updated (proposed) | 4 |
140-
| Hooks proposed | 2 |
141-
| Items deferred | 6 |
137+
| Metric | Value |
138+
| ------------------------- | ----- |
139+
| Post-mortems consumed | 13 |
140+
| cm rules applied | 19 |
141+
| Skills updated (proposed) | 4 |
142+
| Hooks proposed | 2 |
143+
| Items deferred | 3 |
142144

143145
## Recommendation Token Impact
144146

145147
### Global Context (always-loaded instructions)
146-
| Metric | Tokens |
147-
|--------|--------|
148-
| Always-loaded baseline (pre-distillation) | ~3548 |
149-
| Net change from applied global rules | 0 (cm rules are not always-loaded) |
150-
| Post-distillation global estimate | ~3548 |
148+
149+
| Metric | Tokens |
150+
| ----------------------------------------- | ---------------------------------- |
151+
| Always-loaded baseline (pre-distillation) | ~3548 |
152+
| Net change from applied global rules | 0 (cm rules are not always-loaded) |
153+
| Post-distillation global estimate | ~3548 |
151154

152155
### Project Context (AGENTS.md)
153-
| Metric | Tokens |
154-
|--------|--------|
155-
| Net change from applied project rules | 0 |
156156

157-
*Token estimation: word_count × 1.3. Baseline from Budget Snapshot step.*
157+
| Metric | Tokens |
158+
| ------------------------------------- | ------ |
159+
| Net change from applied project rules | 0 |
160+
161+
_Token estimation:_ word count × 1.3. Baseline from Budget Snapshot step.
158162

159163
## Distilled Files
160164

src/scripts/navigation.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ function showErrorToast(message: string): void {
129129
document.body.append(toast);
130130

131131
// Trigger reflow so CSS transition activates
132-
const _ = toast.offsetHeight;
132+
void toast.offsetHeight;
133133
toast.classList.add('visible');
134134

135135
setTimeout(() => {

0 commit comments

Comments
 (0)