Commit Graph
437 Commits
Author SHA1 Message Date
aiongg e05c4f7e7c Merge track r3-t08
# Conflicts:
#	crates/meta/README.md
#	crates/ui-egui/locales/cs.json
#	crates/ui-egui/locales/de.json
#	crates/ui-egui/locales/es.json
#	crates/ui-egui/locales/fi.json
#	crates/ui-egui/locales/fr.json
#	crates/ui-egui/locales/id-formats.json
#	crates/ui-egui/locales/id.json
#	crates/ui-egui/locales/it.json
#	crates/ui-egui/locales/ja.json
#	crates/ui-egui/locales/ka-formats.json
#	crates/ui-egui/locales/ka.json
#	crates/ui-egui/locales/pl.json
#	crates/ui-egui/locales/pt-br.json
#	crates/ui-egui/locales/ru.json
#	crates/ui-egui/locales/sv-formats.json
#	crates/ui-egui/locales/sv.json
#	crates/ui-egui/locales/uk.json
#	crates/ui-egui/locales/vi.json
#	crates/ui-egui/locales/zh-hans.json
#	crates/ui-egui/locales/zh-hant.json
#	crates/ui-egui/src/panels/grid.rs
#	crates/ui-egui/tests/it/main.rs
#	docs/gaps.md
#	docs/library-shortcuts.md
#	docs/parity-checklist.md
#	docs/raw-parity.md
#	docs/user/guides/export-photos.md
#	docs/whats-new.md
2026-10-31 02:31:16 +00:00
aiongg 8415fd6a90 Merge track r3-t06
# Conflicts:
#	docs/parity-checklist.md
#	docs/whats-new.md
2026-10-31 02:30:12 +00:00
aiongg 057ef1fd27 Integration: #3006 use binary() in the non-finite --set test 2026-10-31 02:17:56 +00:00
aiongg d8f45ed5a5 Merge PR #3322: LRC-LIB-CATALOG-SWITCH: a library missing at launch is reported instead of being made anew with demo photos
docs/parity-checklist.md: the PR's edit to the LRC-LIB-CATALOG-SWITCH row applied to main's row.
docs/whats-new.md: the PR's 2026-10-29 section added above main's sections.
2026-10-31 02:11:23 +00:00
aiongg 9d4de0518a Merge PR #2979: LRC-LIB-CATALOG-SWITCH: a library's catalog.snap or folder given at launch opens that library
docs/parity-checklist.md: header keeps main's newer date plus the PR's item; revision rows union.
2026-10-31 02:10:05 +00:00
aiongg b7970ca840 Merge PR #3295: MENU-BAR: merge the native menu's identical quit/about/settings branches (clippy::if_same_then_else) 2026-10-31 02:09:13 +00:00
aiongg 9f587f69d8 Merge PR #3220: MENU-HELP-HELP: on macOS the Help menu is registered with AppKit after the menu bar is installed
Conflicts: apps/lightcraft/src/native_menu.rs (both added lines kept: RowIds and help_menu), docs unioned
2026-10-31 02:08:47 +00:00
aiongg 42fbec83dc Merge PR #2725: LRC-LIB-CATALOG-LOCK: quitting on macOS removes the lock's owner note 2026-10-31 02:08:09 +00:00
aiongg 21a57ff79a Merge PR #3196: MENU-BAR: the macOS menu bar keeps every row when two rows run the same command
Conflicts: docs/whats-new.md (both entries kept), docs/parity-checklist.md (header change list and revision rows unioned)
2026-10-31 02:07:56 +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
Brandon Thomas c1fb95dfc0 Merge PR #3225 2026-10-30 15:24:30 -04: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 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
Bruno-Alumn a48449a527 LRC-LIB-CATALOG-SWITCH: a remembered library that can't be read is reported as unreadable, and why it's missing is translated (#3239)
The reasons Try Again and the launch check give for a missing remembered library are now in the
interface language (all 17 catalogs). A folder that can't be looked into (no permission, a share
that timed out) is no longer called gone: lightcraft_engine::library::library_state tells a missing
catalog from a failed lookup, and the window shows the system's reason.
2026-10-30 02:09:20 +01:00
Bruno-Alumn 72c44530ef LRC-LIB-CATALOG-SWITCH: Try Again on a missing remembered library makes none in an empty folder (#3239) 2026-10-29 23:01:22 +01:00
Bruno-Alumn 8ca7280e2b LRC-LIB-CATALOG-SWITCH: a library missing at launch is reported instead of being made anew with demo photos (#3239)
When the library last opened was missing at launch (its drive or network share not connected yet, or moved), LightCraft created an empty library at that path, seeded it with the demo photos and opened it. The launch plan now marks the library remembered in Settings, and when it holds no library the session opens nothing and the can't-open window offers Try Again, Choose Another Library, Continue Without Saving and Quit. The default location, --library and LIGHTCRAFT_LIBRARY are still created when missing, as before.
2026-10-29 14:53:12 +01:00
OneSlipsandClaude Opus 5.5 da65a3f118 LRC-LIB-CATALOG-SWITCH: the launch arguments' library checks share one deadline
Each argument's check had its own 2 s, so several paths on a dead mount could hold the window back
2 s each. `launch_imports_in` now takes one `launch_deadline()` for the whole batch and checks each
argument with `launch_path_until`; once it has passed, an argument is imported without the check.
Test: a past deadline imports a library folder at once, without probing it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 13:42:33 +10:00
Brain WangandClaude Sonnet 5.5 87bba4ec28 MENU-BAR: merge the native menu's identical quit/about/settings branches (clippy::if_same_then_else)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-29 09:58:40 +08:00
Dylan M. Taylor f6489e60d8 refactor(lightcraft): import prefs and GPU crash names explicitly 2026-10-28 03:25:18 +00:00
Nathaniel Ledford e60b7d1787 MENU-EDIT-SELECTNONE: Edit lists Select Only Active Photo and Paste Settings from Previous with their kin, and the native Edit menu keeps single separators 2026-10-27 22:50:05 -04:00
Nathaniel Ledford 9fabf58cf3 MENU-HELP-HELP: on macOS the Help menu is registered with AppKit after the menu bar is installed 2026-10-27 21:17:14 -04:00
Nathaniel Ledford 2deaa50b9e MENU-BAR: run the native menu's per-frame sync on stand-ins and test it with rows that share a command 2026-10-27 20:46:46 -04:00
Dominic Anaeto 3d357617c4 CLI: cover invalid Windows arguments 2026-10-27 18:05:24 -04:00
Nathaniel Ledford ebfd198ea0 MENU-BAR: give each native menu row its own id so repeated commands keep their rows and labels 2026-10-27 16:57:12 -04:00
OneSlipsandClaude Opus 5.5 77829547d2 LRC-LIB-CATALOG-SWITCH: merge main (upstream file split)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 03:58:16 +10:00
Dominic Anaeto a55218d221 CLI: select each imported photo once 2026-10-27 11:12:10 -04:00
Nathaniel Ledford 2d6126396b LRC-LIB-CATALOG-LOCK: quitting on macOS releases the library lock, so catalog.lock.owner is removed 2026-10-27 07:26:30 -04:00
dotCooCoo d826e79fa2 Skip offscreen Local rows and share hidden-folder checks
Reuse cached folder listings through Arc and allow tests to inject Local places.
Show browsed folders below hidden ancestors as session roots. Apply the same
hidden-entry checks to folder walks, browsing, import scanning, and Local.
2026-10-26 22:36:11 -07:00
Dominic Anaeto 939055897f LC-003: reject non-UTF-8 CLI arguments cleanly 2026-10-26 23:05:54 -04:00
Dominic Anaeto b576c72d0b LC-002: reject invalid script parameters 2026-10-26 22:59:44 -04:00
Dominic Anaeto 05ff4ca06d LC-001: stop commands after failed imports 2026-10-26 22:59:41 -04:00
skylar taylor-barrick 662df66f1c Preserve queued file drops across dialogs and restore Flatpak sources (#2975) 2026-10-27 03:50:41 +01:00
aiongg 2e5597d48a refactor(lightcraft): split main.rs into crate-root modules 2026-10-26 21:39:56 +00:00
aiongg d151df0149 style: cargo fmt the moved test modules 2026-10-26 18:30:36 +00:00
aiongg ebff40bbd0 refactor(lightcraft): move logging.rs tests to apps/lightcraft/src/logging/tests.rs 2026-10-26 18:16:10 +00:00
aiongg 4e57c3b99a refactor(lightcraft): move main.rs tests to apps/lightcraft/src/tests.rs 2026-10-26 18:16:10 +00:00
aiongg 567e7f1126 test: scan source directories recursively
xtask parity reads the UI command tables from menus.rs and every file under menus/, and the desktop app's dialog-filter test checks every source file under src/, so both keep finding their items after files move into subdirectories.
2026-10-26 18:01:09 +00:00
Chad ElliottandClaude Opus 5.5 0a76419c4e fix(mcp): #3069 resend a request that crossed the app's idle-close notice
A request sent just as the app expires an idle control connection crosses
the app's id-less idle-close notice: the client's pre-send check saw an
open connection, wrote the request, and read the notice as its reply, so
`--connect` and the MCP server failed a command the app never read.

The app reads nothing after its idle timeout, so such a request never ran.
The app now marks the notice `"closed": "idle"`, and `Remote::call` sends
a request whose reply is that notice once more on a new connection (it
also matches the notice's exact text, for apps from before the marker).
At most one resend per call, whatever the reason; a reply with an id or
any other error is returned as before.

`idle_close_reconnects_without_replaying_a_command` now forces both
orders (notice before the next request, and a request crossing it)
instead of racing the notice; with main's client it fails every run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 11:08:24 -05:00
OneSlips 69ac0d23ce Merge remote-tracking branch 'origin/main' into pr/launch-opens-library
# Conflicts:
#	docs/parity-checklist.md
2026-10-26 13:37:19 +10:00
aiongg 1952d4fd3c Merge upstream main into docking-adoption 2026-10-26 02:18:38 +00:00
OneSlips cc4c6cc2c1 Merge remote-tracking branch 'origin/main' into pr/launch-opens-library 2026-10-26 12:16:27 +10:00
OneSlipsandClaude Opus 5.5 247dbcfdce LRC-LIB-CATALOG-SWITCH: --library and LIGHTCRAFT_LIBRARY win over a library given as an argument
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 12:16:25 +10:00