feat(service,host): follow the sidebar's sections and pins over Neon Realtime

Merged
CH
7d ago
+453-25

The sidebar's sections and repository pins move onto the live layer. Service and host are in one PR because both are small. Stacked on #3956.

  • New live procedure live.sidebar: three statements, sections, entries and pins, with the same rows and access rule as listTaskSections and listRepositoryPins.
  • Reader: sidebarOfLiveRows (sidebar-live.ts) orders them as the held reads do.
  • Host: follows them on liveRows, as it follows the workspaces, and writes taskSections and repositoryPins onto the view. The pins and sections reads inside every TASKS_REFRESH are gone; a write still draws the service's answer at once.

Tests

  • PGlite parity: the section owner, a teammate and an outsider.
  • Procedure test.
  • Immutability check.
  • compose-tasks: one seal across refreshes, and another Mac's section and pin pushed in order.

Made with Luke