Skip to content

feat(snap): Snap Store packaging - #586

Open
Nozzit wants to merge 1 commit into
HakanSeven12:mainfrom
Nozzit:snap-packaging
Open

feat(snap): Snap Store packaging#586
Nozzit wants to merge 1 commit into
HakanSeven12:mainfrom
Nozzit:snap-packaging

Conversation

@Nozzit

@Nozzit Nozzit commented Jul 30, 2026

Copy link
Copy Markdown

Summary

Adds snap/snapcraft.yaml + .github/workflows/snap.yml to bring Open CAD Studio onto the Snap Store, following the same repackage-the-release-artifact pattern already shipped for the other OpenAEC Foundation apps (open-planner-studio, open-calc-studio, open-geotechniek-studio, openaec-installer) — except this repackages the released AppImage (--appimage-extract) instead of a .deb, since that's what this project's Release workflow produces for Linux.

  • Snap name: open-cad-studio.
  • Triggers on completion of the Release workflow (workflow_run) — matches its release: published + workflow_dispatch triggers, so there's no risk of firing on routine pushes.
  • Publishing to the Snap Store only happens once SNAPCRAFT_STORE_CREDENTIALS is set as a repo secret — until then the publish step is skipped, not failed.

⚠️ This one is meaningfully different from the other OpenAEC snaps — please read before merging

OCS uses winit + wgpu (Vulkan with a GL fallback) for its window/rendering, not GTK/WebKit. That means:

  • No extensions: [gnome] (that's specific to the WebView-based Tauri apps). Instead this declares explicit opengl, wayland, x11, desktop, desktop-legacy plugs and stages the Mesa/X11/Wayland runtime libraries the binary needs (ldd on the released binary shows almost no linked libs beyond libc, which strongly suggests wgpu/winit load Vulkan/GL/X11/Wayland dynamically at runtime rather than at link time — the staged packages should cover that, but this is inferred, not confirmed against a real GPU).
  • I have high confidence the packaging mechanics work (verified: extracting the actual v0.9.0 AppImage locally produces exactly the file layout the manifest expects, and snapcraft.yaml validates). I have much lower confidence in the actual GPU/windowing behavior under strict confinement — that can only really be verified by installing the built snap on a real Linux desktop with a GPU and confirming the app actually renders and opens/saves DWG/DXF files, not just that snapcraft pack succeeds in CI.

Prerequisites before this can publish anything

  1. The name open-cad-studio isn't registered on snapcraft.io yet.
  2. SNAPCRAFT_STORE_CREDENTIALS needs to be added as a repo secret (snapcraft export-login --snaps=open-cad-studio --channels=stable).

Test plan

  • Merge, then run a workflow_dispatch test build against an existing tag (e.g. v0.9.0) — build/artifact only, no publish.
  • Install the resulting snap on a real Linux desktop and actually exercise it: open a DWG/DXF file, confirm 2D/3D rendering works, not just that the window opens.
  • If rendering is broken under strict confinement, this may need additional plugs/interfaces (or, in the worst case, confinement: classic, which requires manual Snap Store review on every release).
  • Register the name and add credentials once the above checks out, then let the next real Release publish it.

🤖 Generated with Claude Code

Repackages the released Linux AppImage (--appimage-extract) instead of
rebuilding from source, triggered on completion of the "Release" workflow.
Publishing to the Snap Store only happens once SNAPCRAFT_STORE_CREDENTIALS
is set as a repo secret.

Different from the other OpenAEC snaps in one important way: OCS uses
winit + wgpu (Vulkan/GL), not GTK/WebKit, so this uses explicit
opengl/wayland/x11 plugs and staged Mesa/X11/Wayland runtime libraries
instead of the `gnome` extension.

Higher confidence in the packaging mechanics (build succeeds, produces a
valid .snap) than in the actual runtime GPU/windowing behavior under
strict confinement, which needs real hands-on testing on a Linux desktop
before publishing to stable -- see the PR description.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@UserDevtec

Copy link
Copy Markdown
Contributor

Hi @Nozzit,
Could you translate the notes and text into English instead of Dutch?

image

@Nozzit

Nozzit commented Jul 30, 2026

Copy link
Copy Markdown
Author

I am going on vacation tomorrow, I'll do it later so don't worry when it takes a while

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants