skylar taylor-barrick
2218d97e89
Merge pull request #2199 from skylartaylor/open-original-media-gate
...
Open Original: only file types LightCraft reads reach the system opener
2026-10-17 17:07:18 -06:00
skylar taylor-barrick and Claude
d54673bb95
#2135 : only file types LightCraft reads reach the system opener
...
Photo ▸ Edit In ▸ Open Original in Other Editor handed a photo's stored path
straight to `open` / `xdg-open` / `explorer.exe`, with `Path::is_file()` as the
only check, and Lightroom catalog import kept original paths exactly as the
catalog had them. A crafted `.lrcat` could therefore put `payload.exe`,
`start.lnk`, `run.bat`, `page.hta`, `Evil.app` or `go.command` into the library
and have it run on one user click.
- `lightcraft_engine::open_path`: one gate for every path that leaves
LightCraft for the OS. The extension must be one LightCraft reads
(`import::EXTENSIONS`, which already covers the Edit In copy formats
`tif`/`tiff`/`psd`), it must be a regular file (so a `.app` bundle and any
other folder are out), what a link resolves to must be a read type too, and
what is handed over is the absolute path. A refusal is the sentence shown to
the user.
- Open Original and Edit In go through it; a refused photo is listed in
`skipped` with the reason, and the menu item is greyed out for a record that
can never be opened (extension only, so no disk or share is touched while a
menu is drawn).
- `lightroom_catalog::refuse_non_media` drops such images where the catalog is
read and again where its photos become records, with a warning each, so a
refused entry never becomes an openable library record. A virtual copy of a
refused original goes with it.
Tests: a catalog naming a program (and a virtual copy of it) imports neither
while the catalog's real photos do; a library record naming a program is never
handed to the stub launcher, which records no invocation, and a program
selected beside a photo leaves only the photo, by absolute path. Both fail
before this change.
Co-Authored-By: Claude <noreply@anthropic.com >
2026-10-17 10:18:47 -06:00
aiongg
346681561a
Lightroom import: follow catalog paths only on this computer or the catalog's share
2026-10-16 17:44:52 +00:00
Brandon Thomas
5e9f7f1a65
Merge PR #1027 (rebased)
...
# Conflicts:
# ROADMAP.md
# docs/gaps.md
# docs/parity-checklist.md
# docs/target-app-parity.md
2026-10-15 03:40:37 -04:00
Brandon Thomas
9ddb8d1824
Merge PR #1663 (rebased)
...
# Conflicts:
# crates/ui-egui/locales/de.json
# crates/ui-egui/locales/es.json
# crates/ui-egui/locales/fr.json
# crates/ui-egui/locales/ja.json
# crates/ui-egui/locales/pt-br.json
# crates/ui-egui/locales/ru.json
# crates/ui-egui/locales/uk.json
# crates/ui-egui/locales/zh-hans.json
# crates/ui-egui/locales/zh-hant.json
2026-10-15 03:40:17 -04:00
Brandon Thomas and Claude Opus 5.5
1d7699056e
Merge PR #1027
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 03:36:18 -04:00
Brandon Thomas and Claude Opus 5.5
2179473536
Merge PR #1663
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 03:24:51 -04:00
Brandon Thomas and Claude Opus 5.5
a22f9a6d46
Batch 39: hang guards of the slideshow PDF export and slow-import tests allow a loaded machine (both pass in seconds alone)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 02:51:35 -04:00
Brandon Thomas and Claude Opus 5.5
51d8018e27
Merge PR #1823 (rebased)
...
Georgian next to Italian in the language table, menus, catalogs list and docs; ka-formats.json lists the format
strings other PRs added, in English until translated.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 02:39:01 -04:00
Brandon Thomas and Claude Opus 5.5
f0b5f0339a
Batch 39: #1474 's hint test expects the value hint #1604 gave the scrubbable value
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 02:38:20 -04:00
Brandon Thomas
88ca6ed572
Merge PR #1474 (rebased)
...
# Conflicts:
# crates/ui-egui/src/widgets.rs
# docs/parity-checklist.md
# docs/whats-new.md
2026-10-15 02:32:41 -04:00
Brandon Thomas
780872b158
Merge PR #1604 (rebased)
...
# Conflicts:
# docs/parity-checklist.md
2026-10-15 02:32:16 -04:00
Brandon Thomas
809259a37d
Merge PR #1829 (rebased)
...
# Conflicts:
# docs/parity-checklist.md
# docs/whats-new.md
2026-10-15 02:32:15 -04:00
Brandon Thomas and Claude Opus 5.5
bc39923608
Merge PR #1604
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 02:28:24 -04:00
Brandon Thomas and Claude Opus 5.5
d9ed118c1d
Merge PR #1474
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 02:13:45 -04:00
Brandon Thomas and Claude Opus 5.5
a39e85da72
Merge PR #1829
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 02:00:02 -04:00
Brandon Thomas and Claude Opus 5.5
73ee54fe62
Batch 38: format catalogs list the strings this batch adds, in English until translated
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 01:48:46 -04:00
Brandon Thomas
11351ef141
Merge PR #1834 (rebased)
...
# Conflicts:
# crates/ui-egui/locales/cs-formats.json
# crates/ui-egui/locales/pl-formats.json
# crates/ui-egui/src/lib.rs
2026-10-15 01:48:46 -04:00
Brandon Thomas and Claude Opus 5.5
202fcbb525
Merge PR #1823
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 01:48:43 -04:00
Brandon Thomas
e4519aa710
Merge PR #1487 (rebased)
...
# Conflicts:
# docs/parity-checklist.md
2026-10-15 01:43:02 -04:00
Brandon Thomas and Claude Opus 5.5
b5733c7649
Merge PR #1487
...
Resolved against rb-base-36: Scanned keeps the base's rewrite flag next to magic and tag; Exif keeps the Panasonic lens fallback; locale catalogs merged (one duplicate key dropped).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 01:42:11 -04:00
Brandon Thomas and Claude Opus 5.5
b00d7c0267
Batch 37: the contact-sheet export test's deadline is a hang guard (it queues behind other tests' demo scenes)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 01:33:01 -04:00
Brandon Thomas and Claude Opus 5.5
dec7fd4eb2
Merge PR #1834
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 01:26:47 -04:00
Brandon Thomas and Claude Opus 5.5
e5cc449bd1
Batch 37: the contact-sheet export and batch-merge tests wait longer on a busy machine (they pass alone, timed out under the full test run)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 01:10:07 -04:00
Brandon Thomas
fbb9583d41
Merge PR #1810 (rebased)
...
# Conflicts:
# docs/whats-new.md
2026-10-15 00:56:51 -04:00
Brandon Thomas and Claude Opus 5.5
3c489dc408
Batch 37: the print commands ( #1215 ) take the Result that Session::targets returns since #1773
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 00:56:44 -04:00
Brandon Thomas and Claude Opus 5.5
4468917a1b
Merge PR #1810
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 00:54:13 -04:00
Brandon Thomas and Claude Opus 5.5
60b938ab52
Batch 37: format catalogs list the strings this batch adds, in English until translated
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 00:53:53 -04:00
Brandon Thomas
3b6d15355b
Merge PR #1298 (rebased)
...
# Conflicts:
# crates/ui-egui/src/panels/dialogs.rs
2026-10-15 00:53:53 -04:00
Brandon Thomas
9ca113defa
Merge PR #1135 (rebased)
...
# Conflicts:
# xtask/src/main.rs
2026-10-15 00:53:45 -04:00
Brandon Thomas
02000d98a4
Merge PR #1198 (rebased)
...
# Conflicts:
# crates/ui-egui/src/panels/keyword_list.rs
2026-10-15 00:52:53 -04:00
Brandon Thomas
b3012745d5
Merge PR #1215 (rebased)
...
# Conflicts:
# docs/gaps.md
# docs/parity-checklist.md
2026-10-15 00:52:31 -04:00
Brandon Thomas
8b73a2ec2f
Merge PR #1138 (rebased)
...
# Conflicts:
# docs/gaps.md
2026-10-15 00:52:30 -04:00
Brandon Thomas
05aa012f37
Merge PR #1802 (rebased)
...
# Conflicts:
# docs/whats-new.md
2026-10-15 00:52:30 -04:00
Brandon Thomas
a690478e52
Merge PR #1773 (rebased)
...
# Conflicts:
# docs/whats-new.md
2026-10-15 00:52:29 -04:00
Brandon Thomas
2f58918162
Merge PR #1762 (rebased)
...
# Conflicts:
# crates/ui-egui/src/lib.rs
2026-10-15 00:52:29 -04:00
Brandon Thomas
7c5f36bd8c
Merge PR #1761 (rebased)
...
# Conflicts:
# docs/whats-new.md
2026-10-15 00:52:29 -04:00
Brandon Thomas
30168d759d
Merge PR #1755 (rebased)
2026-10-15 00:52:28 -04:00
Brandon Thomas
bc7abfae14
Merge PR #1708 (rebased)
2026-10-15 00:52:28 -04:00
Brandon Thomas and Claude Opus 5.5
81a9569301
Batch 36: rustfmt after merging #1802
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 00:42:56 -04:00
Brandon Thomas and Claude Opus 5.5
1e49095146
Merge PR #1802
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 00:42:40 -04:00
Brandon Thomas and Claude Opus 5.5
2475cf5e32
Merge PR #1773
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 00:31:26 -04:00
Brandon Thomas
ab96593df5
Merge PR #1298
...
# Conflicts:
# crates/ui-egui/locales/de.json
# crates/ui-egui/locales/es.json
# crates/ui-egui/locales/fr.json
# crates/ui-egui/locales/pt-br.json
# crates/ui-egui/locales/ru.json
# crates/ui-egui/locales/uk.json
# crates/ui-egui/src/panels/dialogs.rs
# crates/ui-egui/src/panels/faces.rs
# crates/ui-egui/src/shortcuts.rs
2026-10-15 00:29:27 -04:00
Brandon Thomas
b29a1a8cc2
Merge PR #1215
...
# Conflicts:
# crates/engine/src/lib.rs
# crates/engine/src/pdf.rs
# crates/ui-egui/src/lib.rs
# crates/ui-egui/src/menus.rs
# crates/ui-egui/src/panels/dialogs.rs
# crates/ui-egui/src/state.rs
# docs/gaps.md
# docs/parity-checklist.md
2026-10-15 00:22:08 -04:00
Brandon Thomas and Claude Opus 5.5
b333199eb1
Merge PR #1762
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 00:09:51 -04:00
Brandon Thomas
57503c9a4e
Merge PR #1198
...
# Conflicts:
# ROADMAP.md
# assets/ATTRIBUTION.md
# crates/ui-egui/src/i18n.rs
# crates/ui-egui/src/menus.rs
# crates/ui-egui/src/panels/keyword_list.rs
# crates/ui-egui/src/panels/settings.rs
# docs/localization-parity.md
# docs/localization.md
2026-10-15 00:04:52 -04:00
Brandon Thomas and Claude Opus 5.5
1a120a86a2
Merge PR #1761
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-14 23:59:13 -04:00
Brandon Thomas and Claude Opus 5.5
a0b55e66bb
Merge PR #1755
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-14 23:48:20 -04:00
Brandon Thomas
e6b2e6eefb
Merge PR #1138
...
# Conflicts:
# crates/catalog/src/lib.rs
# crates/catalog/src/query.rs
# crates/engine/src/cmd/library.rs
# crates/ui-egui/src/tests_keywording.rs
# docs/gaps.md
2026-10-14 23:46:16 -04:00
Brandon Thomas and Claude Opus 5.5
eb4cfe6c56
Batch 36: Canon RP C-RAW sample listed once ( #1029 and #1453 both pinned it); the face-tile test waits up to a minute for its pictures on a busy machine
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-14 23:39:57 -04:00