Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions .claude/skills/flutter-version-bump/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -534,6 +534,29 @@ Then, per `STYLE_GUIDE.md`, one short bullet under `🔄 Changed` in each of the

Finish with `melos bootstrap` and commit the resulting root `pubspec.lock`.

### Sweep the workarounds the new floor unblocks

Still in Track B, after the constraints move. `FLUTTER_BLOCKED.md` lists every workaround that
exists only because an upstream fix had not shipped; each row carries the release that makes it
removable. Read it, and cross-check the code so a stale file cannot hide a site:

```bash
grep -rn 'TODO(flutter)' packages/ sample_app/ # every tagged site, even if the file drifted
```

For each row whose "Removable at" is now `<=` the new floor, confirm the fix really shipped
before deleting anything — the recorded version is a prediction, and upstream fixes slip:

```bash
# in a Flutter checkout, using the fix commit named in the row
git tag --contains <sha> | grep -vE '\-' | sort -V | head -1
```

Then remove the workaround, its `TODO(flutter)`, any test that only pinned the workaround's
mechanism, and the row. If the fix slipped, re-date the row instead — do not silently drop it.

Keep this in the Track B commit: it is only correct because the floor moved.

## Step 7 — Changelog and PR

Track A changes that are user-visible (a widget swapped, a deprecation migrated) get a CHANGELOG bullet in the
Expand Down
19 changes: 19 additions & 0 deletions FLUTTER_BLOCKED.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Workarounds blocked on a Flutter release

Workarounds that exist only because an upstream Flutter fix has not shipped. The
[`flutter-version-bump`](.claude/skills/flutter-version-bump/SKILL.md) floor raise reads
this to decide what is now removable.

One registry for the whole monorepo: append an entry with the same fields, never add a
file. Tag the code site `// TODO(flutter):` too, so `grep -rn 'TODO(flutter)'` finds it if
this file drifts. Delete the entry when the workaround goes — git history is the archive.

## `SelectionArea` keyed on `BrowserContextMenu.enabled`

- **Removable at:** Flutter 3.48 — predicted, not confirmed
- **Site:** `packages/stream_chat_flutter/lib/src/message_widget/components/stream_message_text.dart`
- **Upstream:** [flutter#186459](https://github.com/flutter/flutter/issues/186459), fixed by [flutter#186553](https://github.com/flutter/flutter/pull/186553) (`2a469b88`)
- **Confirm the release:** `git tag --contains 2a469b88` in a Flutter checkout — empty as of 3.47.1
- **Verify removal:** needs the browser test in FLU-713; the VM test passes even with the key hardcoded
- **Keep:** `_BrowserContextMenu` in `context_menu_region.dart` — reference counting, not Flutter-blocked
- **Tracked:** FLU-710, [#2906](https://github.com/GetStream/stream-chat-flutter/issues/2906)
5 changes: 5 additions & 0 deletions STYLE_GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -1095,6 +1095,11 @@ Include an issue link when the deferred work is tracked; if the constraint is
self-explanatory ("wait for backend enrichment", "wait for next major"), a link isn't
required.

A workaround that only exists because an upstream Flutter fix has not shipped yet uses the
`// TODO(flutter):` tag and gets an entry in
[`FLUTTER_BLOCKED.md`](FLUTTER_BLOCKED.md), which the floor raise reads. Both matter: the
entry holds what does not fit in a comment, the tag survives the file drifting.

### Bare ignore directives are fine

`// ignore: rule_name` directives do not require an explanatory comment in this repo.
Expand Down
Loading