Repository navigation
Releases: n1c0p/UnitDeck
Releases · n1c0p/UnitDeck
Release list
UnitDeck 0.4.1
Fixed
- The packaged terminal interface did not start (
No module named 'textual.widgets._tab_pane'): Textual resolves its widgets lazily and PyInstaller left them out of the bundle. They are now included, and the install test runsunitdeck-tui --check, which imports the application.
UnitDeck 0.4.0
Added
- Service editor in the desktop application, shared by Edit and New service (#39). Two tabs over the same file: Builder, with
[Unit],[Service]and[Install]as groups where directives are picked from a catalogue of 95 entries (description, example and man page for each), set with a field matching their type, reordered by drag and removed in place; and Text, the raw file. Changes in one tab reach the other. Suspicious values are flagged inline (bad time span, relative path, value outside the allowed set, missing user or group, unknown or misspelled directive with a suggestion) without blocking the save:systemd-analyze verifystays the final check. Comments, blank lines, unknown directives and line continuations survive the round trip. The wizard opens the editor prefilled from the template; the drop-in and full-copy modes of Edit are unchanged. The terminal interface keeps its text editor. - Project page at https://n1c0p.github.io/UnitDeck/, published from
site/on every change on main.
Changed
- README: why the helper and the polkit policy ship in a separate
unitdeck-commonpackage.
UnitDeck 0.3.1
Fixed
- Upgrading from 0.2.0 failed: the helper and the polkit policy moved to
unitdeck-common, and dpkg refused to overwrite files still owned byunitdeck0.2.0.unitdeck-commonnow declaresReplaces(deb) andConflicts(rpm) on the old package. The update dialog of 0.2.0 installs onlyunitdeck-common: afterwards installunitdeck0.3.1 by hand once (see the README), then the in-app update handles both packages.
UnitDeck 0.3.0
Upgrading from 0.2.0: the update dialog of 0.2.0 downloads only unitdeck, which now needs unitdeck-common, so its installation fails. Install the two packages by hand once, as shown in the README; from 0.3.0 on, the in-app update handles both.
Changed
- Backend decoupled from Qt: plain-Python core with a
Runtimeabstraction, Qt runtime for the desktop application and asyncio/dbus-fast runtime for the upcoming terminal interface (#38). No visible change.
Added
- Three packages per release:
unitdeck-common(helper and polkit policy),unitdeck(desktop) andunitdeck-tui(terminal, no Qt), installable independently; the in-app updater installsunitdeck-commontogether withunitdeck. Python extrasguiandtuireplace the mandatory PyQt6 dependency (#38, phase T4). - Terminal interface
unitdeck-tui(Textual): system and user tabs, search, state filter, start/stop/restart, enable/disable, mask/unmask, journal with follow, daemon-reload, editor with drop-ins, new service from the templates, restore original, delete, reset failed state, linger; pkttyagent for polkit without a graphical session. Install with thetuiextra (#38, phases T2 and T3). - "Restart UnitDeck" button in the update dialog once the new version is installed: the application starts again on the new version by itself.
UnitDeck 0.2.0
Added
- RPM package for Fedora 40+ and openSUSE Tumbleweed, built from the same bundle as the
.deband published with every release; the in-app updater picks.debor.rpmfrom/etc/os-releaseand installs withapt-get,dnforzypper.
Changed
- README: how to build and install from source, as a local package or manually in a virtual environment.
UnitDeck 0.1.3
Changed
- Test release for the in-app update mechanism (download, checksum, installation); no functional change.
UnitDeck 0.1.2
Fixed
- Update download crashed the application as soon as it started (incompatible progress signal); unhandled errors now show a dialog instead of terminating UnitDeck.
UnitDeck 0.1.1
Fixed
- SMB mount template: start is idempotent when the share is already mounted, stop unmounts the location gvfs really registered and no longer leaves the unit failed.
Added
- Code of conduct (Contributor Covenant 2.1), security policy, issue and pull request templates.
Changed
- CI runs on every pull request, documentation-only and empty diffs included, so the required
cicheck always reports.
UnitDeck 0.1.0
Added
- Debian package: PyInstaller one-directory bundle in
/opt/unitdeckwith/usr/bin/unitdeck, helper in/usr/libexec/unitdeck, polkit policy, desktop file, icon and man page; built bypackaging/build-deb.sh, checked withlintianand a clean-install test.unitdeck --versionandunitdeck --check. - CI: preview package on every push to
develop(artifact, 14 days);release.ymltags the merge intomain, builds the package, publishes the GitHub Release with the SHA256 checksum and the changelog section as notes, and opens the sync PRmain→develop. - New service wizard: name and template, guided fields (with
User=/Group=and root warning for system services,WantedByprefilled per scope), editable preview checked withsystemd-analyze verify, enable/start options; the new unit is selected in the table. Templates are files insrc/unitdeck/templates/: empty, one-shot, long-running, SMB mount with gio (user only). - Linger switch in the user tab, through logind's
SetUserLingerwith interactive authorization. - Delete now stops and disables the unit before removing its files; editor colours adapt to dark themes; window size and position are remembered.
- Service editor: syntax-highlighted editor with line numbers next to the effective configuration; drop-in
override.conffor package units (full copy as an option), direct edit for user-created units;systemd-analyze verifybefore saving,.bakbackup, automaticdaemon-reloadand restart prompt. "Restore original" (RevertUnitFiles) and "Delete" for user-created units. - Privileged helper
unitdeck-helper(standard library only) with its polkit policyeu.nicop.unitdeck.manage-unit-files(auth_admin_keep): writes drop-ins and units only under/etc/systemd/system, with strict name and path validation. - System services tab: same features as the user tab on the system bus; privileged actions use D-Bus interactive authorization, so polkit shows the desktop's authentication dialog only when needed, and a cancelled or refused authentication is reported in the status bar without any crash.
- "Reset failed state" action and, when a job fails, systemd's own result (e.g.
start-limit-hit) in the error message. - User services tab: searchable and filterable table of the session's
.serviceunits (including installed but not loaded ones), start/stop/restart/reload, enable/disable at boot, mask/unmask, journal viewer with live follow and priority filter, live updates from systemd's D-Bus signals, context menu and keyboard shortcuts. - Interface in English and Italian: follows the desktop language, selectable from the Settings menu.
- Menu bar with Settings and Info menus, About dialogs, and an update mechanism: check against GitHub Releases (at startup, optional, and on demand), download of the
.debwith SHA256 verification, installation throughpkexec apt-get. - Project skeleton:
pyproject.tomlwithsetuptools-scmversioning,unitdeckpackage runnable withpython -m unitdeck, refusing to start as root. - REUSE compliance:
LICENSES/,REUSE.tomland SPDX headers in every source file. CONTRIBUTING.mdandCONTRIBUTING.it.mdwith branch model, release process and GitHub rulesets.- GitHub Actions workflows:
ci(ruff,reuse lint, pytest) and thebranch-originandrelease-checkgates for pull requests intomain. - Project README, in English and Italian.
- GPL-3.0-or-later license.
- This changelog, in English and Italian.