Skip to content

Wire the Intake transport so the feedback adapter can read - #67

Merged
adbarc92 merged 1 commit into
mainfrom
feat/feedback-transport
Sep 6, 2026
Merged

Wire the Intake transport so the feedback adapter can read#67
adbarc92 merged 1 commit into
mainfrom
feat/feedback-transport

Conversation

@adbarc92

@adbarc92 adbarc92 commented Sep 5, 2026

Copy link
Copy Markdown
Owner

#65 landed adapters/feedback.ts and its 12 tests — but no Tauri command existed to feed it. lib.rs registered halyard_status, halyard_queue, audience_health, audience_posts and scan_local_projects, and nothing else, so the adapter has had nothing to read at runtime since it merged. This was blocked on telltale's base URL, which is now recorded.

Six touch points, following the audience_posts path exactly

File What lands
src-tauri/src/dashboard.rs feedback_issuesGET {TELLTALE_BASE_URL}/v1/issues, bearer TELLTALE_TOKEN, envelope returned unchanged
src-tauri/src/lib.rs register it in generate_handler!without this the command does not exist at runtime
api.ts tauriFeedbackReader implementing the FeedbackReader seam
store.ts pollFeedback, mirroring pollAudience
views/Dashboard.svelte prop, poll call, and the SOURCE_LABEL entry — without the last, the badge renders raw lowercase feedback through the ?? c.source fallback
App.svelte inject the real reader

Two deliberate choices

TELLTALE_BASE_URL has no default. Unset means "Intake is not configured on this machine", which the adapter must be able to tell apart from "configured but unreachable" — the second greys a lane, the first should not invent one.

A non-2xx does not echo the response body. A 401 here is an operator-token problem; the body is not worth risking in a log.

The command passes the whole { issues, errors } envelope through rather than reshaping it, so there is exactly one place the payload is understood — and that place is pinned on both sides by the wire contract from #66.

Tests

Every sibling poll has store tests; this one would otherwise have shipped without. Three added, each driven red on the defect it exists to catch:

pollFeedback drops its result        →  2 red (composition, §6.3 error passthrough)
pollFeedback evicts the wrong source →  1 red (replace semantics)

Suite 159 → 162 · typecheck 357 files, 0 errors · cargo check clean.

Unrelated, found en route

The Rust build cache held absolute paths under D:\MajorProjects\CURRENT\ — the pre-reorg location — and failed to build until target/debug/build was cleared. Third instance of reorg fallout after the audience venv. Nothing in this diff caused it or fixes it; flagging because it will bite the next person who builds.

🤖 Generated with Claude Code

…n read

PR #65 landed adapters/feedback.ts and its 12 tests, but no Tauri command
existed to feed it - lib.rs registered halyard_status, halyard_queue,
audience_health, audience_posts and scan_local_projects, and nothing else. The
adapter has had nothing to read at runtime since it merged. This was blocked on
telltale's base URL, which is now recorded.

Six touch points, following the audience_posts path exactly:

  dashboard.rs   feedback_issues - GET {TELLTALE_BASE_URL}/v1/issues with a
                 bearer TELLTALE_TOKEN, returning the envelope unchanged
  lib.rs         register it in generate_handler!, without which the command
                 does not exist at runtime
  api.ts         tauriFeedbackReader implementing the FeedbackReader seam
  store.ts       pollFeedback, mirroring pollAudience
  Dashboard.svelte  prop, poll call, and the SOURCE_LABEL entry - without the
                 last, the badge renders raw lowercase "feedback" through the
                 ?? c.source fallback
  App.svelte     inject the real reader

TELLTALE_BASE_URL has no default, deliberately. Unset means "Intake is not
configured on this machine", which the adapter must tell apart from
"configured but unreachable" - the second greys a lane, the first should not
invent one. A non-2xx does not echo the response body: a 401 here is an
operator-token problem and the body is not worth risking in a log.

The command passes the whole { issues, errors } envelope through rather than
reshaping, so there is exactly one place the payload is understood, and that
place is pinned on both sides by the wire contract from PR #66.

Three store tests added, since every sibling poll has them and this one would
otherwise have shipped without. Each was driven red on the defect it exists to
catch:

  pollFeedback drops its result       -> 2 red (composition, error passthrough)
  pollFeedback evicts the wrong source -> 1 red (replace semantics)

Suite 159 -> 162, typecheck 357 files 0 errors, cargo check clean.

Unrelated, found en route: the Rust build cache held absolute paths under
D:\MajorProjects\CURRENT\, the pre-reorg location, and failed to build until
target/debug/build was cleared. Third instance of reorg fallout after the
audience venv; nothing in this diff caused or fixes it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@adbarc92
adbarc92 merged commit be7809b into main Sep 6, 2026
14 of 16 checks passed
@adbarc92
adbarc92 deleted the feat/feedback-transport branch September 6, 2026 22:38
adbarc92 added a commit that referenced this pull request Sep 8, 2026
Run rustfmt on both manifests; main's fmt gate has been red since #67
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant