LR-BEHAV-ACCESS: the Flatpak may talk to the accessibility bus, so Orca can read LightCraft

This commit is contained in:
Nathaniel Ledford
2026-10-31 07:33:45 -04:00
parent c4fd54e0a6
commit e845b97d8d
5 changed files with 16 additions and 2 deletions
File diff suppressed because one or more lines are too long
+3
View File
@@ -2,6 +2,9 @@
## 2026-10-30
### The Flatpak may talk to the accessibility bus
- The Flatpak package now has access to the accessibility bus (`org.a11y.Bus`) and no other new permission; its network, Pictures folder and GPU access are unchanged. Before, the sandbox hid the bus, so a screen reader such as Orca could not see LightCraft's window. The Flatpak build is the only one affected.
### A keyboard shortcut for Clear Color Label
- Clear Color Label is now a command of its own in Help ▸ Keyboard Shortcuts, so it can have a key like Set Rating or
Set Flag; before, only the red, yellow, green and blue labels (6–9) had keys and clearing a label was menu-only. It has
+2
View File
@@ -17,6 +17,8 @@ for name in ("ai.storyteller.lightcraft.yml", "ai.storyteller.lightcraft.bundle.
with open("packaging/linux/flatpak/" + name) as source:
manifest = yaml.safe_load(source)
assert manifest["id"] == "ai.storyteller.lightcraft" and manifest["command"] == "lightcraft", name
# Without this talk-name the sandbox hides the accessibility bus and Orca cannot see the app.
assert "--talk-name=org.a11y.Bus" in manifest["finish-args"], f"{name} lost --talk-name=org.a11y.Bus"
manifests.append(manifest)
for key in ("runtime", "runtime-version", "sdk", "finish-args"):
assert manifests[0][key] == manifests[1][key], f"Flatpak manifests disagree on {key}"
@@ -25,6 +25,10 @@ finish-args:
- --share=ipc
# GPU access for the wgpu renderer (Vulkan, or GL as a fallback).
- --device=dri
# Screen readers: AccessKit asks the accessibility bus (org.a11y.Bus) whether one is running and
# publishes the window there over AT-SPI. Without it the sandbox hides the bus and the app is
# invisible to Orca and other assistive technology.
- --talk-name=org.a11y.Bus
# The library lives in ~/Pictures/LightCraft Library by default, and imports usually come from
# Pictures. Open/Save dialogs go through the file-chooser portal (rfd's xdg-portal backend) and
# drag-and-drop through the document portal, so picked folders elsewhere work without broad
@@ -31,6 +31,10 @@ finish-args:
- --share=ipc
# GPU access for the wgpu renderer (Vulkan, or GL as a fallback).
- --device=dri
# Screen readers: AccessKit asks the accessibility bus (org.a11y.Bus) whether one is running and
# publishes the window there over AT-SPI. Without it the sandbox hides the bus and the app is
# invisible to Orca and other assistive technology.
- --talk-name=org.a11y.Bus
# The library lives in ~/Pictures/LightCraft Library by default, and imports usually come from
# Pictures. Open/Save dialogs go through the file-chooser portal (rfd's xdg-portal backend) and
# drag-and-drop through the document portal, so picked folders elsewhere work without broad