Incidents
Every problem a user could notice in a FlatPark app, with its cause, how it was found and how fast it was fixed. Each row names the check in the testing playbook that catches it now; every new fix adds a row here and, when no check covers it yet, a check there.
Collected from the git history, June to mid-October 2026. Screenshots, links, icons, storage size and permission narrowing are left out. Of the 193 app ids listed in that time, 36 had a problem at some point (18.7%), 30 of them caused by us; 7 were severe at listing.
Severe
Won’t install, won’t start, loses data, or its main feature doesn’t work.
| App | Symptom | Cause | Introduced by | Found by | Time to fix | Check |
|---|---|---|---|---|---|---|
| Trilium | Notes lost on every restart | ~/.local/share/trilium-data not granted |
Listing | User (#145) | ~3 weeks | Data survives |
| AB Download Manager | Settings and library lost; second instance | ~/.abdm not granted |
Listing | User | ~7 weeks | Data survives, second launch |
| ZCode | Logged out on every start | ~/.zcode not granted |
Listing | Us | Same day | Data survives |
| DBX | Drivers, JRE, DuckDB extensions lost | ~/.dbx, ~/.duckdb not granted |
Listing | Us | 13 days | Data survives |
| Fastpotify (now Spotifast) | Crashed on playback | An injected getpid shim broke libpulse |
Listing | Upstream (spotifast#73) | ~6 weeks | Main feature, media |
| ZapFast | Voice and media messages wouldn’t play or record | The same shim | Listing | Us | ~3 weeks | Main feature |
| cc-switch | EBUSY when activating a config |
Rename onto a single-file bind mount | Listing | User (#44) | ~19 days | Main feature |
| All tarball apps, system-wide | apply_extra script failed |
chown fails as root without capabilities |
Our pipeline | Us | — | Unpacks |
| 5 prebuilt consumers | “Wrong size” on install and update | Re-pin changed sha256 but not size |
Our change | Us | Same day (#359) | Unpacks |
| Sigma, mDNS Browser, Cockpit Tools | Transparent window, content flashes on scroll | GNOME 51 + forced non-accelerated WebKit + transparent window | Our change (runtime batch, #362) | Us | 2 hours (#364) | Starts and draws |
| SubtitleEdit | Burning subtitles always failed | The SDK’s ffmpeg has no libass | Our change (#233) | Contributor | ~18 hours (#238) | Main feature |
| Enpass 6.12 | Crash on start after an update | Upstream moved Qt from xcb to Wayland | Upstream | Us | 4 hours (#351) | Starts and draws |
| tldraw | Install and update failed from 1.12 | Upstream renamed the launcher | Upstream | User (#130) | — | Unpacks |
| Harbor Beta | Pin 404 | Upstream re-cut with -2 and deleted the old file |
Upstream | Us | — | Unpacks |
| thinkorswim | Blank login dialog | JxBrowser 9’s sandbox needs user namespaces | Upstream (probably) | Us | — | Starts and draws |
| Authme | Crash on start in no-auth mode | 7.x uses the kernel keyring only | Upstream (probably) | Us | — (#527) | Main feature |
Minor
One feature or one piece of desktop integration.
| App | Symptom | Cause | Fix | Check |
|---|---|---|---|---|
| Folia | No media controls, windows not grouped | MPRIS name not granted; wrong StartupWMClass |
#609 (user report #607) | Bus names, window class |
| Flow | Media controls dead | launch symlink gave WebKit a hashed name |
#549 | Bus names |
| Harbor | Media keys dead | MPRIS name not granted | #517 | Bus names |
| OpenTubeX | No media controls | Branded bus name not granted | #291 | Bus names |
| Stoat, Thorium and 4 more Electron apps | No media controls; windows not grouped | Missing grant; StartupWMClass not measured |
#561 | Bus names, window class |
| PhotoCraft | Windows not grouped | Wrong StartupWMClass |
#569 | Window class |
| materialgram | Bots, payments, Instant View broken | No WebKitGTK in the freedesktop runtime | #515 | Main feature |
| Min | Saving passwords failed on Hyprland and Sway | Unknown desktop → plain-text store | #560 | Main feature |
| PI-Desktop | Couldn’t quit | An injected getpid shim |
#434 | Main feature |
| Magpie | 16 directories created in $HOME |
:create on other tools’ directories |
#461 | Home folder |
| Yaak | Installed the CEF build instead of WebKitGTK | Loose resolver match | d1d0020 | Unpacks |
| WorkBuddy | Install failed in one region | CDN served different bytes per region | #651 | — (no local check reproduces it) |
| Cellar | Installer shortcuts written to the host desktop | Desktop path not redirected | #676 | Home folder |
What the record shows
- Severe listing defects are rare and concentrated. Four of the seven were
a
~/.dotdirnot granted, all before mid-August; two were the same injected shim, after which injecting code into open-source apps was banned; one wasEBUSYon a single-file grant. - Minor problems are desktop integration (window class, media names), and were fixed in one audit across the catalog.
- Fixing is fast; finding is the bottleneck. 14 of the 36 were fixed within a day. The severe ones we caused that weren’t caught at once took 13 days to 7 weeks, and four were found by users or upstream: data loss shows only after a restart, a crash only after pressing play.
- Batch changes worked when sampled by stack: the GNOME 51 transparent window was found right after the upgrade, every app built the same way was checked, and all three were fixed within hours (batch changes).
- Upstream breakage (about 3%) can’t be prevented before release; it is fixed when it happens.
“Found by us” is inferred from the absence of an issue, and problems in apps removed without a fix commit aren’t counted.
Adding a row
When a fix for a listed app merges, add a row: severe if the app wouldn’t install, start, keep data, or do its main job; minor otherwise. Name the check that would have caught it. If none would, add the check to the testing playbook in the same PR. When no local check can reproduce it (a CDN that serves different bytes per region), say why in the row instead.