chore: add CI, publish workflow, and issue/PR templates - #11
Merged
Conversation
Analysis runs per package: from the repo root the analyzer also walks into example/ and playground/, which resolve their own dependencies, so each is analysed in its own directory and the package job scopes itself to lib/. The docs job runs `npm run build:site` — the same playground-to-wasm plus Astro build the deploy runs — so a broken playground fails CI rather than the site. Publishing is OIDC on a v* tag; it stays inert until automated publishing is enabled for this repo on pub.dev.
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.
Summary
Adds the repo's
.github/: CI, a pub.dev publish workflow, three issue forms, and the PR template this description follows.CI (
ci.yml) — pushes tomain, PRs, and manual dispatch, with in-flight runs cancelled per ref:flutter pub get,dart format --set-exit-if-changed .,flutter analyze lib, a guarded test step,flutter pub publish --dry-run.example,playground) — pub get + analyze inside each app's own directory.npm ci,npm run build:site.Publish (
publish.yml) — fires on av*tag and callsdart-lang/setup-dart/.github/workflows/publish.yml@v1, which installs Flutter itself, so it publishes a Flutter package fine. Auth is OIDC; no token lives in the repo.Templates — bug report (Dart repro block, component dropdown, version, platforms, screenshots,
flutter doctor -v), feature/component request (opens with the no-third-party-deps and nothing-model-facing constraints, so proposals arrive inside them), documentation, plus aconfig.ymllinking docs, playground, roadmap, and API reference. The PR template leads with a before/after screenshot table and a checklist covering the two hard constraints, the playground stage demo,lib/flow_ui.dartexports, and the CHANGELOG.Notes for the reviewer
flutter analyzefrom the repo root walks intoexample/andplayground/, which resolve their own dependencies — it reports 834 issues today. So each app is analysed in its own directory and the package job scopes itself tolib/.findguard. It prints "No tests yet — skipping" whiletest/is absent, and starts running the day the first test lands, without another edit.build:sitecompiles the playground to wasm intopublic/playgroundand then builds Astro, so a broken playground fails CI instead of the site.StacDev/flow_uiwith tag patternv{{version}}. Until then the workflow is inert.bug/enhancement/documentation— the repo has just the nine GitHub default labels. Discussions is disabled, so blank issues stay enabled as the path for questions._headersfile points at a host building from the repo, and a second deploy path would fight it) and a README CI badge — both easy follow-ups if wanted.How this was verified
Every command CI runs was run locally on Flutter 3.47.0 stable / Node 24:
dart format --output=none --set-exit-if-changed .— cleanflutter analyze lib, plusflutter analyzeinexample/andplayground/— no issues in any of the threeflutter pub publish --dry-run— 0 warningsnpm run build:siteindocs/— exit 0 (wasm playground build + 17 pages).github/does not enter the publish archive, so.pubignoreneeded no changeCI itself runs on this PR, so the workflows get their first real exercise here.
Checklist
flutter analyze libandflutter analyzeinexample/andplayground/are cleandart format .applieddependencies:inpubspec.yamlExercised in the playground— n/a, no component changeNew public API exported and documented— n/a, no Dart changed— n/a, nothing user-facing in the published packageCHANGELOG.mdupdatedNote
Low Risk
Infrastructure-only YAML and markdown; no application code, auth logic, or data paths change—publish workflow is inert until pub.dev automated publishing is enabled.
Overview
Introduces a full
.github/setup for contributor workflow and release automation.CI (
ci.yml) runs onmain, PRs, and manual dispatch with per-ref concurrency cancellation. The Package job formats the repo, analyzes onlylib/, runs tests only when*_test.dartfiles exist, and doesflutter pub publish --dry-run. apps matrix-analyzesexampleandplaygroundin their own directories. Docs site installs Flutter + Node 24 and runsnpm run build:site(playground wasm + Astro) so site breaks fail CI.Publish (
publish.yml) triggers on semverv*tags and delegates to Dart’s reusable publish workflow with OIDC (id-token: write)—no stored pub token.Templates: structured issue forms for bugs (repro, component, version, platforms,
flutter doctor), features (package constraints up front), and docs;config.ymlcontact links plus blank issues; PR template with screenshot table and maintainer checklist (analyze scope, no third-party deps, playground, exports, CHANGELOG).Reviewed by Cursor Bugbot for commit 1371d83. Bugbot is set up for automated code reviews on this repo. Configure here.