Skip to content

v1.87.0

Choose a tag to compare

@jaapstronks jaapstronks released this 22 Oct 18:00
092e7d6

1.87.0 (2026-10-22)

⚠ BREAKING CHANGES

  • comment lists are read a page at a time (B824) (0a0b402)
  • GET /api/v1/presentations/{id}/comments and the MCP tools list_comments and list_recent_comments move onto the list-page contract: { limit, cursor } in, { comments, nextCursor } out, ordered (created_at desc, id desc); a deck page counts threads, each with all its replies. total is gone; offset is refused with 400 and use: 'cursor'; limit outside 1..100 is refused (MCP allowed up to 200). The internal comment routes, the share-link guest comments and GET /api/activity / the Home activity rail (B823) follow the same contract.
  • Migration 099 backfills activity_events.created_at (now) where NULL, makes it NOT NULL and replaces idx_activity_events_org_created with (organization_id, created_at DESC, id DESC). Migration 100 does the same backfill and NOT NULL on presentation_comments.created_at and adds (presentation_id, created_at DESC, id DESC) and (organization_id, created_at DESC, id DESC).

Added

  • a PowerPoint file is the source of editable slides (B829) (#1828) (287a1fe)
  • comment lists are read a page at a time (B824) (0a0b402)

Fixed

  • a list in an unknown slide type keeps its translation (B836) (#1830) (b4c817b)
  • an activity page is full and only holds events you may see (B823) (#1827) (161dcfd)
  • the tag count on Presentations leaves trashed decks out (B835) (#1824) (e37feda)
  • the unknown-type placeholder keeps each language's text (B833) (#1825) (9dafcf6)