Skip to content

feat(remix): add optional indicator semantics - #93

Closed
leoafarias wants to merge 1 commit into
feat/fortal-generated-wrappersfrom
feat/remix-progress-semantics
Closed

feat(remix): add optional indicator semantics#93
leoafarias wants to merge 1 commit into
feat/fortal-generated-wrappersfrom
feat/remix-progress-semantics

Conversation

@leoafarias

Copy link
Copy Markdown
Member

Description

Adds optional semantics to Spinner and determinate Progress, including generated
Fortal forwarding. Null inputs remain decorative; labelled indicators expose
one noninteractive role node, and Progress reports a 0–100 value.

Validation: fvm dart run melos ci (1,895 tests) and
fvm flutter analyze packages/remix.

Related Issues

Related to #90. Stacked on #84.


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

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

@leoafarias

Copy link
Copy Markdown
Member Author

Coordination: replay this feature onto canonical #80

PR #84 has been closed as superseded. PR #80 now targets main directly and
is the only canonical Fortal generator/API base. The indicator-semantics
feature and issue #90 remain valid; this PR should stay open and draft.

Synchronize the local workspace first

The latest observed #80 head is b450262, but fetch and use the current remote
head at execution time:

git status --short
git fetch origin
git rev-list --left-right --count \
  HEAD...origin/feat/remix-progress-semantics

The current PR head is expected to be 0ab711c. If the workspace is merely
behind and clean, fast-forward it. If it has uncommitted, ahead, or divergent
work, preserve that work in a commit or uniquely named safety branch before
continuing. Do not reset it.

Create a local safety branch, then replay the one feature commit after the old
#84 head onto the latest #80 head:

git branch backup/pr-93-before-final-fortal-contract
git rebase --onto origin/feat/fortal-polish \
  ebe9ee1decf0a194c1d2b63c7b0fc18a6e7731d4

Required integration

  • Add semantic inputs to the handwritten RemixSpinner and
    RemixProgress target widgets; target-only generation will forward them.
  • Preserve feat(fortal): align visuals with Radix Themes 3.3.0 #80's Progress effects, highContrast, classic constructor, and
    fortalProgressStyle(...) contract.
  • Preserve feat(fortal): align visuals with Radix Themes 3.3.0 #80's Spinner color, opacity, leafRadius, duration fields, and
    fortalSpinnerStyle(...) contract.
  • Resolve the spinner.dart import conflict using normal Dart import grouping.
  • Do not add any parameter-curation annotation.
  • Do not hand-resolve progress.g.dart or spinner.g.dart. Regenerate both
    from the rebased handwritten source.

For the accessibility contract:

  • semanticsLabel is the opt-in signal; with no label, the indicator remains
    decorative.
  • semanticsValue customizes a labelled node and must not independently create
    an unnamed semantics node.
  • Determinate Progress should derive "42" for a value of 0.42 together with
    minValue: "0" and maxValue: "100". This matches the repository's Flutter
    3.44 ProgressIndicator semantics implementation.
  • Updating Progress must update the existing semantics node rather than create
    duplicates.

Verification and publication

Run clean generation and:

fvm dart run melos run ci
fvm flutter analyze
git diff --check

Also format every changed Dart file, run the headless semantics tests, and
confirm there are no factoryParameters, widgetParameters,
targetParameters, or public fortal*Styler references.

After verification:

git push --force-with-lease origin feat/remix-progress-semantics
gh pr edit 93 --repo conceptadev/remix --base feat/fortal-polish

Update this PR body with the new test count and final #80 head used. Do not
delete the old #84 branch; coordination will remove it only after both this PR
and #92 have migrated.

@leoafarias

Copy link
Copy Markdown
Member Author

Coordination update: absorbed into canonical #80

The earlier replay handoff on this PR is superseded. I replayed the handwritten
Progress and Spinner semantics change onto the current #80 branch, regenerated
both wrappers, and added direct and widget-level contract coverage. The
integration also makes semanticsLabel the opt-in signal, so a value without a
label remains decorative.

The result is in #80 as b7ac805 and 4fbd724. On the combined canonical
head, all 2,104 tests pass and analysis, formatting, clean generation, parity,
documentation, hosted Mix resolution, and drift checks are green.

No agent should rebase or force-push this branch now. Closing this draft without
merge because its valid work is already in #80. Issue #90 remains open only to
track delivery through the canonical PR.

@leoafarias leoafarias closed this Jul 28, 2026
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