Releases
v0.2.0
Compare
Sorry, something went wrong.
No results found
Changes for users
max-attempts and show-failed-attempts are no longer greeter apply keys. The greeter never read them.
ld-* icons are lys-shell's own and can no longer be overridden by an icon theme.
A modules.bitwarden server on plain http:// off this machine now gets a config diagnostic.
apptest
run an application on a private sway for any test, not only key tests (a34c9cc )
auth
the lock screen unlocks lys-secrets' login collection (bab7908 )
PAM login sessions and the greetd protocol's server side (bea19b2 )
bar
the dropdown frame is lys-ui's popover, item and metrics (e6a5151 )
the bluetooth dropdown is lys-ui's sections, item cards and code input (4f2a773 )
the network dropdown is lys-ui's sections, items and form cards (d416f36 )
the audio dropdown is lys-ui's items over sliders (5a0a42c )
the battery dropdown is lys-ui's typography, alerts and segments (af44c3a )
the battery labels take their size from their classes (1893d89 )
the brightness dropdown is lys-ui's items over sliders (4da35d1 )
the mail dropdown is lys-ui's items and badges; dropdowns cap at their width (06a5e84 )
the recorder dropdown is lys-ui's item cards and button content (6ce39f4 )
the treeman dropdown is lys-ui's cards, items and badges (0622de1 )
the notification dropdown is lys-ui's cards, items and buttons (9a27c97 )
dropdown text is lys-ui's text size (15afe75 )
the calendar dropdown takes lys-ui's typography and spacing (cbc1091 )
the weather dropdown is lys-ui's cards, items and status pages (180708e )
the dashboard dropdown is lys-ui's cards, typography and items (91d26d6 )
the media dropdown is lys-ui's header, buttons and items (085b329 )
the bitwarden dropdown takes the shared spacing and cards (bbfb35b )
a dropdown opens at lys-ui's popover gap, not inside margins (7ee3f75 )
services that start after the shell bring their modules back (00f5cb5 )
the network dropdown test drives its view on the loop (a65858b )
the bar is lys-ui's Bar in its bar window (2200a25 )
module buttons are lys-ui's BarButton (b484f70 )
a module button stays checked while its dropdown is open (59ddebb )
dropdowns open on lys-ui's side of the bar edge (40bfea0 )
the separator module is lys-ui's BarSeparator (1387342 )
a module button shows lys-ui's BarButton icon and label (e6c754a )
the workspaces are lys-ui's SegmentIndicator (6ac7e55 )
the workspaces and block-prefix lean on lys-ui 35e7374 (7fab270 )
a network's signal and a device's battery read as rings (4ed5236 )
a ring's glyph takes the extra-small icon size so it clears the track (e196265 )
the modules follow lys-wm through its IPC (3dd2566 )
icons take their logical size once on scaled outputs (d548282 )
rebuild bars in place on a config reload, make-before-break otherwise (d996690 )
toggle exclusive in place, drop the make-before-break path (589eda7 )
compositor-free tests hide every compositor socket (0c8f545 )
read the screenshot selection back through wl-paste (0b1cc78 )
hand the session cursor to lys-login with record-cursor (c367d3c )
the vault fake serves lys-secrets' write and Send methods (295921a )
volume and microphone appear once a default device exists (611c5a4 )
service-backed modules log a failed re-render instead of dropping it (f15465b )
the polling modules share a wall-clock grid and wake together (8477b6e )
logout on a server without revocation is no error; the recorder says it has no state dir (1ecae19 )
bitwarden
a launcher vault mode searches the vault from anywhere (f606730 )
password and passphrase generator core (5042f2e )
generator presets in the dropdown, config and settings (bf68906 )
a live verification code, cleared from the clipboard at expiry (c57cd83 )
notify a failing periodic sync and a forced logout (819dce6 )
the vault widget, launcher and network agent over lys-secrets (161987d )
an opt-in unlock-with-session setting for the lock screen (6821f51 )
Sends in the dropdown (e14f446 )
bluetooth
a timed scan the adapter already ended is left alone (f351f40 )
brightness
lys-shell brightness <+N|-N|N> on the focused or a named output (b9d1c74 )
drift looks with one pread and tells nobody when nothing moved (59cf79f )
enable-external follows a reload (cde5c71 )
calendar
the month grid fills the dropdown's width (5fbbe4b )
capture
the frozen frames are still images (lys-ui 0a60ea3) (8c680f4 )
cava
analyze each frame without allocating (942db10 )
a silent module parks instead of painting 60 frames a second (22dc792 )
the FFT gives the same bits on every architecture (026ed9b )
ci
every action on its latest release (15a0aa1 )
every action pinned to a commit, checkouts without stored credentials (1d5f081 )
Dependabot Go bumps refresh vendorHash through lys-ci (#141 ) (2d70ac2 )
documentation commits do not run the code gates (6964809 )
build, test and release arm64 (87e2cd4 )
CLAUDE.md
the build makes pure-Go binaries, not static ones (62746d3 )
clipboard
history bytes bounded and off the Go heap (e2183b7 )
stream received selections off the heap with ReadTo (b0dc738 )
clock
wake when the text can change, not once a second (4eeb8a4 )
config
a dropdown height takes pixels only, and says so when it does not (0d96bb7 )
a size that is neither a multiplier nor pixels fails to load (1293656 )
the recorder writes MP4 and MKV only (ad2f275 )
the schema generator writes the committed form itself (a11d80a )
pin that the default lock commands lock the display session (09824d2 )
bound lock.blur to 0-1000 (1cbe195 )
one login section for the greeter and the lock screen (61c4e90 )
the greeter reads its system config without creating it (562f0ac )
build the module defaults once for the button views (6f0af3e )
the greeter is not pushed failed-attempt keys it does not read (f15621d )
DocSection.ArrayEntry describes YAML, not TOML (f41abe9 )
cursorrecord
record the session's cursor for the greeter (f0f65e4 )
custom
a module's commands stop whole, children included (025f9b2 )
dashboard
the system stat gauges are lys-ui's ProgressRing (dc4c4f0 )
dbus
build on lys-lib's godbus fork, dbusx and dbustest (0c6738a )
dbusx
writable properties, and introspection built on demand (8bb82e1 )
dependabot
docs dependencies, and one PR for the theme's two pins (8352579 )
deps
lys-ui 392a3fc (ba68918 )
lys-ui a080561 (9cb7cdc )
lys-ui e97de6e; the active card hides its rows again (bff7d70 )
lys-ui 0ee5c56 (87900c1 )
lys-ui e402f9a (0b50eb9 )
lys-ui bf0ac6b (7607f51 )
lys-ui 5a2c01e (paint speed, bounded resample, key repeat) (aaf4f5a )
lys-ui 469b27a (scratch pool by capacity, direct image reads) (f41bf34 )
lys-ui 31955c6 (dropdown edges follow their spring) (f1b56e2 )
lys-ui 9a13386 (a long path wraps inside its notification) (bd1026b )
lys-ui a79e3a4 (the GPU path is the cheaper one) (7c9f96e )
lys-ui df34597 (rotated icons draw natively on the GPU) (a954ae3 )
lys-ui 8082c9e (gradients native, GPU matches CPU exactly) (5451d31 )
lys-ui 5d48adb (GPU survives device loss, partial repaints exact) (6e410cd )
lys-ui 2963235 (brightness rounds as the GPU does) (45c4bca )
lys-ui bf58a9d (GPU crash fix) (1dc6775 )
lys-ui 59c315c (switches animate, popups on the GPU, bar-less scrolls use the full width) (f4fef07 )
lys-ui ca7fd5f (dropdowns shrink to their row and ellipsize) (d8eb6b4 )
lys-ui 6bc3001 (pick lists fit their rows, the selection's heading shows on open) (44604ff )
lys-ui 12928d5 (images stay GPU textures) (d490413 )
lys-ui 2b53779 (popups open on the roomier side, grids reveal their selection) (4d80431 )
lys-ui 7d78079 (idle popovers stop repainting) (057aca9 )
lys-ui a356c4b (hover no longer restyles the whole window) (b046703 )
lys-ui a581882 (a popover's shadow gutter hovers nothing) (0862e3d )
lys-ui ccac65d (tiles and swatch checkerboards draw on the GPU) (d84c78c )
lys-ui 7b8ca90 (gpu.OpenNode: exportable dmabufs on a chosen render node) (370e803 )
lys-ui ca33931 (Pile, SwipeDismiss, glass on transparent hosts) (07bd5e7 )
lys-ui 3aca555 (refract on the GPU, focus keeps its visibility, Pile peeks scale and fade) (89ae708 )
lys-ui 410edfc (a swiped glass card no longer darkens its surroundings) (fb727db )
lys-ui 48e5852 (H.264 encoder, Opus encoder, MP4/MKV muxers, cached readbacks) (6fc8910 )
lys-ui c21334f (encoder overlay, encoding below the minimum coded size) (8ff9c73 )
lys-ui f97cb94 (Opus VBR and transient coding) (d60e769 )
lys-ui 32e4b68 (Mesa audit: primary-node match, exportable modifiers proven, core barriers) (ce99c9f )
lys-ui c74158f (concurrent Vulkan devices no longer crash; encoder crop and rotation) (e558b54 )
lys-ui 1c84923 (codec rejection reasons, CPU-fallback log) (68a86cb )
render, GPU and capture come from lys-lib (2e44d7c )
PipeWire, EIS, sockdir and clib come from lys-lib (5612295 )
lys-lib cb73840 (VA-API encoding, Encoder.Backend) (5775b2a )
lys-lib 4dd7053 and lys-ui 451c306 (both on go 1.27.3) (c42d829 )
GStreamer and GLib leave the package, the docs and the dev shell (375a43c )
the packages and docs stop asking for libpipewire (5a81189 )
libva for the recorder's VA-API encoder (e70bad7 )
dmabufprobe, v4l2 and audiomix come from lys-lib (43cb8e7 )
Dependabot keeps the Go modules and the workflow actions current (ddcdf40 )
lys-ui 40a8bda and lys-lib 64b52f3, the flake's lys-lib input with them (df9d5ce )
bump the all group with 7 updates (#86 ) (cd8995b )
lys-ui 9be47c1, whose SetFocus reports a refused focus (e489f87 )
lys-ui 92768be and lys-lib 62f7109 by just bump-lys (d1e90ac )
lys-ui f241d2f and lys-lib c12a4ac, the vendored wayland bindings (2953c32 )
lys-ui 64cc3ea, the GPU renderer on the compositor's device (ae88c08 )
lys-ui a6f40c2 and lys-lib acfb75c, the overlay gives way (e61d7f3 )
bump lys-ui and lys-lib to main (f534251 )
bump lys-ui; the chooser's tests lay out once (454869a )
bump lys-ui to 99735cc (a112346 )
lys-ui c1a464a, the indexed icon theme lookup (f035e2f )
lys-ui ebc469d (fe94056 )
lys-ui 76852bc (49303a5 )
lys-ui aeca14d, popovers open without a whole-window restyle (6028dfa )
lys-ui 92d907d and lys-lib 3dc3050, one Vulkan driver loaded (a41ca6f )
lys-ui 541b38d, idle spare buffers released (d79c9c5 )
lys-ui 894b602, popups repaint only what they owe (c5c1682 )
lys-ui 342bdbb, widget nodes a third the size (5688ce8 )
lys-ui 06642b9, lys-lib 2236ab4 and memory-go 8b116b9 (15728e6 )
lys-ui b21f600 and lys-lib 0ad7ba8, staging shrinks after peaks (03a95bb )
memory-go v0.3.0, lys-ui 37171c9 and lys-lib 77eb3c9 (5459ca5 )
lys-ui d9a9a7f and lys-lib b17d150 (2cab857 )
lys-ui 9ffc99b, fallback faces load on demand (c1e0bcc )
lys-ui 0915f20 (5a81d9e )
lys-lib 6ab24e3, every received fd reaches its event (83f82bf )
lys-lib b40c8aa and lys-ui 0cae526 (3f81ead )
lys-lib f6074bf and lys-ui c648784 (9d16e19 )
lys-lib 5ff5256, gamma- and CTM-control bindings (19e23b1 )
lys-lib e10e9a0, golang.org/x/net v0.62.0, modernc.org/libc v1.79.1, flake inputs (17854b8 )
lys-ui 58eaf38, lys-lib 68a67a2, lys-secrets b3d9628 (729e39d )
lys-secrets ae62fe1 (be8541e )
update every module to its latest (d2985de )
lys-ui 64f8c3c, CSS animation drives no longer orphan (e1ceb22 )
lys-ui 9e6c634, lys-lib 8d724da (69b0a7b )
lys-secrets e618292 (1c61f51 )
lys-ui 11461fb, so closed surfaces give their pixels back (630bef1 )
lys-secrets ad14764 (6aa739f )
lys-ui 3cdbc72, lys-lib 24455db (14e906b )
lys-ui 6b8586f, lys-lib 0d4d7a5; measure a dismissed picker's pixels once presented (a5ca067 )
lys-ui 3fd2357; assert the idle share picker draws nothing (543b765 )
lys-ui a72686b; the idle picker check runs in the package's process (e69b0b6 )
lys-ui 705e2fa, lys-lib 247ea81; closed windows are freed (22af210 )
bump the all group across 1 directory with 2 updates (69a9180 )
memory-go v0.5.0 (7e3afe9 )
lys-lib 71c054b, lys-ui 2c2dfa4, lys-secrets 4d8494b (1ac1c2f )
lys-lib 91f5815 (6d9ec0a )
lys-lib d927467 (f28a03d )
lys-lib's flake, for a dev shell that evaluates on aarch64 (b9ed6d0 )
lys-lib 6595d87, lys-ui 063b0c5, lys-secrets f73553c, docs: lys-docs-theme v0.1.1 (95670b5 )
gonum goes with the copied FFT (101eb79 )
desktopentry
scanning every application lists PATH once (86277f3 )
dialoghost
the Authenticate dialog for lys-polkit; lys-lib and lys-ui at main (22b8c70 )
dialogs
portal and print dialogs are lys-ui's Card (6f65afb )
direnv
load a local .env when one exists (7bfe018 )
dmabufprobe
the modifier probe the portal and the recorder share (30a453f )
docs
the config sidebar lists every generated page (0ec6c20 )
build the site on the shared lys-docs-theme (9365df1 )
correct guide claims the code no longer backs (27bc574 )
deploy the site only when its sources change (bbc471f )
pin the shared theme to its v0.1.0 release (5c55f9c )
dropdowns
a list taller than the dropdown scrolls inside it (40ac21d )
lists scroll inside their card, which grows when it must (lys-ui 33a39c6) (dab55a4 )
the card is its content, inset evenly on every side (62d419e )
filechooser
the sheet is lys-ui's card of padded bands (78febfa )
the panel is lys-ui's FloatingPanel (207b6d6 )
the panel reveals with its animation again (lys-ui b5a9174) (5a05dd1 )
the type filter is a dropdown like the dialog's choices (01bbb4f )
a long place name ellipsizes inside the sidebar (d1e6d45 )
the replace notice names the folder and wraps (4bf795b )
pad the save name and sidebar headers, no margins (effe172 )
the stylesheet's tokens reach the chooser, the zebra by index (208bb06 )
the list's columns give way to the name, headers over values (6e94404 )
the grid is a GridView, gapped, inset and rounded (44bf178 )
the sidebar sizes itself, no pin (22649b3 )
Replace sits beside the notice again (4a4aa1d )
the zebra is row:nth-child(even) again (4e7d2b1 )
columnRow leaves hidden cells to PaintChild (703cecc )
columnRow hit-tests its cells through HitChild (38ec92d )
thumbnails freed on close, decodes cancelled and byte-budgeted (bc7353a )
flake
bump lys-wm to resume input only after a suspend (fd5eece )
lys-wm and lys-login at their bumped heads (c867682 )
flake.lock
lys-lib b40c8aa, lys-wm e245828 (339a934 )
gitignore
anchor the root entries, ignore test binaries (dc90425 )
go
1.27.3 throughout, the godbus copy included, in current idioms (5489368 )
godbus
setting a property never rewrites a value a reply still holds (af992d4 )
export and unexport under the handler's lock (5ef3764 )
gpuhost
the GPU tests hold one Vulkan device for the process (a616a2c )
the GPU tests open a device per test again (0afded4 )
greeter
background resampled to the outputs off the Go heap, freed at the end (2bd7723 )
icons
bundle the Lucide glyphs that replace Tabler, Material and Adwaita (0a9cfc9 )
drop the Tabler, Material and Adwaita sets and their licences (4486c3f )
the symbolic transform rounds every product, as Rust does (8581d3e )
lys-shell's own icons resolve without listing the theme chain (d6bc702 )
idleinhibit
refuse a duration whose seconds do not fit a uint32 (ed92301 )
imagedecode
decode JPEGs off the Go heap (74d0fc0 )
a wallpaper is read through a larger buffer (26dffa6 )
input
bar and launcher presses ride lys-ui's pointer and scroll hooks (500afdc )
lys-shell reads keymaps with lys-lib's xkb (63a1777 )
intconv
integer conversions that refuse or saturate instead of wrapping (eb51771 )
jpeg
progressive coefficients are stored in 16 bits (6e9deb3 )
just
docker runs any recipe in a container; check is vet, lint, test, race, schema, build (3b42518 )
bump-lys moves lys-ui and lys-lib to their main heads (9f69061 )
keytest
Tap returns once the application handled the key (abef29a )
keytoggles
probe keyboards through SyscallConn so Close ends their reads (4bc878c )
launcher
the launcher is lys-ui's command palette (9e9de20 )
focus the entry after the surface is shown (b038233 )
lint
gosec G115 holds for the whole tree (cbd4b27 )
lock
the lock and greeter prompt is lys-ui's card (3cb49ff )
the decoded background is dropped when the lock ends (a5cc5ae )
background resampled to the outputs, blurred off the Go heap (1dfc264 )
login
the greeter and the lock screen build one screen (8fa0e18 )
lys-login, one binary for the greeter and the lock (e63973a )
lys-login as the display manager, greeter in a lys-wm kiosk (836d8c5 )
lys-login lives in its own repository now (30aad9e )
logout
resolve the session through logind, not XDG_SESSION_ID (70a6247 )
exit lys-wm through its IPC while it runs (e27069f )
lyswm
the lys-wm IPC client (a4cee8c )
seed the watcher's layout and submap from lys-wm's requests (7c9d53e )
a watcher seeds and holds only the state it follows (5d5c350 )
mail
provider icons come from the bundle, not a startup download (16f534e )
mango
the watch test sends its frames when it asserts on them (4cfcbd7 )
netstat
read every interface from /proc/net/dev in one go (c714f1e )
network
the tests wait on a liveness bound, not a speed bound (5291163 )
a sweep that sees a tunnel go down stamps it, and guesses no state (537073a )
the wifi row's status sits at its end, its address whole (471b237 )
the fake NM waits out its calls before it closes its bus (910db2f )
nightlight
apply the colour temperature natively, without hyprsunset (ce0a9e5 )
ease over 15 minutes at civil dawn and dusk where the machine is (3f8a9b2 )
an ease crosses the whitepoint fit's seam without a step (892c2cd )
save the override atomically and say when it fails (892bc9c )
catch up the moment the clock jumps, as a resume does (e5c6e66 )
send a matrix or ramps only when the wire value changes (5098e71 )
GeoClue works with no agent in the session (d4919da )
a record that cannot be cleared, or kept, says so (07b6652 )
nix
the binaries no longer load libpipewire (9ddfdf4 )
the dev shell finds the GPU drivers off NixOS too (6587561 )
vendorHash for the gputest import (0435665 )
the dev shell keeps its own Go, the package builds with buildGo127Module (48895a4 )
a VM check runs the shell on lys-wm (be0901c )
the lys-wm VM check binds and presses a global shortcut (7992154 )
the lys-wm VM check runs the shell on its default renderer (a5e1a9c )
refresh vendorHash for lys-login's imports (613dcb8 )
lys-wm and lys-login inputs follow their latest (f5d0d3d )
lys-wm and lys-login inputs follow 024322c (c624a41 )
the module's GeoClue comment says what the schedule does now (f70629c )
notifications
the store round trip loads at the time it sent (3b8a096 )
write the store in the order the history changed (c93b324 )
bound the in-memory history, page the rest from disk (3b8664a )
clear all removes notifications from both clear-all buttons (ccc961f )
notifyui
grouping by key is shared (42e3813 )
osd
the OSD is lys-ui's card at an explicit width (13b405e )
flash keyboard layout switches (1c7a8b7 )
lock-key toggles from lys-wm's IPC on lys-wm (4342905 )
a disabled OSD opens no input devices (9c2cf35 )
overlays
read every overlay's keys through the keymap, in one place (c083348 )
pipewire
speak the native protocol instead of dlopening libpipewire (0149b94 )
drive a PipeWire 1.0 server's node activation too (5b6399e )
popups
a notification popup is lys-ui's card around an Item (262b571 )
notifications stack per app and fan out on hover (#84 ) (214fc13 )
stacks inset from the screen edge, the count inside its card (562e400 )
the urgency bar runs down the card's left edge (c89be18 )
a swiped card darkens nothing outside itself (8abde6e )
portal
remote-desktop input applies in the order it was sent (ef047d8 )
allocate zero-copy screencast buffers through lys-ui's Vulkan device (d263e3d )
a ScreenCast stream ends when its producer loses PipeWire (457f1a7 )
screencast allocates on the compositor's device, in a modifier it imports (230d3ee )
name the PipeWire client, ScreenCast streams and EIS seat (c296476 )
a ScreenCast stream's frame rate is never made up (d76f28c )
lys-shell serves the lys-wm desktop (a8010a2 )
keep the per-app master secrets in the Secret Service (03d7ce2 )
read GTK settings through lys-ui's gtksettings (59f1ee8 )
stream shared windows zero-copy over dmabuf (cdd71f6 )
pin that a window share follows the window from its first second (d46812a )
keep apps' Secret portal keys in the Bitwarden vault (3a6f472 )
a still shared window stays live, and new buffers get a frame (7a19f4c )
a window's ended copy wakes the stream (238c63b )
say why a window's new buffers take a new session (1fde27d )
a region's frames land in a dmabuf too (cf21cc3 )
portaldialogs
the dialogs are lys-ui cards with its buttons (7b678d4 )
a password dialog, and the UI host in its own package (cc01e58 )
serve and call lys-lib's PortalDialogs1 contract (2760d08 )
powermenu
the power menu is a lys-ui card of outline tiles (d031cbd )
printdialog
the print sheet is the shared lys-ui dialog (26f1885 )
pulse
the audio service reconnects instead of freezing (920fe52 )
pulsetest
the fake server's socket lives in a short dir (13f808e )
README
a front door, with the reference on the site (84d8d76 )
use the site images, drop the duplicates in assets/ (328a1c6 )
recorder
the webcam position picker fits its card (47c56fc )
the device selects stay inside their cards (ac78698 )
capture, encode and mux on the GPU instead of GStreamer (dc4da3a )
decode MJPEG webcam frames that leave out the Huffman tables (804eeb3 )
record a region, and turned outputs upright (33206fa )
a GPU that cannot encode H.264 says why (e076fd5 )
each recording logs its device and encoder backend (a94a91c )
the pause test runs on a clock it moves (542dd99 )
the GPU recording test runs on a clock it moves (d2504e8 )
wait for the reconfigured screen to settle in the region test (b264bae )
tests wait on what they need instead of fixed sleeps (030004f )
regionoverlay
the size label and hint are lys-ui pills (f808522 )
read keys through the keymap, so Enter confirms from any keyboard (4bd9ba7 )
render
lys-shell draws through lys-ui's GPU path (#85 , lys-ui 5795124) (a4d3f1d )
screenshot
the focused output, active window and window picks from lys-wm (7d43f27 )
overlay frames off the Go heap, freed on close (4bd6560 )
copy to the clipboard through data-control (d389ff0 )
the focused output from sway and niri too (0b01e68 )
secrets
lys-secrets, a Secret Service of the lys desktop's own (bd8035d )
a DH secret every client derives the same key from (4ae87ed )
lys-secrets lives in its own repository now (a4e7bc9 )
security
govulncheck findings in code scanning, a license allow-list for new dependencies (ff10141 )
settings
the window is lys-ui's cards, item groups and controls (62da9e8 )
an idle window owes no frame (lys-ui 4d8b099) (7721e1d )
colors are lys-ui's color button and swatches (lys-ui e93ff98) (3a76854 )
the bar layout's chips are lys-ui's Chip and ChipBox (871afbc )
controls line up on lys-ui's sizes and the theme's spacing (d1bcca1 )
the color button and bar zones take lys-ui's boxes (lys-ui 97d6967) (e6ae304 )
the icon picker offers the icons the theme resolves (30dbc01 )
the icon picker is a padded grid as wide as its trigger (6eb09ac )
a picker opens with its search entry taking the keys (28180f0 )
the icon grid opens at the current icon (d0d949f )
the module and theme pickers list like a dropdown (9ad4cb9 )
the icon picker builds only the cells in view (7565d82 )
path fields rest on a middle-ellipsized path at one width (2a08c3a )
an empty path field reads a placeholder (8e79a5a )
path fields ellipsize through the entry itself (ad9f5c9 )
every path page fits a 760px window, at the widest field (5d813f5 )
compare enum list rows by identity (fb78aad )
apply the greeter config as the user, admin only on request (cca82d5 )
sharepicker
the picker is lys-ui's card of source cards (b8cc585 )
the reply's targets live with the picker that writes them (9b74867 )
choose a source with the keyboard (dcb0f4a )
arrows keep to the cards in line with the focused one (ea9e284 )
stop a card's spinner once its preview lands (2999b5d )
key tests wait for the compositor to focus the picker (0446b5d )
a dismissed picker leaves exactly what was resident before (0aba54a )
the headless memory and idle tests tolerate a loaded machine (1a50ae5 )
a tall window's preview stays in its card (c8df1c0 )
the idle test waits for the frame it owes, not for a quiet window (e50df5d )
shell
the styling scale is read as configured, without a fallback (bf5caf0 )
every UI glyph is Lucide (315851d )
warn about config icons no theme provides (8945052 )
size Go-built text from the type scale (79c87d6 )
lys-ui's measure protocol, lys-ui 83e7ada (#108 ) (db291a6 )
sliders
one write at a time, and no stale level while it lands (80af382 )
sni
keep only the tray pixmap the bar draws (27404ac )
spawn
launched apps run in a systemd scope of their own (1d1ef2e )
styling
rounding and scale default to lys-ui's own (332018e )
one type scale, and lys-ui's text classes on it (4efb584 )
color mixes round the same on arm64 (2ceff13 )
swaytest
export it for lys-login's lock contract test (cc4ebec )
sysinfo
read only the temperature input the cpu lookup settles on (6224249 )
read the cpu poll's files without per-file allocations (8491d82 )
the cpu and memory polls stop rescanning hwmon and allocating per line (51b8ca7 )
the bar's polls read what the format shows, through kept descriptors (1dc3c8e )
systray
tray icons sit in the middle of the bar (a0c1f10 )
a layout update re-reads the open menu without AboutToShow (1e1e578 )
a submenu sends its own AboutToShow as it opens (0a9a8b8 )
draw the attention icon and the overlay icon (4069bd9 )
draw once before following the store (2d970ee )
test
one private headless sway helper, internal/swaytest (c045e47 )
GPU tests need a Vulkan device behind the node, and probes say why they stop (2db7519 )
a GPU check run on purpose fails when it cannot reach the GPU (a4d829d )
tests
grid cells come from the view's Children, not a pixel scan (05aaafc )
one golden and one hash on every architecture (a3140fc )
toast
--preset help names the real config key (cf1ef1a )
treeman
wait on the daemon's socket instead of spawning the CLI every 5 s (6d80e4c )
wallpaper
device rasters off the Go heap, shared and freed (33966c8 )
resample through lys-lib's ResampleTo, delete the copy (532644f )
free rasters a resample finishes after shutdown (5010dd2 )
decode the wallpaper off the Go heap, freed once rasterized (d5976c9 )
the raster hashes pin amd64's rounding (318b3a8 )
widgets
the empty state is shared, not the bar's (c24bc59 )
a pinned size is lys-ui's size request and maximum (b2a0262 )
workspaces
the active fill covers its whole segment, not a pill (73e3f19 )
xdg
resolve lys-shell's directories through lys-lib's xdg and version.Name (0bcefaa )
Other
v4l2, audiomix: the webcam reader and the mixer become packages (8194b93 )
lock, greeter: decode the background off the Go heap (803dcc5 )
Remove the lys-login binary committed by mistake (dd3b6a7 )
update lys-shell (40f8685 )
screencast, recorder: carry dmabuf formats and modifiers as fourcc types (7e332da )
intconv, atomicfile, xdg: use lys-lib's shared copies (08a54f2 )
export the packages lys-login shares; lockclient moves to shell/ (009398e )
runtime dir: lys-shell's sockets and markers only under XDG_RUNTIME_DIR (3fe223a )
network, bitwarden: the secret agent answers from the vault before it asks (6a3cdac )
build(deps-dev): bump vite from 6.4.4 to 6.4.5 in /docs (#132 ) (5a61a27 )
network, bitwarden: offer a typed sign-in to the vault once it connected (48b9751 )
lys-lock, lys-settings: parse arguments before touching the session (5b63f14 )
float products round the same on every architecture (39b14ce )
math and fused products stay out of this repository (372b1f3 )
You can’t perform that action at this time.