Files
zopu-code/packages/backend/convex
-Puter fd207eb067 feat(web): real linked Signal projection from signalIssueAttachments
Replace the deliberate signalCount of 0 with authenticated linked-Signal
data from the Lane A signalIssueAttachments relation.

- Add listLinkedSignalsForProject query (user-authenticated via
  requireProjectMember) returning issue-grouped LinkedSignalView data
  using the existing by_issue index. One query serves both card counts
  and expanded detail.
- Update work-unit-projection builders to accept linkedSignals param;
  LinkedSignal type with signalId, title, summary, sourceCount, createdAt.
- Feed real attachment data into collapsed card signalCount and expanded
  detail linked-signal list with provenance (source count, relative time).
- Add signal.attached event handler to activity timeline projection.
- 32 tests including 4 linked-signal projection tests, 1 signal.attached
  activity mapping test, and cross-issue signal isolation test proving
  issue A cannot inherit issue B's linked signals.
2026-07-24 21:21:31 +05:30
..
2026-07-19 02:46:47 +05:30
2026-07-19 02:46:47 +05:30
2026-07-19 02:46:47 +05:30
2026-07-19 02:46:47 +05:30
2026-07-19 02:46:47 +05:30
2026-07-19 02:46:47 +05:30

Convex Backend

This directory contains the Convex control plane for the app and daemon runtime. Generated files under _generated/ are maintained by Convex and should not be edited by hand.

Daemon Control Plane

  • schema.ts defines daemon definitions, high-churn daemon presence, leased daemon commands, append-only command events, and the sample todos table.
  • daemons.ts manages stable daemon definitions with upsert, get, and list.
  • daemonRuntime.ts records daemon session lifecycle: connect, heartbeat, disconnect, recordEvent, and bounded event listing.
  • daemonCommands.ts owns the command queue: enqueue, available, claim, start, succeed, fail, cancel, and bounded command listing.

Commands are claimed by daemon session. Preserve the claimedBySessionId ownership checks, leaseExpiresAt expiry semantics, terminal statuses, and bounded query results when changing this flow.

Usage

Convex functions are exposed by file path through the generated api object, for example api.daemonCommands.enqueue or api.daemonRuntime.connect. Run bun run dev:server from the repository root to start the development deployment, and bun run dev:setup when configuring Convex for the first time.