Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 30 additions & 7 deletions .github/workflows/auto-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,34 @@ jobs:
echo "Generated version: ${version}"

- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: "3.41.1"

- name: Enable Windows Desktop
run: flutter config --enable-windows-desktop
shell: pwsh
run: |
# プリインストールのFlutter(3.44.0)との競合を避けるため、公式アーカイブから直接取得
$flutterVersion = "3.41.1"
$flutterUrl = "https://storage.googleapis.com/flutter_infra_release/releases/stable/windows/flutter_windows_${flutterVersion}-stable.zip"
$installDir = "C:\flutter-sdk"

Write-Host "Flutter SDK ${flutterVersion} をダウンロード中..."
Invoke-WebRequest -Uri $flutterUrl -OutFile flutter.zip -UseBasicParsing

Write-Host "展開中..."
Expand-Archive flutter.zip -DestinationPath $installDir -Force
Remove-Item flutter.zip

$flutterRoot = "$installDir\flutter"
$flutterBin = "$flutterRoot\bin"

# 環境変数 FLUTTER_ROOT を上書き
echo "FLUTTER_ROOT=$flutterRoot" | Out-File -FilePath $env:GITHUB_ENV -Append

# flutter.bat --version を実行して dart-sdk などを初期化
& "$flutterBin\flutter.bat" --version
& "$flutterBin\flutter.bat" config --enable-windows-desktop

# PATH に flutter\bin と dart-sdk\bin を両方追加して最優先にする
$dartBin = "$flutterRoot\bin\cache\dart-sdk\bin"
echo $flutterBin | Out-File -FilePath $env:GITHUB_PATH -Append
echo $dartBin | Out-File -FilePath $env:GITHUB_PATH -Append

- name: Update Version Files
shell: pwsh
Expand Down Expand Up @@ -77,7 +99,8 @@ jobs:
run: flutter pub get

- name: Build Windows (includes License Generation)
run: dart run rps build:windows
run: |
dart run rps build:windows

- name: Create Zip Archive
shell: pwsh
Expand Down
33 changes: 28 additions & 5 deletions .github/workflows/windows-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,35 @@ jobs:
steps:
- uses: actions/checkout@v4

- uses: subosito/flutter-action@v2
with:
channel: "stable"
- name: Setup Flutter
shell: pwsh
run: |
# プリインストールのFlutter(3.44.0)との競合を避けるため、公式アーカイブから直接取得
$flutterVersion = "3.41.1"
$flutterUrl = "https://storage.googleapis.com/flutter_infra_release/releases/stable/windows/flutter_windows_${flutterVersion}-stable.zip"
$installDir = "C:\flutter-sdk"

Write-Host "Flutter SDK ${flutterVersion} をダウンロード中..."
Invoke-WebRequest -Uri $flutterUrl -OutFile flutter.zip -UseBasicParsing

Write-Host "展開中..."
Expand-Archive flutter.zip -DestinationPath $installDir -Force
Remove-Item flutter.zip

$flutterRoot = "$installDir\flutter"
$flutterBin = "$flutterRoot\bin"

# 環境変数 FLUTTER_ROOT を上書き
echo "FLUTTER_ROOT=$flutterRoot" | Out-File -FilePath $env:GITHUB_ENV -Append

# flutter.bat --version を実行して dart-sdk などを初期化
& "$flutterBin\flutter.bat" --version
& "$flutterBin\flutter.bat" config --enable-windows-desktop

- name: Enable Windows Desktop
run: flutter config --enable-windows-desktop
# PATH に flutter\bin と dart-sdk\bin を両方追加して最優先にする
$dartBin = "$flutterRoot\bin\cache\dart-sdk\bin"
echo $flutterBin | Out-File -FilePath $env:GITHUB_PATH -Append
echo $dartBin | Out-File -FilePath $env:GITHUB_PATH -Append

- name: Install Dependencies
run: flutter pub get
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -70,3 +70,4 @@ temp_diff.txt
.env
docs/comfyui_migration_analysis*
full_history.patch
logs_69598121678
19 changes: 19 additions & 0 deletions lib/core/layout_preferences.dart
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,25 @@ class LayoutPreferences {
await _prefs?.setString(_apiUrlKey, url);
}

// Generation Settings
static Map<String, dynamic>? getGenerationSettings() {
final jsonString = _prefs?.getString('generation_settings');
if (jsonString != null) {
try {
return json.decode(jsonString) as Map<String, dynamic>;
} catch (e) {
return null;
}
}
return null;
}

static Future<void> setGenerationSettings(Map<String, dynamic> settings) async {
await init();
final jsonString = json.encode(settings);
await _prefs?.setString('generation_settings', jsonString);
}

// Clear all preferences
static Future<void> clearAll() async {
await init();
Expand Down
1 change: 1 addition & 0 deletions lib/features/preview/ui/preview_pane.dart
Original file line number Diff line number Diff line change
Expand Up @@ -752,6 +752,7 @@ class _PreviewPaneState extends ConsumerState<PreviewPane> {
initial: TextEditingValue(text: ref.read(apiUrlProvider)),
onChange: (value) {
ref.read(apiUrlProvider.notifier).state = value.text;
LayoutPreferences.setApiUrl(value.text);
},
),
),
Expand Down
44 changes: 44 additions & 0 deletions lib/features/settings/models/generation_settings.dart
Original file line number Diff line number Diff line change
Expand Up @@ -114,4 +114,48 @@ class GenerationSettings {

return map;
}

factory GenerationSettings.fromMap(Map<String, dynamic> map) {
return GenerationSettings(
samplerName: map['samplerName'] as String? ?? 'Euler a',
width: map['width'] as int? ?? 512,
height: map['height'] as int? ?? 512,
steps: map['steps'] as int? ?? 20,
cfgScale: (map['cfgScale'] as num?)?.toDouble() ?? 7.0,
seed: map['seed'] as int? ?? -1,
scheduler: map['scheduler'] as String? ?? 'Automatic',
saveImages: map['saveImages'] as bool? ?? true,
batchSize: map['batchSize'] as int? ?? 1,
batchCount: map['batchCount'] as int? ?? 1,
sdMode: map['sdMode'] as String? ?? 'SD',
uiDebugMode: map['uiDebugMode'] as bool? ?? false,
enableHires: map['enableHires'] as bool? ?? false,
hiresUpscaler: map['hiresUpscaler'] as String?,
hiresSteps: map['hiresSteps'] as int? ?? 20,
denoisingStrength: (map['denoisingStrength'] as num?)?.toDouble() ?? 0.7,
hrScale: (map['hrScale'] as num?)?.toDouble() ?? 2.0,
);
}

Map<String, dynamic> toMap() {
return {
'samplerName': samplerName,
'width': width,
'height': height,
'steps': steps,
'cfgScale': cfgScale,
'seed': seed,
'scheduler': scheduler,
'saveImages': saveImages,
'batchSize': batchSize,
'batchCount': batchCount,
'sdMode': sdMode,
'uiDebugMode': uiDebugMode,
'enableHires': enableHires,
'hiresUpscaler': hiresUpscaler,
'hiresSteps': hiresSteps,
'denoisingStrength': denoisingStrength,
'hrScale': hrScale,
};
}
}
17 changes: 16 additions & 1 deletion lib/features/settings/store/settings_store.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import '../models/sampler.dart';
import '../models/scheduler.dart';
import '../models/sd_model.dart';
import '../models/upscaler.dart';
import '../../../core/layout_preferences.dart';

final sdModelsProvider = FutureProvider<List<SDModel>>((ref) async {
final client = ref.watch(forgeApiClientProvider);
Expand Down Expand Up @@ -36,7 +37,21 @@ final upscalersProvider = FutureProvider<List<Upscaler>>((ref) async {
final selectedModelProvider = StateProvider<String?>((ref) => null);

class GenerationSettingsNotifier extends StateNotifier<GenerationSettings> {
GenerationSettingsNotifier() : super(GenerationSettings());
GenerationSettingsNotifier() : super(_loadInitialSettings());

static GenerationSettings _loadInitialSettings() {
final saved = LayoutPreferences.getGenerationSettings();
if (saved != null) {
return GenerationSettings.fromMap(saved);
}
return GenerationSettings();
}

@override
set state(GenerationSettings value) {
super.state = value;
LayoutPreferences.setGenerationSettings(value.toMap());
}

void updateSampler(String sampler) {
state = state.copyWith(samplerName: sampler);
Expand Down
2 changes: 2 additions & 0 deletions lib/features/settings/ui/detailed_settings_dialog.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:forui/forui.dart';

import '../../../core/l10n.dart';
import '../../../core/layout_preferences.dart';
import '../../../core/providers.dart';
import '../store/settings_store.dart';

Expand Down Expand Up @@ -36,6 +37,7 @@ class DetailedSettingsDialog extends ConsumerWidget {
initial: TextEditingValue(text: ref.read(apiUrlProvider)),
onChange: (value) {
ref.read(apiUrlProvider.notifier).state = value.text;
LayoutPreferences.setApiUrl(value.text);
},
),
),
Expand Down
Loading