refactor(brand): rename F∆I -> Ch∆In + hub binary fai -> chain
Some checks failed
Security / Security check (push) Failing after 2s

Studio follows the platform rename: product branding F∆I -> Ch∆In in UI
strings, command examples fai -> chain, and — critically — the spawned
hub binary path ~/.fai/bin/fai -> ~/.fai/bin/chain so Studio launches
the renamed binary. The fai_* Dart identifiers (FaiLog, widget files,
the generated SDK) stay = vendor/internal namespace. flutter analyze:
no issues.

Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
This commit is contained in:
flemming-it 2026-06-15 16:22:22 +02:00
parent a0007b9178
commit 7ff4fda2a3
36 changed files with 141 additions and 141 deletions

View file

@ -526,7 +526,7 @@ class _EventDetailDialogState extends State<_EventDetailDialog> {
String _buildPrompt(AuditEvent e, String mode) {
// Privacy: redacted = no detail JSON, full = include it.
final buf = StringBuffer()
..writeln('A F∆I Platform audit event was logged. Explain what')
..writeln('A Ch∆In Platform audit event was logged. Explain what')
..writeln('happened in plain language and suggest one concrete')
..writeln('fix the operator can apply now.')
..writeln()

View file

@ -481,7 +481,7 @@ class _PathRow extends StatelessWidget {
/// Daemon control affordances: Restart, Apply update, Stop.
/// Each shells out to the `fai` binary (resolved via PATH or
/// `~/.fai/bin/fai`). Studio is the GUI shell; the binary owns
/// `~/.fai/bin/chain`). Studio is the GUI shell; the binary owns
/// the supervisor logic so the daemon and CLI stay in lockstep.
class _DaemonActionsCard extends StatefulWidget {
@override

View file

@ -1405,7 +1405,7 @@ String _buildAiSearchPrompt(
String locale,
) {
final lang = locale == 'de' ? 'German' : 'English';
return '''You are the F∆I Store assistant. The operator just asked, in $lang:
return '''You are the Ch∆In Store assistant. The operator just asked, in $lang:
"$query"
@ -3009,9 +3009,9 @@ const List<TodayStoryData> _kFallbackTodayStories = <TodayStoryData>[
titleEn: 'Plug in any MCP server',
titleDe: 'Jeden MCP-Server einbinden',
bodyEn:
'F∆I speaks the Model Context Protocol out of the box. Add a public server (DeepWiki, Semgrep) or a private one — its tools show up in this grid next to the built-in modules. Same install button, same audit trail.',
'Ch∆In speaks the Model Context Protocol out of the box. Add a public server (DeepWiki, Semgrep) or a private one — its tools show up in this grid next to the built-in modules. Same install button, same audit trail.',
bodyDe:
'F∆I spricht das Model Context Protocol von Haus aus. Einen öffentlichen Server (DeepWiki, Semgrep) oder einen eigenen hinzufügen — seine Tools tauchen in diesem Grid neben den eingebauten Modulen auf. Gleicher Install-Button, gleiche Audit-Spur.',
'Ch∆In spricht das Model Context Protocol von Haus aus. Einen öffentlichen Server (DeepWiki, Semgrep) oder einen eigenen hinzufügen — seine Tools tauchen in diesem Grid neben den eingebauten Modulen auf. Gleicher Install-Button, gleiche Audit-Spur.',
ctaLabelEn: 'Browse suggested sources',
ctaLabelDe: 'Empfohlene Quellen ansehen',
icon: Icons.hub_outlined,
@ -3053,9 +3053,9 @@ const List<TodayStoryData> _kFallbackTodayStories = <TodayStoryData>[
titleEn: 'Extract, anonymise, translate, summarise',
titleDe: 'Extrahieren, anonymisieren, übersetzen, zusammenfassen',
bodyEn:
'The text-processing bundle is F∆I\'s document-analysis backbone. PDF and DOCX in, plain text out. Then anonymise PII, translate, or summarise — every step audit-grade, every Ollama call recorded with model digest.',
'The text-processing bundle is Ch∆In\'s document-analysis backbone. PDF and DOCX in, plain text out. Then anonymise PII, translate, or summarise — every step audit-grade, every Ollama call recorded with model digest.',
bodyDe:
'Das Text-Processing-Bündel ist F∆Is Dokumentenanalyse-Rückgrat. PDF und DOCX rein, Klartext raus. Dann PII anonymisieren, übersetzen oder zusammenfassen — jeder Schritt audit-tauglich, jeder Ollama-Aufruf mit Modell-Digest protokolliert.',
'Das Text-Processing-Bündel ist Ch∆Ins Dokumentenanalyse-Rückgrat. PDF und DOCX rein, Klartext raus. Dann PII anonymisieren, übersetzen oder zusammenfassen — jeder Schritt audit-tauglich, jeder Ollama-Aufruf mit Modell-Digest protokolliert.',
ctaLabelEn: 'Show text modules',
ctaLabelDe: 'Text-Module zeigen',
icon: Icons.article_outlined,
@ -3068,9 +3068,9 @@ const List<TodayStoryData> _kFallbackTodayStories = <TodayStoryData>[
titleEn: 'Every module declares its permissions',
titleDe: 'Jedes Modul deklariert seine Berechtigungen',
bodyEn:
'F∆I modules are WASM components. They run in a sandbox with no ambient authority — every filesystem path, every network host, every env var has to be listed in module.yaml. The hub enforces them. No declaration, no access.',
'Ch∆In modules are WASM components. They run in a sandbox with no ambient authority — every filesystem path, every network host, every env var has to be listed in module.yaml. The hub enforces them. No declaration, no access.',
bodyDe:
'F∆I-Module sind WASM-Komponenten. Sie laufen in einer Sandbox ohne Ambient-Authority — jeder Dateipfad, jeder Netzwerk-Host, jede Env-Var muss in module.yaml stehen. Der Hub setzt es durch. Keine Deklaration, kein Zugriff.',
'Ch∆In-Module sind WASM-Komponenten. Sie laufen in einer Sandbox ohne Ambient-Authority — jeder Dateipfad, jeder Netzwerk-Host, jede Env-Var muss in module.yaml stehen. Der Hub setzt es durch. Keine Deklaration, kein Zugriff.',
ctaLabelEn: 'Review permissions',
ctaLabelDe: 'Berechtigungen prüfen',
icon: Icons.shield_outlined,
@ -3093,12 +3093,12 @@ const List<TodayStoryData> _kFallbackTodayStories = <TodayStoryData>[
TodayStoryData(
badgeEn: 'TEST FIRST',
badgeDe: 'ZUERST TESTEN',
titleEn: 'fai doctor — diagnose before you ship',
titleDe: 'fai doctor — diagnostizieren bevor ausgerollt wird',
titleEn: 'chain doctor — diagnose before you ship',
titleDe: 'chain doctor — diagnostizieren bevor ausgerollt wird',
bodyEn:
'Before installing a module on a production hub, run `fai doctor` in the CLI. It validates manifest, signatures, declared permissions against the operator policy ceiling, and reports anything the hub would reject — no surprises at install time.',
'Before installing a module on a production hub, run `chain doctor` in the CLI. It validates manifest, signatures, declared permissions against the operator policy ceiling, and reports anything the hub would reject — no surprises at install time.',
bodyDe:
'Bevor ein Modul auf einem Produktions-Hub installiert wird, in der CLI `fai doctor` laufen lassen. Validiert Manifest, Signaturen und deklarierte Berechtigungen gegen die Operator-Policy-Decke — keine Überraschungen beim Install.',
'Bevor ein Modul auf einem Produktions-Hub installiert wird, in der CLI `chain doctor` laufen lassen. Validiert Manifest, Signaturen und deklarierte Berechtigungen gegen die Operator-Policy-Decke — keine Überraschungen beim Install.',
ctaLabelEn: '',
ctaLabelDe: '',
icon: Icons.health_and_safety_outlined,

View file

@ -1,5 +1,5 @@
// Welcome first surface a new operator sees, default sidebar
// destination on launch. Pure introduction: what FI is, the
// destination on launch. Pure introduction: what ChIn is, the
// three concepts, the trust posture. No live data, no
// federation chrome that's the Store's role.
//
@ -1140,7 +1140,7 @@ class _DocReaderError {
'Tried: ${attempted.join(", ")}\n'
'Underlying: $underlying\n'
'This typically means the Studio binary on disk is from\n'
'before the doc bundle changed. Rebuild Studio (fai studio\n'
'before the doc bundle changed. Rebuild Studio (chain studio\n'
'or the build pipeline) or open the Forgejo copy in browser.';
}