• v0.1.5 d931d8e9e9

    unraid-podman v0.1.5
    Build Packages / Build .txz packages (push) Successful in 8m36s
    Lint / ShellCheck (push) Successful in 10s
    Lint / Validate .plg XML (push) Successful in 12s
    Lint / EditorConfig (push) Successful in 6s
    Release / Build release packages (push) Successful in 7m50s
    Release / Publish Gitea Release (push) Failing after 6s
    Stable

    magges released this 2026-07-13 23:53:59 +02:00 | 2 commits to main since this release

    [0.1.5] - 2026-07-13

    Install: paste into Unraid Plugins → Install Plugin:

    https://git.mp-mueller.de/magges/unraid-podman/releases/download/latest/podman.plg
    

    Added

    • Containers panel: folders to group containers (name + optional icon
      URL), purely cosmetic organizational metadata stored in the plugin's
      own folders.json — podman itself has no such concept, same as
      Unraid's own Docker page's folders. "+ New Folder", a "Move to Folder"
      submenu on each container's row menu, and per-folder rename/delete
      (deleting a folder only ungroups its containers, never touches them).
      A folder with nothing assigned yet still shows up (so there's
      somewhere to move a container into); one that's merely hidden by the
      current search/filter does not. A folder's header always shows an
      icon+name+status chip per member — collapsed or expanded, matching how
      Unraid's own Docker page folders behave — rather than hiding everything
      behind a bare count; clicking a chip opens the same row menu the "⋮"
      button does (Details is now a menu item there too, alongside
      Pause/Kill/Rename/Edit/Remove) rather than jumping straight to the
      detail modal. "Move to Folder" only shows for a container that isn't
      grouped yet — once it's in one, that item becomes a direct "Remove
      from Folder" instead, since "move to a folder" reads as "add" and is
      ambiguous/redundant once it's already in one. Containers can also
      carry an icon URL (settable in the create/edit form, auto-filled when
      creating from a template) shown in the table instead of the 2-letter
      initials avatar.
    • Containers can now carry a WebUI URL too (create/edit form, preserved
      through Update/Update All the same way the icon URL is), shown as a
      small open-in-new-tab button next to the name in the Containers table
      when set. Both this and the icon are stored as the plugin's own
      container labels (podman-webui.weburl/.icon), read straight off
      the already-fetched container list — no extra per-container calls.
    • Container detail modal: 5 new tabs (Resources, Logs, Console, Events,
      Healthcheck), rounding it out from 6 to 11 of prompt.md's 12 requested
      tabs (Volumes was left merged into the existing Mounts tab — same
      underlying source/destination data, a separate tab would just repeat
      it). Resources shows live CPU/memory alongside configured limits
      (memory/swap/CPU/PIDs/block-I/O — a 0 in podman's own HostConfig
      means "unlimited", not zero). Logs reuses the existing per-container
      logs endpoint. Console opens a real ttyd/podman-exec session scoped to
      the modal, cleaned up (killing the ttyd process server-side) on every
      way of leaving — switching tabs, Close, backdrop click, or Escape —
      not just on an explicit Disconnect, so peeking at a console doesn't
      leak an orphaned ttyd process. Events and Healthcheck are both one-shot
      historical queries (libpod's /events?stream=false for the last 7
      days, and inspect's own State.Health.Log) rather than a live stream,
      which stays out of scope (see dashboard.js's own note on why).
    • A real toast notification system (success/warning/error/info, auto-
      dismissing, stacked bottom-right, dismissible early) replacing every
      alert() used for one-way feedback across Containers, Images, Volumes,
      Networks, Pods, Templates, Compose, and Settings — confirmations stay
      native confirm() (a decision, not a notice), and long command output
      (podman compose up/down, previously also an alert()) now goes to
      the existing scrolling log-modal instead, which fits it better than a
      toast ever could.
    • Dashboard reworked: a clean 6-tile row of plain counts (Running,
      Stopped, Pods, Images, Volumes, Networks — colored green/red on
      Running/Stopped so fleet health reads at a glance), a single "Resource
      Usage" card with aligned CPU/Memory/Swap/Storage meter rows (bars shift
      to warn/bad colors above 75%/90% instead of staying accent-colored at
      any value), and an "Autostart Queue" table (reusing
      podman-autostart.sh's own per-container failure counters, so it shows
      exactly what that script would decide, not a second tracked history).
      Bar-and-percentage metrics were kept out of the plain-count tile grid
      entirely after an earlier attempt at combining them (a tile spanning
      multiple grid columns) left dead, empty cells in the layout.
    • Dashboard and Containers now auto-refresh every ~2s (paused while the
      tab is hidden or a modal is open) instead of requiring a manual
      Refresh click to see current state.
    • Settings: an "Add container" dropdown + button above the Autostart
      order table — previously that table could only reorder/remove
      containers already in the chain, with no way to add one in the first
      place.
    • Containers: "Update All" now also removes the old, now-unused image
      version each updated container leaves behind (only when at least one
      container actually updated), instead of leaving stale images to pile up
      on disk after every update run.

    Fixed

    • Dashboard memory usage was calculated from libpod's raw memFree (which
      excludes reclaimable buffers/cache), showing usage far higher than
      reality — e.g. 67% "used" where free -h reported 19%. Now reads
      /proc/meminfo's MemAvailable directly, matching what free -h and
      most monitoring tools show.
    • Dashboard CPU usage never changed — libpod's own /info computes
      cpuUtilization once and never resamples it (confirmed live: three
      calls seconds apart returned byte-identical numbers). Now computed from
      /proc/stat deltas between successive requests, the same technique
      top/htop use, which auto-refresh's ~2s cadence fits naturally.
    • Context menus (a container's "⋮", a folder's "⋮") always dropped down
      from the anchor at a fixed position — opened from a row near the
      bottom of the viewport, the menu ran off-screen with its last items
      unreachable. Now measures its own actual rendered size (which varies
      with item count) after appending and flips above the anchor instead
      when there isn't enough room below, clamped horizontally too.
    • Expanding/collapsing a folder shifted every column (including the
      header text) in the Containers table — its default table-layout: auto sizes each column from the widest content among only the
      currently-visible rows, so adding/removing a folder's rows changed
      what counted as "widest" on every toggle. Columns now use explicit
      fixed widths that don't depend on row content at all.
    • The Name column's content (icon + name + WebUI button) was
      misaligned with its own header, drifting further off with every row —
      putting display:flex directly on the <td> (to keep the WebUI
      button on the same line as the name) pulls that cell out of
      table-cell layout entirely, so with table-layout:fixed it stopped
      respecting the column width its <th> assigns. The flex layout now
      lives on a <div> inside the <td> instead, so the <td> itself
      stays a normal, fixed-width table cell.
    Downloads