Commit Graph
100 Commits
Author SHA1 Message Date
BFlat c391e1dbf2 Merge pull request #1535 from storytold/u/trace-shared
Image Trace: abutting regions share one curve along their edge (no gaps, no overlaps)
2026-10-13 06:27:57 +07:00
bflatastic 20ec49b2e7 Image Trace: abutting regions share one curve along their edge
Each region's outline was fitted on its own, so the edge between two regions was fitted twice, a little
differently, and left hairline gaps and overlaps.

- An outline is cut at its junctions: the pixel corners where three or more regions meet, where two parts of a
  region touch by a corner only, and where an edge reaches the image's border (each side of the image is a
  neighbour of its own, so the image's corners stay exact). A junction lies where the edges around it say, the
  same for every region around it.
- Each piece between two junctions is the whole edge between two regions. Both get exactly the same points for
  it (shifts are rounded to 1/1024 px so that the two sides agree to the last bit; whether a piece is hard is
  decided by the piece alone) and it is fitted the same way from either side (from its end further left), so it
  is one and the same curve in both paths. A loop without junctions is fitted clockwise from its leftmost point:
  a shape's outline and the hole it leaves in the shape around it are one curve too.
- Stacked layers (Overlapping) share no edges and are cut at the image's border only.

On each preset's own inputs, all sizes and variants (docs/image-trace-quality.md), before -> after:
- Default: gaps 22.2 -> 0.8 px, overlaps 22.4 -> 0.5 px
- 3 Colors: gaps 48.6 -> 0.0, overlaps 29.4 -> 0.0; outlines 0.087 -> 0.104 px off on average
- 6 Colors: gaps 39.0 -> 0.2, overlaps 35.7 -> 0.3; 0.137 -> 0.140 px off, largest 1.09 -> 1.34
- 16 Colors: gaps 34.5 -> 0.2, overlaps 26.4 -> 0.2; 0.133 -> 0.141 px off, largest 1.09 -> 1.31
2026-10-13 06:00:40 +07:00
BFlat 8715130c8b Merge pull request #1522 from anders94/readme-fix
README.md: add clone instructions to quick start
2026-10-13 05:57:22 +07:00
BFlat 6689be0351 Merge pull request #1526 from AyberkA0/feat/3d-inflate-twist-taper-cap
3D and Materials: Inflate takes Twist, Taper and Cap
2026-10-13 05:56:34 +07:00
BFlat c2c8a07b75 Merge pull request #1525 from AyberkA0/fix/3d-twisted-walls
3D and Materials: twisted Extrude & Bevel walls keep their faces
2026-10-13 05:56:18 +07:00
BFlat b83eafd794 Merge pull request #1524 from AyberkA0/fix/3d-twist-range
3D and Materials: Extrude & Bevel's Twist runs 0° to 360°, as documented
2026-10-13 05:56:03 +07:00
BFlat e93fc20294 Merge pull request #1523 from dotCooCoo/feat/mac-menu-sync-skips-drag-steps
macOS: the app no longer reads the menus at every step of a move, scale or shape drag
2026-10-13 05:55:48 +07:00
BFlat 9e2a7c41a0 Merge pull request #1519 from dotCooCoo/feat/many-path-edits-one-pass
Part of #1429: path, Pathfinder and live-object commands add and remove many objects in one pass
2026-10-13 05:55:31 +07:00
BFlat a4ba47a439 Merge pull request #1515 from dotCooCoo/feat/many-row-edits-one-pass
Part of #1429: Layers panel and artboard commands on many rows take time linear in the document
2026-10-13 05:55:21 +07:00
BFlat 93e8c00607 Merge pull request #1517 from fastmikey99/fix/decode-print-size-rasters
Decode print-size rasters in Crop Image trim and the renderer; say when an export is missing an image
2026-10-13 05:55:05 +07:00
BFlat bd9b8a2db3 Merge pull request #1511 from Atalantis/fr-complete-catalog
i18n: complete the French (fr) UI catalog (423 entries)
2026-10-13 05:10:38 +07:00
BFlat c67c25128c Merge pull request #1509 from marcoarnulfo/fix/direct-select-active-anchor-precedence
Direct Selection: a selected path's anchor is picked before one of an object above it
2026-10-13 05:10:23 +07:00
BFlat b9e5536794 Merge pull request #1507 from duydev/feat/vietnamese-localization
G16: Vietnamese interface (vi)
2026-10-13 05:10:08 +07:00
BFlat 15e1f6327f Merge pull request #1502 from dotCooCoo/feat/perf-windows-load-memory
CLI: perf on Windows reports the cores busy and its working set, and the help lists --deep
2026-10-13 05:09:52 +07:00
bflatastic 57a4d9c6e1 French: the shortcut warning starts with a word, as in the other catalogs (the UI fonts have no warning sign) 2026-10-13 05:03:42 +07:00
bflatastic 2ec817e76a Vietnamese: the 3D dialog's and 3D effects' rows the other complete catalogs have 2026-10-13 05:03:41 +07:00
BFlat aebeb66268 Merge pull request #1520 from storytold/u/trace-docs
Image Trace: progress docs for the palette and photo changes
2026-10-13 04:59:45 +07:00
bflatastic cf137c8c90 Docs: Image Trace's colour and photo presets, measured (ROADMAP log, parity evidence) 2026-10-13 04:42:29 +07:00
BFlat e131dfbb1c Merge pull request #1516 from storytold/u/trace-photo
Image Trace: photos trace into smooth tones (smoothing first, stacked layers by lightness)
2026-10-13 04:42:08 +07:00
bflatastic 77f81c8944 Image Trace: photos are smoothed within their tones first, and stacked layers go by lightness
A photo's noise is as large as the step from one palette colour to the next, so noise decided pixel by pixel
which of two neighbouring colours a pixel got: tens of thousands of specks, or (since the palette change)
neighbouring tones merged into one.

- A continuous-tone image (eight colours leave much of it unsaid; flat art, however noisy or unevenly lit, is
  not one) is smoothed before it is quantised: three rounds of a small bilateral filter, which averages noise
  away within a tone and keeps the edges between tones where and as sharp as they were.
- With Method: Overlapping, layers are stacked by lightness, from the largest colour's end of the scale,
  instead of by area. Each layer reaches under those above it, so where two colours meet every layer between
  them in the stack ends on that same edge and shows through its anti-aliasing: by area that was an unrelated
  colour's hairline around every region; by lightness it is a neighbouring tone.
- Ignore White with Overlapping: no layer reaches under the white that is left out.

On each preset's own inputs, all sizes and variants (docs/image-trace-quality.md), before -> after:
- High Fidelity Photo: colour error 2.37 -> 1.75 (2.30 at the baseline), edge error 2.59 -> 1.98, 639 -> 121
  paths (3,653 at the baseline), 25,604 -> 9,818 anchors, specks 152 -> 10; a 16 megapixel photo-like image is
  traced in 3.5 s (31,131 paths) where it was refused
- Low Fidelity Photo: colour error 2.67 -> 2.45, 55 -> 37 paths
- Shades of Gray: 73 -> 17 paths, colour error 9.33 -> 9.26
- The other presets' numbers are unchanged
2026-10-13 04:28:02 +07:00
BFlat 7fadeb4ed2 Merge pull request #1485 from webdevtodayjason/graph-csv-precision
Graph Data: the CSV keeps each value exactly, not rounded to two decimals
2026-10-13 04:06:03 +07:00
BFlat 396d7d2b76 Merge pull request #1487 from itrycodinganditsbad/fix-1458
Tabs panel: drag a tab stop from where the press landed
2026-10-13 04:05:48 +07:00
BFlat e30b1492a1 Merge pull request #1506 from storytold/fix/1483-slider-rails
Fix #1483: sliders in dialogs show their rail
2026-10-13 04:05:31 +07:00
BFlat e6ae1d0df3 Merge pull request #1505 from storytold/fix/1486-template-outline
Fix #1486: a template layer stays in Preview in Outline view
2026-10-13 04:05:18 +07:00
bflatastic dd1c26b627 Part of #1483: sliders in dialogs show their rail
The theme's widget fill matches the dialog background, so the sliders of
Save for Web, the raster export options, Preferences and the opacity
popup showed only their handle. They share one slider widget now, with a
visible rail filled up to the handle.
2026-10-13 04:00:17 +07:00
bflatastic a787fb487c Fix #1486: a template layer stays in Preview in Outline view
In Outline view a template layer drew as outlines like any other, so a
picture placed to be traced turned into a box. It now keeps drawing in
Preview (dimmed as before) while the other layers are in outline.
2026-10-13 04:00:17 +07:00
BFlat ce0c86f91a Merge pull request #1504 from storytold/u/trace-palette
Image Trace: colour presets trace flat art with its own colours (no shattering, no slivers)
2026-10-13 03:55:45 +07:00
bflatastic 4204ce36db Image Trace: a palette of the picture's own colours
Color and Grayscale chose their colours from every pixel, so the blends along anti-aliased edges took palette
entries and traced as slivers, and with more colours asked for than the art has, k-means split flat colours
along their noise and the halves traced as specks all over each other.

- The palette is made from the picture's own colours: a pixel that lies between the pixels on opposite sides
  of it is a blend and counts for nothing (lines one pixel wide and noise are no blends).
- Colours that noise made of one colour merge: close colours whose pixels are mixed through each other. The
  bands of a gradient keep to themselves and stay apart.
- A blend pixel whose nearest palette colour is a third colour (halfway from navy to yellow lies an olive that
  is nearer to a green elsewhere) goes to the nearer of the two colours it lies between.
- Boxes are cut where their two sides differ most (Otsu's criterion) instead of at the median, which split the
  largest colour of flat art along its noise and left two smaller colours in one box.
- Colours are compared in Oklab when pixels are assigned and in k-means.

On each preset's own inputs, all sizes and variants (docs/image-trace-quality.md), before -> after:
- 16 Colors: 69.9 -> 4.2 paths, 1743 -> 66 anchors, outlines 5.08 -> 0.13 px off on average (largest 85.9 ->
  1.09), kinks 1376 -> 4.4, paths in a colour the art doesn't have 5.9 -> 0
- 6 Colors: 21.2 -> 4.0 paths, 4.44 -> 0.14 px off; 3 Colors: colour error 4.86 -> 0.43, 0.33 -> 0.09 px off
- High Fidelity Photo: 3636 -> 639 paths, 81,597 -> 25,604 anchors, colour error 2.50 -> 2.37; a 1 megapixel
  photo-like image 1.98 -> 0.42 s (51,389 -> 4,298 paths), a 4 megapixel one traced (27,583 paths) where it was
  refused
- Low Fidelity Photo: 128 -> 55 paths, colour error 2.59 -> 2.67; Shades of Gray: 91 -> 73 paths, 9.29 -> 9.33
2026-10-13 03:48:30 +07:00
BFlat a891530ef2 Merge pull request #1500 from storytold/fix/1471-text-overflow
Fix #1471: making and restyling type reports text that doesn't fit its frame
2026-10-13 03:44:26 +07:00
BFlat c372585b73 Merge pull request #1501 from storytold/docs/progress-1013a
Docs: ROADMAP 2026-10-12 adds #1430–#1497 (later merges of the day)
2026-10-13 03:43:38 +07:00
bflatastic 8b8fd1476b Fix #1471: making and restyling type reports text that doesn't fit its frame
text.create, text.createInPath, text.setText and text.setStyle answer with
overflow: [id…] for the area type and type on a path whose text doesn't fit (left
out when all fits), and MCP add_text with overflow: true. add_text takes area
type's fit and fitMinPercent.
2026-10-13 03:27:13 +07:00
BFlat 214312f883 Merge pull request #1481 from AyberkA0/fix/3d-curve-sampling
3D and Materials: curves follow a tolerance, and Rotate takes large outlines
2026-10-13 03:27:03 +07:00
BFlat 2c74cd928a Merge pull request #1474 from Skaywalker/i18n-hu-review
i18n(hu): informal address in a row added on merge
2026-10-13 03:26:49 +07:00
bflatastic c1be8b82db Docs: ROADMAP 2026-10-12 adds #1434–#1497 (later merges of the day)
Progress log, evidence, checklist rows and revision history for the
changes merged late on 2026-10-12 that the progress docs didn't have.
2026-10-13 03:25:37 +07:00
bflatastic c3c036daf2 3D and Materials: the edge index's search from outside its grid looks along the side
A point outside the grid can be nearer an edge further along the grid's side than one
straight ahead of it; the search stopped a ring early there. The bucket lookup is one
function.
2026-10-13 03:14:50 +07:00
BFlat 1eb9b34439 Merge pull request #1497 from storytold/w/1457-field-follows-value
Fix #1457: a focused field follows its value when a slider or preview changes it
2026-10-13 03:11:54 +07:00
BFlat b49484af08 Merge pull request #1496 from storytold/w/1442-unknown-params
Fix #1442: an unknown parameter key is an error naming it and the nearest accepted key
2026-10-13 03:11:44 +07:00
BFlat 908b4ddcbc Merge pull request #1495 from storytold/w/1459-surface-limit
Part of #1459: the window's surface may be as large as the graphics adapter allows
2026-10-13 03:11:34 +07:00
BFlat fcc52c3c7b Merge pull request #1494 from storytold/w/1448-transform-objects
Fix #1448, #1460: Transform Objects in the Transform dialogs and Transform Each, and Reflect across an angle
2026-10-13 03:11:24 +07:00
BFlat 499cd4f30c Merge pull request #1493 from storytold/w/1450-pathfinder-group
Fix #1450: the Pathfinder panel works on a group selected alone
2026-10-13 03:11:14 +07:00
bflatastic 3672e0ae84 Fix #1457: a focused field follows its value when a slider or preview changes it 2026-10-13 02:54:33 +07:00
bflatastic 3acc29f8e0 Fix #1442: an unknown parameter key is an error naming it and the nearest accepted key 2026-10-13 02:54:33 +07:00
bflatastic ff6e136b97 Part of #1459: the window's surface may be as large as the graphics adapter allows 2026-10-13 02:54:08 +07:00
bflatastic 897d99a70f Fix #1448, #1460: Transform Objects in the Transform dialogs and Transform Each, and Reflect across an angle 2026-10-13 02:54:08 +07:00
bflatastic 7625feea08 Fix #1450: the Pathfinder panel works on a group selected alone 2026-10-13 02:54:08 +07:00
BFlat e74cb01ecc Merge pull request #1490 from storytold/fix/1465-selected-text
Part of #1465: selected text in value fields is readable
2026-10-13 02:49:42 +07:00
BFlat 67af0cdf82 Merge pull request #1489 from storytold/fix/1466-gray-alpha-tiff
Part of #1466: grayscale TIFFs with an alpha channel or extra channels can be placed
2026-10-13 02:49:31 +07:00
BFlat 3dbb551db3 Merge pull request #1488 from storytold/fix/1462-split-into-grid
Fix #1462: Split Into Grid has its row and column sizes, gutters, totals, Add Guides and Preview
2026-10-13 02:49:20 +07:00
bflatastic 09f62097f0 Part of #1465: selected text in value fields is readable
Selected text in a numeric or text field was drawn in the accent colour on the accent-tinted
selection, in every brightness. The fields that draw their own frame (panel and Control bar fields,
dialog fields, the hex field) now draw it in the strong text colour.
2026-10-13 02:48:41 +07:00
bflatastic 81a568f4c6 Part of #1466: grayscale TIFFs with an alpha channel or extra channels can be placed
File > Place, Relink and Open refused a grayscale TIFF whose pixels carry an alpha channel or
another extra channel: the image decoder reads neither. They are now read like CMYK TIFFs with
alpha: the first extra sample is the transparency when the file says it is alpha (associated alpha
divided back out), and other channels are left out.
2026-10-13 02:48:39 +07:00
bflatastic cb9d93b647 Fix #1462: Split Into Grid has its row and column sizes, gutters, totals, Add Guides and Preview
Object > Path > Split Into Grid took a number of rows and columns and one gutter, and split each
selected path on its own. The dialog now has the documented options, the rows beside the columns:
number, height or width, gutter and total, with Add Guides and Preview. Several selected paths
become one grid over them all, painted as the topmost one, as documented.

object.path.splitIntoGrid takes rowGutter and columnGutter (gutter still sets both), totalHeight
and totalWidth, height and width (the size of each row and column, which sets the total) and
addGuides, which adds ruler guides along the row and column edges on the grid's layer.

Behaviour reference:
https://helpx.adobe.com/illustrator/desktop/manage-objects/edit-objects/divide-or-split-objects.html
2026-10-13 02:48:36 +07:00
BFlat 974325b62a Merge pull request #1464 from dotCooCoo/feat/alt-drag-copies-once
Part of #1429: Alt-drags with the selection and transform tools copy the objects once per drag
2026-10-13 02:48:23 +07:00
BFlat 3a8e1ec0f8 Merge pull request #1463 from webdevtodayjason/fix/plugin-default-range
Plug-ins: numeric defaults stay in their declared range
2026-10-13 02:48:07 +07:00
BFlat 05667c40b1 Merge pull request #1461 from Losminek/cs-sync
i18n(cs): catch up with strings added since the Czech catalog
2026-10-13 02:47:52 +07:00
BFlat 0d8b08ccd4 Merge pull request #1478 from storytold/u/trace-subpixel
Image Trace: edges to a fraction of a pixel in Black and White, Grayscale and Color
2026-10-13 02:06:03 +07:00
bflatastic fcd7e3b42d Image Trace: edges to a fraction of a pixel in Black and White, Grayscale and Color
Each crack between an inside and an outside pixel is moved to where the pixels across it say the edge is (the
blend of the two tones in the column of pixels across the crack; a thin line by the centroid and sum of its
tone; hard-edged images are read as staircases), and the outline is fitted as Flat Logo mode fits its own:
corners put back, straight runs as lines, a round outline as a circle, the rest as few curves as Paths allows.
Snap Curves To Lines straightens slightly curved runs and makes arcs. A fit that strays from its outline
gives way to a plainer one, and at last to the outline's own points.

On each preset's own inputs, all sizes and variants (docs/image-trace-quality.md):
- Default: outlines 0.313 -> 0.091 px off on average, largest 1.51 -> 1.02; edge error 17.2 -> 10.1;
  gaps between abutting paths 63.5 -> 22.2 px, overlaps 67.0 -> 22.4 px
- Black and White Logo: 0.270 -> 0.064 px off, kinks 15.3 -> 0.3, anchors 3.78 -> 2.73 times the art's
- Technical Drawing: 0.201 -> 0.086 px off; Line Art: 0.158 -> 0.093
- Worse: anchors on blurred and scanned thin lines (Line Art 25 -> 77 on average), High Fidelity Photo
  (colour error 2.30 -> 2.50, anchors 46,866 -> 81,597, 1 megapixel photo-like image 0.37 -> 1.98 s)
2026-10-13 01:55:17 +07:00
bflatastic a17e3057de Image Trace quality harness: an aliased variant, and every drawing can be written out 2026-10-13 01:45:57 +07:00
BFlat 82ac5c92ea Merge pull request #1453 from AyberkA0/feat/3d-rotate-extrude-inflate
Effect › 3D and Materials: Extrude & Bevel, Inflate and Rotate
2026-10-13 01:38:27 +07:00
BFlat 7718b62735 Merge pull request #1452 from dotCooCoo/feat/raster-effects-follow-document-edits
Render: raster effects are made again when patterns, symbols, images, settings or fonts change
2026-10-13 01:38:14 +07:00
BFlat 63e0bff91d Merge pull request #1451 from dotCooCoo/feat/text-frames-huge-coordinates
Type: frames and paths beyond 1,000,000,000 pt hold no text, and layout limits its search for room
2026-10-13 01:37:59 +07:00
BFlat e2177c0d3a Merge pull request #1445 from giang17/fix-fitcheck
Fix #1444: text.fitHeadline sees wrapping in a frame one line tall
2026-10-13 01:37:37 +07:00
bflatastic 2cf2b972f5 3D and Materials: the bevel and rotation options take their documented names, and the new messages are in every catalog
Bevel Shape, Space, Bevel Inside, Bevel both sides and Presets, as the public 3D and Materials panel
options page names them. The 3D effects' error messages get rows in the twelve complete catalogs.
2026-10-13 00:52:40 +07:00
BFlat 9f0a91b638 Merge pull request #1449 from storytold/fix/1423-affinity-short-frame
Fix #1423: an Affinity text frame too short for its first line is made taller instead of showing nothing
2026-10-13 00:30:41 +07:00
BFlat f2c7c17eb1 Merge pull request #1455 from storytold/u/trace-harness
Image Trace: a quality harness and the baseline for every preset
2026-10-13 00:12:25 +07:00
bflatastic 182a2cda4b Image Trace: a quality harness and the baseline numbers for every preset
crates/trace/tests/quality draws its inputs from known vector art (no image files), traces them with every
built-in preset and measures fidelity, distance from the true outlines, economy, artefacts, time and memory.
docs/image-trace-quality.md records the numbers on main before any change, beside the same measures of an
open tracer run as a black box. No change to the tracer.
2026-10-12 23:56:36 +07:00
BFlat 80af380a6a Merge pull request #1430 from dotCooCoo/feat/many-object-edits-one-pass
Part of #1429: Edit and Object commands on many objects take time linear in the document
2026-10-12 23:52:06 +07:00
BFlat 9251edf1dc Merge pull request #1447 from storytold/docs/progress-1012g
Docs: ROADMAP 2026-10-12 adds #1397–#1428 (later merges of the day)
2026-10-12 23:51:48 +07:00
bflatastic 988f52ecc8 Fix #1423: an Affinity text frame too short for its first line is made taller instead of showing nothing 2026-10-12 23:42:56 +07:00
bflatastic 25c33b6927 Docs: ROADMAP 2026-10-12 adds #1397, #1402, #1404, #1409, #1413–#1415, #1418, #1426–#1428 2026-10-12 23:42:39 +07:00
BFlat baf9693f0f Merge pull request #1440 from EricKuck/feat/ai-open-from-editing-data
.ai import: editingData "always" and convert --editing-data open a file from its editing data even where its page draws differently
2026-10-12 23:29:22 +07:00
BFlat e01a0a70be Merge pull request #1439 from EricKuck/feat/ai-editing-data-art-styles
.ai import: art styles, a clipping path's own fill, compound paths of looks and a group's own transparency from the editing data
2026-10-12 23:29:06 +07:00
BFlat 911c65de34 Merge pull request #1438 from EricKuck/feat/ai-editing-data-gradients-meshes
.ai import: radial and skewed gradient matrices, focal points and stop order, gradient meshes and artboard names from the editing data
2026-10-12 23:28:49 +07:00
BFlat 83d271fb89 Merge pull request #1435 from EricKuck/feat/svg-knockout-in-order
SVG export: knockout groups of opaque art draw in order, without masks
2026-10-12 23:28:36 +07:00
BFlat 8811cc552e Merge pull request #1434 from EricKuck/fix/pdf-import-group-fill-stroke
PDF import: an editor's .ai keeps its RGB numbers, and a fill faded or masked by its group keeps its stroke apart
2026-10-12 23:28:19 +07:00
bflatastic 9e4ed2d430 Catalog rows for the trusted editing data note; the fuzz reads hostile editing data trusted too 2026-10-12 23:08:58 +07:00
BFlat 04bc43c802 Merge pull request #1428 from storytold/q/1412-transform-dialog-preview
Fix #1412: the Transform dialogs preview on the canvas, and arrow keys step their angles and percentages
2026-10-12 21:10:53 +07:00
BFlat 57e7cd3b0e Merge pull request #1427 from storytold/q/1408-transform-anchors
Fix #1408: the Transform tools and commands act on the anchors selected with Direct Selection
2026-10-12 21:10:37 +07:00
BFlat 487cc29b57 Merge pull request #1426 from storytold/q/1410-ai-compound-paint
Fix #1410: an .ai compound path takes its last path's paint, and paths grouped in it stay its paths
2026-10-12 21:10:21 +07:00
bflatastic 4d17702536 Fix #1412: the Transform dialogs preview on the canvas, and arrow keys step their angles and percentages 2026-10-12 21:01:15 +07:00
bflatastic a41d59604b Fix #1408: the Transform tools and commands act on the anchors selected with Direct Selection 2026-10-12 21:01:15 +07:00
bflatastic 003234a056 Fix #1410: an .ai compound path takes its last path's paint, and paths grouped in it stay its paths 2026-10-12 21:01:15 +07:00
BFlat c70bd33de0 Merge pull request #1418 from Messhias/docs/1417-mcp-guide-sync
Docs: sync mcp.md with acting prefs and shipped command families
2026-10-12 20:50:24 +07:00
bflatastic 3da2685065 Docs: correct the hyphenation exceptions and appendConverted notes in mcp.md (#1417) 2026-10-12 20:40:44 +07:00
BFlat 54afb67b4f Merge pull request #1409 from vbasky/fix/1396-fat-stroke
Fix #1396: a stroke wider than its closed shape paints solid
2026-10-12 20:36:00 +07:00
BFlat 22f14bec24 Merge pull request #1404 from vbasky/fix/1385-paste-picture
Paste the picture when the clipboard text beside it is blank.
2026-10-12 20:22:21 +07:00
bflatastic 1168c319b0 Close the hole whenever the inner offset of a closed stroke has crossed over
The check added for #1396 dropped the inner contour only when the path itself fell in the hole, which takes a stroke more than twice as wide as the shape. Between one and two times the size (a 30 pt ellipse with a 50 pt stroke), and on rectangles with round or bevel joins, the hole stayed.

An offset contour is now left out when no point of it lies half the weight from its subpath: it is then nowhere the edge of the stroke. Subpaths are judged one by one, and only when the stroke is at least as wide as the subpath's bounds, so ordinary strokes take the same single call as before.
2026-10-12 20:22:07 +07:00
BFlat c26ff9a22a Merge pull request #1402 from vbasky/fix/1229-corner-bounds
Hide the selection bounds while a corner-radius drag is underway.
2026-10-12 20:22:04 +07:00
BFlat 2a0a279c93 Merge pull request #1415 from storytold/fix/isolate-missing-id
object.isolate: an id that doesn't exist says so
2026-10-12 20:06:24 +07:00
bflatastic ec38b00a22 object.isolate: an id that doesn't exist is reported as such 2026-10-12 20:06:04 +07:00
BFlat d6bace14c3 Merge pull request #1397 from vbasky/fix/1389-inspect-paint
Report compound-path paint and a non-normal blend in document summaries.
2026-10-12 20:05:59 +07:00
bflatastic a366e8ee0d Part of #1389: a compound path's members say so instead of claiming no paint; docs 2026-10-12 20:05:34 +07:00
bflatastic e72a010e1c Merge remote-tracking branch 'origin/main' into K-1397ff 2026-10-12 20:05:33 +07:00
BFlat 92ed381625 Merge pull request #1414 from storytold/fix/1387-ai-text-only-page
Fix #1387: a .ai whose PDF part draws only text opens from it
2026-10-12 20:04:59 +07:00
BFlat 772f056f9c Merge pull request #1413 from storytold/fix/1388-pdf-import-overprint
Fix #1388: PDF and .ai import and file.place keep overprint
2026-10-12 20:04:39 +07:00
bflatastic 7f5d8a3db1 Fix #1387: a .ai whose PDF part is only text opens from it 2026-10-12 19:50:53 +07:00
bflatastic bfb173e967 Fix #1388: PDF import keeps overprint 2026-10-12 19:50:53 +07:00
BFlat 5e4fc4e3af Merge pull request #1405 from storytold/docs/progress-1012f
Docs: ROADMAP 2026-10-12 adds #1375–#1395 (community PRs of the day)
2026-10-12 19:45:30 +07:00
bflatastic 106925c74b Docs: ROADMAP 2026-10-12 adds #1375, #1376, #1379, #1382, #1383, #1386, #1390–#1392, #1395 2026-10-12 19:36:41 +07:00
BFlat e22a11eda8 Merge pull request #1395 from storytold/dialog-focus-first-enabled
A just-opened dialog gives its focus to the first enabled field, not a greyed-out one
2026-10-12 19:30:53 +07:00
bflatastic 689ad46999 A just-opened dialog gives its focus to the first enabled field, not a greyed-out one 2026-10-12 19:30:20 +07:00