Commit Graph

20 Commits

Author SHA1 Message Date
kgva CMS 11660ac63d fix: play/pause button size consistency, add a real volume slider
the play/pause button had no fixed width, so swapping the single-character play glyph for the two-character pause glyph (with the fonts normal spacing between them) visibly widened the button. now a fixed 2.4ch width with tightened tracking on the pause state.\n\nmute only ever toggled — there was no way to set a level. added a small click/drag bar next to it (same interaction as the scrub bar), synced with the video elements own volume/muted state via the volumechange event so it stays correct regardless of how its changed.
2026-08-15 11:44:14 +00:00
kgva CMS 46aff56577 perf: smoother video player — rAF-driven scrub bar, less cold-start stutter
scrub fill/time were driven off timeupdate, which browsers fire irregularly (a handful of times a second) — visible as the bar stepping instead of gliding. now driven by requestAnimationFrame while playing (display refresh rate), with a direct sync on pause/seeked so it still tracks immediately when not running.\n\npreload=none meant zero data was fetched until the play button was pressed, causing a visible stall right at playback start. preload=metadata lets the browser prime the connection and read the moov atom ahead of time without fetching the full video for visitors who never press play.
2026-08-15 00:24:17 +00:00
kgva CMS ffe9fa11fc fix: category tags flush right instead of wrapping onto their own line
grid-column:3 + justify-self:end put name and tags in the same cell but grid stacks co-located items instead of placing them side by side, so the tag wrapped to a second line. wrapped both in a flex row (justify-content:space-between) inside that grid cell instead.
2026-08-15 00:10:02 +00:00
kgva CMS 6b59b58082 feat: category tags (design/film/photo/text) on the portfolio index
new categories taxonomy, multi-value per project. shown inline in each ls row as [tag] after the slug, muted like the other row metadata and inverting with it on hover/select. reuses the existing shared taxonomy template, so /categories/ and /categories/<tag>/ come for free as browsable archives in the same shell style already used for schools/degrees/semesters.\n\nassigned by medium: design for anything with plans/models, film for the two video projects, photo for the trieste study trip, text alongside design for translation (collage + accompanying theoretical text).
2026-08-14 23:50:54 +00:00
kgva CMS 37600ccb43 content: add portfolio info.md text; refresh museo/dojo/textilsteinwerk texts and add three new projects from portfolio-2026
new: hotel national (MA studio, 2026), translation (MA collage collab. with Tim Schwander + Jérôme Arnold, 2026), utopie der koexistenz (BA thesis, Kantonsspital Baden, 2025) — text sourced from portfolio-2026.typ, translated EN<->DE, images pulled from the higher-res portfolio-export folder and converted to webp.
2026-08-10 23:20:44 +00:00
kgva CMS d3f63251eb consolidate: fold openbureau (+ rapport, dossier) into about; drop it as a standalone nav destination
about now lists cv.md, openbureau.md, rapport.md, dossier.md side by side. the standalone /openbureau/ page, its layout, and its home-menu entry are gone; internal links repointed to /about/. also switch the info-panel text to justified (with hyphenation, per earlier request) instead of ragged-right.
2026-08-10 22:50:04 +00:00
kgva CMS 8f37bba08b feat: switch mono typeface from Iosevka Curly Slab to plain Iosevka
Self-hosted, subset to exactly the glyphs the site uses (fonttools --unicodes), so the pair is smaller (6.4+6.3KB) than the curly-slab files they replace despite covering en+de plus shell/tree symbols.
2026-08-10 22:35:41 +00:00
kgva CMS fb6e87ef24 feat: filebrowser shows only images; info.md moves to a side panel in Libre Baskerville 2026-08-10 22:02:37 +00:00
karim ffe4aca72d fix: filebrowser scroll+lang hover+black-flash+shell one-line
- filebrowser: select() only scrollIntoView on keyboard, not hover
- lang-switch: .lang-switch:hover → invert rule (header excluded before)
- black-flash: color-scheme light; dark script sets colorScheme
- shell: flex-wrap nowrap; keepEnd() scrolls on input

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 02:00:35 +02:00
karim c46f9a48f7 i18n: bilingual de/en, bundle js from assets via hugo pipes, css refresh
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 01:07:04 +02:00
karim 64cb04e0eb openbureau as filebrowser 2026-06-29 12:06:56 +02:00
karim 8bd3e6449b fix: guard len images for video-only projects 2026-06-29 12:03:36 +02:00
karim dd9fb79b5d video as filebrowser entry 2026-06-29 12:02:44 +02:00
karim 2728ed12a0 custom terminal video player 2026-06-29 11:50:31 +02:00
karim cc2840fe5c custom terminal video player 2026-06-29 11:50:30 +02:00
karim c8e759ec45 selfhost video, drop vimeo 2026-06-29 11:06:23 +02:00
karim a0d4cd150c selfhost video, drop vimeo 2026-06-29 11:06:23 +02:00
karim 8d08c0e97e vimeo: privacy click-to-load 2026-06-29 10:05:46 +02:00
karim 0fb7127436 vimeo: privacy click-to-load 2026-06-29 10:05:45 +02:00
karim f7643602cb import kgva site 2026-06-29 01:37:03 +02:00