fix(mime): text/plain falls through to Text Editor on live (#119)
All checks were successful
Check / eval (push) Successful in 4m5s

A singleton default naming code.desktop left the live ISO with no text
handler — GIO skips missing .desktop files and offers nothing. Prefer
vscode when present, then org.gnome.TextEditor.desktop. Live also gains
mpv (video defaults had the same hole; free via the template pin).

checks.live-baseline-apps now requires every Default Applications key
to resolve to a present .desktop on live (HM + system path) and on the
default template install. Proved to fail on a vscode-only text/plain.

Verified: V2 (live-baseline-apps green + prove-to-fail); V0 flake check.
This commit is contained in:
2026-07-15 09:24:48 +01:00
parent 6fbad46bca
commit 355d8cb1a4
6 changed files with 125 additions and 48 deletions

View File

@@ -55,31 +55,6 @@ template source. Pass = Chromium launches after installation and HTTP/HTTPS
mime defaults resolve to `chromium-browser.desktop` (and the intended live-ISO
browser posture is explicit).
### 119. `text/plain` names vscode, which the live ISO does not ship
Found while shipping #103 (2026-07-14), deliberately not fixed there — same
bug class as #94, one mime key over. `modules/home/mime.nix:48` assigns
`text/plain = code.desktop`, and vscode ships only in the **template**, never
on the live ISO. GIO silently skips an entry whose desktop file is absent, so
opening a text file in the live session finds no handler at all — the exact
shape of the no-default-browser bug, and now the only one left of its kind
since #103 put chromium on the live medium.
Two ways it bites, and a fix should settle both: (1) the live session, which
now ships `gnome-text-editor` (`org.gnome.TextEditor.desktop`) — the obvious
live handler; (2) any installed machine where the user takes the template at
its word and deletes the `vscode` line (opt-out = delete the line, per the
option-surface convention), which silently breaks `text/plain` with no warning.
The general trap is worth fixing once rather than per-key: a mime default
naming a package the profile does not carry is invisible until a user
double-clicks a file. `checks.live-baseline-apps` now guards exactly this for
HTTPS (asserts the named .desktop is present, not merely named) — the cheap
version of this item is extending that assertion to every key in
`defaultApplications`, which would have caught both #94 and this. Pass = no
mime default names a desktop entry the profile lacks, on the live ISO and on
a template install, and a guard fails on a regression.
### 95. Live ISO/install: Ghostty does not open
Reproduce from the launcher and a terminal, capture its stderr/journal, and

View File

@@ -421,12 +421,11 @@ the **T14s** (webcam case).
**LibreOffice** (Writer), **Text Editor**, **Amberol**, **Snapshot**.
**Pass** = all five are *listed in the launcher* and each opens a window.
Also: a `.html` file opens in Chromium (the HTTPS mime default now names
a browser that is present — #94's exact bug). Firefox is deliberately
absent; its absence is correct, not a miss.
**Known-not-covered:** a `.txt` file has no handler on the live ISO —
`text/plain` still names vscode, which the live medium never ships
(BACKLOG #119). Text Editor opening from the launcher is the pass here;
double-clicking a text file is #119's problem, so don't file it twice.
a browser that is present — #94's exact bug), and a `.txt` file opens in
**Text Editor** (`text/plain` falls through to
`org.gnome.TextEditor.desktop` after #119; vscode remains preferred on
template installs). Firefox is deliberately absent; its absence is
correct, not a miss.
## AMD dev box only
- [ ] **#118 smartd still runs where drives DO have SMART** (this commit) — the

View File

@@ -19,6 +19,26 @@ Template:
---
## 2026-07-15 — #119: mime defaults must name a present .desktop (this commit)
- **Task:** BACKLOG #119`text/plain` named vscode, which the live ISO never
ships (same GIO-skip trap as #94, one key over).
- **Did:** `text/plain` is now an ordered fallback
`code.desktop``org.gnome.TextEditor.desktop` (HM tries the next when the
preferred is missing). Live profile gains `mpv` too — video mime defaults
had the same hole and the package is free via the template pin. Extended
`checks.live-baseline-apps` so every `[Default Applications]` key has at
least one listed `.desktop` on **live** (HM path + system path for thunar)
and on the **default template install**.
- **Verified:** **V2** — check green; mimeapps.list renders
`text/plain=code.desktop;org.gnome.TextEditor.desktop`; **proved to fail**
when `text/plain` is a vscode-only singleton. V0 flake check green.
- **Pending:** V3 launch of a `.txt` on the Acer is covered by the existing
#103 HARDWARE-QUEUE entry (now expects Text Editor for text files). Opting
out of *both* vscode and Text Editor still leaves no handler — that is the
delete-the-line convention, not a silent live-ISO bug.
- **Next suggestion:** #95 (Ghostty does not open) or #94 residual
(test-install chromium launch).
## 2026-07-14 — #118: smartd self-gates; the doctor was right all along (this commit)
- **Task:** BACKLOG #118 — Bernardo's live ISO showed a red Waybar health icon
reporting smartd.