What's Changed
- Restrict Editing: the file commands, the user name and the post-check by @matstrange in #3285
- The inspector's removals are tracked, and a version snapshot belongs to its document by @matstrange in #3286
- test: mark the portal test's blocking sleep as intentional (SonarCloud rust:S7488) by @dylanmtaylor in #3989
- Engine: no dead-code warnings on wasm by @MichaelMuClaude in #3542
- Drop U+FFFE and U+FFFF from ODT export text by @Silvertree2010 in #3817
- Cap the number of VML path commands parsed from a path attribute by @Silvertree2010 in #3951
- Return None from parse_number when the value overflows f64 by @Silvertree2010 in #3577
- Fix spurious 零 after a group's trailing zeros in Chinese numerals by @Silvertree2010 in #3745
- picture.corrections: a tiny sharpen value no longer panics in the blur (#3646) by @fluorine in #3830
- Reject signs and non-digits in parse_date fields by @Silvertree2010 in #3575
- Layout: keep with next takes the 0.01 pt of slack the other fit checks take by @dfgodvan in #3816
- Parse the Flat OPC part root tag once when inheriting namespaces by @Silvertree2010 in #3944
- Write a text-box story shared by many shapes only once on docx save by @Silvertree2010 in #3983
- Keep pending formatting revisions when Style Inspector clears formatting by @Silvertree2010 in #3971
- Cap the headless ui_requests queue and keep one Paste Special request by @Silvertree2010 in #3997
- Validate PNG extension in file.exportPng by @Higgs32584 in #3837
- Khmer: ignore w14:ligatures when shaping Khmer text by @inmean in #3921
- Skip quoted attribute values when scanning settings.xml tags by @Silvertree2010 in #3954
- Rename kept docx parts whose names are not valid OPC part names by @Silvertree2010 in #3947
- #3637: A table cell span from a .json file no longer overflows by @Jayesh-Prajapati9 in #3927
- #3663: "NaN" in the Font dialog's Size box no longer closes the app by @Jayesh-Prajapati9 in #3928
- Load ui.json with many unknown keys in linear time by @Silvertree2010 in #3968
- docbin: mark format-mandated SHA-1 as reviewed (SonarCloud S4790) by @dylanmtaylor in #4020
- Cap and deduplicate the .aff TRY alphabet at parse time by @Silvertree2010 in #3981
- Render: a dimmed header's borders keep one tone where they meet (#2946) by @GabrielMatozo in #3725
- Refuse arrange.group when members exceed the group child cap by @Silvertree2010 in #3958
- Ignore docx chart number-format codes longer than 255 bytes by @Silvertree2010 in #3963
- Format Painter: show the copy pointer over the text while armed (#3453) by @MatRanc in #3560
- Ruler: dragging a margin edge leaves the view where it is by @pakiat in #3900
- Save, export and print keep the view where it is by @marcoarnulfo in #3895
- Layout: an empty paragraph with a hidden mark shows nothing, not even its list number (#3982) by @Menonro in #3992
- Tables: a row fits on a page only with room for the border below it (#3814) by @dfgodvan in #3815
- #3734: ui.resize refuses sizes that aren't positive and clamps to the GPU's limit by @mercuryVM in #3920
- Backstage: non-Latin file names in the Recover list draw, not boxes by @MichaelMuClaude in #3545
- Print and PDF export use the Numeral setting (#3784) by @MarekSpodBiedry in #3824
- Fix .doc bookmark table desync on names longer than 40 characters by @Silvertree2010 in #3949
- Status bar names the page in view, not only the caret's page (#3880) by @dhruvLearner8 in #3901
- Inline shared Word 2003 headers, notes and comments once by @Silvertree2010 in #3985
- G14: Romanian: translate the rows left in English; adjective agreement by @vioreltus in #3558
- Keep inline content and formatting in Convert Text to Table by @Silvertree2010 in #3937
- Compare: don't let a character-level diff scramble a reordered digit run by @MichaelMuClaude in #3224
- Regression tests for #2 and #504 by @skylartaylor in #3860
- Restrict Editing: read only and comments-only protection grey out edits by @pick2510 in #3264
- Font: a selected text box's Font commands format all its text by @pakiat in #3898
- packaging: use [[ for bash conditional tests (SonarCloud S7688) by @dylanmtaylor in https://github.com//pull/4024
- A document with many relationships takes minutes to open by @matstrange in #3809
- A word with no break opportunity in it makes the layout quadratic by @matstrange in #3808
- doc: preserve rotated free endpoints when rerouting connectors by @mrzv in #3882
- Selection bar: right margin for right-to-left text, and beside table rows (UI gap) by @dkhlapov in #2042
- Mail merge: go to any record, and merge or print a range of records (#3028) by @VoiceLessQ in #3894
- Translate ribbon disabled-reason tooltips (#2678) by @dkhlapov in #2680
- CI: one test binary per crate, nextest, line tables only by @aiongg in #4025
- CI: shared gate workflow; FreeBSD nightly and on release by @aiongg in #3913
- i18n tests: missing translations never fail; one report lists them by @aiongg in #4043
- ci(sonar): stop cancelling main-branch runs so coverage is published by @dylanmtaylor in #4070
- Packaging: pin the signing client and appimagetool, and check their hashes by @aiongg in #3326
- Change Case follows each run's language for Turkic casing by @SlavenDj in #3480
- Options › Language names the proofing language at the caret (#3150) by @naxvog in #3177
- i18n: interface translations from craft-i18n (pilot) by @benandez in #4072
- Proofing options reach the Czech, Croatian, Indonesian, Italian, Polish and Portuguese checks by @FedeOlivares in #3966
- PDF: pin craft-libs 9f75d3dc for the PNG and PDF input bounds by @aiongg in #4084
- chore: resolve SonarCloud maintainability issues by @dylanmtaylor in #4083
- Sonar S1612: fn paths instead of trivial method closures by @dylanmtaylor in #4103
- Sonar S1612: use PoisonError::into_inner for poisoned locks by @dylanmtaylor in #4102
- Sonar S7682: explicit return in packaging/env.sh helpers by @dylanmtaylor in #4105
- Format negative zero as 0 in spreadsheet import by @Silvertree2010 in #4040
- Ignore quoted text when detecting recipient CSV delimiter by @Silvertree2010 in #4125
- Cap label and envelope text length in mailings commands by @Silvertree2010 in #4008
- DOCX: a hinted East Asian or complex-script font no longer replaces the Latin font by @marcoarnulfo in #4067
- Phonetic Guide dialog puts the keyboard in the Ruby text box on open (#3914) by @MarekSpodBiedry in #4021
- Route ui.screenshot path writes through the guarded engine writer by @Silvertree2010 in #4048
- Dialogs: draw real tabs (Paragraph, Find, About) by @fluorine in #4029
- Outline: re-match collapsed headings only after edits, via a hash index by @Silvertree2010 in #4014
- DOCX: write the default font size when the document leaves it unset by @narain1 in #4092
- #3994: watermark font names round-trip through the textpath's CSS style by @SusieeTheLinuxUser in #4071
- Keep the direction of left, up and down block arrows (#3919) by @MarekSpodBiedry in #4022
- Insert › Table: the grid previews the hovered table on the page (#3931) by @marcoarnulfo in #4052
- #3360, #3553: Spanish proofing (es-ES, es-MX, es-419, es-UY) by @FedeOlivares in #3562
- Bump craft-print, craft-pdf, krilla and craft-i18n to craft-libs 1774443 by @aiongg in #4184
- Merge 27 open PRs (tested batch) by @aiongg in #4194
- #4001: A command that changes nothing is not an edit by @matstrange in #4004
- Layout: a document of many pages paid a body-length scan per page by @MoriartyPuth in #4090
- AutoCorrect: words after a no-break space are corrected by @dotCooCoo in #4101
- Proofing: web addresses after a no-break space are not marked as misspelled by @dotCooCoo in #4109
- MCP: type_text with paragraphs is one command, not a snapshot of the document per line (#3973) by @MichaelMuClaude in #4112
- AutoFormat: Tab and Backspace at the start of a line set the paragraph's indents by @dotCooCoo in #4113
- Engine: keep cell widths in step after Insert Column; validate a version restore before saving by @galagersharp-code in #4120
- MCP: keep serving when the app isn't open yet (#4078) by @galagersharp-code in #4121
- AutoFormat: Enter twice after a short line makes it a heading by @dotCooCoo in #4123
- AutoFormat: border lines and +---+ tables track the characters they delete by @dotCooCoo in #4129
- Reject '+' sign in print page ranges by @Silvertree2010 in #4147
- Import LaTeX ^{} and ~{} as plain ^ and ~ by @Silvertree2010 in #4170
- Read Mode: a Page color menu shows the columns on white, sepia or a dark page by @dotCooCoo in #4172
- DOCX: a malformed main document part is an error, not a truncated document (#3599) by @fluorine in #3818
- Web: a ?host=parent bridge for pages that keep WordCraft's files by @RobHones in #3822
- Layout: a multiple-spaced line stays on the page while its text fits, as in Word by @jpc7k1 in #3836
- SmartArt and charts: resize handles on the canvas and a Size group on SmartArt Design (#3852) by @fluorine in #3853
- Release: embed the current craft-fonts, with the Georgian face by @devius in #3888
- Resolve note separator revisions in Accept/Reject All by @Silvertree2010 in #3998
- #3889, #3891: Update Table keeps a localized Word TOC's styles and columns by @RatkoR in #4039
- cu20we: fix box float paragraph origins and preserve shape line caps by @nexotiq in #4074
- Comments: times in the user's own time zone, in the pane and the balloons (#2322, #2337) by @seif9116 in #4079
- Layout: include exact line-bottom contact for floating tables (#3977) by @OPUZZLES in #4097
- Match highlight icon to selected color by @Vernsmoke in #4099
- Merge the latest commits of #4100, #4133 and #4171 by @aiongg in #4215
- autoscroll: make the cursor follow the scroll direction by @Galex-Z in #4100
- #4085: toggle the last highlight colour with the keyboard shortcut by @LQRD in #4133
- Picture memory limits for 6 audit issues: one decoder, TIFF strips, styles, Remove Background, Windows paste, render cache by @VoiceLessQ in #4171
- security: require the data integrity check on encrypted DOCX packages by @dylanmtaylor in #4223
- Merge 10 open PRs (fields, tables, AutoFormat, Track Changes; tested batch) by @aiongg in #4232
- AutoFormat: border and table lines stay text in a paragraph numbered by its style by @dotCooCoo in #4139
- Tables: Convert to Text asks for the separator and converts only the selected rows by @dotCooCoo in #4155
- Tables: Split Table fixes the vertical merges and row content controls it splits by @dotCooCoo in #4162
- Parity catalog: the checklist counts Read Mode's Column Width, Page Color and Layout by @dotCooCoo in #4182
- Track Changes: Accept and Reject can move to the next change or stop tracking by @dotCooCoo in #4205
- Fields: SUBJECT, KEYWORDS, COMMENTS, LASTSAVEDBY, REVNUM and NUMCHARS update with the others by @dotCooCoo in #4217
- Restrict Editing: Enter and typing at the start or end of an exception line go inside it by @dotCooCoo in #4225
- Fields: * DollarText and * Hex write the result, and PAGE reads * ArabicDash by @dotCooCoo in #4226
- Merge the late commits of #4098 and #4224 by @aiongg in #4238
- AutoFormat: bold and italic become real formatting as you type by @dotCooCoo in #4098
- Fields: * Upper, * Lower, * Caps and * FirstCap change the result, and CardText is lowercase by @dotCooCoo in #4224
New Contributors
- @MatRanc made their first contribution in #3560
- @pakiat made their first contribution in #3900
- @Menonro made their first contribution in #3992
- @mercuryVM made their first contribution in #3920
- @vioreltus made their first contribution in #3558
- @mrzv made their first contribution in #3882
- @VoiceLessQ made their first contribution in #3894
- @FedeOlivares made their first contribution in #3966
- @narain1 made their first contribution in #4092
- @SusieeTheLinuxUser made their first contribution in #4071
- @MoriartyPuth made their first contribution in #4090
- @galagersharp-code made their first contribution in #4120
- @RobHones made their first contribution in #3822
- @jpc7k1 made their first contribution in #3836
- @devius made their first contribution in #3888
- @nexotiq made their first contribution in #4074
- @Vernsmoke made their first contribution in #4099
- @Galex-Z made their first contribution in #4100
Full Changelog: v0.10.0...v0.11.0