Added timeout multiplicator
This commit is contained in:
parent
a9fed3e36d
commit
20dbce2f34
|
@ -398,6 +398,21 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"settingsTimeoutMultiplier": "Timeout multiplier",
|
||||||
|
"@settingsTimeoutMultiplier": {
|
||||||
|
"description": "Text displayed as title for the timeout multiplier section",
|
||||||
|
"context": "Visible in the settings view"
|
||||||
|
},
|
||||||
|
"settingsTimeoutMultiplierDescription": "Select the multiplier that is applied to every timeout value in the app. Can be useful with a slow internet connection or a slow host.",
|
||||||
|
"@settingsTimeoutMultiplierDescription": {
|
||||||
|
"description": "Description of the timeout multiplier section",
|
||||||
|
"context": "Visible in the settings view"
|
||||||
|
},
|
||||||
|
"settingsTimeoutMultiplierExample": "E.g. message timeout:",
|
||||||
|
"@settingsTimeoutMultiplierExample": {
|
||||||
|
"description": "Example for the timeout multiplier",
|
||||||
|
"context": "Visible in the settings view"
|
||||||
|
},
|
||||||
"settingsEnableHapticFeedback": "Enable haptic feedback",
|
"settingsEnableHapticFeedback": "Enable haptic feedback",
|
||||||
"@settingsEnableHapticFeedback": {
|
"@settingsEnableHapticFeedback": {
|
||||||
"description": "Text displayed as description for enable haptic feedback toggle",
|
"description": "Text displayed as description for enable haptic feedback toggle",
|
||||||
|
@ -423,26 +438,6 @@
|
||||||
"description": "Text displayed as description for dark brightness option",
|
"description": "Text displayed as description for dark brightness option",
|
||||||
"context": "Visible in the settings view"
|
"context": "Visible in the settings view"
|
||||||
},
|
},
|
||||||
"settingsBrightnessRestartTitle": "Restart Required",
|
|
||||||
"@settingsBrightnessRestartTitle": {
|
|
||||||
"description": "Title of the restart required dialog",
|
|
||||||
"context": "Visible in the settings view"
|
|
||||||
},
|
|
||||||
"settingsBrightnessRestartDescription": "Changing the theme requires a restart.\nDo you want to restart now or cancel the action?",
|
|
||||||
"@settingsBrightnessRestartDescription": {
|
|
||||||
"description": "Description of the restart required dialog",
|
|
||||||
"context": "Visible in the settings view"
|
|
||||||
},
|
|
||||||
"settingsBrightnessRestartRestart": "Restart",
|
|
||||||
"@settingsBrightnessRestartRestart": {
|
|
||||||
"description": "Text displayed for restart button, should be capitalized",
|
|
||||||
"context": "Visible in the settings view"
|
|
||||||
},
|
|
||||||
"settingsBrightnessRestartCancel": "Cancel",
|
|
||||||
"@settingsBrightnessRestartCancel": {
|
|
||||||
"description": "Text displayed for cancel button, should be capitalized",
|
|
||||||
"context": "Visible in the settings view"
|
|
||||||
},
|
|
||||||
"settingsThemeDevice": "Device",
|
"settingsThemeDevice": "Device",
|
||||||
"@settingsThemeDevice": {
|
"@settingsThemeDevice": {
|
||||||
"description": "Text displayed as description for device theme option",
|
"description": "Text displayed as description for device theme option",
|
||||||
|
@ -453,26 +448,6 @@
|
||||||
"description": "Text displayed as description for Ollama theme option",
|
"description": "Text displayed as description for Ollama theme option",
|
||||||
"context": "Visible in the settings view"
|
"context": "Visible in the settings view"
|
||||||
},
|
},
|
||||||
"settingsThemeRestartTitle": "Restart Required",
|
|
||||||
"@settingsThemeRestartTitle": {
|
|
||||||
"description": "Title of the restart required dialog",
|
|
||||||
"context": "Visible in the settings view"
|
|
||||||
},
|
|
||||||
"settingsThemeRestartDescription": "Changing the theme requires a restart.\nDo you want to restart now or cancel the action?",
|
|
||||||
"@settingsThemeRestartDescription": {
|
|
||||||
"description": "Description of the restart required dialog",
|
|
||||||
"context": "Visible in the settings view"
|
|
||||||
},
|
|
||||||
"settingsThemeRestartRestart": "Restart",
|
|
||||||
"@settingsThemeRestartRestart": {
|
|
||||||
"description": "Text displayed for restart button, should be capitalized",
|
|
||||||
"context": "Visible in the settings view"
|
|
||||||
},
|
|
||||||
"settingsThemeRestartCancel": "Cancel",
|
|
||||||
"@settingsThemeRestartCancel": {
|
|
||||||
"description": "Text displayed for cancel button, should be capitalized",
|
|
||||||
"context": "Visible in the settings view"
|
|
||||||
},
|
|
||||||
"settingsTemporaryFixes": "Temporary interface fixes",
|
"settingsTemporaryFixes": "Temporary interface fixes",
|
||||||
"@settingsTemporaryFixes": {
|
"@settingsTemporaryFixes": {
|
||||||
"description": "Text displayed as description for temporary fixes section",
|
"description": "Text displayed as description for temporary fixes section",
|
||||||
|
|
|
@ -122,7 +122,7 @@ Widget title(String text, {double top = 16, double bottom = 16}) {
|
||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.only(left: 24, right: 24),
|
padding: const EdgeInsets.only(left: 24, right: 24),
|
||||||
child: Text(text)),
|
child: Text(text)),
|
||||||
const Expanded(child: Divider(height: 1))
|
const Expanded(child: Divider())
|
||||||
]));
|
]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -155,16 +155,21 @@ Widget button(String text, IconData? icon, void Function()? onPressed,
|
||||||
bool disabled = false,
|
bool disabled = false,
|
||||||
bool replaceIconIfNull = false,
|
bool replaceIconIfNull = false,
|
||||||
String? description,
|
String? description,
|
||||||
|
bool onlyDesktopDescription = true,
|
||||||
|
bool alwaysMobileDescription = false,
|
||||||
String? badge,
|
String? badge,
|
||||||
void Function()? onDisabledTap,
|
void Function()? onDisabledTap,
|
||||||
void Function()? onLongTap,
|
void Function()? onLongTap,
|
||||||
void Function()? onDoubleTap}) {
|
void Function()? onDoubleTap}) {
|
||||||
if (description != null &&
|
if (description != null &&
|
||||||
(context != null && desktopLayoutNotRequired(context)) &&
|
((context != null && desktopLayoutNotRequired(context)) ||
|
||||||
|
!onlyDesktopDescription) &&
|
||||||
|
!alwaysMobileDescription &&
|
||||||
!description.startsWith("\n")) {
|
!description.startsWith("\n")) {
|
||||||
description = " • $description";
|
description = " • $description";
|
||||||
}
|
}
|
||||||
return Padding(
|
return AnimatedContainer(
|
||||||
|
duration: const Duration(milliseconds: 200),
|
||||||
padding: (context != null && desktopLayoutNotRequired(context))
|
padding: (context != null && desktopLayoutNotRequired(context))
|
||||||
? const EdgeInsets.only(top: 8, bottom: 8)
|
? const EdgeInsets.only(top: 8, bottom: 8)
|
||||||
: EdgeInsets.zero,
|
: EdgeInsets.zero,
|
||||||
|
@ -183,9 +188,11 @@ Widget button(String text, IconData? icon, void Function()? onPressed,
|
||||||
}
|
}
|
||||||
: onPressed,
|
: onPressed,
|
||||||
onLongPress: (description != null && context != null)
|
onLongPress: (description != null && context != null)
|
||||||
? desktopLayoutNotRequired(context)
|
? (desktopLayoutNotRequired(context) && !alwaysMobileDescription) ||
|
||||||
|
!onlyDesktopDescription
|
||||||
? null
|
? null
|
||||||
: () {
|
: () {
|
||||||
|
selectionHaptic();
|
||||||
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
|
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
|
||||||
content: Text(description!.trim()),
|
content: Text(description!.trim()),
|
||||||
showCloseIcon: true));
|
showCloseIcon: true));
|
||||||
|
@ -223,9 +230,14 @@ Widget button(String text, IconData? icon, void Function()? onPressed,
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
textWidget,
|
textWidget,
|
||||||
(description != null && desktopLayoutNotRequired(context))
|
(description != null &&
|
||||||
|
!alwaysMobileDescription &&
|
||||||
|
(desktopLayoutNotRequired(context) ||
|
||||||
|
!onlyDesktopDescription))
|
||||||
? Text(description!,
|
? Text(description!,
|
||||||
style: const TextStyle(color: Colors.grey))
|
style: const TextStyle(
|
||||||
|
color: Colors.grey,
|
||||||
|
overflow: TextOverflow.ellipsis))
|
||||||
: const SizedBox.shrink()
|
: const SizedBox.shrink()
|
||||||
]);
|
]);
|
||||||
} else {
|
} else {
|
||||||
|
@ -234,9 +246,16 @@ Widget button(String text, IconData? icon, void Function()? onPressed,
|
||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
textWidget,
|
textWidget,
|
||||||
(description != null && desktopLayoutNotRequired(context))
|
(description != null &&
|
||||||
? Text(description!,
|
!alwaysMobileDescription &&
|
||||||
style: const TextStyle(color: Colors.grey))
|
(desktopLayoutNotRequired(context) ||
|
||||||
|
!onlyDesktopDescription))
|
||||||
|
? Expanded(
|
||||||
|
child: Text(description!,
|
||||||
|
style: const TextStyle(
|
||||||
|
color: Colors.grey,
|
||||||
|
overflow: TextOverflow.ellipsis)),
|
||||||
|
)
|
||||||
: const SizedBox.shrink()
|
: const SizedBox.shrink()
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
@ -286,9 +305,11 @@ class _ScreenSettingsState extends State<ScreenSettings> {
|
||||||
.cast<String, String>(),
|
.cast<String, String>(),
|
||||||
)
|
)
|
||||||
..followRedirects = false;
|
..followRedirects = false;
|
||||||
request = await http.Response.fromStream(await requestBase
|
request = await http.Response.fromStream(await requestBase.send().timeout(
|
||||||
.send()
|
Duration(
|
||||||
.timeout(const Duration(seconds: 5), onTimeout: () {
|
milliseconds:
|
||||||
|
(5000.0 * (prefs!.getDouble("timeoutMultiplier") ?? 1.0))
|
||||||
|
.round()), onTimeout: () {
|
||||||
return http.StreamedResponse(const Stream.empty(), 408);
|
return http.StreamedResponse(const Stream.empty(), 408);
|
||||||
}));
|
}));
|
||||||
client.close();
|
client.close();
|
||||||
|
|
|
@ -118,7 +118,9 @@ class _ScreenVoiceState extends State<ScreenVoice> {
|
||||||
"Add punctuation and syntax to the following sentence. You must not change order of words or a word in itself! You must not add any word or phrase or remove one! Do not change between formal and personal form, keep the original one!\n\n$text",
|
"Add punctuation and syntax to the following sentence. You must not change order of words or a word in itself! You must not add any word or phrase or remove one! Do not change between formal and personal form, keep the original one!\n\n$text",
|
||||||
keepAlive: int.parse(prefs!.getString("keepAlive") ?? "300")),
|
keepAlive: int.parse(prefs!.getString("keepAlive") ?? "300")),
|
||||||
)
|
)
|
||||||
.timeout(const Duration(seconds: 10));
|
.timeout(Duration(
|
||||||
|
seconds: (10.0 * (prefs!.getDouble("timeoutMultiplier") ?? 1.0))
|
||||||
|
.round()));
|
||||||
setState(() {
|
setState(() {
|
||||||
text = generated.response!;
|
text = generated.response!;
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import 'package:dartx/dartx.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
|
|
||||||
|
@ -21,6 +22,25 @@ class ScreenSettingsInterface extends StatefulWidget {
|
||||||
_ScreenSettingsInterfaceState();
|
_ScreenSettingsInterfaceState();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String secondsBeautify(double seconds) {
|
||||||
|
String? endString;
|
||||||
|
int? endMinutes;
|
||||||
|
int? endSeconds;
|
||||||
|
|
||||||
|
if (seconds > 60) {
|
||||||
|
endSeconds = seconds.toInt() % 60;
|
||||||
|
endMinutes = (seconds - endSeconds) ~/ 60;
|
||||||
|
|
||||||
|
endString = "${endMinutes}m";
|
||||||
|
if (endSeconds > 0) {
|
||||||
|
endString += " ${endSeconds}s";
|
||||||
|
}
|
||||||
|
return "($endString)";
|
||||||
|
} else {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
class _ScreenSettingsInterfaceState extends State<ScreenSettingsInterface> {
|
class _ScreenSettingsInterfaceState extends State<ScreenSettingsInterface> {
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
@ -258,6 +278,37 @@ class _ScreenSettingsInterfaceState extends State<ScreenSettingsInterface> {
|
||||||
});
|
});
|
||||||
}),
|
}),
|
||||||
titleDivider(context: context),
|
titleDivider(context: context),
|
||||||
|
button(
|
||||||
|
AppLocalizations.of(context)!
|
||||||
|
.settingsTimeoutMultiplier,
|
||||||
|
Icons.info_outline_rounded,
|
||||||
|
null,
|
||||||
|
context: context,
|
||||||
|
alwaysMobileDescription: true,
|
||||||
|
description:
|
||||||
|
"\n${AppLocalizations.of(context)!.settingsTimeoutMultiplierDescription}"),
|
||||||
|
Slider(
|
||||||
|
value: (prefs!.getDouble("timeoutMultiplier") ?? 1),
|
||||||
|
min: 0.5,
|
||||||
|
divisions: 19,
|
||||||
|
max: 10,
|
||||||
|
label: (prefs!.getDouble("timeoutMultiplier") ?? 1)
|
||||||
|
.toString()
|
||||||
|
.removeSuffix(".0"),
|
||||||
|
onChanged: (value) {
|
||||||
|
selectionHaptic();
|
||||||
|
prefs!.setDouble("timeoutMultiplier", value);
|
||||||
|
setState(() {});
|
||||||
|
}),
|
||||||
|
button(
|
||||||
|
AppLocalizations.of(context)!
|
||||||
|
.settingsTimeoutMultiplierExample,
|
||||||
|
Icons.calculate_rounded,
|
||||||
|
null,
|
||||||
|
onlyDesktopDescription: false,
|
||||||
|
description:
|
||||||
|
"\n${(prefs!.getDouble("timeoutMultiplier") ?? 1)} x 30s = ${((prefs!.getDouble("timeoutMultiplier") ?? 1) * 30).round()}s ${secondsBeautify((prefs!.getDouble("timeoutMultiplier") ?? 1) * 30)}"),
|
||||||
|
titleDivider(context: context),
|
||||||
toggle(
|
toggle(
|
||||||
context,
|
context,
|
||||||
AppLocalizations.of(context)!
|
AppLocalizations.of(context)!
|
||||||
|
|
|
@ -99,9 +99,11 @@ Future<String> getTitleAi(List history) async {
|
||||||
],
|
],
|
||||||
keepAlive: int.parse(prefs!.getString("keepAlive") ?? "300")),
|
keepAlive: int.parse(prefs!.getString("keepAlive") ?? "300")),
|
||||||
)
|
)
|
||||||
.timeout(const Duration(seconds: 10));
|
.timeout(Duration(
|
||||||
|
seconds:
|
||||||
|
(10.0 * (prefs!.getDouble("timeoutMultiplier") ?? 1.0)).round()));
|
||||||
var title = generated.message.content;
|
var title = generated.message.content;
|
||||||
title = title.replaceAll("\n", " ").trim();
|
title = title.replaceAll("\n", " ");
|
||||||
|
|
||||||
var terms = [
|
var terms = [
|
||||||
"\"",
|
"\"",
|
||||||
|
@ -127,13 +129,13 @@ Future<String> getTitleAi(List history) async {
|
||||||
|
|
||||||
title = title.replaceAll(RegExp(r'<.*?>', dotAll: true), "");
|
title = title.replaceAll(RegExp(r'<.*?>', dotAll: true), "");
|
||||||
if (title.split(":").length == 2) {
|
if (title.split(":").length == 2) {
|
||||||
title = title.split(":")[1].trim();
|
title = title.split(":")[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
while (title.contains(" ")) {
|
while (title.contains(" ")) {
|
||||||
title = title.replaceAll(" ", " ");
|
title = title.replaceAll(" ", " ");
|
||||||
}
|
}
|
||||||
return title;
|
return title.trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> setTitleAi(List history) async {
|
Future<void> setTitleAi(List history) async {
|
||||||
|
@ -231,7 +233,9 @@ Future<String> send(String value, BuildContext context, Function setState,
|
||||||
messages: history,
|
messages: history,
|
||||||
keepAlive: int.parse(prefs!.getString("keepAlive") ?? "300")),
|
keepAlive: int.parse(prefs!.getString("keepAlive") ?? "300")),
|
||||||
)
|
)
|
||||||
.timeout(const Duration(seconds: 30));
|
.timeout(Duration(
|
||||||
|
seconds: (30.0 * (prefs!.getDouble("timeoutMultiplier") ?? 1.0))
|
||||||
|
.round()));
|
||||||
|
|
||||||
await for (final res in stream) {
|
await for (final res in stream) {
|
||||||
text += (res.message.content);
|
text += (res.message.content);
|
||||||
|
@ -263,7 +267,9 @@ Future<String> send(String value, BuildContext context, Function setState,
|
||||||
messages: history,
|
messages: history,
|
||||||
keepAlive: int.parse(prefs!.getString("keepAlive") ?? "300")),
|
keepAlive: int.parse(prefs!.getString("keepAlive") ?? "300")),
|
||||||
)
|
)
|
||||||
.timeout(const Duration(seconds: 30));
|
.timeout(Duration(
|
||||||
|
seconds: (30.0 * (prefs!.getDouble("timeoutMultiplier") ?? 1.0))
|
||||||
|
.round()));
|
||||||
if (chatAllowed) return "";
|
if (chatAllowed) return "";
|
||||||
messages.insert(
|
messages.insert(
|
||||||
0,
|
0,
|
||||||
|
|
|
@ -35,7 +35,9 @@ void setModel(BuildContext context, Function setState) {
|
||||||
.cast<String, String>(),
|
.cast<String, String>(),
|
||||||
baseUrl: "$host/api")
|
baseUrl: "$host/api")
|
||||||
.listModels()
|
.listModels()
|
||||||
.timeout(const Duration(seconds: 10));
|
.timeout(Duration(
|
||||||
|
seconds: (10.0 * (prefs!.getDouble("timeoutMultiplier") ?? 1.0))
|
||||||
|
.round()));
|
||||||
for (var i = 0; i < list.models!.length; i++) {
|
for (var i = 0; i < list.models!.length; i++) {
|
||||||
models.add(list.models![i].model!.split(":")[0]);
|
models.add(list.models![i].model!.split(":")[0]);
|
||||||
modelsReal.add(list.models![i].model!);
|
modelsReal.add(list.models![i].model!);
|
||||||
|
@ -125,7 +127,10 @@ void setModel(BuildContext context, Function setState) {
|
||||||
int.parse(prefs!.getString("keepAlive") ?? "300")
|
int.parse(prefs!.getString("keepAlive") ?? "300")
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
.timeout(const Duration(seconds: 15));
|
.timeout(Duration(
|
||||||
|
seconds: (10.0 *
|
||||||
|
(prefs!.getDouble("timeoutMultiplier") ?? 1.0))
|
||||||
|
.round()));
|
||||||
} catch (_) {
|
} catch (_) {
|
||||||
// ignore: use_build_context_synchronously
|
// ignore: use_build_context_synchronously
|
||||||
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
|
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
|
||||||
|
@ -420,7 +425,7 @@ Future<bool> deleteChatDialog(BuildContext context, Function setState,
|
||||||
uuid ??= chatUuid;
|
uuid ??= chatUuid;
|
||||||
|
|
||||||
bool returnValue = false;
|
bool returnValue = false;
|
||||||
void delete() {
|
void delete(BuildContext context) {
|
||||||
returnValue = true;
|
returnValue = true;
|
||||||
if (takeAction) {
|
if (takeAction) {
|
||||||
for (var i = 0; i < (prefs!.getStringList("chats") ?? []).length; i++) {
|
for (var i = 0; i < (prefs!.getStringList("chats") ?? []).length; i++) {
|
||||||
|
@ -468,7 +473,7 @@ Future<bool> deleteChatDialog(BuildContext context, Function setState,
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
selectionHaptic();
|
selectionHaptic();
|
||||||
Navigator.of(context).pop();
|
Navigator.of(context).pop();
|
||||||
delete();
|
delete(context);
|
||||||
},
|
},
|
||||||
child: Text(
|
child: Text(
|
||||||
AppLocalizations.of(context)!.deleteDialogDelete))
|
AppLocalizations.of(context)!.deleteDialogDelete))
|
||||||
|
@ -476,7 +481,7 @@ Future<bool> deleteChatDialog(BuildContext context, Function setState,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
delete();
|
delete(context);
|
||||||
}
|
}
|
||||||
setState(() {});
|
setState(() {});
|
||||||
return returnValue;
|
return returnValue;
|
||||||
|
|
|
@ -6,6 +6,8 @@ import 'package:ollama_app/worker/desktop.dart';
|
||||||
import 'haptic.dart';
|
import 'haptic.dart';
|
||||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||||
|
|
||||||
|
import '../main.dart';
|
||||||
|
|
||||||
import 'package:http/http.dart' as http;
|
import 'package:http/http.dart' as http;
|
||||||
import 'package:install_referrer/install_referrer.dart';
|
import 'package:install_referrer/install_referrer.dart';
|
||||||
import 'package:package_info_plus/package_info_plus.dart';
|
import 'package:package_info_plus/package_info_plus.dart';
|
||||||
|
@ -87,7 +89,10 @@ void checkUpdate(Function setState) async {
|
||||||
var request = await http
|
var request = await http
|
||||||
.get(Uri.parse(
|
.get(Uri.parse(
|
||||||
"https://api.github.com/repos/${repo[3]}/${repo[4]}/releases"))
|
"https://api.github.com/repos/${repo[3]}/${repo[4]}/releases"))
|
||||||
.timeout(const Duration(seconds: 5));
|
.timeout(Duration(
|
||||||
|
milliseconds:
|
||||||
|
(5000.0 * (prefs!.getDouble("timeoutMultiplier") ?? 1.0))
|
||||||
|
.round()));
|
||||||
if (request.statusCode == 403) {
|
if (request.statusCode == 403) {
|
||||||
setState(() {
|
setState(() {
|
||||||
updateStatus = "rateLimit";
|
updateStatus = "rateLimit";
|
||||||
|
|
|
@ -10,6 +10,9 @@
|
||||||
"settingsUseSystem",
|
"settingsUseSystem",
|
||||||
"settingsUseSystemDescription",
|
"settingsUseSystemDescription",
|
||||||
"settingsPreloadModels",
|
"settingsPreloadModels",
|
||||||
|
"settingsTimeoutMultiplier",
|
||||||
|
"settingsTimeoutMultiplierDescription",
|
||||||
|
"settingsTimeoutMultiplierExample",
|
||||||
"settingsTemporaryFixes",
|
"settingsTemporaryFixes",
|
||||||
"settingsTemporaryFixesDescription",
|
"settingsTemporaryFixesDescription",
|
||||||
"settingsTemporaryFixesInstructions",
|
"settingsTemporaryFixesInstructions",
|
||||||
|
@ -32,6 +35,9 @@
|
||||||
"settingsUseSystem",
|
"settingsUseSystem",
|
||||||
"settingsUseSystemDescription",
|
"settingsUseSystemDescription",
|
||||||
"settingsPreloadModels",
|
"settingsPreloadModels",
|
||||||
|
"settingsTimeoutMultiplier",
|
||||||
|
"settingsTimeoutMultiplierDescription",
|
||||||
|
"settingsTimeoutMultiplierExample",
|
||||||
"settingsTemporaryFixes",
|
"settingsTemporaryFixes",
|
||||||
"settingsTemporaryFixesDescription",
|
"settingsTemporaryFixesDescription",
|
||||||
"settingsTemporaryFixesInstructions",
|
"settingsTemporaryFixesInstructions",
|
||||||
|
@ -54,6 +60,9 @@
|
||||||
"settingsUseSystem",
|
"settingsUseSystem",
|
||||||
"settingsUseSystemDescription",
|
"settingsUseSystemDescription",
|
||||||
"settingsPreloadModels",
|
"settingsPreloadModels",
|
||||||
|
"settingsTimeoutMultiplier",
|
||||||
|
"settingsTimeoutMultiplierDescription",
|
||||||
|
"settingsTimeoutMultiplierExample",
|
||||||
"settingsTemporaryFixes",
|
"settingsTemporaryFixes",
|
||||||
"settingsTemporaryFixesDescription",
|
"settingsTemporaryFixesDescription",
|
||||||
"settingsTemporaryFixesInstructions",
|
"settingsTemporaryFixesInstructions",
|
||||||
|
@ -76,6 +85,9 @@
|
||||||
"settingsUseSystem",
|
"settingsUseSystem",
|
||||||
"settingsUseSystemDescription",
|
"settingsUseSystemDescription",
|
||||||
"settingsPreloadModels",
|
"settingsPreloadModels",
|
||||||
|
"settingsTimeoutMultiplier",
|
||||||
|
"settingsTimeoutMultiplierDescription",
|
||||||
|
"settingsTimeoutMultiplierExample",
|
||||||
"settingsTemporaryFixes",
|
"settingsTemporaryFixes",
|
||||||
"settingsTemporaryFixesDescription",
|
"settingsTemporaryFixesDescription",
|
||||||
"settingsTemporaryFixesInstructions",
|
"settingsTemporaryFixesInstructions",
|
||||||
|
|
Loading…
Reference in New Issue