Commit Graph
9237 Commits
Author SHA1 Message Date
dotCooCoo cd8e98c6cd DXF: a CNC / CAM preset sets the export options for cutting software
Squashed from #5500 onto main.
2026-11-09 00:25:53 +07:00
dotCooCoo d61a7abc96 Save: include a PDF in new native files by default
Squashed from #5320 onto main.
2026-11-09 00:25:34 +07:00
dotCooCoo f5be571d47 .ai import: Bas Relief opens with its settings
Squashed from #5227 onto main.
2026-11-09 00:25:27 +07:00
BFlat 0b0d2f0ab7 Merge pull request #5557 from dotCooCoo/fix/vertical-path-upright-glyphs
Type: upright glyphs on a vertical path face the path's start, so ligatures read in order
2026-11-09 01:19:05 +08:00
BFlat d4e9d0d6f4 Merge pull request #5518 from dotCooCoo/feat/open-heic-files
File formats: HEIC and HEIF images open and place
2026-11-09 01:18:45 +08:00
BFlat 6ff760dbb1 Merge pull request #5395 from dotCooCoo/fix/toolbar-left-panel-docking
Workspace: add an option to keep Tools beside the canvas with left-side panels
2026-11-09 01:18:27 +08:00
BFlat 96d15708b2 Merge pull request #5313 from dotCooCoo/feat/marquee-selection-qol
Selection QoL: marquee modes with visible feedback
2026-11-09 01:18:09 +08:00
BFlat 1ba7b826b7 Merge pull request #5220 from dotCooCoo/feat/document-info-pattern-objects
Document Info: Pattern Objects lists the objects painted with patterns
2026-11-09 01:17:48 +08:00
BFlat ca24db3e96 Merge pull request #5211 from dotCooCoo/fix/brand-mark-under-desktop-frame
Title bar: the app bar shows no brand mark under the desktop's own frame
2026-11-09 01:17:32 +08:00
BFlat 2cbe9209a2 Merge pull request #5202 from dotCooCoo/fix/family-escape-restores-options
Drawing tools: Escape on an arc, spiral or grid drag puts back the options it changed
2026-11-09 01:17:21 +08:00
BFlat be3285ff7d Merge pull request #5196 from dotCooCoo/fix/perspective-snap-mixed-depths
Perspective grid: Snap to Grid moves objects at every depth by one plane offset
2026-11-09 01:17:03 +08:00
BFlat d360c35d8c Merge pull request #5041 from dotCooCoo/feat/function-keys-cut-copy-paste-r
Shortcuts: F2, F3 and F4 also cut, copy and paste on Windows and Linux
2026-11-09 01:16:47 +08:00
BFlat 41b996b299 Merge pull request #5040 from dotCooCoo/feat/typed-markers-distinct-bullets-r
Type: typed `+`, `#` and `>` start lists with a hollow circle, square and dash
2026-11-09 01:16:32 +08:00
BFlat d6ec81bc82 Merge pull request #5039 from dotCooCoo/feat/typed-lists-preference-r
Type: add a VectorCraft preference for typed list detection
2026-11-09 01:16:16 +08:00
BFlat 0cdec14ccc Merge pull request #5034 from dotCooCoo/fix/image-cache-follows-memory-r
Render: the decoded-image cache can grow to a quarter of installed memory on every desktop OS
2026-11-09 01:15:58 +08:00
BFlat 7feb683ca6 Merge pull request #5027 from dotCooCoo/feat/type-orientation-follows-thread-r
Type: Type Orientation is a setting of the whole thread
2026-11-09 01:15:39 +08:00
BFlat 7d7d6f8d21 Merge pull request #5025 from dotCooCoo/fix/paragraph-reset-panel-mojikumi-tabs-r
Paragraph: Reset Panel also resets the Mojikumi Set and tab stops
2026-11-09 01:15:22 +08:00
BFlat 0121890cba Merge pull request #5023 from dotCooCoo/feat/wheel-ctrl-scrolls-sideways-r
Canvas: a General option makes Cmd/Ctrl-wheel scroll the canvas sideways
2026-11-09 01:15:04 +08:00
BFlat 970150b01a Merge pull request #5015 from dotCooCoo/fix/batch-save-close-data-sets
Actions: Batch over data sets keeps Save and Close and warns when each data set saves over one file
2026-11-09 01:14:45 +08:00
BFlat 8e1a35daa2 Merge pull request #4058 from dotCooCoo/feat/trace-expand-by-color
Image Trace: Expand can group the traced paths by color
2026-11-09 01:14:26 +08:00
BFlat 8cd371e1fc Merge pull request #3995 from dotCooCoo/feat/document-compare-image
Document: document.compare measures how far an artboard's render is from an image
2026-11-09 01:14:08 +08:00
BFlat 90506ff84e Merge pull request #3946 from dotCooCoo/feat/flat-logo-named-colors-only
Image Trace: Flat Logo can trace only the named colors, without a white of its own
2026-11-09 01:13:52 +08:00
BFlat 38a019a47e Merge pull request #2642 from dotCooCoo/fix/one-text-variable-per-object
Variables: a second text variable on one type object is refused
2026-11-09 01:13:32 +08:00
bflatastic 6b0a4c48b0 Docs: keep this batch's status entries after replaying onto main 2026-11-08 23:52:39 +07:00
bflatastic 5de9fc2954 Docs: drop the header lines and rows the older PRs repeated 2026-11-08 23:51:57 +07:00
bflatastic 08f03e606d Docs: one status line in the roadmap and UI parity docs, with #5313's entry 2026-11-08 23:51:51 +07:00
bflatastic df4cd5f9da Docs: keep the status entries of the PRs before this one 2026-11-08 23:51:47 +07:00
dotCooCoo 8b4ef958ac Type: a ligature's font caret on a vertical path divides the proportional cell
Proportional Metrics changes an upright glyph's cell on a vertical path, and its width runs along that changed cell. Its font ligature carets were still divided by the unchanged cell, so the caret, a click and the selection missed the drawn stop. They now divide the same length the width uses.
2026-11-08 23:51:42 +07:00
dotCooCoo f4e51d33d3 Type: spell center in the upright path glyph comment 2026-11-08 23:51:42 +07:00
dotCooCoo 4882488145 Type: upright glyphs on a vertical path face the path's start
In vertical type on a path, every glyph was turned a quarter turn with
its top toward the path's end. An upright glyph's characters then read
backwards along the path, so a ligature's font caret other than its
middle did not line up with the glyph as drawn.

An upright glyph whose top faces the path's end now turns half a turn
about the centre of its cell, so its top faces the path's start. It
keeps the same stretch of the path. Glyphs lying on their side, and
upright glyphs that the Skew, 3D Ribbon and Stair Step effects already
turn this way on a path running to the left, are unchanged. The ligature
stops follow the top of the cell, so the caret, a click and the
selection meet the drawn caret line.
2026-11-08 23:51:42 +07:00
dotCooCoo bd78bb0b11 Docs: paraphrase the HEIF help-page reference 2026-11-08 23:51:41 +07:00
dotCooCoo d5e1c00470 File formats: HEIC and HEIF images open and place
File › Open and File › Place read HEIC and HEIF still images (.heic,
.heif) through heic-rs 0.1.4, the pure-Rust decoder photocraft-heif
uses, and store the pixels as PNG. Single pictures and grids of tiles,
8 to 10 bits, with or without an alpha image, are read with the
container's rotation, mirror and crop applied. A grid without a color
box of its own takes its tiles'. When neither the image nor its tiles
have an nclx box, the HEVC stream's video signal type gives the
samples' matrix and range. An RGB ICC profile, or Display P3 with the
sRGB curve named by an nclx box or, without a color box, by the
stream, is converted to sRGB. The EXIF resolution tags size the image;
without them it is 72 ppi. When the container's rotations turn the
image an odd number of quarter turns, the resolution's axes swap with
the pixels'.

Image sequences, images that aren't HEVC-coded, grids of cropped tiles
and images past the pixel allowance are refused with a message before
the pixels are decoded. The allowance counts each coded picture at the
size its sequence parameter sets give it.

The decoder is in the engine's `heif` feature, which is on by default
and listed by the desktop, CLI and web apps. A build without it still
recognizes the files and refuses them with a message.
2026-11-08 23:51:41 +07:00
dotCooCoo 4ca33bc7a3 Toolbars: document that a null on toggles Keep Tools Beside the Canvas
window.toolsBesideCanvas reads on with opt_bool, which treats null like an omitted value. docs/mcp.md and the params text now say that an omitted or null on toggles the setting and that any other non-boolean value is an error.
2026-11-08 23:51:40 +07:00
dotCooCoo 315ff52ffd Workspace: make keeping Tools beside the canvas an option, off by default
Docked Tools stays at the window's left edge again, outside any panels
docked on the left. Window › Toolbars › Keep Tools Beside the Canvas
(`window.toolsBesideCanvas {on?}`) docks it between those panels and the
canvas instead.

- The setting is its own field in the UI state and in workspaces, and a
  missing field reads as off, so saved state and workspaces keep Tools at
  the window's edge. Built-in workspaces have it off.
- Off, app.rs draws docked Tools before the docking layout, the canvas
  reserves no width for it, and only the full-height window-edge strip
  docks a floating Tools panel. On, the canvas panel draws it, the canvas
  keeps room for it, and both the window edge and the canvas edge dock it
  beside the canvas.
- Turning the setting off forgets the canvas-edge strip, so a strip laid
  out while it was on does not dock Tools. A floating Tools panel stays
  floating when the setting changes.
- `window.panel.dock {panel: "tools"}` docks Tools where the setting says.
- The menu label has a row in every catalog.

Docs: docs/mcp.md, docs/control-protocol.md, the ROADMAP progress log and
docs/target-app-parity.md. The headline-numbers row and the paragraphs
under the status lines are gone, and scores are unchanged.
2026-11-08 23:51:40 +07:00
dotCooCoo 27c292669f UI: preserve window-edge Tools redocking across vertical layouts 2026-11-08 23:51:39 +07:00
dotCooCoo a8f21ac0f6 UI: keep docked Tools beside the canvas with left panels 2026-11-08 23:51:39 +07:00
bflatastic e981a1d3ae Selection: format the frame test's marquee assertion 2026-11-08 23:51:24 +07:00
bflatastic 08b0406da0 i18n: Hindi has the marquee selection labels 2026-11-08 23:51:23 +07:00
bflatastic e43c9bbbea Selection: the centre-point and frame tests look for the selection marquee overlay 2026-11-08 23:51:23 +07:00
dotCooCoo 3405620151 Docs: update marquee feature status and revision history 2026-11-08 23:51:23 +07:00
dotCooCoo 6d87514055 Selection: show marquee rules and offer enclosed and directional modes 2026-11-08 23:51:12 +07:00
dotCooCoo 368f1c1f83 Document Info: Pattern Objects lists the objects painted with patterns
Squashed from #5220 onto main.
2026-11-08 23:50:38 +07:00
dotCooCoo 8c7e7041fd Title bar: the app bar shows no brand mark under the desktop's own frame
On Linux, when the desktop draws the window's frame (KDE, Sway,
Hyprland, COSMIC and X11 sessions), the app bar painted the brand mark
under the desktop's title bar unless System Title Bar was on. The mark
followed the live preference instead of the frame the window has.

The desktop app now records the frame it opened the window with
(VectorcraftApp::desktop_frame), and system_title_bar reads it. A
change to System Title Bar during a session no longer shows or hides
the mark; it changes with the frame at the next start. Embedders
without a window of their own keep the mark.
2026-11-08 23:50:37 +07:00
dotCooCoo 2049082ce7 Drawing tools: Escape on an arc, spiral or grid drag puts back the options it changed
Squashed from #5202 onto main.
2026-11-08 23:50:37 +07:00
dotCooCoo 023ee90657 Perspective grid: Snap to Grid moves objects at every depth by one plane offset
With Snap to Grid on, a move of objects on one perspective plane at
different depths applied the snap correction only to the objects at the
first object's depth, and every other object moved by the pointer's
offset read at its own depth. Those objects left the grid and lost their
spacing.

Every object on the first object's plane now moves by that object's
plane offset plus the correction, so the edge of the joint bounds nearer
a gridline lands on it and the objects keep their spacing. A selection
at one depth snaps as before, and objects on other planes keep their own
offset.
2026-11-08 23:50:37 +07:00
bflatastic def2471454 Layers: the rename test allows F2's Cut alternate 2026-11-08 23:50:36 +07:00
dotCooCoo eaa42374a3 Shortcuts: F2, F3 and F4 also cut, copy and paste on Windows and Linux
Squashed from #5041 onto main.
2026-11-08 23:50:36 +07:00
bflatastic 2464ac02be Type: a continued paragraph's list test types *, since # now starts a square bullet 2026-11-08 23:50:35 +07:00
dotCooCoo 6fce6d1884 Type: text.startList names the bullet each typed trigger starts
The command catalog said "* ", "# ", "> " and "+ " all start a list
with the filled dot. It now names the filled dot, hollow circle,
filled square and dash. The text.startList test checks each of the
four triggers and the marker the layout draws.
2026-11-08 23:50:35 +07:00
dotCooCoo 246b8ed8cd Type: typed +, # and > start lists with a hollow circle, square and dash
Typed list detection gave every bulleted trigger the filled dot. Now
`*` and a space start a list with the filled dot (•), `+` with the
hollow circle (◦), `#` with the filled square (▪) and `>` with the dash
(–), each one of the existing Bullets presets. `1.`, `1)`, `A.` and `A)`
start the same numbered lists as before.

Only the list a typed trigger starts changes. Lists already in a
document keep their bullets, pasted triggers start no list, and Undo
and Redo of a typed list work as before.

Docs: docs/mcp.md (typed list paragraph), docs/target-app-parity.md.
2026-11-08 23:50:35 +07:00