Skip to content

Releases: n1c0p/UnitDeck

UnitDeck 0.4.1

Choose a tag to compare

@github-actions github-actions released this 28 Oct 18:45
e7d311d

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 runs unitdeck-tui --check, which imports the application.

UnitDeck 0.4.0

Choose a tag to compare

@github-actions github-actions released this 28 Oct 17:53
dc1db22

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 verify stays 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-common package.

UnitDeck 0.3.1

Choose a tag to compare

@github-actions github-actions released this 27 Oct 21:04
da5aaeb

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 by unitdeck 0.2.0. unitdeck-common now declares Replaces (deb) and Conflicts (rpm) on the old package. The update dialog of 0.2.0 installs only unitdeck-common: afterwards install unitdeck 0.3.1 by hand once (see the README), then the in-app update handles both packages.

UnitDeck 0.3.0

Choose a tag to compare

@github-actions github-actions released this 27 Oct 20:38
33c9009

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 Runtime abstraction, 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) and unitdeck-tui (terminal, no Qt), installable independently; the in-app updater installs unitdeck-common together with unitdeck. Python extras gui and tui replace 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 the tui extra (#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

Choose a tag to compare

@github-actions github-actions released this 25 Oct 12:41
6646b82

Added

  • RPM package for Fedora 40+ and openSUSE Tumbleweed, built from the same bundle as the .deb and published with every release; the in-app updater picks .deb or .rpm from /etc/os-release and installs with apt-get, dnf or zypper.

Changed

  • README: how to build and install from source, as a local package or manually in a virtual environment.

UnitDeck 0.1.3

Choose a tag to compare

@github-actions github-actions released this 25 Oct 09:33
20a802f

Changed

  • Test release for the in-app update mechanism (download, checksum, installation); no functional change.

UnitDeck 0.1.2

Choose a tag to compare

@github-actions github-actions released this 25 Oct 09:24
75b9e62

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

Choose a tag to compare

@github-actions github-actions released this 25 Oct 08:09
e1390d0

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 ci check always reports.

UnitDeck 0.1.0

Choose a tag to compare

@github-actions github-actions released this 24 Oct 19:05
8428406

Added

  • Debian package: PyInstaller one-directory bundle in /opt/unitdeck with /usr/bin/unitdeck, helper in /usr/libexec/unitdeck, polkit policy, desktop file, icon and man page; built by packaging/build-deb.sh, checked with lintian and a clean-install test. unitdeck --version and unitdeck --check.
  • CI: preview package on every push to develop (artifact, 14 days); release.yml tags the merge into main, builds the package, publishes the GitHub Release with the SHA256 checksum and the changelog section as notes, and opens the sync PR main → develop.
  • New service wizard: name and template, guided fields (with User=/Group= and root warning for system services, WantedBy prefilled per scope), editable preview checked with systemd-analyze verify, enable/start options; the new unit is selected in the table. Templates are files in src/unitdeck/templates/: empty, one-shot, long-running, SMB mount with gio (user only).
  • Linger switch in the user tab, through logind's SetUserLinger with 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.conf for package units (full copy as an option), direct edit for user-created units; systemd-analyze verify before saving, .bak backup, automatic daemon-reload and restart prompt. "Restore original" (RevertUnitFiles) and "Delete" for user-created units.
  • Privileged helper unitdeck-helper (standard library only) with its polkit policy eu.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 .service units (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 .deb with SHA256 verification, installation through pkexec apt-get.
  • Project skeleton: pyproject.toml with setuptools-scm versioning, unitdeck package runnable with python -m unitdeck, refusing to start as root.
  • REUSE compliance: LICENSES/, REUSE.toml and SPDX headers in every source file.
  • CONTRIBUTING.md and CONTRIBUTING.it.md with branch model, release process and GitHub rulesets.
  • GitHub Actions workflows: ci (ruff, reuse lint, pytest) and the branch-origin and release-check gates for pull requests into main.
  • Project README, in English and Italian.
  • GPL-3.0-or-later license.
  • This changelog, in English and Italian.