Skip to content

Pad v0.7.0

Latest

Choose a tag to compare

@github-actions github-actions released this 02 Jun 14:51
· 27 commits to main since this release
3704cc2

Highlights

πŸ”— Public read-only collection sharing

Share any collection as a public, read-only page at /s/[token]. The share payload now carries settings, schema, item content, and your saved views β€” so the public page renders the matching view (board, list, etc.) with schema-driven colors, empty/large-collection states, a read-only view switcher, and inline row expansion. (TASK-1678 β†’ TASK-1684)

πŸ“Š Insights β€” project analytics

A new Insights page with windowed project reports: cycle-time, WIP and aging metrics, a LayerCake-powered chart library with per-category hover tooltips, per-user layout customization, navigation across past periods with reconstructed historical WIP/status snapshots, a print-optimized exec report (Save as PDF), and a "What shipped" card on the dashboard. Also available via pad project report / the pad_project MCP action. (TASK-1630 β†’ TASK-1647)

🏷️ Tags

Workspace-wide tags: an enumeration endpoint, a chip editor on the item detail page, tag chips on cards/list rows/headers, a dedicated tag page with list/board toggle, multi-select tag filtering with per-collection counts, and a --tag filter on pad item list. (TASK-1653 β†’ TASK-1658)

πŸ—‚οΈ Board enhancements + bulk operations

Trello-style inline draft card creation, per-lane sort overrides, lane-header add buttons and kebab menus, and bulk lane actions through a new bulk-mutation endpoint (single batched SSE event) with confirm + undo toasts backed by a bulk-restore op. (TASK-1668 β†’ TASK-1676)

πŸ’¬ Richer comments

Paste/drop image attachments directly in comments with inline thumbnails and a click-to-expand lightbox, plus inline comment/reply editing via a lean Tiptap editor. (IDEA-1650, IDEA-1660, TASK-1663 β†’ TASK-1665)

πŸ“± Mobile bottom navigation

A mobile bottom nav bar for the web UI. (PLAN-1694)

πŸ› οΈ Notable fixes

  • Structured status-transition log + backfill, with a monotonic seq tiebreak for same-second transitions and a Postgres jsonb LIKE cast fix (BUG-1702).
  • Collab: resolved collab-snapshot diffs and collapsed autosave bursts (BUG-1612).
  • Auth/share: gated the ref-resolver admin bypass on bearer auth (BUG-1618); grant-aware attachment upload for share-link editors (BUG-1661).
  • Cross-visibility collection moves now emit moved-out tombstones (BUG-1675), plus several web reactivity fixes.

Install

# Homebrew (macOS / Linux)
brew install perpetualsoftware/tap/pad

# Docker
docker pull ghcr.io/perpetualsoftware/pad:0.7.0

# Or grab a signed binary from the assets below.

Verifying

All artifacts are signed with cosign (keyless / Sigstore) and ship with SBOMs + SLSA build provenance.

cosign verify-blob \
  --certificate-identity-regexp "^https://github.com/PerpetualSoftware/pad/.github/workflows/release.yml@.*" \
  --certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
  --certificate checksums.txt.pem --signature checksums.txt.sig checksums.txt

Changelog

Features

  • 1d9a611: feat(api): bulk restore op for undo (TASK-1674 backend) (#675) (@xarmian)
  • dfd3811: feat(api): bulk-mutation endpoint + single SSE batch event (TASK-1668) (#669) (@xarmian)
  • 634e834: feat(board): Trello-style inline draft card creation (TASK-1676) (#678) (@xarmian)
  • 2cd8932: feat(board): confirm + undo toast for destructive bulk actions (TASK-1674) (#676) (@xarmian)
  • 9dd4fa6: feat(board): lane-header + add button + kebab menu shell (TASK-1671) (#672) (@xarmian)
  • 710c76f: feat(board): per-lane sort override in the kebab menu (TASK-1673) (#677) (@xarmian)
  • 99e8802: feat(board): wire bulk lane actions via the bulk endpoint (TASK-1672) (#674) (@xarmian)
  • cd8ac9b: feat(charts): per-category hover tooltips + a11y titles (TASK-1638) (#648) (@xarmian)
  • b9ddd02: feat(cli): add --tag filter to pad item list (TASK-1658) (#662) (@xarmian)
  • 949ae03: feat(cli,mcp): pad project report + pad_project report action (TASK-1635) (#641) (@xarmian)
  • 1be42e5: feat(collections): multi-select tag filter + per-collection tag counts (TASK-1666) (#668) (@xarmian)
  • 5203809: feat(collections): page-wide sort control + priority-weight helper (TASK-1670, closes IDEA-1648) (#673) (@xarmian)
  • 076fb9b: feat(comments): comment editing backend β€” user_id, UpdateComment, PATCH, SSE (TASK-1663) (#665) (@xarmian)
  • 0d5f966: feat(comments): inline comment/reply editing via CommentEditor (TASK-1665) (#667) (@xarmian)
  • 6ed16ef: feat(comments): lean Tiptap CommentEditor β€” inline image thumbnails (TASK-1664) (#666) (@xarmian)
  • e179c59: feat(comments): paste/drop image attachments in comments + inline render (IDEA-1650) (#663) (@xarmian)
  • 4c2c4d1: feat(comments): thumbnail comment images + click-to-expand lightbox (IDEA-1660) (#664) (@xarmian)
  • 9870f36: feat(insights): "What shipped" card with linked item IDs on the dashboard (#657) (@xarmian)
  • 0d0c660: feat(insights): navigate to past periods (offset + prev/next) (TASK-1639) (#649) (@xarmian)
  • eeff781: feat(insights): per-user layout customization + persistence (TASK-1634) (#645) (@xarmian)
  • 0d46842: feat(insights): print-optimized exec report view (Save as PDF) (TASK-1642) (#652) (@xarmian)
  • 4368c57: feat(insights): reconstruct historical WIP + status snapshot for past periods (TASK-1640) (#650) (@xarmian)
  • 619465a: feat(onboard): suggest an independent AI code reviewer (model != implementer) (TASK-1645) (#654) (@xarmian)
  • d9fab3e: feat(report): cycle-time + WIP/aging metrics (TASK-1631) (#642) (@xarmian)
  • b68164a: feat(report): opt-in 'what shipped' completed-items list (TASK-1641) (#651) (@xarmian)
  • a1d09c9: feat(report): windowed project report endpoint + DateBucket dialect (TASK-1630) (#638) (@xarmian)
  • 873d351: feat(server): enrich collection share payload with settings, schema, item content (TASK-1678) (#680) (@xarmian)
  • be53856: feat(share): include saved views in collection share payload (TASK-1681) (#682) (@xarmian)
  • d293924: feat(share): inline read-only row expand in public shared view (TASK-1684) (#685) (@xarmian)
  • d4ff473: feat(share): read-only view switcher on shared collection route (TASK-1682) (#683) (@xarmian)
  • ae055ab: feat(share): render matching view on /s/[token] (TASK-1680) (#681) (@xarmian)
  • b422988: feat(share): schema-driven colors + empty/large-collection states (TASK-1683) (#684) (@xarmian)
  • 5dfc292: feat(store): structured status-transition log + backfill (TASK-1637) (#637) (@xarmian)
  • 5c0d367: feat(tags): list/board view toggle on the tag page (TASK-1656) (#661) (@xarmian)
  • 1e3b325: feat(tags): render tag chips on cards, list rows, and the item header (TASK-1655) (#660) (@xarmian)
  • feb068a: feat(tags): tag chip editor on the item detail page (TASK-1654) (#659) (@xarmian)
  • 1b10685: feat(tags): workspace tag enumeration endpoint + cross-collection filter (TASK-1653) (#658) (@xarmian)
  • 5afacaf: feat(web): Insights analytics page (TASK-1633) (#643) (@xarmian)
  • 0c8c066: feat(web): LayerCake chart component library for Reports (TASK-1632) (#639) (@xarmian)
  • 1a728fe: feat(web): add Insights sidebar nav link (TASK-1636) (#644) (@xarmian)
  • 2721d89: feat(web): bulk-mutation API client method + types (TASK-1669) (#671) (@xarmian)
  • 5c491b7: feat(web): mobile bottom navigation (PLAN-1694) (#692) (@xarmian)
  • a58c64f: feat(web): public read-only collection view renderers (TASK-1679) (#679) (@xarmian)

Bug fixes

  • a5c7fc9: fix(attachments): grant-aware upload auth so share-link editors can attach (BUG-1661) (#688) (@xarmian)
  • a666715: fix(insights): professional print formatting for the exec report (TASK-1647) (#656) (@xarmian)
  • ae8173b: fix(server): gate ref-resolver admin bypass on bearer auth (BUG-1618) (#690) (@xarmian)
  • a4e0eb1: fix(share): stop ShareDialog effect from wedging the scheduler in prod (#686) (@xarmian)
  • 3704cc2: fix(store): cast jsonb metadata to text for Postgres LIKE + gofmt (BUG-1702) (#693) (@xarmian)
  • 333f509: fix(store): monotonic seq tiebreak for same-second status transitions (TASK-1643) (#655) (@xarmian)
  • 57995c5: fix(sync): moved-out tombstones for cross-visibility collection moves (BUG-1675) (#670) (@xarmian)
  • 72d8963: fix(timeline): resolve collab-snapshot diffs + collapse autosave bursts (BUG-1612) (#691) (@xarmian)
  • 034b540: fix(web): de-reactify open-transition trackers in 3 more modals/banners (#687) (@xarmian)
  • d2e80ef: fix(web): reflow page content when sidebar collapses (BUG-1651) (#689) (@xarmian)

Other changes

  • a88f775: chore(ci): bump Node 20 actions to Node 24 ahead of June 2026 deadline (TASK-1165) (#635) (@xarmian)
  • d2bcbd3: chore(deps,docs): bump x/image v0.41.0 + sync seed ship-playbook codex guidance (#646) (@xarmian)
  • 24707fc: chore(templates): make seeded ship playbook review loop tool-neutral (TASK-1644) (#653) (@xarmian)