Driftfin is a fork of Fladder by DonutWare,
under GPL-3.0. (Branding/license credit lives in README.md.)
Note
Driftfin has diverged and no longer merges upstream Fladder. The "Syncing
upstream into the fork" section below is kept for historical reference only — it
is no longer part of the workflow, and edits no longer need to be conflict-safe.
For current release steps, see the Releases section in CLAUDE.md.
The rebrand is in two buckets:
- Visible branding (~11 files, rarely conflicts) — app name "Driftfin", icons,
bundle IDs
app.driftfin, deep-link schemedriftfin://, README, pubspecname. - Internal Dart package rename (~480 files) —
package:fladder/→package:driftfin/. This is invisible to users but is the reason upstream merges need a re-apply step: upstream keeps writingpackage:fladder/in new/changed files.
The rename is re-applied mechanically by tool/rebrand.sh.
git fetch upstream
git checkout develop
git merge upstream/develop # resolve conflicts (mostly import lines)
tool/rebrand.sh # re-rename any new package:fladder/ imports
fvm flutter pub get
fvm flutter analyze # must be clean before committing
git add -A && git commit # finish the merge
git push origin developTips that make merges painless:
- Enable rerere once so Git remembers how you resolved the recurring import
conflicts and auto-applies them next time:
git config rerere.enabled true - If a merge conflict is only
package:fladder/vspackage:driftfin/, you can take either side and then runtool/rebrand.sh— it normalizes everything todriftfinregardless. - Always use
fvm flutter(pinned 3.35.7 via.fvmrc), not a systemflutter.
Releases are built by .github/workflows/release.yml
on any pushed v* tag. See the "Releases" section in CLAUDE.md for the current
tag scheme (stable vX.Y.Z matching the pubspec version; nightly
v<X.Y.Z>-nightly.YYYYMMDD.N). The old v<upstream>-driftfin.N scheme is retired now
that the fork no longer tracks an upstream base version.
.github/workflows/build.yml is Fladder's full multi-platform pipeline (Android,
macOS, Linux/flatpak, Play Console, web deploy). It is disabled — it needs secrets
this fork doesn't have (Android keystore, Play Console, a FLADDER_BOT GitHub App) and
the fork no longer merges upstream, so there's no reason to keep it live. Driftfin uses
release.yml instead. If you ever want Android or the full set, re-enable it (rename
build.yml.disabled → build.yml) and wire up those secrets.
- App icon & splash art still use Fladder's image (
icons/production/fladder_icon.png, referenced byflutter_native_splash+icons_launcher). Replace with a Driftfin logo PNG, then regenerate icons to fully rebrand the visuals. - l10n help text in some translations still mentions
fladder:///login(instructional strings only — functionally the scheme isdriftfin://). ColorThemes.fladder— an internal color-theme enum value is still namedfladder; left as-is because renaming it would break users' persisted theme preference.- Android / macOS / Linux configs are not rebranded (not target platforms).
- DonutWare's copyright is intentionally preserved (correct under GPL-3.0).