Commit Graph
1607 Commits
Author SHA1 Message Date
FredApps 08ab0a4da7 Merge approved PhotoCraft PR #6449: Hand tool: Cmd held zooms in and Alt zooms out, as in Photoshop
Port behavior and regression coverage into current modules; preserve current upstream behavior.
Kept current stronger Hand modifier zoom implementation including sticky modifiers, primary-release ownership, middle-button pan and Free Transform exclusions; retained the original approved zoom/pan/release regressions alongside newer guards.
2026-10-29 05:34:11 +01:00
FredApps 78f9c137b3 Merge approved PhotoCraft PR #6621: Crop: right-click on the pending crop opens the crop menu (#6561)
Port behavior and regression coverage into current modules; preserve current upstream behavior.
Extended current crop menu with Reset and shield toggles, preserving newer preset management, overlays, ownership checks and no-menu-during-gesture logic. Ported reset-frame no-op/undo semantics into current CropState/release and crop commit; retained original regression cases in split modules.
2026-10-29 05:29:44 +01:00
FredApps a62b9ee217 Merge approved PhotoCraft PR #8347: Type: Roman Hanging Punctuation (trailing marks hang, don't steer the alignment)
Port behavior and regression coverage into current modules; preserve current upstream behavior.
Ported hanging punctuation into current line placement and kerning modules, preserving forced breaks, bounded edge-tip row merging, justified-last-line behavior, area exclusions and independent Roman orientation shaping; kept PSD/engine/UI regression coverage.
2026-10-29 05:22:57 +01:00
FredApps 0fd326b1cc Merge approved PhotoCraft PR #9282: feat(ui): Preset menus for Levels, Exposure, Black & White and Channel Mixer
Port behavior and regression coverage into current modules; preserve current upstream behavior.
Registered adjustment presets in current dialog modules, preserving current editor dispatch, explicit PhotoCraft preset provenance, Custom matching and discrete preview/history regressions.
2026-10-29 05:19:36 +01:00
FredApps 82da13f531 Record 70-head compile checkpoint and behavior-specific regression protocol draft 2026-10-29 05:06:45 +01:00
FredApps a68db8e1f8 Merge approved PhotoCraft PR #8905: fix(plugins): bound a run's total plug-in memory, not just each instance
Port behavior and regression coverage into current modules; preserve current upstream behavior.
Bound aggregate parallel plugin memory and preserve serial/parallel equality and total-budget regressions.
2026-10-29 04:47:32 +01:00
FredApps 959b41dca4 Merge approved PhotoCraft PR #9606: fix(ui): the Color panel remembers its options across restarts
Port behavior and regression coverage into current modules; preserve current upstream behavior.
Persist and restore Color panel options through the current dock/startup modules and regenerate the scorecard from current source.
2026-10-29 04:46:40 +01:00
FredApps 4546543013 Refresh 61-head progress and adapt filter-result error propagation 2026-10-29 04:37:44 +01:00
FredApps 32722ffcbf Merge approved PhotoCraft PR #9019: fix(xtask): reject unknown performance benchmark selections
Port behavior and regression coverage into current modules; preserve current upstream behavior.
Validate benchmark names before both measurement and baseline-from-files paths, retaining newer baseline modes.
2026-10-29 04:21:14 +01:00
FredApps 2f6156bebe Merge approved PhotoCraft PR #5090: Actions: add editable PhotoCraft Essentials starter presets
Port behavior and regression coverage into current modules; preserve current upstream behavior.
Register starter actions and bounded background-blur command in current modules; preserve persistent migration marker and portable JSON defaults compatibility.
2026-10-29 04:18:29 +01:00
FredApps ab9c044fba Merge approved PhotoCraft PR #3461: Replay recorded layer visibility on the intended named layer
Port behavior and regression coverage into current modules; preserve current upstream behavior.
Resolve recorded visibility targets before both engine and shell authorization, preserving bounded playback, paused dialogs and existing journal coalescing; retain ActionState take generation.
2026-10-29 04:16:32 +01:00
FredApps 6e13443ca6 Merge approved PhotoCraft PR #3455: Undo and redo action definition edits from the Actions panel
Port behavior and regression coverage into current modules; preserve current upstream behavior.
Keep action-definition undo separate from document history and preserve upstream panel routing and layout.
2026-10-29 04:12:47 +01:00
FredApps 030712d1ab Merge approved PhotoCraft PR #6236: Shift+Alt+right-click opens Photoshop's HUD Color Picker (#6098)
Preserve current module structure and port the approved source/test changes to unique current locations.
2026-10-29 03:58:35 +01:00
FredApps 17c4dabf90 Merge approved PhotoCraft PR #4305: Filter > Other > Frequency Separation (#1714)
Preserve current module structure and port the approved source/test changes to unique current locations.
2026-10-29 03:56:41 +01:00
FredApps 72c11b083e Align regression inventory with actual PhotoCraft subsystems 2026-10-29 03:44:34 +01:00
FredApps 4a51aa83f6 Add traceable per-PR regression cases and explicit integration acceptance gates 2026-10-29 03:43:38 +01:00
FredApps 46c1347951 Document 108-PR selection, partial integration checkpoint and testing protocol 2026-10-29 03:39:31 +01:00
FredApps 663c0204dd Merge approved PhotoCraft PR #8896: Select and Mask: Photoshop's full-window workspace (#7069, #8148)
Resolve moved test modules and independent catalog/workflow additions without changing behavior.
2026-10-29 03:32:04 +01:00
FredApps cd9ce83ae7 Merge approved PhotoCraft PR #3554: fix(packaging): launch bundled CLI directly from AppImage
Resolve moved test modules and independent catalog/workflow additions without changing behavior.
2026-10-29 03:31:02 +01:00
FredApps 99b11de5d6 Merge approved PhotoCraft PR #9436: Startup: a failed launch says why in a dialog instead of closing silently (#7643) 2026-10-29 03:29:53 +01:00
FredApps e4e75d0e2b Merge approved PhotoCraft PR #9110: test: GPU tests honour WGPU_BACKEND, so they run on Windows with an Intel GPU (#4) 2026-10-29 03:29:47 +01:00
FredApps 86fcbf26ee Merge approved PhotoCraft PR #7648: Pen: Path Operations menu, as in Photoshop (#1397) 2026-10-29 03:29:31 +01:00
FredApps c50539ea84 Merge approved PhotoCraft PR #6510: Automation: resolve configured root aliases for absolute paths (#6426) 2026-10-29 03:29:25 +01:00
FredApps cd3a054cf0 Merge approved PhotoCraft PR #6383: Windows releases ship a symbols zip: the release build's PDBs for profilers (#688) 2026-10-29 03:29:22 +01:00
FredApps 08e35bedc1 Merge approved PhotoCraft PR #4985: feat(ui): add Shift+right-click brush mode picker 2026-10-29 03:28:59 +01:00
FredApps b426bd284b Merge approved PhotoCraft PR #4742: fix(macos): bundle photocraft-cli and resolve it from droplet scripts 2026-10-29 03:28:35 +01:00
David MannandClaude Opus 5.5 f66f749f96 Merge main
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 22:18:30 +01:00
David MannandClaude Opus 5.5 15dc4092f8 Web build: served script fonts draw the interface too
The web build has no system fonts and embeds no craft fonts, so an Arabic
(or Japanese, Chinese, Korean, Hindi) interface had no font for its labels:
served fonts were registered only in the document text engine. A served
script fallback now also joins the end of every egui font family, and the
font stack theme::install_fonts rebuilds on a language change includes it
again. The web shell asks for the interface language's script font, not
only the browser languages'.

Review finding on #10006.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 22:18:28 +01:00
aiongg e2f9ae6bfb Merge main into perf/9328-slow-frames
Conflicts in perf/budgets.toml and docs/scorecard.md: both sides added perf rows (P80 here, P81 and P82 from #9942). Kept all three; scorecard regenerated with cargo xtask scorecard.
2026-10-28 20:30:50 +00:00
bd9590d060 Arabic interface language, combined from the community catalogs
Adds Arabic (ar, العربية) as an interface language. The catalog combines
the open Arabic catalogs of #2505, #4520, #4569, #5593, #5915, #6092 and
#6287: each row takes the best of their translations, with one Arabic
term per concept across the UI, and the strings added since are filled
in. Modern Standard Arabic, Western digits, the six CLDR plural forms
(zero|one|two|few|many|other).

The two tests that used ar-SA as an unsupported locale now use sw-KE, and
the direction test expects Arabic to be the one right-to-left catalog.

Co-authored-by: azizr12 <163084230+azizr12@users.noreply.github.com>
Co-authored-by: hicbest <213873494+hicbest@users.noreply.github.com>
Co-authored-by: hasan-sdaif <306196098+hasan-sdaif@users.noreply.github.com>
Co-authored-by: NibrasAz7 <34162952+NibrasAz7@users.noreply.github.com>
Co-authored-by: vfggf95565 <74471233+vfggf95565@users.noreply.github.com>
Co-authored-by: syrrevshin4202-prog <243624842+syrrevshin4202-prog@users.noreply.github.com>
Co-authored-by: test-bit-sys <336050374+test-bit-sys@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 21:22:26 +01:00
Ikki Nishihara 1dc98f80f6 docs(control): associate brush mode gesture with ui.pointer
Signed-off-by: Ikki Nishihara <223786623+haranishi@users.noreply.github.com>
2026-10-28 16:24:15 +09:00
Ikki Nishihara ca17e9b627 Merge current main and preserve brush mode picker behavior
Signed-off-by: Ikki Nishihara <223786623+haranishi@users.noreply.github.com>
2026-10-28 15:55:25 +09:00
Brennan StehlingandClaude Opus 5.5 a9c26551f1 perf: add P81/P82 redraw-area rows on full-canvas layers (#9329)
Track-only rows that check they hit the whole-document-redraw path and
print the refreshed pixel count: undo of a brush dab on a 16-bit
15000x10000 full-canvas layer (reps capped at 5) and a fill of a 2 %
selection on a 24 MP full-canvas layer.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-27 23:08:30 -07:00
Brennan StehlingandClaude Opus 5.5 ce8f3e719e Docs: perf.slowFrames, and the stroke trace reads the shared frame stages (#9328)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-27 23:08:06 -07:00
Brennan Stehling 00522c852e Perf: P80, app frame time for a full CPU refresh of a 24 MP document (#9328)
Track-only row, the slow-frame recorder's worst case. A 24 MP photo plus
three full-canvas blended copies (Multiply, Screen, Overlay); each sample
toggles the top copy and times one harness.step(), so every frame
recomposites all 24 MP on the CPU (the photo's tiles are never uniform,
which keeps the reduced render's one-colour shortcut out of the way).
The row errors unless each frame recorded a CPU refresh covering at least
95 % of the canvas, so it can't silently take a fast path. 10 samples.
2026-10-27 23:06:56 -07:00
aiongg d453c7d12b Merge pull request #9564 from brennanMKE/perf/7494-baseline-guard
xtask perf: a baseline knows how trustworthy it is (#7494)
2026-10-27 23:56:45 -04:00
Khawar Zamman Wani 8b835a103c Merge origin/main into pen-path-operations 2026-10-28 09:22:55 +05:30
Khawar Zamman Wani 4e22d214dc Merge origin/main into select-mask-workspace 2026-10-28 09:22:54 +05:30
aiongg b4e69af424 Merge main into perf/9328-fallback-reason 2026-10-28 03:00:01 +00:00
aiongg a9e6f73ac5 Merge remote-tracking branch 'upstream/main' into HEAD 2026-10-28 02:31:52 +00:00
aiongg 386b7b8d8e Merge pull request #9565 from brennanMKE/perf/7494-cliff-rows
Perf: cliff rows for the CPU compositor, Advanced Blending, adjustment toggles, over-budget and huge documents (#7494)
2026-10-27 22:31:34 -04:00
aiongg eb6c1abf75 Merge pull request #9756 from Jeremy8776/feat/install-scope-policy
Windows installation policy: PhotoCraft
2026-10-27 17:57:55 -04:00
Brennan StehlingandClaude Opus 5.5 e43762ac0d Perf: rename P79 to the reduced composite it times (#7494)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-27 14:38:45 -07:00
Brennan Stehling 5b057e2247 Scorecard: regenerate for the cliff rows (#7494) 2026-10-27 14:38:45 -07:00
Jeremy 768ca7ce63 docs(installer): limit the silent per-user default to new installs
Maintenance keeps the existing installation context, and a major upgrade of an
existing per-machine installation without ALLUSERS=1 is rejected rather than
installed per-user.
2026-10-27 21:13:30 +00:00
David MannandClaude Opus 5.5 1992cfcb9c Integration: parity docs dated 2026-10-27 with a history row for the scorecard count
CodeRabbit on #9775: the 12-of-181 count changed today, so ui-parity.md and gaps.md get the date in their status lines and a revision-history row, as AGENTS.md asks.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-27 20:21:26 +01:00
David MannandClaude Opus 5.5 5ccb6fb723 Merge main
Conflicts with main's batch #9880:
- psd file.rs / layer.rs: #5287 (PSB by encoded size, RLE tables widened on
  promotion) against #6583's lazy reader. Main's new widening and length code
  read `.data`, which #6583 leaves empty while the bytes stay in the source;
  it now goes through `encoded()` / `encoded_len()` (also the auto-merged
  lines in `rle_widening`, `encoded_len` and `LayerRecord::write`), and the
  lazy reader sets `write_as_psb: false`. New test
  `a_lazy_psd_promotes_to_the_same_psb_as_an_eager_one`: a lazily read PSD
  writes the same PSB bytes as an eager one; it fails with a `.data` read.
- direct_select.rs / vector_ui.rs: #9321's Type Path and #6353's hidden
  Work Path both kept.
- io tests main.rs: both modules. scorecard.md regenerated (12 of 181);
  ui-parity.md and gaps.md follow it.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-27 19:49:42 +01:00
David MannandClaude Opus 5.5 c955e51b7f Integration: the parity docs name the locked-group exception for new layers (#4329)
CodeRabbit on #9775: Place::AutoEditable puts type, shapes, pastes, placed files and frames above a group whose lock would refuse them; ui-parity.md's status line and checklist row said every new layer goes into an open active group.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-27 19:13:57 +01:00
aiongg c1f3219dfb Merge #9445: Automation: refuse to replace a non-image file in the write root (#9439) 2026-10-27 17:44:26 +00:00
David MannandClaude Opus 5.5 199092edfd Integration: a failed favourite toggle shows as an error; preference count from the scorecard (#6526)
CodeRabbit on #9775: FontLibrary::finish wrote a failed type.font.favorite to the status bar as plain information; it now sets status_error like the other status writes. The regenerated scorecard counts 12 of 179 preferences that do nothing; ui-parity.md and gaps.md still said 178.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-27 18:18:49 +01:00