Commit Graph
8884 Commits
Author SHA1 Message Date
BFlat 389e6faf7a Merge pull request #6003 from mockydevs/fix/eps-huge-image-skips-data
EPS import: an image too large to read skips its data instead of failing the file
2026-11-07 09:35:49 +08:00
BFlat baab0eadbe Merge pull request #6002 from mockydevs/fix/eps-cvi-radix
EPS import: cvi and cvr read radix numbers (eps2write spot colours with spaces)
2026-11-07 09:35:34 +08:00
BFlat cddf45801e Merge pull request #6001 from mockydevs/fix/eps-subfile-long-count
EPS import: SubFileDecode reads counts past 4 MiB (eps2write files with long streams open)
2026-11-07 09:35:19 +08:00
BFlat b207e3f7a9 Merge pull request #6000 from mockydevs/fix/eps-bind-readonly-procs
EPS import: bind leaves the procedures it already bound alone (Ghostscript eps2write files open)
2026-11-07 09:35:04 +08:00
BFlat fde645e32e Merge pull request #5993 from dotCooCoo/fix/mcp-save-warning-labels
Save: notes on unread save options name the legacy or non-PDF-compatible .ai, in every save command
2026-11-07 09:34:47 +08:00
BFlat c38f1cc1ee Merge pull request #5990 from dotCooCoo/fix/ai-mask-lone-object
.ai import: opacity mask art of one object opens as that object
2026-11-07 09:34:37 +08:00
BFlat 6cf98654f6 Merge pull request #5989 from dotCooCoo/fix/pdf-password-docs
Docs: PDF password export says when the file ID and the bytes vary
2026-11-07 09:34:22 +08:00
BFlat 4dbc16acf8 Merge pull request #5986 from dotCooCoo/fix/artboards-menu-new-active
Artboards: the panel menu's New Artboard makes the new artboard active
2026-11-07 09:34:06 +08:00
Don Omondi dfa9548938 EPS import: an image too large to read skips its data
An image over the pixel cap was left out without reading its data, so
the program went on to read that data as PostScript and the file failed
to open (Ghostscript's eps2write writes a page with a large inline image
this way). The data is now skipped: the filters that find their own end
(ASCIIHexDecode, ASCII85Decode, SubFileDecode) read the file up to it,
without decoding what they pass.
2026-11-07 08:19:40 +07:00
Don Omondi fdbd116577 EPS import: cvi and cvr read radix numbers
cvi and cvr read a string as the PostScript syntax reads a number
(PLRM 3rd ed., cvi, cvr), so (16#20) cvi is 32. The reader parsed strings
as decimal only. Ghostscript's eps2write prolog undoes a name's #20 escape
that way, so its files with a spot colour named with spaces stopped
reading at that colour.
2026-11-07 08:19:36 +07:00
Don Omondi 8c57a65ee0 EPS import: SubFileDecode reads counts past the allocation cap
The count of a SubFileDecode filter bounds what it passes through, not
what it allocates, but the reader refused counts over 4 MiB as a
rangecheck. Ghostscript's eps2write files read each content stream with
currentfile Length () /SubFileDecode filter, so a page whose stream is
longer than 4 MiB failed to open.
2026-11-07 08:19:33 +07:00
Don Omondi 06a035e86b EPS import: bind leaves the procedures it already bound alone
bind makes each procedure it goes into read-only and ignores read-only
procedures (PLRM 3rd ed., bind). The reader bound them again, so a prolog
that binds a procedure holding an earlier-bound one, after defining a name
such as M as an operator, turned that procedure's own variable M into
setmiterlimit. Ghostscript's eps2write prolog does this, and its files with
sampled functions (transfer, black generation) failed to open.
2026-11-07 08:19:29 +07:00
dotCooCoo 1e2ff653b5 Save: the save commands' params text names the notes on options
document.save's params text, which file.saveAs, file.saveCopy and
file.saveAsTemplate share, now says that the warnings also name each key
given in `options` that the format doesn't read.
2026-11-07 08:19:25 +07:00
dotCooCoo 7ee6b429ba MCP: save_file notes name the legacy or non-PDF-compatible .ai
save_file's note for a key in `options` that the written format doesn't
read named every .ai file a PDF-compatible .ai, also when the save wrote
a version 7 file (`aiVersion: "7"`) or one without PDF content
(`pdfCompatible: false`).

The save itself now writes that note, beside its note on a top-level
`compress`, `version`, `preview` or `precision`, and names the file it
writes, including when it reuses the options the document was last saved
with. save_file returns the save's reply unchanged, and
`run_command document.save` and the other save commands give the same
notes.
2026-11-07 08:19:24 +07:00
dotCooCoo 3d7dda200e .ai import: opacity mask art of one object opens as that object
The reader put an opacity mask's art in a group every time, so a mask
made from one path came back from a saved .ai as a group holding the
path, while Make Opacity Mask keeps one object as the art. This also
changes how existing files with single-object masks open, because
the editing data of a .ai, an EPS and a PDF goes through this reader:
the art is the object.

A hidden object or a guide stays in a group, because the canvas draws
the art's root whether it is shown or not and whether guides show. A
clipping path alone stays a clipping group.

The editing copy writes a plain group of one object as a group (u, the
object, U), so it reads back as a group. Its other plain groups are
still written as their members. Hidden mask art is written shown,
because the canvas draws it and a group read back would not.
2026-11-07 08:19:20 +07:00
dotCooCoo ad5ef55b30 Docs: PDF password export says when the file ID and the bytes vary
Encryption keeps the /ID already in the trailer and draws one from the
seed only when there is none. A PDF 1.3 export draws no random bytes, so
it repeats with SOURCE_DATE_EPOCH set, while PDF 1.4 and later differ
between runs. Their random bytes are in the encryption dictionary and,
at PDF 1.6 and later, in the AES initialization vectors.
2026-11-07 08:19:16 +07:00
dotCooCoo f4576de615 Artboards: the panel menu's New Artboard makes the new artboard active
The panel menu's item added the artboard and left the active artboard
where it was, while the panel's button, the Control bar and Properties
made the new one active. All four now call one helper. With the Artboard
tool, the new artboard is then the only one selected.
2026-11-07 08:19:12 +07:00
BFlat 9592b6a5ca Merge pull request #5982 from dotCooCoo/fix/link-watch-worker-gone
Links: a link check whose worker ends without a result no longer stops later checks
2026-11-07 09:11:28 +08:00
BFlat 60f1bff1d8 Merge pull request #5978 from dotCooCoo/fix/ai-image-knockout-shape
.ai import: images, meshes, blends and styled objects keep the knockout shape flag
2026-11-07 09:11:07 +08:00
BFlat d0d915a721 Merge pull request #5977 from kylekanouse/fix/svg-textpath-anchor
SVG: centred and right-aligned type on a path keeps its place
2026-11-07 09:10:51 +08:00
BFlat 4e16340f2c Merge pull request #5946 from ruchirguitar/fix/4947-indic-hyphenation
Add hyphenation for eleven Indian languages
2026-11-07 09:10:37 +08:00
BFlat 4b29225c30 Merge pull request #5965 from dotCooCoo/feat/ai-editing-data-s5
.ai save: the editing copy keeps type as type
2026-11-07 09:10:24 +08:00
BFlat 51aea90f07 Merge pull request #5972 from dotCooCoo/fix/selection-overlay-per-frame
Canvas: selection outlines and anchors are reused between frames
2026-11-07 09:10:03 +08:00
BFlat afdc490d3a Merge pull request #5971 from slafebre/fix/5964-gradient-dash-corner
Part of #5964: stroke gradients cover an arrowhead to the end of its reach
2026-11-07 09:09:47 +08:00
BFlat 073923ee30 Merge pull request #5969 from dotCooCoo/fix/eyedropper-keeps-story-selection
Type: switching to the Eyedropper keeps a whole-story selection
2026-11-07 09:09:33 +08:00
BFlat 085bbf5495 Merge pull request #5968 from slafebre/fix/5714-smooth-width-profiles
Fix #5714: widths run smoothly between width points
2026-11-07 09:09:19 +08:00
BFlat ee4f711fbe Merge pull request #5967 from dotCooCoo/fix/ai-brushed-paths
.ai import: paths with an Art brush open with the brush on their stroke
2026-11-07 09:09:01 +08:00
BFlat 7adc7fa40c Merge pull request #5966 from dotCooCoo/fix/ai-envelope-stroked-box
.ai import: envelopes map from their stroked box when the file saves its size
2026-11-07 09:08:45 +08:00
BFlat 9950bde2e7 Merge pull request #5963 from dotCooCoo/fix/pdf-export-cost
PDF export: members of a plain group or layer are measured once to leave out off-page art, and the link walk measures only what it reads
2026-11-07 09:08:28 +08:00
BFlat e940a55cb6 Merge pull request #5959 from dotCooCoo/fix/ai-symbol-section-strings
.ai import: ASCII85 data in a section does not hide the section's end
2026-11-07 09:08:13 +08:00
BFlat aeb697c8ea Merge pull request #5958 from FractalEncrypt/fix/shape-tool-centre-and-rotate
Shape tools: move the selection from its centre point and turn it outside a corner
2026-11-07 09:07:57 +08:00
BFlat b59e31203e Merge pull request #5957 from FractalEncrypt/fix/transform-fields-tab-order
Transform fields: Tab moves from one field to the next, one press each
2026-11-07 09:07:42 +08:00
BFlat 5a07696a8e Merge pull request #4732 from SofiaAFigueredo/feat/4684-unify-home-screen-ui
UI: centre the Home screen and use the accent for the Discord button (#4684)
2026-11-07 09:07:26 +08:00
BFlat 4244b96afc Merge pull request #5955 from dotCooCoo/fix/open-text-layout
Type: layout keeps each font face's shaping plans
2026-11-07 09:07:10 +08:00
BFlat 8df48df103 Merge pull request #5953 from mockydevs/fix/legacy-ai-smooth-image-clip-5264
Legacy .ai export: a flattened transparent image's clip follows its edge smoothly
2026-11-07 09:06:50 +08:00
BFlat 4db8bbc97c Merge pull request #5952 from dotCooCoo/feat/ai-pathfinder-effect-commands
.ai import: the other Effect › Pathfinder operations open as live effects on a group
2026-11-07 09:06:14 +08:00
BFlat 3bceade119 Merge pull request #5951 from dotCooCoo/fix/ai-active-artboard
.ai save: the editing copy names the active artboard
2026-11-07 09:05:42 +08:00
BFlat 76eca8e98e Merge pull request #5950 from mockydevs/feat/progress-indicator-5930
Opening a slow file shows a progress window with Cancel and Continue in Background
2026-11-07 09:05:27 +08:00
BFlat b497793902 Merge pull request #5948 from Hamza0101/feat/bulgarian-text-language
Languages: Bulgarian, with its quote marks and the fonts' Bulgarian forms (#5945)
2026-11-07 09:05:15 +08:00
BFlat 98c6e8ab5d Merge pull request #5947 from mockydevs/fix/grid-snap-anchors
Direct Selection: with Snap to Grid, a dragged straight segment lands its anchors on the grid
2026-11-07 09:04:57 +08:00
BFlat 0ebce55584 Merge pull request #5942 from mockydevs/feat/paste-spreadsheet-table
Paste: cells copied from a spreadsheet paste as a table of type over gridlines
2026-11-07 09:04:38 +08:00
BFlat d79c3574af Merge pull request #5940 from dotCooCoo/fix/paint-without-bounds
Appearance and Eyedropper: reading an object's paint does not measure its bounds
2026-11-07 09:04:16 +08:00
BFlat af4f590b6b Merge pull request #5939 from mockydevs/feat/alt-numpad-codes-5108
Type: Alt + numeric-keypad codes (Alt+0176 → °) type their character on Windows; type.insert takes a code
2026-11-07 09:03:59 +08:00
BFlat 84fc4b74ac Merge pull request #5938 from mockydevs/feat/3d-effects-on-groups
3D effects: Extrude & Bevel, Inflate and Rotate apply to groups, turned about one shared axis
2026-11-07 09:03:47 +08:00
BFlat e688fbea0e Merge pull request #5937 from mockydevs/feat/glyph-bounds-corners-5112
Snap to Glyph: each glyph's bounding-box corners are snap points, and the box turns with rotated type
2026-11-07 09:03:27 +08:00
BFlat bc57bdaee3 Merge pull request #5932 from Hamza0101/fix/paste-into-new-type-keeps-formatting
Type: pin that a Type-range paste into new point type keeps its formatting (#5929)
2026-11-07 09:03:09 +08:00
BFlat 8029748283 Merge pull request #5931 from mockydevs/fix/perspective-plane-offsets
Perspective grid: a grid dragged off its preset reports no preset name
2026-11-07 09:02:47 +08:00
BFlat c14ec164a2 Merge pull request #5928 from adikshan11/fix/library-untitled-format-copies
Don't copy a library on every save when its format keeps no title
2026-11-07 09:02:27 +08:00
BFlat d074756192 Merge pull request #5927 from mockydevs/fix/transform-effect-copies-5920
Effects: a Transform effect's copies of a filled and stroked path stack one above another
2026-11-07 09:02:10 +08:00
BFlat 0f0ded95b4 Merge pull request #5924 from jayzed80/fix/text-huge-gutter-stall
fix(text): a gutter too huge to step past no longer stalls area type layout
2026-11-07 09:01:34 +08:00