Commit Graph

  • 67b7444f82 settings: each section heading carries the same icon as its index entry main KeelrLeek 2026-09-08 16:28:18 -05:00
  • 48ae01c753 settings: Appearance gets a real icon — "display" was a CSS property that had leaked into my list of icon names KeelrLeek 2026-09-08 16:16:40 -05:00
  • a0528c6d3f settings: each index entry carries its section's icon, lit in the accent when it is the one on screen KeelrLeek 2026-09-08 15:45:42 -05:00
  • 07ac3d3631 settings: the long lists use the app's own chooser — the sort menu's popover under a pill — instead of native selects the webview draws with the OS's text KeelrLeek 2026-09-08 15:43:13 -05:00
  • 7e291cfccc settings: one long page of section cards behind a sticky index, segments and switches for the choices, and the Networks card moved in from Community KeelrLeek 2026-09-08 15:39:19 -05:00
  • 6c44f3e2ab community: a chat thread stretches with the pane too — no inner width cap remains KeelrLeek 2026-09-08 14:53:05 -05:00
  • f006c1cd5c community: the page fills the pane edge to edge instead of sitting in a centred 1520px column KeelrLeek 2026-09-08 12:55:10 -05:00
  • b8e6fb7396 who has this: a gap card says who holds it, the sheet and the open album name them, a Space grows a Holdings tab, and Get it is the hub's own grab or a wait for their presence KeelrLeek 2026-09-08 12:10:49 -05:00
  • a98c750908 holdings: a member of a Space publishes what they hold as room-salted album keys, sealed to the room, so "who has this" is answered while they are offline KeelrLeek 2026-09-08 12:10:49 -05:00
  • 08ca09586a community: Discover ranks the shelves it already has into one, and every card still says where it came from KeelrLeek 2026-09-08 09:48:07 -05:00
  • 8285b97cbe shared playlists: a follow with news says so through a toast, and a follower's rows keep the owner's catalog ids KeelrLeek 2026-09-08 09:48:06 -05:00
  • 594a33a302 freenet node: the update exit is watched from a thread for as long as the check takes, not for two seconds inside the start call KeelrLeek 2026-09-06 08:17:55 -05:00
  • f67a0a30b4 shared playlists: importing a share follows it, so the owner's next revision reads as "2 new tracks since you imported" KeelrLeek 2026-09-06 08:16:45 -05:00
  • df06f849e0 spaces: a room carries what its members are playing, sealed in the window its chat already uses KeelrLeek 2026-09-04 12:20:27 -05:00
  • 4ca9ab043b shared playlists: a deleted playlist takes its share with it, so the next one does not go out wearing its name KeelrLeek 2026-09-04 11:06:34 -05:00
  • 0ff65fd9b5 community: the board counts your pending proposals under the key you wear there KeelrLeek 2026-09-04 09:56:39 -05:00
  • 06baa5a805 spaces: leaving a room says so, so an owner stops publishing a seat nobody sits in KeelrLeek 2026-09-04 09:56:39 -05:00
  • d6102101af spaces: a rotated key goes to the person behind the room key, and the epoch it belongs to is found by number KeelrLeek 2026-09-03 16:01:40 -05:00
  • 7b7f48ebc6 community: declare what you like on soulseek, so the similar-users shelf finally has something to rank on KeelrLeek 2026-09-03 15:05:23 -05:00
  • 8093adc89e a room-key proposal signs the hash the verifier checks, and the ping's pill shortens a raw id KeelrLeek 2026-09-03 13:52:04 -05:00
  • 6f7452c803 a second instance on one machine: its own data, its own peer port, and a join that says itself again when it was never seated KeelrLeek 2026-09-03 13:39:06 -05:00
  • 67e52697b2 spaces: a member wears a key minted for that room alone, so a roster stops naming personas KeelrLeek 2026-09-03 13:06:32 -05:00
  • b3c121fa94 community: the inbox check belongs to the app, not to the page that happened to be open KeelrLeek 2026-09-03 12:38:57 -05:00
  • fd216ecd3d community: a proposal on your board arrives as a toast, carried sealed through the inbox KeelrLeek 2026-09-03 12:16:33 -05:00
  • 4d03cf849b community: every ledger takes its write lock, so the inbox check can no longer land on top of a friend accept KeelrLeek 2026-09-03 11:51:35 -05:00
  • 07227a90a7 the freenet layer: the app supervises its own peer, so a new release no longer quietly ends it KeelrLeek 2026-09-03 11:12:41 -05:00
  • 733e3b57a8 community: one writer at a time per ledger, and an inbox publish that bumps from what the network really holds KeelrLeek 2026-09-03 11:12:41 -05:00
  • 0846b39d45 community: the library overlap shelf, their share folders against your albums on this device after a browse KeelrLeek 2026-09-02 17:08:25 -05:00
  • d7bc92fda7 release: 1.7.0-alpha KeelrLeek 2026-09-02 16:38:43 -05:00
  • bf81792c49 the proposal board: a Space's pinned playlist takes signed proposals, and an accept republishes it KeelrLeek 2026-09-02 16:33:38 -05:00
  • 8b511b20e7 community: spaces, an owner-signed roster with epochs, a bounded window of signed lines, bodies sealed to a rotating key when private KeelrLeek 2026-09-02 15:50:18 -05:00
  • 4378c4c0cc community: the encrypted inbox, friend requests and shares travel sealed to a box key when the other side has published one KeelrLeek 2026-09-02 15:26:30 -05:00
  • 13c44f731a community: shared playlists, a signed revision and a pointer on the network, a reference over soulseek, an import through the normal door KeelrLeek 2026-09-02 15:02:06 -05:00
  • 984738135a community: friends, two signed answers on one request carried over soulseek, one answer is only ever pending KeelrLeek 2026-09-02 14:40:33 -05:00
  • 6ed6f5b8f8 community: the soulseek link proof, one message to yourself links the account and one question links anyone who answers KeelrLeek 2026-09-02 14:27:54 -05:00
  • cf9558cf26 release: 1.6.0-alpha KeelrLeek 2026-09-02 14:03:28 -05:00
  • 5160d97a5f community: the drawer asks a peer for its card and the server for interests, and discover gets the similar-users shelf KeelrLeek 2026-09-02 14:03:26 -05:00
  • 64a7561750 community absorbs the hub: search, transfers and browse ride the same pills, one entry in the sidebar KeelrLeek 2026-09-02 13:46:57 -05:00
  • 8c25f93afe community: one area for the people on both networks, and the hub grows search tabs, a folder column and a queue column KeelrLeek 2026-09-02 13:43:16 -05:00
  • 6dce4e2ac7 the freenet layer: adapter, persona and profile services, the contracts bundled as commitments KeelrLeek 2026-09-02 13:43:16 -05:00
  • 63a0357651 the soulseek hub: the whole Qt client as one area, wired to the wire KeelrLeek 2026-08-31 15:13:53 -05:00
  • 913289a297 the panel tops speak one language: 28px discs, white glyphs, one veil KeelrLeek 2026-08-31 15:13:24 -05:00
  • 2d8c385a2e the sourcing notifier is a toast: the glass bar hands rstatus to the player-bar slot KeelrLeek 2026-08-31 11:46:27 -05:00
  • 0670b8654a hero commits wait for scroll calm, and a dev tripwire watches the rides KeelrLeek 2026-08-31 11:46:17 -05:00
  • e4a2bb6075 the search panel detaches and frosts: 46px down, blur(40), and the rest of the acrylic recipe KeelrLeek 2026-08-31 11:46:01 -05:00
  • 75a95405a8 the acrylic rides move drags: only a real resize parks the glass at blur KeelrLeek 2026-08-31 11:45:46 -05:00
  • 5e2ad18269 the periscopes never built on this machine: bounded idle gate, and the fog rides the scroller's timeline instead of chasing it KeelrLeek 2026-08-31 05:53:42 -05:00
  • 15746893a9 restoreSession rebuilds the waveform and the cache badge from the backend, and a direct album arrival gets its artist portrait KeelrLeek 2026-08-31 05:53:18 -05:00
  • 73a677d35c one listener bar, five surfaces: the search page's pill wins and the heat wash is retired KeelrLeek 2026-08-31 05:53:01 -05:00
  • 385b598170 glass survives the window gestures: the accent rides the modal loop and the maximize animation gets a bracket KeelrLeek 2026-08-31 05:52:43 -05:00
  • 93271aceec release: 1.5.0-alpha KeelrLeek 2026-08-27 17:25:19 -05:00
  • 547cee6649 dark glass gets a surface ladder, and the 200-750ms stalls are dead - two sessions of uncommitted work landing together KeelrLeek 2026-08-27 17:24:20 -05:00
  • 7ab678fd22 artist page glass: the hero fades INTO the frost - the burial moves from the sheet's paint to the photo's own alpha (gfade frame+counter: in-flow pass-throughs wrapping every photo layer, seam mirror excluded; a STATIC inverted-smoothstep mask parked at --fog-rest rides the sheet's glide on the frame while the counter rides the exact inverse, so the photo stays pinned, the mask never animates, and photo-visible-fraction equals the base fade at every pixel by construction); under glass the sheet's band goes transparent and its tail lands on the frost tint, so the same dissolve now lands on desktop glow - solid mode byte-identical (wrappers inert, from-poses no-ops); the wrappers must NEVER be positioned: the in-flow banner is what sizes hero-bg and absolute wrappers collapse the chain to zero KeelrLeek 2026-08-26 16:26:59 -05:00
  • 6ba1864498 dark glass, the whole app: frost on every pane, and the periscope pattern for every glass bar the frost sits under - backdrop-filter black-flattens over see-through ground (measured 3-vs-40), so bars over frost blur a scroll-synced clone behind a static band cut instead; the bar moved out of the scroller (pane shell, inner .content keeping the closest-contract, the old negative-margin flow replayed by a spacer after the artist page's sticky physics named the scrollport padding sacred); painted pages declare data-painted and keep the real backdrop bar, which is how the artist hero runs under the glass again; np wash rides the scroll away and dissolves to frost like the album banner; perf measured to vsync - 142px blur wraps (27.9ms frames down to 6.9), idle scroll-gated reclones, clip-path band, content-visibility on library rows, async cover decode; mini frosts over the mini:glass channel and the rest-frame flags ride window config because the env-var lane dies on some webview2 runtimes KeelrLeek 2026-08-26 14:55:25 -05:00
  • 225c9139aa release: 1.4.0-alpha KeelrLeek 2026-08-26 07:57:03 -05:00
  • dc7ea16b22 mini player + dark glass: eight shapes run by the hidden main as the one brain, dissolving covers and accents, drag from anywhere, and the space between the panes turned to real acrylic - with the webview flags that keep rest frames honest KeelrLeek 2026-08-26 07:56:00 -05:00
  • 9b84b30aef now playing: flatten the bleed so the corner arc antialiases once, not per layer KeelrLeek 2026-08-26 07:56:00 -05:00
  • 7dfba58ea7 release: 1.3.0-alpha KeelrLeek 2026-08-25 08:05:07 -05:00
  • 6a7a5c49c0 overlay + library: the preloader working on glass, album names that land on the right self-titled record, and covers warmed before you scroll to them KeelrLeek 2026-08-25 08:05:07 -05:00
  • ad2c912b71 release: 1.2.0-alpha KeelrLeek 2026-08-24 18:12:02 -05:00
  • 50414dae5c playlists + player: every service's list through one door with its names matched for real, and shuffle that readies exactly what it promises KeelrLeek 2026-08-24 18:10:34 -05:00
  • 30eb6fe025 release: 1.1.0-alpha KeelrLeek 2026-08-24 10:49:11 -05:00
  • 1dd8573808 dj sets + lyrics: a mix that names its own tracks, and words pulled off the separated voice KeelrLeek 2026-08-24 10:49:10 -05:00
  • 4efe85b6bf release: 0.1.0-alpha.4 KeelrLeek 2026-08-17 18:06:04 -05:00
  • f4f26d6d34 player bar: the overflow menu out from under the bar's own clip, and Lyrics wired for real KeelrLeek 2026-08-17 18:05:36 -05:00
  • df3d15553a playlists + lyrics: setlists with pages of their own, and the words timed to the voice KeelrLeek 2026-08-17 18:05:31 -05:00
  • c4ff6269a3 import: records named by their own tags, and covers resampled where the pixels are KeelrLeek 2026-08-10 18:08:58 -05:00
  • e7d0971de2 import: the whole feature, and releases put back together KeelrLeek 2026-08-10 07:55:59 -05:00
  • 4b30c5e573 vite: bind the dev server to 127.0.0.1, where the app's WebView looks KeelrLeek 2026-08-06 17:21:24 -05:00
  • 185c29fc33 library: the page lit by its own records, and portraits that prove out KeelrLeek 2026-08-06 17:21:23 -05:00
  • 741c4ae6dc library: file a record you don't own off the payload's own field names KeelrLeek 2026-08-05 18:04:26 -05:00
  • f55052506a library: three views of the collection, and what every file actually is KeelrLeek 2026-08-05 18:02:40 -05:00
  • 10e4c75b33 home: rows that fill the window, and news across the whole of it KeelrLeek 2026-08-05 09:47:07 -05:00
  • d397b78887 news: about the artist, and each story only once KeelrLeek 2026-08-05 09:46:54 -05:00
  • 034eac9569 home: a landing page built from the app's own parts KeelrLeek 2026-08-04 19:08:58 -05:00
  • 8ef730848a news: headlines about the artists you follow, anchored to the artist KeelrLeek 2026-08-04 19:08:35 -05:00
  • 50afa6a6a9 branding: the falcon replaces the waveform everywhere the app is seen KeelrLeek 2026-08-04 16:42:38 -05:00
  • 1e6f3f2250 release: package-lock follows the alpha.3 bump KeelrLeek 2026-08-04 16:42:28 -05:00
  • f0c2bb5ed3 taskbar: transport buttons under the window preview KeelrLeek 2026-08-04 16:08:26 -05:00
  • f6eb9ff02f media card: Windows knows SoulStream is a music player now KeelrLeek 2026-08-04 16:08:10 -05:00
  • f72b12a892 release: 0.1.0-alpha.3 KeelrLeek 2026-08-04 14:49:28 -05:00
  • 34313e6035 discography: the whole catalogue on a page of its own KeelrLeek 2026-08-04 14:44:13 -05:00
  • 819a2757bc artist page: five sections after the hero, and nothing moved to fit them KeelrLeek 2026-08-04 14:43:52 -05:00
  • 520e2ad4e4 follow: the artist page's heart becomes a real thing, stored and celebrated KeelrLeek 2026-08-04 14:43:27 -05:00
  • 5786269592 player bar: it grows upward, the cursor is marked by the wave itself, and the shape you leave it in survives a restart KeelrLeek 2026-08-04 14:42:54 -05:00
  • e976fb88ba ignore branding/ — the logo kits are worked on elsewhere KeelrLeek 2026-08-04 14:41:50 -05:00
  • 2a83615958 player bar: one fixed name box — the transport never moves again KeelrLeek 2026-08-03 18:03:13 -05:00
  • a949c24677 playback: streams try peers that can actually deliver, and give up on the dead ones faster KeelrLeek 2026-08-03 17:48:16 -05:00
  • cef1363acd playback: stop flooding the Soulseek server from the album fill KeelrLeek 2026-08-03 17:36:27 -05:00
  • 8cd56a433e player bar: the album line survives library plays, and lands with the title KeelrLeek 2026-08-03 17:18:25 -05:00
  • e2cfed081c player bar: the track-change morph stops being a coin flip KeelrLeek 2026-08-03 17:07:33 -05:00
  • 0bbdb1bb0e player bar: track changes morph shape into shape, not up from the dots KeelrLeek 2026-08-03 17:01:59 -05:00
  • 1765de65cf player bar: a complete waveform arrives as one motion instead of popping KeelrLeek 2026-08-03 16:46:37 -05:00
  • 4c9a6e312a library: one record, one recents row, however it was played KeelrLeek 2026-08-03 16:29:19 -05:00
  • 5ac456102f playback: the album button and the background fill learn the cache too KeelrLeek 2026-08-03 16:16:31 -05:00
  • f55562f0ab playback: a cached track plays without asking Soulseek where it lives KeelrLeek 2026-08-03 16:08:51 -05:00
  • b33d403634 player bar: the name sets the width, and the waveform stops flattering the clamp KeelrLeek 2026-08-03 16:08:26 -05:00
  • 3aaec30dc6 metadata: a lost probe race no longer writes an image host off for five minutes KeelrLeek 2026-08-03 16:08:10 -05:00
  • 9aeb6c39c7 player bar: one row, aligned to the sidebar's column, and it says who is sending KeelrLeekandClaude Opus 5 2026-08-03 07:04:11 -05:00
  • b173f60085 search: the results page, the typeahead, and a session that survives a reload KeelrLeekandClaude Opus 5 2026-08-03 07:03:45 -05:00