Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
72cb977
Change: Add missed KeyColor algorithm binary search optimization in M…
rydmike Nov 13, 2025
90cf266
Change: Optimize ARGB and HCT usage in DynamicScheme
rydmike Nov 13, 2025
5a78539
TEST: Add explicit test for ARGB int representation
rydmike Nov 13, 2025
255241f
Update: Add test info of explicit test for ARGB int representation to…
rydmike Nov 13, 2025
be9ed91
BREAKING: DynamicScheme rename customErrorPalette to errorPalette
rydmike Nov 13, 2025
526d3e9
Lint: Fix use super
rydmike Nov 13, 2025
dcb99e6
Chore: Use static const instead of final where possible (Used in MCU …
rydmike Nov 13, 2025
17babb7
MCU: Export CorePalettes - MCU 0.13.0 does not, but we will
rydmike Nov 13, 2025
49c5476
Convention: Operator equals, call it other instead of o
rydmike Nov 13, 2025
0494957
Update: Version number to 3.7.0
rydmike Nov 13, 2025
9a14e50
Update: Changelog add info about why only minor version bump to 3.7.0
rydmike Nov 13, 2025
89b5a09
Lint: MCU use const when possible
rydmike Nov 13, 2025
d3d7bd8
Lint: Add doc comments to CorePalettes and use const constructor
rydmike Nov 13, 2025
6112ef6
MCU: Export KeyColor, is in exported file in original version, we hav…
rydmike Nov 13, 2025
9454b72
TEST: Update tests to match original MCU style
rydmike Nov 13, 2025
4d92b25
Improve: CorePalette == operator
rydmike Nov 13, 2025
d8e1b13
Add: hashCode, equals and toString to CorePalettes
rydmike Nov 13, 2025
f8126d0
TEST: Add tests for CorePalettes
rydmike Nov 13, 2025
e8ecde1
TEST: Improve tests for TonalPalettes
rydmike Nov 13, 2025
a4e2668
Chore: Bump packages and min Flutter and Dart versions
rydmike Nov 13, 2025
eb81959
CHORE: Update rydmike linter to 2.6.0 with formatter settings
rydmike Nov 22, 2025
93a018b
FIX: Linter doc error
rydmike Nov 22, 2025
6e7d295
Chore: Dart SDK stay at min 3.6.0 to avoid nuts formatter for now, us…
rydmike Nov 22, 2025
c5790cb
ADD: More docs on formatter
rydmike Nov 22, 2025
c959a05
MCU: Use MathUtils.sanitizeDegreesDouble for hue calculation in Cam16.
rydmike Nov 22, 2025
8058eb9
Bump version to 4.0.0 This will be a breaking release!
rydmike Nov 22, 2025
aba5a48
Demo app: Dump package version info
rydmike Nov 22, 2025
03e9a70
Chore: Remove properties deprecated already in version 2.0.0
rydmike Nov 22, 2025
8ecf6d5
Breaking: Change useExpressiveOnContainerColors to default to true
rydmike Nov 22, 2025
1c63a53
Update: Changelog
rydmike Nov 22, 2025
634b49c
PKG: Updated FlexSchemeVariant configDetails descriptions to offer be…
rydmike Nov 22, 2025
489543a
Update: GH action to deploy a new major version web demo
rydmike Nov 22, 2025
99bbb35
Update readme: Mostly "Expressive On Container Colors" section
rydmike Nov 22, 2025
db11076
ADD: Updated screenshots for readme
rydmike Nov 22, 2025
047daf8
Update: Readme to use new screen shots, will only work after this is …
rydmike Nov 22, 2025
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
4 changes: 2 additions & 2 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,14 +65,14 @@ jobs:
- name: "EXAMPLE START BUILD - Flutter clean before build"
run: flutter clean && cd example && flutter clean
- name: "EXAMPLE WEB release build"
run: cd example && flutter build web --base-href "/flexseedscheme/demo-v3/" --release -t lib/main.dart
run: cd example && flutter build web --base-href "/flexseedscheme/demo-v4/" --release -t lib/main.dart
- name: "EXAMPLE DEPLOY to GitHub Pages repository, published on commit."
uses: dmnemec/copy_file_to_another_repo_action@v1.0.4
env:
API_TOKEN_GITHUB: ${{ secrets.API_TOKEN_GITHUB }}
with:
source_file: 'example/build/web/.'
destination_folder: 'flexseedscheme/demo-v3'
destination_folder: 'flexseedscheme/demo-v4'
destination_repo: 'rydmike/rydmike.github.io'
user_email: 'm.rydstrom@gmail.com'
user_name: 'rydmike'
52 changes: 52 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,58 @@

All notable changes to the **FlexSeedScheme** (FSS) package are documented here.

## 4.0.0

**Nov 22, 2025**

The version requires Flutter 3.38.0 or higher.

This release **really** brings the bundled forked version of the package [Material Color Utilities (MCU)](https://pub.dev/packages/material_color_utilities) to parity with version 0.13.0. Flutter stable 3.38.x still uses MCU 0.11.1. Next version of Flutter, after stable 0.38, will use MCU 0.13.0, see [PR 12125](https://github.com/flutter/website/pull/12125).

This FSS release contains a breaking change to match the default for expressive on-container colors in MCU 0.12.0. This is also included in the coming bump to MCU 0.13.0 in Flutter after version 3.38.

**BREAKING**
- The `SeedColorScheme.fromSeeds` parameter `useExpressiveOnContainerColors` now defaults to `true` instead of `false`.
- This makes the default behavior of `SeedColorScheme.fromSeeds` match the default behavior of MCU 0.12.0 and later, where expressive on-container colors are used by default in light mode.
- If you want to maintain the previous behavior, you can explicitly set `useExpressiveOnContainerColors` to `false` when calling `SeedColorScheme.fromSeeds`.
- For more information see https://pub.dev/packages/flex_seed_scheme#expressive-on-container-colors
- The `DynamicScheme` parameter `customErrorPalette` was renamed to `errorPalette` to match newly exposed MCU 0.13.0 naming.
- Previously MCU did not expose this parameter, it was named customErrorPalette in the FSS fork. Now that MCU exposes it, we rename it to match MCU's naming.
- This is a **minor breaking** change, you will **only** hit it if you have used named parameter `customErrorPalette` in `DynamicScheme`. It is very unlikely to be used directly by end users of this package, as it is a very low-level API and not used by recommended main public APIs directly, but it was a public API, unfortunately.
- **FlexColorScheme** and **Themes Playground** did not and do not use this API directly, only indirectly via FSS higher APIs.
- **Removed** already in **version 2.0.0** deprecated **private** `int` properties in `FlexSeedScheme._()` and same named **public** `Color` parameters in `SeedColorScheme.fromSeeds()`:
- `background`
- `onBackground`
- `surfaceVariant`
- Removed already in **version 2.0.0** deprecated **public** `int` properties in `FlexTones()`, `FlexTones.light()` and `FlexTones.dark()` and same named parameters in `FlexTones.copyWith()`:
- `backgroundTone`
- `onBackgroundTone`
- `surfaceVariantTone`

**CHANGE**

- Updated `FlexSchemeVariant` and their `configDetails` descriptions to offer better explanations.
- As stated in the change policy doc comment for the enum `FlexSchemeVariant`, any changes in the property values `variantName`, `description`, `configDetails`, `icon` and `shade` are not considered breaking changes, only patches.
- These properties may be used when building UIs that present the different scheme variants. They serve no other purpose. They can also be ignored, you can use the enum values as input to build your own UI for selecting and describing the scheme variants. The values are used in the example app and also in the `FlexColorScheme` package example apps, like the **Themes Playground**.

**CHORE**
- MCU: Use `MathUtils.sanitizeDegreesDouble` for hue calculation in Cam16. (MCU update Nov 19, 2025, not yet in any package version)
- MCU: Added the `KeyColor` algorithm and its binary search optimization that was added in **MCU 0.11.2**. This may improve performance when extracting tonal palettes from seed colors.
- MCU: Optimize ARGB and HCT usage in DynamicScheme.
- MCU: A bunch of internal final statics were made const.

**TESTS**
* Add explicit test for ARGB int representation.
* Improved tests for TonalPalettes.
* Updated test for new `useExpressiveOnContainerColors` defaulting to `true`.
* Added loop test for all MCU `DynamicSchemeVariant`s to ensure they can be created without errors, so that same `DynamicScheme` matches results from Flutter's `ColorScheme.fromSeed` using corresponding `DynamicSchemeVariant`. The loop test excludes the variants `DynamicSchemeVariant.fidelity`, `DynamicSchemeVariant.monochrome` and `DynamicSchemeVariant.content` that have their own special tone logic. Previously only the default `DynamicSchemeVariant.tonalSpot` was tested this way. This test helps us verify that our fork of MCU can match the version of MCU that Flutter uses internally. When Flutter stable chnages to use MCU 0.13.0, this test will need to change its flag `useExpressiveOnContainerColors` from `false` to `true`.

**INFO**

MCU produces incorrect Tone 99 for some seed colors with yellowish hues. Tone 99 becomes too bright yellow, brighter than Tone 98 which is not correct, it should be less tinted than Tone 98, almost white with a very slight yellow tint.

This is a known issue in MCU. It is not fixed in Dart MCU 0.13.0, thus it is also not fixed in this FSS release. For the JAVA and TypeScript versions of MCU, it is fixed. We hope to see an offcial fix in Dart MCU in a future release, if not we may port the fix to our forked Dart version later.

## 3.6.1

**Nov 5, 2025**
Expand Down
Loading