What's Changed
- Text boxes: a press inside one goes to its text, not to a picture under it by @arcanii in #4240
- Flag document fonts that aren't installed by @alehel in #4770
- DOCX: nil shading paints no fill, border theme colours win (part of #1991) by @VoiceLessQ in #4705
- Format readers: one border-type table for .doc, one HYPERLINK parser for DOCX, RTF and .doc by @VoiceLessQ in #4222
- AutoFormat: a tracked heading or border line replaces another author's formatting change by @dotCooCoo in #4231
- Layout: 行頭禁則 lists small kana and the prolonged sound mark (JIS X 4051 §4), with the emergency-break gap documented by @midasdf in #2558
- Arabic interface: mirror the remaining label/field dialogs by @tlomts-dev in #5449
- Read Mode: ink and drag previews follow the Page color, which is kept between entries by @dotCooCoo in #4228
- #2726: AccessKit focus guard — every tree update carries its focused node by @vangel76 in #2742
- Audit fixes for 12 issues: import limits, escaping, link schemes, table depth by @VoiceLessQ in #3862
- Walk Print Markup comment objects once (#3614) by @OPUZZLES in #4744
- Undo: steps share the style sheet and list definitions (1.2 GB → 21 MB at the limit) by @arcanii in #2694
- #641: print N-up sheets and folded booklets by @LQRD in #3916
- fix(print): report noPrinters when CUPS discovery finds no destinations by @asmodeus-oos in #1826
- Walk Print Markup balloon anchors once (#3614) by @OPUZZLES in #4785
- Show fresh SEQ, STYLEREF and REF results in PDF export and printing by @pakiat in #5162
- File › Print: Return prints, as Word's default Print button does by @jpc7k1 in #4651
- ODT: full open, edit and save support, lossless on save without edits (gap 19) by @alehel in #5559
- Fix #5559 follow-ups: generated list prefix, hidden-text objects, turned clipped lines, kept-markup checks by @FredApps in #5593
- Desktop: a window restored onto no monitor opens on screen by @fluorine in #4742
- #3955: Format Shape's Angle field leaves an angle above 359.9° alone by @rabis7575 in #3959
- Picture brightness, contrast and transparency from DOCX: VML washout, a:lum, a:alphaModFix (#1711, #1766) by @mmazzieri in #1961
- Align the caret on the empty line after a trailing line break by @Silvertree2010 in #4293
- Dialogs are modal, as in Word (#3859) by @RatkoR in #4076
- Insert Date & Time and date fields use local time, not UTC (#1707) by @dkhlapov in #1782
- ODT: remove the display settings; one choice for each open case (gap 19) by @alehel in #5609
- Pass the Linux signing key to the release workflow by @dylanmtaylor in #5614
- Drop Cap follow-ups: whole selection, script fonts, margin gap, menu keeps options (#2601) by @dkhlapov in #4077
- Tests: the balloon anchor test counts work steps instead of timing by @dotCooCoo in #5608
- Pin that a comment id past u32 is refused, not truncated (#3677) by @Hamza0101 in #5273
- Metafiles: refuse a bitmap whose side no renderer draws before decoding it by @vangel76 in #5490
- Metafiles: decode DIB bitmaps 3-7x faster by choosing the bit depth once per bitmap by @vangel76 in #5492
- Metafiles: read the picture size from the header instead of parsing the whole file by @vangel76 in #5493
- doc, docx: keep the compound border lines by @entropybeater in #5499
- SmartArt: custom colours per item from the Text Pane by @fluorine in #3123
- Docs: spelling skips addresses after narrow no-break and figure spaces by @dotCooCoo in #5528
- contributors: set names for vangel76 by @vangel76 in #5520
- #3612: clamp the object drag preview texture to the GPU limit by @Harrison-Booth in #4578
- docx: keep a paragraph's text alignment by @entropybeater in #5498
- Layout: a section that starts a page flushes the page before with its own margins (#5289) by @rahul05ranjan in #5291
- packaging: RPM installs on openSUSE (library sonames, no shared directories) by @dennisklappe in #5369
- chore: pin craft-pdf and krilla to the craft-libs rev craft-update already uses by @Dc-xp in #5281
- About: let every credits column be dragged and refit changed tables by @FredApps in #5588
- Avoid repeated paragraph scans when picking ink (#3614) by @OPUZZLES in #4763
- Mini toolbar: hovering a formatting button previews it on the selection by @fluorine in #4732
- REF: preserve paragraph numbers when updating cross-references by @ro-legal-docx in #4609
- Keep wgpu indirect validation for x86_64 builds on Apple silicon by @Silvertree2010 in #5244
- Preserve section settings when saving DOCX by @Harrison-Booth in #5311
- Drop-down list button: pressing it no longer moves the caret out of the control (#5389) by @vangel76 in #5485
- .doc import: cap paragraph and cell marks, keep the table context only for table marks (#5476) by @vangel76 in #5486
- Alt codes type their character in Find and other text boxes (#4403) by @ljkx in #5405
- Tests: comment export discovery counts work steps instead of timing by @MichaelMuClaude in #5618
- .doc import: a field's cached result keeps its formatting per run, not per character (#5477) by @vangel76 in #5489
- Preserve paragraph grid indent settings in DOCX by @Harrison-Booth in #5384
- Preserve text frame anchor locks by @Harrison-Booth in #5382
- Table formulas: read the Panamanian balboa B/. in numbers by @alosslessdev in #3546
- feat(web): page host mode, so a page can host WordCraft in its own document (#4366) by @helenkwok in #4367
- Tests: the balloon anchor test counts all of the anchor walk's work by @dotCooCoo in #5622
- Tests: the ink lookup and note conversion tests count work steps instead of timing by @MichaelMuClaude in #5643
- Fonts: reuse shared MATH construction records (#4660) by @benandez in #5683
- Cap equation matrix size when writing OMML by @Silvertree2010 in #4000
- Layout: keep a cell's floats laid out in the cell inside it (layoutInCell) by @ro-legal-docx in #4545
- ci: Dependabot groups Cargo minor/patch updates; breaking bumps by crate family (#2973) by @Nghiathan13 in #3395
- CLI: reject malformed conversion format options (#5610) by @benandez in #5709
- MHT: preserve quoted MIME parameter boundaries (#5604) by @benandez in #5717
- doc: decode numeric XML references in legacy form labels (#3883) by @benandez in #5714
- #4181: a click just outside a floating table skips its turned cell text (#4189) by @benandez in #5713
- Clipboard: copy and paste RTF (#2630) by @benandez in #5716
- speech: Read Aloud on Linux falls back to Speech Dispatcher (#4576) by @benandez in #5712
- Align ordinary tabs with paragraph alignment (#3915) by @benandez in #5715
- Linux: a setting chooses the display server (Wayland / X11) (#3189) by @benandez in #5718
- Status bar: the live count shows words, characters, or characters without spaces (#3187) by @benandez in #5719
- Layout: Times and Courier take Times New Roman's and Courier New's line spacing (#3241) by @benandez in #5733
- References: index source lookups during citation refresh (#4890) by @benandez in #5736
- Layout: avoid repeated text-box lookups during page drawing (#4837) by @benandez in #5684
- Printing: the printer list doesn't wait on drivers, and a job stuck on its driver can be cancelled (#5710) by @arnav-hiwarkar in #5732
- Ribbon: a contextual tab that appears glides in so the eye finds it (#3131) by @benandez in #5752
- Font dialog: the preview also shows the font, small caps, super/subscript and hidden (#4058) (#4059) by @benandez in #5753
- Shapes: the resize arrow over a turned object's handle turns with it (#3932) (#3939) by @benandez in #5754
- Layout: justified lines keep the width of the spaces before their first character (#4307) by @benandez in #5755
- Mailings: detect CSV delimiters across multiline quoted headers (#4249) by @benandez in #5758
- Equations: \int + Space waits for its limits, so _x^y decorates the operator (#4917) (#4938) by @benandez in #5759
- Layout: a line of only pictures takes no descent; multiple spacing adds its share (#3984) by @benandez in #5763
- Shapes: Shape Format › Size shows the interface unit (#4196) (#4212) by @benandez in #5765
- Layout: reserve flow space below bottom paragraph borders (#2437) by @benandez in #5768
- Control channel: a command that discards unsaved work is refused, not carried out (#3284) by @benandez in #5773
- Layout: a float anchored on a later page of a long paragraph is drawn there (#4250) (#4267) by @benandez in #5775
- Shapes: pictures and text boxes inside a drawing canvas are selected and moved on their own (#2637) (#2670) by @benandez in #5774
- Layout: a shape dropped just after a page break stays on the new page (#4262) (#4297) by @benandez in #5786
- i18n: craft-i18n pin follows its main (watermark strings, lv, fr, ar rows) by @benandez in #5787
- Copy the shared house rules into AGENTS.md by @FredApps in #5776
- Pictures: a bold insertion cursor while dragging an inline picture (#4195) (#4208) by @benandez in #5797
- Typing: avoid repeated scans at protected typing boundaries (#3614) (#4754) by @benandez in #5798
New Contributors
- @alehel made their first contribution in #4770
- @entropybeater made their first contribution in #5499
- @rahul05ranjan made their first contribution in #5291
- @dennisklappe made their first contribution in #5369
- @Dc-xp made their first contribution in #5281
- @ro-legal-docx made their first contribution in #4609
- @alosslessdev made their first contribution in #3546
- @helenkwok made their first contribution in #4367
- @arnav-hiwarkar made their first contribution in #5732
Full Changelog: v0.15.2...v0.16.0