Commit Graph
279 Commits
Author SHA1 Message Date
FredApps 1daf3bc079 Merge approved PhotoCraft PR #4890: Add scrollbar visibility preferences (#3262)
Port behavior and regression coverage into current modules; preserve current upstream behavior.
Port visibility preference, choice registration, live panel style and canvas override. Keep current animated camera and toolbar exclusions. Relocate misplaced persistence regression to prefs tests; retain current parity score counts.
2026-10-29 06:09:52 +01:00
FredApps c81347aaa8 Merge approved PhotoCraft PR #5493: Import Photoshop custom shape sets into the Shapes panel
Port behavior and regression coverage into current modules; preserve current upstream behavior.
Integrated bounded atomic CSH set parsing, unique shape/group naming and native Shapes panel import with inline-data authorization guards; preserved duplicate-name, inner-hole, malformed-second-record and preferences-reload regressions. Combined independent catalog additions and retained current parity metadata.
2026-10-29 05:47:45 +01:00
Khawar Zamman Wani 4e22d214dc Merge origin/main into select-mask-workspace 2026-10-28 09:22:54 +05:30
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 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
David Mann 3a689f217c Merge remote-tracking branch 'origin/main' into HEAD
# Conflicts:
#	crates/engine/src/file_cmds.rs
#	crates/engine/src/retouch_cmds.rs
#	crates/engine/src/vector_cmds.rs
#	crates/io/src/psd_export.rs
#	crates/io/src/psd_import.rs
#	crates/io/src/smart_map.rs
#	crates/psd/src/layer.rs
#	crates/raster/src/lib.rs
#	crates/ui-egui/src/camera_raw_ui.rs
#	crates/ui-egui/src/canvas.rs
#	crates/ui-egui/src/filter_dialog.rs
#	crates/ui-egui/src/gpu_canvas.rs
#	crates/ui-egui/src/panels.rs
#	crates/ui-egui/src/retouch_ui.rs
#	crates/ui-egui/src/transform_tool.rs
#	crates/ui-egui/src/vector_ui.rs
#	docs/gaps.md
2026-10-27 14:26:26 +01:00
jonathanwxh-cell f97eb2849a Merge upstream main and resolve custom shape import conflicts
Preserve CSH import behavior, inline-data authorization policy, localization and regression tests while retaining upstream module extraction.

Local verification: formatting and independent static review passed. Parser/engine/automation/UI runtime, broader Clippy, WASM and visual gates remain incomplete locally because of resource limits. Hosted CI must establish remaining gates; this commit does not claim the PR is ready to merge.
2026-10-27 19:47:58 +08:00
Khawar Zamman Wani 26d0b9c41c Merge origin/main into select-mask-workspace 2026-10-27 11:55:36 +05:30
David Mann 63e2c7d100 Merge PR #9031: fix(io): preserve Halftone Pattern smart filters in PSD/PSB
# Conflicts:
#	docs/file-format-parity.md
#	docs/gaps.md
2026-10-27 02:23:29 +01:00
714b8f304d Integration: the reference application's Halftone Pattern keys HlSz/ScrT (#9031)
The PR read and wrote Halftone Pattern as `Sz  ` and `Ptrn` (enum `HlfT`:
`Dt  `/`Crc `/`Ln  `). The reference application's Filter Gallery uses `HlSz`
for the size and a `ScrT` enum (`ScrD` dot, `ScrC` circle, `ScrL` line), so a
Halftone Pattern saved there still opened as an opaque filter, and one we saved
lost its size and pattern there without a warning. The tests built their fixture
with the same keys as the code, so they passed either way.

Now the keys match, a default Halftone Pattern (HlSz 1, Cntr 5, ScrD) opens as
{size 1, contrast 5, dot} (fails before this commit), and descriptors with the
old keys stay verbatim. The docs no longer claim reopen checks in the reference
application.

Co-authored-by: denstu473 <63150090+denstu473@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 02:20:49 +01:00
Khawar Zamman Wani be43268ffa perf: crop Modify command mask conversion and selection replacement 2026-10-26 19:02:43 +05:30
Khawar Zamman Wani 977585aa24 test: retain allocation reuse in the Contract performance baseline 2026-10-26 18:41:04 +05:30
Khawar Zamman Wani 4244ec2b9e perf: crop selection morphology and bound small-radius distances 2026-10-26 18:33:35 +05:30
jonathanwxh-cell 059940c993 Merge upstream main into the CSH shape import branch
Keep the custom-shape translations and the CSH import notes with main's newer format and gap status.
2026-10-26 09:50:13 +00:00
Khawar Zamman Wani 56008a682d Merge origin/main into select-mask-workspace 2026-10-26 10:20:37 +05:30
David MannandClaude Opus 5.5 8aa8e4f0cb Integration: docs status lines follow the revision history
brush-parity.md, gaps.md and ui-parity.md had 2026-10-25 revision rows
under a 2026-10-23/24 "Last updated" header; the headers now carry the
latest row. gaps.md (24 of 171), ui-parity.md and target-app-parity.md
(46 of 149) quoted stale counts of preferences that do nothing; they now
quote the scorecard's 12 of 178. target-app-parity.md still listed the
Camera Raw Calibration panel as missing, which landed on 2026-10-13
(#5128); the row now names per-camera colour for non-DNG cameras, as
gaps.md G14 does.

Found by CodeRabbit on #9386.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-25 21:56:01 +01:00
David MannandClaude Opus 5.5 38609e5615 Merge PR #8885: PSD: spot channels in Photoshop's polarity; PSDs from earlier PhotoCraft versions keep their ink
Merged with our fix-up branch pr-8885-fixup (8f6863f53) on the author's head 996b55eb4.

Conflicts resolved:
- crates/io/src/tiff_layers.rs: #9148's tiff_source (an empty LMsk gets Photoshop's 14 bytes)
  gives way to #8885's tiff_image_source, which writes the same bytes for an empty or short
  LMsk; #9148's test stays.
- crates/io/src/flat.rs: #8776's DDS alpha step and #8885's TIFF channel stamp both run.
- crates/io/Cargo.toml, Cargo.lock: #8402's zune dev-deps and #8885's tiff dev-dep.
- crates/io/tests/it/tiff_layers.rs, docs: unions; docs/scorecard.md kept as is, regenerated at
  the batch gate.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 16:28:00 +01:00
David MannandClaude Opus 5.5 14693eb085 Integration: merge main 528491f9a, resolve conflicts
- crates/engine/src/edit_cmds.rs: copy_mask keeps #3297's filter-mask target and takes main's
  clipboard `source` (#8945).
- crates/cms/src/lutfile.rs: #9183's shaper doc comment next to main's UTF-16 decode_text (#9129).
- contributors/people.toml, docs: unions.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 16:26:06 +01:00
8f6863f536 Integration: a kept 1053 doesn't hide an earlier PhotoCraft's spot ink (#8885)
Earlier PhotoCraft versions kept the 1053 of a Photoshop file they opened
and wrote it back unchanged, while storing spot channels added there
straight. A transparent Photoshop document carries 1053 = [0], so a white
plate added to it in 0.16.0 or earlier sat behind a 1053, and the rule
read that file in Photoshop's polarity: the added spot opened inverted.

A 1053 that lists fewer channels (non-zero ids; 0 is the transparency's)
than the file has after its transparency now counts as kept, with the
PhotoCraft 1057 and DisplayInfo spot conditions unchanged. Planes the
kept 1053 lists stay in Photoshop's polarity (they are the Photoshop
file's own); the ones after them are read straight. Photoshop and this
version write one id per extra channel, so their files are unaffected.
Known limit, as before: channels reordered there, or as many deleted as
added, can't be told apart from the Photoshop file's own.

The earlier versions are 0.1.0 to 0.16.0, not 0.11.1: every release
since writes the same 1057 and straight spot planes without a 1053.

Co-authored-by: jasallen <615848+jasallen@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 16:22:13 +01:00
David MannandClaude Opus 5.5 4365c0537d Integration: merge main, resolve conflicts (#8885)
psd_import.rs keeps main's warning for an incomplete merged extra channel
next to the PR's Photoshop spot polarity. people.toml takes main's entries
plus jasallen's own. Docs take both sides' status lines and revision rows;
docs/scorecard.md is regenerated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 16:07:44 +01:00
Khawar Zamman Wani e5d9727ba2 Merge main into select-mask-workspace 2026-10-25 20:37:21 +05:30
.CooCoo 09dc629b42 Codecs: save Amiga IFF (.iff) as 24-bit ILBM (#9080)
Photoshop reads and writes IFF; PhotoCraft opened Amiga IFF/ILBM files
but had no writer. Saving as .iff now writes a FORM ILBM with a BMHD and
a ByteRun1-compressed BODY of 24 bitplanes (red, green and blue, least
significant bit first), one plane row at a time. An image with alpha
also gets a mask plane (masking 1): alpha of 128 or more is opaque, and
when any pixel is not fully opaque the export warns that alpha is
reduced to on/off transparency. Gray is expanded to RGB, 16-bit and
float images are reduced to 8 bits, and images wider or taller than
65535 pixels are refused.

The reader also opens 24-bitplane ILBMs, so a saved file reopens with
the same pixels. A transparent color index in a 24-bitplane file is
refused as unsupported.

IFF leaves ASYMMETRIC_EXCEPTIONS, Save As offers Amiga IFF, and the
codecs README, file-format parity and G10 are updated.
2026-10-25 10:20:09 -04:00
David Mann bb39b4a8dd Revert "Merge PR #1199: Add optional local models for subject matting and object selection"
This reverts commit 5f2a7b9903, reversing
changes made to 9ef4c0a487.
2026-10-25 15:19:27 +01:00
David MannandClaude Opus 5.5 ca046c72de Merge PR #8846: Fix stacked brush-tip artifacts in hard-round presets
Docs: status lines and revision rows kept from both sides.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-25 15:02:35 +01:00
David Mann b9df5c727a Merge PR #6620: Crop tool: right-click on a pending crop opens its menu: presets, overlays, Cancel and Crop (#6561)
# Conflicts:
#	docs/gaps.md
2026-10-25 14:51:12 +01:00
David Mann 8fe70c95d2 Merge PR #5236: perf(algo): Content-Aware Scale 2x faster, within its P28 budget (#211)
# Conflicts:
#	crates/algo/examples/bench_seam.rs
#	crates/algo/src/seam.rs
#	docs/gaps.md
#	docs/target-app-parity.md
#	perf/budgets.toml
2026-10-25 14:28:59 +01:00
David Mann b28073389c Merge PR #3316: Add intermediate UI scale presets between 100% and 125%
# Conflicts:
#	contributors/people.toml
#	docs/gaps.md
#	docs/scorecard.md
#	docs/ui-parity.md
2026-10-25 14:27:10 +01:00
David MannandClaude Opus 5.5 5f2a7b9903 Merge PR #1199: Add optional local models for subject matting and object selection
Merged with our fix-up d5139d177 (pr-1199-fixup), which merged main as of 8f09d122d.
Conflicts with main since then and with batch 8:
- photocraft-cli: main split the CLI into clap modules (#7071); the model wiring
  (local_headless, configure_cli_models, batch's shared backend, droplet) is re-applied there.
- Cargo.lock regenerated: crates/ml pins ureq =3.4.2, so the app's ureq goes 3.5.0 -> 3.4.2.
- cutout_cmds: main's subject area (#8235) kept for the classical path beside the model path.
- file_cmds batch: main's per-input closure takes `s` later, so the backend and
  integrations prefs are read before the closure instead of inside it.
- prefs_ui: model-choice filter with #4573's pref_choice_label; Integrations stays visible
  (#4097) with the model choices only where models run; the translation-coverage test main
  deleted (c3aa3f9e5) stays deleted; old section_fields test calls take PreferenceFieldOptions.
- Semantic clashes git did not flag: #4097's Integrations test literals in
  apps/photocraft take ..Default::default() for the new model fields; main's and #4573's
  section_fields test calls pass PreferenceFieldOptions.
- engine lib.rs, prefs.rs, smartselect tests, snapshot example, jobs_ui_tests, people.toml,
  docs and i18n catalogs merged as unions.


Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 14:23:25 +01:00
David Mann 731eae5efb Integration: merge main, resolve conflicts (#6620)
# Conflicts:
#	crates/ui-egui/src/crop_size.rs
#	crates/ui-egui/src/panels.rs
#	docs/context-menu-parity.md
#	docs/gaps.md
2026-10-25 13:57:11 +01:00
David Mann 7eec69f8f5 Merge PR #5128: Camera Raw: Calibration panel, Auto, raw sidecars and live Camera Raw Defaults (FILE-215-11)
# Conflicts:
#	crates/engine/src/prefs.rs
#	docs/gaps.md
#	docs/scorecard.md
2026-10-25 13:07:14 +01:00
David Mann 75e2ce844c Merge PR #8175: PSD: type on a path opens on its path and saves back into the file's Txt2 (#7962) 2026-10-25 12:40:11 +01:00
David MannandClaude Opus 5.5 cfb5812fb9 Integration: merge main (#8175)
Resolves the conflicts with main's area type (TextShape::Area): EngineData keeps main's area arm beside the path comment, and a Txt2 frame of an area layer becomes a text box over the path's bounds, as its EngineData describes it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 12:14:17 +01:00
David MannandClaude Opus 5.5 028d400454 Integration: merge main, resolve conflicts (#5128)
prefs.rs keeps main's demosaic default and the PR's write_xmp_sidecars, and
unhides the Camera Raw Defaults the PR makes live; the raw-open RawOpen built
without the dialog gains main's developed_with/demosaic; i18n and docs as
unions; docs/scorecard.md is regenerated in the fix-up.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 12:02:10 +01:00
David MannMatt Van HornFredAppscoderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>Claude Opus 5.5
ce6b831c03 Integration: Art History Brush tolerance, source window, History source (#1610)
- Tolerance defaulted to 50 and averaged alpha into the difference, so an
  ordinary edit (e.g. #c03030 -> #d04848) was never painted back, and a stroke
  that wrote nothing still left an empty History step. Photoshop's default is
  0; the difference is now the larger of the mean colour change and the
  alpha change (the Eraser keeps colour and lowers alpha), and a stroke that
  writes nothing is an error instead of an empty step.
- Each tile copied a source window of tile +- halo per dab: a leftward stroke
  or a curl across x = 64 read empty pixels there (seam), and a size-1000 click
  copied ~5e9 floats (11.9 s). The rotated read stays inside the dab, so it now
  samples the source directly; bilinear reads at pixel centres, so an
  unrotated dab copies the history pixel instead of a 2x2 blend.
- The brush used its own history lookup (state 0 by default): it now takes
  the History Brush's source (history.setSource, snapshots, refusal after a
  canvas size change).
- TOOL-213-20 is partial (8 of 10 styles, Area scales spacing); docs follow.

Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Co-authored-by: FredApps <153173854+FredApps@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 11:11:50 +01:00
jonathnwxh 050ac592d4 Merge main preserving CSH, ASL and contour imports and translations 2026-10-24 15:57:08 +08:00
Khawar Zamman Wani f01e2dd9c8 Merge remote-tracking branch 'origin/main' into fix/8842-hard-round-spacing 2026-10-24 12:10:25 +05:30
Khawar Zamman Wani cbc55433fd Merge remote-tracking branch 'origin/main' into select-mask-workspace
# Conflicts:
#	crates/ui-egui/src/distort_ui.rs
#	crates/ui-egui/src/i18n/cs.tsv
#	crates/ui-egui/src/i18n/de.tsv
#	crates/ui-egui/src/i18n/el.tsv
#	crates/ui-egui/src/i18n/es.tsv
#	crates/ui-egui/src/i18n/fr.tsv
#	crates/ui-egui/src/i18n/hu.tsv
#	crates/ui-egui/src/i18n/id.tsv
#	crates/ui-egui/src/i18n/it.tsv
#	crates/ui-egui/src/i18n/ja.tsv
#	crates/ui-egui/src/i18n/ko.tsv
#	crates/ui-egui/src/i18n/nl.tsv
#	crates/ui-egui/src/i18n/pl.tsv
#	crates/ui-egui/src/i18n/pt-br.tsv
#	crates/ui-egui/src/i18n/ru.tsv
#	crates/ui-egui/src/i18n/sr.tsv
#	crates/ui-egui/src/i18n/tr.tsv
#	crates/ui-egui/src/i18n/uk.tsv
#	crates/ui-egui/src/i18n/vi.tsv
#	crates/ui-egui/src/i18n/zh-hans.tsv
#	crates/ui-egui/src/i18n/zh-hant.tsv
#	docs/gaps.md
#	docs/target-app-parity.md
2026-10-24 09:22:48 +05:30
Ratul Paul 2818bc1e7c Merge upstream main and preserve UI scale progress
Keep all upstream contributor entries, progress notes and current document
dates alongside the existing intermediate UI scale feature.

Validation: fmt, locked engine/UI tests (6389 passed), Clippy, layers, wasm,
scorecard generation/check, and panic_hunt all passed.
2026-10-24 09:41:37 +06:00
denstu473 fc29726a5d fix(io): preserve Halftone Pattern smart filters in PSD/PSB 2026-10-24 02:37:26 +02:00
Khawar Zamman WaniandClaude Opus 5.5 4e816dc0ca feat(ui): Photoshop's Select and Mask workspace
Select > Select and Mask... opens a full-window workspace laid out as
Photoshop's, replacing the parameter dialog:

- options bar: tool, add/subtract, Size, Hardness (Brush), Sample All
  Layers, Select Subject, Refine Hair (greyed: #2671)
- tools: Quick Selection W, Refine Edge Brush R, Brush B, Object
  Selection W, Lasso and Polygonal Lasso L (one slot), Hand H, Zoom Z;
  Shift+W / Shift+L cycle
- the document under its tab, shown in the chosen view
- Properties: Remember Settings, View Mode (view letters, Show Edge J,
  Show Original P, Real-Time Refinement, High Quality Preview,
  Transparency/Opacity, Overlay colour and Indicates), Refine Mode
  (Object Aware greyed: #2788), Edge Detection, Global Refinements with
  Clear Selection and Invert, Output Settings; Reset, OK, Cancel

The tools become select.refineEdge `edits` (the Refine Edge Brush its
`refineStrokes`): OK is one history step, Cancel drops everything,
Ctrl+Z undoes per edit. The preview runs in the background on a reduced
copy (full size with High Quality Preview), reusing the selection after
the edits it already applied; Real-Time Refinement previews the stroke
being drawn. A targeted layer mask is refined and output to the mask.

Closes #7069. Closes #8148.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 20:47:26 +05:30
Jason DandClaude Opus 5.5 e4acb3c5ca Merge PR 3 (now on current main) into PR 4
Brings split/tiff-channels-io at f53aa0b9 (PR 1 and PR 2 on main
1695f323). Resolutions:
- PsdExportOptions: main's read_linked_files kept; PR 3's
  photoshop_spot_polarity switch stays removed, as this branch does.
- crates/io/src/lib.rs: main's import_psd(), calling
  psd_to_document_decoded without the removed PsdImportOptions.
- docs: PR 3's and main's text, with this branch's PSD statements
  re-applied (dated 2026-10-23). docs/scorecard.md is regenerated next.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 09:10:08 -04:00
Jason DandClaude Opus 5.5 e5be3083a7 Merge PR 1 (codecs, now on current main) into PR 3
Brings split/tiff-extra-samples-codecs at e6fca054, which merged main
1695f323. Conflicts:
- crates/io/src/lib.rs: main moved PSD import into import_psd(); it now
  passes PsdImportOptions::default().
- PsdExportOptions (psd_export.rs, tiff_layers.rs): main's new
  read_linked_files next to this branch's photoshop_spot_polarity.
- docs: main's newer status lines and rows, with this branch's TIFF
  statements re-applied (dated 2026-10-23). docs/scorecard.md is main's
  and is regenerated after PR 2 is merged too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 08:48:35 -04:00
Khawar Zamman Wani 4cfc219dfb fix(paint): smooth hard-round preset strokes (#8842) 2026-10-23 16:50:08 +05:30
Ratul Paul b088a6cbac Merge upstream main and retain complete UI scale coverage
Preserve upstream progress documentation alongside the scale-preset notes.
Add numeric preset labels to the newly introduced Hindi catalog, keeping all
21 catalogs covered. Preserve contributors, tests and existing coauthor credit.

Validation: fmt, locked engine/UI tests (6196 passed), Clippy, layers, wasm,
scorecard generation/check, and panic_hunt all passed.
2026-10-23 10:04:33 +06:00
David Mann c436f61d53 Merge PR #7202: fix(atn): import a recorded Save As with its destination (#7102) 2026-10-22 23:40:18 +02:00
David Mann 3fdcabded4 Merge PR #5248: Keep adjustment clipping visible in compact Properties panels 2026-10-22 23:40:15 +02:00
David Mann 9e7b35b716 Integration: stack #6055 (its merge onto main, conflicts resolved) 2026-10-22 23:40:11 +02:00
David MannandClaude Opus 5.5 945a10dc7c Merge PR #6055: Color panel: Photoshop's panel-menu modes, the same in every theme (#6000)
Conflicts:
- crates/ui-egui/src/i18n/{cs,de,el,es,fr,hu,id,it,ja,ko,nl,pl,pt-br,ru,sr,tr,uk,vi,zh-hans,zh-hant}.tsv: kept every key of both sides (main's block, then the PR's Color panel block); no duplicate keys.
- crates/ui-egui/src/panels.rs: took the PR's removal of color_picker/hsb_sliders/rgb_sliders (moved to color_panel_ui.rs); kept main's color_field_height doc comment; main's #5842 slider recolour tests ported to color_panel_tests.rs for the new HSB/RGB slider modes; main's black-HSB test dropped as the PR's hsb_sliders_take_values_on_black covers it.
- crates/ui-egui/src/color_panel_ui.rs (no textual conflict, adapted): set_color now goes through apply_color::foreground_changed with the gesture (was type_tool::foreground_changed), so every mode (sliders, ramp, alerts, wheel) recolours selected type/shapes tool-gated in one undo step per gesture; panel() calls apply_color::track_focus.
- crates/ui-egui/src/color_panel_tests.rs (adapted): new every_slider_mode_recolours_the_selected_shape test.
- docs/gaps.md, docs/ui-parity.md: union of both sides' status lines, rows and revision history; the PR's done row replaces the old "missing" Color panel row.
- docs/scorecard.md: generated, took b7-base's version.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-22 23:39:04 +02:00
David MannandClaude Opus 5.5 f56147655d Merge PR #5485: Add opt-out startup release checks and manual update status
Conflicts resolved:
- crates/ui-egui/src/i18n/hu.tsv: kept base's Bevel & Emboss keys, then the PR's update-check keys
- crates/ui-egui/src/i18n/ru.tsv: kept base's Bevel & Emboss keys, then the PR's update-check keys
- crates/ui-egui/src/i18n/sr.tsv: kept base's added sections, then the PR's update-check keys
- crates/ui-egui/src/i18n/tr.tsv: kept base's Bevel & Emboss keys, then the PR's update-check keys
- crates/ui-egui/src/menus.rs: kept base's saved-workspace entries, then the PR's Help › Check for Updates reordering
- docs/gaps.md: base status line with the PR's G17 clause prepended; PR revision row above base's rows
- docs/target-app-parity.md: base status line (updated 2026-10-22) with the PR's clause prepended; PR revision row above base's rows
- docs/scorecard.md: generated, took b7-base's version

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-22 23:38:46 +02:00