Commit Graph
3904 Commits
Author SHA1 Message Date
dotCooCoo 5eccdd26a8 Merge main into feat/keyword-shortcut-keys
# Conflicts:
#	docs/parity-checklist.md
2026-10-25 20:13:29 -07:00
aiongg 67f11a5018 Merge pull request #2930 from aiongg/title-bar-movable
Top bar: the title-bar drag uses craft-window's title_bar; a panel over the bar keeps the window still
2026-10-25 23:08:37 -04:00
aiongg 003779ce51 Merge upstream main into title-bar-movable; craft-window at craft-libs main 1e6f127 2026-10-26 02:18:22 +00:00
Brain Wang c7961df10b Camera profile: Sony ILCE-7RM5 (α7R V) (#3022)
* Camera profile: Sony ILCE-7RM5 (α7R V)

* Camera profile: register the bundled ILCE-7RM5 profile

* Camera profile: attribution for the ILCE-7RM5 profile

* Camera profile: list ILCE-7RM5 among the built-in profiles in the README

* Camera profile: list ILCE-7RM5 in the Simplified Chinese README

* Camera profile: list ILCE-7RM5 in the Traditional Chinese README

* Camera profile: ILCE-7RM5 calibration set used the Standard creative style only
2026-10-25 22:04:19 -04:00
Dylan M. Taylor 8020cd081c showcase: check the file is readable without an empty with-block (#3001) 2026-10-25 21:13:45 -04:00
dotCooCoo c41108775f KEYC-METADATA: keyword.setShortcut refuses non-text keywords, and long names leave room for the marks
keyword.setShortcut returns an error when `keywords` is neither text nor
an array of text, and leaves the keyword shortcut as it was. Before, a
value such as 7 cleared the keyword shortcut and ["beach", 7] kept only
beach.

In the Keyword List, a name too long for its row is cut short before
the default-parent dot and the keyword shortcut's +, so neither runs
into the Show photos arrow.
2026-10-25 17:51:28 -07:00
skylar taylor-barrick 387bed199f chore(deps): refresh safe dependency bumps (#2994) 2026-10-25 19:30:51 -04:00
Dylan M. Taylor 522beb0c3e build: pin craft-update to craft-libs main (495e597) (#2990)
Picks up the startup prompt without the glyphs a font may lack (storytold/craft-libs#343, #344): the close mark is painted and the version pill is ASCII, so apps that panic on a missing glyph no longer take the prompt down.

Part of tracking issue storytold/craft-libs#319
2026-10-25 17:55:29 -04:00
Dylan M. Taylor 2833d8fc9a Merge pull request #2780 from storytold/security/raw
security/raw: bound hostile-memory paths in the raw decoders
2026-10-25 16:45:57 -04:00
dotCooCoo 3c3d83031f KEYC-METADATA: Cmd+Alt+Shift+K sets the keyword shortcut and Shift+K adds or removes it
Lightroom Classic's keyboard shortcut page lists Command+Option+Shift+K
(Ctrl+Alt+Shift+K on Windows) for Set a keyword shortcut and Shift+K
for adding or removing the keyword shortcut on the selected photos.
LightCraft had no keyword shortcut.

Set Keyword Shortcut... (dialog.keywordShortcut, Cmd+Alt+Shift+K) asks
for one or more keywords with commas between them and shows the ones
set before. A new name goes inside the default parent, as in the
Keywording box. A keyword's Use This as Keyword Shortcut in the Keyword
List sets that keyword alone, and the list shows a + after each keyword
of the keyword shortcut. Shift+K (keyword.toggleShortcut) adds the
keywords to the selected photos, or removes them when every selected
photo has them all. The help pages do not say what Shift+K does when
only some selected photos have the keywords; adding them unless every
photo has them all is LightCraft's own rule. A photo's context menu
offers Add Keyword with the keyword shortcut's keywords.

The keyword shortcut is a mark on its keywords in the catalog's keyword
list (KeywordInfo::keyword_shortcut), as Put New Keywords Inside This
Keyword is: a new name is listed, the mark moves with a renamed, moved
or merged keyword and goes with a deleted one, and setting it
(keyword.setShortcut) is one undo step.

The new labels have rows in every catalog. The KEYC-METADATA and
LRC-LIB-KEYWORDS rows, docs/ui-parity.md and docs/library-shortcuts.md
list the keys.
2026-10-25 13:44:28 -07:00
Dylan M. Taylor c6c4f96cf8 Merge pull request #2770 from dylanmtaylor/security/heif
security: bound heic-rs 0.1.4 work around hostile HEIF containers
2026-10-25 16:42:27 -04:00
Dylan M. Taylor 3022baa861 security(raw,meta): follow-ups from review
An oversized CR3 candidate is skipped without ending the search, repeated child IFD references count once toward the pending cap, deflated chunks lay their rows out as the unpacker reads them (16-bit words, 32-bit word alignment), the tile grid's nominal size is checked against the image before anything is decoded, chunk grouping saturates, and the XMP flattened-key budget is document-wide. The JPEG-header test now parses a real header.
2026-10-25 16:12:03 -04:00
Dylan M. Taylor 63cb047c7e Merge pull request #2933 from dylanmtaylor/feat/startup-update-prompt
feat(update): add startup update prompt modal and self-update
2026-10-25 16:07:03 -04:00
Dylan M. Taylor 0c71f75325 security(heif): scan the primary item before heic_rs::probe, the alpha plane, and each thumbnail candidate
heic_rs::probe rebuilds a grid primary's descriptor, so the pre-scan runs before it; the alpha item that decode reconstructs is counted too; and a thumbnail candidate is scanned before its coded size is resolved, with all candidates sharing one budget.
2026-10-25 16:06:39 -04:00
Dylan M. Taylor 269495cd38 security(heif): budget every reconstruction before it runs
The primary item and the selected thumbnail are scanned before Context::grid rebuilds their descriptors, every tile reference is counted (repeats included) before the size check dedupes them, and the Exif and XMP items are scanned before they are read.
2026-10-25 15:45:31 -04:00
Dylan M. Taylor d8ceb3a6af security/meta,merge,raw,tiff,denoise: bound memory sized by attacker-shaped inputs
XMP flattening, sparse-focus EXIF decode (plus the maker-note and TIFF value
budgets), lossy-DNG chunk staging, panorama stitch frames, the reference ONNX
executor's tensors and the denoise product reader all now reject or cap what a
malformed file can make them allocate: each result is checked before the
memory behind it is reserved, every regression carrying a test that fails
without its bound.
2026-10-25 15:42:19 -04:00
Dylan M. Taylor d00df6319c security/raw: bound hostile-memory paths in raw decoders
Sparse walkers, truncated MEF/lossy-JPEG strips, embedded JPEG sizes, the
CR3 preview marker walk, OpcodeList3 full-image passes and caller-supplied
Deflate tile edges each let a small file or one bad argument multiply
allocations or CPU work thousands of times. Each path now is bounded,
every fix with a regression test that failed (or blew up) before it, plus
a tiff::image single_chunk helper so preview extraction never builds a
descriptor vector for a hostile multi-strip layout.
2026-10-25 15:42:19 -04:00
Dylan M. Taylor 178eef790b heif: bound iloc item-extent visits before reconstructing in probe 2026-10-25 15:42:00 -04:00
Dylan M. Taylor b88f72b9df sec: bound heic-rs 0.1.4 work around hostile HEIF containers
heic-rs has no aggregate work budget in container parsing: ipma
association entries rescan earlier item ids after each other and an
iloc construction-method-2 extent rebuilds its source item afresh. Cap
the ipma/iloc boxes before heic-rs reads them, and stop probe paying
for a reconstruction heft beyond the file's own size. decode: refuse
files carrying more than 12 container transforms (each would re-copy
the full picture; CodeRabbit row #44), check a grid's payload canvas
against the pixel limit before allocating for it (#48), and to_rgb16
refuses an oversized w*h*ch rather than asking for a multi-gigabyte
buffer.
2026-10-25 15:42:00 -04:00
Dylan M. Taylor 015ca9eeba fix(updates): localize the update status messages and format the sources 2026-10-25 15:34:06 -04:00
Dylan M. Taylor ee48785090 fix(updates): address review feedback
Wake the UI when a manual check is queued from a menu callback; the update prompt owns the keyboard while it is open (LightCraft); Download opens through the desktop URL hook (FilmCraft); the Help menu dispatches through menus::invoke (FigCraft); print jobs and comment drafts hold an install back (WordCraft); Check for Updates is a registered command (GridCraft); an install holds back while documents are unsaved.
2026-10-25 15:17:03 -04:00
Dylan M. Taylor 2d3c7275b2 fix(updates): drop the manual window's custom id; pin craft-update to craft-libs main (db19c37) 2026-10-25 15:07:57 -04:00
Dylan M. Taylor 8e5a6fc2e7 refactor(updates): hold the install back while documents are unsaved 2026-10-25 14:53:33 -04:00
Dylan M. Taylor 2b9317519c feat: startup update prompt modal and direct self-updating
The update flow (check at start or on request, the startup prompt, the self-update worker) is craft-update's Updater; the app only supplies the suite, its close path and its status window. The check at start is opt-in for the desktop app, and the Windows update helper runs before argument parsing.

Ref: storytold/craft-libs#319
2026-10-25 14:22:14 -04:00
Dylan M. Taylor 1a3d9aff1e Merge pull request #2913 from storytold/codex/egui-037-lightcraft-20261023
Migrate LightCraft to egui 0.37 with current main preserved
2026-10-25 14:10:49 -04:00
aiongg c01d4c7074 Merge lightcraft#2913 (egui 0.37) into title-bar-movable; craft-window at craft-libs main a091680 2026-10-25 17:19:47 +00:00
aiongg d4cfd2e6d5 LR-BEHAV-TITLEBAR: the checklist row follows craft-window's title_bar 2026-10-25 17:07:16 +00:00
aiongg 649e84b0ed Top bar: repin craft-window to craft-libs main 5bbe9f6 2026-10-25 16:25:27 +00:00
aiongg f52df54f13 Merge upstream main into title-bar-movable 2026-10-25 16:24:58 +00:00
aiongg 901a115bf7 Top bar: repin craft-window to craft-libs main ea4c823 2026-10-25 13:53:10 +00:00
Brandon ThomasandClaude Opus 5.5 03c88c166c Release 0.14.0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
v0.14.0
2026-10-25 09:26:32 -04:00
skylar taylor-barrick 3401286b5c egui037: preserve modal focus and first-pass text selection 2026-10-25 14:15:30 +01:00
aiongg 19ab821477 Top bar: repin craft-window to craft-libs 4093ea4; the title bar is announced from empty_area's response 2026-10-25 12:41:42 +00:00
aiongg 577b6cfced Top bar: the title-bar drag uses craft-window's title_bar, and a panel over the bar keeps the window still on macOS 2026-10-25 12:35:44 +00:00
skylar taylor-barrick c627ce7210 egui-037: preserve modal input ownership and packaged font notices 2026-10-25 13:14:34 +01:00
skylartaylor e7144adc1f M0.37: reconcile current LightCraft main and qualify the migration 2026-10-25 07:47:22 +01:00
aiongg 31ec62cd03 Info panel Target Photo edits, Add Keywords cursor request and Fixed keys follow-ups (#2889)
* LR-PREF-SHORTCUTS: the shortcuts panel's Fixed keys ignore keys saved for unknown commands

* KEYC-METADATA: an Add Keywords request the Keywords panel can't take in time expires

* LR-META-INFO: Target Photo saves an Info edit to the photo it shows
2026-10-25 00:58:10 -04:00
aiongg 5e548627df Merge pull request #2876 from aiongg/dotcoocoo-batch
Integration batch: 10 community PRs (slideshow, print templates, View Options, Info panel, keyword and metadata keys)
2026-10-25 00:13:38 -04:00
aiongg c3feda15c0 LR-META-INFO: the Info panel shows Selected Photos by default; gaps.md lists its change notes once 2026-10-25 03:36:14 +00:00
aiongg e339afc263 Merge PR #2810: LR-META-INFO: the Info panel can show metadata for the selected photos 2026-10-25 02:25:16 +00:00
aiongg 6e5e958639 Merge PR #2792: LRC-DEV-VIEWOPTIONS: View Options can turn off the loupe's "Rendering…" message 2026-10-25 02:24:50 +00:00
aiongg 17a3b80702 Merge PR #2790: LRC-DEV-VIEWOPTIONS: the info overlay can show briefly when the photo changes 2026-10-25 02:24:29 +00:00
aiongg 77196373a9 Merge PR #2870: KEYC-METADATA: Cmd+K / Ctrl+K puts the cursor in the Add keyword box 2026-10-25 02:24:29 +00:00
aiongg 122859d269 Merge PR #2846: KEYC-METADATA: Alt+0 / Alt+Shift+0 go to the next / previous keyword set 2026-10-25 02:24:03 +00:00
aiongg 387ad02b79 Merge PR #2832: LR-PREF-SHORTCUTS: a declared shortcut yields to a key the saved keymap gives another command 2026-10-25 02:23:22 +00:00
aiongg eb9ef0a40e Merge PR #2824: KEYC-METADATA: Cmd+Alt+Shift+C / V copy and paste metadata 2026-10-25 02:23:21 +00:00
aiongg 5c46163e66 Merge PR #2778: LRC-PRINT-TEMPLATES: print templates export to a file and import from one 2026-10-25 02:23:20 +00:00
aiongg f923967c63 Merge PR #2786: LRC-SS-PLAYBACK: a manual slideshow waits for the arrow keys 2026-10-25 02:23:20 +00:00
aiongg 75d8e06850 Merge PR #2816: Tests: the launch-list read-only test compares a held lock file without reading it (Windows) 2026-10-25 02:23:19 +00:00
skylartaylor c057ccc23f Migrate LightCraft to egui 0.37 and reconcile dependency and font locks
Preserve current main, adapt frame/input and IME handling, and keep library
check results stable across layout passes. Include the matching Nix font lock
and reviewed attribution changes.
2026-10-25 02:54:42 +01:00