Skip to content

Release 1.0.0: stabilisation - #16

Merged
tonytonycoder11 merged 12 commits into
mainfrom
stabilisation-1.0
Oct 24, 2026
Merged

tonytonycoder11 merged 12 commits into
mainfrom
stabilisation-1.0

Conversation

@tonytonycoder11

Copy link
Copy Markdown
Contributor

Everything for 1.0.0 in one pull request: the review of the public API, the stability policy, the checks that found what the review could not, the media for what 0.2.0 added, and the release commit. Merging it tags and publishes nothing: the release workflow starts from a tag, and pushes to main only run CI.

The review (M25) read everything the four packages export. Every export now names what it makes public, which stops parseFormEncoded and prettyXml from leaking out with the body model, and FlutwireCallRecorder.observeRequest, which nothing called, is removed. FlutwireStore, MemoryFlutwireStore and FlutwirePreferences are base classes and FlutwireClient is final, so none of them can be implemented or extended outside the package and each can grow without breaking anyone. FlutwireBodyDecoder stays the one interface meant to be implemented. The HAR export names this package's version instead of 0. STABILITY.md says what all of that means. Compared with 0.2.0, dart_apitool lists those three removals for the core and nothing for the adapters. It does not see a change of class modifier, so the changelog lists those by hand.

The checks found things the review could not. The history on disk had no version, and a summary that could not be read was deleted, so an older release opening the history of a newer one would have wiped it (M40). The folder now records a layout number, a folder with none is read as the one 0.1.0 and 0.2.0 write, and a layout this release does not know is left exactly as it is while the history stays in memory. A fixture written by the 0.2.0 code is read back in a test. The Protobuf decoder had only been tested on input built by hand (M38). Run over a descriptor set and messages that protoc and its generated code wrote, it got a negative enum value and a float wrong, and both are fixed with tests that fail without the fixes. The new screens were run on an Android emulator, an iOS simulator, macOS and in a browser (M39). That turned up layout problems on narrow screens: the four numbers above the list ran into each other in a panel of 200 points, the title of a selection was cut, and the dock could be put to the right of a phone. All three are fixed, each with a test that fails without it. A smoke test in the example records a call through dart:io, opens the comparison and the statistics and docks the inspector, and passes on macOS and on an iOS simulator.

Two jobs are new (M41, M39). One compares each package with its latest release on pub.dev and fails when the API breaks and the pubspec has not moved to a version that allows it. The other builds the example for the web, which no job did.

The media (M37) is a second tour and a 74 second video in both READMEs, and four more screenshots on the pub.dev page of flutwire, which now shows ten.

The release commit moves the four packages to 1.0.0 together. The three adapters ask for flutwire ^1.0.0, flutwireVersion and the podspec follow, which version_test checks, the entries that were waiting under Unreleased are now under [1.0.0] - 2026-10-24, each package has its own changelog entry, and the README says what shipped, links the policy and names gRPC capture as what comes next.

Checked locally on this branch: format, analyze, the four suites (1137, 15, 12 and 19 tests), the four flutter pub publish --dry-runs with 0 warnings, the lowest versions of each package, the example for Android, the iOS simulator, macOS and the web, the API job's own script run with bash, which passes for all four packages, and the repository audit, which says "At standard".

What waits for after the merge: the tag v1.0.0 on the merge commit, which starts the release workflow, the board, where the items that target 1.0.0 go to Shipped and the Tier 3 milestone closes, the topics, which are re-ranked at each major release, and a new status update. The date in the changelog heading and in the anchors of the four package changelogs is the day this was written. If the tag goes out on another day, those five places change.

Targets 1.0.0, Tier 3, and the Maintenance item M37.

A second tour of four screens and a 74 second video sit in the README, and the pub.dev page of flutwire gets four more screenshots: the comparison, the statistics, the dock, and the rules with the marks they leave on the list. The light list and the XML body make room, so the page keeps ten.
Every export names what it makes public, so a helper that shares a file with a public class no longer leaks with it: parseFormEncoded and prettyXml stop being exported. observeRequest is removed from the call recorder, which nothing called. The store and preferences types can no longer be implemented outside the package, so they can grow without breaking anyone, and the HTTP client is final. The HAR written by a format's render names this package's version instead of 0.
The folder had no marker, and a summary that cannot be parsed is deleted, so an older release opening the history of a newer one would have wiped it. The folder now records its layout, a folder with none is the one 0.2.0 writes, and a layout this release does not know is left exactly as it is while the inspector keeps the history in memory. A fixture written by the 0.2.0 code, with a summary in the 0.1.0 shape, is read back in a test.
Checked against a descriptor set and messages that protoc and its generated code wrote, which the hand-built tests could not do. A negative enum value is written as ten bytes, which the descriptor reader dropped, so the value showed as a number. A float showed the 17 digits of the double it widens to, 0.10000000149011612 for 0.1, and now shows the shortest decimal that reads back as the same float.
A new job compares each package with the latest version on pub.dev and fails when the API breaks and the pubspec has not moved to a version that allows it.
Found by running the dock, the comparison and the rules on an iOS simulator and in a browser. The four numbers above the list ran into each other in a panel of 200 points and at a large text size, so they now measure their labels and stand in two rows of two when four do not fit. The title of a selection shrinks to the room its five buttons leave instead of ending in dots. A screen narrower than 600 points puts the panel under the app whatever side was chosen, and its menu no longer offers the right.
A test in the example records a call through dart:io against a server on the loopback interface, opens the comparison and the statistics, and docks the inspector on the right. It passes on macOS and on an iOS simulator. CI now builds the example for the web, which no job did, and the example no longer adds a button of its own where Flutwire floats one.
What is public, what a version bump means for the API, the history on disk and the JSON export, how long a deprecated member stays, which versions get fixes, and which platforms and toolchains are supported.
A crash between creating the file and writing its number would leave a marker with nothing in it, and a marker that cannot be read shuts the history out for good. The summaries are written the same way.
The bodies and messages the tests read are compared exactly, and a checkout that converts line endings or an editor that adds a final newline would break them.
The four packages go to 1.0.0 together, and the three adapters now ask for flutwire ^1.0.0. flutwireVersion and the podspec follow, which version_test checks. The entries that were waiting under Unreleased are now under [1.0.0], each package has its own changelog entry, the README says what shipped and links the stability policy, and gRPC capture is named as what comes next.
@trueup-by-nacode-studios

Copy link
Copy Markdown

This pull request adds no capability to production code. Test and benchmark code gains the ability to import a module chosen at runtime, touch the filesystem, in 3 places.

80 files read · 8522 ms · against b96d43b · engine 1.4.1

@tonytonycoder11 tonytonycoder11 moved this to In progress in Flutwire Oct 24, 2026
@tonytonycoder11
tonytonycoder11 merged commit d6d270d into main Oct 24, 2026
8 checks passed
@tonytonycoder11
tonytonycoder11 deleted the stabilisation-1.0 branch October 24, 2026 17:12
@tonytonycoder11 tonytonycoder11 moved this from In progress to Shipped in Flutwire Oct 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Shipped

Development

Successfully merging this pull request may close these issues.

1 participant