Skip to content

Commit b69f75b

Browse files
committed
chore(docs): refine design context in .impeccable.md
Expanded design principles, brand personality, and aesthetic direction for improved clarity.
1 parent 72e624d commit b69f75b

3 files changed

Lines changed: 19 additions & 13 deletions

File tree

.beads/issues.jsonl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
{"id":"pendragon-coding-3lg","title":"fix: card-internal h3 heading contrast + .content h3-h6 on card bg [DONE]","notes":"Fix confirmed in source: contrast remediation merged as part of 'fix: complete WCAG AA contrast remediation across all pages'. Closed rather than groomed \u2014 work was already done.","status":"closed","priority":1,"issue_type":"task","created_at":"2026-03-30T00:50:57.040333751Z","created_by":"graff","updated_at":"2026-03-31T20:36:05.257905402Z","closed_at":"2026-03-31T20:36:05.257491474Z","source_repo":".","compaction_level":0,"original_size":0}
1111
{"id":"pendragon-coding-3m3","title":"Add visual system consistency (design tokens)","description":"Colors, spacing, shadows, transitions scattered across components. Tailwind is used but no: (1) design tokens file, (2) consistent spacing scale (gap, padding, margin follow same pattern), (3) shadow system, (4) animation/transition curve constants. Create: tailwind.config.js overrides for theme, document in design system doc.","status":"closed","priority":2,"issue_type":"feature","assignee":"graff","owner":"graffhyrum@gmail.com","created_at":"2026-03-03T15:47:52Z","created_by":"Josh Pendragon","updated_at":"2026-03-29T20:00:05.272831021Z","closed_at":"2026-03-29T20:00:05.272660498Z","close_reason":"Implemented design tokens: shadow system (card, card-hover, heading, glow-green, glow-green-dark), transition durations (fast/normal/slow), easing curves (default/in-out/spring) in @theme CSS block and tailwind.config.js extend","source_repo":".","compaction_level":0,"original_size":0}
1212
{"id":"pendragon-coding-40t","title":"Migration test: parent","status":"closed","priority":4,"issue_type":"task","created_at":"2026-03-29T18:57:04.856586710Z","created_by":"graff","updated_at":"2026-03-29T18:57:04.965423907Z","closed_at":"2026-03-29T18:57:04.965240339Z","close_reason":"test","source_repo":".","compaction_level":0,"original_size":0,"dependencies":[{"issue_id":"pendragon-coding-40t","depends_on_id":"pendragon-coding-9vd","type":"blocks","created_at":"2026-03-29T18:57:04.903700392Z","created_by":"graff","metadata":"{}","thread_id":""}]}
13-
{"id":"pendragon-coding-42i","title":"Eliminate Astro missing testimonials content warning","description":"bun run build and bunx astro check emit a warning that src/content/testimonials does not exist. This violates zero-warning quality policy. Resolve by either creating expected content directory/files or updating content collection/glob config to avoid non-existent path.","design":"Scope:\n- Resolve warning source in Astro content collection config or by creating expected content directory\n\nLikely affected files:\n- src/content.config.ts\n- src/content/testimonials.ts\n- src/pages/testimonials.astro\n- src/pages/api/testimonials.html.astro\n- src/integration/content-rendering.test.ts\n\nSkills/context:\n- Skill discovery run: ms suggest --machine --cwd .\n- Context refs run: cm context \"Eliminate Astro missing testimonials content warning\"\n- No high-confidence context rules returned for this specific warning; treat as local config/data consistency fix.","acceptance_criteria":"Given the project repository\nWhen bunx astro check runs\nThen output contains 0 warnings including no missing src/content/testimonials directory warning\n\nGiven the project repository\nWhen bun run build runs\nThen output contains 0 warnings including no missing src/content/testimonials directory warning\n\nGiven the remediation is applied\nWhen content pages are built\nThen /testimonials and /api/testimonials.html continue to render successfully in existing tests","status":"open","priority":1,"issue_type":"bug","created_at":"2026-04-06T16:39:57.810044968Z","created_by":"graff","updated_at":"2026-04-06T16:40:16.797700382Z","source_repo":".","compaction_level":0,"original_size":0}
13+
{"id":"pendragon-coding-42i","title":"Eliminate Astro missing testimonials content warning","description":"bun run build and bunx astro check emit a warning that src/content/testimonials does not exist. This violates zero-warning quality policy. Resolve by either creating expected content directory/files or updating content collection/glob config to avoid non-existent path.","design":"Scope:\n- Resolve warning source in Astro content collection config or by creating expected content directory\n\nLikely affected files:\n- src/content.config.ts\n- src/content/testimonials.ts\n- src/pages/testimonials.astro\n- src/pages/api/testimonials.html.astro\n- src/integration/content-rendering.test.ts\n\nSkills/context:\n- Skill discovery run: ms suggest --machine --cwd .\n- Context refs run: cm context \"Eliminate Astro missing testimonials content warning\"\n- No high-confidence context rules returned for this specific warning; treat as local config/data consistency fix.","acceptance_criteria":"Given the project repository\nWhen bunx astro check runs\nThen output contains 0 warnings including no missing src/content/testimonials directory warning\n\nGiven the project repository\nWhen bun run build runs\nThen output contains 0 warnings including no missing src/content/testimonials directory warning\n\nGiven the remediation is applied\nWhen content pages are built\nThen /testimonials and /api/testimonials.html continue to render successfully in existing tests","status":"closed","priority":1,"issue_type":"bug","created_at":"2026-04-06T16:39:57.810044968Z","created_by":"graff","updated_at":"2026-04-15T18:51:50.746151106Z","closed_at":"2026-04-15T18:51:50.745907774Z","close_reason":"Removed unused testimonials content collection from content.config.ts — eliminates Astro glob-loader warning. All tests pass.","source_repo":".","compaction_level":0,"original_size":0}
1414
{"id":"pendragon-coding-4v7","title":"Type BlogPostLayout frontmatter with CollectionEntry inferred type","description":"BlogPostLayout.astro declares no Props interface, so Astro.props resolves to Record<string,any> and frontmatter is implicitly any. The call site in [slug].astro passes entry.data, which is fully typed from the Zod schema in content/config.ts (title: string, date: Date, description?: string, author?: string, tags?: string[]). That type information is discarded the moment it enters BlogPostLayout. Any schema rename or new required field will produce a silent runtime crash at build time rather than a compile error. Fix: import CollectionEntry from astro:content and use CollectionEntry<blog>[data] as the Props type.","acceptance_criteria":"- [ ] BlogPostLayout.astro has interface Props { frontmatter: CollectionEntry<'blog'>['data'] }\\n- [ ] bun run build passes with no type errors\\n- [ ] A deliberate rename of frontmatter.description in the interface surfaces a compile error at the call site in [...slug].astro","status":"closed","priority":2,"issue_type":"bug","assignee":"graff","owner":"graffhyrum@gmail.com","created_at":"2026-03-04T19:36:32Z","created_by":"Josh Pendragon","updated_at":"2026-03-29T20:41:44.318794317Z","closed_at":"2026-03-29T20:41:44.318626438Z","close_reason":"Typed BlogPostLayout frontmatter with CollectionEntry<'blog'>['data']; also fixed content.config.ts schema to include description, author, tags fields","source_repo":".","compaction_level":0,"original_size":0}
1515
{"id":"pendragon-coding-5ep","title":"Enhance footer design and social links","description":"Footer is cramped (single line with pipe separators). LinkedIn/GitHub links are plain text. Issues: (1) No visual hierarchy, (2) External links not marked, (3) Est. 2023 is confusing (founding year?), (4) Not mobile-friendly. Fix: Add footer grid layout, icon + text for socials, better spacing, clarify 'Est.' label, ensure mobile stacking.","status":"closed","priority":2,"issue_type":"feature","assignee":"graff","owner":"graffhyrum@gmail.com","created_at":"2026-03-03T15:47:52Z","created_by":"Josh Pendragon","updated_at":"2026-03-29T20:03:08.395826603Z","closed_at":"2026-03-29T20:03:08.395652433Z","close_reason":"Implemented: responsive footer layout with SVG icons, external-link indicators, copyright clarification, mobile stacking, and design token usage","source_repo":".","compaction_level":0,"original_size":0}
1616
{"id":"pendragon-coding-5nu","title":"Fix h3 color conflict introduced by heading style split","description":"The heading style split (h1/h2 heavy, h3-h6 lightweight) introduced a CSS regression. The new global h3 rule adds text-green-800 dark:text-green-200 to every h3 element. But BlogPostLayout.astro, BlogCard.astro, and ContentCard.astro all use text-green-100 on their h3s (near-white, designed for dark card backgrounds). Both Tailwind classes have equal specificity \u2014 the winner is determined by compilation order, making the color non-deterministic across builds. On light mode, text-green-800 (dark green) on a light green background is readable but fights the intended text-green-100 override.","acceptance_criteria":"- [ ] BlogPostLayout h3 title renders in intended color (text-green-100) on both light and dark mode\\n- [ ] BlogCard h3 title renders correctly without interference from global h3 rule\\n- [ ] ContentCard h3 titles unaffected by global rule\\n- [ ] No Tailwind specificity conflict \u2014 fix uses a selector scope or !-prefix override","status":"closed","priority":1,"issue_type":"bug","owner":"graffhyrum@gmail.com","created_at":"2026-03-03T15:47:52Z","created_by":"Josh Pendragon","updated_at":"2026-03-04T20:24:10Z","closed_at":"2026-03-04T20:24:10Z","close_reason":"Fixed by scoping global h3 CSS rule to .content context, eliminating specificity conflict","source_repo":".","compaction_level":0,"original_size":0}

.impeccable.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,36 @@
11
## Design Context
22

33
### Users
4+
45
Primary audience: recruiters and hiring managers.
56

67
This site should function as an interactive, longform cover letter for Joshua Pendragon. Visitors need to assess competence quickly, review concrete work samples, and get a strong sense of communication style and personality without wading through generic portfolio fluff.
78

89
### Brand Personality
10+
911
Craftsman, mentor, performant.
1012

1113
The voice should feel rigorous, grounded, and generous. It should communicate high standards and technical depth without becoming stiff, corporate, or self-consciously flashy. The experience should leave users feeling playful, engaged, and in flow while still trusting the professionalism behind it.
1214

1315
### Aesthetic Direction
16+
1417
Build on the existing content-first portfolio structure, green-friendly palette, and accessibility baseline already present in the codebase. Support both light and dark mode, with dark mode carrying the stronger visual identity.
1518

1619
Green remains a preferred theme family, but it does not need to dominate every surface. Use color with restraint and intention. Favor dark, controlled, performance-conscious visuals over bright or busy compositions.
1720

1821
Reference cues:
22+
1923
- `https://www.mcmaster.com/`: speed, utility-first clarity, and a no-nonsense feeling of competence
2024
- `https://v0-compute-11.vercel.app/`: dark-mode atmosphere and disciplined color usage
2125

2226
Anti-direction:
27+
2328
- not overly bright
2429
- not overly busy
2530
- no excessive animation
2631

2732
### Design Principles
33+
2834
1. Demonstrate competence fast. Important signals like work samples, achievements, and professional credibility should be obvious within seconds.
2935
2. Make performance part of the brand. Pages should feel immediate, lightweight, and mechanically crisp.
3036
3. Keep the experience content-led. Strong hierarchy, scannability, and readable longform content matter more than decorative UI.

src/content/bookshelf.ts

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -266,18 +266,18 @@ const content: ContentTemplate = {
266266
href: 'https://userjot.com/blog/best-practices-building-agentic-ai-systems',
267267
},
268268
],
269-
description:
270-
'I found a lot of value from this article. Hopefully it doesn\'t age out in 3 months.',
271-
},
272-
{
273-
title: 'OxygenPDF',
274-
link: [
275-
{
276-
href: 'https://oxygenpdf.com/',
277-
},
278-
],
279-
description: 'Free online PDF editor and merger.',
280-
},
269+
description:
270+
"I found a lot of value from this article. Hopefully it doesn't age out in 3 months.",
271+
},
272+
{
273+
title: 'OxygenPDF',
274+
link: [
275+
{
276+
href: 'https://oxygenpdf.com/',
277+
},
278+
],
279+
description: 'Free online PDF editor and merger.',
280+
},
281281
],
282282
},
283283
{

0 commit comments

Comments
 (0)