refactor(branding): rename app Tanemaki → Tane

Public name is now Tane (種, "seed"); Tanemaki (種まき, "to scatter seeds")
is kept only as etymology in the About screen and onboarding.

App not yet distributed, so format tokens rename cleanly with no migration:
backup extension .tanemaki→.tane, QR scheme tanemaki://→tane://, file
prefixes tane-*. Website link and species-catalog User-Agent →
tane.comunes.org. Android label capitalised to "Tane".

Identity/crypto constants already use org.comunes.tane (derivation, HKDF
backup, sync namespace, TANE1 recovery tag) — left untouched, so keys,
backups and sync are unaffected. Tests updated; analyze + full suite green.
This commit is contained in:
vjrj 2026-07-12 13:04:16 +02:00
parent 2c113cc17d
commit a534c14983
34 changed files with 180 additions and 180 deletions

View file

@ -263,7 +263,7 @@ class InventoryJsonCodec {
throw const FormatException('Not a valid JSON file.');
}
if (root is! Map<String, dynamic>) {
throw const FormatException('Not a Tanemaki inventory file.');
throw const FormatException('Not a Tane inventory file.');
}
final version = root['formatVersion'];
if (version is! int) {

View file

@ -38,16 +38,16 @@ class SeedLabelData extends Equatable {
];
}
/// Encodes/decodes [SeedLabelData] as a compact, versioned `tanemaki://seed`
/// Encodes/decodes [SeedLabelData] as a compact, versioned `tane://seed`
/// URI self-describing and parseable, so a future scan-to-import feature can
/// read a label a keeper printed today. Unicode and RTL text are percent-encoded
/// by [Uri], so any QR reader round-trips them safely.
///
/// Shape: `tanemaki://seed?v=<variety>&s=<scientific>&c=<common>&y=<year>&o=<origin>`
/// Shape: `tane://seed?v=<variety>&s=<scientific>&c=<common>&y=<year>&o=<origin>`
/// Absent fields are omitted, keeping the payload (and the QR) as small as the
/// data allows.
abstract final class SeedLabelCodec {
static const _scheme = 'tanemaki';
static const _scheme = 'tane';
static const _host = 'seed';
static String encode(SeedLabelData data) {
@ -65,7 +65,7 @@ abstract final class SeedLabelCodec {
).toString();
}
/// Parses a `tanemaki://seed` URI back to [SeedLabelData]. Returns null when
/// Parses a `tane://seed` URI back to [SeedLabelData]. Returns null when
/// [input] is not a well-formed seed label (wrong scheme/host, or no variety).
static SeedLabelData? decode(String input) {
final uri = Uri.tryParse(input.trim());