Skip to content

Release: installer fixes, aarch64 Flatpak, transparent Linux icon, stale comment anchors#89

Merged
johnjazzi merged 8 commits into
mainfrom
dev
Jun 11, 2026
Merged

Release: installer fixes, aarch64 Flatpak, transparent Linux icon, stale comment anchors#89
johnjazzi merged 8 commits into
mainfrom
dev

Conversation

@johnjazzi

Copy link
Copy Markdown
Contributor

Promotes the current dev work to main. Merging this PR triggers a release build (release.yml runs on PR close→main: version bump + full multi-platform build + publish). Add the no-release label before merging if you want to land these without cutting a release.

This session

  • fix(install) — installer used stale electron-builder asset names that 404 against current Tauri releases. Now uses real Tauri bundle names (canonic_<v>_universal.dmg, _amd64/_aarch64.AppImage, _x86_64/_aarch64.flatpak), mounts the DMG on macOS, and installs via Flatpak on Arch/Alpine (musl can't run the AppImage; Arch ships no FUSE). README + new PKG-INS spec aligned.
  • feat(ci) — build the aarch64 Flatpak natively. The job was x86_64-only because the gnome-47 flatpak-builder container has no arm64 image; dropped the container, apt-install flatpak-builder + pull the GNOME 47 runtime from Flathub, build per-arch (ubuntu-latest / ubuntu-24.04-arm). Matches the existing PKG-FPK spec.
  • feat(icons) — transparent floating-glyph Linux app icon, derived 1:1 from icon.png (black plate knocked out via un-premultiply). icon.icns/icon.ico untouched, so macOS/Windows keep the plated icon.
  • feat(comments) — flag stale comment anchors: when a comment's quoted text is edited away, the editor reports the unmatched ids and the panel shows a "Text has changed" badge instead of a silently missing highlight. New comment-anchors util + tests, demo entry, BCM spec scenarios.

Also on dev (prior)

  • feat(update) — mandatory (non-dismissible) security update banner + persistent sidebar widget + post-update greeting; later simplified/de-duped.
  • feat(editor)/today slash command inserts the current date (ISO 8601).

Tests

All 307 tests pass locally (npm test).

Validation note

The aarch64 Flatpak CI change can only be fully validated by an actual release run; @johnjazzi is also testing the Flatpak on an Alpine arm64 machine.

🤖 Generated with Claude Code

john and others added 8 commits June 10, 2026 20:04
A release flagged critical forces a non-dismissible 'Security update required'
notice on both surfaces (red, shield icon, advisory link), so a vulnerable
build can be patched without the user ignoring it.

- update_check reads custom manifest fields via Update.raw_json: critical,
  severity, advisory (unsigned — the binary is still signature-verified at
  install, so this can only force-with-update, never run a bad binary).
- Store: updateMandatory/updateSeverity/advisoryUrl, applyUpdateInfo helper,
  openAdvisory. When mandatory, the notice can't be dismissed on either surface.
- Release workflow: mark_critical dispatch input or a 'security-critical' PR
  label injects critical/severity/advisory into latest.json.
- Demo: the demo update is critical end-to-end (banner -> download -> restart
  -> greeting). Spec: REQUIREMENTS.md (App Updates / mandatory). 289 tests (+3).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…urfaces

Review follow-ups:
- installUpdate/checkRecentlyUpdated now go through the storage util (like the
  rest of the store) instead of raw localStorage — it already handles the
  Node 26+ localStorage-throws case the ad-hoc try/catch was guarding.
- Drop the redundant titlebar update icon (the editor banner + sidebar widget
  cover all states) and suppress the dismissible legacy nudge when the update
  is mandatory, so a forced security update shows one consistent message.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Adds a "Today's date" item to the root slash menu that inserts the
current date as YYYY-MM-DD. Placed in the root (not the Insert submenu)
so typing /today filters to it directly, since the menu filter only
matches the current submenu.

formatToday() builds the string from local calendar components rather
than toISOString() so it never drifts a day near midnight.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Derive updateMandatory/advisoryUrl as computed off updateInfo instead of
  parallel refs hand-synced in applyUpdateInfo — also fixes stale flags after
  the demo install nulls updateInfo (added a test).
- Drop updateSeverity end-to-end: plumbed Rust->store->export but read by
  nothing (UI styles off the mandatory flag, not severity).
- UpdateNotice: split the overloaded 'critical' variant into orthogonal
  phase + critical, collapsing the duplicated text fork and over-built
  showDownload into one phase switch.
- onAvailable?.(applyUpdateInfo) directly.

307 tests pass; clippy + vite build clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The curl installer used stale electron-builder asset names
(canonic-arm64.zip, canonic-x86_64.AppImage) that 404 against current
Tauri releases. Use the real Tauri bundle names
(canonic_<v>_universal.dmg, _amd64/_aarch64.AppImage,
_x86_64/_aarch64.flatpak), mount the DMG on macOS, and install via
Flatpak on Arch/Alpine (musl can't run the AppImage; Arch ships no
FUSE by default). README install section corrected to what CI ships;
new PKG-INS spec section added.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
build-flatpak was x86_64-only because the gnome-47 flatpak-builder
container image has no arm64 variant (docker pull fails on arm64
runners). Drop the container; apt-install flatpak-builder and pull the
GNOME 47 runtime from Flathub, building natively per-arch (x86_64 on
ubuntu-latest, aarch64 on ubuntu-24.04-arm). Brings CI in line with the
PKG-FPK spec, which already required both arches.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Linux deb/AppImage/Flatpak now use a transparent floating-glyph icon
instead of the black-plate square. Derived 1:1 from the existing
icon.png (black background knocked out via un-premultiply over black),
so gradients and block layout are unchanged. icon.icns/icon.ico left
untouched, so macOS/Windows keep the plated square icon.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Comments anchor to the doc via stored quotedText. When that text is edited
away, the editor (source of truth for highlight matching) reports the
unmatched comment ids via store.setStaleCommentIds; the panel shows a
"Text has changed" badge + strikethrough instead of a highlight that
silently goes missing. Adds the comment-anchors util + unit tests, a demo
stale comment, and BCM spec scenarios.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@johnjazzi johnjazzi merged commit de8f078 into main Jun 11, 2026
5 checks passed
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.

1 participant