23 Commits
Author SHA1 Message Date
Александр 0e0e474b72 vintner: bump to 0.5.0
No-PATH tool invocation, a concurrency lock for download/install, the
vintner doctor diagnostics command, an actionable wine-not-found
error, resumable downloads, and wedged-process recovery.
2026-07-25 18:22:09 +10:00
Александр 73b5e87e95 feat(max): add MAX messenger package, sandboxed with Firejail
MAX is the Russian state-affiliated messenger; the official Qt6 client is
repacked from download.max.ru with no independent security track record,
so it never runs unsandboxed. /usr/bin/max is a wrapper (not a symlink)
that always launches through `firejail --profile=max`; the .desktop Exec
goes through the same wrapper so there's no launch path that bypasses it.
The profile hides the rest of the home directory behind private ~/.config,
~/.cache and ~/.local/share/max subdirectories, drops capabilities, enables
seccomp, blocks system D-Bus, and blacklists the standalone crashpad_handler
crash-report uploader. Full elimination of first-party telemetry isn't
claimed or possible from the sandbox layer alone — documented in LICENSE.

Also wires up repo-wide bookkeeping now that all three package changes
(telegram-desktop -> telegram rename, vk-messenger, max) are in: README
package count/catalog rows, docs/maintenance.md naming table and directory
count, and tools/package_updates.sh + tools/validate_repo.py package lists.
2026-07-25 18:02:25 +10:00
Александр 6401c42a91 feat(vk-messenger): add VK Messenger package
Repacks the official Electron build vk.me/app serves directly (no GitHub
release or distro repo for this product). Upstream's own .deb installs
under the literal Cyrillic product name /opt/VK Мессенджер — package()
resolves that directory dynamically instead of hardcoding it, then lays
the payload out under a clean /opt/vk-messenger to match this repo's
convention.
2026-07-25 18:02:10 +10:00
Александр 3fdc6a608a rename(telegram-desktop): package ID to telegram
Same pattern already used for claude/claude-desktop: keep the upstream
desktop-id (org.telegram.desktop) and every installed path unchanged, only
rename the Stapler package directory and `name` field. `replaces` stays
self-name-only per the general rule in validate_repo.py (the old-name
carve-over in `replaces` is currently special-cased there for `claude`
only) — anyone with telegram-desktop installed needs `stplr install
telegram` + `stplr remove telegram-desktop` manually.
2026-07-25 18:01:52 +10:00
Александр 9833b202f9 fix(telegram-desktop): use Telegram's own external-updater opt-out instead
The DESKTOPINTEGRATION wrapper/environment.d combo only ever stopped the
shadow .desktop/.service self-install. It never addressed a second, worse
symptom: QGuiApplication::setDesktopFileName() in Platform::start() sets the
Wayland app_id to a per-install-path hashed "org.telegram.desktop._<hash>"
id whenever Core::UpdaterDisabled() is false — completely independent of
DESKTOPINTEGRATION — so the running window's app_id never matched our
shipped org.telegram.desktop.desktop and its icon/taskbar entry broke even
after the duplicate launcher file was silenced.

Telegram ships a documented opt-out for exactly this: Launcher::
ComputeExternalUpdater() (core/launcher.cpp) scans <exe-dir>/
externalupdater.d/ for a file containing a line equal to its own full
executable path, and calls SetUpdaterDisabledAtStartup() if found. That one
flag flips both Core::UpdaterDisabled() checks at once — InstallLauncher()
skips the shadow-file self-install AND desktopFileName() uses the plain
"org.telegram.desktop" id that matches our .desktop file, fixing the window
icon too. Drop the wrapper script and environment.d drop-in; back to a
plain /usr/bin symlink plus one externalupdater.d marker file.
2026-07-25 16:44:53 +10:00
Александр d3b2abecdd fix(telegram-desktop): also export DESKTOPINTEGRATION for the whole session
The /usr/bin wrapper only stops the shadow .desktop/.service self-install
when Telegram is actually launched through it. A stale GNOME Shell app-grid
entry (or anything else invoking /opt/telegram-desktop/Telegram directly)
still bypasses it and lets InstallLauncher() recreate the shadow files,
which was still reproducing after the previous fix.

Ship a systemd environment.d drop-in setting DESKTOPINTEGRATION=1 for the
whole graphical session, so the guard applies regardless of which launcher
or cached desktop entry starts the binary. Requires a full logout/login (or
reboot) to take effect, same as the desktop-shell cache refresh this bug
already needs on Wayland.
2026-07-25 16:30:19 +10:00
Александр b9e2887b2f fix(telegram-desktop): actually stop the shadow desktop-file self-install
The Exec-path and DBusActivatable matching from the previous two commits
were treating the wrong cause: InstallLauncher() in tdesktop's
specific_linux.cpp unconditionally wipes and rewrites its own
~/.local/share/applications/*.desktop and dbus-1/services/*.service on
every launch, regardless of what the installed .desktop file says — unless
the DESKTOPINTEGRATION env var is non-empty, which is upstream's documented
opt-out for exactly this kind of repack.

/usr/bin/telegram-desktop is now a wrapper script that sets
DESKTOPINTEGRATION=1 before exec'ing the real binary, covering every launch
path (desktop file, D-Bus activation, terminal). The .desktop file's
Exec/TryExec/DBusActivatable revert to their original values since the
field-matching theory they were built on didn't hold.
2026-07-25 16:11:20 +10:00
Александр f33ec4b124 fix(telegram-desktop): declare DBusActivatable=true to match Telegram's own check
Matching Exec to the real binary path wasn't enough: Telegram also compares
the installed .desktop's DBusActivatable field against what it expects and
still self-installs a shadow copy in ~/.local/share/applications when it
sees DBusActivatable=false, producing the same duplicate-icon symptom.
Setting it to true stops the shadow copy. Bumped release and checksum.
2026-07-25 15:56:05 +10:00
Александр c0929c030a vintner: bump to 0.4.0 - DirectX SDK support, legacy PlatformToolset aliasing
Two real new capabilities from upstream, both developed and verified
against a real years-old game client build: --with-dxsdk fetches the
DirectX SDK (June 2010) for legacy D3DX9 code, and old PlatformToolset-
pinned .vcxproj files (v90-v143) now transparently resolve to the one
installed compiler instead of failing MSB8020. Added cabextract as a
package dependency (needed at runtime for --with-dxsdk, same reasoning
as the existing msitools dependency).
2026-07-25 15:46:43 +10:00
Александр f02fc98097 vintner: bump to 0.3.1 - real toolrelay.exe mt.exe fix
Upstream fixed a real bug found while building Ogre3D through
vintner: toolrelay.exe's mt.exe detection compared the whole path
against "mt.exe" instead of just the filename, since it only checked
for a backslash separator on a path that actually arrives with
forward slashes - so the CMake-compatibility exit-code translation
this whole helper exists for had never actually fired.
2026-07-25 11:57:55 +10:00
Александр 08104de30c vintner: bump to 0.3.0, auto-install shell completion
Wires vintner's own `completion bash|zsh` output into Stapler's
install-completion helper (bash -> /usr/share/bash-completion/
completions/vintner, zsh -> /usr/share/zsh/site-functions/_vintner -
both verified against a real built package, since neither path nor
the required paired files-find() registration is documented anywhere
reachable). Completion now works immediately after `stplr install`,
no manual `source <(vintner completion bash)` needed.

0.3.0 also picks up upstream's signal-forwarding fix (a wine
subprocess no longer survives `vintner` being killed by PID) and its
own expanded test coverage.
2026-07-25 11:33:17 +10:00
Александр 91fe77b794 Rename msvc-go-wine package to vintner, bump to 0.2.0
Upstream rebranded to vintner (github.com/Cheviiot/vintner) and
cut a new release with WDK driver-build support, short command
aliases, and English/Russian CLI localization. Updates the package
directory, Staplerfile (name, urls, checksums, replaces), catalog
entry in README.md, and the two tools/ scripts that hardcode the
package name list.
2026-07-25 04:06:07 +10:00
Александр 5dc78222f6 fix(telegram-desktop): point Exec at the real binary to stop duplicate launcher icons
Telegram's own Linux runtime checks whether the installed .desktop file's
Exec matches its actual binary path, and silently writes a private copy to
~/.local/share/applications with a randomized name whenever it doesn't.
Our desktop entry pointed at the /usr/bin/telegram-desktop symlink, which
never matched /opt/telegram-desktop/Telegram, so Telegram regenerated a
shadow launcher on every start, producing a second, unmatched icon.

Exec/TryExec now point directly at the installed binary so Telegram's own
check finds a match. Bumped release and updated the checksum for the
changed desktop file.
2026-07-25 03:43:58 +10:00
Александр a68fb112d7 fix(telegram-desktop): correct ALT Linux dependency package names
libbrotli, libbz2, libfontconfig, libffi, libglib2 and hicolor-icon-theme
don't exist as such in ALT's repos. Verified real names against this
machine's apt-cache: libbrotlicommon/libbrotlidec, bzlib, libfontconfig1,
libffi8, glib2, icon-theme-hicolor.
2026-07-25 02:35:06 +10:00
Александр 84a1bbea8a fix(telegram-desktop): ignore archive ownership on extraction
tsetup.tar.xz bakes in uid/gid 1000 from Telegram's release tooling;
the sandboxed builder can't chown to it, so the build failed with
"Невозможно изменить владельца". --no-same-owner/--no-same-permissions
matches the pineconemc package's handling of the same issue.
2026-07-25 02:30:28 +10:00
Александр 8564f84ed5 fix: avoid substring collision in sync_readme_versions.py
Wrap the install command in backticks when matching README rows, so
nivora/claude no longer matches inside the nivora/claude-alt row.
2026-07-25 02:28:09 +10:00
Александр 07d13aca64 feat: add Telegram Desktop package
Repackages the official static tsetup.7.0.5.tar.xz Linux build for
amd64, keeping the upstream org.telegram.desktop desktop-id and
TelegramDesktop WM class.
2026-07-25 02:28:05 +10:00
Александр c34650a941 chore: update msvc-go-wine catalog version 2026-07-25 01:49:32 +10:00
Александр fdb4a492ef feat: add Nivora CLI and msvc-go-wine 2026-07-25 01:43:11 +10:00
Александр 3cc4217790 feat: rename Claude package 2026-07-25 01:22:52 +10:00
Александр f3af93802f feat: split ClaudeAlt into independent package 2026-07-25 01:18:17 +10:00
Александр 1801be3549 fix(yandex-browser): bind window to visible launcher 2026-07-25 00:55:17 +10:00
Александр f405ae2bcf feat: create autonomous Nivora package repository
Maintain a validated cross-distribution package catalog.
Automate upstream updates, isolated builds, diagnostics, and direct publication.
Build the official GitHub Desktop sources for Linux with working OAuth.
2026-07-25 00:49:32 +10:00