- Bibliography management
- New bibliography engine based on [CSL](https://citationstyles.org/) (Citation Style Language). Ships with about 100 commonly used citation styles and can load custom `.csl` files
- Added new `form` argument to the `cite` function to produce different forms of citations (e.g. for producing a citation suitable for inclusion in prose)
- The `cite` function now takes only a single label/key instead of allowing multiple. Adjacent citations are merged and formatted according to the citation style's rules automatically. This works both with the reference syntax and explicit calls to the `cite` function. (**Breaking change**)
- The `cite` function now takes a label instead of a string (**Breaking change**)
- Added `full` argument to bibliography function to print the full bibliography even if not all works were cited
- Bibliography entries can now contain Typst equations (wrapped in `$..$` just like in markup), this works both for `.yml` and `.bib` bibliographies
- The hayagriva YAML format was improved. See its [changelog](https://github.com/typst/hayagriva/blob/main/CHANGELOG.md) for more details. (**Breaking change**)
- A few bugs with `.bib` file parsing were fixed
- Removed `brackets` argument of `cite` function in favor of `form`
- Visualization
- Gradients and colors (thanks to [Dherse](https://github.com/Dherse))
- Added support for gradients on shapes and text
- Supports linear, radial, and conic gradients
- Added support for defining colors in more color spaces, including Oklab, Linear RGB(A), HSL, and HSV
- Added `saturate`, `desaturate`, and `rotate` functions on colors
- Added `color.map` module with predefined color maps that can be used with gradients
- Rename `kind` function on colors to `space`
- Removed `to-rgba`, `to-cmyk`, and `to-luma` functions in favor of a new `components` function
- Improved rendering of rectangles with corner radius and varying stroke widths
- Added support for properly clipping boxes and blocks with a border radius
- Added `background` parameter to `overline`, `underline`, and `strike` functions
- Fixed inaccurate color embedding in PDFs
- Fixed ICC profile handling for images embedded in PDFs
- Text and Layout
- Added support for automatically adding proper pacing between CJK and Latin text (enabled by default)
- Added support for automatic adjustment of more CJK punctuation
- Added `quote` element for inserting inline and block quotes with optional attributions
- Added `raw.line` element for customizing the display of individual lines of raw text, e.g. to add line numbers while keeping proper syntax highlighting
- Added support for per-side inset customization to table function
- Added Hungarian and Romanian translations
- Added support for Czech hyphenation
- Added support for setting custom smart quotes
- The default figure separator now reacts to the currently set language and region
- Improved line breaking of links / URLs (especially helpful for bibliographies with many URLs)
- Improved handling of consecutive hyphens in justification algorithm
- Fixed interaction of justification and hanging indent
- Fixed a bug with line breaking of short lines without spaces when justification is enabled
- Fixed font fallback for hyphen generated by hyphenation
- Fixed handling of word joiner and other no-break characters during hyphenation
- Fixed crash when hyphenating after an empty line
- Fixed line breaking of composite emoji like 🏳️🌈
- Fixed missing text in some SVGs
- Fixed font fallback in SVGs
- Fixed behaviour of `to` argument on `pagebreak` function
- Fixed `set align(..)` for equations
- Fixed spacing around placed elements
- Fixed coalescing of `above` and `below` spacing if given in em units and the font sizes differ
- Fixed handling of `extent` parameter of `underline`, `overline`, and `strike` functions
- Fixed crash for floating placed elements with no specified vertical alignment
- Partially fixed a bug with citations in footnotes
- Math
- Added `gap` argument for `vec`, `mat`, and `cases` function
- Added `size` argument for `abs`, `norm`, `floor`, `ceil`, and `round` functions
- Added `reverse` parameter to cases function
- Added support for multinomial coefficients to `binom` function
- Removed `rotation` argument on `cancel` function in favor of a new and more flexible `angle` argument (**Breaking change**)
- Added `wide` constant, which inserts twice the spacing of `quad`
- Added `csch` and `sech` operators
- `↼`, `⇀`, `↔`, and `⟷` can now be used as accents
- Added `integral.dash`, `integral.dash.double`, and `integral.slash` symbols
- Added support for specifying negative indices for augmentation lines to position the line from the back
- Fixed default color of matrix augmentation lines
- Fixed attachment of primes to inline expressions
- Math content now respects the text baseline setting
- Performance
- Fixed a bug related to show rules in templates which would effectively disable incremental compilation in affected documents
- Micro-optimized code in several hot paths, which brings substantial performance gains, in particular in incremental compilations
- Improved incremental parsing, which affects the whole incremental compilation pipeline
- Added support for incremental parsing in the CLI
- Added support for incremental SVG encoding during PDF export, which greatly improves export performance for documents with many SVG
- Tooling and Diagnostics
- Improved autocompletion for variables that are in-scope
- Added autocompletion for package imports
- Added autocompletion for labels
- Added tooltip that shows which variables a function captures (when hovering over the equals sign or arrow of the function)
- Diagnostics are now deduplicated
- Improved diagnostics when trying to apply unary `+` or `-` to types that only support binary `+` and `-`
- Error messages now state which label or citation key isn't present in the document or its bibliography
- Fixed a bug where function argument parsing errors were shadowed by function execution errors (e.g. when trying to call `array.sorted` and passing the key function as a positional argument instead of a named one).
- Export
- Added support for configuring the document's creation `date`. If the `date` is set to `auto` (the default), the PDF's creation date will be set to the current date and time.
- Added support for configuring document `keywords`
- Generated PDFs now contain PDF document IDs
- The PDF creator tool metadata now includes the Typst version
- Web app
- Added version picker to pin a project to an older compiler version (with support for Typst 0.6.0+)
- Fixed desyncs between editor and compiler and improved overall stability
- The app now continues to highlight the document when typing while the document is being compiled
- Command line interface
- Added support for discovering fonts through fontconfig
- Now clears the screen instead of resetting the terminal
- Now automatically picks correct file extension for selected output format
- Now only regenerates images for changed pages when using `typst watch` with PNG or SVG export
- Miscellaneous Improvements
- Added `version` type and `sys.version` constant specifying the current compiler version. Can be used to gracefully support multiple versions.
- The U+2212 MINUS SIGN is now used when displaying a numeric value, in the `repr` of any numeric value and to replace a normal hyphen in text mode when before a digit. This improves, in particular, how negative integer values are displayed in math mode.
- Added support for specifying a default value instead of failing for `remove` function in array and dictionary
- Simplified page setup guide examples
- Switched the documentation from using the word "hashtag" to the word "hash" where appropriate
- Added support for `array.zip` without any further arguments
- Fixed crash when a plugin tried to read out of bounds memory
- Fixed crashes when handling infinite lengths
- Fixed introspection (mostly bibliography) bugs due to weak page break close to the end of the document
- Development
- Extracted `typst::ide` into separate `typst_ide` crate
- Removed a few remaining `'static` bounds on `&dyn World`
- Removed unnecessary dependency, which reduces the binary size
- Fixed compilation of `typst` by itself (without `typst-library`)
- Fixed warnings with Nix flake when using `lib.getExe`
Thanks to everyone who contributed to this release: Dherse, EpicEricEE, tingerrr, LuxxxLucy, bluebear94, MDLC01, Jollywatt, SekoiaTree, DVDTSB, HydroH, KillTheMule, LaurenzV, frozolotl, peng1999, 0scvr, 7sDream, 8LWXpg, Enter-tainer, FlyinPancake, Myriad-Dreamin, T0mstone, TheJosefOlsson, WannesMalfait, WeetHet, Weissnix4711, Zheoni, antonWetzel, arnaudgolfouse, drupol, dxniel-19, extua, fritzrehde, johannes-wolf, qrnch-jan, toddlerer.