What's Changed
- Parse \genfrac in LaTeX import so binomials survive export by @Silvertree2010 in #4242
- Linux desktop entry: stop declaring text/plain by @marcoarnulfo in #4206
- Lists: draw Arabic letter numbering (arabicAlpha, arabicAbjad) by @7mz410 in #4218
- Cap list label length when expanding level template text by @Silvertree2010 in #4003
- Limit DOCX XML attributes by @Higgs32584 in #3857
- Indent a whole selected paragraph on Tab instead of replacing it by @Silvertree2010 in #4291
- Layout: a bookmark is no line-break opportunity by @marcoarnulfo in #4211
- Layout: a no-break space is as wide as a space, not as the font's own U+00A0 glyph by @marcoarnulfo in #4210
- Stretch justified lines that end in a manual line break (#3924) by @MarekSpodBiedry in #4023
- fix(formats): support backslash space, soft breaks and zero-width spaces in RTF by @divyanshu2074 in #2250
- fix(formats): ignore block and inline HTML comments in markdown import by @divyanshu2074 in #2225
- Fix Markdown code span line endings by @Lucenx9 in #3804
- fix(formats): support negative timezone offsets and author fallback in ODT metadata by @divyanshu2074 in #2189
- fix(docx): support sym hex prefixes and normalize break types and note references by @divyanshu2074 in #2413
- Cover repeated DOCX style replacement across saves by @finwarman in #2469
- Keep Arabic-Indic digits as typed in Arabic numeral mode by @Silvertree2010 in #3329
- Mini toolbar: the alignment buttons mark the alignment seen on the page, as the ribbon does by @marcoarnulfo in #3886
- #4177: regex Replace expands capture groups by @benandez in #4201
- Keep a document's own styles and defaults when applying a style set by @Silvertree2010 in #4013
- #1475: Scale all style font sizes at once by @dkhlapov in #2620
- AutoFormat As You Type: optional "Add a period with double-space", and an AutoCorrect Options button in Options › Proofing (#2848) by @dhruvLearner8 in #3318
- Bound total LCS work per review.compare by @Silvertree2010 in #4006
- Bound MCP stdio request and bridge reply line reads by @Silvertree2010 in #3950
- fix/canvas-picture-crop-activation by @will1788 in #2440
- Make three-column header/footer presets editable tables (#2197) by @MMexicann in #2266
- #1845: filter-as-you-type command search in Customize Ribbon, QAT and Keyboard pickers by @SlavenDj in #1848
- #2982: File ▸ Info Custom Document Properties dialog by @maxm11 in #2997
- Gap 9: open AES-encrypted Word files (Standard encryption) by @dkhlapov in #2628
- ci(deps): bump Swatinem/rust-cache from 2.9.2 to 2.9.3 in the actions group across 1 directory by @dependabot[bot] in #3945
- Security: bounded file reads, Read Aloud and macOS signing temp file (#3680, #3666) by @benandez in #3877
- Port WordCraft to egui 0.37 with current-main editing changes by @skylartaylor in #4241
- feat: startup update prompt modal and direct self-updating by @dylanmtaylor in #4298
- Small fixes: MERGEFIELD in any case, 18 SonarCloud closures, one unused constructor by @VoiceLessQ in #4233
- build: pin craft-update to craft-libs main (495e597) by @dylanmtaylor in #4345
- build: pin craft-update to craft-libs main (495e597) by @dylanmtaylor in #4352
- chore(deps): safe dependency refresh by @skylartaylor in #4356
- #39: per-user Windows installer that needs no administrator rights by @benandez in #2560
- Security: layout runs in linear time on hostile documents (#3706) by @benandez in #3866
- Security: bound proofing work in affixes, hyphenation and Turkish (#3661, #3657, #3625) by @benandez in #3868
- Security: legacy .doc reader budgets (#3642, #3708–#3712) by @benandez in #3871
- Security: Zotero bridge budgets; loopback-only client, same-user check on Linux only by @benandez in #3876
- Security: render, PDF and metafile budgets by @benandez in #3870
- Security: import/export format fixes — LaTeX verbatim escape, Markdown link escaping, importer limits (#3713, #3714, #3705) by @benandez in #3873
- Security: document model work bounds for media, math and paste (part of #3614) by @benandez in #3874
- Security: font ingestion checks sizes and counts before allocating (#3703, #3716) by @benandez in #3869
- Security: DOCX package/writer hardening — glossary privacy scrub, case-insensitive part names, chart and font limits, Flat OPC inlining (#3692, #3704, #3742, #3648) by @benandez in #3872
- Security: bound layout memory (linked text boxes, repeated headers, crops, gridAfter) by @benandez in #3867
- tests(layout): build the nbsp test document without struct-update syntax by @dylanmtaylor in #4380
- #3874 follow-up: text box paste charges only what it copies (PDF imports keep their text) by @benandez in #4381
- #3871 follow-up: .doc picture decode charges zlib input and DIB copies; budget scales with the file by @benandez in #4382
- Security: engine and MCP authority checks (#3699, #3735–#3737, #3698) by @benandez in #3875
- #3869 follow-up: WOFF2 pre-check counts contours as wuff does (crash on open); tripped hinting isn't cached by @benandez in #4384
- #3876 follow-up: Zotero owner check streams the socket table and refuses when it can't read it by @benandez in #4383
- Task panes: draw them with craft_ui::panes; Styles docks left or right or floats by @aiongg in #3109
- Task panes: drop a pane outside or inside a docked pane to order a side by @aiongg in #4386
- Cover formatting copy and paste shortcuts after the egui 0.37 migration by @skylartaylor in #4355
- View › New Window opens another window on the same document by @aiongg in #4391
- Several open documents: File › New opens another, and MCP, control and CLI address a document by id by @aiongg in #4388
- Several open documents: recovery per document, Document1 naming, warnings for hidden documents by @aiongg in #4389
- One native window per open document by @aiongg in #4390
- Sonar: clear S1612, S2208 and S7688 new-code issues by @dylanmtaylor in #4376
- Sonar: reduce cognitive complexity in four engine commands by @dylanmtaylor in #4377
- #3866 follow-up: PDF export draws items with authors and cell clips built once per page; endnote selection linear by @benandez in #4392
- #3866: fix main's layout test build (tests_linear imports Page and Rgb) by @benandez in #4401
- Sonar: reduce cognitive complexity in highlight, review and outline commands by @dylanmtaylor in #4378
- Sonar: reduce cognitive complexity in replace parser and reroute tests by @dylanmtaylor in #4379
- ci: require nextest 0.9.150 by @skylartaylor in #4487
- refactor: shared module layout (craft-contrib#20) by @aiongg in #4489
- fix(ui): dropdown menus grow back after a search with no matches by @aiongg in #4577
- #3995: Thai one-face fallback tests skip unless a Thai font with Latin is installed by @benandez in #4060
- #3872 follow-up: font table found by its stored spelling; privacy scrub keeps attribute values well-formed by @benandez in #4387
- #3907: continuous sections running off a page go onto the next; empty section marks in a row stack to the page bottom by @benandez in #3936
- Speed up PDF export by about 24 % by @Silvertree2010 in #4602
- Windows installation policy: WordCraft by @Jeremy8776 in #4492
- Enforce Rust coding standards via Clippy by @dylanmtaylor in #4501
New Contributors
- @7mz410 made their first contribution in #4218
- @Lucenx9 made their first contribution in #3804
- @will1788 made their first contribution in #2440
- @dependabot[bot] made their first contribution in #3945
- @Jeremy8776 made their first contribution in #4492
Full Changelog: v0.11.0...v0.12.0