Repository navigation
Releases: GhostEagle68/umbriel-config
Release list
canary 65e431b
Untested build of 65e431b from dev. Times are UTC.
🚀 Features
Find
- Implement find and replace functionality in shader editor · 2026-10-01 01:04 (d481256)
Install
- Verify the release signature in get.sh when minisign is present · 2026-09-29 22:53 (4c9edb5)
Shaders
- Read the shader API from umbriel's docs and schema and edit border, window, screen and cursor shaders · 2026-09-30 00:03 (d88df3f)
- Add support for shader pools alongside presets in the effects system · 2026-09-30 23:13 (e850f00)
- Move the shader editor from an overlay to a full page in Shaders · 2026-09-30 23:18 (8f4fd10)
- Highlight shader code and number its lines · 2026-10-01 00:08 (dd5a7d4)
- Mark compile errors in the editor gutter and list them under the code · 2026-10-01 00:18 (946e9a9)
- Suggest umbriel names and GLSL words while typing and add a reference panel · 2026-10-01 00:28 (920304e)
- Add comment toggle, bracket pairing and matching, auto-indent and go-to-line · 2026-10-01 00:46 (76a645e)
- Edit an animation event's curve and duration from its row, over a preview · 2026-10-01 01:45 (5a7a378)
- Edit a preset's palette, speed, padding, light and radius from the shader editor · 2026-10-01 01:55 (3a6b875)
- Run the preview on a real clock and palette; wiring only · 2026-10-01 02:09 (b914ad9)
- Badge community shaders that an update added · 2026-10-01 02:15 (783d843)
- Sort the library by name or age, in the library and the picker · 2026-10-01 02:21 (1317c50)
Update
- Refuse update tarballs without a valid signature · 2026-09-29 22:49 (2b1b980)
🐛 Fixed
Config
- Sync saves and keep the config's file mode · 2026-09-29 21:45 (bd339bc)
Save
- Keep the baseline of files that saved before a failure and bound the outputs scan and harden small edges · 2026-09-29 22:08 (2e862de)
Shaders
- Sync shader writes to disk and clean up on failure · 2026-09-29 23:22 (0f072d1)
- Keep hand-added preset keys when a shader is renamed · 2026-09-30 23:06 (b3623ff)
- Adjust color transparency for shader code editor to improve rendering · 2026-10-01 00:53 (43f4ce7)
- Show the editor's shortcut hints in full instead of eliding them · 2026-10-01 01:09 (d8d4777)
- Release the shell before rebuilding the library on a sort change; back up each timing dialog session · 2026-10-01 02:23 (56cb6ee)
- Keep thumbnails off the live clock and palette, run the preview clock on real time, stop redrawing still previews, keep file modes on atomic writes · 2026-10-01 02:30 (65e431b)
…and 33 earlier (all changes since v0.3.0-beta.4).
Install
Install this build in one command:
curl -fsSL https://raw.githubusercontent.com/GhostEagle68/umbriel-config/dev/packaging/get.sh | sh -s -- --canaryOr download the tarball for your machine below (x86_64 for most PCs,
aarch64 for ARM), then:
tar -xzf umbriel-config-x86_64-linux.tar.gz
cd umbriel-config-x86_64-linux
./install.shAlready have umbriel-config? Pick Canary in Settings → Updates.
Every tarball is signed (.minisig beside it, canary key). The installer
and the app's updater check it for you; to check a manual download, see
Verifying a download.
v0.3.0-beta.4 — Beta
Install
Download the tarball for your machine below (x86_64 for most PCs,
aarch64 for ARM), then:
tar -xzf umbriel-config-x86_64-linux.tar.gz
cd umbriel-config-x86_64-linux
./install.shOr install it in one command:
curl -fsSL https://raw.githubusercontent.com/GhostEagle68/umbriel-config/dev/packaging/get.sh | shAlready have umbriel-config? It updates itself: Settings → Updates.
Changes
Highlights
Keybinds settings are redesigned. The Keybinds page is rebuilt as a modern shortcut editor.
- Edit in place. Click any bind to edit it right there in the list; click one of Umbriel's defaults to override it.
- Record keys. Press the combination instead of typing it; Umbriel passes your existing shortcuts through while recording, so they're captured instead of triggered. In the search box, pressing a key finds every bind that uses it.
- Pick an app. "Launch an app" binds pick from your installed apps (AppImages included) instead of a typed command. Shell-command binds offer the usual commands for media and brightness keys, and warn when Umbriel can't find the command.
- Easier to scan. Keys show as keycaps, launch binds show their command, and groups collapse. Filter by All, Yours or Defaults.
- All bind options. Allow when shortcuts are inhibited and cooldown can now be set, and the shortcuts inhibition toggle is in the action list.
- Guided parameters. The parameter field adapts to the action: a dropdown for fixed choices, hints for workspaces and sizes, hidden when unused.
🚀 Features
General
- Feat(keybinds): redesign the keybind editor
Full diff: v0.3.0-beta.3...v0.3.0-beta.4
v0.3.0-beta.3 — Beta
Install
Download the tarball for your machine below (x86_64 for most PCs,
aarch64 for ARM), then:
tar -xzf umbriel-config-x86_64-linux.tar.gz
cd umbriel-config-x86_64-linux
./install.shOr install it in one command:
curl -fsSL https://raw.githubusercontent.com/GhostEagle68/umbriel-config/dev/packaging/get.sh | shAlready have umbriel-config? It updates itself: Settings → Updates.
Changes
🐛 Fixed
Guide
- Clean up guided setup and add Cancel
- Guided setup: drop the empty heading and lone card toggle, hide the
NEW and owning-file badges on its rows, and add Cancel when re-run
from Settings (discards the filled-in suggestions; first run has none). - Setting rows: number, color and open-choice editors now line up on
the right edge like the other editors.
- Guided setup: drop the empty heading and lone card toggle, hide the
Packaging
- Launch from the app menu in sessions with a minimal PATH
The desktop entry ran umbriel-config by bare name. Umbriel starts apps
with PATH=/usr/local/bin:/usr/bin, so a ~/.local install never opened
from the launcher (it did on Plasma, which reads the login profile).
install.sh now writes the absolute binary path into the installed entry.
Settings
- Restart after an in-app update
"Restart now" failed with "No such file or directory" once an update
had installed. The installer replaces the running binary, after which
/proc/self/exe points at the deleted old file. The executable path is
now read at startup, before any update can replace it.
General
- Fix(settings): close the save dialog after saving; guard double install
🛠 Build
Changelog
- List build and packaging changes in release notes
General
- Cut CI and release build times
- CI: install slint-lsp 1.17.1 from Slint's prebuilt release instead
of compiling it (was ~8 of the 10 minutes). - Release: publish with --no-verify; the build job has already built
the tagged commit, so the verify rebuild (~11 min) was a duplicate. - Dev profile: line-tables-only debug info; incremental rebuilds drop
from ~7.7 s to ~3.3 s.
- CI: install slint-lsp 1.17.1 from Slint's prebuilt release instead
Full diff: v0.3.0-beta.2...v0.3.0-beta.3
v0.3.0-beta.2 — Beta
Install
Download the tarball for your machine below (x86_64 for most PCs,
aarch64 for ARM), then:
tar -xzf umbriel-config-x86_64-linux.tar.gz
cd umbriel-config-x86_64-linux
./install.shOr install it in one command:
curl -fsSL https://raw.githubusercontent.com/GhostEagle68/umbriel-config/main/packaging/get.sh | shAlready have umbriel-config? It updates itself: Settings → Updates.
Changes
🐛 Fixed
Settings
- Build setting pages from umbriel's docs
umbriel now installs a short starter config instead of its full
reference, so most setting pages showed their options as read-only
"other" rows. The pages are now built from umbriel's user docs, with
their ranges and value lists, plus anything only the installed config
has. A copy of the docs ships with the app; newer docs download at most
once a day when update checks are on, or right away with Sync schema.
Full diff: v0.3.0-beta.1...v0.3.0-beta.2
v0.3.0-beta.1 — Beta
Install
Download the tarball for your machine below (x86_64 for most PCs,
aarch64 for ARM), then:
tar -xzf umbriel-config-x86_64-linux.tar.gz
cd umbriel-config-x86_64-linux
./install.shOr install it in one command:
curl -fsSL https://raw.githubusercontent.com/GhostEagle68/umbriel-config/main/packaging/get.sh | shAlready have umbriel-config? It updates itself: Settings → Updates.
Changes
Highlights
Shader editor upgrades.
- Builder when editing. Editing or forking a shader opens the same
effect builder as a new one, with its steps read back from the code,
and hand-edited code is never overwritten. - Thirteen new effects. The builder adds Rotate, Swirl, Ripple,
Pixelate, Stretch, Flip, Drop, Iris, Wipe, Dissolve, Desaturate, Tint
and Ghost trail, and any effect can be stacked more than once. - Live sliders. Dragging a builder slider updates the code and the
preview as you move it, and each slider shows its current value. - Play. The preview can play the animation on a loop at 0.3, 0.6
or 1.2 seconds, instead of only being scrubbed by hand. - Rename. Your own shaders can be renamed from the editor, and every
event using the shader follows it to the new name. - Preview as any event. Pick which event the preview plays as: it
shows a fitting stand-in (a window, a workspace, a bar, a focus border)
and plays with that event's own curve and timing from your config. - Choose where it is used. Saving a shader asks which events should
use it, showing what each uses now, so a new effect is assigned in the
same step.
🚀 Features
Shaders
-
When editing a shader
or forking a shader it now opens the same effect builder as New
shader, with its steps and slider values read back from the code. The
builder also stays after the first Save of a new shader, where it used
to disappear. If the code was changed by hand, the builder locks rather
than overwriting your edits. "Start over with builder" replaces the
code with a fresh stack after you confirm. Typing code that matches
the builder's output unlocks it again. -
The effect builder gains Rotate, Swirl, Ripple, Pixelate, Stretch,
Flip, Drop, Iris, Wipe, Dissolve, Desaturate, Tint and Ghost trail,
each with its own sliders. Like the existing effects, every one plays
from hidden to the plain window and can be stacked more than once.
Ghost trail reuses the previous frame, which umbriel notes costs extra
GPU memory, so its name notes that. -
Builder sliders only took effect when you let go. Now the code and the
preview follow the slider while you drag it, and each slider shows its
current value next to it, rounded to what the code will use. -
The shader preview could only be scrubbed by hand. A Play button now
runs the animation on a loop, with a short hold on the last frame, at
0.3, 0.6 or 1.2 seconds. Grabbing the scrubber pauses it, and direction
and builder changes keep applying while it plays. -
The Name field in the shader editor is now editable when editing one
of your own shaders. Saving under a new name renames the file, and
every event using the shader switches to the new name straight away,
written to your config at once so a later Discard can't leave it
pointing at the old name. Taken names are refused, and changing only
the name counts as an unsaved change. Forking a shader whose "-fork"
name is already taken now suggests "-fork-2", "-fork-3" and so on. -
The shader preview always showed one window opening or closing. A
"Preview as" picker now plays it as any of the nine events, each on a
stand-in for what umbriel really shades: a window, a workspace's
windows, the overview filmstrip, a scratchpad window over its backdrop,
a bar-shaped layer, or a border ring. Play and the scrubber follow that
event's curve and length from your config (springs included), and the
shader gets eased and linear progress just as umbriel passes them. The
editor opens on the event the shader is assigned to. -
Saving a shader now asks which events should use it: a checklist of
all nine, each showing what it uses now, pre-ticked with the event
being previewed and any already using the shader. Ticked events switch
to it and unticked ones stop using it, as changes saved with the main
Save button, so a new effect is assigned in the same step it's made. -
Save a shader without changing assignments. The "Use for" step on Save gains a Save only button: it keeps the
shader file and leaves every event's assignment exactly as it was.
🐛 Fixed
Backups
- Keep files that share a name apart
Backups stored each file by name only, so two config files with the
same name in different folders overwrote each other, and a restore
could write one over the other. Each backup now records every file's
full path and restores it there. Backups made before this still
restore by file name.
Config
- Edit a setting in the file whose value umbriel uses
When two included files set the same key, umbriel uses the one listed
last, but editing, resetting or moving that setting acted on the first.
The edit could land in a file umbriel ignores for that key, and the
save popup could move the wrong value. Edits now go to the same file
whose value umbriel applies: the main config, then later includes over
earlier ones. - Open your own config on a fresh install
With umbriel installed but no ~/.config/umbriel/config.toml yet, the
app opened umbriel's packaged default in the system folder instead.
First-run setup never appeared and every save failed with "Permission
denied". The app now always edits your own config file, so a machine
without one gets the first-run setup and saving creates the file. - Load optional includes
Files listed under [include.optional] were ignored, so settings and
keybinds from them (like a Noctalia theme file) were missing and the
app showed the wrong current values. They now load after the regular
includes, the same order umbriel uses, and a missing optional file is
skipped without a warning. - Saving keeps a symlinked config a symlink
Saving replaced a symlinked config.toml (a dotfiles setup) with a
plain file, so the dotfiles repo stopped receiving changes. Saves now
write to the file the link points at, and the one-time .bak stays next
to the link, out of the dotfiles repo.
Shaders
- Save shader assignments for every animation event
Picking a shader in an Assignments dropdown looked like it worked, but
the change was thrown away: the file path was written without quotes,
the edit was rejected, and nothing reached Save. Picks are now written
as proper strings into the file that already holds that event's shader
(new ones start in your main config, and the save popup can move them),
and the dropdowns always redraw from what is really in your config. - Let a missing shader assignment be cleared
When an event pointed at a shader file that no longer exists, its
dropdown showed "(no shader)", so picking "(no shader)" did nothing and
the broken assignment couldn't be removed. The dropdown now shows the
missing file as its own entry, and choosing "(no shader)" clears it. - Delete the shader you clicked, after confirming
The Delete button on a shader card ignored which card it was on. It
deleted whichever shader the editor had last opened (so after editing
one shader and cancelling, deleting another removed the first), or did
nothing at all. It now deletes that card's own file. Both Delete
buttons, on the card and in the editor, ask for a second click first,
because a deleted file can't be recovered. - Refuse to overwrite an existing shader when saving a new one
Saving a new or forked shader under a name you already used silently
replaced the old file. The editor now stops and asks for another name,
or points you to Edit on the existing shader. - Indent every line of builder-generated code
The Glow pulse and Shatter effects wrote their first line of code
flush against the left margin, so the generated shader looked
misaligned in the code view. Every line is now indented to match. - Only flag community updates when the installed version is known
A community shader collection downloaded before the app started
recording which version it fetched was always reported as "update
available", even when it was current. With no recorded version the
page now leaves the indicator alone. Updating once records the version
and turns the check back on. - Stay on the current page when a download finishes
If you left the Shaders page while the community shaders were
downloading, the app jumped back to Shaders when the download
finished. It now refreshes the Shaders page only while you are on it. - Open the preview mid-animation instead of on a blank frame
The shader editor's preview started at the first frame. For effects
that fade in, the window is fully transparent there, so the preview
looked empty or broken. It now opens halfway through, so the effect is
visible right away; scrub to see the rest. - New shader assignments go in the file that holds the others
Assigning a shader to an event that had none always put it in the main
config.toml, even when your other assignments live in an included
shaders.toml. New assignments now start in the file that already holds
the most of them. With none anywhere, an included shaders.toml is used,
otherwise the main config. The save popup can still move any of them. - Ask before closing the editor with unsaved code
Cancel closed the shader editor straight away, throwing out any code
you had typed or built since the last save. With unsaved changes it
now asks "Discard unsaved changes?" with Keep editing and Discard.
Nothing changed since opening or saving still closes immediately. - Tab indents in the shader code editor
Tab in the code pane jumped focus t...
v0.2.6-beta.1 — Beta
Install
Download the tarball for your machine below (x86_64 for most PCs,
aarch64 for ARM), then:
tar -xzf umbriel-config-x86_64-linux.tar.gz
cd umbriel-config-x86_64-linux
./install.shOr install it in one command:
curl -fsSL https://raw.githubusercontent.com/GhostEagle68/umbriel-config/main/packaging/get.sh | shAlready have umbriel-config? It updates itself: Settings → Updates.
Changes
🚀 Features
- (ui) Color picker popup for color swatches
🐛 Fixed
-
(ui) Repair invalid-looking setting inputs and add open-choice fields
Several setting rows across the app looked broken or gave no feedback
on bad input:- Invalid edits (bad color, out-of-range number) silently reverted
with no explanation; rows now show a red border and inline error. - Ranged numeric rows showed a slider even when the value was unset,
and hid it in other cases due to a dead NaN check. - A
mine_commentssection-tracking bug let commented example keys
inside[[window_rule]]/[[layer_rule]]blocks leak into the prior
[layout.master]section, producing duplicate phantom rows; the
duplicate-guard also failed to update as entries were mined, letting
repeats through. mine_rangetook the first word before a dash as the min value, so
any prose-prefixed range ("Inner border width, 0-100 logical
pixels") silently dropped its slider across Appearance/Blur/Shadows.- Hot-corner actions and window/layer/security-context rule outputs
were plain text boxes with no hint of valid values; both now get a
newKind::OpenChoicewidget — a dropdown of known values (actions
mirrored from Umbriel's docs, live output names for rules) paired
with a free-text box that stays in sync, so open-ended values
(spawn:..., unlisted outputs) remain fully editable. - The dropdown's popup width was tied to the closed box's width and
truncated long action names; widened to fit the longest entries. - A real empty string (e.g.
input.keyboard.layoutmeaning "system
default") looked identical to a broken blank box; text fields now
show a light "empty" placeholder to distinguish it from actual
content, without affecting the literal unset"—"placeholder. - The Reset button only existed on ranged-number rows even though the
changed-indicator dot lights up for every kind; Reset now works
uniformly across all editable kinds. - Window-rule size fields (
default_size,default_width,
default_height) were renamed upstream to
default_floating_size_px/default_floating_size/
default_scrolling_extent_px/default_scrolling_extent; rules.rs
and document.rs updated to match, with newrule_size_px/
rule_size_fractiondocument helpers mirroring the existing
rule_positionpattern.
- Invalid edits (bad color, out-of-range number) silently reverted
📦 Other
- Change get.sh URL to use the dev branch for install
Full diff: v0.2.5-beta.2...v0.2.6-beta.1
v0.2.5-beta.2 — Beta
Install
Download the tarball for your machine below (x86_64 for most PCs,
aarch64 for ARM), then:
tar -xzf umbriel-config-x86_64-linux.tar.gz
cd umbriel-config-x86_64-linux
./install.shOr install it in one command:
curl -fsSL https://raw.githubusercontent.com/GhostEagle68/umbriel-config/dev/packaging/get.sh | shAlready have umbriel-config? It updates itself: Settings → Updates.
Changes
Highlights
Shaders page. Discover, download and assign umbriel's GLSL animation
effects: the ones bundled with umbriel, your own, and a community
collection the app downloads and updates for you over HTTPS, no git
needed. Every animation event gets a dropdown, files umbriel would
reject are flagged before they can be saved, and a shaders.toml your
include chain ignores is called out with a one-click fix.
Shader editor with a visual effect builder.
Build your own effects without writing GLSL: stack steps like Fade, Scale, Slide, Shatter,
Wobble and Glow pulse, each with its own sliders, reorder them, and the
shader composes itself with the generated code in view for hand-tweaking.
A preview renders the shader offscreen so you can scrub the animation
like a video timeline, and the GLSL errors it reports as you type are the
ones umbriel would report, down to the line numbers. Your own shaders
open for editing, bundled and community ones fork into editable copies,
and saving live-reloads in umbriel.
Update channels, and updates from inside the app.
Choose Stable for tested releases or Pre-release for new features first, in Settings ->
Updates. Installed from a release tarball, the app can now download and
install a new version itself and restart into it; cargo, package-manager
and source builds are given the exact command for their setup instead.
🚀 Features
- (shaders) Add shader discovery and management for animation effects
- (shaders) Enhance community shader management with download and update functionality
- (shaders) Implement shader update availability check and UI indication
- (shaders) Visual effect builder and in-app shader editor
- (shaders) Preview scrubber with live GLSL error reporting
- (ui) Fluid resizing across pages, header, and editors
- (search) Surface whole pages and keybinds in results
- (updates) Choose between the Stable and Pre-release channels
- (updates) Install updates from the app on tarball installs
- (ui) One-time notice explaining the new update channels
🐛 Fixed
- Assigning a shader from a dropdown did nothing: the callback was
declared but never connected, so no edit was recorded and Save
stayed disabled. - Clearing a shader back to "(no shader)" or any other edit that
removes a key was invisible to Save: the change counter stayed at
zero and the save popup found "nothing to save" even though the
document was modified. Deletions now count as changes, appear in the
popup as "(removed)", can be discarded, and reset restores them. - The save popup preselected the wrong destination file for changes
living in included files (off by one in the dropdown). - The community-shaders download looked up the config directory from
the environment, so withXDG_CONFIG_HOMEunset the button failed
with "Could not determine the config directory". It now targets the
folder of the config the app opened, and the library refreshes as
soon as the download lands. - Save-time validation no longer appends "umbriel validate exited
unsuccessfully without reporting diagnostics" to ordinary warnings.
umbriel exits nonzero for any diagnostic, warnings included, and
warning-only configs still apply. Warnings now show in the banner
by themselves and never block a save. - (ui) Update shader removal indication from "(built-in)" to "(no shader)"
📦 Other
- Update version numbers in README.md
- Update shader assignment and save behavior descriptions in changelog
Full diff: v0.2.0-beta.1...v0.2.5-beta.2
v0.2.0-beta.1 — Beta
umbriel-config v0.2.0-beta.1
Channel: Beta (pre-release — expect rough edges)
First release on the Slint interface. The old EGUI interface is gone, and a lot
arrived with the new one.
Features
- Backups you can restore. Every save snapshots your config into a
dated backup run (keeping the last ten by default), the restore
browser shows a per-file diff before you commit, and restoring first
backs up the current files; a restore is itself reversible. - Keybinds editor. Your binds and the compositor defaults in one
searchable list, grouped by family. Press the keys to capture a chord,
pick actions from your installed umbriel's live vocabulary, and
conflicts are caught before they land; removing your bind restores the
default. - Window rules, layer rules, and security contexts. Visual editors
for every rule family including rules that live in split-out files
like windowrules.toml, which open and edit in place. Add or remove
rules. - Outputs, per monitor. One card per connected display with
resolution and refresh offered from the modes it actually reports,
HDR, VRR, scale and more, plus Add output for displays not yet
configured. - Guided setup. A short walk through the settings people change
most, offered when umbriel is detected; values you already set are
left alone. - What's new in the app. Release notes are bundled into the binary:
shown once per version after an update, and readable any time from
Settings → View changelog. Update checks now also show the new
version's notes. - Dark and light theme, switchable in Settings.
Changed
- The entire interface is rebuilt with Slint: a cleaner shell, a real
theme system with bundled fonts, sidebar navigation with curated
pages, and settings grouped into collapsible cards instead of dense
tables. - The shipped binary is about 27% smaller.
- Chain-wide search finds a setting by name across every page, and
each row shows which file it lives in. - Editing commits on Enter or when you click elsewhere, so a
half-finished edit is never silently lost.
Fixed
- Output workspace lists stored as TOML arrays are read and written
correctly instead of falling back to "dynamic". - Slider reset works and sliders hold their values at the extremes.
- The sidebar highlight follows dedicated pages (keybinds, outputs,
rules) as well as regular settings pages.
Full commit list since v0.1.2-alpha.3
Features
- ui: bundled changelog with what's-new overlay and update notes (5f662c6)
- ui: collapsible cards (87bb100)
- ui: add outputs and rules management pages (9c50d58)
- ui: add keybinds editor (f8c1804)
- ui: add backups page (43dadcc)
- config: snapshot the config chain into dated backup runs on save (5a440d9)
- ui: dark/light theme switcher and settings-app sidebar hierarchy (0b03cbe)
- ui: settings-app navigation with curated catalog (3ea6805)
- ui: added onboarding page for no Umbriel detected and no config file detected (0a057d8)
- ui: settings page, section-page fold of other keys, schema-sync indicators (9955ee4)
- ui: fold beyond-schema keys into their section pages (e3bf906)
- ui: settings page with update check, upstream commit feed, and about (4f88d50)
- ui: reset and discard unsaved changes with validation banner (c488255)
- ui: pick where new settings live from the section page (24bfc2a)
- ui: clickable file badges with read-only file view and changed-key indicators (1aea584)
- ui: settings-first section pages; writes follow ownership (73469cf)
- changelog: curated changelog with draft tooling and release wiring (dcae5b9)
- ui: sliders for ranged numbers (624f52d)
- ui: blur-commit edits; sidebar scroll and page highlight (ece6ced)
- ui: color, list, and curve editors (bac0b59)
- ui: text, number, and choice editors with per-kind formatting (799c762)
- ui: boolean editing with dirty tracking (73c80a7)
- ui: chain-wide search and other-settings sweep (2ee9c20)
- ui: file pages with schema groups and other keys (06b7212)
- ui: sections overview page with pointer rows (0ffc22c)
- ui: scaffold slint shell, theme tokens, build pipeline (8b87bea)
Bug Fixes
- update: port the release check to the ureq 3 API (37d50c7)
- ui: slider reset button and reliable slider value at the extremes (ecac854)
- ui: update settings page message for clarity (8777ad5)
- ui: aligned setting rows with fixed label column (92a37fd)
- ui: scrollable pages; settings-style file layout (e7b722b)
- config: relax choice mining; share vocabularies across sections (036baec)
- ui: typed value reads; mined hints outside editors (b1829fd)
Improvements
- ui: settings page in the card layout (f7c8e69)
- ui: move sync and file info from the header into settings (d993ee7)
- ui: rename file-page primitives to settings-app names (9ee0063)
- release: strip and LTO the shipped binary, 27% smaller (9f26f98)
Other Changes
- git add .github/workflows/release.yml && git commit -m "ci(release): install fontconfig headers for the publish verification build" (42c8b8c)
- git add .github/workflows/release.yml && git commit -m "fix(ci): create the licenses dir before copying font license files" (9e09c14)
- release: install fontconfig headers for the slint build (c35c3ac)
- changelog: curate v0.2.0-beta.1 release notes (7b57d40)
- third-party notices, license section, feature list catch-up (1255731)
- deps: bump ureq from 2.12.1 to 3.4.1 (3f4ffb3)
- deps: bump softprops/action-gh-release from 2 to 3 ([79676a9](79676a981df80fd6125928d48a...
v0.1.2-alpha.3 — Alpha
umbriel-config v0.1.2-alpha.3
Channel: Alpha (pre-release — expect rough edges)
Changes since v0.1.0-alpha.1
Features
- ui: sidebar exit button with unsaved-changes guard (7e0d21f)
- ui: mark settings new to this umbriel, glyph and hint fixes - Settings that appeared since the last recorded schema get a ● badge on every surface that renders them (file pages, section pointers, Available group, search); populated at startup and on Sync schema, cleared with the drift banner's Dismiss. - Replace the remove glyph U+2715, which the default egui font lacks (rendered as tofu), with U+00D7. - Key page-level explainer hints render at full size instead of small. (3420fb5)
- packaging: desktop entry, icon, and install-friendly tarball (9d7488c)
- ui: curve keys pick from umbriel's built-in easing names Curve keys under [animation.*] mine as their own kind and render a dropdown of umbriel's built-in curve names (from its animation.cpp registry) instead of an unvalidated text field. Custom values — registered beziers/springs or inline curve strings — keep editing as text. First half of curve editing; preview and inline bezier editors wait for the UI redesign. (795fa02)
- ui: settings page with update check and startup badge (9ce8a89)
- config: app settings persistence and update-check modules (6a56f86)
- ui: live drag preview with units for numeric editors (cf8f65c)
- ui: color set/unset state with enable, revert, and disable (6638ae9)
- ui: section pages become topic overviews; file pages are the editors (ec6f844)
- ui: section pages own the main file, point elsewhere, offer the rest (9804aa6)
- ui: other keys on file pages, raw spans the chain (5b5ba32)
- config: per-key managed claims across the include chain (ebfd34c)
- ui: choose where a new setting lives, including brand-new files (19ca9a1)
- ui: section pages span the chain with an available group (36ef5d8)
- ui: file pages host their own editors; dedicated pages route (8b8e5a5)
- ui: a config.toml page alongside the includes (c2f48cf)
- ui: rule pages edit the file that owns the rules (87c166d)
- ui: per-file schema pages for included configs (fe2d146)
- ui: security context rules page (4170d18)
- config: security-context rule vocabulary (ee6f4a6)
Bug Fixes
- ui: siderbar grouping text bigger (6a86018)
- update: bound the update check with a 10s timeout (da10fdd)
- ui: bullet markers render in the default font; group the sidebar (438cc2e)
- update: query the releases list so prerelease-only repos work (689bc72)
- ui: offer unset colors only on files that can own them (f7a3ecd)
- ui: file pages scroll their embedded editors (0217b38)
- config: table_names on the document root (c57ac4c)
Other Changes
- deps: update Cargo.toml (3e58c5d)
- update release.yml (8011406)
- update README.md typo (5da8618)
- release: build aarch64 alongside x86_64 (f46a2b6)
- crates.io as an install channel (edfaf34)
- release: publish the crate to crates.io on tag (11c9d34)
- update README.md (c23bbf0)
- update README.md (1bd860a)
- Update README for clarity and alpha caveats (2411047)
- add Rust installation instructions for building from source (5e9baf6)
- add explicit dependencies for building from source (08d331f)
- Add ref parameter to checkout action in release.yml (2d42892)
- Add clobber option to release workflow (aa6c972)
- Remove phase roadmap from CONTRIBUTING.md (b662e4f)
- readable release notes with alpha/beta/stable channels (0192d00)
- add uninstall instructions (584b9d2)
- update .gitignore and justfile (7d8af2d)
- Update CONTRIBUTING.md (22d5dc7)
- Add disclaimer regarding Zcode GLM 5.3 models (be60512)
- Update CONTRIBUTING.md (1f0633c)
v0.1.0-alpha.1
Release v0.1.0-alpha.1
Changes since project start
- chore(release): v0.1.0-alpha.1 (bad22bf) by GhostEagle68
- chore: create dependabot.yml (e027511) by GhostEagle68
- rename ci.yml to rust.yml (daea03d) by GhostEagle68
- ci: add workflow running the local verify gate (3e2314c) by GhostEagle68
- build: add release workflow with prebuilt binaries (58b26a7) by GhostEagle68
- docs: add issue and PR templates (4c69746) by GhostEagle68
- eat(ui): unsaved-changes table with per-option reset (2ed80df) by GhostEagle68
- feat(ui): wire keybinds page through the include chain (82e325e) by GhostEagle68
- feat(config): load include chains and merge binds across files (df340ce) by GhostEagle68
- feat(ui): rewrite keybinds page as merged list with draft editor (c86dac1) by GhostEagle68
- feat(ui): roomier keybind rows, drop duplicate action picker (f22ec58) by GhostEagle68
- update mod.rs (43c6e0a) by GhostEagle68
- feat(ui): keybinds editor with search and chord capture (e0ef1b2) by GhostEagle68
- feat(config): parse umbriel's live action list and default binds (2f276c5) by GhostEagle68
- feat(ui): searchable action dropdowns and chord capture (42d7876) by GhostEagle68
- feat(ui): show umbriel's built-in keybind defaults (f8a5391) by GhostEagle68
- feat(ui): keybinds editor page (34809b9) by GhostEagle68
- feat(ui): keybinds editor page (7d339d9) by GhostEagle68
- feat(config): parse umbriel's live action list (0a4b64a) by GhostEagle68
- feat(config): keybind model and action vocabulary (384bb99) by GhostEagle68
- feat(ui): Add welcome screen if no config is found (4c96282) by GhostEagle68
- feat(ui): fresh start when the config file does not exist yet (6681b92) by GhostEagle68
- feat(config): create config parent directories and flag missing files (16d7d10) by GhostEagle68
- feat(ui): add window and layer rule editors (fefc371) by GhostEagle68
- feat(config): unset single rule keys (3f25dd4) by GhostEagle68
- feat(config): add rule field vocabulary (b97d0f7) by GhostEagle68
- feat(config): access array-of-tables rules by index (9b41e92) by GhostEagle68
- feat(ui): guard removing the only output (b065021) by GhostEagle68
- feat(ui): raw page and list widgets for array settings (d7b4f58) by GhostEagle68
- feat(config): detect config keys uncovered by any surface (71156ab) by GhostEagle68
- feat(config): remove tables from the document (7edc41c) by GhostEagle68
- feat(ui): show live outputs on the outputs page (12bc116) by GhostEagle68
- feat(cli): add outputs command (4c0f39d) by GhostEagle68
- feat(live): enumerate outputs via wlr-output-management (d1fac52) by GhostEagle68
- feat(ui): render choice dropdowns and color pickers (1d96578) by GhostEagle68
- feat(config): mine enum choices and colors from comments (e4fa8ec) by GhostEagle68
- feat(ui): add settings search (3a9ca5f) by GhostEagle68
- feat(config): filter schema entries by search terms (e4b353c) by GhostEagle68
- feat(ui): add outputs page (7f6e4f5) by GhostEagle68
- feat(config): add output field model (031b144) by GhostEagle68
- feat(config): read and write TOML arrays (26ed29d) by GhostEagle68
- feat(ui): add schema sync and update notice (57071ca) by GhostEagle68
- feat(config): snapshot schema keys and diff key sets (b585315) by GhostEagle68
- feat(ui): render pages from assembled schema (6a672f9) by GhostEagle68
- feat(config): expose packaged default lookup (ea4a252) by GhostEagle68
- feat(config): mine commented keys into assembled schema (b9d680d) by GhostEagle68
- feat(config): assemble schema from packaged default (14476dc) by GhostEagle68
- feat(ui): add sidebar and general page (bdfc220) by GhostEagle68
- feat(ui): add egui shell with save and validation banner (8196502) by GhostEagle68
- refactor(config): restore doc comments and trim derives (9f615e0) by GhostEagle68
- fix(config): treat failed validate runs as errors (549c8c5) by GhostEagle68
- feat(cli): add debug cli over config backend (320e0f0) by GhostEagle68
- feat(config): add umbriel validate wrapper (ac482a2) by GhostEagle68
- feat(config): add toml document editing layer (77e91a3) by GhostEagle68
- build: add justfile (0c6e56b) by GhostEagle68
- feat(config): add config path discovery (0db1568) by GhostEagle68
- docs: correct config lookup chain (f7ab0e0) by GhostEagle68
- chore: add MIT license ([7fb3e2a](https://github.com/GhostEagle68/u...