Compare commits

..

18 Commits

Author SHA1 Message Date
dadd87a4be feat(CSS): change colors to Nord theme 2026-02-05 13:01:25 +01:00
af84a7fb9f feat(footer): more footer content 2026-02-05 12:44:11 +01:00
33f57f0bd5 feat(SEO): better metadata and SEO tags 2026-02-05 12:44:11 +01:00
c47cfed5ae fix(contact): update metadata of contact page 2026-02-05 12:43:48 +01:00
1969d59186 chore(deps): update dependencies 2026-02-05 12:43:48 +01:00
8187aabbb1 build: configure Cloudflare Pages deployment
- Add wrangler CLI and workerd runtime as dev dependencies
- Configure nitro prerender with autoSubfolderIndex disabled for Pages
- Add Turnstile validation endpoint for server-side CAPTCHA verification
- Add baseline-browser-mapping for browser compatibility
2026-02-05 12:43:48 +01:00
8f395b972c test: add comprehensive test suite for components, composables, and pages
Add 16 new test files covering:
- Composables: useBackend, useMeta, useDataJson
- Type classes: QueryResult, ResumeContent
- UI components: BadgeList, BadgeListCard
- Navbar components: LanguageSwitcher, ThemeSwitcher
- App components: AppNavbar, AppFooter
- VocalSynth components: Projects, Tools
- Pages: contact, resume, [...slug]

Tests focus on pure logic, interfaces, and component rendering where
possible, avoiding complex mocking of Nuxt auto-imported composables.

Total: 174 tests across 17 test files (including existing useApi tests).
2026-02-05 12:43:48 +01:00
0114ddf30b docs(content): add Keine Tashi UTAU project page
Add bilingual (EN/FR) content pages documenting the BSUP01 Keine Tashi
UTAU vocal library project, including character information, vocal
library specifications, download links, and usage licence.

Also add .small-img CSS class for floating images in content pages.
2026-02-05 12:43:17 +01:00
c6648c4075 style(content): normalise italic markdown syntax in languages pages
Change *italic* to _italic_ for consistency across English and French
languages content pages.
2026-02-05 12:19:12 +01:00
3b6578daa2 refactor(tests): remove unnecessary parameters from useApi tests
Simplify POST, PUT, and PATCH test calls by removing redundant empty
object and boolean parameters.
2026-02-05 12:19:12 +01:00
034fdc2afe feat(resume,vocal-synth): add clickable links to tools and technologies
- Add Tool interface with name and optional link properties
- Update BadgeList and BadgeListCard components to render links
- Extract VocalSynthPage types to dedicated module
- Migrate resume.json and vocal-synthesis.json data to use Tool format
- Add links to all tools, frameworks, and technologies in resume
2026-02-05 12:19:12 +01:00
13f423e455 docs(content): add languages & worldbuilding page content
Cover conlanging projects: Eittlandic (Old Norse-derived language
for fictional Nordic country), Proto-Ñyqy (proto-language of the
Ñyqy family), and Zikãti (conlanging experiment)
2026-02-05 12:19:12 +01:00
7ae22106fa fix(tests): properly mock $fetch in useApi tests
Replace vi.mocked($fetch) with a properly stubbed global mock
using vi.stubGlobal() to fix test failures
2026-02-05 12:19:12 +01:00
ea35c524e2 feat(contact): add toast notifications for form feedback
- Add toast notifications for contact form success/error responses
- Add toast notifications for backend errors in AppFooter
- Add accessibility explanation for honeypot field
- Add loading state to contact form submit button
- Add i18n translations for toast messages (en/fr)
- Fix honeypot input missing v-model binding
2026-02-05 12:19:12 +01:00
dfec7bb869 feat(pages): add contact page 2025-12-07 20:02:35 +01:00
0101592145 feat(useApi): better interface 2025-11-20 12:00:28 +01:00
1563ab1f45 fix: incorrect types now fixed 2025-11-20 11:21:26 +01:00
17fbe1d507 chore: separate frontend from backend 2025-11-15 14:06:37 +01:00
2 changed files with 1 additions and 4 deletions

1
.devenv-root Normal file
View File

@@ -0,0 +1 @@
/home/phundrak/code/web/phundrak.com-frontend

View File

@@ -47,22 +47,18 @@ const items = computed<NavigationMenuItem[]>(() => [
{ {
label: $t('footer.links.source.backend'), label: $t('footer.links.source.backend'),
to: 'https://labs.phundrak.com/phundrak/bakit', to: 'https://labs.phundrak.com/phundrak/bakit',
target: '_blank',
}, },
{ {
label: $t('footer.links.source.frontend'), label: $t('footer.links.source.frontend'),
to: 'https://labs.phundrak.com/phundrak/framit', to: 'https://labs.phundrak.com/phundrak/framit',
target: '_blank',
}, },
{ {
label: $t('footer.links.nuxt'), label: $t('footer.links.nuxt'),
to: 'https://nuxt.com/', to: 'https://nuxt.com/',
target: '_blank',
}, },
{ {
label: $t('footer.links.rust'), label: $t('footer.links.rust'),
to: 'https://rust-lang.org/', to: 'https://rust-lang.org/',
target: '_blank',
}, },
]); ]);