Skip to content

In-CLI feedback / bug reporting (devflow feedback + in-session hotkey, no browser) #17

Description

@karava

Problem

The feedback channel is decided — GitHub Issues (see #11: repo is public, bug_report.md template + package.json bugs URL landed in ffa40dd). But there's still no way to give feedback from inside the CLI itself. A user who hits a bug mid-session has to know to go find the GitHub repo. We want reporting to be a first-class, terminal-native flow.

Captured from discussion: prefer GitHub Issues over the old idea of pushing to a Google Form.

Goal

Let a user report a bug / send feedback without leaving the terminal and without opening a browser — a complete submission flow in the CLI — plus a way to do it mid-session without tearing down the timer/music.

Proposed UX

1. devflow feedback command — complete in-CLI submission flow

  • Prompt for the message (multi-line; e.g. finish with an empty line or Ctrl+D).
  • Auto-attach low-noise context: CLI version, OS/arch, Node version, and current mode/channel if a session is active. Show the user exactly what will be sent and confirm before submitting.
  • Submit directly and print the resulting issue URL. No browser.

2. In-session hotkey

  • While devflow start is running, a key (e.g. f) opens a quick feedback capture without ending the session. The countdown redraw + music keep going (or pause cleanly) and resume after submit.
  • Note: start.ts runs stdin in raw mode and swallows stray keystrokes today — this needs a deliberate "suspend redraw → read a line → restore" path. Must stay best-effort: a failure here can never crash or corrupt the session.

Architecture — the key constraint: no browser

Filing a GitHub issue directly from a published npm CLI means we cannot ship a GitHub token. Options:

  • (Recommended) Server endpoint on devflow.fm. Add POST /api/feedback (in the web repo) that holds a server-side GitHub token and creates the issue. The CLI just POSTs { message, context } to it — exactly the pattern src/lib/listener.ts already uses for the heartbeat. Override via DEVFLOW_FEEDBACK_URL (cf. DEVFLOW_CHANNELS_URL).
    • ⚠️ This half lives in the separate devflow.fm web repo, not this one — needs to be built there first (or in parallel).
  • Fallback: if the endpoint is unreachable/offline, fall back to printing (and optionally opening) a prefilled GitHub new-issue URL using the bug_report.md template, so feedback is never a dead end.
  • Rejected as primary: requiring the user to create a personal access token (too much friction for a focus tool).

Analytics tie-in

We also want to capture some analytics alongside this. Feedback submissions are a natural event to record (count, version spread, was-a-session-active), and the anonymous-context idea overlaps heavily with #7 (anonymous CLI usage telemetry). Decide whether the feedback endpoint and the telemetry endpoint share infrastructure, and keep the privacy stance consistent.

Privacy

  • Anonymous by default — no PII, no file paths, no usernames in the auto-attached context.
  • Show the payload before sending; submission is explicit/opt-in by nature (the user typed it).

Acceptance

  • devflow feedback files a GitHub issue end-to-end with no browser, and prints the issue URL.
  • Context (version, OS, mode/channel) is attached and shown before sending.
  • A session can be reported from via an in-session hotkey without ending it.
  • Graceful fallback when the endpoint is unreachable.
  • devflow.fm POST /api/feedback endpoint exists (tracked in the web repo).

Refs

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions