Commit Graph
2590 Commits
Author SHA1 Message Date
aiongg 06892bbc7e Merge upstream main a930276 into feat/ime: this branch's IME model replaces text.compose
#84 landed on main squashed (0f4f382b0), so the merge was resolved against #84's
tip as the base: main's version of #84 stands and only this branch's IME changes
are applied on top.

Conflicts and how each was resolved:
- crates/engine/src/cmd/text.rs: removed main's text.compose command, compose_text
  and its compose_tests; text.insert keeps main's reset of the typing format after a
  successful edit, skipped while an IME preview is open; reselection bumps the
  revision.
- crates/engine/src/lib.rs: removed Session.composition and the hook that ended it
  in execute_unguarded; set_active/add_document end the composition and reset the
  Find scope; both test modules kept.
- crates/engine/src/tooling.rs: removed main's composition() and its
  end_composition (the opposite semantics); begin_interaction no longer ends a
  composition.
- crates/engine/src/cmd/edit.rs, file.rs, guard.rs, recovery.rs: main's code with
  bump_revision in place of revision arithmetic; Revert takes the fresh state's
  revision.
- crates/ui-egui/src/canvas.rs: removed main's IME block, composition highlight and
  remembered caret rect; this branch's ime_event/ime_output stay. Main's dead-key
  test is ported to these events (the accent stays as typed when the caret moves).
- crates/ui-egui/src/lib.rs, menus.rs: both sides' fields and checks.
- apps/designcraft/src/main.rs, apps/designcraft-web/src/web.rs: both sides.
- docs/control-protocol.md: ui.ime row plus main's ui.click/ui.drag params.

Also: the remaining `revision += 1` sites on main use bump_revision, and two tests
compare revisions with `>`; the IME candidate window follows the caret on type on a
path; IME status lines in ROADMAP.md, gaps, ui-, localization- and target-app-parity
docs and roadmap.md.
2026-10-15 06:23:59 +00:00
aiongg 04420fd25c Compose: progress-log line for the Japanese composer gating 2026-10-15 06:16:35 +00:00
aiongg 903cc617b2 Merge upstream main a930276 into fix/cjk-leading-model-composer: per-paragraph Japanese composer gating replaces the import-time leading model drop
Conflicts:
- crates/compose/src/lib.rs: kept main's line placement (line_metrics with first
  baseline tops, baseline grid snap) and this branch's leading model and Aki Below
  advance. The Hyphenation Zone check uses Composer::single_line(), so the Japanese
  single-line composer gets the zone too.
- crates/idml/src/tests.rs: kept both tests at the conflict (composer kinds, text
  stroke alignment).

Also resolved:
- crates/idml/src/import.rs: removed the package scan for a Japanese composer and the
  drop of [No paragraph style]'s leading model; the import keeps the file's leading
  model and the composer kind, and compose applies the model per paragraph.
- crates/idml/src/tests.rs: the default-leading-model test lays out the document and
  checks Roman spacing under the non-Japanese composers and the Aki Below spacing
  under the Japanese ones; a new test round-trips a Japanese composer document.
2026-10-15 06:16:29 +00:00
aiongg eec4ad3e65 fix(typography): every OpenType toggle has a control, single figure choices export, Standard Ligatures sets Ligatures
The Typography panel's Other Features section lists the otf::TOGGLES tags no other section shows. Choosing a figure style or width alone also sets the other axis (the one all of the selection has, else Proportional or Lining), so IDML export writes a figure style instead of Default; turning one off clears both axes. Standard Ligatures reads and sets the ligatures attribute through type.char, and type.openTypeFeatures reports liga from it.
2026-10-15 06:16:15 +00:00
aiongg 4186f95aed Merge upstream main a930276 into gpu-startup: the indirect-call validation fix is kept once
Conflicts:
- README.md: one WGPU_VALIDATION_INDIRECT_CALL row (this branch's wording).
- apps/designcraft/src/gpu.rs: main's only change is a test tweak in the backend-fallback tests, which now live in gpu/backend.rs; kept this branch's file and ported the tweak there (the check depends on the chosen backend, not the candidate count).
- apps/designcraft/src/main.rs: dropped main's inline VALIDATION_INDIRECT_CALL block (#664) in favour of gpu::instance_flags(); kept the adapter selection, restart and first-frame watch, and took main's macOS Dock Quit handling, preserve_documents_on_exit in on_exit, and profile::config_dir/recovery_dir.
- crates/engine/src/recovery.rs: took main's version; its retained recovered checkpoints do what this branch's recovery change did.
- ROADMAP.md: main's file plus this PR's one progress-log line.
2026-10-15 06:15:27 +00:00
aiongg 21f14d7f79 fix(render): wide feathers and inner effects stay sharp at high zoom 2026-10-15 06:15:21 +00:00
aiongg 6b43209e30 fix(type): text typed on a blank line takes the line's paragraph mark format 2026-10-15 06:15:15 +00:00
aiongg 34a87ff42d fix(type): kerning at a caret kerns the pair at the caret 2026-10-15 06:15:08 +00:00
aiongg fdd5da9c0e Merge upstream main a930276 into tool-cursors: Pen continue resolved into the hover model
Conflicts: crates/tools/src/lib.rs, crates/tools/src/pen.rs and
crates/ui-egui/src/cursors.rs (add/add). The cursor work already in main is
kept as is (canvas.rs, ui-egui/src/lib.rs, tools tests.rs, ROADMAP.md take
main's version).

- pen.rs: the end-point check moves into hover_at as Hover::Continue, ahead
  of Delete and Add; Down has one Continue arm and cursor() derives from
  hover_at alone, so over a selected open path's end point the click
  continues the path instead of deleting the anchor. Continuing from either
  end (continue_from) is main's. The module doc is complete again.
- cursors.rs: Badge::Continue, the PenContinue glyph, and PenContinue in the
  glyph test list.
- tests.rs: pen_over_a_selected_open_paths_end_point_continues_it.
2026-10-15 06:13:56 +00:00
aiongg 19a1085c96 fix(type): formatting set on a blank line applies to the text typed there 2026-10-15 06:13:39 +00:00
aiongg 22de618def fix(doc): consecutive right pages after a section restart get separate spreads 2026-10-15 06:13:38 +00:00
aiongg 27025e5245 fix(paths): Join Path and Convert Point leave paths on locked layers and in locked groups unchanged 2026-10-15 06:13:26 +00:00
aiongg e1998538d1 fix(layers): Enter in the rename field keeps an unnamed object's automatic label 2026-10-15 06:13:09 +00:00
aiongg f786a650e5 fix(type-menu): Define Lists command path matches the Bulleted & Numbered Lists menu 2026-10-15 06:13:03 +00:00
aiongg 22f4049ff6 fix(toolbar): Apply Gradient on the stroke is one undo step and keeps the fill's tint 2026-10-15 06:12:53 +00:00
dotCooCoo 8a4c8dc2ce Swatches: Load Swatches numbers repeated .ase names and names unnamed colors by value
load_swatches matched each name in a swatch exchange file against the
document, which by then held the file's earlier colors. A color whose
name the file had already used was dropped, or with replace it
overwrote the earlier color. A color with no name was added with an
empty name, and every later unnamed color was treated as a repeat of
it. A file of seven colors with a repeated name and three unnamed
colors added three of its six new colors.

load_swatches now names an unnamed color by its value, as object.color
names an unnamed color ("C=0 M=0 Y=0 K=55"), and sets named to false.
A name the file has already given gets the first free number ("Red 2",
"Red 3"), as Styles::unique_name numbers names. Names already in the
document follow the same rule as before: they are kept unless replace
is set, and a locked swatch is left unchanged. The swatch.load
description now states both rules.
2026-10-14 23:04:12 -07:00
NetterSilverandClaude Haiku 5.5 96c62b84ce Flatten deleted text variables in table cells and notes
Found while testing crates/engine/src/cmd/variables.rs:49

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 05:43:47 +00:00
sanyamsingh001andCodex c314ec31dc Merge tested main 7ed56979c7 into PR #315
Preserve the reviewed PR behavior and tested upstream base.

Co-Authored-By: Codex <codex@openai.com>
2026-10-15 15:31:57 +10:00
LosminekandClaude Opus 5.5 a8cb7de597 Merge upstream main into cs-pr (German, PowerPoint export)
Keeps both module declarations (cs and the new de) and adds the Czech
label for the new "Export PowerPoint…" menu item.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 07:06:30 +02:00
LosminekandClaude Opus 5.5 cf045e26bc Merge upstream main into cs-pr
Resolves conflicts in ROADMAP.md, people.toml, dialogs.rs, i18n.rs,
menus.rs, panels/interactive.rs and localization-parity.md. Adds Czech
entries for the strings that arrived on main (catalog covers every key
again) and drops two stale ones. New terms follow the existing catalog
(Náhled separací, Pomocné prvky, Uvnitř/Vně, Pravidlo pružné stránky).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 07:03:56 +02:00
NetterSilverandClaude Haiku 5.5 ec510b9069 End the RTF \uN fallback skip at the end of its group
Found while testing crates/textimport/src/rtf.rs:107

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 04:39:17 +00:00
Brandon ThomasandClaude Opus 5.5 a930276fd7 fix: integrate batched community PRs (#170's PPTX exporter on the page-indexed compose cache and crate::io, with a Georgian menu label; #171: a deleted style's replacement is never based on itself)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 00:35:27 -04:00
Brandon Thomas 4b85aa4e6a Merge PR #982 2026-10-15 00:35:27 -04:00
Brandon Thomas 93d2e212d0 Merge PR #488 2026-10-15 00:35:27 -04:00
Brandon Thomas 742d46446f Merge PR #474 2026-10-15 00:35:27 -04:00
Brandon Thomas 6b9b9205e4 Merge PR #472 2026-10-15 00:35:27 -04:00
Brandon Thomas 3b7ae9da8f Merge PR #471 2026-10-15 00:35:27 -04:00
Brandon Thomas 6b70807ac4 Merge PR #464 2026-10-15 00:35:27 -04:00
Brandon Thomas 50173a5773 Merge PR #463 2026-10-15 00:35:27 -04:00
Brandon Thomas f79a507486 Merge PR #458 2026-10-15 00:35:27 -04:00
Brandon Thomas 65cb26e38d Merge PR #446 2026-10-15 00:35:27 -04:00
Brandon Thomas cc7fc63142 Merge PR #413 2026-10-15 00:35:27 -04:00
Brandon Thomas b6732e10b9 Merge PR #396 2026-10-15 00:35:27 -04:00
Brandon Thomas 32ff0fc786 Merge PR #393 2026-10-15 00:35:27 -04:00
Brandon Thomas 6ac858602f Merge PR #372 2026-10-15 00:35:27 -04:00
Brandon Thomas 07ed40069f Merge PR #349 2026-10-15 00:35:27 -04:00
Brandon Thomas 9dbe2c0d67 Merge PR #344 2026-10-15 00:35:27 -04:00
Brandon Thomas 8e402450b9 Merge PR #329 2026-10-15 00:35:27 -04:00
Brandon Thomas 7acf0f95bc Merge PR #317 2026-10-15 00:35:27 -04:00
Brandon Thomas 33e93c93a6 Merge PR #311 2026-10-15 00:35:27 -04:00
Brandon Thomas cccd1852a9 Merge PR #308 2026-10-15 00:35:27 -04:00
Brandon Thomas f62985064d Merge PR #307 2026-10-15 00:35:27 -04:00
Brandon Thomas d2e40f6b6f Merge PR #306 2026-10-15 00:35:27 -04:00
Brandon Thomas 41e7a023da Merge PR #304 2026-10-15 00:35:26 -04:00
Brandon Thomas bdda458b5b Merge PR #302 2026-10-15 00:35:26 -04:00
Brandon Thomas 515b689127 Merge PR #171 2026-10-15 00:35:26 -04:00
Brandon Thomas 6132b60e9b Merge PR #170 2026-10-15 00:35:26 -04:00
Gert Pellin 36013b8ce4 Merge branch 'main' into fix/776-unknown-params
# Conflicts:
#	ROADMAP.md
#	crates/engine/src/cmd/file.rs
#	crates/engine/src/lib.rs
2026-10-15 06:06:35 +02:00
Brandon ThomasandClaude Opus 5.5 26137acbb2 fix: integrate batched community PRs (#588's blend-space test uses as_chunks for clippy)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 00:01:41 -04:00
Brandon Thomas 84dbba029f Merge IDML/text cluster
# Conflicts:
#	crates/ui-egui/src/i18n.rs
#	crates/ui-egui/src/i18n/ar.rs
#	crates/ui-egui/src/i18n/it.rs
#	crates/ui-egui/src/i18n/ja.rs
#	crates/ui-egui/src/i18n/pt_br.rs
#	crates/ui-egui/src/i18n/uk.rs
2026-10-14 23:54:49 -04:00