Davit Matchakhelidze
151d30b2f2
Merge upstream main into ka-language
...
# Conflicts:
# crates/ui-egui/src/menus.rs
2026-10-28 04:45:10 +04:00
aiongg
3929d94d89
Merge pull request #2230 from Jeremy8776/feat/install-scope-policy
...
Windows installation policy: CADCraft
2026-10-27 17:06:47 -04:00
aiongg
729f27de74
ci: use storytold/craft-common-actions at the merged installer-policy commit
2026-10-27 20:51:59 +00:00
Dylan M. Taylor
2721aa8982
Enforce Rust coding standards via Clippy ( #2239 )
...
* chore(clippy): enforce workspace Rust quality gates
* refactor(doc): use explicit entity imports
* refactor(constraints): split residual evaluation
* refactor(fonts): split mtext layout
* refactor(render): use explicit entity imports
* fix(fonts): retain height for empty paragraphs
* fix(doc): repair dimension and dynamic block links
* refactor(render): split entity drawing helpers
* docs: document workspace lint inheritance
* refactor(render): isolate dimension geometry
* refactor(engine): use explicit imports
* refactor(engine): split complex edit paths into helpers
* refactor(io): split DXF read and write helpers
* refactor(ui): split canvas interaction and drawing
* refactor(ui): split command and drawing helpers
* test(i18n): split locale preference checks
* fix(ui): use current egui scope id API
* fix(dim): preserve text offset and ellipse grip behavior
2026-10-27 15:55:09 -04:00
Davit Matchakhelidze and Claude Opus 5.5
f948acd30b
i18n(ka): bring the Georgian catalog up to date
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-27 23:32:16 +04:00
Davit Matchakhelidze
6967a79c34
Merge upstream main into ka-language
2026-10-27 23:32:16 +04:00
Jeremy
360bee4dcc
fix(installer): check the exact architecture-specific machine folder
...
The pre-signing check matched any folder named Program Files, so it rejected
a valid MSI when Windows resolves Program Files elsewhere, accepted the 64-bit
root for an x86 package and accepted a different app name. Build the expected
folder from the package architecture's resolved root and the policy name.
2026-10-27 19:12:39 +00:00
aiongg
26da98e320
fix(ui-egui): Ui::scope_id for the block description field ( #2336 )
...
Ui::id is deprecated in the pinned egui, so clippy -D warnings fails on main
since #2113 .
2026-10-27 14:55:46 -04:00
aiongg
b4a8773c3c
Merge pull request #2193 from dotCooCoo/feat/measure-arc-segments
...
AREA and DIST: the Arc option measures arc segments
2026-10-27 13:44:25 -04:00
aiongg
180c1885bb
Merge pull request #2177 from dotCooCoo/feat/layout-saveas-template
...
LAYOUT: SAveas saves a layout as a drawing template
2026-10-27 13:44:03 -04:00
aiongg
9d32ead9e6
Merge pull request #2175 from dotCooCoo/feat/named-viewports
...
View: Viewports > Named Viewports... lists, restores and deletes saved viewport configurations
2026-10-27 13:43:43 -04:00
aiongg
2c73e5f063
Merge pull request #2162 from dotCooCoo/fix/area-too-large
...
AREA: an area, perimeter or running total past f64's range is refused
2026-10-27 13:43:23 -04:00
aiongg
ec762af206
Merge pull request #2113 from dotCooCoo/feat/block-description
...
Blocks: Modify > Object > Block Description..., and the Block Editor saves a changed description
2026-10-27 13:43:02 -04:00
aiongg
786367e9ba
Merge pull request #2331 from Silvertree2010/perf/export-speed
...
Speed up PNG export: stroke runs of hairline polylines as one path
2026-10-27 13:41:15 -04:00
Jeremy
d1847cf9a0
fix(installer): resolve the wizard scope and folder correctly
...
Real msiexec runs (per-user and all-users, silent and wizard) found two defects
that the metadata fixtures cannot see:
- "Only for me" published ALLUSERS=2, so FindRelatedProducts treated the run as
per-machine and skipped the existing per-user copy. An interactive upgrade
left two registered products and uninstall left files behind. The page now
leaves ALLUSERS unset for a per-user choice.
- Windows Installer resolves Program Files once, for the context it started in,
so choosing "Everyone" in the wizard installed into the user profile with a
machine-wide registration. The wizard now sets the new-install folder itself
after the choice (Program Files, Program Files (x86) for 32-bit, or the
per-user Programs folder). Silent installs are unchanged.
check-install-policy.ps1 now fails if either regresses.
2026-10-27 15:32:13 +00:00
NetterSilver and Claude Opus 5.5
850dd94f3c
Stroke runs of hairline polylines as one path in the rasteriser
...
PNG export (and everything else drawn by raster::render) stroked every
polyline primitive with its own tiny-skia stroke_path call: a new path
and a newly built paint pipeline per primitive. Hatch patterns, linetype
dashes and text strokes produce long runs of short polylines in one
colour, so that per-call setup dominated the render.
Consecutive hairline polylines (zero width, or at most one pixel when
anti-aliased; the default for PNG export) with the same colour, alpha
and width are now collected into one path and stroked once. tiny-skia
draws hairlines segment by segment straight onto the pixmap with the
same per-contour round caps, so the pixels and their blending order are
unchanged. Thicker strokes (filled outlines), fills, points, infinite
lines and polylines with non-finite or far-out screen coordinates break
the run and are drawn exactly as before.
Adds crates/io/examples/export_bench.rs, which exports examples/
apartment.dxf repeated on a grid (10x10: 5,800 entities) and reports
median/min wall time per format.
PNG export, 10x10 grid, 11 interleaved runs (Ryzen, 16 threads, Linux):
before: median 1790.7 ms, min 1703.3 ms
after: median 1037.6 ms, min 926.0 ms (-42.1 %)
A/A noise on the same setup: 1.1 %. Output PNGs are byte-identical
(bench at 10x10 and 20x20, CLI export of apartment.dxf and a 23,200-
entity drawing). New tests compare render() against stroking each
primitive on its own.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-27 15:47:42 +01:00
aiongg
0ff1b03537
refactor(ui): use craft-ui's ComboBox for every dropdown ( #2303 )
...
* ui: use craft_ui::ComboBox so dropdown menus grow back (egui#5225)
* chore(deps): craft-libs 60d60d48 (dropdown fixes)
* chore(deps): craft-libs 6af63481 (dropdown fixes)
* chore(deps): craft-libs 4d7b82f7 (dropdown fixes)
* chore(deps): craft-libs 92d392cf (#387 merged)
2026-10-27 10:26:40 -04:00
Jeremy
7b947c3383
docs(installer): say that silent installs are per-user and when the scope page appears
2026-10-27 12:26:55 +00:00
Davit Matchakhelidze and Claude Opus 5.5
b98c55c7fa
i18n(ka): translate Font (the text editor's font field)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01YMTAbGNRxnMEzRvYnQGphF
2026-10-27 16:09:18 +04:00
Jeremy
29e2a139db
fix(installer): harden install-policy checks and packaging-lint workflow
2026-10-27 12:00:53 +00:00
Jeremy
6795f0bd03
fix(installer): address scope and ARM64 review feedback
2026-10-27 12:00:53 +00:00
Jeremy
8581d30a7f
feat(installer): default to a per-user ArtCraft folder
2026-10-27 12:00:53 +00:00
Davit Matchakhelidze and Claude Opus 5.5
53c7d25ee0
i18n(ka): bring the Georgian catalog up to date
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01YMTAbGNRxnMEzRvYnQGphF
2026-10-27 15:43:32 +04:00
Davit Matchakhelidze
0dd5d5af31
Merge upstream main into ka-language
...
# Conflicts:
# crates/ui-egui/src/i18n.rs
2026-10-27 15:42:59 +04:00
aiongg
d864a08b01
Merge pull request #2220 from aiongg/layout
...
refactor: shared module layout (craft-contrib#20)
2026-10-26 21:30:19 -04:00
skylar taylor-barrick
c3b8e7b7fe
Merge pull request #2227 from storytold/fix/nextest-0.9.150
...
ci: require nextest 0.9.150
2026-10-26 17:35:13 -06:00
skylar
b06fd039fb
ci: require nextest 0.9.150
...
Use the fixed release for GHSA-vc25-qg58-w57c.
2026-10-26 14:13:04 -06:00
aiongg
7d2ca90783
refactor(engine): move Session methods from session.rs to session/
2026-10-26 19:44:13 +00:00
aiongg
af9798e200
refactor(doc): move entity.rs items to entity/
2026-10-26 19:44:13 +00:00
aiongg
c042e98abb
refactor(render): move dim.rs items to dim/arrowheads.rs and dim/text.rs
2026-10-26 19:44:13 +00:00
aiongg
994af5cac9
refactor(render): move lib.rs items to display, pipeline, viewports, props, draw, text_entity, dim_draw, blocks
2026-10-26 19:44:13 +00:00
aiongg
970e6bb9d4
refactor(io): move dxf_read.rs items to dxf_read/
2026-10-26 19:18:38 +00:00
aiongg
736a83464a
refactor(io): move dxf_write.rs items to dxf_write/
2026-10-26 19:18:38 +00:00
aiongg
aa5dfc2099
refactor(engine): move lisp/builtins.rs items to lisp/builtins/
2026-10-26 19:18:38 +00:00
aiongg
f12b7570b7
refactor(engine): move lib.rs types to error, view, doc_state, settings, running, last_used and Session methods to session.rs
2026-10-26 19:18:38 +00:00
aiongg
795eb62762
refactor(engine): move cmd/draw.rs items to cmd/draw/
2026-10-26 19:18:38 +00:00
aiongg
e7b92c5b8e
refactor(engine): move cmd/annotate.rs items to cmd/annotate/
2026-10-26 19:18:38 +00:00
aiongg
6028cdf187
refactor(engine): move cmd/modify2.rs items to cmd/modify2/
2026-10-26 19:18:38 +00:00
aiongg
172f9ca44c
refactor(engine): move cmd/draw2.rs items to cmd/draw2/
2026-10-26 19:18:38 +00:00
aiongg
c5e7db78e4
refactor(engine): move cmd/modify.rs items to cmd/modify/
2026-10-26 19:18:38 +00:00
aiongg
31a04e3dbe
refactor(ui-egui): move canvas.rs items to canvas/
2026-10-26 19:18:38 +00:00
aiongg
627ffb8d7e
refactor(engine): move grips_tests.rs to grips/tests.rs
2026-10-26 18:18:08 +00:00
aiongg
18f47e021f
refactor(engine): move cmd/inquiry/usage_tests.rs to cmd/inquiry/usage/tests.rs
2026-10-26 18:18:08 +00:00
aiongg
21d80b3231
refactor(engine): move cmd/txt2mtxt_tests.rs to cmd/txt2mtxt/tests.rs
2026-10-26 18:18:07 +00:00
aiongg
62deed7880
refactor(engine): move cmd/mleader_edit_tests.rs to cmd/mleader_edit/tests.rs
2026-10-26 18:18:07 +00:00
aiongg
45bcfa6f77
refactor(engine): move cmd/constraints_tests.rs to cmd/constraints/tests.rs
2026-10-26 18:18:07 +00:00
aiongg
627b5a3350
refactor(engine): move cmd/annotate_tests.rs to cmd/annotate/tests.rs
2026-10-26 18:18:07 +00:00
aiongg
1006e487da
refactor(engine): move cmd/modify2_tests.rs to cmd/modify2/tests.rs
2026-10-26 18:18:07 +00:00
aiongg
fcd4a0c9eb
refactor(engine): move cmd/draw2_tests.rs to cmd/draw2/tests.rs
2026-10-26 18:18:07 +00:00
aiongg
dbd2bf5dad
style: cargo fmt after moving test modules out
2026-10-26 18:18:07 +00:00