Best way to track upcoming features?

Sorry if this belongs in the questions category. I know including PDF content is planned for Typst 0.14, but beyond that, I don’t know what can be expected in 0.14. Is there any good way to track features in the upcoming version? I’m not referring to the roadmap, since that’s long term. I know I can sift through all the issues and pull requests, but given how many of them there are, and the fact that there’s no projects page on the Github repo, I wanted to see if there was a smarter approach.

6 Likes

Asking GitHub Copilot · GitHub is an option, but it’s very inaccurate…

Sumarize what has changed in typst/typst since v0.13.1

GPT-4.1 output

Here’s a summary of the main changes in typst/typst since v0.13.1:


Major Changes

1. HTML Export Rework

  • A new typst-html crate was added, providing a native, semantically rich HTML export pipeline. This includes new HTML element APIs, improved attribute/element validation, and semantic output instead of PDF-style SVG dumps.
  • The CLI now accepts --output-format html for direct HTML export.
  • Typed HTML (e.g., html.div) and custom attributes are now first-class in Typst.

2. Library and Syntax Modernization

  • The codebase now uses Rust 2024 edition, with a minimal supported Rust version of 1.88. Many dependencies were upgraded.
  • Widespread adoption of rustc-hash for hashmaps/sets and removal of the if_chain crate in favor of idiomatic Rust.
  • Incremental refactoring for improved performance, safety, and maintainability.

3. CLI Enhancements

  • Added a typst completions command to generate shell completions for various shells.
  • typst query now supports a --target to select between HTML and paged (PDF/image) introspection.
  • Makefile dependency output (--make-deps) has been improved for multi-output (e.g., batch image export).
  • More robust error messages and support for warning when watching stdin with typst watch.

4. PDF Export and Standards

  • PDF export supports many more standards (including PDF 1.4, 1.5, 1.6, 2.0, PDF/A-1b, A-2b, A-2u, A-3b, A-3u, A-4, A-4f, A-4e).
  • Improved handling of multi-file image export, Makefile rule writing, and output naming.

5. Dependency Updates & Crate Changes

  • Many dependencies updated, dropped, or replaced for performance and security.
  • New or updated crates: comemo, codex, krilla, hayro, and more, with some dependencies now pulled from specific git revisions.
  • SVG and image processing dependencies upgraded (e.g., resvg, image-webp, ttf-parser).

6. Ecosystem and Community

  • The README and documentation were updated to reflect new community forums, contribution guidelines, and acknowledgements for sponsors and grants.
  • Snap packaging is now promoted for Linux.
  • Documentation now highlights the new HTML exporter, web app, and typed HTML APIs.

Other Notable Changes

  • Many internal code style and API improvements (e.g., more idiomatic error handling, restructuring of modules, and improved test coverage).
  • New lints and warnings enabled in CI for improved code quality.
  • Various bug fixes, especially around file watching, font handling, and layout edge cases.
  • The codebase is more amenable to incremental compilation, with improved support for large documents and complex workflows.

Summary Table

Area Change
HTML Export Major new pipeline, semantic output, typed API, new

Later I asked GPT to give links to pull requests, and found these PRs were merged in June 2024…

I suppose there is no replacement for asking the community or someone who is following development. As the next best thing, let’s list by github reactions…

I extracted the list of PRs merged since the last release and ordered them by reactions, then we should find the most important ones!

Link Title Reactions Author Date
6623 Add support for PDF embedding 106 LaurenzV 2025-07-22
5420 Switch PDF backend to `krilla` 71 LaurenzV 2025-04-01
6168 Table multiple headers and subheaders 36 PgBiel 2025-06-10
6442 Require parentheses in all function-like sub/superscripts 21 mkorje 2025-08-01
6547 Rewrite foundations of native elements 17 laurmaedje 2025-07-08
6683 Faster constraint checking in comemo (bumps comemo & krilla) 16 laurmaedje 2025-07-31
6602 Support intra-doc links in HTML 14 laurmaedje 2025-07-16
6365 Support multiple fonts in math 14 mkorje 2025-08-07
6622 Include numbering in PDF bookmark 13 YDX-2147483647 2025-08-07
5777 Use "subs" and "sups" font features for typographic scripts 11 MDLC01 2025-07-02
6476 Typed HTML API 9 laurmaedje 2025-06-23
6637 Migrate to 2024 edition and bump MSRV to 1.88 8 laurmaedje 2025-07-21
5618 Add `title` element 8 jbirnick 2025-08-06
6705 Rename `pdf.embed` to `pdf.attach` 7 laurmaedje 2025-08-07
6678 Use `rustc-hash` for hash maps and sets 7 laurmaedje 2025-07-31
6569 Target-specific native show rules 7 laurmaedje 2025-07-09
6643 Add `pdf` extension to image autocompletions 6 laurmaedje 2025-07-22
6336 Use the shaper in math 6 mkorje 2025-06-10
6691 Support for raw syntax highlighting in HTML export 5 laurmaedje 2025-08-04
5976 Improve french smartquotes 5 MDLC01 2025-03-31
6682 Add `cargo testit` alias for running integration tests 4 asibahi 2025-08-01
6601 Mention Tinymist in README.md 4 PatrickMassot 2025-07-18
6498 Support `in` operator on strings and modules 4 laurmaedje 2025-06-26
6316 More precise math font autocomplete suggestions 4 IgKh 2025-05-28
6311 Add support for WebP images 4 LinusU 2025-06-04

Code how it was generated

typst compile --format html --features html mergedprs.typ

Summary
// Uses github tool to get list of prs
// gh pr list -s merged --json number,title,url,author,mergedAt,reactionGroups --limit 1000 --search "merged:>=2025-03-07" | jq > mergedprs.json

#let data = (json("mergedprs.json")
  .map(elt => {
    elt.reactionGroups = elt.reactionGroups.map(elt => elt.users.totalCount).sum(default: 0);
    elt
  })
  .sorted(key: elt => -elt.reactionGroups)
).slice(0, 25)

// for pdf output
// #set page(flipped: true)

#show link: underline
#show table.cell.where(y: 0): strong
#table(
  columns: 5,
  stroke: none,
  table.hline(),
  table.header(
    [Link], [Title], [Reactions], [Author], [Date],
  ),
  table.hline(),
  ..data.map(elt => {
    (
    link(elt.url)[#elt.number],
    [#elt.title],
    [#elt.reactionGroups],
    [#elt.author.login],
    [#elt.mergedAt.slice(0, 10)],
      )
  }).flatten(),
  table.hline(),
)
8 Likes

Typst developers have been quite reluctant to give too much info about features in the upcoming release to minimize any kind of false expectations or pressure of making any “promises” which might not be fulfilled. But usually they at least give some hints in Discord: in messages and in community calls about certain upcoming features. So I’d follow Discord a bit.

But AFAIK there is no clear “to be expected” list of features.

5 Likes

@Y.D.X Yeah, this is why I don’t trust LLM’s with anything but hte more basic tasks.

@bluss Now that’s pretty wizard, and I’ll be keeping that file for later use! Honestly, that might be worthy of a showcase post if something of its form hasn’t already been posted.

@Mr.Selfridge And aye, fair enough.

1 Like

To be fair to the ai output, it highlighted this:

which had no reactions, PR 6568 until I looked at it, so both compilations seem to have had something useful to say. But yeah it’s hard to read the ai summary when you don’t know how much is hallucinated or just picked from the wrong time frame, or included but not given the right context.

1 Like

That honestly begs the question of why that pull request got no reactions. Isn’t that curious, because I love shell completions.

1 Like

Typst has a lot of PRs that sit for a long time, this one got merged quickly. It is not/can’t be a fair metric anyway.

Also on topic for you, here is a quote from discord:

[On question about 0.14]

laurmaedje: The focus is on PDF accessibility. We will cut a release when that’s ready.

2 Likes