Skip to content

Releases: ChrnX0/Tandem

Tandem 4.81

Choose a tag to compare

@github-actions github-actions released this 28 Aug 02:32
7e4e36e
  • Native RPM packaging for the rpm families - Fedora (COPR) and openSUSE
    (OBS) - the equivalent of the Arch/AUR recipe (4.62) for the other side of
    the packaging world. packaging/rpm/tandem.spec installs from the same
    distribution-agnostic generic tarball as the .deb and the AUR package,
    running its install.sh with DESTDIR, so what it packages cannot drift from
    the .deb; its %files list is generated from the tarball's MANIFEST so the
    list cannot rot as files are added or removed. %post/%postun refresh the
    shared caches and show the install notice READ from the catalogue in the
    machine's language, never sourced, exactly as the .deb postinst and the
    pacman scriptlet do. build.py --check guards the spec's Version against
    debian/control (the spec is committed, because COPR builds it straight
    from the repository), and a new suite section asserts the spec's shape and
    proves that guard fires on a version mismatch. The .xapk/.apks/.apkm
    handler's unzip dependency is declared and guarded. Built and installed
    end to end on a real Fedora 41, where tandem doctor reads "package
    family: dnf". packaging/rpm/README.md documents publishing on COPR and OBS.

Install

sudo apt install ./tandem_4.81_all.deb

Then, to install whatever is missing (Wine, winetricks, Android):

tandem preparar

Not on Debian or Ubuntu? Fedora, Arch, openSUSE and the rest
have no apt to take a .deb. Use the generic bundle instead:

tar xzf tandem_4.81_generic.tar.gz && cd tandem-4.81
sudo ./install.sh          # sudo ./uninstall.sh removes it

On Arch? A PKGBUILD is attached (with tandem.install):
makepkg -si from a directory holding both, or install tandem
with your AUR helper once it is published there.

.deb SHA-256: e952e47d6c647e6d96e5440ad720801c61fa8a510740e5f792d1710c5a0ca968
generic SHA-256: 087dc87ec0ac910cc564b39d2d25da4b08f06a5ec7d8934423879cfdfa02863b

Tandem 4.80

Choose a tag to compare

@github-actions github-actions released this 27 Aug 21:38
5b75af8
  • The program library gains a per-program Remove action - the one thing the
    main screen was missing: every row showed Open but no way to uninstall.
    Each of the six worlds a program can come from uninstalls its own way - a
    Flatpak per-user, a snap as root, a Waydroid app through Android, an
    AppImage by removing its menu entry, a Windows program through Wine's own
    uninstaller - and Tandem asks before removing anything and confirms it
    actually went, never a silent failure. A system program (one that came
    with the distribution) is not one-click-removed from here: Tandem says so
    and points at the system's software manager, because apt-removing a system
    package from a shop counter by a stray click is worse than not automating
    it. The decision of how each source uninstalls is a pure function with a
    proof-by-injection test; the click travels back through the same temp-file
    token contract the Open and Update buttons use.

Install

sudo apt install ./tandem_4.80_all.deb

Then, to install whatever is missing (Wine, winetricks, Android):

tandem preparar

Not on Debian or Ubuntu? Fedora, Arch, openSUSE and the rest
have no apt to take a .deb. Use the generic bundle instead:

tar xzf tandem_4.80_generic.tar.gz && cd tandem-4.80
sudo ./install.sh          # sudo ./uninstall.sh removes it

On Arch? A PKGBUILD is attached (with tandem.install):
makepkg -si from a directory holding both, or install tandem
with your AUR helper once it is published there.

.deb SHA-256: 9e06f4874269337a6e9e340f02ef15d50dc8b16ce7bc0854a7b17fc864e977b1
generic SHA-256: eca2f6956e888e306567cd1c3e20b276c47b1c817db7cf83cd922f5e125e73dd

Tandem 4.79

Choose a tag to compare

@github-actions github-actions released this 27 Aug 16:22
62a7207
  • A guard for the one thing the tools menu could still drift on: which tools
    each face offers. The two faces share their dispatch (acao_painel_executa),
    so what a tool DOES can never diverge - but the modern face reads the
    shared acao_painel_itens while the zenity fallback keeps its own two-level
    row list, so the SET of tools each face offers was kept in step only by
    hand. A new test asserts the modern menu (acao_painel_itens) and the zenity
    menu (acao_painel_zenity's rows, minus its "more"/"back" controls) offer
    the same set of tokens; adding a tool to one face and not the other now
    fails the suite instead of silently leaving the zenity user without it.
    Found by Codex reviewing the 4.78 record, which had overstated the
    guarantee as "both faces read one shared list" when only the dispatch is
    shared.

Install

sudo apt install ./tandem_4.79_all.deb

Then, to install whatever is missing (Wine, winetricks, Android):

tandem preparar

Not on Debian or Ubuntu? Fedora, Arch, openSUSE and the rest
have no apt to take a .deb. Use the generic bundle instead:

tar xzf tandem_4.79_generic.tar.gz && cd tandem-4.79
sudo ./install.sh          # sudo ./uninstall.sh removes it

On Arch? A PKGBUILD is attached (with tandem.install):
makepkg -si from a directory holding both, or install tandem
with your AUR helper once it is published there.

.deb SHA-256: 1f53e7bef067ba940ec8f666b95c3814fa6154ea77daedd3accc6eaaab31adb8
generic SHA-256: 258031ca7f9fe5b56dec966483de34dd80c67beea4153192ae73bddc4d1b2dd0

Tandem 4.78

Choose a tag to compare

@github-actions github-actions released this 27 Aug 13:20
2dbdd63
  • The Tools menu wears the One UI face now, the last shared surface still
    drawn as a plain 1990s list. The library main screen, the health panel,
    the wizard, the history, the error, the question and the progress bar all
    moved to the modern GTK4 look across the redesign; the "Tools" button on
    the library still opened a zenity list of doctor, backup, ports and the
    rest - the one screen a coherent product should not have left behind. It
    is a rounded-card One UI window now, one tap per tool, grouped into
    sections (Programs, Diagnosis, Your data, Community and help) instead of
    the two-level "more"/"back" list zenity forced because only eight rows
    fit its window. Every tool the old menu offered is still there, and no
    word changed in any of the seven languages.
  • Safe by construction, the same way every other modern window is: gui.py
    grew a "menu" mode that draws the cards, and acao_painel_moderno falls back
    to the zenity two-level list, then to the help text, on any machine
    without libadwaita, without a display, or with TANDEM_GUI=zenity. Both
    faces dispatch through one shared acao_painel_executa, so the modern look
    and the fallback can never drift on what a tool does. A drawing failure
    becomes exit 2, never a traceback.

Install

sudo apt install ./tandem_4.78_all.deb

Then, to install whatever is missing (Wine, winetricks, Android):

tandem preparar

Not on Debian or Ubuntu? Fedora, Arch, openSUSE and the rest
have no apt to take a .deb. Use the generic bundle instead:

tar xzf tandem_4.78_generic.tar.gz && cd tandem-4.78
sudo ./install.sh          # sudo ./uninstall.sh removes it

On Arch? A PKGBUILD is attached (with tandem.install):
makepkg -si from a directory holding both, or install tandem
with your AUR helper once it is published there.

.deb SHA-256: 11aec37695fe79ff6b2d623e6cf7aa2eeac034f4e7d8fbf3d26442ea57443483
generic SHA-256: 7eef6c6b1667a011586df4fc4332566ac62bf5686d669755e136099276c11041

Tandem 4.77

Choose a tag to compare

@github-actions github-actions released this 27 Aug 06:20
d08399d
  • The last Portuguese word on the library screen is gone. Each program's row
    shows where it came from - Wine, AppImage, Flatpak, snap, Waydroid - and
    those are proper nouns that stay as they are in any language; but a program
    from the system's own catalogue read "sistema", a plain Portuguese word,
    to a shop owner running the machine in English or another language. It is
    shown translated now - System, Sistema, Systeme and so on - while the
    record on disk keeps the token "sistema" - the same split the memory screen
    uses, on-disk value untouched, only the shown label mapped. The decision is
    a pure function (_display_fonte in gui.py: only "sistema" is mapped, every
    other source is returned as-is), pinned both ways, and t_bib_sistema still
    records the untranslated token. One new message (fonte_sistema), translated
    in all seven languages; rendered under real GTK4.

Install

sudo apt install ./tandem_4.77_all.deb

Then, to install whatever is missing (Wine, winetricks, Android):

tandem preparar

Not on Debian or Ubuntu? Fedora, Arch, openSUSE and the rest
have no apt to take a .deb. Use the generic bundle instead:

tar xzf tandem_4.77_generic.tar.gz && cd tandem-4.77
sudo ./install.sh          # sudo ./uninstall.sh removes it

On Arch? A PKGBUILD is attached (with tandem.install):
makepkg -si from a directory holding both, or install tandem
with your AUR helper once it is published there.

.deb SHA-256: 58c210f37428ff223e90bf130c7816ce13f5c6298edaafd91ee5545dbb213d37
generic SHA-256: 78aad861a46e62b581a2168d7c097660a68fe8cca25018fc7bbc5b176335a96c

Tandem 4.76

Choose a tag to compare

@github-actions github-actions released this 27 Aug 05:25
f83632e
  • An "Update all" button on the program library, the way a phone's app store
    has one. It sits above the install action and appears ONLY when at least
    one program actually has an update waiting (t_bib_ha_updates); one press
    updates them all behind the progress window - flatpak updates its own apps,
    and snap goes through t_como_root because it needs a password. It touches
    ONLY the managers the cache says have an update (t_bib_atualiza_tudo), so it
    never asks for a root password to refresh snaps when only a flatpak needs
    updating. When it is done it refreshes the update cache and reopens the
    library, so the amber dots turn green in front of the owner; and a failed
    update is NOT silent - it says so with a plain sentence, the project's
    first rule. The decision of which manager to run is pure and pinned with
    stubs that log every call (flatpak alone does not trigger snap, a snap
    update goes through root), and the button's visibility is gated on a real
    update in every direction. Three new messages (bib_atualizar_tudo,
    atualizando_tudo, atualizacao_falhou), translated in all seven languages.
    Rendered under real GTK4 - an amber button matching the update dots.

Install

sudo apt install ./tandem_4.76_all.deb

Then, to install whatever is missing (Wine, winetricks, Android):

tandem preparar

Not on Debian or Ubuntu? Fedora, Arch, openSUSE and the rest
have no apt to take a .deb. Use the generic bundle instead:

tar xzf tandem_4.76_generic.tar.gz && cd tandem-4.76
sudo ./install.sh          # sudo ./uninstall.sh removes it

On Arch? A PKGBUILD is attached (with tandem.install):
makepkg -si from a directory holding both, or install tandem
with your AUR helper once it is published there.

.deb SHA-256: 0d10990db322b7f83940c3784d1c316134ab3594e30acdbda89eefdc4e6b5777
generic SHA-256: 2ab9b63b53e0e41d7bd97a0525baae68575f228c19b7ac0dd91f8dee9af82bb9

Tandem 4.75

Choose a tag to compare

@github-actions github-actions released this 27 Aug 04:09
c7d8de6
  • The program library gets a view control, the way a file manager does. A
    small "organize" selector sits to the right of the system filters, with
    three modes: by name (A-Z, the default), by system (grouped, with a header
    per system - Windows / Android / Linux, the grouping a file manager shows),
    and by update (what needs acting on first: an update waiting, then not
    checked, then up to date, then the programs Tandem does not manage). The
    order is a PURE function (_order_items in gui.py), imported headless and
    pinned in every direction - by-name sorts across every system, by-system
    groups under a header per system with apps by name within, by-update ranks
    amber first, and an unknown mode falls back to by-name. The list is rebuilt
    on search, chip and sort together, so a grouped view can insert its headers.
    Rendered under real GTK4 in the grouped and by-update views. Three new
    messages (ordem_nome, ordem_sistema, ordem_update), translated in all seven
    languages. Deliberately NOT a "by size" or "by date" sort: those are not
    uniformly available across the six program sources (only flatpak exposes an
    installed size; most expose no install date), and a sort that is blank for
    half the list would be worse than none - the no-false-data rule.
  • A test-isolation fix rides along, found by the suite hanging on this
    machine: the boff_run helper (added in 4.74) exercises t_biblioteca but
    stubbed only flatpak, so t_bib_snap ran the real snap list, which hangs on
    snapd on a machine that has snap installed (intermittent - it passed CI and
    an earlier local run, where snap errors fast). It stubs snap now, the way
    bib_run and bup_run already do; a helper that drives the library must
    isolate every tool the library calls.

Install

sudo apt install ./tandem_4.75_all.deb

Then, to install whatever is missing (Wine, winetricks, Android):

tandem preparar

Not on Debian or Ubuntu? Fedora, Arch, openSUSE and the rest
have no apt to take a .deb. Use the generic bundle instead:

tar xzf tandem_4.75_generic.tar.gz && cd tandem-4.75
sudo ./install.sh          # sudo ./uninstall.sh removes it

On Arch? A PKGBUILD is attached (with tandem.install):
makepkg -si from a directory holding both, or install tandem
with your AUR helper once it is published there.

.deb SHA-256: a2e8b4612e1d8806f3240fc2181f0210c4e727271237e4cbd371c96dbd57c5fc
generic SHA-256: 437c80d166b74ac5222779a87015baf8098a58f2a93f87044ddb31d760d335e2

Tandem 4.74

Choose a tag to compare

@github-actions github-actions released this 27 Aug 03:07
a6905ca
  • Coherence pass, part 3 (the visible enrichment): the program library now
    SHOWS which of its programs have an update. 4.73 built the engine (a daily,
    cached, network-free check writing a sixth field, tem_update); this draws
    it. Each program's icon carries a small status dot pinned to its corner,
    FOUR states: amber = an update is waiting, green = checked and up to date,
    a hollow ring = updatable but not checked yet, gray = Tandem does not manage
    this program's updates (a Windows or Android program, an AppImage, a distro
    package). A row with an update also gains an amber "Update available" note
    beside its source, so the fact is not hidden in a tooltip nobody hovers; the
    dot itself carries a tooltip naming its meaning in the machine's language.
  • A green "up to date" is only ever shown behind a REAL check - the project's
    own rule that a check it could not run reports unknown, never healthy (the
    health command's lesson). The update worker marks a source "checked" only
    when that source's own command exits 0, so on a first launch or offline the
    source is not marked and its apps read the hollow "not checked yet" dot
    instead of a green the machine cannot back up. The gray tooltip was reworded
    from "updates with the system" (which misdescribed Wine/AppImage/Android) to
    "Tandem doesn't manage its updates".
  • The dot's state is a PURE function (_update_dot in gui.py), imported
    headless and pinned in every direction - amber only when an update waits,
    green only when checked and current, the hollow ring when updatable but
    unproven, gray for anything Tandem does not update. It reuses the palette
    the health panel already uses, so it reads as one product. Safe by
    construction, like every gui.py window: the dot falls back to the bare icon
    on any error, never a traceback, and the whole screen still falls back to
    the old menu with no GTK4. Rendered under real GTK4 in all four states. Four
    new messages (dot_atualizar, dot_atual, dot_gerido, dot_checando),
    translated in all seven languages. The one-click Update button that acts on
    an amber row comes next (v4.75).

Install

sudo apt install ./tandem_4.74_all.deb

Then, to install whatever is missing (Wine, winetricks, Android):

tandem preparar

Not on Debian or Ubuntu? Fedora, Arch, openSUSE and the rest
have no apt to take a .deb. Use the generic bundle instead:

tar xzf tandem_4.74_generic.tar.gz && cd tandem-4.74
sudo ./install.sh          # sudo ./uninstall.sh removes it

On Arch? A PKGBUILD is attached (with tandem.install):
makepkg -si from a directory holding both, or install tandem
with your AUR helper once it is published there.

.deb SHA-256: 2a3fc6fc7f658625a7fc0de3dea5c6da93d5b66974201baa7818e9c3c41dddc4
generic SHA-256: 380a2ebf5a76b35132c41de2573744b32829bc0e3f3148586f2d2b72b0657909

Tandem 4.73

Choose a tag to compare

@github-actions github-actions released this 27 Aug 01:35
c52c2b9
  • Coherence pass, part 3 (the enrichment): the program library learns which
    of its programs have an update waiting. flatpak and snap each know, per
    app, whether a newer version is out - but asking costs a network round
    trip, and the library is the main screen, opened all the time. So the
    answer is CACHED: the check runs at most once a day, in the background,
    stamped before the attempt (the self-update check's shape), and writes the
    updatable ids to a file; the screen reads only that file, so it opens
    instantly and never blocks on the network. t_biblioteca carries the answer
    as a sixth field, tem_update (sim/nao) - only an updatable source can hold
    one, and only if the cache lists it, so it never invents an update. The
    field is a pure read (the refresh is triggered separately by the command
    path), so it stays safe to call from a test. On-disk cache values are
    English and lowercase like the memory tokens, never translated.
  • This is the invisible-but-testable engine; the visible green/amber dot and
    the Update button on each row come next, reading exactly this. Pinned with
    stubbed flatpak/snap: an app the check found reports an update, one the
    cache does not list reports none, an updatable app with nothing waiting is
    marked nao and one with an update is marked sim, and the daily throttle
    fires once then the day's stamp skips it. No new message, no behaviour
    change on the apt path or anywhere a program opens.

Install

sudo apt install ./tandem_4.73_all.deb

Then, to install whatever is missing (Wine, winetricks, Android):

tandem preparar

Not on Debian or Ubuntu? Fedora, Arch, openSUSE and the rest
have no apt to take a .deb. Use the generic bundle instead:

tar xzf tandem_4.73_generic.tar.gz && cd tandem-4.73
sudo ./install.sh          # sudo ./uninstall.sh removes it

On Arch? A PKGBUILD is attached (with tandem.install):
makepkg -si from a directory holding both, or install tandem
with your AUR helper once it is published there.

.deb SHA-256: ad46d824de6956949ac47a614163bb9e2022973750acefbec031aa1114060d2c
generic SHA-256: 7ef6869166d00a6941b2ceb682aa21faab97f2bf6f78f61aa851ff55768deba3

Tandem 4.72

Choose a tag to compare

@github-actions github-actions released this 26 Aug 23:31
b732845
  • Coherence pass, part 3: the main screen IS the library now. The old zenity
    menu of commands - the one screen a shop owner who never opens a terminal
    saw, and the one the owner said he detested - is replaced by a One UI window
    that shows every installed program: the system's own mark on each row (the
    Windows window, the Android robot, the Linux Tux penguin - drawn fresh, no
    trademark art copied), a search, per-system filter chips, an Open button per
    program, and a bar to install a new file. It reads the 4.71 enumeration
    engine (t_biblioteca), so it needs no new source of truth.
  • A click comes back through a temp file, the exact contract the health
    panel already uses: "abrirfontelancador", "instalar", or
    "ferramentas". The shell reads it and does the rest; gui.py never launches
    or installs anything itself. t_bib_lancador decides how each program opens
    (gio launch for a .desktop, flatpak run, snap run, waydroid app launch) -
    pure, so the decision is pinned by a test - and t_bib_abrir runs it
    detached with the target as ONE quoted argument, never concatenated into a
    command.
  • Nothing is lost. A "Ferramentas" button opens the old menu, so doctor,
    backup, ports and the rest are one tap away; and with no GTK4 the whole
    screen falls back to that menu, which itself falls back to the help text -
    the fallback the error/question/text/progress windows all share.
  • The system names on the chips (Windows/Android/Linux) live in gui.py, a
    descriptive category label that is the same in every language; only the
    labels that translate (All, Open, Install, Search, Tools, the count) go
    through the catalogue - 6 new messages, translated in all seven languages.
  • Rendered under Xvfb and checked against the approved mockup: the window,
    the three system marks through librsvg, the chips, the search. gui.py home
    with no display refuses fast (never hangs behind an invisible window).

Install

sudo apt install ./tandem_4.72_all.deb

Then, to install whatever is missing (Wine, winetricks, Android):

tandem preparar

Not on Debian or Ubuntu? Fedora, Arch, openSUSE and the rest
have no apt to take a .deb. Use the generic bundle instead:

tar xzf tandem_4.72_generic.tar.gz && cd tandem-4.72
sudo ./install.sh          # sudo ./uninstall.sh removes it

On Arch? A PKGBUILD is attached (with tandem.install):
makepkg -si from a directory holding both, or install tandem
with your AUR helper once it is published there.

.deb SHA-256: 1a8fac111b6f4ead4974f7c4ac87939a1b0c45eae34138fbe23d3be86a11ee9d
generic SHA-256: 52f40959639be3dc559b82e7e02ad8294a4108534df405f444532c2f8bac3795