Commit Graph

165 Commits

Author SHA1 Message Date
kayjaydee edf7593f4f docs(06): create phase plan (4 plans, 3 waves)
Phase 6 Blog Pages decomposed into:
- 06-01 (Wave 1): content schema + reading-time Nitro hook + draft flags
- 06-02 (Wave 2): i18n keys + AppHeader link + BlogCard unified
- 06-03 (Wave 3): listing page /blog SSR bilingue
- 06-04 (Wave 3): [slug] enrichment + BlogToc + BlogPrevNext

Plans 06-03 and 06-04 have zero file overlap and run in parallel.

Covers BLOG-02, BLOG-03, BLOG-06. Honors all 21 D-XX user decisions
from 06-CONTEXT.md. Phase 5 gotchas (literal queryCollection, single
[slug].vue, no routeRules /blog/**) respected in every query branch.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 01:09:25 +02:00
kayjaydee 7bbcd67b29 docs(06): research phase blog pages - API @nuxt/content v3, TOC IO, surround, hook reading time
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-22 00:51:49 +02:00
kayjaydee 6b76208c24 docs(state): record phase 6 UI-SPEC approved session .planning/STATE.md 2026-04-22 00:42:01 +02:00
kayjaydee 5ec19a5f13 docs(06): UI-SPEC approved (6/6 dimensions pass) .planning/phases/06-blog-pages/06-UI-SPEC.md 2026-04-22 00:41:46 +02:00
kayjaydee f96f25aee9 docs(06): UI design contract
Phase 6 Blog Pages — contrat visuel/interaction pour listing /blog et article /blog/[slug]. Tokens hérités Phase 5 (prose, brand-*, colorMode), inventaire composants (BlogCard, BlogToc, BlogPrevNext), i18n keys blog.* + nav.blog, pattern hero + cards inspiré /projects.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 00:40:21 +02:00
kayjaydee 456f6bfb6f docs(state): record phase 6 context session .planning/STATE.md 2026-04-22 00:34:58 +02:00
kayjaydee bd33e64e1a docs(06): capture phase 6 blog pages context .planning/phases/06-blog-pages/06-CONTEXT.md .planning/phases/06-blog-pages/06-DISCUSSION-LOG.md 2026-04-22 00:34:43 +02:00
kayjaydee 3e8e6f33d2 feat(ROADMAP): mark Phase 5 as completed and update project state; prepare for Phase 6 planning 2026-04-22 00:23:25 +02:00
kayjaydee 127db8b77a feat(blog): add dynamic blog post rendering with i18n support and error handling in [slug].vue 2026-04-22 00:20:52 +02:00
kayjaydee e66c7984a4 test(05): complete UAT - 5 passed, 2 issues .planning/phases/05-nuxt-content-setup-renderer/05-UAT.md 2026-04-21 23:25:18 +02:00
kayjaydee 839c584b0a refactor(config): update nuxt.config.ts to enhance module configuration, remove deprecated files, and improve contact form validation with zod schema 2026-04-21 23:15:04 +02:00
kayjaydee 20a5b5d85f feat(config): add route rules for blog redirection to French version with 301 status code 2026-04-21 19:36:43 +02:00
kayjaydee 7cd1531e06 fix(05): update test.vue path to /fr/blog prefix, add compatibilityDate 2026-04-21 16:55:57 +02:00
kayjaydee fd18ea99e1 content(en): update test article to match FR showcase — identical content, translated 2026-04-21 16:51:58 +02:00
kayjaydee 277b407361 feat(05): i18n strategy prefix — /fr/blog and /en/blog explicit routes, update collection prefixes 2026-04-21 16:49:32 +02:00
kayjaydee 06f47cbe11 fix(05): blog EN path uses /en/blog prefix to match blog_en collection 2026-04-21 16:47:12 +02:00
kayjaydee f2e29e6c2f feat(05): add blog/[...slug].vue — render @nuxt/content articles via queryCollection 2026-04-21 16:45:34 +02:00
kayjaydee 2ea6af0fff fix(05): install @iconify-json/lucide, pre-bundle zod in vite optimizeDeps 2026-04-21 16:41:23 +02:00
kayjaydee b63afc4152 docs(05-02): SUMMARY.md — MDC components, test articles, checkpoint approved 2026-04-21 16:36:38 +02:00
kayjaydee c5be72bdd9 fix(05-02): single dark theme for code blocks — github-dark always, remove dual-theme CSS 2026-04-21 16:35:06 +02:00
kayjaydee b0af1d3913 fix(05-02): ProseImg use span.block instead of figure — fix SSR hydration mismatch (block-in-p invalid HTML) 2026-04-21 15:58:41 +02:00
kayjaydee 006df6ad30 fix(05-02): Clear.vue MDC component, replace raw div clear:both (hydration mismatch) 2026-04-21 15:51:06 +02:00
kayjaydee 3e20e9ece9 fix(05-02): ProseImg inheritAttrs false — classes MDC custom overrident le layout auto 2026-04-21 15:37:51 +02:00
kayjaydee 221b1a076c fix(05-02): restore Shiki token colors — add .shiki to ProsePre pre, broaden CSS selector to pre span 2026-04-21 15:34:02 +02:00
kayjaydee f179d64253 feat(05-02): ProsePre override — dark bg fixe #0d1117, badge langage, Shiki tokens transparents 2026-04-21 15:31:40 +02:00
kayjaydee 60e05f7a56 feat(05-02): add Columns/Details/Video/Badge MDC components + full showcase article 2026-04-21 15:31:00 +02:00
kayjaydee b63869f042 feat(05-02): ProseImg flexible — align left/right/center/full + caption + width 2026-04-21 15:28:39 +02:00
kayjaydee 37b6ef9112 fix(05-02): widen test page to max-w-6xl 2026-04-21 15:26:05 +02:00
kayjaydee ee7509cff0 fix(05-02): widen test page to max-w-3xl 2026-04-21 15:25:41 +02:00
kayjaydee 9849c18da4 fix(05-02): rebuild Alert sans UAlert, ProseImg img natif, test.vue layout propre 2026-04-21 15:24:22 +02:00
kayjaydee e1c91e583f fix(05-02): alert alignment via #title slot, dark-only code theme, simplify ProseImg 2026-04-21 15:20:14 +02:00
kayjaydee b5c3250a4e fix(05-02): ContentSlot→slot, image path, Shiki dual-theme CSS 2026-04-21 15:16:04 +02:00
kayjaydee 0fa19a7701 feat(05-02): add test articles FR/EN and temporary test page
- content/fr/blog/test-kotlin-syntax.md: FR test article covering all 4 validation criteria
- content/en/blog/test-kotlin-syntax.md: EN version with same slug
- app/pages/test.vue: temporary page at /test for visual checkpoint verification
- Both articles contain: kotlin code block, NuxtImg image, markdown table, 4 callout types
2026-04-21 14:36:49 +02:00
kayjaydee c9a14a9086 feat(05-02): create MDC components ProseImg.vue and Alert.vue
- ProseImg.vue: transparent NuxtImg override for markdown images (BLOG-05)
- Alert.vue: MDC callout component with 4 types (info/warning/tip/danger) via UAlert
- ContentSlot required for MDC slot content rendering (Pitfall 4)
2026-04-21 14:36:22 +02:00
kayjaydee 557861aa95 docs(05-01): complete @nuxt/content setup plan — SUMMARY created 2026-04-21 14:35:24 +02:00
kayjaydee f49fab2532 chore(05-01): add .data to .gitignore (nuxt/content SQLite runtime artifact) 2026-04-21 14:34:58 +02:00
kayjaydee 83197899c8 feat(05-01): create content.config.ts with bilingual blog collections
- Define blog_fr collection: fr/blog/**/*.md → prefix /blog (FR default locale)
- Define blog_en collection: en/blog/**/*.md → prefix /en/blog (EN prefixed)
- Add Zod schema: title, description, date (required) + tags, image (optional)
2026-04-21 14:34:42 +02:00
kayjaydee 3381b2efb3 feat(05-01): configure @nuxt/content with Shiki dual-theme and typography plugin
- Add '@nuxt/content' to modules array in nuxt.config.ts
- Add content block: Shiki dual-theme github-light/github-dark
- Add Shiki langs: kotlin, java, typescript, shell, bash, json, vue, html, css
- Add experimental.sqliteConnector: 'native' (Node 22 native SQLite)
- Add @plugin "@tailwindcss/typography" in main.css
2026-04-21 14:33:54 +02:00
kayjaydee c64709da10 chore(05-01): install @nuxt/content@3.13.0 and @tailwindcss/typography@0.5.19
- Add @nuxt/content to dependencies
- Add @tailwindcss/typography to devDependencies
2026-04-21 14:33:29 +02:00
kayjaydee 1df6a21c5e docs(05): add detailed pattern map for @nuxt/content setup and renderer
- Introduced a new document outlining the configuration and component patterns for integrating @nuxt/content.
- Included mappings for `nuxt.config.ts`, `content.config.ts`, and new components `ProseImg.vue` and `Alert.vue`.
- Added example markdown content for testing syntax highlighting and layout.
- Documented critical patterns and anti-patterns to follow during implementation.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 12:52:59 +02:00
kayjaydee cb477006f4 fix(05): resolve checker issues — open questions resolved, depends_on corrected, test.vue added
- 05-RESEARCH.md: rename section to 'Open Questions (RESOLVED)' with explicit answers
  (frontmatter schema: tags array, image relative path, author implicit from site.ts;
   i18n prefix: /blog for blog_fr, /en/blog for blog_en)
- 05-02-PLAN.md: fix depends_on from '05-01-PLAN.md' to '01'
- 05-02-PLAN.md: add app/pages/test.vue in Task 2 files (with note to delete after checkpoint)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 12:52:51 +02:00
kayjaydee 808835d5eb docs(05): create phase 5 plan — @nuxt/content setup & renderer
2 plans, 2 waves. Plan 01 installe @nuxt/content + typography et
configure Shiki dual-theme + collections bilingues. Plan 02 crée
ProseImg/Alert MDC et articles de test FR/EN avec checkpoint visuel.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 12:48:02 +02:00
kayjaydee afd81e7e84 docs(05): UI design contract for nuxt-content renderer
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 12:30:44 +02:00
kayjaydee 2d8f0ca7c3 docs(05): research phase nuxt-content setup renderer 2026-04-21 11:31:32 +02:00
kayjaydee 2b06dfe463 docs(05): capture phase context 2026-04-21 11:22:39 +02:00
kayjaydee 2658b0c607 docs: create milestone v1.1 roadmap (4 phases, 13 requirements) 2026-04-21 11:11:53 +02:00
kayjaydee a4ee7fe007 docs: start milestone v1.1 — SEO Hytale, Autorité & Contenu 2026-04-21 11:09:29 +02:00
kayjaydee a0788f1edd docs: sync GSD tracking — milestone M1 complete, all 4 phases shipped to prod 2026-04-21 11:00:16 +02:00
kayjaydee 888650ce3d docs: sync GSD tracking — phases 1 & 2 complete (retroactive audit 2026-04-21) 2026-04-21 10:59:28 +02:00
kayjaydee 848387d69c feat(contact): nouvelle template email terminal-style 2026-04-17 09:28:54 +02:00