← Changelog

Blog indexes and lists of pages in plain Markdown

A blog/ folder now lists itself, and a ```blog block or layout: list shows any folder as a blog index, a grid, a compact archive or a team page, and every post gets a proper post page. Works in .md.

You can now list the pages of any folder without MDX or components. Add layout: list to a folder's README.md, or put a ```blog block on any page:

  • A blog/ or posts/ folder lists itself, at any depth: with no README, /blog is a paginated index; a README or Obsidian folder note with only prose gets the list underneath.
  • Zero config: newest first, with images, dates, descriptions and author names, 20 per page.
  • Latest posts anywhere: ```blog with limit: 3 on your home page.
  • List and grid views: thumbnails on the left (or media: thumb right), covers in the grid, and a letter tile for grid cards without an image (or your own defaultImage). sort, where and fields choose what each card shows.
  • Compact archives: view: compact gives one line per post (date, then title), grouped by year on a layout: list page.
  • Team pages: view: people shows a folder of people as portraits with name, role and bio; people without a photo get their initials.
  • A featured post: featured: 1 puts the post marked featured: true (or the latest) in a large hero above the rest; with view: grid that's a magazine-style home page.
  • Grouping: group: year, month, folder or any field (group: team) adds a heading before each group.
  • Dates in your language with the new locale setting.
  • Clear errors: a wrong key shows a card that names it and suggests the fix.
  • Posts that look like posts: every dated page in a blog/ or posts/ folder (or in a layout: list folder of dated pages) gets a reading column, a big title with your description, the author's photo and the date, your image as a cover, and at the end its tags, previous and next links and three "Read more" cards (same tag first). Works in .md and .mdx. See Post pages.
assets/changelog-post-pages

Themes: the official themes were updated for the new layouts. If you pin a theme version (theme: leaf@v0.1.8), move to v0.1.9 or later; if your custom.css restyles .list-component, scope those rules to .list-component:not([data-view]) to keep them on the old <List /> only.

See Listing pages. The <List /> component keeps working; the docs show how to switch.

⚠️ Check your site

  • A blog/ or posts/ README, index page or folder note with only prose now gets a generated list under it, in a reading-width column. Add list: false to its frontmatter to keep it as before. See A blog with nothing to write.
  • ```list and ```blog code blocks now render as lists. To show one as code, wrap it in four backticks.
  • draft: true in frontmatter now hides a page from listings (including <List /> and changelog timelines), the RSS feed, the sitemap, site search, tag pages and the sidebar, and asks search engines not to index it. The page itself stays reachable at its URL. Worth checking if you imported posts from Hugo, Jekyll or Astro that still carry it. See Which pages are listed.
  • Dated pages in a blog/ or posts/ folder, or in a layout: list folder of mostly dated pages, now use the post layout: a narrower column, tags at the end instead of under the title, and new previous/next and "Read more" links. The image in a post's frontmatter now shows as a cover, uncropped, unless the post already shows it in its text or it is a small or square image such as a logo; add showImage: false to a post to hide it (the image stays its social card), layout: default to keep a page as it was, or postLayout: false to the folder's README for the whole folder. See Turning it off.
  • Author names link only to a page whose name matches exactly, preferring people/ and authors/ folders. See Author pages.

Fixes

  • A page number past the last page of a list (?page=99) is now a 404, as on the changelog, instead of an empty page.
  • Pages 2 and on of a paginated list block now point search engines at themselves rather than at page 1.
  • Generated blog/ and posts/ listing pages (folders without a README) are now in the sitemap.
  • A list block inside a changelog entry no longer shows page links on the changelog timeline.
  • <List /> no longer lists pages marked publish: false.
  • <List /> pagination shows one ... per gap instead of one per hidden page.
  • The RSS feed no longer fails when a post has an unusual title, author or description (a number, or a wiki link).
Built with LogoFlowershow