CI/repo hardening + docs (#194–#201)#202
Merged
Merged
Conversation
…erior (#193) Container margin is a bare Padding with no decoration, so it never self-hit-tests; GestureDetector's default deferToChild behavior left that margin band a silent dead zone around every channel tab, indistinguishable from the clickable area. Moves the spacing to an inner Padding and sets HitTestBehavior.opaque so the whole tab row registers taps, fixing missed clicks near tab edges/seams (including reselecting a channel after it's part of a multi-selection). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Both existing CI jobs run on ubuntu-latest and only analyze/test/clippy — nothing compiles patch_core as a cdylib/staticlib or links it into the app, so native/link regressions (e.g. a missing `-framework` in the cargokit podspec, per CONVENTION.md → Platform and ERRORS.md → Build/Release) only surface when a release tag is pushed. Add a macos-latest job that runs `flutter build macos --debug`, reproducing the release-time compile-and-link path with the same pinned Rust 1.95.0 / Flutter 3.44.1. Verified locally that dropping `-framework CoreMIDI` from the podspec fails this build with undefined CoreMIDI symbols, so the documented breakage class now fails the PR. This is also the only CI job that compiles patch_core's macOS cfg(target_os) paths (CoreMIDI/midir); Windows (WinMM) stays covered by release.yml. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The Dart tree was never run through `dart format`, so 83 first-party files in lib/ and test/ were non-conformant to Dart 3.12's formatter. Reformat them so the CI format gate (added next) passes on main. The formatter splits `if (cond) stmt;` onto two lines when the body is long, which then trips `curly_braces_in_flow_control_structures` (single-line ifs are exempt, split ones are not). Fixed the 4 affected sites by adding braces — satisfying both the formatter and the linter. analyze: 0 issues; 300 tests pass. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add a `dart format --output=none --set-exit-if-changed lib test` step to the Flutter CI job, mirroring the Rust `cargo fmt --check` gate, so unformatted Dart fails the PR. Scoped to first-party dirs (generated bindings and vendored cargokit are excluded via the analyzer and have no dart-format --exclude flag). Document the command and the brace/formatter interaction in CONVENTION.md. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- release.yml: pin the Rust toolchain action to `@1.95.0` (matching ci.yml)
instead of `@master`, so release builds are reproducible. GitHub disallows
`${{ env }}` in `uses:`, so the version lives on the ref literal and the now
unused RUST_VERSION env var is dropped (FLUTTER_VERSION stays — it's used via
a `with:` input, which does interpolate).
- ci.yml: add a top-level `permissions: contents: read` block so the default
GITHUB_TOKEN is read-only. The release job keeps its own `contents: write`.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Weekly update PRs for the GitHub Actions, Cargo (workspace root), and pub (patch_app) ecosystems, grouped so bumps land as a few reviewable PRs rather than a flood. Documents that flutter_rust_bridge bumps are a coordinated manual change (Rust crate + Dart package + regenerated glue), not auto-merge. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…198) The repo shipped a full GPLv3 LICENSE file while README said "TBD — private for now" and neither package declared a license. Make every surface agree: - README License section states GPL-3.0-only, linking LICENSE. - patch-core/Cargo.toml gets license = "GPL-3.0-only" + repository + homepage. - patch_app/pubspec.yaml gets repository + homepage (pub has no license key; the LICENSE file is authoritative). - .gitignore drops the legacy patch_app/.packages entry and ignores the root Patch-*.dmg / Patch-*.exe release artifacts. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Issue forms (bug, feature) auto-apply `needs-triage` so filed issues start in the documented triage flow (docs/agents/triage-labels.md), and prompt for the fields triage needs while steering toward the CONTEXT.md domain glossary and the "does this help a crew execute a live show more reliably?" litmus. Also create the two missing vocabulary labels (needs-info, ready-for-human). The PR template carries a checklist mirroring the CI gates (fmt/clippy/test, dart format, analyze/test, native build, FFI codegen) and a Closes # link. Blank issues stay enabled so AFK agents filing via the gh CLI aren't blocked. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
docs/superpowers/plans/2026-06-28-multi-address-peer-discovery.md was a 1539-line implementation plan sitting under user-facing docs/ and not indexed in docs/README.md. Its architectural decisions (peer addresses map, peer_id- keyed ACKs, LRU dedup, per-address pruning) are fully captured in ADR-0007, and the work has shipped — so the plan is a superseded planning artifact. Remove it (git history preserves it) and the now-empty superpowers/ tree, so docs/ contains only operator docs plus adr/ and agents/. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The #199 issue forms auto-apply `bug`/`enhancement`, but triage-labels.md only listed the five status labels — so both axes of the #194–#200 review flagged the doc as no longer authoritative. Split the doc into status labels (where an issue is in triage) and category labels (what it's about), noting a normal issue carries one of each. Docs-only; no form or label changes. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This was referenced Jul 13, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What & why
Batch of CI, packaging, and docs improvements from a repo review — closing the gap where a PR could pass CI green but break the shippable app, plus licensing/metadata/triage housekeeping.
Closes #194, #195, #196, #197, #198, #199, #200, #201
Per ticket
flutter build macos --debug, compiling+linkingpatch_corelike a release build. Verified locally that dropping-framework CoreMIDIfails the link, so the documented breakage class now fails the PR.dart formatCI gate + one-time reformat of 83 first-party files (its ownstyle:commit); fixed 4curly_braceslints the formatter surfaced; documented in CONVENTION.md.@1.95.0(was@master);permissions: contents: readon CI.dependabot.ymlfor actions/cargo/pub, grouped, with the FRB paired-change note.Cargo.toml+pubspec.yamlall declare GPL-3.0-only; repo/homepage metadata;.gitignorecleanup.needs-triage+ category) + PR template; created the two missing labels (needs-info,ready-for-human).superpowers/tree.bug/enhancementas category labels intriage-labels.md(the one point both review axes flagged).Checks
cargo fmt --check+cargo clippy -- -D warnings+cargo test(331 pass)dart format --set-exit-if-changed lib test+flutter analyze(0 issues) +flutter test(300 pass)flutter build macos --debuglinks (incl. verified failure detection)/code-review(Standards + Spec) — no hard violations, no correctness issuesNotes
dart formatreformat (Enforce Dart formatting in CI #195) is isolated in commit0b03394(whitespace only) so blame stays clean.needs-info/ready-for-human(Add GitHub issue and PR templates encoding the triage vocabulary #199) andbug/enhancementalready existed.🤖 Generated with Claude Code