Commit Graph
4193 Commits
Author SHA1 Message Date
aiongg e595d9de5e Merge PR #3408: Control: pointer and scroll gestures refuse numbers past any screen instead of queueing NaN positions
docs/whats-new.md: both entries kept, newest first.
2026-10-31 02:07:04 +00:00
aiongg d082540e47 Merge PR #3309: Reject malformed base64 in MCP and segmask decoders 2026-10-31 02:06:54 +00:00
aiongg 356cd48f93 Merge PR #3296: Issue #3293: README no longer lists an MCP mask helper 2026-10-31 02:06:54 +00:00
aiongg 7e68f1a31e Merge PR #3124: LC-003: reject non-Unicode CLI arguments without panicking 2026-10-31 02:06:54 +00:00
aiongg b1f3e00f3c Merge PR #3123: LC-001: stop commands after failed imports 2026-10-31 02:06:53 +00:00
aiongg 328e42373c Merge PR #3122: LC-002: reject non-object script parameters 2026-10-31 02:06:53 +00:00
aiongg 15a046c537 Merge PR #3098: Issue #3070: the CLI's refused-connection tests use a free port, not 18437 2026-10-31 02:06:53 +00:00
aiongg bc36137608 Merge PR #3076: Issue #3069: --connect resends a command that crossed the app's idle-close notice 2026-10-31 02:06:53 +00:00
aiongg 6ad10a6bf4 Merge PR #3006: CLI-HOSTILE: render --set refuses inf / NaN instead of dropping the value 2026-10-31 02:06:53 +00:00
aiongg 035564c828 Merge PR #2963: Accept a UTF-8 BOM at the start of lightcraft-cli --script files 2026-10-31 02:06:52 +00:00
aiongg 2201129a72 Merge PR #2723: Control port: close gracefully so the client reads its last reply (Windows reset) 2026-10-31 02:06:52 +00:00
aiongg aa5eef80a4 Merge PR #2632: MCP: render and screenshot PNGs go through a private temp folder (#2573) 2026-10-31 02:06:52 +00:00
aiongg 108ae25169 Merge PR #2629: LRC-LIB-MISSING: library.missing from the control channel checks the files off the UI thread
docs/parity-checklist.md: header keeps the newer date with both change notes; revision rows are the union.
2026-10-31 02:06:48 +00:00
Dylan M. Taylor c9808c2291 fix(flatpak): allow reading launcher version pins (#3420)
* fix(flatpak): allow reading launcher version pins

* fix(flatpak): allow reading launcher version pins
2026-10-30 20:06:01 -04:00
Brandon Thomas 8aabf61449 Merge PR: integration batch 45 (17 community PRs)
Integration batch 45 (17 community PRs)
2026-10-30 15:57:58 -04:00
Brandon Thomas c7d7d3c0fd Merge PR #2540 (maintainer follow-up) 2026-10-30 15:26:31 -04:00
Brandon ThomasandClaude Opus 5.5 831d724b87 Reject .cube data lines that start with nan or inf
A data line such as `nan 0 0` starts with a letter and was skipped as an
unknown keyword, so a file with enough other entries still parsed.
(CodeRabbit review on #2540.)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 15:26:29 -04:00
Brandon Thomas b854bbb94e Merge PR #2835 2026-10-30 15:24:59 -04:00
Brandon Thomas ac4a98bc2d Merge PR #3147 2026-10-30 15:24:59 -04:00
Brandon Thomas cfdf63c6e4 Merge PR #2917
# Conflicts:
#	docs/parity-checklist.md
#	docs/whats-new.md
2026-10-30 15:24:59 -04:00
Brandon Thomas 13711ace2b Merge PR #2155 2026-10-30 15:24:41 -04:00
Brandon Thomas 7e8bf5cd9e Merge PR #2831 2026-10-30 15:24:41 -04:00
Brandon Thomas ddbc218ad1 Merge PR #3213
# Conflicts:
#	docs/parity-checklist.md
2026-10-30 15:24:40 -04:00
Brandon Thomas c1fb95dfc0 Merge PR #3225 2026-10-30 15:24:30 -04:00
Brandon Thomas a0133db92e Merge PR #3038 2026-10-30 15:24:30 -04:00
Brandon Thomas 273e9078de Merge PR #2969 2026-10-30 15:24:30 -04:00
Brandon Thomas 5693a3aeaa Merge PR #2540 2026-10-30 15:24:30 -04:00
Brandon Thomas bdb146be43 Merge PR #2833 2026-10-30 15:24:30 -04:00
Brandon Thomas ef83f30327 Merge PR #2834 2026-10-30 15:24:30 -04:00
Brandon Thomas 19eb08dc25 Merge PR #2909 2026-10-30 15:24:30 -04:00
Brandon Thomas b7c52c5032 Merge PR #2918 2026-10-30 15:24:30 -04:00
Brandon Thomas 181a580579 Merge PR #3366 2026-10-30 15:24:30 -04:00
Brandon Thomas 9140e8cd38 Merge PR #3267 2026-10-30 15:24:30 -04:00
Brandon Thomas a5721dedfd Merge PR #3314 2026-10-30 15:24:30 -04:00
Bruno-Alumn 8d256db7a0 Gesture numbers are checked when the request is admitted, before it waits for a layout 2026-10-30 20:14:15 +01:00
Bruno-Alumn 7283694154 Control: pointer and scroll gestures refuse numbers past any screen instead of queueing NaN positions 2026-10-30 19:51:48 +01:00
Chad ElliottandClaude Opus 5.5 e407ed0e3d test(cli): #3070 the tests that release an ephemeral port before use take turns
unused_port() lets its port go before the CLI connects, and the denoise-serve test
does the same before starting its server: with several test threads the server could
start on a port a refused-connection test had picked, which then reached it instead
of being refused. The three tests now hold one lock for their whole run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 13:02:10 -05:00
Chad ElliottandClaude Opus 5.5 54193e7cb8 test(cli): #3070 refused-connection tests use a free port, not 18437
The `--connect` failure-hint tests connected to 127.0.0.1:18437 and assumed
nothing listened there, but agents give their apps' control servers ports in
18000-19999. With an app on 18437 the tests sent it `ui.inspect` and failed.
They now bind 127.0.0.1:0, drop the listener and use that port, and check the
`--control <port>` hint against it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 13:02:10 -05:00
Dylan M. Taylor 5194cc20de UPD.1: honor pretend versions and track the updater icon in CI (#3365) 2026-10-30 09:02:24 -04:00
Max MittelstädtandGPT-6-Luna b25808686d Reject mismatched XML closing tags
Found while testing crates/lensdb/src/xml.rs:77

Co-Authored-By: GPT-6-Luna <noreply@openai.com>
2026-10-30 06:10:13 +00:00
Dylan M. Taylor 445dd3106e Update prompt shows the app icon and accent color instead of a letter (#3362)
UPDATE_APP (native builds; craft-update is a native-only dependency) carries our 128 px icon and accent (#f2a516, its colour in ArtCraft Launcher). The updater, the self-update
helper and craft-update's startup prompt all get them through crate::UPDATE_APP; the
prompt draws the icon, the accent and "by ArtCraft" (craft-update's default developer).

craft-update is pinned to storytold/craft-libs main at 1065653e7 (#434).
Clippy fixes for Rust 1.99 in untouched code (same logic):
- crates/engine/src/cmd/export.rs
- crates/ui-egui/src/dialogs/rules_editor/rules_move.rs
- crates/ui-egui/src/panels/detail.rs
2026-10-30 01:27:49 -04:00
Dylan M. Taylor b2d89895ad CI: workflows only call craft-common-actions at @main (#3356)
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:36:34 -04:00
Dylan M. Taylor 260d797acc deps: bump tar, zip, roxmltree, rustls-webpki and symphonia to their latest versions (#3358)
- `rustls-webpki`: 0.102.8, 0.103.15 → 0.102.8, 0.103.16
- `zip`: 7.2.0, 9.1.0 → 7.4.0, 9.1.3

Lockfile only.
2026-10-29 22:21:27 -04:00
NetterSilverandClaude Haiku 5.5 bdf535e954 Reject malformed base64 in MCP and segmask decoders
Found while testing crates/mcp/src/base64.rs:20 (base64_decode)

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-29 12:42:30 +00:00
Chad ElliottandClaude Opus 5.5 40c3a09dec docs(readme): recover a Windows update that fails with 1612/1714/1603
The old version's cached installer is missing, so Windows cannot remove it.
Re-caching it with msiexec /fv on the same-version MSI fixes both updating
and uninstalling (reproduced and verified on Windows 11, #3254).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 02:45:12 -05:00
Brain WangandClaude Sonnet 5.5 f87e38efb5 Issue #3293: README no longer lists an MCP mask helper; masks go through run_command
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-29 10:08:26 +08:00
Dylan M. Taylor 77c0a6adfa Honor CARGO_BUILD_TARGET in FreeBSD packaging for aarch64 release builds (#3275)
* Honor CARGO_BUILD_TARGET in FreeBSD packaging for aarch64 release builds

package.sh always built for the host and took the arch from uname -m, so a
cross build (aarch64 in an x86_64 FreeBSD VM) would read the wrong target
directory and name the archive after the VM. With CARGO_BUILD_TARGET set,
pass it to cargo, read target/<triple>/release, and take the arch from the
target. Unset keeps the old behavior.

* Reject unknown CARGO_BUILD_TARGET in FreeBSD packaging

Only the two FreeBSD triples are packaged. Any other target now fails before the
build instead of being labelled x86_64.

* Skip the --version smoke run for cross-built FreeBSD packages

A binary built for another target cannot run on the build host, so under set -e
the run would fail the release after the archive is written.
2026-10-28 15:48:43 -04:00
radialmonsterandClaude Opus 5.5 6188590675 Docs: link gap 8 and roadmap priority 7 to lens profile issue #329
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014ti8KemZbjE2ZgHgV1q1BM
2026-10-28 13:58:49 -04:00
radialmonsterandClaude Opus 5.5 20c1f3c057 raw: test the grey JPEG XL restore through decode
The existing synthetic lossy RGB fixture tiles are re-declared grey by a
header edit (colour space RGB to Grey, dropping the 6-bit primaries field
a grey encoding does not carry, per the ColourEncoding bundle). Their XYB
frame data is unchanged, so they decode as one grey plane whose rendered
channels differ. The test checks decode against the gradient's BT.2100
luminance in the linear and sRGB curves.

Refs #275

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014ti8KemZbjE2ZgHgV1q1BM
2026-10-28 13:44:42 -04:00
radialmonsterandClaude Opus 5.5 953c4ee5fc raw: decode lossy single-plane (grey) JPEG XL tiles in LinearRaw DNGs
Lightroom Classic's HDR and panorama merges of monochrome raws store a
one-plane LinearRaw image as lossy (XYB) JPEG XL tiles whose codestream
declares a grey colour encoding (16-bit float with a linear curve, or
16-bit integer with the sRGB curve). Those were refused as "lossy JPEG XL
tile with a single colour plane", so the files opened preview-only.

A lossy grey tile is still coded as three XYB channels. It is now
restored like the RGB case: jxl-oxide renders linear sRGB (never the
declared encoding, which would clip), the single plane is the luminance
(CIE Y, D65) of that, then the declared transfer curve is applied.
One plane must be declared grey and three RGB; HDR curves, other white
points and intensity targets above 255 stay unsupported.

RENDER_CACHE_VERSION 70 -> 71: files that showed their embedded preview
before render from raw data now, under the same content key.

Refs #275

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014ti8KemZbjE2ZgHgV1q1BM
2026-10-28 13:44:42 -04:00