Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
92e2e0c
Lints: three boolean expressions clippy's nonminimal_bool flags
RICHRAN2030 Oct 16, 2026
0ad1f7b
Barcode: barcode and QR Code generation
RICHRAN2030 Oct 16, 2026
fc5475c
Barcode: the standard on each symbology, value checking, batch grids,…
RICHRAN2030 Oct 16, 2026
c854ab2
Barcode panel: the batch section stays where it is
RICHRAN2030 Oct 16, 2026
28a00f5
Barcode panel: a folded batch, a fresh value on every type change, gr…
RICHRAN2030 Oct 17, 2026
8a50371
Barcode panel: an option redraws the selected barcode at once
RICHRAN2030 Oct 17, 2026
f3b32e1
Barcode panel: lay the panel out in labelled sections, and always off…
RICHRAN2030 Oct 17, 2026
fb793e8
Merge remote-tracking branch 'origin/main' into feat/barcode-qr-codes
RICHRAN2030 Oct 18, 2026
071eaa2
Cargo.lock: the barcode crate at the workspace's 0.12.0
RICHRAN2030 Oct 18, 2026
a4ba9e9
panels: keep tests_blend behind cfg(test)
RICHRAN2030 Oct 18, 2026
2fa6f70
Barcode: the params description parses, and the new languages get the…
RICHRAN2030 Oct 18, 2026
7a4e691
Merge remote-tracking branch 'origin/main' into feat/barcode-qr-codes
RICHRAN2030 Oct 18, 2026
86ce745
Cargo.lock: the workspace at 0.13.0
RICHRAN2030 Oct 18, 2026
801d4e1
Merge remote-tracking branch 'origin/main' into feat/barcode-qr-codes
RICHRAN2030 Oct 18, 2026
ac4a87b
Barcode: the review's findings — GS1 separators, odd digit runs, C, o…
RICHRAN2030 Oct 18, 2026
1e75c36
Barcode: a GS1 fixed-length identifier of the wrong length is refused
RICHRAN2030 Oct 18, 2026
d499487
Barcode panel: a refused value stays in the field to be corrected
RICHRAN2030 Oct 18, 2026
dc3b4ac
GS1: fixed-length fields carry digits, and 410 to 417 are GLNs
RICHRAN2030 Oct 18, 2026
65deefc
Text: the bidi test's glyph carries the paragraph's Glyph Scaling
RICHRAN2030 Oct 18, 2026
0fe5612
Barcode panel: a comma separates batch codes only where it cannot be …
RICHRAN2030 Oct 18, 2026
d18ba82
Color: the gradient-recored points sample in the stops' model
RICHRAN2030 Oct 18, 2026
2c19612
widgets: the combo test applies the texture deltas its frames produce
RICHRAN2030 Oct 18, 2026
6c2235e
Merge remote-tracking branch 'origin/main' into feat/barcode-qr-codes
RICHRAN2030 Oct 18, 2026
b368d89
Patterns: the swatch name clash reads without a double negation
RICHRAN2030 Oct 21, 2026
e942708
Merge remote-tracking branch 'origin/main' into feat/barcode-qr-codes
RICHRAN2030 Oct 21, 2026
3ecf187
Merge with main: the lock follows 0.14.0 and ka.tsv gets the new strings
RICHRAN2030 Oct 21, 2026
720d880
Render: the lam-alef test asks for a font that joins it with a requir…
RICHRAN2030 Oct 21, 2026
cc6306c
Merge remote-tracking branch 'origin/main' into feat/barcode-qr-codes
RICHRAN2030 Oct 21, 2026
a216bc5
Merge follow-ups: a new nonminimal_bool site, and the barcode message…
RICHRAN2030 Oct 21, 2026
d211a01
Merge remote-tracking branch 'origin/main' into feat/barcode-qr-codes
RICHRAN2030 Oct 21, 2026
01f1e63
Type: the upright-ruby check allows the installed face's own proportions
RICHRAN2030 Oct 21, 2026
64a59ad
Merge remote-tracking branch 'origin/main' into feat/barcode-qr-codes
RICHRAN2030 Oct 21, 2026
5e1dce5
Merge remote-tracking branch 'origin/main' into feat/barcode-qr-codes
RICHRAN2030 Oct 21, 2026
b340aaf
Merge remote-tracking branch 'origin/main' into feat/barcode-qr-codes
RICHRAN2030 Oct 22, 2026
076b18c
i18n: the Georgian barcode rows move off the end of the catalog
RICHRAN2030 Oct 22, 2026
2fd9317
Effect Gallery: the selection check reads without a double negation
RICHRAN2030 Oct 22, 2026
27921e5
Merge remote-tracking branch 'origin/main' into feat/barcode-qr-codes
RICHRAN2030 Oct 22, 2026
18c08ec
Merge remote-tracking branch 'origin/main' into feat/barcode-qr-codes
RICHRAN2030 Oct 22, 2026
ca04e69
Merge remote-tracking branch 'origin/main' into feat/barcode-qr-codes
RICHRAN2030 Oct 22, 2026
6de7d73
Merge remote-tracking branch 'origin/main' into feat/barcode-qr-codes
RICHRAN2030 Oct 22, 2026
12e8759
Merge remote-tracking branch 'origin/main' into feat/barcode-qr-codes
RICHRAN2030 Oct 22, 2026
c3b0d20
Merge remote-tracking branch 'origin/main' into feat/barcode-qr-codes
RICHRAN2030 Oct 23, 2026
0dc0631
Merge remote-tracking branch 'origin/main' into feat/barcode-qr-codes
RICHRAN2030 Oct 23, 2026
4d7efd7
Merge remote-tracking branch 'origin/main' into feat/barcode-qr-codes
RICHRAN2030 Oct 23, 2026
8e90882
Finish the merge: resolve markers left in the parity doc and ROADMAP
RICHRAN2030 Oct 23, 2026
eb95a41
i18n: translate the barcode strings into Turkish
RICHRAN2030 Oct 23, 2026
73c154e
Cargo.lock: the barcode crate takes the workspace version
RICHRAN2030 Oct 23, 2026
adf63a3
Merge remote-tracking branch 'origin/main' into feat/barcode-qr-codes
RICHRAN2030 Oct 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions ASSETS.md
Original file line number Diff line number Diff line change
Expand Up @@ -286,6 +286,7 @@ Generated-in-code art is original and has no file to list. This covers the defau
| `assets/icons/rotate-cw.svg` | Lucide Icons and Contributors | https://lucide.dev (lucide-static v1.49.0; header kept in file) | ISC (`assets/icons/LICENSE-lucide.txt`) | |
| `assets/icons/ruler.svg` | Lucide Icons and Contributors | https://lucide.dev (lucide-static v1.49.0; header kept in file) | ISC (`assets/icons/LICENSE-lucide.txt`) | |
| `assets/icons/save.svg` | Lucide Icons and Contributors | https://lucide.dev (lucide-static v1.49.0; header kept in file) | ISC (`assets/icons/LICENSE-lucide.txt`) | |
| `assets/icons/scan-barcode.svg` | Lucide Icons and Contributors | https://lucide.dev (lucide-static v1.49.0; header kept in file) | ISC (`assets/icons/LICENSE-lucide.txt`) | |
| `assets/icons/scaling.svg` | Lucide Icons and Contributors | https://lucide.dev (lucide-static v1.49.0; header kept in file) | ISC (`assets/icons/LICENSE-lucide.txt`) | |
| `assets/icons/scissors.svg` | Lucide Icons and Contributors | https://lucide.dev (lucide-static v1.49.0; header kept in file) | ISC (`assets/icons/LICENSE-lucide.txt`) | |
| `assets/icons/search.svg` | Lucide Icons and Contributors | https://lucide.dev (lucide-static v1.49.0; header kept in file) | ISC; derived from Feather, also MIT (`assets/icons/LICENSE-lucide.txt`) | |
Expand Down
12 changes: 12 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ vectorcraft-cad = { path = "crates/cad" }
vectorcraft-eps = { path = "crates/eps" }
vectorcraft-metafile = { path = "crates/metafile" }
vectorcraft-plugins = { path = "crates/plugins" }
vectorcraft-barcode = { path = "crates/barcode" }
vectorcraft-affinity = { path = "crates/affinity" }
vectorcraft-scriptcheck = { path = "crates/scriptcheck" }

Expand Down
4 changes: 4 additions & 0 deletions ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ everything is measured from our code against Illustrator's public documentation.
| Ecosystem and plug-ins | 15% | 30–60 | [gaps.md › G17](docs/gaps.md#g17-ecosystem-third-party-plug-ins) |
| AI features (generative) | 0% | 30–60 + owner decision | [gaps.md › G18](docs/gaps.md#g18-generative-ai-features) |
| Agent automation | beyond Illustrator | — | [mcp.md](docs/mcp.md) |
| Barcodes and QR Codes | beyond Illustrator | — | [target-app-parity.md](docs/target-app-parity.md) |

The dimension hours overlap (feature rows hold some UI, format and AI work), so they don't add up to the total.

Expand Down Expand Up @@ -136,6 +137,7 @@ Ranked; detail in [docs/roadmap.md](docs/roadmap.md) and [docs/gaps.md](docs/gap
- 2026-10-22: Effect › Sketch › Conté Crayon: a black crayon in the dark areas and a white one in the light areas, on mid-grey paper whose texture (Brick, Burlap, Canvas, Sandstone; Scaling, Relief, Light Direction, Invert) breaks the strokes, with Foreground Level and Background Level; an original approximation, defaults unverified. Every Photoshop-style filter is now in (57/57); the Effect Gallery remains (4–6 h).
- 2026-10-22: Ruby (ふりがな) for live text: `type.ruby` sets or removes a reading over a byte range of the selected type — above it in horizontal type, right of the column in vertical type (or below/left), start/centre/end aligned, at 1–100% of the base size (default half), overhanging or squeezed to the base width. It is saved in the native file, laid out with its line growing (following lines move on), drawn on the canvas, and written in SVG and PDF as outlines where ruby is present. UI panel and type on a path are next. Headline numbers unchanged.
- 2026-10-22: PDF accessibility: titled exports set `/ViewerPreferences << /DisplayDocTitle true >>`, so viewers show the document title rather than the file name and title checks can pass (#3646). Headline numbers unchanged.
- 2026-10-16: Barcodes and QR Codes: a Barcode panel and the new `vectorcraft-barcode` crate draw EAN-13, EAN-8, UPC-A, UPC-E, GS1-128, Code 128 (A and B and C), Code 39, Code 93, ITF-14 and ITF-25 and QR Codes at the sizes their standards give. The picker names the standard beside each type and starts it on an example value, Check asks the encoder about a value before anything is drawn, the digits are set in OCR-B and turned into outlines by default, every symbol sits on a white box of its standard size, and a Batch section draws one code a line as a grid, ten to a row from the artboard's top-left corner. Beyond Illustrator, which needs a third-party plug-in for this: no parity score moves. Headline scores and estimates are unchanged.

- 2026-10-14: Document fonts register every explicitly supplied craft-fonts family after the existing Japanese, Arabic and Thai prefix; optional empty input remains supported. Headline scores and estimates are unchanged.

Expand All @@ -154,6 +156,7 @@ Ranked; detail in [docs/roadmap.md](docs/roadmap.md) and [docs/gaps.md](docs/gap
| 2026-10-17 | About 145 community PRs landed in six batches, each through the full gate, plus our fixes on top. Crashes and hostile input: an image's RGBA size is checked from its header before decoding, without overflowing, in the renderer, sampling, recoloring and Crop Image (#2442, #2468, #2407), PDF Add Around and huge art are clamped (#2440), graph axis labels past i64, `+` in hex colours and XML ids are handled (#2610, #2470, #2447), Document Raster Effects resolutions open in range (#2579), Batch names stay in their folder (#2504). Regressions: floating panel groups are opaque again while the docked card keeps its rounded corners (#2499), the Wayland pointer returns over panels (#2502). New: MCP cancels long exports, answers while one runs and reports progress (#2546), `doc_inspect` takes ids, kind and paging (#2543), raster export of a page rectangle (#2511), `text.create` returns bounds (#2478), PDF presets and ICC profiles persist (#2547), screen-reader names for widgets (#2611), Expand on Intertwine (#2622, fixes #2540), Duplicate/Copy/Cut of several artboards (#2567), print presets by name (#2607), TSV data sets (#2608), planar TIFF (#2598), Alt-click a swatch onto a gradient stop (#2623), Shift-click ranges in Links, Graphic Styles and Libraries (#2612, #2613, #2618), Space+Shift rotates the view (#2601), Presentation Mode keys (#2583), Small Caps and super/subscript buttons (#2508). Fidelity: editable vector art from Illustrator EPS (#2571), `.ai` Drop Shadow Darkness (#2513), overprint preview with Darken (#2514), Generic CMYK black round-trips (#2503), PNG sRGB chunk (#2519), kerning at a caret (#2518), tab widths in justified area type (#2487), Transform copies keep their own gradients (#2486), smooth Zig Zag (#2475), Live Corners round up to their neighbours (#2484), kerning across style runs (#2554), SVG letter spacing on justified lines (#2574), Dimension tool snapping (#2482), gradient chips (#2495), Transform panel flips and percentages (#2400, #2404). Later the same day: PostScript `.ps` and `.epsf` files open (#2461), EPS images with CCITTFax compression draw (#2445), Illustrator 3 EPS without layers (#2436), `.ai` type opacity and blend modes (#2420), envelope meshes and compound holes in `.ai` (#2410, #2444), CMYK image soft masks in PDF export (#2448), Show Transparency Grid saved with the document (#2488), Save Selection in the Layers panel menu (#2483), Character and Paragraph Reset Panel (#2479, #2438), Cmd/Ctrl+Shift double-click releases a guide (#2467), Shift+Enter keeps a field active (#2431), Shift keeps reshaped handles perpendicular (#2425), emptied type keeps its style (#2464), Smart Blur radius (#2443), freeform gradients recolour (#2397), mesh slivers (#2456), Recolor wheel handles in CMYK (#2454), and six Image Trace fixes (#2387, #2584, #2586–#2589). Fifth batch: Optical Margin Alignment (#2563), Window › Blend panel (#2573), graph column designs (#2406), Live Paint Gap Options (#2424), the SVG Interactivity panel (#2437), RTF placed as area type (#2524), the Touch Type tool (#2469), pattern fills expand into clipped tiles (#2616), Save and Export ask before replacing a file an added extension names (#2619), the Artboard tool's Control bar and Contextual Task Bar (#2559, #2556), Alt-click New Artboard for its options (#2496), Shift-click in Brushes (#2562), the Move dialog remembers the last move (#2542), PDF export uses the document's assigned profiles (#2536), Printer Setup opens the selected printer's preferences on Windows (#2577). Sixth batch: Effect › Artistic › Cutout, Neon Glow and Poster Edges (#2453), View › Rulers › Change to Global / Artboard Rulers (#2416), Symbol Options 9-slice guides (#2512), Create Gradient Mesh on an embedded image (#2538), Rotate View cursors and the Mac trackpad rotation gesture (#2594, #2644), choice parameters as dropdowns in the inline effect editor (#2582), Group Selection picks and moves one path of a compound path (part of #2441), Shift-click ranges in the Artboards panel (#2626), Lock Variables (#2631), a layer dropped under the last row goes to the bottom (#2632), and robustness work: huge selections draw bounded overlays (#2635, #2645, part of #2460), values out of range in presets and files are clamped (#2656), whole-number checks for counts (#2638, #2659), exports warn about overset type (#2628), symbol instances measured by their art (#2614), colour-managed Eyedropper in CMYK documents (#2664). Later: Effect › Rasterize (#2409), variable-font axis sliders in the Character panel (#2710), Image Trace Create Strokes on an exact distance transform with Guo–Hall thinning and a skeleton graph (#2703–#2705), Auto Color keeps rare colours (#2702), large images trace with a warning (#2700), a 1e9 pt input bound on Reshape Segment, Convert Anchor Point and the Pencil (#2709), task-bar Connect, Corner and Smooth for selected anchors (#2697), PDF 0 w strokes import as hairlines (#2696), threading text from the out port (#2713, part of #2572), a panel per swatch library with Persistent (#2714, #2603), installed plug-ins kept across restarts (#2695, #2541). Languages: Dutch, Danish and Indonesian complete (#2393), Simplified Chinese status and error messages (#2578), translated file filters and presets (#2590). Headline numbers unchanged (estimated). |
| 2026-10-16 | Symbol Options › Export Type (Graphic or Movie Clip, default Movie Clip) with Registration; `symbol.options` / `symbol.list` (G5).
| 2026-10-15 | Cursors: 36 more tool states get cursors of their own. Node editing follows the public manual (Direct Selection's anchor squares, Reshape Segment, Group Selection's plus, the arrow hollow on a snap, the Alt-copy arrowheads), the Anchor Point caret, the Curvature pen and Free Transform's side-shear arrows are drawn; Lasso, the freehand, symbolism and other tools borrow a drawn cursor until theirs is drawn. `crates/tools/src/cursors.toml` lists every cursor for whoever draws them, and `cargo xtask cursors` warns about one missing from it. Scores unchanged. |
| 2026-10-16 | Barcodes and QR Codes: a Barcode panel and the new `vectorcraft-barcode` crate draw EAN-13, EAN-8, UPC-A, UPC-E, GS1-128, Code 128 (A and B and C), Code 39, Code 93, ITF-14 and ITF-25 and QR Codes at the sizes their standards give. The picker names the standard beside each type and starts it on an example value, Check asks the encoder about a value before anything is drawn, the digits are set in OCR-B and turned into outlines by default, every symbol sits on a white box of its standard size, and a Batch section draws one code a line as a grid, ten to a row from the artboard's top-left corner. Beyond Illustrator, which needs a third-party plug-in for this: no parity score moves. |
| 2026-10-16 | About 160 community PRs landed, each through the full gate. Crashes and hostile files: damaged PDF dictionaries and arrays no longer crash import (#2133, #2240, #2244, #2271), area type with huge row or column counts opens (#2109), hostile mesh edges are bounded (#2051). New: Dimension tool (#1788), legacy version 7 `.ai` save (#1794), Object › Intertwine (#2095), Apple Pencil and touch input on the web (#1740), Sample Color from Screen (#2257), Drop Shadow Darkness (#2252), Smart Blur edge modes (#2154), Scribble variations (#2180), Free Distort corners in its dialog (#2134), Rotate View presets (#2106), tritanopia proofing (#2234), Layers panel filters (#2087), Hide Template (#2117), File › Automate Batch through the Actions panel (#1938), dataset and graph CSV (#1929, #1941), Reset Tracking and Kerning (#2274), Alt+Enter copies in Transform fields (#2236), Shift+Tab panels (#2254), Control bar isolation, Recolor and image Replace (#2258, #2079, #2081). Revolve renders smooth with Cap on by default (#1193); Image Trace keeps tiny parts, thin outlines and shared corners, and Grayscale gradients are grey (#2012, #2025, #2263, #2264, #2265, #1879). Import: many `.ai`, EPS and PDF fidelity fixes (#2014–#2016, #2029, #2030, #2044, #2046, #2050–#2052, #2058, #2129, #2199, #2202, #2218), images up to 1 GB decoded (#2060), `.ai`/`.ait`/`.svgz` files paste from a file manager (#2148, #2201). Fixes across fields (arithmetic #2069, #2209, #2022; caret #1403), New Document (#2158, #2176), menus (#2232), shortcuts (#2235, #2146), Transform Each axes (#2227), Paste in Place (#1926), Color Picker tab order (#1937, #1939) and more. Languages: Bulgarian, Greek, Swedish and Finnish complete under the tests, pt-br completed. Details per PR in the PRs; headline numbers unchanged (estimated). |
| 2026-10-14 | Brazilian Portuguese (`pt-br`) covers the whole interface and status/error messages under the completeness tests (#1914); Localization 71% → 74% (measured), hours 55–90 → 50–85. |
| 2026-10-14 | Direct Selection: deleting an interior anchor of an open path leaves separate surviving runs. Delete/Backspace and history regressions cover the gap; explicit Remove Anchors remains connected. Headline numbers unchanged. |
Expand Down Expand Up @@ -208,6 +211,7 @@ The full pre-standard record of what landed is kept in [docs/roadmap.md](docs/ro
| 2026-10-16 | minor | 3D lighting: one to ten directional lights, a selectable light list, Add Light and Delete Light, independent settings and artboard gestures; ambient applied once and smooth RGB vector export; scores and hour estimates unchanged |
| 2026-10-16 | minor | 3D lighting: opaque RGB Color for the shared directional light, with neutral ambient, preview/reset controls and smooth vector Revolve shading; scores and hour estimates unchanged |
| 2026-10-17 | minor | Progress log row for the Background Export progress dialog (#2564); headline numbers unchanged. |
| 2026-10-16 | minor | Barcodes and QR Codes: a Barcode panel and the new `vectorcraft-barcode` crate draw EAN-13, EAN-8, UPC-A, UPC-E, GS1-128, Code 128 (A and B and C), Code 39, Code 93, ITF-14 and ITF-25 and QR Codes at the sizes their standards give. The picker names the standard beside each type and starts it on an example value, Check asks the encoder about a value before anything is drawn, the digits are set in OCR-B and turned into outlines by default, every symbol sits on a white box of its standard size, and a Batch section draws one code a line as a grid, ten to a row from the artboard's top-left corner. Beyond Illustrator, which needs a third-party plug-in for this: no parity score moves. |
| 2026-10-14 | minor | G11: open-path anchor Delete removes adjoining segments without bridging the gap; explicit Remove Anchors keeps its reconnect/refit behavior. Scores and hours unchanged. |
| 2026-10-14 | minor | Document fonts register every explicitly supplied craft-fonts family after the existing Japanese, Arabic and Thai prefix; optional empty input remains supported. Headline scores and estimates are unchanged. |
| 2026-10-14 | minor | Progress log rows for the later merges of 2026-10-14 (#1630–#1875 as listed there); headline numbers unchanged. |
Expand Down
21 changes: 21 additions & 0 deletions assets/icons/scan-barcode.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
16 changes: 16 additions & 0 deletions crates/barcode/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
[package]
name = "vectorcraft-barcode"
version.workspace = true
edition.workspace = true
license.workspace = true
description = "VectorCraft barcode and QR Code encoders, written from the public symbology standards"

[lints]
workspace = true

[dependencies]
serde = { workspace = true }
thiserror = { workspace = true }

[dev-dependencies]
serde_json = { workspace = true }
Loading
Loading