Skip to content

1.1.0 prep: loop speed fix, triangle repaint, lower SDK floor, docs - #6

Merged
hooshyar merged 5 commits into
mainfrom
agent/quick-wins-2026-10
Oct 12, 2026
Merged

hooshyar merged 5 commits into
mainfrom
agent/quick-wins-2026-10

Conversation

@hooshyar

@hooshyar hooshyar commented Oct 10, 2026 •

Copy link
Copy Markdown
Owner

Quick wins from the 2026-10-10 package audit, revised after an independent review. The version stays 1.1.0 (still unpublished); the CHANGELOG 1.1.0 section is updated.

Fixes

  • duration changes now apply to a running loop (MatrixLoader / DotLoader).
    • repeat() keeps the period it started with, so a new duration only took effect after playback or paused changed. The example's speed slider did nothing.
    • The loop now restarts, from its current value, when duration changes and playback is loop or bounce. once is untouched, so onComplete can't fire twice.
    • Regression test: test/duration_change_test.dart. It fails on the old code.
    • Known nuance: a bounce that is mid-reverse restarts going forward. There is no position jump, but the direction flips.
  • TriangleLoader now applies duration changes. It also repaints when color, triangleSize or wireframe change; shouldRepaint compared only progress, so a static frame under reduced motion went stale.

Reach

  • SDK floor: sdk ^3.11.4 → ^3.8.0, flutter >=1.17.0 → >=3.32.0. The package previously needed about Flutter 3.41 and now resolves on Flutter 3.32 and later.
    • Verified by a new CI job, sdk-floor: pub get, analyze lib and the full test suite pass on Flutter 3.32.0 / Dart 3.8.0 stable.
    • The job also prints its toolchain, and any pub get error, as annotations.
  • No reformat needed. dart_style formats language 3.8 to 3.12 identically here; the only change gated at 3.10 needs trailing_commas: preserve. The format check passes.
  • Why not 3.10. The first version of this PR used ^3.10.0 / Flutter 3.38.0. The floor job showed that Flutter 3.38.0 ships Dart 3.10.0-290.4.beta, a pre-release that ^3.10.0 excludes, so that floor did not actually resolve.
  • pubspec description and topics. The topics are now loading, animation, ai, chat, dot-matrix.

Docs

  • example/README.md was flutter-create boilerplate. pub.dev shows that file first on the Example tab, so it is now a recipe guide.
  • README:
    • The JSON sample used frames before declaring it.
    • The tap sample printed a literal \$row.
    • The MatrixLoader table gains color, playback, curve, paused, onComplete and onDotTapped.
  • .pubignore now excludes the internal PROJECT.md.
  • CLAUDE.md states the new floor.

Not in this PR

  • Theme-aware default colour for DotLoader.
  • The repaint: painter refactor.
  • TriangleLoader clipping.

Related: #1. customDotSize is already in 1.1.0; close #1 once 1.1.0 is published.

🤖 Generated with Claude Code

Added on 2026-10-12, before release

  • publish.yml: pushing a v<version> tag now publishes to pub.dev through GitHub's OIDC token. GitHub Actions publishing is now enabled on pub.dev for this package, with tag pattern v{{version}}.
  • deploy-web-demo.yml: rebuilds the live demo at https://hooshyar.github.io/flutter_dot_loader/ on every change to main. It was last deployed by hand for 1.0.0.

The example was built for the web and checked by hand. The gallery shows 60 loaders, and in the playground a duration change now slows the running loop.

🤖 Generated with Claude Code

https://claude.ai/code/session_01FLp5T3rdw75F7RHF8w6GDL


Generated by Claude Code

…1.1.0

- MatrixLoader/DotLoader: a new `duration` now restarts a running loop or
  bounce so the speed change applies immediately (the demo speed slider
  was a no-op).
- TriangleLoader: apply `duration` changes; repaint on color, triangleSize
  or wireframe changes (shouldRepaint compared progress only).
- pubspec: sdk ^3.11.4 -> ^3.10.0 (no formatter-style change: dart_style
  gates nothing on 3.11), flutter >=1.17.0 -> >=3.38.0 to match it.
  Description and topics retuned for pub.dev search.
- README: fix the JSON sample (used `frames` before declaring it) and the
  tap sample (printed a literal `$row`); complete the MatrixLoader table.
- example/README.md: real usage guide (pub.dev shows it on the Example tab;
  it was flutter-create boilerplate).
- .pubignore: exclude internal PROJECT.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nqx3Cb32ba334DgP3HMese
- test/duration_change_test.dart: a running loop picks up a new duration
  (fails on the old code: the loop kept its original period).
- ci.yml: sdk-floor job runs pub get, analyze lib and the tests on
  Flutter 3.38.0, the newly declared floor.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nqx3Cb32ba334DgP3HMese
Flutter 3.38.0 ships Dart 3.10.0-290.4.beta, a pre-release that
`sdk: ^3.10.0` excludes, so the previous floor did not resolve on the
Flutter version it named (caught by the new sdk-floor job). dart_style
formats language 3.8-3.12 identically here (the only 3.10-gated change
needs `trailing_commas: preserve`), so ^3.8.0 needs no reformat.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nqx3Cb32ba334DgP3HMese
@hooshyar
hooshyar merged commit 54ca5d0 into main Oct 12, 2026
3 checks passed
@hooshyar
hooshyar deleted the agent/quick-wins-2026-10 branch October 16, 2026 07:12
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.

feature request: Add ability to set individual custom dot size

2 participants