Vincent Lannurien vincent
  • Brest, France
  • https://vincentlannurien.com/
  • everything you see in here is either haunted, cursed, or has been used in some kind of ritualistic practice

  • Joined on 2026-01-16
vincent pushed to main at vincent/gerbeur 2026-09-22 21:25:21 +02:00
b313f70d31 v3: chat mentions stop going missing, and live events get a light sound — the server skips a mention notification for anyone with the chatbox open, on the grounds that they're reading it, but "open" also meant a chatbox left open in a background tab, and the same modal cleared the unread badge on every arrival, so a mention there left no bell, no badge and no trace. Reading the chat now means open and on screen: the focus flag is re-announced on every visibilitychange, and the unread count only clears while the tab is visible. A reconnect with the chatbox open refetches the latest page, since whatever was said while the socket was down never reached the live buffer. The server's mention regex excluded a backslash and the letter w rather than word characters (\\w inside a class), so an email address mentioned its domain; it now matches the autocomplete's rule. On top of that, sounds synthesised with Web Audio — a soft blip for chat you aren't looking at, throttled, and a two-note chime for notifications and for a mention you're reading live, which gets no notification of its own — claimed through localStorage so several tabs chime once, with an on/off toggle under a new Notifications section in settings. The tab title carries the unread count, composed with the page title in useDocumentTitle so navigation doesn't drop it.
vincent pushed to main at vincent/gerbeur 2026-09-20 15:40:30 +02:00
c9fb4450ad v3: the cards under "related" and "in collections" come back from transparent — both lists lighten a card by dimming it and tightening the box, and also blanked its fill, which assumed the border was what drew the card. A theme is free to draw one with the surface alone: smooth and melange both set --card-border: transparent, so with the background gone there was nothing left — text floating on the page in smooth, a shadow around a hole in melange. The fill stays now and the theme's own skin comes through; the weight still comes down through the opacity, the tighter padding and the smaller type, which is where it belonged. nyt is untouched, its own flat-ink rule still winning the list back to hairline rules.
vincent pushed to main at vincent/gerbeur 2026-09-20 10:47:29 +02:00
7b12dcbe40 v3: the dump button keeps hovering once you point at it — a flat 1px jump was the whole of the header button's hover, so it now lifts and then rocks, tilting a couple of degrees either way over a shallow float. The three motions ride on three different properties — translate for the lift, rotate for the tilt, transform for the float — since that's what lets them compose rather than the last one declared winning outright; the tilt and the float run on periods that don't divide each other (2.6s against 3.4s) so the pair never lines up the same way twice and never settles into a metronome, and the pivot sits on the bottom edge so it reads as a head on a neck rather than as a button spinning about its middle. Arriving and leaving is what the machinery is for: the amplitude is a registered custom property the keyframes multiply through, so pointing at the button eases the rocking up from nothing while the lift is still settling, and leaving eases it back down under an animation that is merely paused — no switch from still to full throw, and no snap square when the cursor goes. Geocities and brutalist re-declare the whole transition shorthand on every button and neither list mentions translate, which outweighed the header's own rule and dropped the lift onto the frame it started on, so that rule takes a :not(:disabled) to win the weight back. nyt stays flat ink and brutalist goes on pressing into the page, both opting out by name; reduced motion keeps the lift and drops the rocking.
e780a3c96f v3: kanagawa's headline stays readable on the scrim — over a photo the title rests white on black in either scheme, but hovered it took --color-accent, and Lotus's lotusBlue4 is picked to sit on warm paper: on the scrim it falls to about 3.8:1, worse where the gradient thins and the picture shows through. The ground over an image is Wave-dark whichever scheme is on, so the accent there is now Wave's too — crystalBlue, which is what the dark scheme already hovers to, so both schemes behave alike over a picture instead of one carrying a second paper-tuned blue. The overlay's resting vote button takes the same swap, ink and border, since it read the same token; the voted one keeps the true accent fill, which its pale label needs underneath it.
Compare 2 commits »
vincent pushed to main at vincent/gerbeur 2026-09-20 10:04:03 +02:00
e4d50f047c v3: the journal feed breathes — one mosaic running unbroken down the page reads as a slab, so the composer now cuts it into sub-blocks, each its own grid with a themable rule between. A break can only fall where a row starts clean and isn't reached into from above, which the exact tiling makes cheap to test: every row closes flush, so the only boundaries ruled out are the ones a portrait or a hero straddles.
6449569b34 v3: the quote card's opening mark lands on the text — two things had it reading as a smudge in the corner rather than as the note's own quotation mark. The card clips its overflow, so hanging the glyph off the top edge never bled it past the corner; it just cut away the half carrying the ink. And a fixed right offset put what survived outside the text column, floating against the card's edge instead of lining up with the words it belongs to. So the whole glyph stays inside the card and is set against the very padding the note is set against — one custom property now, since nyt pads these cards more than the base theme does — and the top offset takes back the leading above the ink so the mark starts on the note's first line rather than below it.
a0738f5fc5 v3: the journal mosaic closes its rows — dense auto-flow was papering over a tiler that didn't tile: a 2-column banner meeting a 1-column gap wrapped, left a hole, and dense filled it by pulling a later card up out of rank order. So the composer now walks its own occupancy grid in reading order and clamps each footprint to the run of cells actually free to the right of the cursor (a banner that meets one cell becomes a square rather than wrapping), plus drops the second row of a portrait within a row of the end, where nothing is left to fill the cells beside it. Four columns close on every row, no gap to backfill, and the order read is the order ranked — dense stays only below the full width, where four-column tiling no longer describes the grid and a hole is the worse alternative. The page also leads with art now: when the hottest dump is a bare note, the first picture within three places of it takes the front instead, since the top few sit within noise of each other on score and which one opens a section front is an editorial call. nyt's frameless block follows: rules overshoot their cell so neighbours meet and read continuous, which leaves ticks around the outside of the grid, and one page-coloured frame as thick as the art inset cuts them all back at once — replacing the two strips that only masked the first column and first row.
27c55ea96f v3: melange joins the styles — savq/melange-nvim's palette taken verbatim (the a.* neutrals, b.yellow as the accent since it's the scheme's Function colour, the dusty c.* row as furniture), but built as a warm 70s print instead of a second editor skin: one cut of Fraunces with opsz pinned low, so a headline and the caption under it stay the same face; pillowy borderless cards lifted on warm sunlight shadow rather than held inside a line; the mélange itself — every desert hue blended once — laid along the bottom edge of the header; and grain over the whole page, which has to differ per scheme because soft-light grey noise is invisible on a pale ground: fine film grain on the coffee dark, a coarser multiply tooth on the plaster light, both switched through custom properties since light-dark() only carries colours. Light keeps the warmth in the page and the bleach in the cards — a.float underneath, tints above — since melange's own light bg reads grey next to its floats; the header takes a lighter shade of its own so it sits over the page as a board.
Compare 4 commits »
vincent pushed to main at vincent/gerbeur 2026-09-19 23:51:16 +02:00
d70761ecae v3: youtube playlists get a tracklist too — the embed keeps playing the list, so the rows come from two halves: /api/youtube/playlist scrapes titles and lengths off the playlist page (current lockup rows and the older renderer, cached 6h), while the IFrame API attached to the iframe reports the position and takes row clicks and ⏮/⏭; the header names the playing video with the dump's title below it, like a bandcamp track; either half can fail — no scrape leaves the bare embed, no API leaves the rows as a table of contents — and the pause an API-enabled embed gives itself when the tab goes to the background is undone within a short window, so a later pause still stands
084ebcb627 v3: dump edit balances its two columns — the dump itself (preview, refresh, thumbnail, URL or replacement file) on the left, its presentation (title, why, categories, visibility) on the right, actions in a full-width footer bar so both columns end level; "Why?" stretches to absorb a taller preview on desktop
e9ebc3fee6 v3: tooltips ease in — a short hover delay, then a quick fade that rises and grows from the anchor on the independent translate/scale properties (so the inline placement transform stays put); reduced motion keeps just the fade
Compare 3 commits »
vincent pushed to main at vincent/gerbeur 2026-09-19 23:25:41 +02:00
e2ed493bdd v3: play and open stop competing on a card — list thumbs carry a quiet corner ▶ badge that grows a touch on card hover and a touch more (with a soft dim) on the thumb itself, while the title's "open" cue stands down; link-out thumbs show ↗, compact audio gets its ▶; journal image cards move ▶ to a top-corner badge that settles while the title or vote is hovered; nyt image-card headlines stay white on hover instead of going ink-on-scrim
vincent pushed to main at vincent/gerbeur 2026-09-19 23:12:21 +02:00
5205097bb6 v3: modals stop shifting the page — scroll lock moves to <html> and holds the scrollbar's gutter only while locked (and only if a bar was showing), shared by Modal and ConfirmModal with stacked-lock counting; scrollbars take a theme-tinted thumb, inner scrollers go thin and contain their overscroll
a9edd8fbb8 v3: invite panel reworked — "+ Invite someone" toggles a panel sized to the action row, easing in like the inline editors: link field fused with a full-width Copy, single-use/7-day hint, no longer clipped or faded on mobile
Compare 2 commits »
vincent pushed to main at vincent/gerbeur 2026-09-19 22:57:44 +02:00
1af719f838 v3: times theme stops faking what Instrument Serif lacks — no synthetic bold or small caps, italic datelines, spaced-capital kickers and tabs, hairline borders, a lifted small-type scale
vincent pushed to main at vincent/gerbeur 2026-09-19 22:51:51 +02:00
f89d776601 v3: Kanagawa back in tone — Lotus keeps its yellow parchment, Wave borrows the syntax hues: comment-grey italic dates, string-green quotes, number-pink votes, keyword-violet brand
vincent pushed to main at vincent/gerbeur 2026-09-19 22:42:33 +02:00
dde3fe8fe2 v3: type checking and lint pass clean — thumbnail placeholder takes file-dump props, no manual memo the compiler can't keep, no setState straight in effect bodies
6026286bbf v3: journal becomes the default feed tab for visitors and for users who haven't picked one
Compare 2 commits »
vincent pushed to main at vincent/gerbeur 2026-09-19 22:37:20 +02:00
20d717f879 v3: new Kanagawa style, after kanagawa.nvim — Wave palette in dark, a cooled Lotus in light, all JetBrains Mono
b8af349ed7 v3: header feed tabs sit centred with the brand and buttons, with symmetric padding that keeps room for the focus ring
Compare 2 commits »
vincent pushed to main at vincent/gerbeur 2026-09-19 22:27:15 +02:00
44fcfc5b77 v3: chat message list gets a slim scrollbar whose thumb only shows on hover or focus
vincent pushed to main at vincent/gerbeur 2026-09-19 22:26:20 +02:00
8c3efe6c30 v3: inline edit forms and the narrow-viewport search row ease open instead of popping in
5e5f984d87 v3: journal image cards give the resting vote button white-on-glass ink so it reads over the scrim
Compare 2 commits »
vincent pushed to main at vincent/gerbeur 2026-09-19 22:13:24 +02:00
decea1c614 devcontainer: update lock file
f7e7e68146 v3: smooth card hover border back to 2px, in a softened accent
7e9262d2b4 v3: smooth keeps its uppercase accent-pill tabs and flat, borderless cards
65d5ed3471 v3: browser theme-color follows the smooth palette in light and dark
7c91e68cd1 v3: brutalist, geocities and nyt on the token system — single light-dark() palettes, radius scale instead of per-selector overrides
Compare 7 commits »
vincent pushed to main at vincent/audioswitch 2026-09-19 15:43:58 +02:00
70494e96bc Add --refresh to repair stale device IDs, and rename to audioswitch
vincent pushed to main at vincent/audioswitch 2026-09-19 15:24:30 +02:00
c2825fa062 Updated gitignore
vincent pushed to main at vincent/audioswitch 2026-09-19 15:24:03 +02:00
a049fb7c6b Re-enumerate outputs through a fresh enumerator on each hotkey press
vincent pushed to main at vincent/gerbeur 2026-09-16 20:28:54 +02:00
1adf7b04d7 v3: stop cards and modal bodies from clipping the editor's popups
vincent pushed to main at vincent/gerbeur 2026-09-16 19:17:14 +02:00
231559b3cd v3: denser dump cards in the two-column profile view
vincent pushed to main at vincent/gerbeur 2026-09-08 16:40:44 +02:00
fb8364e24d v3: reworked posting — three panels, drafts, duplicate detection, upload progress