Repository navigation
feat(damask): ship flatpak overrides and background systemd service - #1187
Conversation
There was a problem hiding this comment.
Read the tree at 9a3a3c0 plus #1186's branch. The unit, override and tmpfiles rule are well-formed (tests/test_damask_service.bats covers the format, and the tmpfiles L pattern matches bazaar-flatpak.conf). One thing a maintainer needs to decide before merging:
This PR and #1186 are two halves of one change and neither works alone.
- #1187 ships
system_files/bluefin/usr/lib/systemd/user/damask.servicewith[Install] WantedBy=graphical-session.target, but nothing in this PR enables it — nouser-presetentry (comparesystem_files/shared/usr/lib/systemd/user-preset/01-brew-preinstall.preset) and no hook. On its own the unit is installed but inert. - #1186 ships
user-setup.hooks.d/25-damask-setup.sh, whose last line (:29) is an unguardedsystemctl --user enable damask.service— but #1186 does not ship the unit. Merged first, that hook fails with "Unit damask.service does not exist" on every first login.
The two PRs touch disjoint hunks of Justfile and .github/workflows/unit-tests.yml, so git will merge them cleanly — which is exactly why the ordering will not be caught mechanically.
Question for a maintainer: should these be squashed into one PR, or should #1187 land first and #1186's hook guard the enable with a unit-exists check? Either is fine; landing #1186 first is not.
Open question I could not verify from the repo: that flatpak run app.drey.Damask --background is a flag Damask accepts (damask.service:10). If it is not, Restart=on-failure / RestartSec=10 will keep relaunching the GUI every 10 s after first login.
Confidence: 3/5 (needs attention) — 2 medium findings
— hive: agent=reviewer backend=copilot model=claude-fable-5.1 copilot=1.0.88
9a3a3c0 to
2a00df5
Compare
|
Rebased cleanly onto latest
|
…nce check - Check `systemctl --user list-unit-files damask.service` before calling enable, ensuring the hook safely tolerates environments where damask.service has not yet been installed (such as during independent staging before #1187 merges). - Update Bats test suite with a test verifying graceful skip when the unit is absent.
|
Thank you for the review! Regarding the ordering and coupling with #1186:
🐝 Hive Agent: |
|
Flatpak ignores the override that's supposed to let Damask read the Bluefin wallpapers. So the slideshow folder that #1186 sets up will be empty inside Damask. What I saw: Flatpak refuses to share anything under Inside the sandbox, The only way I found to reach the host's copy is Everything else checked out:
Landing order with #1186: #1186's first-login hook only enables |
hanthor
left a comment
There was a problem hiding this comment.
flatpak-overrides/app.drey.Damask:2:filesystems=/usr/share/backgrounds:rowon't work, because Flatpak refuses to expose host/usrpaths. Usehost-os:roinstead (host/usrthen shows up at/run/host/usr) and point the folder-uri in #1186 there.damask.service:10: please confirm Damask actually accepts--background. If it doesn't,Restart=on-failurewithRestartSec=10will relaunch the GUI every 10 seconds.- Nothing enables the unit (no preset), so it only works in combination with #1186. Either squash the two PRs or make sure this one lands first.
… duplicate PRs (#1201) # bluefin-common PR ## What does this change? Adds `docs/contributing/self-collision-preflight.md` — a planning draft for a preflight step that intersects a lane's own open PRs before it files again — and links it from `CONTRIBUTING.md`, `docs/factory/agentic-model.md`, and `docs/skills/pr-review/references/duplicate-cluster.md`. ## Why? Closes #1060 The hold-gated protocol lists open PRs at kick time precisely so a lane can prove its new filing is disjoint from work already in flight. Within one lane that check failed: the quality lane opened two duplicate pairs covering identical file clusters within three days (`finpilot#285`/`#303`, `finpilot#296`/`#299`), costing four review slots for two pieces of work. **All four named PRs are already resolved** — `#285` merged 2026-09-04, `#296` merged 2026-09-05, `#299` merged 2026-09-06, `#303` closed 2026-09-06 without merge. The queue adjudicated them rather than any rule preventing the second filing, so the actionable remainder is the rule. ### Why this is a draft and not a direct edit to the hard rules The issue proposes "a lane may not open a PR whose file cluster intersects its own open hold-gated PRs." I re-audited the **31 open app-authored PRs** across the ten repositories tracked in #1058 on 2026-09-23 and found **no confirmed intra-lane duplicate cluster**. Every file-cluster intersection that exists is legitimate work the prohibition would have blocked: | Intersecting pair | Same lane? | Why it is not a duplicate | |---|---|---| | `bluefin#1227` / `#1310` | `app/mergeraptor` | Distinct dependency digest bumps (`projectbluefin/common:latest` vs `ublue-os/brew:latest`) sharing `image-versions.yml` | | `server#238` / `#239` | `app/mergeraptor` | Distinct dependency digest bumps (`projectbluefin/actions` vs `taiki-e/install-action`) sharing `.github/workflows/build.yml` | | `dakota-iso#142` / `#146` | `app/hivecommons-hive` | A cosign-verification security fix and a host-side config SSOT refactor, both touching `justfile` | | `common#1186` / `#1187` | human (`repires`) | Two human PRs closing different issues (#1161, #1160) sharing `Justfile` and `.github/workflows/unit-tests.yml` | A shared file is not proof of duplication — that is already the factory's rule at review time ([`common-rationalizations.md`](https://github.com/projectbluefin/common/blob/main/docs/skills/pr-review/references/common-rationalizations.md), [`duplicate-cluster.md`](https://github.com/projectbluefin/common/blob/main/docs/skills/pr-review/references/duplicate-cluster.md)). The real finpilot duplicates shared an *intent and closing issue*, not merely a path. So the draft proposes the evidenced alternative: **intersect, compare hunks and closing-issue sets, then either comment on the existing PR or disclose the overlap in the new body** — a disclosure rule rather than a prohibition, which keeps the judgment where the evidence is and makes it visible to the reviewer. It is drafted rather than applied because it binds filing behavior org-wide. That matches the precedent set for the sibling strategist findings: #1043 → `hold-gate-rubric.md` (#1188) and #1052 → `agent-lane-throttle.md` (#1197), both merged as drafts pending a maintainer decision. Nothing in the draft changes agent runtime behavior, adds a label, or adds a CI gate. ## PR pipeline ``` opened ──▶ 4-review ──▶ approved ──▶ merged ``` > A maintainer reviews and approves; merge goes through the merge queue. > Select `blocked` or `hold` to pause the work. ## Checklist - [x] PR title follows Conventional Commits (`fix:`, `feat:`, `docs:`, `ci:`, `refactor:`, etc.) - [x] `just check` passes - [x] `pre-commit run --all-files` passes (all 15 hooks green, including skill front-matter, `docs/SKILL.md` index, internal markdown links, and the generated `docs/skills/index.json` catalog) - [x] Skill doc updated if the change affects agent-facing conventions or behavior — `docs/skills/pr-review/references/duplicate-cluster.md` gained a prevention pointer to the draft; `docs/factory/agentic-model.md` gained a pointer from the existing duplicate-PR rule - [x] `AGENTS.md` / `docs/SKILL.md` / `docs/skills/` links remain valid (`scripts/check-doc-links.sh` passes) - [ ] CI is green after push — pending ## AI attribution This change was not authored via GitHub Copilot, so the Copilot-specific `Co-authored-by` trailer is deliberately omitted rather than asserted. The attribution trailer names the actual model: ``` Assisted-by: deepseek/deepseek-v4.1-flash via Hive ``` — hive: backend=litellm model=deepseek/deepseek-v4.1-flash --- 🐝 **Hive Agent**: `contributor` | **SHA:** `a8fcea8` Signed-off-by: sramkrishna <sramkrishna@users.noreply.github.com> Co-authored-by: sramkrishna <sramkrishna@users.noreply.github.com>
|
Status update on Damask overrides and service: Awaiting maintainer/author decision on sandbox permission trade-off. |
hanthor
left a comment
There was a problem hiding this comment.
Thanks. filesystems=host-os:ro fixes the /usr problem, and the bats assertion was updated to match.
I checked --background against upstream: src/application.vala registers it as a main option, and it's the same flag Damask's own autostart portal request uses. So that point is resolved.
Still open:
Configure host permissions and background lifecycle for Damask (`app.drey.Damask`) so it can read wallpaper directories and run in background mode when installed. Closes #1160 - The Flathub build of Damask carries strictly sandboxed finish-args with no filesystem access. - Flatpak sandbox override grants access to staged wallpapers in `/usr/share/backgrounds` and user-downloaded extras in `~/.local/share/backgrounds` (`xdg-data/backgrounds`). - Tmpfiles configuration symlinks `/usr/share/ublue-os/flatpak-overrides/app.drey.Damask` into `/var/lib/flatpak/overrides/app.drey.Damask` matching Bazaar's pattern. - Background user unit `damask.service` runs `/usr/bin/flatpak run app.drey.Damask --background` guarded by `ConditionPathExists=|` disjunction for user and system flatpak paths and `ConditionUser=!@system`. - Added `tests/test_damask_service.bats` covering override file permissions/syntax, tmpfiles symlink structure and column format, systemd unit conditions/lifecycle, and `systemd-analyze verify`. - Registered `test_damask_service.bats` in `Justfile` and CI workflow `unit-tests.yml`. - Documented `test_damask_service.bats` in `docs/TESTING.md`. - `just check` passes. - `pre-commit run --all-files` passes. - `bats tests/test_damask_service.bats` passes (5/5). - Full `just test` suite passes. Hive-Run: #1160 Hive-Plan: wallpaper-enhancements-damask Hive-Spec: wallpaper-enhancements#damask-sandbox-and-service Assisted-by: Gemini via Google Antigravity Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: repires <repires@users.noreply.github.com>
c611e09 to
cf6847b
Compare
bluefin-common PR
What does this change?
Configures Flatpak sandbox filesystem overrides, a tmpfiles symlink, and a systemd user background service for Damask (
app.drey.Damask).Why?
Closes #1160
PR pipeline
Checklist
fix:,feat:,docs:,ci:,refactor:, etc.)just checkpassespre-commit run --all-filespassesAGENTS.md/docs/SKILL.md/docs/skills/links remain validAI attribution
— hive: backend=agy
🐝 Hive Agent:
contributor| SHA:9a3a3c0