Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

GitHub Issue Table

Renders GitHub issues and PRs as tables from search queries or GitHub URLs. See the index page for installation and tokens.

Token scopes
  • Fine-grained PATs: Issues (read-only), Pull requests (read-only), and Projects (read-only) if you query project boards; Metadata is implied.

  • Classic PATs: repo (or public_repo for public data only), read:org (for org project views), and project (for project boards).

  • GitHub Actions: usually works for public data but may need permissions: contents: read, issues: read, pull-requests: read, projects: read if you query projects.

  • Fine-grained PATs must also be installed on every repository you query. A 401 with correct scopes usually means the token isn’t granted to one of the repos in your query.

Quick Start

The directive takes a GitHub search query and renders matching issues as a table. Use :columns: to pick which columns to show (default: title, author, state, reactions) and :limit: to control how many rows (default 25). Results are sorted first, then trimmed to the limit.

:::{issue-table} org:jupyter-book is:pr is:open sort:reactions-desc
:columns: title, author, reactions, updated
:limit: 5
:::

Sorting

Use GitHub’s native sort: in your search query for single-column sorting (recommended). See GitHub’s sorting docs for supported fields. For multi-column or project-field sorting, use the :sort: option with comma-separated column-direction pairs:

:::{issue-table} org:jupyter-book is:pr is:open sort:updated-desc
:columns: title, author, reactions, updated
:sort: reactions_thumbsup-desc,updated-desc
:limit: 10
:::

*Error: fetching GitHub data: Resource limits for this query exceeded.*

Date Formatting

Use :date-format: to control how created, updated, and closed columns display: either relative (e.g., “2d ago”) or absolute (default, YYYY-MM-DD).

Column Widths

Set column width percentages (one per column). Values are normalized proportionally if they sum to more than 100%.

:::{issue-table} org:jupyter-book is:pr is:open sort:reactions-desc
:columns: title, author, reactions
:widths: 60,20,20
:limit: 5
:::

Truncation

Limit body, description, and summary columns to approximately N characters of visible text. Truncated content appends a “More” link to the full issue. Truncation is applied after Markdown is parsed, so it never produces broken links or formatting.

Options: :body-truncate: controls body and description; :summary-truncate: controls summary (falls back to :body-truncate: when not set)

:::{issue-table} https://github.com/orgs/jupyter-book/projects/1/views/7
:columns: title, body, summary
:limit: 5
:body-truncate: 200
:summary-truncate: 150
:::

TITLEBODYSUMMARY
🟢 Use React-Router instead of Remix

I’ve seen a few discussions about using React Router - creating this issue to track the topic overall, reasons for doing it, and implementation and design

[!Note] Angus adds context: Upgrading to...

🟢 More

I’ve seen a few discussions about using React Router - creating this issue to track the topic overall, reasons for doing it, and implementation and... 🟢 More

🟢 Allow authors to link custom JavaScript scripts to their pages by adding HTML manually or via configuration

As an author, I want to be able to include custom JavaScript libraries and scripts on any page in my MyST site, so that I can enable extra functionality for readers that isn’t packaged with mystmd.

A... 🟢 More

As an author, I want to be able to include custom JavaScript libraries and scripts on any page in my MyST site, so that I can enable extra... 🟢 More

🟢 Allow users to specify static files to include in their MyST sites

It is often useful to be able to link static assets with your site. For example, if you want to link to a video file directly (rather than embedding it), a data file like a CSV, or an asset like an... 🟢 More

As an author, I want to be able to share static assets with my MyST site in a consistent way.

🟢 Allow code execution to generate rich outputs that are incorporated into the AST

Code-cells can produce rich output like Markdown, LaTeX, and tables. Right now, these outputs are only rendered at display time, meaning that each static export and web build needs to interpret the... 🟢 More

Code-cells can produce rich output like Markdown, LaTeX, and tables. Right now, these outputs are only rendered at display time, meaning that each... 🟢 More

🟢 Discuss next steps for improvements `anywidget`

This issue tracks the development goals for anywidget in Jupyter Book. For now, let’s just collect issues — we’ll refine work later on into a new initiative issue

This issue tracks the development goals for anywidget in Jupyter Book. For now, let’s just collect issues — we’ll refine work later on into a new initiative... 🟢 More

Summary Column

The summary column extracts a section from the issue body by searching for headers matching keywords (case-insensitive). It returns that section’s content up to the next header. If no matching header is found, it falls back to everything before the first header or horizontal rule.

Options: :summary-header:, comma-separated keywords to match, default: summary,context,overview,description,background,user story

:::{issue-table} repo:jupyter-book/jupyter-book is:issue is:open sort:updated-desc
:columns: title, author, summary
:summary-header: tldr,abstract,problem
:limit: 5
:::

TITLEAUTHORSUMMARY
🟢 404 error with jupyter-book startzingale

I have a project working on one computer but when I git clone it on another, and run jupyter-book start, I get:

💌 GET / 404 - - 38.741 ms Error: No site configuration found at http://localhost:3100/config.json at j4 (_build/templates/site/myst/book-theme/build/index.js:14302:329) at processTicksAndRejections (node:internal/process/task_queues:105:5) at Jti (_build/templates/site/myst/book-theme/build/index.js:14302:1913) at X3l (_build/templates/site/myst/book-theme/build/index.js:14313:1720) at Object.callRouteLoaderRR (_build/templates/site/myst/book-theme/node_modules/remix-run/server-runtime/dist/data.js:52:16) at callLoaderOrAction (_build/templates/site/myst/book-theme/node_modules/remix-run/router/router.ts:3671:16) at async Promise.all (index 0) at loadRouteData (_build/templates/site/myst/book-theme/node_modules/remix-run/router/router.ts:2993:19) at queryImpl (_build/templates/site/myst/book-theme/node_modules/remix-run/router/router.ts:2774:20) at Object.queryRoute (_build/templates/site/myst/book-theme/node_modules/remix-run/router/router.ts:2714:18)

and the webpage is just a 404 error.

Does jupyter-book store anything outside of the git repo that I need to copy to the other machine that is needed for the local server to work?

Any thoughts on how to fix this?

🟢 Docs ecosystem: BGPT for literature evidence while authoring scientific booksconnerlambden

Jupyter Book hosts a lot of scientific teaching. Complementary tool for authors who want methods/results/limitations/DOI lookups:

https://bgpt.pro/mcp/

Close if book tooling issues should stay core.

🟢 Sub-issue: Confusion with JB1 and JB2 guidessbonaretti

It often happens that when looking for information in the search engine in the browser, the first link goes to the documentation of Jupyter Book version 1. The reader does not realize immediately that they are browsing old documentation and confusion arises.

Proposal: enhance the message that they are viewing the documentation of JB v1?

#myst-education-2026

🟢 Sub-issue: Improve documentation for deploy on GitLabsbonaretti

The documentation to deploy the website on GitLab is incomplete.

Proposal: Add detailed steps

  • PR #2966 in mystmd submitted

#myst-education-2026

🟢 Sub-issue: Remove authors' names in all pagessbonaretti

Currently, the author name added to the myst.yml file is rendered in every page of the website. This is unnecessary and verbose when the author(s) of the book remain the same throughout the book.

Proposal: to have the possibility to add the author(s)’ name(s) only on the cover page

#myst-education-2026

Sub-Issues

Show tracked sub-tasks using GitHub’s sub-issue feature. Use :append-sub-issues: to inline them at the bottom of a specific column, or add a dedicated sub_issues column.

Project Boards

Pass a GitHub project view URL instead of a search query. The board’s own filter acts as the query, and you can use project field names (e.g., Team Priority, Status) as columns and sort by them.

:::{issue-table} https://github.com/orgs/jupyter-book/projects/1/views/7
:columns: title, Team Priority, linked_prs, closing_prs, reactions
:sort: Team Priority-asc, reactions_thumbsup-desc
:::

TITLETEAM PRIORITYLINKED PRSCLOSING PRSREACTIONS
🟢 Discuss next steps for improvements `anywidget`Design and Discussion👀 1
🟢 Design and discuss AST alternatives and output parsingDesign and Discussion
🟢 Allow code execution to generate rich outputs that are incorporated into the ASTPriority❌ #1167 · 🟣 #1209 · ❌ #1661 · ❌ #1671 · ❌ #1798 · 🟣 #1900 · 🟣 #1903 · 🟢 #1961 · 🟣 #32 · 🟣 #1918👍 3
🟢 Use React-Router instead of RemixPriority
🟢 Issues needed to have native blog plugin integrationPriority
🟢 Tracking: Scientific Python using MyST EnginePriority🚀 2
🟢 Enable editing code cellsSide Quest🟣 #217👍 16 · ❤️ 5
🟢 Allow users to specify static files to include in their MyST sitesSide Quest🟢 #749 · ❌ #2616 · 🟣 #6 · 🟣 #2770👍 12
🟢 Allow authors to link custom JavaScript scripts to their pages by adding HTML manually or via configurationSide Quest🟣 #86👍 7
🟢 Substitutions and variable insertionSide Quest👍 5
🟢 Support running MyST previews / running a myst server on JupyterHubSide Quest👍 3
🟢 Launch button fields should be able to be pre-populated / pre-configured for default launch linksSide Quest👍 3 · ❤️ 1
🟢 Allow numbering for only some pages / sections of a bookSide Quest👍 3
🟢 Support lightbox experience for viewing full-size imagesSide Quest👍 2
🟢 Provide examples of non-python execution workflowsSide Quest👍 1
🟢 Button role renders as plain link when wrapped in a divSide Quest❌ #9👍 1
🟢 Document linking myst-config to myst-theme for developmentSide Quest
🟢 Vews of content / document listings based on page metadata (e.g. for blogs, site navigation, etc)Side Quest🟢 #4224❤️ 10
🟢 Support URL toc entries in article-theme `SupportingDocuments`Side Quest🟣 #611
🟢 Option for external document links to open in the same tabSide Quest
🟢 Allow primary sidebar to only show pages from currently active sectionSide Quest👀 3
🟢 Improve executable plugin supportSide Quest
🟢 Add a background to the content dropdown so it doesn't clash with `aside` blocksSide Quest
🟢 Featured Image Banner in Book ThemeSide Quest🟣 #21
🟢 Respect `prefers-reduced-motion` or remove autoplaySide Quest🟢 #927❤️ 1

Templates

Add custom columns using {{field}} placeholders and include the template name in :columns:. Definitions are semicolon-separated name=template pairs.

Options: :templates:, e.g. link=[View]({{url}}); search=[Find](https://example.com?q={{title | urlencode}})

:::{issue-table} repo:jupyter-book/jupyter-book is:issue is:open sort:updated-desc
:columns: title, repo, author, issue_link, repo_link, issue_cta
:templates: issue_link=[View issue]({{url}}); repo_link=[Repo home](https://github.com/{{repo}}); issue_cta={button}`Open issue <{{url}}>`
:::

TITLEREPOAUTHORISSUE LINKREPO LINKISSUE CTA
🟢 404 error with jupyter-book startjupyter-book/jupyter-bookzingale🟢 View issueRepo home
🟢 Docs ecosystem: BGPT for literature evidence while authoring scientific booksjupyter-book/jupyter-bookconnerlambden🟢 View issueRepo home
🟢 Sub-issue: Confusion with JB1 and JB2 guidesjupyter-book/jupyter-booksbonaretti🟢 View issueRepo home
🟢 Sub-issue: Improve documentation for deploy on GitLabjupyter-book/jupyter-booksbonaretti🟢 View issueRepo home
🟢 Sub-issue: Remove authors' names in all pagesjupyter-book/jupyter-booksbonaretti🟢 View issueRepo home
🟢 Sub-issue: Create a list of available `myst.yml` keysjupyter-book/jupyter-booksbonaretti🟢 View issueRepo home
🟢 Sub-issue: Substitute `start` with `init` in home page of jupyterbook.orgjupyter-book/jupyter-booksbonaretti🟢 View issueRepo home
🟢 Docs: users' wishlist from #myst-education-2026jupyter-book/jupyter-booksbonaretti🟢 View issueRepo home
🟢 Document how to disable the download buttonjupyter-book/jupyter-bookcholdgraf🟢 View issueRepo home
🟢 Single document feature in Jupyter Book 2jupyter-book/jupyter-bookpierrepo🟢 View issueRepo home
🟢 HTML output from `jupyter book build --html` cannot be previewed via `file://`jupyter-book/jupyter-bookseohyonkim🟢 View issueRepo home
🟢 Make a release - 2026-06jupyter-book/jupyter-bookcholdgraf🟢 View issueRepo home
🟢 DOC: adding link to the changelog in the documentationjupyter-book/jupyter-bookbsipocz🟢 View issueRepo home
🟢 Question: how to configure myst extensions to use in myst.yml for JB 2?jupyter-book/jupyter-bookdclong🟢 View issueRepo home
🟢 Problem in the right sidebar section linkjupyter-book/jupyter-bookysBach🟢 View issueRepo home
🟢 Improve behaviour of clicked images in Jupyter Book (suggestion: Modal Image?)jupyter-book/jupyter-bookfirasm🟢 View issueRepo home
🟢 How to add a reference to a section in a custom div element?jupyter-book/jupyter-bookRemDelaporteMathurin🟢 View issueRepo home
🟢 Unable to load custom cssjupyter-book/jupyter-bookmatamadio🟢 View issueRepo home
🟢 Make dependabot only open PRs to update the `myst-cli` and not other js dependenciesjupyter-book/jupyter-bookcholdgraf🟢 View issueRepo home
🟢 Documentation move was a bit too aggressive for repo-specific docsjupyter-book/jupyter-bookcholdgraf🟢 View issueRepo home
🟢 Chapter numbering impacted by headers in opening page for chapterjupyter-book/jupyter-bookpancakereport🟢 View issueRepo home
🟢 Allow more rendering options for indexjupyter-book/jupyter-bookstuchalk🟢 View issueRepo home
🟢 Add development releasesjupyter-book/jupyter-bookagoose77🟢 View issueRepo home
🟢 ROR protocol not workingjupyter-book/jupyter-bookstuchalk🟢 View issueRepo home
🟢 jupyter-book start --keep-host does not rebuild when source files change (with HOST env)jupyter-book/jupyter-booklseongjoo🟢 View issueRepo home

Filters

Use {{ field | filter }} to transform a value before insertion. This is useful when embedding values in URLs where special characters must be encoded.

Available filters: urlencode, which percent-encodes the value for safe use in URLs

:::{issue-table} repo:jupyter-book/jupyter-book is:issue is:open sort:updated-desc
:columns: title, author, search_link
:templates: search_link=[Search title](https://github.com/search?q={{ title | urlencode }})
:limit: 5
:::

Label Subset Columns

By default the labels column shows all labels on an issue. Use :label-columns: to show only a subset of labels, or to split labels into separate named columns. Definitions use [column name]=[patterns] syntax, separated by semicolons.

For example the following defines one column called fooandbar that will show only the labels foo or bar (if matched) and another column called type that matches any label beginning with type::

:label-columns: fooandbar=foo,bar;type=type:*

You can then include any [column name] listed in this argument in your :columns: option.

Values are comma-separated glob patterns where * matches any characters. A label is included if it matches any pattern in the list for a column.

Named label columns

Use any name to create a new column. Include the name in :columns: and it renders as styled label badges:

:::{issue-table} repo:jupyter-book/jupyter-book is:issue is:open sort:updated-desc
:columns: title, type, labels
:label-columns: type=type:*; labels=enhancement,bug
:limit: 5
:::

Pattern matching

Patterns support * as a wildcard. Without a wildcard, the pattern must match the label name exactly.

PatternMatchesDoesn’t match
bugbugtype:bug
type:*type:bug, type:featurepriority:high
*-requestfeature-requestbug
type:*,bugtype:feature, bugpriority:high

Column Reference

Available columns:

:::{issue-table} repo:jupyter-book/jupyter-book is:issue is:closed sort:updated-desc
:columns: number, title, author, author_affiliation, state, labels, linked_prs, closing_prs, sub_issues, reactions, comments, created, closed, updated, repo, body, summary
:body-truncate: 100
:summary-truncate: 50
:limit: 3
:::
NUMBERTITLEAUTHORAUTHOR AFFILIATIONSTATELABELSLINKED PRSCLOSING PRSSUB ISSUESREACTIONSCOMMENTSCREATEDCLOSEDUPDATEDREPOBODYSUMMARY
🟣 #2615🟣 Read The Docs blocks JB1 builds unless `.readthedocs.yml` points to a `conf.py` fileRemDelaporteMathurinMIT Plasma Science and Fusion Center (PSFC)🟣 CLOSED 92026-04-302026-06-082026-06-08jupyter-book/jupyter-book

Hi JB team!

Our project is still using JB1 since we are waiting for a couple of features in JB2... 🟣 More

Hi JB team!

Our project is still using JB1 since... 🟣 More

🟣 #2613🟣 logo alt textcjeng8771University of California, Berkeley🟣 CLOSEDa11y 42026-04-222026-06-022026-06-02jupyter-book/jupyter-book

logo_alt site option is ignored by mystmd when the site is built. Would be great to support this... 🟣 More

logo_alt site option is ignored by mystmd when... 🟣 More

🟣 #2624🟣 myfirstprogayannn0761-prog🟣 CLOSED 02026-05-182026-05-182026-05-18jupyter-book/jupyter-book