Merge branch 'staging' of https://github.com/SillyTavern/SillyTavern into staging
| @@ -90,9 +90,11 @@ whitelistImportDomains: | ||
| 90 | 90 | ## headers: |
| 91 | 91 | ## User-Agent: "Googlebot/2.1 (+http://www.google.com/bot.html)" |
| 92 | 92 | requestOverrides: [] |
| 93 | 93 | # -- PLUGINEXTENSIONS CONFIGURATION -- |
| 94 | 94 | # Enable UI extensions |
| 95 | 95 | enableExtensions: true |
| 96 | +# Automatically update extensions when a release version changes | |
| 97 | +enableExtensionsAutoUpdate: true | |
| 96 | 98 | # Extension settings |
| 97 | 99 | extras: |
| 98 | 100 | # Disables automatic model download from HuggingFace |
| @@ -416,6 +416,7 @@ export const event_types = { | ||
| 416 | 416 | GENERATION_STOPPED: 'generation_stopped', |
| 417 | 417 | GENERATION_ENDED: 'generation_ended', |
| 418 | 418 | EXTENSIONS_FIRST_LOAD: 'extensions_first_load', |
| 419 | + EXTENSION_SETTINGS_LOADED: 'extension_settings_loaded', | |
| 419 | 420 | SETTINGS_LOADED: 'settings_loaded', |
| 420 | 421 | SETTINGS_UPDATED: 'settings_updated', |
| 421 | 422 | GROUP_UPDATED: 'group_updated', |
| @@ -6517,9 +6518,10 @@ export async function getSettings() { | ||
| 6517 | 6518 | selected_button = settings.selected_button; |
| 6518 | 6519 | |
| 6519 | 6520 | if (data.enable_extensions) { |
| 6521 | + const enableAutoUpdate = Boolean(data.enable_extensions_auto_update); | |
| 6520 | 6522 | const isVersionChanged = settings.currentVersion !== currentVersion; |
| 6521 | 6523 | await loadExtensionSettings(settings, isVersionChanged, enableAutoUpdate); |
| 6522 | 6524 | await eventSource.emit(event_types.EXTENSION_SETTINGS_LOADED); |
| 6523 | 6525 | } |
| 6524 | 6526 | |
| 6525 | 6527 | firstRun = !!settings.firstRun; |
| @@ -307,7 +307,7 @@ async function activateExtensions() { | ||
| 307 | 307 | |
| 308 | 308 | if (!isDisabled) { |
| 309 | 309 | const promise = Promise.all([addExtensionScript(name, manifest), addExtensionStyle(name, manifest)]); |
| 310 | 310 | await promise |
| 311 | 311 | .then(() => activeExtensions.add(name)) |
| 312 | 312 | .catch(err => console.log('Could not activate extension: ' + name, err)); |
| 313 | 313 | promises.push(promise); |
| @@ -822,16 +822,17 @@ export async function installExtension(url) { | ||
| 822 | 822 | const response = await request.json(); |
| 823 | 823 | toastr.success(`Extension "${response.display_name}" by ${response.author} (version ${response.version}) has been installed successfully!`, 'Extension installation successful'); |
| 824 | 824 | console.debug(`Extension "${response.display_name}" has been installed successfully at ${response.extensionPath}`); |
| 825 | 825 | await loadExtensionSettings({}, false, false); |
| 826 | 826 | await eventSource.emit(event_types.EXTENSION_SETTINGS_LOADED); |
| 827 | 827 | } |
| 828 | 828 | |
| 829 | 829 | /** |
| 830 | 830 | * Loads extension settings from the app settings. |
| 831 | 831 | * @param {object} settings App Settings |
| 832 | 832 | * @param {boolean} versionChanged Is this a version change? |
| 833 | + * @param {boolean} enableAutoUpdate Enable auto-update | |
| 833 | 834 | */ |
| 834 | 835 | async function loadExtensionSettings(settings, versionChanged, enableAutoUpdate) { |
| 835 | 836 | if (settings.extension_settings) { |
| 836 | 837 | Object.assign(extension_settings, settings.extension_settings); |
| 837 | 838 | } |
| @@ -842,11 +843,11 @@ async function loadExtensionSettings(settings, versionChanged) { | ||
| 842 | 843 | $('#extensions_notify_updates').prop('checked', extension_settings.notifyUpdates); |
| 843 | 844 | |
| 844 | 845 | // Activate offline extensions |
| 845 | 846 | await eventSource.emit(event_types.EXTENSIONS_FIRST_LOAD); |
| 846 | 847 | extensionNames = await discoverExtensions(); |
| 847 | 848 | manifests = await getManifests(extensionNames); |
| 848 | 849 | |
| 849 | 850 | if (versionChanged && enableAutoUpdate) { |
| 850 | 851 | await autoUpdateExtensions(false); |
| 851 | 852 | } |
| 852 | 853 | |
| @@ -8,7 +8,7 @@ export const markdownUnderscoreExt = () => { | ||
| 8 | 8 | |
| 9 | 9 | return [{ |
| 10 | 10 | type: 'output', |
| 11 | 11 | regex: new RegExp('(<code(?:\\s+[^>]*)?>[\\s\\S]*?<\\/code>)|\\b(?<!_)_(?!_)(.*?)(?<!_)_(?!_)\\b', 'g'), |
| 12 | 12 | replace: function(match, codeContent, italicContent) { |
| 13 | 13 | if (codeContent) { |
| 14 | 14 | // If it's inside <code> tags, return unchanged |
| @@ -9,6 +9,7 @@ const { jsonParser } = require('../express-common'); | ||
| 9 | 9 | const { getAllUserHandles, getUserDirectories } = require('../users'); |
| 10 | 10 | |
| 11 | 11 | const ENABLE_EXTENSIONS = getConfigValue('enableExtensions', true); |
| 12 | +const ENABLE_EXTENSIONS_AUTO_UPDATE = getConfigValue('enableExtensionsAutoUpdate', true); | |
| 12 | 13 | const ENABLE_ACCOUNTS = getConfigValue('enableUserAccounts', false); |
| 13 | 14 | |
| 14 | 15 | // 10 minutes |
| @@ -268,6 +269,7 @@ router.post('/get', jsonParser, (request, response) => { | ||
| 268 | 269 | instruct, |
| 269 | 270 | context, |
| 270 | 271 | enable_extensions: ENABLE_EXTENSIONS, |
| 272 | + enable_extensions_auto_update: ENABLE_EXTENSIONS_AUTO_UPDATE, | |
| 271 | 273 | enable_accounts: ENABLE_ACCOUNTS, |
| 272 | 274 | }); |
| 273 | 275 | }); |