Commit Graph
167 Commits
Author SHA1 Message Date
Dylan M. Taylor 23c2b85a4f ci: use StepSecurity's maintained actions (#13337)
Each third-party action that StepSecurity publishes a secure drop-in
replacement for now uses that replacement, pinned to a commit with its
version as a comment. Versions follow what we used: the newest
StepSecurity release in the same major, or the closest major they
publish. dtolnay/rust-toolchain refs that named a toolchain (stable,
nightly, 1.76) become the replacement's `toolchain` input.
2026-11-11 16:02:46 -05:00
Dylan M. Taylor e119384a83 ci: run Harden-Runner on every job (#13255)
Adds step-security/harden-runner (audit, pinned to v2.22.4 like
craft-common-actions) as the first step of each job that did not have it,
so every workflow in the org's public repos reports its egress to
StepSecurity. Audit, not block: block-mode allow lists come from each
job's observed traffic.
2026-11-11 12:12:50 -05:00
Tanish Manku c60c112ac2 Merge pull request #10238 from storytold/dependabot/github_actions/actions-dc8bd9b5cf
ci(deps): bump taiki-e/install-action from 2.87.29 to 2.90.2 in the actions group across 1 directory
2026-11-11 00:13:41 -07:00
Dylan M. Taylor 5d4b68f04c Use craft-heif from craft-libs for HEIC/HEIF (#13076)
* Use craft-heif from craft-libs; remove crates/heif

PhotoCraft's HEIF decoder had drifted from LightCraft's by about 700 lines;
both now use craft-heif (storytold/craft-libs#784), built from LightCraft's
copy. HEIC colours now follow the HEVC VUI's range and matrix and libheif's
chroma upsampling. 8-bit files still open as 8-bit documents; a colour
description the VUI specifies now tags the image as an nclx did.

The codecs -> heif standalone exception ends with the local crate, and the
HEIF nextest step drops -p photocraft-heif, which no longer exists.

* Pin craft-heif to the merge of storytold/craft-libs#794

* heif: count the decoder's 16-bit buffer against max_alloc

* heif: match Apple's chroma upsampling; pin craft-heif to storytold/craft-libs#799

* heif: free the decoder's buffer before the HDR conversion and count that conversion's peak

* heif: hold the canvas the decoder really allocates to max_alloc
2026-11-11 01:59:37 -05:00
Tanish Manku e5cffe2375 Merge pull request #7239 from haranishi/review/packaged-cli-docs-20261018
Linux packages: ship the CLI in source Flatpaks and offline automation guides
2026-11-10 23:58:52 -07:00
dependabot[bot] 1ed433a48f ci(deps): bump taiki-e/install-action
Bumps the actions group with 1 update in the / directory: [taiki-e/install-action](https://github.com/taiki-e/install-action).


Updates `taiki-e/install-action` from 2.87.29 to 2.90.2
- [Release notes](https://github.com/taiki-e/install-action/releases)
- [Changelog](https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/taiki-e/install-action/compare/8cca0918f8471c33515202b73f56ab27f2bed283...3a3daafd3b7f23b8f65d9f5ba2db203fb59b79e2)

---
updated-dependencies:
- dependency-name: taiki-e/install-action
  dependency-version: 2.87.32
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-11-10 11:07:05 +00:00
Martin BallandClaude Opus 5.5 0c628208b5 build(i18n): embed the craft-i18n catalogs pinned in craft-i18n.rev
- `craft-i18n` crate (craft-libs c5a1cbfb, PhotoCraft's existing pin; already in the tree through
  craft-ui) as a ui-egui dependency.
- build.rs writes `CRAFT_I18N` from `CRAFT_I18N_DIR`: one (locale, common.tsv, photocraft.tsv)
  entry per locale with a PhotoCraft catalog, paths written with `{:?}` and never canonicalized.
  Unset: empty, English only; `CRAFT_I18N_REQUIRED=1` makes a missing checkout an error.
- `craft-i18n.rev` pins storytold/craft-i18n 4bafe3ed (the cutover sync of photocraft@848fa30),
  LF through `.gitattributes`.
- Both flatpak manifests fetch craft-i18n at that commit; the source build sets `CRAFT_I18N_DIR`
  and `CRAFT_I18N_REQUIRED=1`. A test keeps both manifests equal to the pin.
- ci.yml: the Windows, without-heif and web jobs check out craft-i18n at the pin, as the shared
  gate and release workflows do; a pin bump selects the web and Windows jobs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-08 16:16:46 +00:00
David Mann 017c4aab9e Merge remote-tracking branch 'origin/main' into HEAD
# Conflicts:
#	docs/scorecard.md
2026-11-06 22:57:46 +01:00
2ff8f419cb ci: run the GPU tests on lavapipe on Linux and fail if they skip (#7975)
The Linux runner has no GPU, so the GPU tests ran on Mesa llvmpipe over
GL, which can't render Rgba32Float: 57 GPU checks (50 GPU parity, 3
canvas, 2 adjustment preview parity, 2 effect-map recovery) returned
early and passed without comparing anything. A new step after Test
installs mesa-vulkan-drivers and runs the nextest `gpu` group on
lavapipe (Vulkan), reusing Test's build, and fails unless the parity
tests report the Vulkan backend and no test printed a skip.

No code change: photocraft's tests take whatever adapter wgpu returns,
software adapters included. Follows the CI half of lightcraft#1148.

Co-authored-by: FredApps <FredApps@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 18:44:13 +01:00
FredApps 7d8648dfcb Copy the shared house rules into AGENTS.md.
The blocks come from craft-contrib at dde09ea31e2e457f5b4653a6e76f7cdf55944bdf. The house-rules workflow checks the copy.
2026-11-06 11:50:05 +01:00
David Mann 66c328dc2b Merge commit '9bef3b2dc8b84c1b6cefc8ce0dc2b01d089cd9e8' into HEAD
# Conflicts:
#	docs/scorecard.md
2026-11-06 02:29:28 +01:00
Luis daa9a01955 Release: refresh contributor credits for each release (#8737) (#11426)
About > Contributors still showed a snapshot from 2026-10-10, because
nothing regenerated contributors/contributors.json before a release.
Opt in to the shared refresh from craft-common-actions: a read-only
credits job regenerates the snapshot for the release commit, and the
shared release workflow installs it before every source build. The
snapshot is not committed back.
2026-11-05 17:23:30 +01:00
Dylan M. Taylor 8e9277e20e Pass the Linux signing key to the release workflow (#11344) 2026-11-04 17:44:58 -05:00
David Mann 4bbe9c78de Merge remote-tracking branch 'origin/main' into HEAD
# Conflicts:
#	docs/scorecard.md
2026-11-03 20:32:22 +01:00
haranishi a156e4f2e3 Merge upstream main into review/packaged-cli-docs-20261018
Main now installs photocraft-cli, its man pages and shell completions, and the
NOTICE files in the Linux packages. Keep those and add what this branch still
provides: the CLI and the two offline automation guides (docs/mcp.md and
docs/control-protocol.md) in the source Flatpak manifest, and the guides in the
package staging directory.
2026-11-03 23:54:18 +09:00
Dylan M. Taylor 05b615fb1b ci: grant packages write permission to release workflow 2026-10-31 23:42:56 -04:00
Dylan M. Taylor 382b047c30 Merge pull request #10223 from FredApps/ci/test-runtime-2026-10-29
test: partition long parity matrices without dropping cases
2026-10-30 07:12:16 -04:00
Dylan M. Taylor 0379569d00 CI: workflows only call craft-common-actions at @main (#10228)
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.

windows-arm64.yml moves from its SHA pin to @main. The pinned revision is on
craft-common-actions main and the workflow (and the actions it calls) is identical
there, so nothing changes in behaviour.
2026-10-29 22:22:28 -04:00
FredApps a4ab4873e8 Merge current main, retain full-sweep and new benchmark inputs 2026-10-30 03:05:00 +01:00
FredApps 4f6ebb1b6e test: partition long parity matrices without dropping cases 2026-10-29 23:23:32 +01:00
David Mann 5dd023f949 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-29 16:45:03 +01:00
FredApps 53dbfe280c Integrate 16 reviewed performance and usability PRs
Includes #8472 #8488 #9461 #9793 #9809 #9813 #9814 #9822 #9826 #9847 #9850 #9852 #9921 #9924 #9961 #10080 at reviewed heads.

Preserves each PR head as a parent. Reconciles CI workflow inputs and benchmark jobs without dropping checks. Excludes #8536 #9825 #9969 #10129. Combined CI pending; no manual validation claimed.
2026-10-29 14:31:15 +01:00
Khawar Zamman Wani fe6b95f172 fix(ci): compare padded mixer benchmark rows 2026-10-28 08:21:22 +05:30
Khawar Zamman Wani 5f03f1424b perf(paint): skip dry mixer canvas sampling 2026-10-28 08:09:49 +05:30
aiongg a9e6f73ac5 Merge remote-tracking branch 'upstream/main' into HEAD 2026-10-28 02:31:52 +00:00
aiongg b8b3586904 ci: use storytold/craft-common-actions at the merged installer-policy commit 2026-10-27 20:51:50 +00:00
David Mann 64550db7c8 Merge remote-tracking branch 'origin/main' into feat/auto-219-8-panel-command-check 2026-10-27 14:13:58 +01:00
Khawar Zamman Wani 47df5dedea perf(paint): cache round-tip geometry per dab 2026-10-27 18:10:05 +05:30
Jeremy bf4e8214fc fix(installer): correct the wizard and shortcut description in the release docs; harden install-policy checks 2026-10-27 12:01:33 +00:00
Jeremy f35b356f87 fix(installer): address scope and ARM64 review feedback 2026-10-27 12:01:33 +00:00
Jeremy c19d201748 feat(installer): default to a per-user ArtCraft folder 2026-10-27 12:01:33 +00:00
Khawar Zamman Wani 8324e278a1 perf(selection): combine GRAY8 masks directly in tiles 2026-10-27 12:42:18 +05:30
Khawar Zamman Wani 32e166b720 perf(selection): scope Color Range sampling to active bounds 2026-10-27 12:37:05 +05:30
aiongg a27436adcb Merge main into perf/selection-morphology
Resolves the move of crates/engine/src/selection_cmds.rs to cmd/selection_cmds.rs: the two hunks apply at the new path, and modify_window.rs with its tests moves under cmd/selection_cmds/.
2026-10-27 04:27:45 +00:00
David MannandClaude Opus 5.5 523c2cc8d3 Merge main into feat/auto-219-8-panel-command-check
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 03:08:53 +01:00
skylar ddf9ca1e2d ci: require nextest 0.9.150
Use the fixed release for GHSA-vc25-qg58-w57c.
2026-10-26 14:13:00 -06:00
Khawar Zamman Wani 9282b12257 ci: run the GPU performance suite on its macOS runner class 2026-10-26 19:05:27 +05:30
Khawar Zamman Wani be43268ffa perf: crop Modify command mask conversion and selection replacement 2026-10-26 19:02:43 +05:30
Khawar Zamman Wani d781e3ae09 ci: install native dependencies for the quick performance suite 2026-10-26 18:34:50 +05:30
Khawar Zamman Wani 4244ec2b9e perf: crop selection morphology and bound small-radius distances 2026-10-26 18:33:35 +05:30
skylar taylor-barrick 819d863c4e ci: restore craft-common-actions tracking main 2026-10-26 04:27:36 +01:00
skylar taylor-barrick 1a67881144 Use reviewed optional-font coverage setup 2026-10-26 00:56:36 +01:00
skylar taylor-barrick bae0b9d290 Pin coverage workflow with immutable nested actions 2026-10-26 00:32:24 +01:00
skylar taylor-barrick 03993b949f Supply pinned fonts throughout instrumented coverage 2026-10-26 00:21:34 +01:00
Brennan Stehling 9010154943 docs: record a perf baseline from several nightly runs (#7494) 2026-10-25 16:04:30 -07:00
skylartaylor f632ef06cb Validate selected font faces before registration 2026-10-25 22:35:20 +01:00
skylartaylor 6f6e0d1793 Reconcile migration review fixes with published PhotoCraft changes 2026-10-25 20:07:13 +01:00
5c9192bbe2 Migrate PhotoCraft to egui 0.37 (#9363)
* egui037: name each control for what it sets, and order the eager fonts for the UI

CodeRabbit review follow-ups on the migration: the Artboard X/Y fields, the CAF
dropdowns, the channel Solidity field, the GPU backend/adapter dropdowns, the
corner radius fields and the canvas extension colour all had an accessible name
that named another control (or was shared by four). The eager craft-fonts
registration now puts the UI Japanese face first, as the lazy loader does, so
Japanese UI is not drawn in the manifest's Mincho face and shared Han characters
do not take Japanese forms.

Generated with Codebuff
Co-Authored-By: Codebuff <noreply@codebuff.com>

* egui037: rustfmt the eager craft-font order

---------

Co-authored-by: Dylan M. Taylor <dylan@dylanmtaylor.com>
Co-authored-by: Codebuff <noreply@codebuff.com>
2026-10-25 15:04:35 -04:00
Dylan M. Taylor b1f73ab821 Merge origin/main into the egui 0.37 migration
Reconcile 39 upstream commits: keep main's off-menu gallery zoom, folder-field
picker and Transform edit tolerance while keeping the migration's accessible
names, and use Id::unique for the ids main added.

The Windows legs build with the suite's craft-fonts input: the runner has no
Japanese or Simplified Chinese system font, and egui 0.37 panics on a missing
glyph, which failed the localized UI tests. The background-redraw test now
holds the worker after its first batch, so an edit during a redraw cannot lose
the race on a fast machine.

Generated with Codebuff
Co-Authored-By: Codebuff <noreply@codebuff.com>
2026-10-25 14:33:46 -04:00
Dylan M. Taylor 122e368c7b Merge pull request #8979 from storytold/dependabot/github_actions/actions-7bbd92ab7f
ci(deps): bump the actions group across 1 directory with 3 updates
2026-10-25 12:30:21 -04:00