Skip to content

refactor(remix): generate Fortal wrappers - #84

Closed
leoafarias wants to merge 3 commits into
mainfrom
feat/fortal-generated-wrappers
Closed

refactor(remix): generate Fortal wrappers#84
leoafarias wants to merge 3 commits into
mainfrom
feat/fortal-generated-wrappers

Conversation

@leoafarias

@leoafarias leoafarias commented Jul 24, 2026

Copy link
Copy Markdown
Member

Description

Replace the 25 historical handwritten Fortal* wrappers with deterministic
@MixWidget output while preserving the public APIs and behavior present on
main.

The annotations use explicit Remix widget targets and curated recipe
parameters. Generated constructors expose existing variant/size controls and
the underlying content/behavior parameters, while omitting style,
styleSpec, and non-widget recipe controls.

This PR also adds a clean-generation check that deletes every committed
.g.dart artifact, regenerates from source, and verifies byte-for-byte output.

Related Issues

Uses the generator support merged in
conceptadev/mix#997 and released
as mix_annotations 2.2.0-beta.1 and mix_generator 2.2.0-beta.2.


Checklist

  • My PR includes unit or integration tests for all changed/updated/fixed
    behaviors.
  • I have updated or added relevant documentation (doc comments with ///).
  • I am prepared to follow up on review comments in a timely manner.

Breaking Change

Does this PR require users of the package to manually update their code?

  • Yes, this is a breaking change.
  • No, this is not a breaking change.

Validation

  • dart run tool/check_generated.dart — clean regeneration reproduced all 23
    committed artifacts byte-for-byte.
  • flutter analyze — no issues.
  • flutter test --reporter=failures-only — 1,889 tests passed.
  • git diff --check — passed.
  • GitHub CI — analyzer and package test workflow passed against the published
    Mix prereleases.

@leoafarias

Copy link
Copy Markdown
Member Author

Superseded by #80

This PR is being closed without merging because the final Fortal
generator/API decision was completed on #80 after this branch was created.
Nothing is being discarded: every commit in this branch is already an ancestor
of #80, and #80 now targets main directly.

This branch must not be used as the final API reference. It still contains the
earlier contract:

  • 25 curated factoryParameters annotations;
  • public fortal*Styler recipe names;
  • generated output that predates the final all-recipe-parameters surface.

The canonical contract is recorded in #80:

  • target-only @MixWidget(target: RemixX.new);
  • public fortalXStyle recipes;
  • named variant constructors plus the unnamed constructor/public variant for
    dynamic selection;
  • all recipe parameters exposed, including supported highContrast controls
    and Avatar fallbackLength;
  • no #998/#999 variant-registration machinery.

PRs #92 and #93 remain valid feature drafts, but their workspaces must fetch
the latest #80 head, replay only their handwritten feature source/tests onto
feat/fortal-polish, regenerate all .g.dart files, and retarget their PR base
to feat/fortal-polish.

The feat/fortal-generated-wrappers branch is intentionally retained until
those dependent workspaces have migrated. Closing this PR does not delete or
rewrite that branch.

@leoafarias leoafarias closed this Jul 28, 2026
@leoafarias
leoafarias deleted the feat/fortal-generated-wrappers branch July 28, 2026 18:20
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.

1 participant