effectcraft/crates
Claude dda9961889
G2: font menus list the installed fonts
A Windows user reported that the Properties panel's font menu offered only the bundled Inter,
JetBrains Mono and Noto Serif. The system font folders were scanned only when a project asked for
a family the bundled fonts lack, so until then every font menu (Properties, Character, Essential
Graphics) and `file.findMissing {what: fonts}` saw the bundled families alone, on every
platform. Listing the families now scans the system fonts first, and the desktop app starts that
scan on a background thread at launch so the menus are complete when first opened.

The style menus in the Properties and Character panels list the chosen family's own styles
instead of a fixed Regular / Medium / SemiBold / Bold / Italic. Both menus build their lists only
while open.

New query for agents: `text.fonts {query?, rescan?}` (MCP tool `list_fonts`) lists every family
with its styles, origin (bundled / system / user) and own-language name; `rescan` picks up fonts
installed since launch.

Tests: a fresh-process test that the family list includes every family in the platform's font
folders without a prior scan (failed before), and `text.fonts` filtering, rescan and per-family
styles, and the `list_fonts` MCP tool.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019EjTYdt76hTG4Kh2CJFnCr
2026-10-06 15:14:55 +00:00
..
automation G2: font menus list the installed fonts 2026-10-06 15:14:55 +00:00
av1enc Never crash: AV1 encoder without expect()/unreachable!() 2026-10-04 13:22:59 -04:00
color Never crash: deny panic lints in the already-clean crates and apps 2026-10-04 14:52:39 -04:00
effects M13.35: Roto Brush trained model — swappable segment module, MobileSAM in pure Rust 2026-10-05 17:55:02 +07:00
engine G2: font menus list the installed fonts 2026-10-06 15:14:55 +00:00
export Never crash: deny panic lints in the already-clean crates and apps 2026-10-04 14:52:39 -04:00
expr Merge pull request #6 from storybored379/pr/expr-runtime-stack-leak 2026-10-05 12:10:53 +07:00
geom Never crash: deny panic lints in the already-clean crates and apps 2026-10-04 14:52:39 -04:00
gpu GPU compositor declines devices whose limits its pipelines exceed 2026-10-05 10:52:04 -04:00
hevcenc Never crash: HEVC encoder without expect()/unreachable!() 2026-10-04 13:23:03 -04:00
host M13.35: Roto Brush trained model — swappable segment module, MobileSAM in pure Rust 2026-10-05 17:55:02 +07:00
interchange Never crash: reject timeline documents nested too deeply 2026-10-04 14:05:57 -04:00
keyframe Keyframes: a Hold key no longer eases the motion into it 2026-10-04 01:17:34 -07:00
lottie Never crash: Lottie enum values can't overflow 2026-10-04 13:24:14 -04:00
media Merge pull request #17 from storytold/pr/never-crash-media 2026-10-04 15:29:59 -04:00
model Never crash: deny panic lints in the already-clean crates and apps 2026-10-04 14:52:39 -04:00
opusenc Never crash: Opus and VP9 encoders without expect() 2026-10-04 13:23:06 -04:00
path M13.30: the ArtCraft mark in the Tools bar, About and Home; VectorCraft sibling link 2026-10-05 12:49:47 +07:00
pdf Never crash: PostScript radix numbers outside 2..=36 2026-10-04 14:21:14 -04:00
plugin Never crash: deny panic lints in the already-clean crates and apps 2026-10-04 14:52:39 -04:00
project M3.9: an edit that only allocates ids still counts as a change 2026-10-05 06:43:10 +07:00
psd Never crash: bound PSD descriptor nesting 2026-10-04 14:05:55 -04:00
raster Never crash: raster and path crates without expect()/unwrap()/unreachable!() 2026-10-04 13:41:09 -04:00
render M4.14: content-keyed RAM preview frames; proxies in the disk cache's content key 2026-10-05 14:39:17 +07:00
script Merge pull request #10 from storybored379/pr/spatial-tangent-getter-names 2026-10-05 12:11:18 +07:00
segment M13.36: face tracking trained model — MediaPipe Face Landmarker on a pure-Rust TFLite interpreter 2026-10-05 20:39:45 +07:00
svg Never crash: reject SVGs nested too deeply 2026-10-04 14:05:58 -04:00
text G2: font menus list the installed fonts 2026-10-06 15:14:55 +00:00
time Never crash: Tick and timecode arithmetic can't overflow or divide by zero 2026-10-04 14:20:33 -04:00
track M13.36: face tracking trained model — MediaPipe Face Landmarker on a pure-Rust TFLite interpreter 2026-10-05 20:39:45 +07:00
ui-egui G2: font menus list the installed fonts 2026-10-06 15:14:55 +00:00
vp9enc Never crash: Opus and VP9 encoders without expect() 2026-10-04 13:23:06 -04:00