Compare commits

..
Author SHA1 Message Date
pc-heiniandClaude Opus 5.5 1f74b9bcfb fix(flatpakrepo): add RuntimeRepo so the runtime resolves without Flathub
Build and Publish HeiniRemote Agent Flatpak / build (push) Successful in 7m7s
A fresh system (e.g. Ubuntu after apt install flatpak) has no Flathub
remote, so installing from the .flatpakrepo could not find the
freedesktop 25.08 runtime. Found in the HeiniRemote VM test 2026-10-13.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 05:25:49 +02:00
pc-heiniandClaude Fable 5.1 981eb11b6d fix(console): pass TERM/COLORTERM through flatpak-spawn --host
Build and Publish HeiniRemote Agent Flatpak / build (push) Successful in 7m16s
flatpak-spawn --host does not forward the caller's environment; the host
login shell started without TERM (tput errors, integer test on empty
LINES/COLUMNS in the profile scripts).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018jkHZhr7ZzHGGuE2bJQmGa
2026-09-22 01:32:51 +02:00
pc-heini b33494d399 Revert "ci: cache cargo registry and target between Flatpak builds"
Build and Publish HeiniRemote Agent Flatpak / build (push) Successful in 7m17s
This reverts commit 11def894e2.
2026-09-22 01:12:24 +02:00
pc-heiniandClaude Fable 5.1 11def894e2 ci: cache cargo registry and target between Flatpak builds
Build and Publish HeiniRemote Agent Flatpak / build (push) Failing after 6m7s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018jkHZhr7ZzHGGuE2bJQmGa
2026-09-22 01:02:22 +02:00
pc-heiniandClaude Fable 5.1 da04640fdf fix(console): host-side PTY via script(1) so the host shell has a named tty and a controlling terminal
Build and Publish HeiniRemote Agent Flatpak / build (push) Successful in 8m37s
The PTY the agent allocates lives in the sandbox's devpts; on the host the
forwarded fd cannot be named (`tty` fails, no controlling terminal, tools
that open /dev/tty break). script(1) gives the login shell a host PTY and
relays through the forwarded one. Also picks up upstream main (frame-burst
fix).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018jkHZhr7ZzHGGuE2bJQmGa
2026-09-22 00:43:01 +02:00
pc-heiniandClaude Fable 5.1 537d3b8aa8 chore: trigger rebuild for upstream f8c509b
Build and Publish HeiniRemote Agent Flatpak / build (push) Successful in 7m53s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018jkHZhr7ZzHGGuE2bJQmGa
2026-09-21 21:04:20 +02:00
pc-heiniandClaude Fable 5.1 de18d439e5 chore: trigger rebuild for upstream eac11e0; correct README rebuild note
Build and Publish HeiniRemote Agent Flatpak / build (push) Successful in 6m59s
The workflow ignores README pushes, so the previous note was wrong.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018jkHZhr7ZzHGGuE2bJQmGa
2026-09-21 20:30:04 +02:00
pc-heiniandClaude Fable 5.1 05105a6532 docs: note how to trigger a rebuild (and trigger one)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018jkHZhr7ZzHGGuE2bJQmGa
2026-09-21 20:11:16 +02:00
pc-heini c879df948c docs: unit description matches the customer-facing name 2026-09-21 04:41:26 +02:00
pc-heiniandClaude Fable 5.1 5d23699ec9 feat: German customer-facing desktop entry and AppStream metadata
Build and Publish HeiniRemote Agent Flatpak / build (push) Successful in 7m32s
Launcher shows "PC-Heini Fernwartung" with a plain-language description of
what the program does (remote support after the user's consent) instead of
the internal "HeiniRemote Agent — connects this machine to a HeiniRemote
server". English translations via Name[en]/xml:lang. Keywords make it
findable via PC-Heini, pcheini, Fernwartung, Fernhilfe, Support, HeiniRemote.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-21 04:41:11 +02:00
pc-heiniandClaude Fable 5.1 5afb133f89 build: bump freedesktop runtime 24.08 -> 25.08
Build and Publish HeiniRemote Agent Flatpak / build (push) Successful in 7m12s
24.08 ships libpipewire/gst-plugin-pipewire 1.2.4, whose buffer negotiation
fails against KWin 6.7 + PipeWire 1.6.9 hosts (pipewiresrc: error alloc
buffers). 25.08 (libpipewire 1.4.9) was verified working on openSUSE Kalpa
via flatpak run --runtime-version=25.08; the host only needs the PipeWire
daemon, so older hosts (Mint 22, PipeWire 1.0) stay compatible.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-20 23:06:04 +02:00
pc-heiniandClaude Fable 5.1 c2a25b6d5c docs: note that the repo must be public for Flatpak to reach the OSTree repo
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Bc367PQmRJroxWQu5zZTQm
2026-09-20 22:24:14 +02:00
7 changed files with 72 additions and 18 deletions

No files matched your search

+9 -5
View File
@@ -30,10 +30,13 @@ jobs:
build: build:
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: container:
# ubuntu:24.04 matches the freedesktop 24.08 runtime closely enough # ubuntu:24.04 (glibc 2.39, GStreamer 1.24) is older than the
# (glibc 2.39, GStreamer 1.24) that the cargo-built binary runs # freedesktop 25.08 runtime (glibc 2.41, GStreamer 1.26), so the
# unmodified inside the runtime. Privileged so Flatpak's bwrap works # cargo-built binary runs unmodified inside the runtime (same sonames,
# where needed (runtime install triggers). # forward-compatible symbol versions). 25.08 is required: 24.08 ships
# libpipewire 1.2 whose buffer negotiation fails against KWin 6.7 /
# PipeWire 1.6 hosts ("pipewiresrc: error alloc buffers"). Privileged
# so Flatpak's bwrap works where needed (runtime install triggers).
image: ubuntu:24.04 image: ubuntu:24.04
options: --privileged options: --privileged
steps: steps:
@@ -120,7 +123,7 @@ jobs:
if: steps.check.outputs.build == 'true' if: steps.check.outputs.build == 'true'
run: | run: |
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install -y flathub org.freedesktop.Platform//24.08 org.freedesktop.Sdk//24.08 flatpak install -y flathub org.freedesktop.Platform//25.08 org.freedesktop.Sdk//25.08
- name: Stamp version into AppStream metadata - name: Stamp version into AppStream metadata
if: steps.check.outputs.build == 'true' if: steps.check.outputs.build == 'true'
@@ -149,6 +152,7 @@ jobs:
[Flatpak Repo] [Flatpak Repo]
Title=HeiniRemote Agent Title=HeiniRemote Agent
Url=$BASE Url=$BASE
RuntimeRepo=https://dl.flathub.org/repo/flathub.flatpakrepo
Homepage=https://pc-heini.de/ Homepage=https://pc-heini.de/
Comment=HeiniRemote remote maintenance agent as a Flatpak Comment=HeiniRemote remote maintenance agent as a Flatpak
Description=Install the HeiniRemote agent on any Linux distribution via Flatpak. Description=Install the HeiniRemote agent on any Linux distribution via Flatpak.
+11 -2
View File
@@ -3,7 +3,8 @@
Flatpak packaging for the [HeiniRemote](https://git.pc-heini.de/pc-heini/HeiniRemote) Flatpak packaging for the [HeiniRemote](https://git.pc-heini.de/pc-heini/HeiniRemote)
customer agent (`de.pc_heini.HeiniRemoteAgent`) — an additional distribution customer agent (`de.pc_heini.HeiniRemoteAgent`) — an additional distribution
channel next to the plain release binary, with all dependencies (GStreamer, channel next to the plain release binary, with all dependencies (GStreamer,
libnice, wl-clipboard, …) pinned inside the freedesktop 24.08 runtime. libnice, wl-clipboard, …) pinned inside the freedesktop 25.08 runtime (24.08 ships libpipewire 1.2,
whose buffer negotiation fails against KWin 6.7 / PipeWire 1.6 hosts).
Same setup as [o3de-flatpak](https://git.pc-heini.de/pc-heini/o3de-flatpak): Same setup as [o3de-flatpak](https://git.pc-heini.de/pc-heini/o3de-flatpak):
a Gitea Action builds the Flatpak **without** `flatpak-builder` (no bubblewrap a Gitea Action builds the Flatpak **without** `flatpak-builder` (no bubblewrap
@@ -14,6 +15,12 @@ repackaging a prebuilt archive.
## Install ## Install
> **Note:** this repository must stay **public**. Flatpak fetches the OSTree
> repo from the raw `pages` branch without any credentials — with the repo set
> to private, `flatpak remote-add` / `flatpak install` fail with a 404.
> (The agent's source lives in the private HeiniRemote repo; only the built
> binary is published here.)
From the Flatpak remote (gets updates via `flatpak update`): From the Flatpak remote (gets updates via `flatpak update`):
```sh ```sh
@@ -54,7 +61,7 @@ user unit wrapping `flatpak run`:
```ini ```ini
# ~/.config/systemd/user/heiniremote-agent.service # ~/.config/systemd/user/heiniremote-agent.service
[Unit] [Unit]
Description=HeiniRemote agent (Flatpak) Description=PC-Heini Fernwartung (HeiniRemote Agent, Flatpak)
After=graphical-session.target After=graphical-session.target
[Service] [Service]
@@ -93,3 +100,5 @@ StatusNotifier names for the tray icon.
| `heiniremote-wrapper.sh` | Entry point: host-shell `$SHELL` override + config adoption. | | `heiniremote-wrapper.sh` | Entry point: host-shell `$SHELL` override + config adoption. |
| `host-shell.sh` | `flatpak-spawn --host` bridge for the PTY console. | | `host-shell.sh` | `flatpak-spawn --host` bridge for the PTY console. |
| `de.pc_heini.HeiniRemoteAgent.*` | Desktop file, AppStream metainfo (version stamped by CI), icon. | | `de.pc_heini.HeiniRemoteAgent.*` | Desktop file, AppStream metainfo (version stamped by CI), icon. |
Builds track the newest upstream `main` commit. To rebuild before the nightly check, push a change to a packaging file (README, docs, LICENSE and .gitignore are ignored by the workflow) or run the workflow manually via `workflow_dispatch`.
+7 -3
View File
@@ -1,9 +1,13 @@
[Desktop Entry] [Desktop Entry]
Type=Application Type=Application
Name=HeiniRemote Agent Name=PC-Heini Fernwartung
Comment=Remote maintenance agent — connects this machine to a HeiniRemote server Name[en]=PC-Heini Remote Support
GenericName=Fernwartung
GenericName[en]=Remote Support
Comment=Erlaubt PC-Heini, diesen Computer nach Ihrer Zustimmung aus der Ferne zu warten
Comment[en]=Lets PC-Heini service this computer remotely, after you grant access
Exec=heiniremote-wrapper.sh Exec=heiniremote-wrapper.sh
Icon=de.pc_heini.HeiniRemoteAgent Icon=de.pc_heini.HeiniRemoteAgent
Terminal=false Terminal=false
Categories=Network;RemoteAccess; Categories=Network;RemoteAccess;
Keywords=remote;support;fernwartung; Keywords=PC-Heini;pcheini;pc heini;Heini;Fernwartung;Fernzugriff;Fernhilfe;Support;Hilfe;HeiniRemote;remote;
+26 -6
View File
@@ -3,14 +3,34 @@
<id>de.pc_heini.HeiniRemoteAgent</id> <id>de.pc_heini.HeiniRemoteAgent</id>
<metadata_license>CC0-1.0</metadata_license> <metadata_license>CC0-1.0</metadata_license>
<project_license>proprietary</project_license> <project_license>proprietary</project_license>
<name>HeiniRemote Agent</name> <name>PC-Heini Fernwartung</name>
<summary>Remote maintenance agent for HeiniRemote</summary> <name xml:lang="en">PC-Heini Remote Support</name>
<summary>Fernwartung Ihres Computers durch PC-Heini</summary>
<summary xml:lang="en">Remote support for your computer by PC-Heini</summary>
<description> <description>
<p> <p>
Customer-side agent for HeiniRemote: Wayland screen capture and input Mit diesem Programm kann PC-Heini Ihren Computer aus der Ferne warten:
injection via xdg-desktop-portal, plus a PTY rescue console, streamed Bildschirm ansehen, Maus und Tastatur bedienen und bei Bedarf eine
over WebRTC to the HeiniRemote management console. Requires a HeiniRemote Konsole nutzen. Nichts passiert ohne Ihre Zustimmung: Vor jeder Sitzung
server URL and device token (agent.toml). fragt Ihr System, ob der Bildschirm freigegeben werden darf.
</p>
<p>
Die Verbindung ist Ende-zu-Ende verschlüsselt und läuft über den
Fernwartungsserver von PC-Heini. Das Programm läuft unauffällig im
Hintergrund und zeigt ein Symbol in der Leiste, solange es aktiv ist.
</p>
</description>
<description xml:lang="en">
<p>
This program lets PC-Heini service your computer remotely: view the
screen, operate mouse and keyboard and, if needed, use a console.
Nothing happens without your consent: before every session your system
asks whether the screen may be shared.
</p>
<p>
The connection is end-to-end encrypted and goes through PC-Heini's
remote support server. The program runs quietly in the background and
shows a tray icon while it is active.
</p> </p>
</description> </description>
<launchable type="desktop-id">de.pc_heini.HeiniRemoteAgent.desktop</launchable> <launchable type="desktop-id">de.pc_heini.HeiniRemoteAgent.desktop</launchable>
+3
View File
@@ -4,6 +4,9 @@ Title=HeiniRemote Agent
# so the canonical copy to use is: # so the canonical copy to use is:
# https://git.pc-heini.de/pc-heini/HeiniRemote-AgentFlatpak/raw/branch/pages/heiniremote.flatpakrepo # https://git.pc-heini.de/pc-heini/HeiniRemote-AgentFlatpak/raw/branch/pages/heiniremote.flatpakrepo
Url=https://git.pc-heini.de/pc-heini/HeiniRemote-AgentFlatpak/raw/branch/pages Url=https://git.pc-heini.de/pc-heini/HeiniRemote-AgentFlatpak/raw/branch/pages
# Lets `flatpak install` pull the freedesktop runtime on a system that has no
# Flathub remote yet (e.g. a fresh Ubuntu after `apt install flatpak`).
RuntimeRepo=https://dl.flathub.org/repo/flathub.flatpakrepo
Homepage=https://pc-heini.de/ Homepage=https://pc-heini.de/
Comment=HeiniRemote remote maintenance agent as a Flatpak Comment=HeiniRemote remote maintenance agent as a Flatpak
Description=Install the HeiniRemote agent on any Linux distribution via Flatpak. Description=Install the HeiniRemote agent on any Linux distribution via Flatpak.
+13 -1
View File
@@ -9,9 +9,21 @@
# The inner resolution runs ON THE HOST: flatpak-spawn forwards the sandbox # The inner resolution runs ON THE HOST: flatpak-spawn forwards the sandbox
# environment, so $SHELL would still point at this script — resolve the user's # environment, so $SHELL would still point at this script — resolve the user's
# real login shell from passwd instead and fix up $SHELL before exec'ing it. # real login shell from passwd instead and fix up $SHELL before exec'ing it.
exec flatpak-spawn --host /bin/sh -c ' #
# The PTY itself was allocated inside the sandbox (its own devpts instance),
# so on the host the forwarded fd cannot be named (`tty` fails, no
# controlling terminal, tools that open /dev/tty break). script(1) allocates a
# second, host-side PTY for the shell and relays through the forwarded one;
# util-linux >= 2.35 also passes window-size changes along.
# flatpak-spawn --host does not forward the caller's environment: without
# --env the host shell starts with no TERM at all (login scripts then fail
# in tput and in integer tests on the empty LINES/COLUMNS).
exec flatpak-spawn --host --env=TERM="${TERM:-xterm-256color}" --env=COLORTERM=truecolor /bin/sh -c '
shell="$(getent passwd "$(id -un)" | cut -d: -f7)" shell="$(getent passwd "$(id -un)" | cut -d: -f7)"
[ -x "$shell" ] || shell=/bin/sh [ -x "$shell" ] || shell=/bin/sh
export SHELL="$shell" export SHELL="$shell"
if command -v script >/dev/null 2>&1; then
exec script -q -e -c "exec \"$shell\" -l" /dev/null
fi
exec "$shell" -l exec "$shell" -l
' '
+3 -1
View File
@@ -16,7 +16,7 @@ set -euo pipefail
cd "$(dirname "$0")/.." cd "$(dirname "$0")/.."
APP_ID=de.pc_heini.HeiniRemoteAgent APP_ID=de.pc_heini.HeiniRemoteAgent
RUNTIME_VER=24.08 RUNTIME_VER=25.08
BRANCH=stable BRANCH=stable
AGENT_BIN="${AGENT_BIN:?set AGENT_BIN to the compiled heiniremote-agent}" AGENT_BIN="${AGENT_BIN:?set AGENT_BIN to the compiled heiniremote-agent}"
WL_DIR="${WL_CLIPBOARD_DIR:-/usr/bin}" WL_DIR="${WL_CLIPBOARD_DIR:-/usr/bin}"
@@ -72,3 +72,5 @@ flatpak build-export --disable-sandbox repo build-dir "$BRANCH"
flatpak build-update-repo repo --title="HeiniRemote Agent" --prune --prune-depth=1 flatpak build-update-repo repo --title="HeiniRemote Agent" --prune --prune-depth=1
echo ">> done: ./repo" echo ">> done: ./repo"
# Touched to trigger a rebuild against upstream f8c509b (2026-09-21).