Releases: HorneroOS/hornero
Release list
horneroctl-v0.2.0-preview14.2
What's Changed
- fix(shell): select the packaged Hornero config by @ulises-jeremias in #113
Full Changelog: horneroctl-v0.2.0-preview14.1...horneroctl-v0.2.0-preview14.2
horneroctl-v0.2.0-preview14.1
What's Changed
- fix(release): freeze component pins after publication by @ulises-jeremias in #106
- fix(cli): route keyboard settings through Hornero Shell by @ulises-jeremias in #105
- fix(cli): keep appearance doctor read-only by @ulises-jeremias in #107
- fix(appearance): preserve wallpapers for color-only themes by @ulises-jeremias in #108
- fix(cli): verify Hornero shell readiness by @ulises-jeremias in #109
- fix(cli): describe default app configuration accurately by @ulises-jeremias in #110
- refactor: make native M3 the only appearance pipeline by @ulises-jeremias in #111
- feat(appearance): expose theme collection metadata by @ulises-jeremias in #112
Full Changelog: v0.2.0-preview14...horneroctl-v0.2.0-preview14.1
Hornero OS v0.2.0-preview14
Hornero OS v0.2.0-preview14
Preview 14 freezes the package-truth composition with Shell 3658e1b2 and Config 96b68703. It includes package-only theme application, explicit offline-by-default Weather, and the audited CLI-to-Shell theme apply binding. The broader Settings and Appearance redesign is intentionally reserved for a later candidate.
Validation
The exact pinned image passed the Hornero QA graphical lane (14 scenarios), package-only Hornero Dark/Light/Pampa transitions, and fresh-boot Weather privacy acceptance. Theme acceptance checked selected ID, mode, Shell liveness, GTK theme and color scheme, icon theme, and packaged wallpaper resolution. The image contained no user or dotfiles theme/wallpaper catalogue.
Published packages
Build order: horneroctl, Config, Shell. The horneroctl-v0.2.0-preview14 pre-release contains x86_64 and ARM64 binaries; the x86_64 binary reports clean Preview 14 pins. Config v0.2.1 and Shell v1.1.1 were published to AUR. Installer and ISO remain future slots.
Known limitation
The QA image seeds a user preset catalogue; full package-built preset-image certification remains future work.
horneroctl-v0.2.0-preview14
What's Changed
- fix(release): untrack cli/make; release binaries carry their pins by @ulises-jeremias in #95
- chore(release): close out Preview 13 checklist by @ulises-jeremias in #94
- chore(release): cut Development Preview 14 candidate (packaging truth) by @ulises-jeremias in #98
- fix(release): Preview 4 record points at its own composition by @ulises-jeremias in #99
- fix(cli): read the packaged preset, theme and M3 catalogues by @ulises-jeremias in #97
- chore(release): refresh Preview 14 packaging-truth pins by @ulises-jeremias in #101
- fix(appearance): resolve packaged catalogues through Hornero-owned paths by @ulises-jeremias in #100
- feat(appearance): retain theme identity during scheme sync by @ulises-jeremias in #102
- chore(release): pin Preview 14 to verified theme apply by @ulises-jeremias in #103
Full Changelog: horneroctl-v0.2.0-preview13...horneroctl-v0.2.0-preview14
v0.2.0-preview13
Development Preview 13: the layout fidelity milestone. Everything in Preview 12, plus:
- Clear bars (
backdrop: "clear"): components sit on the wallpaper the way the transparent Polybar bars did, kept legible on any wallpaper by an edge scrim and glyph halo. New layouts Cockpit Clear and Horizon. - Per-layout entry options: clock date, slider values (
72%),labelsworkspaces (number + app glyphs + underline). - Layout Picker draws each layout's real topology (dual bars, islands, dock, rails, clear) and works from the keyboard.
- Hover surfaces: popouts and panels align with their content on every layout; tray and status menus stay open while you move into them (they used to vanish before a click); no empty cards; no stray corner wings on frameless layouts.
- Islands, Cozy Minimal and Floating Island reserve space like their Polybar/Waybar ancestors.
- Product truth: the config pin now ships the shell pin's factory default byte-exact, gated at composition time. Every earlier preview shipped a stale copy.
- The shell owns
org.freedesktop.Notifications(dunst/mako/swaync no longer steal it).
Composition (manifest hornero-0.2.0-preview13):
- shell 25d22061af26c9aef394445d15a760e52bb38d58 (AUR hornero-shell 1.1.0)
- config dae2255c7d0ba3649dff5fe131e6ca14aaa9353b (AUR hornero-config 0.2.0)
- horneroctl: built from cli/ at 8557401 (tag horneroctl-v0.2.0-preview13, AUR horneroctl-bin)
- greeter: hornero-greeter 1.0.1 (Qt6 greeter selection fix)
Build order: horneroctl, config, shell. Skipped as future slots: installer, iso (no installable artifacts ship with this preview).
KVM smoke (tests/vm/smoke.sh, 2026-10-01): ALL GREEN.
VM-SMOKE-PASS: host has KVM, qemu, and base image
VM-SMOKE-PASS: host composition built (horneroctl v0.2.0-preview12-7-g2e5c6ca-dirty (2e5c6ca)
VM-SMOKE-PASS: guest overlay ready
VM-SMOKE-PASS: seed ISO built (fresh instance-id)
VM-SMOKE-PASS: guest booting
VM-SMOKE-PASS: guest SSH reachable
VM-SMOKE-PASS: payload transferred (horneroctl + config pin)
VM-SMOKE-PASS: guest DNS resolves
VM-SMOKE-PASS: guest apply deps installed (wal + materialyoucolor)
VM-SMOKE-PASS: wallpaper PNGs rendered on host and shipped to guest
VM-SMOKE-PASS: guest materialized composition
VM-SMOKE-PASS: guest config validate: valid
VM-SMOKE-PASS: guest config show parses
VM-SMOKE-PASS: guest theme manifest: 15 entries (matches config pin)
VM-SMOKE-PASS: guest shell syntax of shipped scripts
VM-SMOKE-PASS: guest is offline (firewall: no DNS, no HTTPS egress; host SSH alive)
VM-SMOKE-PASS: guest official theme hornero-dark (set+get+GTK+wallpaper+kitty+M3)
VM-SMOKE-PASS: guest official theme hornero-light (set+get+GTK+wallpaper+kitty+M3)
VM-SMOKE-PASS: guest official theme pampa (set+get+GTK+wallpaper+kitty+M3)
VM-SMOKE-PASS: guest trio matrix: hornero-dark hornero-light pampa applied via horneroctl (offline)
VM-SMOKE-PASS: guest shut down
VM-SMOKE-PASS: ALL GREEN
horneroctl-v0.2.0-preview13
What's Changed
- chore(release): record Preview 12 KVM smoke pass and tag by @ulises-jeremias in #87
- chore(release): close out Preview 12 checklist by @ulises-jeremias in #88
- fix(cli): build on current V master (os.getenv, json2 as_array) by @ulises-jeremias in #90
- fix(compose): fail on factory shell default drift between pins by @ulises-jeremias in #89
- feat(cli): preset list --full reports bar topology and lineage by @ulises-jeremias in #91
- fix(test): isolate HOME in snapshot dispatch tests by @ulises-jeremias in #92
- chore(release): cut Development Preview 13 candidate (layout fidelity) by @ulises-jeremias in #93
Full Changelog: v0.2.0-preview12...horneroctl-v0.2.0-preview13
Hornero OS v0.2.0-preview12
Development Preview 12. Picks up everything in Preview 11 plus the capture-backend loud-failure fix (hornero#83). Pre-Phase-3 historical boundary.
Composition (manifest hornero-0.2.0-preview12):
- shell 07a339754f35cf2cc0fb9003c49e8e519ae3bf75
- config c4a25f0ef2196a9257582190447de9ebc6fd7528
- horneroctl: local (built from cli/ at 316fa24)
Build order: horneroctl, config, shell. Skipped as future slots: installer, iso (no installable artifacts ship with this preview).
KVM smoke (tests/vm/smoke.sh, /dev/kvm + QEMU 11.1.1, 2026-09-30): ALL GREEN.
VM-SMOKE-PASS: host has KVM, qemu, and base image
VM-SMOKE-PASS: host composition built (horneroctl v0.2.0-preview12 (316fa24)
VM-SMOKE-PASS: guest overlay ready
VM-SMOKE-PASS: seed ISO built (fresh instance-id)
VM-SMOKE-PASS: guest booting
VM-SMOKE-PASS: guest SSH reachable
VM-SMOKE-PASS: payload transferred (horneroctl + config pin)
VM-SMOKE-PASS: guest DNS resolves
VM-SMOKE-PASS: guest apply deps installed (wal + materialyoucolor)
VM-SMOKE-PASS: wallpaper PNGs rendered on host and shipped to guest
VM-SMOKE-PASS: guest materialized composition
VM-SMOKE-PASS: guest config validate: valid
VM-SMOKE-PASS: guest config show parses
VM-SMOKE-PASS: guest theme manifest: 15 entries (matches config pin)
VM-SMOKE-PASS: guest shell syntax of shipped scripts
VM-SMOKE-PASS: guest is offline (firewall: no DNS, no HTTPS egress; host SSH alive)
VM-SMOKE-PASS: guest official theme hornero-dark (set+get+GTK+wallpaper+kitty+M3)
VM-SMOKE-PASS: guest official theme hornero-light (set+get+GTK+wallpaper+kitty+M3)
VM-SMOKE-PASS: guest official theme pampa (set+get+GTK+wallpaper+kitty+M3)
VM-SMOKE-PASS: guest trio matrix: hornero-dark hornero-light pampa applied via horneroctl (offline)
VM-SMOKE-PASS: guest shut down
VM-SMOKE-PASS: ALL GREEN (work dir: /home/ulisesjcf/.local/share/hornero/vm/work)
horneroctl-v0.2.0-preview2
What's Changed
- chore(release): refresh live shell/config pins to current mains by @ulises-jeremias in #33
- fix: immutable manifests with explicit Preview 2 candidate by @ulises-jeremias in #34
- chore: refresh Preview 2 candidate to current mains by @ulises-jeremias in #38
- ci: pin GitHub Actions to immutable SHAs by @ulises-jeremias in #35
- ci: harden publish stamp logic by @ulises-jeremias in #36
- chore: normalize callers to v1.6, wire label sync by @ulises-jeremias in #37
- chore: freeze Preview 2 candidate on current mains by @ulises-jeremias in #39
- chore: complete Preview 2 release checklist with evidence by @ulises-jeremias in #40
- feat(welcome): establish portable Welcome state contract by @ulises-jeremias in #42
- feat(ctl): add power and lock commands by @ulises-jeremias in #44
- chore(manifests): bump candidate pins to live shell/config mains by @ulises-jeremias in #45
- feat(ctl): wallpaper set|current|reload over dots backends by @ulises-jeremias in #43
- feat(ctl): add hypr animations/layout/monitors/workspace/plugins commands by @ulises-jeremias in #46
- feat(ctl): add hardware command (brightness, battery, mic, keyboard, network) by @ulises-jeremias in #47
- feat(ctl): add capture screenshot/record/clipboard commands by @ulises-jeremias in #48
- feat(ctl): add appearance colors/accent/night-mode over dots backends by @ulises-jeremias in #49
- feat(ctl): add apps command for everyday launchers and monitors by @ulises-jeremias in #50
- feat(ctl): lifecycle + privileged backends (shell, package, backup, default-apps, hypr plugins) by @ulises-jeremias in #51
- feat(ctl): native appearance apply port (smart-colors, gtk, scheme, night-mode) by @ulises-jeremias in #52
- feat(ctl): native backends batch (apps, wallpaper, snapshot, lock, audit) by @ulises-jeremias in #57
- feat(ctl): fix nested --help routing, pin config/apps/shell delegation contracts by @ulises-jeremias in #56
- feat(ctl): native lockscreen effects and gtk theme select by @ulises-jeremias in #53
- feat(ctl): native brightness temperature plus display delegation conformance by @ulises-jeremias in #54
- feat(ctl): native audit --fix, --report, --json by @ulises-jeremias in #58
- ci: always build latest V master from source by @ulises-jeremias in #55
- feat(ctl): native shell preset apply and list --full by @ulises-jeremias in #59
- fix(release): makepkg-safe pkgver for hyphenated pre-release tags by @ulises-jeremias in #60
Full Changelog: horneroctl-v0.1.0...horneroctl-v0.2.0-preview2
horneroctl-v0.1.0
What's Changed
- feat: horneroctl system CLI in V (v0.1) by @ulises-jeremias in #3
- docs: lock horneroctl system CLI architecture by @ulises-jeremias in #4
- docs: theme/wallpaper split readiness plan by @ulises-jeremias in #5
- feat: composition manifests, edition profiles, release process by @ulises-jeremias in #6
- feat: horneroctl phase-2 commands (themes, scheme, presets, config show) by @ulises-jeremias in #7
- feat: doctor output redaction for secret-like values by @ulises-jeremias in #9
- docs: freeze manifest pins to live mains, sync stale docs by @ulises-jeremias in #10
- fix: always run required CI contexts on pull requests by @ulises-jeremias in #11
- ci: close trigger blind spots, pin-freshness and secrets gates by @ulises-jeremias in #8
- feat: horneroctl batch-1 (config snapshot, package, backup) by @ulises-jeremias in #12
- fix: refresh composition pins to live shell/config mains by @ulises-jeremias in #13
- docs: add canonical runtime path contract by @ulises-jeremias in #14
- feat(cli): path-contract conformance for hornero resolvers by @ulises-jeremias in #15
- fix: refresh composition pins to path-conformance mains by @ulises-jeremias in #16
- feat(cli): track-2 batch-2 delegation (config default-apps, materialize, gui) by @ulises-jeremias in #17
- fix(cli): validate wallpapers manifest as object with themes array by @ulises-jeremias in #18
- feat: executable composition gate (compose.sh + CI job) by @ulises-jeremias in #19
- feat: KVM guest smoke test for the pinned composition by @ulises-jeremias in #20
- docs: preview-0 catch-up (contract status, release checklist + notes) by @ulises-jeremias in #21
- docs: close out v0.1.0-draft checklist by @ulises-jeremias in #22
- Preview 1 horneroctl: config migrate, version report, doctor legacy-paths by @ulises-jeremias in #23
- feat(cli): version pins in compose, forward --yes to migrator by @ulises-jeremias in #24
- Preview 1: graphical smoke for the pinned composition by @ulises-jeremias in #25
- feat(cli): official appearance theme get/set (hornero-dark/hornero-light) by @ulises-jeremias in #26
- feat(p2): official theme trio, fresh pins, offline VM matrix by @ulises-jeremias in #27
- feat(p2): per-theme graphical evidence matrix + config pin b22b13c by @ulises-jeremias in #28
- test(p2): CopyQ Qt vehicle, per-theme palette asserts, pin config b5af574 by @ulises-jeremias in #29
- test(p2): start CopyQ server before show, poll for its window by @ulises-jeremias in #30
- feat: wire shared PR-governance engine (thin caller + repo policy) by @ulises-jeremias in #31
- feat(release): tag-driven horneroctl release + AUR publish by @ulises-jeremias in #32
New Contributors
- @ulises-jeremias made their first contribution in #3
Full Changelog: https://github.com/HorneroOS/hornero/commits/horneroctl-v0.1.0