feat: thesis download on SRZ card and CV teaching position #10

Merged
ComputerCrack merged 9 commits from dev into main 2026-09-09 23:54:55 +00:00

Summary

Adds a Bachelor thesis download to the Schülerrechenzentrum project card and a new freelance teaching entry to the CV, plus the layout and formatting cleanup that came with it. Everything since #9.

Changes

Feature

  • feat(projects): the muted SRZ card gets a second button linking to the thesis (/Bachelorarbeit.pdf), opening in a new tab, independent of the published gate. The existing "Case Study" button and its automatic show/hide stay untouched. Adds optional secondaryLink { href, text } to ProjectMeta; Button forwards target and sets rel="noopener noreferrer" on _blank.

Content

  • content(cv): freelance teaching position "Lernbegleitung" (Bildungsinitiative, from August 2026), heading only.

Fixes

  • fix(home): all erfahrung entries render in column 2 and engagement in column 3, so the fifth entry no longer leaks under the "Engagement" heading. The timeline last marker is now derived, not hardcoded.
  • fix(cv): CvEntry guards its bullet list, so an entry without paragraphs renders no empty <ul> and spacing stays consistent across entries. The Typst PDF already handles empty paragraphs cleanly.

Chore

  • chore: repo-wide Prettier formatting.

Testing

  • Web (light and dark): SRZ card buttons, CV column layout, the entry with no bullets.
  • PDF: bun run build:cv renders the new entry without an empty block.
## Summary Adds a Bachelor thesis download to the Schülerrechenzentrum project card and a new freelance teaching entry to the CV, plus the layout and formatting cleanup that came with it. Everything since #9. ## Changes **Feature** - `feat(projects)`: the muted SRZ card gets a second button linking to the thesis (`/Bachelorarbeit.pdf`), opening in a new tab, independent of the `published` gate. The existing "Case Study" button and its automatic show/hide stay untouched. Adds optional `secondaryLink { href, text }` to `ProjectMeta`; `Button` forwards `target` and sets `rel="noopener noreferrer"` on `_blank`. **Content** - `content(cv)`: freelance teaching position "Lernbegleitung" (Bildungsinitiative, from August 2026), heading only. **Fixes** - `fix(home)`: all `erfahrung` entries render in column 2 and `engagement` in column 3, so the fifth entry no longer leaks under the "Engagement" heading. The timeline `last` marker is now derived, not hardcoded. - `fix(cv)`: `CvEntry` guards its bullet list, so an entry without paragraphs renders no empty `<ul>` and spacing stays consistent across entries. The Typst PDF already handles empty paragraphs cleanly. **Chore** - `chore`: repo-wide Prettier formatting. ## Testing - Web (light and dark): SRZ card buttons, CV column layout, the entry with no bullets. - PDF: `bun run build:cv` renders the new entry without an empty block.
Signed-off-by: Jonathan Schmidt <kontakt@jonathan-schmidt.de>
Signed-off-by: Jonathan Schmidt <kontakt@jonathan-schmidt.de>
Signed-off-by: Jonathan Schmidt <kontakt@jonathan-schmidt.de>
Signed-off-by: Jonathan Schmidt <kontakt@jonathan-schmidt.de>
Signed-off-by: Jonathan Schmidt <kontakt@jonathan-schmidt.de>
Signed-off-by: Jonathan Schmidt <kontakt@jonathan-schmidt.de>
Signed-off-by: Jonathan Schmidt <kontakt@jonathan-schmidt.de>
fix(cv): guard empty paragraph list in CvEntry
All checks were successful
CI / build (push) Successful in 2m7s
90abac9968
Signed-off-by: Jonathan Schmidt <kontakt@jonathan-schmidt.de>
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ComputerCrack/Portfolio!10
No description provided.