Commit Graph
395 Commits
Author SHA1 Message Date
Dylan M. Taylor e5d3039747 fix: Flatpak review fixes, and add the signature lookaside for signed bundles
Review of #1147:
- A failed OCI migration precheck (no version in the remote's AppStream data, polkit refusing
  remote-add, offline) now falls back to the bundle update instead of failing it; only errors
  once the reinstall starts are reported. The ref must list exactly the selected version.
- `flatpak list` names a named installation `system (<name>)`; the parser keeps `<name>`, and
  one packages::flatpak_scope builds the --user/--system/--installation= argument everywhere.
- A repository-managed Flatpak on a pinned or nightly track gets the "update with flatpak"
  hint instead of a plain `flatpak update`, and status no longer offers a GitHub version for it.
- The migration refuses while the app runs; the origin check after the reinstall can't be
  cancelled; is_flatpark_origin matches only `flatpark`; settings_install keeps its doc; the
  no-op oci_migration Cargo features are gone.

Signed bundles (storytold/craft-common-actions#129): a signed bundle's origin has the release
key but no signature lookaside, which `flatpak build-bundle` can't record, so its first update
from the ArtCraft OCI repository fails with "no valid signatures". The updater then sets
--signature-lookaside=https://getartcraft.com/signatures on that origin once and retries;
any other origin or error is left alone.
2026-11-02 21:29:10 -05:00
Dylan M. Taylor b1c3e8025d style: format Flatpak migration error 2026-11-02 17:55:21 -05:00
Dylan M. Taylor 89abb2e5d3 fix: keep Flatpak OCI migration safe to cancel and retry
Add the artcraft-oci remote with --if-not-exists so concurrent migrations
do not fail, let the --reinstall step finish once started because killing
flatpak-spawn does not stop the host transaction, and when the reinstall
fails after removing the ref, point to the .flatpak bundle on the releases
page.
2026-11-02 17:55:21 -05:00
Dylan M. Taylor f8386cd1d4 fix: refresh the OCI remote's AppStream data before checking versions 2026-11-02 17:37:36 -05:00
Dylan M. Taylor 55b6d660be test: exercise OCI settings and fix Flatpak remote creation 2026-11-02 17:37:36 -05:00
Dylan M. Taylor a4e76179cc fix: preserve repository ownership and Flatpak update results 2026-11-02 17:37:36 -05:00
Dylan M. Taylor 25e53ccbba refactor: name OCI migration controls oci_migration 2026-11-02 17:37:36 -05:00
Dylan M. Taylor 53509be742 docs: keep experimental OCI migration details in the PR 2026-11-02 17:37:36 -05:00
Dylan M. Taylor fc9ef02fee feat: expose OCI migration as an opt-in advanced setting 2026-11-02 17:37:36 -05:00
Dylan M. Taylor 774bc395eb feat: gate bundle to OCI migration behind experimental feature 2026-11-02 17:37:32 -05:00
Dylan M. Taylor 3e09878c6b fix: compile Flatpak cancellation helper only on Linux 2026-11-02 17:37:32 -05:00
Dylan M. Taylor 1794bc1541 fix: match the published ArtCraft OCI remote endpoint 2026-11-02 17:37:32 -05:00
Dylan M. Taylor 4a237c9aff fix: update ArtCraft repository Flatpaks through their remote 2026-11-02 17:37:32 -05:00
Dylan M. Taylor b17ca19ae8 fix: preserve Flatpak update scope and handle cancellation 2026-11-02 17:37:32 -05:00
Dylan M. Taylor 6708ee4c64 update: mark FlatPark flatpaks as externally managed and drive updates through FlatPark 2026-11-02 17:37:32 -05:00
Dylan M. Taylor ab20d70e38 Add MaterialCraft to the launcher suite (#1162)
* Add MaterialCraft to the launcher suite

* Stage MaterialCraft integration for its first published release

* Fix MaterialCraft website link and installer icon layout
2026-11-02 17:36:42 -05:00
Dylan M. Taylor ec205366eb Release 0.13.0 v0.13.0 2026-11-01 12:28:43 -05:00
Dylan M. Taylor 9a9a1004b4 Add a setting to hide community apps (#1136) 2026-11-01 12:28:36 -05:00
Dylan M. Taylor c3b6a8dfc2 Add TextureCraft to the launcher suite (#1135)
* Add TextureCraft to the launcher suite

* Fix formatting of TextureCraft release fixture test

* Distinguish TextureCraft details headline from its card
2026-11-01 12:22:34 -05:00
ffa3440c15 ci: run the test and web jobs through the shared gate (#1112)
* ci: run the test and web jobs through the shared gate

ci.yml ran its own test (Linux, Windows) and wasm jobs. Both now call craft-common-actions'
gate.yml, as the CI workflow rules ask (storytold/craft-common-actions#118):
- test: `cargo xtask ci` on Linux (fmt, clippy, tests, wasm check); clippy and tests on Windows.
- web: clippy for wasm32 and packaging/web/package.sh with trunk 0.21.14, in its own cache.
The gate saves caches from main only, so pull requests stop writing their own.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* ci: the test gate installs no cargo tools

Nothing in it runs nextest, and installing it fell back to cargo-binstall on both legs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* ci: call the shared gate at main

storytold/craft-common-actions#119 is merged, so main's gate takes an empty packages list.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: FredApps <FredApps@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 10:55:09 +01:00
VoiceLessQ 7eeb66d01f fix(i18n): fill placeholders in one pass (#782) (#1063)
A value holding {other} was expanded again by a later argument. fmt now
walks the template once, so values stay exactly as they came.
2026-11-01 10:54:15 +01:00
VoiceLessQ 82b60070f6 fix(detect): sort MSI entries without a version last (#936) (#1049)
* fix(detect): sort MSI entries without a version last (#936)

msi_installs promised newest first but had the no-version arms swapped,
so an entry without a DisplayVersion came first and .next() took it as
the primary install.

* test(detect): check every arm of newest_first (#936)

The sort in this test never compares None against Some in that order, so flipping that arm still passed.
2026-11-01 10:53:57 +01:00
aiongg ee4985d90d fix(macos): retry stapler validate in verify.sh (#1116)
A dropped connection to Apple's CloudKit ticket lookup (Error 68) failed the release's verify step twice although the DMG was notarized and stapled. package.sh already retries stapler; verify.sh now does the same.
2026-11-01 00:02:40 -04:00
Dylan M. Taylor d4ea71c9fd ci: grant packages: write permission to release workflow v0.12.0 2026-10-31 23:39:30 -04:00
Dylan M. Taylor 12c3a9b203 Release 0.12.0 2026-10-31 23:36:34 -04:00
Dylan M. Taylor c0fd8b06e4 feat: add Craft Anything to the launcher suite (#1113) 2026-10-31 23:32:54 -04:00
d5cef81e61 ci: undo the rust-cache lines #1109 added to ci.yml (#1111)
ci.yml still runs its own jobs, and the CI workflow rules (CLAUDE.md, AGENTS.md) keep additions
out of such files: moving the jobs into craft-common-actions is its own task. #1109 added
prefix-key and save-if to both rust-cache steps; this removes them. The dev profile change from
#1109 stays. The cache churn is raised as storytold/craft-common-actions#118.

Co-authored-by: FredApps <FredApps@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 02:44:24 +01:00
6026920771 ci: only main saves the Rust caches; line-table debug info in dev (#1109)
PR runs saved their own Rust caches (up to 1.2 GB per OS, 7.1 GB in all), which only the PR
can read. With the repository over its 10 GB limit they evicted main's, so Windows legs often
found no cache and compiled every dependency (13 min test build). Only main saves now.

The dev profile drops dependency debug info and keeps line tables for workspace crates, as the
other craft apps do, which shortens Windows links and shrinks the cache. The cache prefix moves
to v1 because rust-cache never resaves an existing key.

Co-authored-by: FredApps <FredApps@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 01:39:02 +01:00
Dylan M. Taylor 48b1a04c18 packaging(flatpak): add OCI image build and GHCR publishing helper (#1104) 2026-10-31 15:43:40 -04:00
Brandon ThomasandClaude Opus 5.5 68eeee97b8 docs: record the Windows antivirus incident from Update all (#1079)
* docs: record the Windows antivirus incident from Update all

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* docs: tighten the incident note's claims and product name

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 02:03:42 -04:00
Brandon ThomasandClaude Opus 5.5 61f54f2739 Release 0.11.1
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
v0.11.1
2026-10-31 01:53:58 -04:00
Dylan M. Taylor f3ac5c265d Revert "feat(install): one permission prompt for an Update all of all-users apps on Windows (#974)" (#1077)
This reverts commit b827fed74a.
2026-10-31 01:31:34 -04:00
Dylan M. Taylor e13bc89e89 Merge pull request #1074 from aiongg/docs-tidy
docs: tidy AGENTS.md, CI comment and attribution
2026-10-31 01:07:01 -04:00
aiongg ff8f098743 docs: tidy AGENTS.md, CI comment and attribution 2026-10-31 04:17:26 +00:00
Brandon ThomasandClaude Opus 5.5 a5ef79f379 Release 0.11.0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
v0.11.0
2026-10-30 23:26:28 -04:00
Dylan M. Taylor 5cd3bacdbe Merge pull request #1072 from VoiceLessQ/fix/main-ci-tests
test: fix the two tests failing on main (#1071, #974)
2026-10-30 23:22:20 -04:00
Dylan M. Taylor 21615e80fc Merge branch 'main' into fix/main-ci-tests 2026-10-30 23:22:00 -04:00
Dylan M. Taylor dce0a77083 Merge pull request #924 from SusieeTheLinuxUser/fix/881-flatpak-user-over-system
Detection: a user Flatpak install is read before a system one (#881)
2026-10-30 23:17:43 -04:00
Dylan M. Taylor 0032247ecc Merge pull request #1073 from storytold/feat/integrate-flatpak-system-update-406
fix(update): integrate system Flatpak self-update (#406)
2026-10-30 23:17:01 -04:00
Dylan M. Taylor 367c35981b test(ui): keep app detection cadence separate 2026-10-30 23:09:52 -04:00
SusieeTheFemboyandClaude Opus 5.5 677b9047ed Detection: a user Flatpak wins over a system one under any app id
packages::find tried each bundle id across every record, so a system
io.tangencylabs.solidcraft beat a user ai.storyteller.solidcraft. Packages now say
whether they're a user install; find looks through the user ones first, current id
first within each scope.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 04:04:02 +01:00
SusieeTheFemboy 55842dd91a Merge remote-tracking branch 'origin/main' into fix/881-flatpak-user-over-system 2026-10-31 04:00:55 +01:00
Dylan M. Taylor 8b9dc209dc fix(update): pin merged Flatpak self-update support 2026-10-30 22:58:06 -04:00
Dylan M. Taylor 93de4a9008 fix(update): use system Flatpak bundle self-update 2026-10-30 22:50:36 -04:00
VoiceLessQ 1f5aed9f66 test(native): a shared call only counts on Linux and Windows
failed_in_shared_call is false on other systems, but the test from #974 expected true everywhere, so the FreeBSD x86_64 job has failed since.
2026-10-31 00:35:26 -02:00
VoiceLessQ c5586148e3 test(ui): the installed-apps rescan still waits five minutes
#1071 moved release checks to twelve minutes and changed this test to match, but detection runs on RESCAN_EVERY in app.rs, a separate timer that stayed at five. The test has failed on main since.
2026-10-31 00:35:26 -02:00
Dylan M. Taylor f74bb9d1a6 AGENTS.md: CI workflows only call craft-common-actions at @main
AGENTS.md (and CLAUDE.md where present) gets a CI workflows section: workflows only call
craft-common-actions at @main, with no other jobs; feature and fix PRs don't touch CI and
link or open a craft-common-actions issue (a PR only for a small fix that is safe for
every app and does not increase CI time); legacy jobs
aren't added to and move only as their own task, staying until a shared workflow runs them.
2026-10-30 22:15:19 -04:00
VoiceLessQ ae5ac6aef7 fix(native): cap a GitHub rate-limit wait at one hour (#782)
An absurd x-ratelimit-reset or retry-after stopped the API until restart
and went to the footer as it came. GitHub's quota refills within the hour.
2026-10-30 22:14:18 -04:00
VoiceLessQ 829e2c49c8 fix(logging): never open a log path that's already there (#782)
The mode only applies to a new file, so a path recreated between rotation
and the open would keep its owner's permissions. create_new refuses it.
2026-10-30 22:13:54 -04:00
VoiceLessQ e673dab14f fix(logging): only the user can read the log file (#782)
The log names the user's folders, so create it with mode 0600 on Unix.
Logs from older runs keep their mode until they rotate out.
2026-10-30 22:13:54 -04:00