Commit Graph

  • d92266a402 Merge pull request 'The console UI overhaul: motion, look, and a library you can actually navigate' (#269) from worktree-console-ui-overhaul into main main enricobuehler 2026-08-16 15:06:19 +00:00
  • 451f95079e fix(console): the focus recede ran backwards on all six pale palettes worktree-console-ui-overhaul enricobuehler 2026-08-16 16:21:10 +02:00
  • d927fcb2b0 feat(console): Collections — group by platform, walk them, open one enricobuehler 2026-08-16 16:04:14 +02:00
  • c354d7cd09 feat(console): a grid arrangement for the library, plus art eviction and a skeleton shelf enricobuehler 2026-08-16 15:55:32 +02:00
  • c804a0dc9f feat(console): plumb platform to the shelf and give it a collation module enricobuehler 2026-08-16 15:44:17 +02:00
  • be8183caab feat(console): host tiles get their OS mark, the chip gets a battery, the strip gets Rescan enricobuehler 2026-08-16 15:36:36 +02:00
  • a289f7b9af feat(console): recede by draining colour, not by painting black over it enricobuehler 2026-08-16 15:25:13 +02:00
  • 50ef253e43 feat(console): the screen transition becomes an interruptible spring (vectors v2) enricobuehler 2026-08-16 15:19:25 +02:00
  • 2314637c0d feat(console): screens arrive instead of appearing - the staggered card entrance enricobuehler 2026-08-16 15:11:55 +02:00
  • 46d648cf0f feat(console): name the motion, spring the micro-motion, and let it all be turned off enricobuehler 2026-08-16 15:03:00 +02:00
  • adf895ced1 Merge pull request 'main is red: the PyroWave worker proxy never wrote distrust_references' (#268) from worktree-pyrowave-distrust-refs into main enricobuehler 2026-08-16 11:56:30 +00:00
  • 18fdc4cc6b fix(encode): the PyroWave worker proxy never wrote distrust_references, so its own guard test failed enricobuehler 2026-08-16 13:38:27 +02:00
  • 15bec23a4e fix(encode): the PyroWave worker proxy never wrote distrust_references, so its own guard test failed worktree-hires-audio-pcm enricobuehler 2026-08-16 13:38:27 +02:00
  • 7ba344cf4e Merge pull request 'Lossless audio: the 0xD3 PCM plane, 44.1–176.4 kHz, surround, verified on glass (ABI 24)' (#263) from worktree-hires-audio-pcm into main enricobuehler 2026-08-16 11:18:28 +00:00
  • e6476eddcf fix(core): a doc line starting with > read as a markdown blockquote and failed clippy enricobuehler 2026-08-16 12:55:20 +02:00
  • 47c9162433 Merge remote-tracking branch 'origin/main' into worktree-hires-audio-pcm enricobuehler 2026-08-16 12:50:15 +02:00
  • a9ffd3becd feat(host): a Hello that names a format but not the capability was ignored in total silence enricobuehler 2026-08-16 12:39:42 +02:00
  • 362be21ebb fix(probe): the format was on the wire but the capability bit was not, so the host was right to ignore it enricobuehler 2026-08-16 12:37:47 +02:00
  • bca85db160 fix(probe): it asked for the lossless plane by accident and then discarded every frame of it enricobuehler 2026-08-16 12:19:51 +02:00
  • b347682eb2 feat(console-ui): Gaming Mode was the one client surface with no audio-format row enricobuehler 2026-08-16 12:19:49 +02:00
  • f206feb588 test(core): nothing proved that the plane actually carries what it exists to carry enricobuehler 2026-08-16 12:09:47 +02:00
  • cd8e19a7d5 Merge pull request 'A pipewire type in a cfg(any(linux, test)) signature has been holding the Windows client leg red' (#267) from worktree-padaudio-win-cfg into main enricobuehler 2026-08-16 10:02:02 +00:00
  • 47d8301aeb feat(host): the presentation clock advanced by a frame's label rather than its length enricobuehler 2026-08-16 11:52:53 +02:00
  • 6bbdafc289 feat(apple): the Swift port of the de-jitter policy had the same divide-first defect as core enricobuehler 2026-08-16 11:33:02 +02:00
  • 0196c75769 fix(android): every Opus session was advertising the lossless capability, and the ABI doc told it to enricobuehler 2026-08-16 11:27:48 +02:00
  • f30f7e88b0 feat(client): the desktop had no way to ask for the lossless plane except an environment variable enricobuehler 2026-08-16 11:27:32 +02:00
  • ec500b0943 feat(host): monitor mode declined hi-res because nobody had written the lookup it was waiting on enricobuehler 2026-08-16 11:27:17 +02:00
  • 63312e0a19 feat(core): the rate divided before it multiplied, which is the whole reason 44.1 kHz was deferred enricobuehler 2026-08-16 10:55:55 +02:00
  • 75eaf9ad91 Merge pull request 'The game library was unreachable in Android's touch UI, and no library view could copy a title's link' (#266) from worktree-library-access-and-copy-link into main enricobuehler 2026-08-16 08:53:57 +00:00
  • d5838f381a fix(client-core): a pipewire type in a cfg(any(linux, test)) signature broke the Windows client leg enricobuehler 2026-08-16 10:50:06 +02:00
  • c7fe326b99 Merge pull request 'Steam renamed its cached art, so most covers were never found — and the banner that stood in blew the iOS tile open' (#265) from worktree-steam-cover-capsule into main plugin-kit-v0.4.2 enricobuehler 2026-08-16 08:47:42 +00:00
  • 65b4af9e51 Merge pull request 'The library grid never got the FlowBox recursion guard, so every game click overflowed the stack' (#264) from worktree-gtk-library-card-activation-overflow into main enricobuehler 2026-08-16 08:46:55 +00:00
  • 14bdfeaeeb fix(client-windows): the library tile's overflow sat inside its own launch backstop enricobuehler 2026-08-16 10:20:57 +02:00
  • ae6d872bed test(client-android): shoot the touch library, and pass the shelf's callbacks as lambdas enricobuehler 2026-08-16 10:19:53 +02:00
  • b949bf2062 feat(clients): the game library was unreachable in Android's touch UI, and no library view could copy a title's link enricobuehler 2026-08-16 10:09:53 +02:00
  • d8f7984477 fix(core): the drought fuse was spent in 5 ms units on a plane whose frames are 2 ms enricobuehler 2026-08-16 10:05:09 +02:00
  • 5c746fbea5 chore(plugin-kit): 0.4.2 — publish the art scan fix, which no plugin can pick up otherwise enricobuehler 2026-08-16 10:01:08 +02:00
  • 59fc9294ea fix(client/apple): a fallback banner sized the poster tile it was supposed to be cropped into enricobuehler 2026-08-16 10:00:59 +02:00
  • f5f11f84f0 fix(plugin-kit): the Steam art scan knew one filename and one layout, so most covers were never found enricobuehler 2026-08-16 10:00:53 +02:00
  • fb9f605120 Merge pull request 'The grey native-vulkan stream: a host re-anchor claim the client could not check' (#262) from worktree-grey-frame-reanchor-fixes into main enricobuehler 2026-08-16 07:57:16 +00:00
  • 9e71cda298 fix(client-linux): the library grid never got the FlowBox recursion guard, so every game click overflowed the stack enricobuehler 2026-08-16 09:56:34 +02:00
  • bee924162a feat(client): the desktop client decoded one plane, at one rate, and read the engine's opinion of neither enricobuehler 2026-08-16 09:56:29 +02:00
  • 45c37f1a3b feat(apple): the ring measured milliseconds in a constant nobody had told about the negotiated rate enricobuehler 2026-08-16 09:55:42 +02:00
  • ec1e7be7dd feat(android): AAudio grants a rate or fails, so the fallback had to happen before the Hello enricobuehler 2026-08-16 09:55:21 +02:00
  • b4255631ac feat(host): the gate could not tell whether capture would really deliver the rate it was promising enricobuehler 2026-08-16 09:41:38 +02:00
  • a81c6ac789 feat(core): a ported de-jitter policy had no way to learn the real frame length enricobuehler 2026-08-16 09:38:16 +02:00
  • 88d29d3615 chore(core): regenerate the C header for the FRAME_MS note enricobuehler 2026-08-16 09:35:56 +02:00
  • 099904967d docs(core): PUNKTFUNK_AUDIO_FRAME_MS is the Opus frame, and a ring sized from it is wrong on the lossless plane enricobuehler 2026-08-16 09:33:12 +02:00
  • d09b4668c6 fix(core): the cheapest lossless rung was the one format nobody could ask for enricobuehler 2026-08-16 09:18:08 +02:00
  • cef4b849e7 fix(client): a Linux-only helper was gated on test, so the Windows client's clippy lane could not build enricobuehler 2026-08-16 02:19:00 +02:00
  • 761895ec46 feat(host): capture was pinned to 48 kHz and one oversized frame could silence audio for the whole session enricobuehler 2026-08-16 02:08:47 +02:00
  • 435962ba38 feat(core): the client had no way to be told what audio format it was about to receive enricobuehler 2026-08-16 02:08:25 +02:00
  • 7e97e600c7 feat(wire): the audio plane could not say what format it was carrying, so lossless had no way to be negotiated enricobuehler 2026-08-16 01:37:19 +02:00
  • 89fd4c6f87 fix(client): teach the VAAPI AV1 sizing fixture about the clean bit enricobuehler 2026-08-16 01:30:53 +02:00
  • 368cd3c13d feat(audio): the jitter policy took the sample rate from a constant, so a lossless plane had nowhere to put one enricobuehler 2026-08-16 01:15:32 +02:00
  • 93c1ed0723 fix(host): an RFI anchor could be picked over damage the client had already reported enricobuehler 2026-08-16 01:14:47 +02:00
  • 26d06195f5 fix(client): a host recovery anchor lifted the freeze onto a grey picture, unchecked enricobuehler 2026-08-16 01:14:30 +02:00
  • 5c44887732 Merge pull request 'Controller haptics and speaker were dead on the Linux client — it streamed a quad into whatever sink was named like a DualSense' (#261) from worktree-linux-client-pad-audio into main enricobuehler 2026-08-15 22:56:09 +00:00
  • 23edf4e702 fix(client): the pad's speaker shares a channel with its headphone jack, and powers up on the jack enricobuehler 2026-08-16 00:53:18 +02:00
  • f67a913ea7 Merge pull request 'The virtual Steam Controller 2's hidraw node was root-only, so Steam never saw it' (#260) from worktree-sc2-hidraw-udev into main enricobuehler 2026-08-15 22:52:41 +00:00
  • 9c6e34ab5d Merge remote-tracking branch 'origin/main' into worktree-linux-client-pad-audio enricobuehler 2026-08-16 00:43:31 +02:00
  • 22f873392d Merge pull request 'The virtual pad wore one AUX node where a real DualSense shows a three-node split' (#259) from worktree-pad-sink-real-topology into main enricobuehler 2026-08-15 22:39:50 +00:00
  • fb05145e36 The virtual pad wore one AUX node where a real DualSense shows a three-node split enricobuehler 2026-08-16 00:31:56 +02:00
  • db8874f944 fix(client/linux): registry globals carry no audio.channels, so every node looked 0-channel enricobuehler 2026-08-16 00:10:50 +02:00
  • 9140a2e6e1 Merge pull request 'A German keyboard typed US characters — nothing carried the box's layout into the session' (#257) from worktree-ipad-keyboard-layout into main enricobuehler 2026-08-15 21:58:27 +00:00
  • 1c426dc85f Merge pull request 'A library shortcut opened mid-stream alerted "Can't open" instead of focusing the app' (#256) from worktree-browse-link-same-host-focus into main enricobuehler 2026-08-15 21:57:58 +00:00
  • c64a1a6767 Merge pull request 'The climb gate scored encode against the negotiated refresh, so a 60 fps game was pinned at the ABR floor' (#255) from worktree-cadence-degraded-floor-lock into main enricobuehler 2026-08-15 21:57:45 +00:00
  • 60d0cdfc0f fix(client/linux): a card's public 4-ch sink beats its hidden parent — the parent's AUX0 is dead enricobuehler 2026-08-15 23:55:09 +02:00
  • d227db06e8 fix(client/linux): controller audio picked any DualSense sink, so the coils were folded away enricobuehler 2026-08-15 22:42:03 +02:00
  • 0c254cc62b Merge pull request 'Two unrelated defects were hiding behind one audio metric' (#258) from worktree-audio-stutter-fixes into main enricobuehler 2026-08-15 20:15:30 +00:00
  • 94be547da0 fix(input): a German keyboard typed US characters — nothing carried the box's layout into the session enricobuehler 2026-08-15 20:25:46 +02:00
  • 7c964e95c6 fix(host,audio): the rtkit boost was applied to a thread that does not run the capture callback worktree-audio-stutter-fixes enricobuehler 2026-08-15 20:13:14 +02:00
  • 165a42fcc9 fix(host/udev): the virtual Steam Controller 2's hidraw node was root-only, so Steam never saw it enricobuehler 2026-08-15 20:10:53 +02:00
  • 2563041e88 feat(host,audio): a 16-second outage and a starved stream reported the same numbers enricobuehler 2026-08-15 20:05:10 +02:00
  • 8ef9b18d20 fix(apple): a browse shortcut opened mid-stream alerted instead of focusing the app enricobuehler 2026-08-15 19:34:15 +02:00
  • 33d0b77e07 fix(host): the behind-cadence deadline was the negotiated refresh, so a 60fps game pinned ABR at the floor enricobuehler 2026-08-15 18:54:00 +02:00
  • 4ee095220f The in-flight budget tests still assumed buffer-only accounting (#254) enricobuehler 2026-08-15 16:41:33 +00:00
  • d9d877f985 Merge pull request 'The shared clipboard now works on iPhone and iPad' (#250) from worktree-worktree-ios-clipboard into main enricobuehler 2026-08-15 16:15:12 +00:00
  • 8c4a41913f The pad sink wore a profile name GE-Proton matches nothing on, so neither haptics nor speaker could route (#252) enricobuehler 2026-08-15 16:11:45 +00:00
  • a7da3e4cb0 Merge pull request 'The host knew about every one of these faults and had no way to say so' (#253) from worktree-console-diagnostics into main enricobuehler 2026-08-15 15:56:19 +00:00
  • 998e5d3379 docs: answer the "set the controller audio to Pro Audio" question our sink cannot offer a switch for worktree-ds-pad-sink-pro-audio enricobuehler 2026-08-15 17:33:44 +02:00
  • bec2d193c4 fix(audio): the pad sink wore a profile name GE-Proton matches nothing on, so neither haptics nor speaker could route enricobuehler 2026-08-15 17:33:39 +02:00
  • 6776bff82d feat(host,console): the host knew about every one of these faults and had no way to say so worktree-console-diagnostics enricobuehler 2026-08-15 17:30:13 +02:00
  • 37d39295aa test(core): the in-flight budget tests still assumed buffer-only accounting enricobuehler 2026-08-15 17:01:45 +02:00
  • f04da20f0d A Bluetooth Steam Controller 2 was invisible — nothing ever asked for BLUETOOTH_CONNECT (#251) enricobuehler 2026-08-15 14:25:29 +00:00
  • 8740f48c92 feat(apple): the shared clipboard now works on iPhone and iPad enricobuehler 2026-08-15 15:56:44 +02:00
  • 60b652d5e2 fix(android): a Bluetooth Steam Controller 2 was invisible — nothing ever asked for BLUETOOTH_CONNECT enricobuehler 2026-08-15 15:55:56 +02:00
  • fb61e69a3e Merge pull request 'Host-source stutter: both stutters fixed at the source, and frames finally play on the host's cadence' (#249) from worktree-host-source-stutter-fixes into main enricobuehler 2026-08-15 13:13:06 +00:00
  • 0e8149fa9c Merge pull request 'Our virtual DualSense wakes Bazzite's ds_inhibit into an SELinux audit storm that freezes the stream' (#248) from worktree-ds-inhibit-storm into main enricobuehler 2026-08-15 13:08:01 +00:00
  • 3fd0a94528 feat(desktop): present on the host's cadence under smoothness, and let VRR finally be worth something enricobuehler 2026-08-15 14:24:27 +02:00
  • 2e753fd84d fix(gamepad): our virtual DualSense wakes Bazzite's ds_inhibit into an SELinux audit storm that freezes the stream worktree-ds-inhibit-storm enricobuehler 2026-08-15 14:23:07 +02:00
  • 08a06ff295 feat(apple): present on the host's cadence under smoothness, and prove the port agrees with the original enricobuehler 2026-08-15 14:19:15 +02:00
  • a7ef62241b feat(android): present on the host's cadence under smoothness, not on the frame's arrival enricobuehler 2026-08-15 14:18:14 +02:00
  • ff513a18e1 fix(apple): the fourth client had no way to reach the one decoder that could conceal a drought enricobuehler 2026-08-15 14:08:31 +02:00
  • e207d0d73e feat(client/present): a clock that plays frames out on the source's cadence, not on their arrival enricobuehler 2026-08-15 13:58:19 +02:00
  • 7d9d7c3814 fix(client): a packet drought drained the ring into a de-prime, because nothing arrived to reveal it enricobuehler 2026-08-15 13:44:36 +02:00
  • 424621f1ce fix(audio): what the Linux gate caught in the three preceding commits enricobuehler 2026-08-15 13:44:34 +02:00
  • 925b07ec10 fix(capture): the wire pts was stamped downstream of the compositor's own delivery jitter enricobuehler 2026-08-15 13:25:15 +02:00
  • 5e77ec42c6 fix(audio): a capture hole cost more than itself, and delivered_pct could not say how many there were enricobuehler 2026-08-15 13:24:56 +02:00
  • 704defe0a7 fix(capture): the phase lock re-engaged on one good report, so a marginal host flapped 41 times in 24 minutes enricobuehler 2026-08-15 13:24:35 +02:00