refactor: rename app fai_studio -> chain_studio
Some checks are pending
Security / Security check (push) Waiting to run
Some checks are pending
Security / Security check (push) Waiting to run
Studio is the Ch∆In product's GUI, not a F∆I-vendor app. Rename the Flutter package, all package: imports, and the build identity across platforms: linux/windows CMake BINARY_NAME + project, Windows Runner.rc fields, macOS PRODUCT_NAME / bundle id (ai.flemming.chain.chainStudio) / .app + scheme BuildableName. Update the client-SDK + flow-editor deps to their renamed chain_* packages (path + git URL). Company/copyright fields now read Flemming.AI. flutter analyze: clean. Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
This commit is contained in:
parent
c27bb29ba0
commit
68d23ab7dd
25 changed files with 73 additions and 73 deletions
|
|
@ -1,6 +1,6 @@
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
All notable changes to `fai_studio` recorded here. Pubspec
|
All notable changes to `chain_studio` recorded here. Pubspec
|
||||||
version + `kStudioVersion` in `lib/main.dart` stay in lockstep.
|
version + `kStudioVersion` in `lib/main.dart` stay in lockstep.
|
||||||
|
|
||||||
## 0.70.0 — 2026-06-13
|
## 0.70.0 — 2026-06-13
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ These three cover the platform's central properties:
|
||||||
## Stack
|
## Stack
|
||||||
|
|
||||||
- Flutter 3.40+ (Desktop: macOS, Linux, Windows)
|
- Flutter 3.40+ (Desktop: macOS, Linux, Windows)
|
||||||
- gRPC client via [`fai_client_sdk`](../fai_client_sdk_dart) (sibling
|
- gRPC client via [`chain_client_sdk`](../fai_chain_client_sdk_dart) (sibling
|
||||||
repo; pinned by relative path during development)
|
repo; pinned by relative path during development)
|
||||||
- No external runtime dependencies; bundles its own Dart VM
|
- No external runtime dependencies; bundles its own Dart VM
|
||||||
|
|
||||||
|
|
@ -37,7 +37,7 @@ flutter run -d macos
|
||||||
## Repo placement
|
## Repo placement
|
||||||
|
|
||||||
Will be published as `fai/studio` on Forgejo (`git.flemming.ws`).
|
Will be published as `fai/studio` on Forgejo (`git.flemming.ws`).
|
||||||
The local directory `fai_studio/` follows the established
|
The local directory `chain_studio/` follows the established
|
||||||
`fai_platform/` layout convention.
|
`fai_platform/` layout convention.
|
||||||
|
|
||||||
## Why "Studio" and not "Stage"
|
## Why "Studio" and not "Stage"
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
import 'dart:typed_data';
|
import 'dart:typed_data';
|
||||||
|
|
||||||
import 'package:fai_client_sdk/fai_client_sdk.dart' show Payload;
|
import 'package:chain_client_sdk/chain_client_sdk.dart' show Payload;
|
||||||
|
|
||||||
/// One named output of a flow run. Sealed via factory constructors
|
/// One named output of a flow run. Sealed via factory constructors
|
||||||
/// — callers pattern-match with `switch` on the runtime type to
|
/// — callers pattern-match with `switch` on the runtime type to
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'dart:typed_data';
|
import 'dart:typed_data';
|
||||||
|
|
||||||
import 'package:fai_studio_flow_editor/fai_studio_flow_editor.dart' as editor;
|
import 'package:chain_studio_flow_editor/chain_studio_flow_editor.dart' as editor;
|
||||||
|
|
||||||
import 'hub.dart';
|
import 'hub.dart';
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ class FriendlyError {
|
||||||
FriendlyError friendlyError(Object error, AppLocalizations l) {
|
FriendlyError friendlyError(Object error, AppLocalizations l) {
|
||||||
// We deliberately don't import package:grpc here so Studio
|
// We deliberately don't import package:grpc here so Studio
|
||||||
// doesn't have to add it to its own pubspec — the dependency
|
// doesn't have to add it to its own pubspec — the dependency
|
||||||
// lives one layer down in fai_client_sdk. `GrpcError` has a
|
// lives one layer down in chain_client_sdk. `GrpcError` has a
|
||||||
// stable `.code` (int) and `.message` (String?) shape; we
|
// stable `.code` (int) and `.message` (String?) shape; we
|
||||||
// duck-type on those instead of an `is` check.
|
// duck-type on those instead of an `is` check.
|
||||||
final code = _intField(error, 'code');
|
final code = _intField(error, 'code');
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
import 'dart:typed_data';
|
import 'dart:typed_data';
|
||||||
|
|
||||||
import 'package:fai_client_sdk/fai_client_sdk.dart';
|
import 'package:chain_client_sdk/chain_client_sdk.dart';
|
||||||
import 'package:flutter/widgets.dart';
|
import 'package:flutter/widgets.dart';
|
||||||
import 'package:shared_preferences/shared_preferences.dart';
|
import 'package:shared_preferences/shared_preferences.dart';
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// FlowsPage — Studio's flow surface. Thin host wrapper around
|
// FlowsPage — Studio's flow surface. Thin host wrapper around
|
||||||
// the swappable fai_studio_flow_editor package: loads the
|
// the swappable chain_studio_flow_editor package: loads the
|
||||||
// hub's installed capabilities, hands them + a Studio-side
|
// hub's installed capabilities, hands them + a Studio-side
|
||||||
// FlowRunDriver to the editor, and lets the editor own
|
// FlowRunDriver to the editor, and lets the editor own
|
||||||
// everything else (file list, three-tab body, properties
|
// everything else (file list, three-tab body, properties
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
// package so a swap is one pubspec change — Studio doesn't
|
// package so a swap is one pubspec change — Studio doesn't
|
||||||
// need to know what's inside the editor any more.
|
// need to know what's inside the editor any more.
|
||||||
|
|
||||||
import 'package:fai_studio_flow_editor/fai_studio_flow_editor.dart';
|
import 'package:chain_studio_flow_editor/chain_studio_flow_editor.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
import '../data/flow_run_driver.dart';
|
import '../data/flow_run_driver.dart';
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
// Reads current values from HubService, persists on save via
|
// Reads current values from HubService, persists on save via
|
||||||
// HubService.reconnect.
|
// HubService.reconnect.
|
||||||
|
|
||||||
import 'package:fai_client_sdk/fai_client_sdk.dart';
|
import 'package:chain_client_sdk/chain_client_sdk.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
import '../data/error_presentation.dart';
|
import '../data/error_presentation.dart';
|
||||||
|
|
|
||||||
|
|
@ -4,10 +4,10 @@ project(runner LANGUAGES CXX)
|
||||||
|
|
||||||
# The name of the executable created for the application. Change this to change
|
# The name of the executable created for the application. Change this to change
|
||||||
# the on-disk name of your application.
|
# the on-disk name of your application.
|
||||||
set(BINARY_NAME "fai_studio")
|
set(BINARY_NAME "chain_studio")
|
||||||
# The unique GTK application identifier for this application. See:
|
# The unique GTK application identifier for this application. See:
|
||||||
# https://wiki.gnome.org/HowDoI/ChooseApplicationID
|
# https://wiki.gnome.org/HowDoI/ChooseApplicationID
|
||||||
set(APPLICATION_ID "ai.flemming.fai.fai_studio")
|
set(APPLICATION_ID "ai.flemming.chain.chain_studio")
|
||||||
|
|
||||||
# Explicitly opt in to modern CMake behaviors to avoid warnings with recent
|
# Explicitly opt in to modern CMake behaviors to avoid warnings with recent
|
||||||
# versions of CMake.
|
# versions of CMake.
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,7 @@
|
||||||
331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = "<group>"; };
|
331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = "<group>"; };
|
||||||
333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = "<group>"; };
|
333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = "<group>"; };
|
||||||
335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = "<group>"; };
|
335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = "<group>"; };
|
||||||
33CC10ED2044A3C60003C045 /* fai_studio.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = fai_studio.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
33CC10ED2044A3C60003C045 /* chain_studio.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = chain_studio.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||||
33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = "<group>"; };
|
33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = "<group>"; };
|
||||||
33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; };
|
33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; };
|
||||||
|
|
@ -147,7 +147,7 @@
|
||||||
33CC10EE2044A3C60003C045 /* Products */ = {
|
33CC10EE2044A3C60003C045 /* Products */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
33CC10ED2044A3C60003C045 /* fai_studio.app */,
|
33CC10ED2044A3C60003C045 /* chain_studio.app */,
|
||||||
331C80D5294CF71000263BE5 /* RunnerTests.xctest */,
|
331C80D5294CF71000263BE5 /* RunnerTests.xctest */,
|
||||||
);
|
);
|
||||||
name = Products;
|
name = Products;
|
||||||
|
|
@ -255,7 +255,7 @@
|
||||||
78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */,
|
78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */,
|
||||||
);
|
);
|
||||||
productName = Runner;
|
productName = Runner;
|
||||||
productReference = 33CC10ED2044A3C60003C045 /* fai_studio.app */;
|
productReference = 33CC10ED2044A3C60003C045 /* chain_studio.app */;
|
||||||
productType = "com.apple.product-type.application";
|
productType = "com.apple.product-type.application";
|
||||||
};
|
};
|
||||||
/* End PBXNativeTarget section */
|
/* End PBXNativeTarget section */
|
||||||
|
|
@ -471,10 +471,10 @@
|
||||||
CURRENT_PROJECT_VERSION = 1;
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
MARKETING_VERSION = 1.0;
|
MARKETING_VERSION = 1.0;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = ai.flemming.fai.faiStudio.RunnerTests;
|
PRODUCT_BUNDLE_IDENTIFIER = ai.flemming.chain.chainStudio.RunnerTests;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/fai_studio.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/fai_studio";
|
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/chain_studio.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/chain_studio";
|
||||||
};
|
};
|
||||||
name = Debug;
|
name = Debug;
|
||||||
};
|
};
|
||||||
|
|
@ -486,10 +486,10 @@
|
||||||
CURRENT_PROJECT_VERSION = 1;
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
MARKETING_VERSION = 1.0;
|
MARKETING_VERSION = 1.0;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = ai.flemming.fai.faiStudio.RunnerTests;
|
PRODUCT_BUNDLE_IDENTIFIER = ai.flemming.chain.chainStudio.RunnerTests;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/fai_studio.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/fai_studio";
|
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/chain_studio.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/chain_studio";
|
||||||
};
|
};
|
||||||
name = Release;
|
name = Release;
|
||||||
};
|
};
|
||||||
|
|
@ -501,10 +501,10 @@
|
||||||
CURRENT_PROJECT_VERSION = 1;
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
GENERATE_INFOPLIST_FILE = YES;
|
GENERATE_INFOPLIST_FILE = YES;
|
||||||
MARKETING_VERSION = 1.0;
|
MARKETING_VERSION = 1.0;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = ai.flemming.fai.faiStudio.RunnerTests;
|
PRODUCT_BUNDLE_IDENTIFIER = ai.flemming.chain.chainStudio.RunnerTests;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/fai_studio.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/fai_studio";
|
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/chain_studio.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/chain_studio";
|
||||||
};
|
};
|
||||||
name = Profile;
|
name = Profile;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@
|
||||||
<BuildableReference
|
<BuildableReference
|
||||||
BuildableIdentifier = "primary"
|
BuildableIdentifier = "primary"
|
||||||
BlueprintIdentifier = "33CC10EC2044A3C60003C045"
|
BlueprintIdentifier = "33CC10EC2044A3C60003C045"
|
||||||
BuildableName = "fai_studio.app"
|
BuildableName = "chain_studio.app"
|
||||||
BlueprintName = "Runner"
|
BlueprintName = "Runner"
|
||||||
ReferencedContainer = "container:Runner.xcodeproj">
|
ReferencedContainer = "container:Runner.xcodeproj">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
|
|
@ -33,7 +33,7 @@
|
||||||
<BuildableReference
|
<BuildableReference
|
||||||
BuildableIdentifier = "primary"
|
BuildableIdentifier = "primary"
|
||||||
BlueprintIdentifier = "33CC10EC2044A3C60003C045"
|
BlueprintIdentifier = "33CC10EC2044A3C60003C045"
|
||||||
BuildableName = "fai_studio.app"
|
BuildableName = "chain_studio.app"
|
||||||
BlueprintName = "Runner"
|
BlueprintName = "Runner"
|
||||||
ReferencedContainer = "container:Runner.xcodeproj">
|
ReferencedContainer = "container:Runner.xcodeproj">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
|
|
@ -49,7 +49,7 @@
|
||||||
<BuildableReference
|
<BuildableReference
|
||||||
BuildableIdentifier = "primary"
|
BuildableIdentifier = "primary"
|
||||||
BlueprintIdentifier = "33CC10EC2044A3C60003C045"
|
BlueprintIdentifier = "33CC10EC2044A3C60003C045"
|
||||||
BuildableName = "fai_studio.app"
|
BuildableName = "chain_studio.app"
|
||||||
BlueprintName = "Runner"
|
BlueprintName = "Runner"
|
||||||
ReferencedContainer = "container:Runner.xcodeproj">
|
ReferencedContainer = "container:Runner.xcodeproj">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
|
|
@ -84,7 +84,7 @@
|
||||||
<BuildableReference
|
<BuildableReference
|
||||||
BuildableIdentifier = "primary"
|
BuildableIdentifier = "primary"
|
||||||
BlueprintIdentifier = "33CC10EC2044A3C60003C045"
|
BlueprintIdentifier = "33CC10EC2044A3C60003C045"
|
||||||
BuildableName = "fai_studio.app"
|
BuildableName = "chain_studio.app"
|
||||||
BlueprintName = "Runner"
|
BlueprintName = "Runner"
|
||||||
ReferencedContainer = "container:Runner.xcodeproj">
|
ReferencedContainer = "container:Runner.xcodeproj">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
|
|
@ -101,7 +101,7 @@
|
||||||
<BuildableReference
|
<BuildableReference
|
||||||
BuildableIdentifier = "primary"
|
BuildableIdentifier = "primary"
|
||||||
BlueprintIdentifier = "33CC10EC2044A3C60003C045"
|
BlueprintIdentifier = "33CC10EC2044A3C60003C045"
|
||||||
BuildableName = "fai_studio.app"
|
BuildableName = "chain_studio.app"
|
||||||
BlueprintName = "Runner"
|
BlueprintName = "Runner"
|
||||||
ReferencedContainer = "container:Runner.xcodeproj">
|
ReferencedContainer = "container:Runner.xcodeproj">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
|
|
|
||||||
|
|
@ -5,10 +5,10 @@
|
||||||
// 'flutter create' template.
|
// 'flutter create' template.
|
||||||
|
|
||||||
// The application's name. By default this is also the title of the Flutter window.
|
// The application's name. By default this is also the title of the Flutter window.
|
||||||
PRODUCT_NAME = fai_studio
|
PRODUCT_NAME = chain_studio
|
||||||
|
|
||||||
// The application's bundle identifier
|
// The application's bundle identifier
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = ai.flemming.fai.faiStudio
|
PRODUCT_BUNDLE_IDENTIFIER = ai.flemming.chain.chainStudio
|
||||||
|
|
||||||
// The copyright displayed in application information
|
// The copyright displayed in application information
|
||||||
PRODUCT_COPYRIGHT = Copyright © 2026 ai.flemming.fai. All rights reserved.
|
PRODUCT_COPYRIGHT = Copyright © 2026 ai.flemming.chain. All rights reserved.
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ class MainFlutterWindow: NSWindow {
|
||||||
|
|
||||||
// Override the window title so the OS task switcher and
|
// Override the window title so the OS task switcher and
|
||||||
// window chrome read "F∆I Studio" instead of the
|
// window chrome read "F∆I Studio" instead of the
|
||||||
// pubspec-derived "fai_studio".
|
// pubspec-derived "chain_studio".
|
||||||
self.title = "F∆I Studio"
|
self.title = "F∆I Studio"
|
||||||
|
|
||||||
// Pick a comfortable default window size. 1440x900 is the
|
// Pick a comfortable default window size. 1440x900 is the
|
||||||
|
|
|
||||||
28
pubspec.lock
28
pubspec.lock
|
|
@ -33,6 +33,20 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.2"
|
version: "2.1.2"
|
||||||
|
chain_client_sdk:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
path: "../fai_chain_client_sdk_dart"
|
||||||
|
relative: true
|
||||||
|
source: path
|
||||||
|
version: "0.18.0"
|
||||||
|
chain_studio_flow_editor:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
path: "../fai_chain_studio_flow_editor"
|
||||||
|
relative: true
|
||||||
|
source: path
|
||||||
|
version: "0.21.0"
|
||||||
characters:
|
characters:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
@ -105,20 +119,6 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.8"
|
version: "2.0.8"
|
||||||
fai_client_sdk:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
path: "../fai_client_sdk_dart"
|
|
||||||
relative: true
|
|
||||||
source: path
|
|
||||||
version: "0.18.0"
|
|
||||||
fai_studio_flow_editor:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
path: "../fai_studio_flow_editor"
|
|
||||||
relative: true
|
|
||||||
source: path
|
|
||||||
version: "0.21.0"
|
|
||||||
fake_async:
|
fake_async:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
|
||||||
14
pubspec.yaml
14
pubspec.yaml
|
|
@ -1,4 +1,4 @@
|
||||||
name: fai_studio
|
name: chain_studio
|
||||||
description: "Ch∆In Studio — desktop GUI for the Ch∆In hub"
|
description: "Ch∆In Studio — desktop GUI for the Ch∆In hub"
|
||||||
publish_to: 'none'
|
publish_to: 'none'
|
||||||
version: 0.70.0
|
version: 0.70.0
|
||||||
|
|
@ -17,8 +17,8 @@ dependencies:
|
||||||
meta: any
|
meta: any
|
||||||
|
|
||||||
# Sibling package; will move to Forgejo path once published.
|
# Sibling package; will move to Forgejo path once published.
|
||||||
fai_client_sdk:
|
chain_client_sdk:
|
||||||
path: ../fai_client_sdk_dart
|
path: ../fai_chain_client_sdk_dart
|
||||||
shared_preferences: ^2.5.5
|
shared_preferences: ^2.5.5
|
||||||
# Inline README rendering inside the Store detail sheet.
|
# Inline README rendering inside the Store detail sheet.
|
||||||
# `flutter_markdown` is discontinued; `flutter_markdown_plus`
|
# `flutter_markdown` is discontinued; `flutter_markdown_plus`
|
||||||
|
|
@ -39,9 +39,9 @@ dependencies:
|
||||||
# be replaced without touching the rest of Studio. Pin to a
|
# be replaced without touching the rest of Studio. Pin to a
|
||||||
# commit (or branch) here; rebuild Studio to pick up
|
# commit (or branch) here; rebuild Studio to pick up
|
||||||
# editor-side changes.
|
# editor-side changes.
|
||||||
fai_studio_flow_editor:
|
chain_studio_flow_editor:
|
||||||
git:
|
git:
|
||||||
url: https://git.flemming.ai/fai/studio-flow-editor
|
url: https://git.flemming.ai/fai/chain-studio-flow-editor
|
||||||
ref: main
|
ref: main
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
|
|
@ -55,8 +55,8 @@ dev_dependencies:
|
||||||
# + `pub upgrade`. Comment the block out before tagging a Studio
|
# + `pub upgrade`. Comment the block out before tagging a Studio
|
||||||
# release so the committed Git ref is what builds on Forgejo CI.
|
# release so the committed Git ref is what builds on Forgejo CI.
|
||||||
dependency_overrides:
|
dependency_overrides:
|
||||||
fai_studio_flow_editor:
|
chain_studio_flow_editor:
|
||||||
path: ../fai_studio_flow_editor
|
path: ../fai_chain_studio_flow_editor
|
||||||
|
|
||||||
flutter:
|
flutter:
|
||||||
uses-material-design: true
|
uses-material-design: true
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:fai_studio/data/fai_log.dart';
|
import 'package:chain_studio/data/fai_log.dart';
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,8 @@
|
||||||
|
|
||||||
import 'package:flutter/widgets.dart';
|
import 'package:flutter/widgets.dart';
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:fai_studio/data/friendly_error.dart';
|
import 'package:chain_studio/data/friendly_error.dart';
|
||||||
import 'package:fai_studio/l10n/app_localizations.dart';
|
import 'package:chain_studio/l10n/app_localizations.dart';
|
||||||
|
|
||||||
class _FakeGrpcError {
|
class _FakeGrpcError {
|
||||||
final int code;
|
final int code;
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ What's NOT here yet:
|
||||||
## Running
|
## Running
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd fai_studio
|
cd chain_studio
|
||||||
flutter test test/integration/
|
flutter test test/integration/
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:fai_client_sdk/fai_client_sdk.dart';
|
import 'package:chain_client_sdk/chain_client_sdk.dart';
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
|
|
||||||
class HubFixture {
|
class HubFixture {
|
||||||
|
|
@ -80,7 +80,7 @@ class HubFixture {
|
||||||
throw StateError('fai binary not found');
|
throw StateError('fai binary not found');
|
||||||
}
|
}
|
||||||
|
|
||||||
final tempDir = await Directory.systemTemp.createTemp('fai_studio_test_');
|
final tempDir = await Directory.systemTemp.createTemp('chain_studio_test_');
|
||||||
final port = await _pickFreePort();
|
final port = await _pickFreePort();
|
||||||
final addr = '127.0.0.1:$port';
|
final addr = '127.0.0.1:$port';
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,8 @@ import 'package:flutter/services.dart' show rootBundle;
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:flutter_markdown_plus/flutter_markdown_plus.dart';
|
import 'package:flutter_markdown_plus/flutter_markdown_plus.dart';
|
||||||
import 'package:flutter_localizations/flutter_localizations.dart';
|
import 'package:flutter_localizations/flutter_localizations.dart';
|
||||||
import 'package:fai_studio/l10n/app_localizations.dart';
|
import 'package:chain_studio/l10n/app_localizations.dart';
|
||||||
import 'package:fai_studio/theme/theme.dart';
|
import 'package:chain_studio/theme/theme.dart';
|
||||||
|
|
||||||
/// Recreates the exact DocReaderSheet code path that
|
/// Recreates the exact DocReaderSheet code path that
|
||||||
/// welcome.dart uses, including FaiTheme.markdownStyle, so a
|
/// welcome.dart uses, including FaiTheme.markdownStyle, so a
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,8 @@
|
||||||
|
|
||||||
import 'package:flutter/widgets.dart';
|
import 'package:flutter/widgets.dart';
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:fai_studio/data/hub.dart';
|
import 'package:chain_studio/data/hub.dart';
|
||||||
import 'package:fai_studio/main.dart';
|
import 'package:chain_studio/main.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
testWidgets('Studio shell boots + sidebar shows brand on hover',
|
testWidgets('Studio shell boots + sidebar shows brand on hover',
|
||||||
|
|
|
||||||
|
|
@ -25,11 +25,11 @@ ls ~/.fai/today/proposals/
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Drop a plist that runs propose.sh every morning at 07:30 local time.
|
# Drop a plist that runs propose.sh every morning at 07:30 local time.
|
||||||
# `launchctl load ~/Library/LaunchAgents/ai.flemming.fai.today.plist` to
|
# `launchctl load ~/Library/LaunchAgents/ai.flemming.chain.today.plist` to
|
||||||
# install. The plist must point at the absolute path of propose.sh.
|
# install. The plist must point at the absolute path of propose.sh.
|
||||||
```
|
```
|
||||||
|
|
||||||
A starter plist lives at `launchd/ai.flemming.fai.today.plist`.
|
A starter plist lives at `launchd/ai.flemming.chain.today.plist`.
|
||||||
|
|
||||||
### Linux — systemd timer
|
### Linux — systemd timer
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ set -euo pipefail
|
||||||
|
|
||||||
SINCE="${FAI_TODAY_SINCE:-24 hours ago}"
|
SINCE="${FAI_TODAY_SINCE:-24 hours ago}"
|
||||||
|
|
||||||
# Walk every fai-* directory next to fai_studio so the collector
|
# Walk every fai-* directory next to chain_studio so the collector
|
||||||
# works from any of the sibling checkouts. Adjust here if the
|
# works from any of the sibling checkouts. Adjust here if the
|
||||||
# layout ever changes.
|
# layout ever changes.
|
||||||
ROOT="$(cd "$(dirname "$0")/../../.." && pwd)"
|
ROOT="$(cd "$(dirname "$0")/../../.." && pwd)"
|
||||||
|
|
@ -55,7 +55,7 @@ if [ -d "$arch_dir" ] && [ -d "$ROOT/fai_platform/.git" ]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
emit_section "STUDIO RECENT RELEASES"
|
emit_section "STUDIO RECENT RELEASES"
|
||||||
studio="$ROOT/fai_studio"
|
studio="$ROOT/chain_studio"
|
||||||
if [ -d "$studio/.git" ]; then
|
if [ -d "$studio/.git" ]; then
|
||||||
tags=$(git -C "$studio" log --since="$SINCE" --pretty='%h %s' \
|
tags=$(git -C "$studio" log --since="$SINCE" --pretty='%h %s' \
|
||||||
--grep='^feat(studio)\|^chore(studio): bump' 2>/dev/null || true)
|
--grep='^feat(studio)\|^chore(studio): bump' 2>/dev/null || true)
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
# Project-level configuration.
|
# Project-level configuration.
|
||||||
cmake_minimum_required(VERSION 3.14)
|
cmake_minimum_required(VERSION 3.14)
|
||||||
project(fai_studio LANGUAGES CXX)
|
project(chain_studio LANGUAGES CXX)
|
||||||
|
|
||||||
# The name of the executable created for the application. Change this to change
|
# The name of the executable created for the application. Change this to change
|
||||||
# the on-disk name of your application.
|
# the on-disk name of your application.
|
||||||
set(BINARY_NAME "fai_studio")
|
set(BINARY_NAME "chain_studio")
|
||||||
|
|
||||||
# Explicitly opt in to modern CMake behaviors to avoid warnings with recent
|
# Explicitly opt in to modern CMake behaviors to avoid warnings with recent
|
||||||
# versions of CMake.
|
# versions of CMake.
|
||||||
|
|
|
||||||
|
|
@ -89,13 +89,13 @@ BEGIN
|
||||||
BEGIN
|
BEGIN
|
||||||
BLOCK "040904e4"
|
BLOCK "040904e4"
|
||||||
BEGIN
|
BEGIN
|
||||||
VALUE "CompanyName", "ai.flemming.fai" "\0"
|
VALUE "CompanyName", "Flemming.AI" "\0"
|
||||||
VALUE "FileDescription", "fai_studio" "\0"
|
VALUE "FileDescription", "chain_studio" "\0"
|
||||||
VALUE "FileVersion", VERSION_AS_STRING "\0"
|
VALUE "FileVersion", VERSION_AS_STRING "\0"
|
||||||
VALUE "InternalName", "fai_studio" "\0"
|
VALUE "InternalName", "chain_studio" "\0"
|
||||||
VALUE "LegalCopyright", "Copyright (C) 2026 ai.flemming.fai. All rights reserved." "\0"
|
VALUE "LegalCopyright", "Copyright (C) 2026 ai.flemming.chain. All rights reserved." "\0"
|
||||||
VALUE "OriginalFilename", "fai_studio.exe" "\0"
|
VALUE "OriginalFilename", "chain_studio.exe" "\0"
|
||||||
VALUE "ProductName", "fai_studio" "\0"
|
VALUE "ProductName", "chain_studio" "\0"
|
||||||
VALUE "ProductVersion", VERSION_AS_STRING "\0"
|
VALUE "ProductVersion", VERSION_AS_STRING "\0"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue