stratum-memory (0.29) trixie; urgency=medium

  * The module is rewritten in Go (the balloon daemon already was): one
    binary, no shell, the six types of computer compiled in (their
    .profile files stay installed as documentation, and an own type in
    /etc/stratum/memory.d still overrides one), the same settings, files,
    swap priorities, services and timer.
  * New action "recommend [--json] [type]": the values the type would set
    on this computer (type, memory_percent, memory_max_gb, compression,
    swappiness, page_cluster, min_free_kbytes, disk_swap, dedup,
    ballooning) - a frontend shows them without a table of its own.
  * New action "recommended": applies those values and enables memory
    management in one step (what VM Reactor does on one click).
  * New "status --json" and "settings --json": the state, the settings
    rows, zram statistics from /sys/block/zram0, the algorithms, the
    swaps, the sysctls, KSM and ksmtuned, the balloon service and its
    limit, the recompression and the recommendation in one machine
    readable document.
  * "dedup-unmerge" asks for confirmation (exit 3) - splitting the merged
    pages again can exhaust the memory of the host.

 -- Stratum Project <stratum@skraba.net>  Mon, 09 Nov 2026 16:00:00 +0100

stratum-memory (0.28) UNRELEASED; urgency=medium

  * Migrate the libvirt balloon daemon to Go.
  * Keep domain memory inside the configured limits and skip unknown live sizes.

 -- Stratum Project <stratum@skraba.net>  Sat, 07 Nov 2026 12:00:00 +0100

stratum-memory (0.27) trixie; urgency=medium

  * After an update of the package, deduplication, ballooning and
    recompression run again by the settings (before: the update stopped
    the ballooning service until the next change). New action "refresh".

 -- Stratum Project <stratum@skraba.net>  Mon, 02 Nov 2026 07:04:04 +0000

stratum-memory (0.26) trixie; urgency=medium

  * Recompression: the interval of the timer replaces all its times (an
    empty value resets them all) - after the boot, after the start of the
    timer and then every interval; the service always runs and tells when
    the kernel has no support, so that the timer keeps its rhythm.

 -- Stratum Project <stratum@skraba.net>  Mon, 02 Nov 2026 03:50:00 +0100

stratum-memory (0.25) trixie; urgency=medium

  * Recompression: the first run comes the set number of minutes after the
    timer was started, then every interval (before: only after a reboot).

 -- Stratum Project <stratum@skraba.net>  Mon, 02 Nov 2026 03:20:00 +0100

stratum-memory (0.24) trixie; urgency=medium

  * Recompression of the idle pages in zram (setting recompress, minutes,
    0 = off): stratum-memory-recompress.timer compresses them again with
    the second algorithm of the kernel (recomp_algorithm) - so far a part
    of VM Reactor. "stratum memory recompress-now" runs it once.

 -- Stratum Project <stratum@skraba.net>  Mon, 02 Nov 2026 03:00:00 +0100

stratum-memory (0.23) trixie; urgency=medium

  * Menu: the choice of the type of computer is shorter (disk swap,
    dedup, balloon), so that every type fits the line.

 -- Stratum Project <stratum@skraba.net>  Mon, 02 Nov 2026 02:10:00 +0100

stratum-memory (0.22) trixie; urgency=medium

  * Memory management in one module (stratum memory): next to the
    compressed swap in RAM (zram) the deduplication of equal memory pages
    (KSM with ksmtuned) and the automatic ballooning of the virtual
    machines, each switched on its own (settings dedup, ballooning,
    threshold) and chosen by the type of computer.
  * Deduplication: ksmtuned with the recommended values for a VM host at
    the first use, empty pages merged with the zero page; not inside a
    virtual machine (KSM belongs to the physical host). "stratum memory
    dedup-config" shows and changes the values of ksmtuned,
    "dedup-unmerge" splits the merged pages again.
  * Ballooning: stratum-memory-balloon.service - below the limit of free
    host memory (default 10 %) every running libvirt machine with a
    minimum (libvirt metadata https://www.skraba.net/stratum/memory) gives
    a tenth of its memory back, never below the minimum, and gets it again
    with enough free memory; every change is logged in the journal.
  * New type vm-reactor (VM Reactor host): zram size by the RAM (50 % up to
    8 GB, 33 % up to 32 GB, 25 % up to 128 GB - at most 16 GB, 15 % above -
    at most 32 GB), zstd, swappiness 100, disk swap as reserve, 1 % of RAM
    kept free (vm.min_free_kbytes), deduplication and ballooning on. The
    type hypervisor uses deduplication and ballooning too.
  * One configuration file: /etc/stratum/memory.conf; own types in
    /etc/stratum/memory.d.

 -- Stratum Project <stratum@skraba.net>  Mon, 02 Nov 2026 01:30:00 +0100

stratum-memory (0.21) trixie; urgency=medium

  * Settings and status: the compression is shown briefly (zstd - better
    compression, lz4 - fastest), so that it fits the menu; the choice keeps
    the full description.

 -- Stratum Project <stratum@skraba.net>  Sun, 01 Nov 2026 10:18:42 +0000

stratum-memory (0.20) trixie; urgency=medium

  * Compression is named by its algorithm: zstd (better compression, about
    3:1, recommended) or lz4 (fastest, about 2:1, less CPU) instead of
    higher and normal. The settings, the types and the help show the
    algorithm; existing settings are converted at the update, and the old
    names are still understood (stratum memory setting compression higher).

 -- Stratum Project <stratum@skraba.net>  Sun, 01 Nov 2026 09:26:40 +0000

stratum-memory (0.19) trixie; urgency=medium

  * Restart / changed settings: the zram device is reset before it is set
    up again - also when the setup unit had failed (systemd then skips its
    reset) and when the kernel resets it late (Debian 14, kernel 7.x:
    "Device or resource busy" on comp_algorithm, zram did not start).

 -- Stratum Project <stratum@skraba.net>  Sun, 25 Oct 2026 15:00:00 +0100

stratum-memory (0.18) trixie; urgency=medium

  * Setting "priority" removed: zram always has the highest swap priority
    (32767) - it is used first, disk swap only when zram is full.
  * Type small: zram 100 % of RAM (was 150 %), max 8 GB.
  * Warning when a disk swap has a priority as high as zram (they would
    be used together).

 -- Stratum Project <stratum@skraba.net>  Fri, 23 Oct 2026 12:30:00 +0200

stratum-memory (0.16) trixie; urgency=medium

  * Type hypervisor: disk swap enabled by default again.
  * New type vm-guest (virtual machine): 50 % of RAM (max 8 GB), zstd,
    swappiness 100, no disk swap (virtual disks are often slow or shared).

 -- Stratum Project <stratum@skraba.net>  Fri, 23 Oct 2026 12:00:00 +0200

stratum-memory (0.15) trixie; urgency=medium

  * The type dynamic is simply removed - no automatic conversion of its
    settings on upgrade.

 -- Stratum Project <stratum@skraba.net>  Fri, 23 Oct 2026 11:30:00 +0200

stratum-memory (0.14) trixie; urgency=medium

  * The type dynamic is removed; on upgrade it becomes server with its
    values (swappiness 150, disk swap enabled).
  * Type hypervisor: disk swap disabled by default - its disks are often
    slow, or swap is handled by the hypervisor.

 -- Stratum Project <stratum@skraba.net>  Fri, 23 Oct 2026 11:00:00 +0200

stratum-memory (0.13) trixie; urgency=medium

  * Settings instead of fixed profiles, shown in the menu with their
    values: type of computer (workstation, server, dynamic, small,
    hypervisor - sets the defaults), memory for zram (GB or auto), swap
    priority (high 32767 / normal 100), swappiness (low 60, medium 100,
    high 150, maximum 180, or 0-200), compression (normal lz4 / higher
    zstd) and disk swap (enable / disable).
  * Disk swap enabled: the existing disk swap is used as low-priority
    reserve; without any, /var/swapfile (at most 4 GB, at most the RAM
    size) is created and added to /etc/fstab.
  * "stratum memory settings", "stratum memory setting <key> <value>".
  * Upgrade: the type server keeps disk swap disabled as before.
  * Several settings changed in a row: the systemd start limit of the
    zram units is reset before each start.

 -- Stratum Project <stratum@skraba.net>  Fri, 23 Oct 2026 10:00:00 +0200

stratum-memory (0.11) trixie; urgency=medium

  * Upgrade from 0.09: an enabled zram setup is recognised also when the
    old unit file is already gone (dangling multi-user.target.wants link).

 -- Stratum Project <stratum@skraba.net>  Thu, 22 Oct 2026 21:30:00 +0200

stratum-memory (0.10) trixie; urgency=medium

  * The zram device is created by Debian's systemd-zram-generator
    (Depends); no more conflicts with Debian packages. The module writes
    the generator configuration from the profile
    (/etc/systemd/zram-generator.conf.d/90-stratum-memory.conf; "start"
    uses /run/... for now only) and handles VM settings and disk swap.
  * Disabled: zram-size = 0, which also overrides the generator's
    default [zram0].
  * zram-tools is checked at runtime: start/enable refuse while
    zramswap.service is active.
  * Upgrade from 0.09: the old stratum-memory.service and its zram device
    are released; an enabled setup is enabled again with the generator.

 -- Stratum Project <stratum@skraba.net>  Thu, 22 Oct 2026 21:00:00 +0200

stratum-memory (0.09) trixie; urgency=medium

  * Profiles are files: /usr/lib/stratum/zram/profiles/<name>.profile
    (Stratum) and /etc/stratum/memory.d/<name>.profile (own profiles; the
    same name overrides). Keys: SIZE_PERCENT, SIZE_MAX_MB, ALGORITHM,
    SWAPPINESS, PAGE_CLUSTER, DISK_SWAP, DESCRIPTION, ORDER.
  * New recommended profiles: small (low-memory systems, lz4) and
    hypervisor (VM/container hosts).
  * New actions: show [profile], restart.

 -- Stratum Project <stratum@skraba.net>  Thu, 22 Oct 2026 10:00:00 +0200

stratum-memory (0.08) trixie; urgency=medium

  * Help: configure options in aligned columns.

 -- Stratum Project <stratum@skraba.net>  Wed, 21 Oct 2026 21:10:00 +0200

stratum-memory (0.07) trixie; urgency=medium

  * "stratum memory help": all actions, options and files documented.

 -- Stratum Project <stratum@skraba.net>  Wed, 21 Oct 2026 21:00:00 +0200

stratum-memory (0.06) trixie; urgency=medium

  * Keep zram swap running during package upgrades (0.05 stopped it);
    start it again after the upgrade if it is enabled.

 -- Stratum Project <stratum@skraba.net>  Wed, 21 Oct 2026 19:15:00 +0200

stratum-memory (0.05) trixie; urgency=medium

  * TYPE=service.

 -- Stratum Project <stratum@skraba.net>  Wed, 21 Oct 2026 19:00:00 +0200

stratum-memory (0.04) trixie; urgency=medium

  * Retry resetting the zram device after swapoff; it can stay busy for a
    moment, which left unused zram devices behind after stop/restart.

 -- Stratum Project <stratum@skraba.net>  Wed, 21 Oct 2026 16:30:00 +0200

stratum-memory (0.03) trixie; urgency=medium

  * Module interface v2: start/stop (running/stopped), enable/disable
    (at boot) and configure <server|workstation|dynamic>; disable always
    stops first.
  * Own service stratum-memory.service with zramctl instead of
    systemd-zram-generator (now Conflicts, together with zram-tools).
  * Configuration in /etc/stratum/memory.conf; state migrated from 0.02.

 -- Stratum Project <stratum@skraba.net>  Wed, 21 Oct 2026 16:00:00 +0200

stratum-memory (0.02) trixie; urgency=medium

  * Shorter description of the dynamic profile (fits the menu width).

 -- Stratum Project <stratum@skraba.net>  Wed, 21 Oct 2026 13:50:00 +0200

stratum-memory (0.01) trixie; urgency=medium

  * Initial release: zram swap module with profiles server, workstation
    and dynamic.

 -- Stratum Project <stratum@skraba.net>  Wed, 21 Oct 2026 13:30:00 +0200
