feat(brand): new Flet logo across the repo, generated from a single master - #6816
Open
FeodorFitsner wants to merge 4 commits into
Open
feat(brand): new Flet logo across the repo, generated from a single master#6816FeodorFitsner wants to merge 4 commits into
FeodorFitsner wants to merge 4 commits into
Conversation
Adds the four brand masters and `.github/scripts/generate_brand_assets.py`,
which derives all ~95 platform rasters from a single 1024px symbol master via
a data manifest.
The previous assets were produced by hand and by three different pipelines, so
they had drifted: the Android mipmaps were chain-resized from a 192px source
(soft at large sizes) and several outputs were off-centre. The generator crops
the master to its tight alpha bbox and re-frames every output to an explicit
fraction, resampling from full resolution in one LANCZOS step, so a future
rebrand is a matter of dropping in new masters and re-running one command.
Modes:
--normalize clean freshly exported master SVGs (strips stale
presentation attributes, matches the two lockup canvases
so the navbar logo cannot jump on theme toggle)
--verify assert modes, sizes, .ico size lists, SVG copy parity
--contact-sheet every output over four backgrounds in one image
Output is byte-stable across runs given the pinned Pillow.
Output of `uv run .github/scripts/generate_brand_assets.py`. Covers the Flet client (Android mipmaps, 21 iOS icons, 7 macOS, .ico, web), the cookiecutter templates that ship to every user app, example/test fixtures and the website. Fixes two Android defects in the template default icon, which previously framed the glyph at 0.729 of the canvas: * `adaptive_icon_foreground` guarantees only the central 66.67% is visible, so every `flet build apk` produced a launcher icon clipped under circular masks. * The Android 12 splash clips `windowSplashScreenAnimatedIcon` to a circle of the same ratio. The template default is now framed at 0.60 (measured h_frac 0.600, circle 0.649 - both inside the 0.667 limit). `client/` keeps the larger 0.88 framing: it ships legacy launcher icons only, with no adaptive-icon layers, so the safe zone does not apply and 0.60 would render visibly smaller than neighbouring apps. Also corrected along the way: `loading-animation.png` and `splash_android.png` are now centred (both were off-centre, which made the CSS zoom animation drift), and iOS icons are written as mode RGB rather than RGBA with opaque alpha.
Docusaurus navbar now renders the horizontal lockup instead of the symbol plus a separate "Flet" text label, with a dark variant via `srcDark`. The navbar `title` is removed so the wordmark is not shown twice; the site-level `title` on line 11 is untouched. READMEs wrap the lockup in `<picture>` so GitHub's dark theme gets the light wordmark. PyPI ignores `<source>` and falls back to the `<img>`, which is the behaviour we want there. PWA `theme_color` moves from `#0175C2` (Flutter's stock blue, matching no Flet brand colour) to `#FF005F`, the logo's primary pink, in all four places it is defined. `background_color` stays `#FFFFFF`. Also fixes a logo URL pointing at a dead `flet-widget` branch, replaces the old-logo SVG markup inlined in `test_image.py`, and regenerates the two goldens whose source art changed. Note: `image/src_svg_url` and `examples/.../image/image_for_docs` fetch https://flet.dev/img/logo.svg and so still render the old mark. They pass now and will need their goldens regenerated once the website deploys.
Update the client app version in pubspec.yaml from 1.0.0+1 to 1.1.0 to reflect the new release version.
Deploying flet-website-v2 with
|
| Latest commit: |
50a9061
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://9ddcf68a.flet-website-v2.pages.dev |
| Branch Preview URL: | https://flet-logo-update.flet-website-v2.pages.dev |
Contributor
|
Hey @FeodorFitsner, |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Replaces the Flet logo everywhere it appears: brand masters, the shipped client's platform icon sets, the cookiecutter templates handed to every user app, the website, READMEs, and example/test fixtures.
What's here
New masters in
media/logo/- light lockup, dark lockup, symbol-only SVG, and a 1024px symbol PNG. New palette:#ff005f/#27b0f5/#8c0075, wordmark#333333light and#f2f2f2dark.A generator at
.github/scripts/generate_brand_assets.py(PEP-723 +uv run, matching the existinggenerate_icons.pyconvention) derives all ~95 rasters from the one master via a data manifest:The previous assets were made by hand and by three different pipelines and had drifted - the Android mipmaps were chain-resized from a 192px source, and several outputs were off-centre. The generator crops the master to its tight alpha bbox and re-frames each output to an explicit fraction, always resampling from full resolution in one LANCZOS step. Output is byte-stable across runs.
Two Android bugs fixed along the way
The template's default
images/icon.pngframed the glyph at 0.729 of the canvas. It feeds bothadaptive_icon_foreground(only the central 66.67% is guaranteed visible) and the Android 12 splash (clipped to a circle of the same ratio), so everyflet build apkshipped a launcher icon clipped under circular masks.It is now framed at 0.60 - measured
h_frac 0.600,circle 0.649, both inside the 0.667 limit.client/deliberately keeps the larger 0.88 framing: it ships legacy launcher icons only, with nomipmap-anydpi-v26and no foreground/background layers, so the safe zone does not apply and 0.60 would render visibly smaller than neighbouring apps. The split is encoded asCLIENT_ANDROID_FRACwith the reason in a comment.Also corrected:
loading-animation.pngandsplash_android.pngare now centred (both were off-centre, making the CSS zoom animation drift), and iOS icons are written as modeRGBrather than RGBA-with-opaque-alpha.Site, READMEs, colours
srcDark. Thenavbar.titleis removed so the wordmark isn't duplicated; the site-leveltitleis untouched.<picture>for GitHub dark theme. PyPI ignores<source>and falls back to the<img>, which is correct there.theme_color#0175C2(Flutter's stock blue) ->#FF005F, in all four places it's defined.background_colorstays#FFFFFF.Verification
--verify: 0 failures (iOS icons mode RGB, maskables fully opaque,.icosize lists intact, bothlogo.svgcopies byte-identical)flet-cliicon tests: 43 passed, unchanged - they synthesise their own PNG bytes and never read repo art0.600 x 768Follow-ups, not in this PR
image/src_svg_urlandexamples/.../image/image_for_docswill fail once the website deploys. They fetchhttps://flet.dev/img/logo.svg, which still serves the old mark, so they pass today. Their goldens need regenerating after deploy.flet buildpipeline defects, planned separately:flutter_launcher_iconshardcodeskFaviconSize = 16soweb/favicon.pngalways ships at 16x16, andflutter_native_splashreceives the user's icon unpadded so user-supplied icons still clip on the Android 12 splash.examples/controls/core/canvas/flet_logo/) keeps its hardcoded beziers and still draws the old mark, by decision.client/has no adaptive icon at all; adding one needs 5 foreground PNGs plus 2 XML files.Note:
50a90610 Bump client version to 1.1.0landed on this branch separately and is unrelated to the rebrand.Summary by Sourcery
Replace the repository’s legacy Flet branding with centrally generated assets and apply the new identity consistently across clients, templates, website, documentation, and examples.
New Features:
Bug Fixes:
Enhancements:
Documentation:
Tests: