Skip to content

feat: copy a bug report with versions, displays, access and crashes - #341

Merged
M4n0x merged 1 commit into
mainfrom
feat/bug-report
Oct 26, 2026
Merged

M4n0x merged 1 commit into
mainfrom
feat/bug-report

Conversation

@M4n0x

@M4n0x M4n0x commented Oct 26, 2026 •

Copy link
Copy Markdown
Collaborator

Problem

A useful bug report needs the StableBar version, macOS, the displays, the workspace manager, the theme and packages, StableBar's access and its current errors. Reporters gather these by hand: the form sends them to Finder's Get Info for the version, and Copy snapshot gives none of them. Fixes #93.

Stacked on #338 (crash visibility), whose crash list this report includes. Merge #338 first; this PR's diff is its one commit.

Changes

  • BugReport produces Markdown with:

    • StableBar's version and build, macOS, the Mac;
    • each display: built-in or external, size, scale, notch, main;
    • the configuration file and whether it's valid;
    • the theme and turned-on packages with their versions;
    • the workspace manager with its --version and path;
    • crashes from the last 30 days, one line each.

    A running bar adds its access (Accessibility, Calendars), workspace connection, active profiles, and configuration and widget errors. Home folders become ~, and no configuration values are included, so package secrets stay out.

  • Settings → Status → Report a problem sits at the bottom of the overview. Copy bug report copies the report. Report on GitHub… opens bug_report.yml with the report as its Environment and sends nothing until the user submits. Long lists and lines are cut so the link stays under 8,000 characters.

  • StableBar --report prints the same report. It asks a bar running with the configuration for its live facts through a new report control action. If no bar runs, it prints what it can read alone and says that access, connections and problems are missing. If a bar runs but doesn't answer, as one from before this change wouldn't, it says so ("didn't answer (an older StableBar?)"). The bar's reply decodes with missing fields read as empty, so a CLI and a bar of different versions still understand each other.

  • Shared facts. MacFacts and ConfigurationSummary replace the copies in Triage.swift. StableBar triage now also says whether each display is built-in or external.

  • Docs and form. docs/settings.md describes Report a problem, docs/command-line.md lists --report, and the bug report form's Environment field asks for the report. Searching settings for "bug" or "issue" finds Status.

Testing

  • New tests in BugReportTests cover:

    • the full report with a running bar, and without one;
    • empty lists;
    • the issue link's field, encoding and length, with 300 long problems;
    • ConfigurationSummary for a valid file, an invalid file (theme and packages still named), a bundled theme and a missing file;
    • the workspace tool line from a fake aerospace on a scratch PATH;
    • the bar's report reply, and decoding a reply with missing and extra fields;
    • gathering from a scratch configuration;
    • --report parsing.

    Each failed before the change. The triage tests pass on the shared facts.

  • swift test on this branch: 294 XCTest and 491 Swift Testing tests pass.

  • .build/debug/StableBar --config <scratch>/config.json --report with no bar running printed the partial report: two displays (built-in and external, notch), "valid, 2 widgets in 1 file", "Theme: Built-in", the installed AeroSpace's version and path, and "Running bar: none with this configuration…".

  • The Status overview, drawn offscreen from a scratch configuration with sample crash reports, before (feat: show StableBar's crashes in Settings and copy them into a bug report #338) and after:

Before After
  • Not checked:
    • --report against a running bar, which a unit test covers through the bar's report reply;
    • the buttons in a running Settings window;
    • the prefilled form in a browser.
  • git diff --check and commitlint on the full message pass.

Merging

After #338. A merge commit or rebase merge, which keeps the one commit. As a feat, it makes a minor release.

Claude Opus 5.5 via Claude Code

A useful bug report needs the StableBar version, macOS, displays, the workspace manager, the
theme and packages, StableBar's access and its current errors, and people gathered them by hand.

Settings → Status → Report a problem copies them as Markdown, or opens the bug report form with
them as its Environment. `StableBar --report` prints the same report. With no bar running for
the configuration, it still lists what it can read and says what is missing. Home folders
become ~ and no configuration values are included. Crashes from the last 30 days get one line
each. `StableBar triage` now shares these facts, and the bug report form points to the report.

Fixes #93
@M4n0x
M4n0x requested a review from Seb-GRAF as a code owner October 26, 2026 17:51
Base automatically changed from feat/crash-reports to main October 26, 2026 17:58
@M4n0x
M4n0x merged commit 248696b into main Oct 26, 2026
7 checks passed
@M4n0x
M4n0x deleted the feat/bug-report branch October 26, 2026 18:00
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.

Copy a bug report with versions, displays and permissions

1 participant