big file storage

This commit is contained in:
Nathan Rashleigh committed 2026-09-18 23:22:55 +10:00
1 parent 91fe0211d4
commit 9b11a4ded6
1265 files changed
+149378 -60

No files matched your search

+164
View File
@@ -0,0 +1,164 @@
{
"remoteType": "",
"useCustomRequestHandler": false,
"couchDB_URI": "",
"couchDB_USER": "",
"couchDB_PASSWORD": "",
"couchDB_DBNAME": "",
"liveSync": false,
"syncOnSave": false,
"syncOnStart": false,
"savingDelay": 200,
"lessInformationInLog": false,
"gcDelay": 0,
"versionUpFlash": "",
"minimumChunkSize": 20,
"longLineThreshold": 250,
"showVerboseLog": false,
"suspendFileWatching": false,
"trashInsteadDelete": true,
"periodicReplication": false,
"periodicReplicationInterval": 60,
"syncOnFileOpen": false,
"encrypt": true,
"passphrase": "",
"usePathObfuscation": true,
"doNotDeleteFolder": false,
"resolveConflictsByNewerFile": false,
"batchSave": false,
"batchSaveMinimumDelay": 5,
"batchSaveMaximumDelay": 60,
"deviceAndVaultName": "",
"usePluginSettings": false,
"showOwnPlugins": false,
"showStatusOnEditor": false,
"showStatusOnStatusbar": true,
"showOnlyIconsOnEditor": false,
"hideFileWarningNotice": false,
"usePluginSync": false,
"autoSweepPlugins": false,
"autoSweepPluginsPeriodic": false,
"notifyPluginOrSettingUpdated": false,
"checkIntegrityOnSave": false,
"batch_size": 25,
"batches_limit": 25,
"useHistory": true,
"disableRequestURI": true,
"skipOlderFilesOnSync": true,
"checkConflictOnlyOnOpen": false,
"showMergeDialogOnlyOnActive": false,
"syncInternalFiles": false,
"syncInternalFilesBeforeReplication": false,
"syncInternalFilesIgnorePatterns": "\\/node_modules\\/, \\/\\.git\\/, \\/obsidian-livesync\\/",
"syncInternalFilesTargetPatterns": "",
"syncInternalFilesInterval": 60,
"additionalSuffixOfDatabaseName": "f1ade7c0d39e389e",
"ignoreVersionCheck": false,
"lastReadUpdates": 25,
"deleteMetadataOfDeletedFiles": false,
"syncIgnoreRegEx": "",
"syncOnlyRegEx": "",
"customChunkSize": 60,
"readChunksOnline": true,
"watchInternalFileChanges": true,
"automaticallyDeleteMetadataOfDeletedFiles": 0,
"disableMarkdownAutoMerge": false,
"writeDocumentsIfConflicted": false,
"useDynamicIterationCount": false,
"syncAfterMerge": false,
"configPassphraseStore": "",
"encryptedPassphrase": "%$0Bn++WIBZ2BOvFO88xcBMWI0lFP8oyUEWm8NmaQcasMPFuFPKjzlKdrygBybfwWNqHRg9ksc2fKwXCtuos+LZKBld2NAaLVDZgQcn43fMazRA4NSQJKLyrdzUdZfbOQE36A64d+GXkgDguJ6tQ==",
"encryptedCouchDBConnection": "%$0Bn++WIBZ2BOvFO88xcBMWI0lFP8oyUEWm8NmaQcasMx5zEn8+oHlz2OSUO1+Fu+m/kVsHFE23tEN9vd+9T9vd4mB1wFxFTHhNY8PGEGZcSwmZR70OkFbaS4/shFa6zDV5GbsoJ2nGsYZx+R9i6V1xxWXNBcwrFGogtsqpccSU7FOKjUGz3bnwLPmgjTUCrkEEC4VU+Z3jauAyqfVsxKIgr/ApltJWz2Re92ATNnt606NACbtuDHe9phriQwg9XchMHAwn2GGJ1hy4uwB6ooqaPXjNkLZP98cO7Wv4pkRo6XDquhNeUZpp6Cl8SwSYBRhxqkAa+cPOF/npT6fw5CfoIF6gHJQdE1LpUOQtg/WoeDIzm8Joh91aiicPI1H4Cg7FTEJNNsUVxHp2v8S3p8DuWrK4amvHKsRR85O/NMu5OMuqOSEgoMnpI2rmUhCqNe4lznk1q2nk9vG44hyw26LK46nn7JM5ZOXgVKIwv4Znaxpde0pSx7t3y69ud9xdFChsRdZv37Twe91MM055/JyIBi1NqSu3UTGeCuG1wh2GUdiRA5/LsnBc3mNCWtFIDP0LYP4wxHHrd7AE2yHqPktFVpX5hNHb+oW5m6nPhPgLNzJkWdR/5OaARbJpJh6ZjedLV4houh3GLIqqnOAVKWTECxH2aBffGGXI/NqXMnmTHteD8=",
"permitEmptyPassphrase": false,
"useIndexedDBAdapter": true,
"useTimeouts": false,
"writeLogToTheFile": false,
"doNotPaceReplication": false,
"hashCacheMaxCount": 300,
"hashCacheMaxAmount": 50,
"concurrencyOfReadChunksOnline": 30,
"minimumIntervalOfReadChunksOnline": 25,
"hashAlg": "xxhash64",
"suspendParseReplicationResult": false,
"doNotSuspendOnFetching": false,
"useIgnoreFiles": false,
"ignoreFiles": ".gitignore",
"syncOnEditorSave": false,
"pluginSyncExtendedSetting": {},
"syncMaxSizeInMB": 50,
"settingSyncFile": "",
"writeCredentialsForSettingSync": false,
"notifyAllSettingSyncFile": false,
"isConfigured": true,
"settingVersion": 10,
"enableCompression": false,
"accessKey": "",
"bucket": "",
"endpoint": "",
"region": "",
"secretKey": "",
"useEden": false,
"maxChunksInEden": 10,
"maxTotalLengthInEden": 1024,
"maxAgeInEden": 10,
"disableCheckingConfigMismatch": false,
"displayLanguage": "def",
"enableChunkSplitterV2": false,
"disableWorkerForGeneratingChunks": false,
"processSmallFilesInUIThread": false,
"notifyThresholdOfRemoteStorageSize": 5285,
"usePluginSyncV2": true,
"usePluginEtc": false,
"handleFilenameCaseSensitive": false,
"doNotUseFixedRevisionForChunks": true,
"showLongerLogInsideEditor": false,
"sendChunksBulk": false,
"sendChunksBulkMaxSize": 1,
"useSegmenter": true,
"useAdvancedMode": false,
"usePowerUserMode": false,
"useEdgeCaseMode": false,
"enableDebugTools": false,
"suppressNotifyHiddenFilesChange": false,
"syncMinimumInterval": 2000,
"P2P_Enabled": false,
"P2P_AutoAccepting": 0,
"P2P_AppID": "self-hosted-livesync",
"P2P_roomID": "",
"P2P_passphrase": "",
"P2P_relays": "wss://exp-relay.vrtmrz.net/",
"P2P_AutoBroadcast": false,
"P2P_AutoStart": false,
"P2P_AutoSyncPeers": "",
"P2P_AutoWatchPeers": "",
"P2P_SyncOnReplication": "",
"P2P_RebuildFrom": "",
"P2P_AutoAcceptingPeers": "",
"P2P_AutoDenyingPeers": "",
"P2P_IsHeadless": false,
"P2P_DevicePeerName": "",
"P2P_turnServers": "",
"P2P_turnUsername": "",
"P2P_turnCredential": "",
"doctorProcessedVersion": "0.25.0",
"bucketCustomHeaders": "",
"couchDB_CustomHeaders": "",
"useJWT": false,
"jwtAlgorithm": "",
"jwtKey": "",
"jwtKid": "",
"jwtSub": "",
"jwtExpDuration": 5,
"useRequestAPI": false,
"bucketPrefix": "",
"chunkSplitterVersion": "v3-rabin-karp",
"E2EEAlgorithm": "v2",
"processSizeMismatchedFiles": false,
"forcePathStyle": true,
"syncInternalFileOverwritePatterns": "",
"useOnlyLocalChunk": false,
"configPassphrase": "",
"preset": "",
"syncMode": "ONEVENTS",
"dummy": 0
}
+19
View File
@@ -0,0 +1,19 @@
/*
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD AND TERSER
if you want to view the source, please visit the github repository of this plugin
*/
"use strict";function Logger(message,level,key3){_logger(message,level,key3)}function __logger(message,baseLevel,flagsOrKey,key3){let level=baseLevel;"string"==typeof flagsOrKey?key3=flagsOrKey:void 0!==flagsOrKey&&(level|=flagsOrKey);_logger(message,level,key3)}function info(message,flagsOrKey,key3){__logger(message,LEVEL_INFO,flagsOrKey,key3)}function isMetaEntry(entry){return"children"in entry}function statusDisplay(status){return status?"EXPERIMENTAL"==status?" (Experimental)":"ALPHA"==status?" (Alpha)":"BETA"==status?" (Beta)":` (${status})`:""}function confName(key3,alt=""){var _a8,_b5;return key3 in configurationNames?`${null==(_a8=configurationNames[key3])?void 0:_a8.name}${statusDisplay(null==(_b5=configurationNames[key3])?void 0:_b5.status)}`:`${alt||""}`}function numeric(str){return isNaN(str)?str.charCodeAt(0):parseInt(str,10)}function escapeBraces(str){return str.replace(slashPattern,escSlash).replace(openPattern,escOpen).replace(closePattern,escClose).replace(commaPattern,escComma).replace(periodPattern,escPeriod)}function unescapeBraces(str){return str.replace(escSlashPattern,"\\").replace(escOpenPattern,"{").replace(escClosePattern,"}").replace(escCommaPattern,",").replace(escPeriodPattern,".")}function parseCommaParts(str){if(!str)return[""];const parts=[],m3=balanced("{","}",str);if(!m3)return str.split(",");const{pre,body,post}=m3,p4=pre.split(",");p4[p4.length-1]+="{"+body+"}";const postParts=parseCommaParts(post);if(post.length){p4[p4.length-1]+=postParts.shift();p4.push.apply(p4,postParts)}parts.push.apply(parts,p4);return parts}function expand(str){if(!str)return[];"{}"===str.slice(0,2)&&(str="\\{\\}"+str.slice(2));return expand_(escapeBraces(str),!0).map(unescapeBraces)}function embrace(str){return"{"+str+"}"}function isPadded(el){return/^-?0\d/.test(el)}function lte(i2,y2){return i2<=y2}function gte(i2,y2){return i2>=y2}function expand_(str,isTop){const expansions=[],m3=balanced("{","}",str);if(!m3)return[str];const pre=m3.pre,post=m3.post.length?expand_(m3.post,!1):[""];if(/\$$/.test(m3.pre))for(let k2=0;k2<post.length;k2++){const expansion=pre+"{"+m3.body+"}"+post[k2];expansions.push(expansion)}else{const isNumericSequence=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m3.body),isAlphaSequence=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m3.body),isSequence=isNumericSequence||isAlphaSequence,isOptions=m3.body.indexOf(",")>=0;if(!isSequence&&!isOptions)return m3.post.match(/,(?!,).*\}/)?expand_(str=m3.pre+"{"+m3.body+escClose+m3.post):[str];let n3,N3;if(isSequence)n3=m3.body.split(/\.\./);else{n3=parseCommaParts(m3.body);if(1===n3.length&&void 0!==n3[0]){n3=expand_(n3[0],!1).map(embrace);if(1===n3.length)return post.map((p4=>m3.pre+n3[0]+p4))}}if(isSequence&&void 0!==n3[0]&&void 0!==n3[1]){const x2=numeric(n3[0]),y2=numeric(n3[1]),width=Math.max(n3[0].length,n3[1].length);let incr=3===n3.length&&void 0!==n3[2]?Math.abs(numeric(n3[2])):1,test=lte;if(y2<x2){incr*=-1;test=gte}const pad2=n3.some(isPadded);N3=[];for(let i2=x2;test(i2,y2);i2+=incr){let c3;if(isAlphaSequence){c3=String.fromCharCode(i2);"\\"===c3&&(c3="")}else{c3=String(i2);if(pad2){const need=width-c3.length;if(need>0){const z2=new Array(need+1).join("0");c3=i2<0?"-"+z2+c3.slice(1):z2+c3}}}N3.push(c3)}}else{N3=[];for(let j2=0;j2<n3.length;j2++)N3.push.apply(N3,expand_(n3[j2],!1))}for(let j2=0;j2<N3.length;j2++)for(let k2=0;k2<post.length;k2++){const expansion=pre+N3[j2]+post[k2];(!isTop||isSequence||expansion)&&expansions.push(expansion)}}return expansions}async function getWebCrypto(){if(webcrypto)return webcrypto;if(globalThis.crypto)return webcrypto=globalThis.crypto;{const module2=await import("crypto");return webcrypto=module2.webcrypto}}function base64ToArrayBufferNative(base64){if(0===base64.length)return new ArrayBuffer(0);try{if("string"==typeof base64)return Uint8Array.fromBase64(base64).buffer;const bufItems=base64.map((e3=>Uint8Array.fromBase64(e3).buffer)),len=bufItems.reduce(((p4,c3)=>p4+c3.byteLength),0),joinedArray=new Uint8Array(len);let offset=0;bufItems.forEach((e3=>{joinedArray.set(new Uint8Array(e3),offset);offset+=e3.byteLength}));return joinedArray.buffer}catch(ex){Logger("Base64 Decode error",LOG_LEVEL_VERBOSE);Logger(ex,LOG_LEVEL_VERBOSE);return new ArrayBuffer(0)}}function base64ToArrayBufferInternalBrowser(base64){try{const binary_string=globalThis.atob(base64),len=binary_string.length,bytes=new Uint8Array(len);for(let i2=0;i2<len;i2++)bytes[i2]=binary_string.charCodeAt(i2);return bytes.buffer}catch(ex){Logger("Base64 Decode error",LOG_LEVEL_VERBOSE);Logger(ex,LOG_LEVEL_VERBOSE);return new ArrayBuffer(0)}}function arrayBufferToBase64internalBrowser(buffer){return new Promise(((res2,rej)=>{const blob=new Blob([buffer],{type:"application/octet-binary"}),reader=new FileReader;reader.onload=function(evt){var _a8,_b5;const dataURI=(null==(_b5=null==(_a8=evt.target)?void 0:_a8.result)?void 0:_b5.toString())||"";if(0!=buffer.byteLength&&(""==dataURI||"data:"==dataURI))return rej(new TypeError("Could not parse tLine truncated
/*! Bundled license information:
octagonal-wheels/dist/encoding/encodeobject.js:
(* istanbul ignore if -- @preserve *)
@noble/secp256k1/index.js:
(*! noble-secp256k1 - MIT License (c) 2019 Paul Miller (paulmillr.com) *)
octagonal-wheels/dist/encryption/hkdf.js:
(* istanbul ignore if -- @preserve *)
(* istanbul ignore next -- @preserve *)
*/__export(main_exports,{default:()=>ObsidianLiveSyncPlugin});module.exports=__toCommonJS(main_exports);LOG_LEVEL_DEBUG=-1;LEVEL_INFO=LOG_LEVEL_INFO=32;LEVEL_NOTICE=LOG_LEVEL_NOTICE=64;LOG_LEVEL_VERBOSE=16;defaultLoggerEnv_minLogLevel=LOG_LEVEL_INFO;_logger=function defaultLogger2(message,level=LEVEL_INFO,key3){if(level<defaultLoggerEnv_minLogLevel)return;const newMessage=`${(new Date).toLocaleString()}\t${level}\t${"string"==typeof message?message:message instanceof Error?`${message.name}:${message.message}`:JSON.stringify(message,null,2)}`;1&level?console.debug(newMessage):4&level?console.warn(newMessage):8&level?console.error(newMessage):2&level?console.info(newMessage):console.log(newMessage);message instanceof Error&&console.dir(message.stack)};RESULT_TIMED_OUT=Symbol("timed out");Symbol("NotFound");CANCELLED=Symbol("cancelled");AUTO_MERGED=Symbol("auto_merged");NOT_CONFLICTED=Symbol("not_conflicted");MISSING_OR_ERROR=Symbol("missing_or_error");LEAVE_TO_SUBSEQUENT=Symbol("leave_to_subsequent_proc");Symbol("infinity");MILESTONE_DOCID="_local/obsydian_livesync_milestone";NODEINFO_DOCID="_local/obsydian_livesync_nodeinfo";MODE_SELECTIVE=0;MODE_AUTOMATIC=1;MODE_PAUSED=2;MODE_SHINY=3;REMOTE_COUCHDB=RemoteTypes_REMOTE_COUCHDB="";REMOTE_MINIO=RemoteTypes_REMOTE_MINIO="MINIO";REMOTE_P2P=RemoteTypes_REMOTE_P2P="ONLY_P2P";AutoAccepting=(AutoAccepting2=>{AutoAccepting2[AutoAccepting2.NONE=0]="NONE";AutoAccepting2[AutoAccepting2.ALL=1]="ALL";return AutoAccepting2})(AutoAccepting||{});P2P_DEFAULT_SETTINGS={P2P_Enabled:!1,P2P_AutoAccepting:0,P2P_AppID:"self-hosted-livesync",P2P_roomID:"",P2P_passphrase:"",P2P_relays:"wss://exp-relay.vrtmrz.net/",P2P_AutoBroadcast:!1,P2P_AutoStart:!1,P2P_AutoSyncPeers:"",P2P_AutoWatchPeers:"",P2P_SyncOnReplication:"",P2P_RebuildFrom:"",P2P_AutoAcceptingPeers:"",P2P_AutoDenyingPeers:"",P2P_IsHeadless:!1,P2P_DevicePeerName:"",P2P_turnServers:"",P2P_turnUsername:"",P2P_turnCredential:""};E2EEAlgorithmNames={"":"V1: Legacy",v2:"V2: AES-256-GCM With HKDF",forceV1:"Force-V1: Force Legacy (Not recommended)"};E2EEAlgorithms={V1:"",V2:"v2",ForceV1:"forceV1"};ChunkAlgorithmNames={v1:"V1: Legacy",v2:"V2: Simple (Default)","v2-segmenter":"V2.5: Lexical chunks","v3-rabin-karp":"V3: Fine deduplication"};DEFAULT_SETTINGS={remoteType:REMOTE_COUCHDB,useCustomRequestHandler:!1,couchDB_URI:"",couchDB_USER:"",couchDB_PASSWORD:"",couchDB_DBNAME:"",liveSync:!1,syncOnSave:!1,syncOnStart:!1,savingDelay:200,lessInformationInLog:!1,gcDelay:300,versionUpFlash:"",minimumChunkSize:20,longLineThreshold:250,showVerboseLog:!1,suspendFileWatching:!1,trashInsteadDelete:!0,periodicReplication:!1,periodicReplicationInterval:60,syncOnFileOpen:!1,encrypt:!1,passphrase:"",usePathObfuscation:!1,doNotDeleteFolder:!1,resolveConflictsByNewerFile:!1,batchSave:!1,batchSaveMinimumDelay:5,batchSaveMaximumDelay:60,deviceAndVaultName:"",usePluginSettings:!1,showOwnPlugins:!1,showStatusOnEditor:!0,showStatusOnStatusbar:!0,showOnlyIconsOnEditor:!1,hideFileWarningNotice:!1,usePluginSync:!1,autoSweepPlugins:!1,autoSweepPluginsPeriodic:!1,notifyPluginOrSettingUpdated:!1,checkIntegrityOnSave:!1,batch_size:25,batches_limit:25,useHistory:!1,disableRequestURI:!1,skipOlderFilesOnSync:!0,checkConflictOnlyOnOpen:!1,showMergeDialogOnlyOnActive:!1,syncInternalFiles:!1,syncInternalFilesBeforeReplication:!1,syncInternalFilesIgnorePatterns:"\\/node_modules\\/, \\/\\.git\\/, \\/obsidian-livesync\\/",syncInternalFilesTargetPatterns:"",syncInternalFilesInterval:60,additionalSuffixOfDatabaseName:"",ignoreVersionCheck:!1,lastReadUpdates:0,deleteMetadataOfDeletedFiles:!1,syncIgnoreRegEx:"",syncOnlyRegEx:"",customChunkSize:0,readChunksOnline:!0,watchInternalFileChanges:!0,automaticallyDeleteMetadataOfDeletedFiles:0,disableMarkdownAutoMerge:!1,writeDocumentsIfConflicted:!1,useDynamicIterationCount:!1,syncAfterMerge:!1,configPassphraseStore:"",encryptedPassphrase:"",encryptedCouchDBConnection:"",permitEmptyPassphrase:!1,useIndexedDBAdapter:!1,useTimeouts:!1,writeLogToTheFile:!1,doNotPaceReplication:!1,hashCacheMaxCount:300,hashCacheMaxAmount:50,concurrencyOfReadChunksOnline:40,minimumIntervalOfReadChunksOnline:50,hashAlg:"xxhash64",suspendParseReplicationResult:!1,doNotSuspendOnFetching:!1,useIgnoreFiles:!1,ignoreFiles:".gitignore",syncOnEditorSave:!1,pluginSyncExtendedSetting:{},syncMaxSizeInMB:50,settingSyncFile:"",writeCredentialsForSettingSync:!1,notifyAllSettingSyncFile:!1,isConfigured:void 0,settingVersion:10,enableCompression:!1,accessKey:"",bucket:"",endpoint:"",region:"auto",secretKey:"",useEden:!1,maxChunksInEden:10,maxTotalLengthInEden:1024,maxAgeInEden:10,disableCheckingConfigMismatch:!1,displayLanguage:"",enableChunkSplitterV2:!1,disableWorkerForGeneratingChunks:!1,processSmallFilesInUIThread:!1,notifyThresholdOfRemoteStorageSize:-1,usePluginSyncV2:!1,usePluginEtc:!1,handleFilenameCaseSensitive:void 0,doNotUseFixedRevisionForChunks:!0,showLongerLogInsideEditor:!1,sendChunksBulk:!1,sendChunksBulkMaxSize:1,useSegmenter:!1,useAdvancedMode:!1,usePLine truncated
/* nosourcemap */
+10
View File
@@ -0,0 +1,10 @@
{
"id": "obsidian-livesync",
"name": "Self-hosted LiveSync",
"version": "0.25.34",
"minAppVersion": "0.9.12",
"description": "Community implementation of self-hosted livesync. Reflect your vault changes to some other devices immediately. Please make sure to disable other synchronize solutions to avoid content corruption or duplication.",
"author": "vorotamoroz",
"authorUrl": "https://github.com/vrtmrz",
"isDesktopOnly": false
}
+481
View File
@@ -0,0 +1,481 @@
.added {
color: var(--text-on-accent);
background-color: var(--text-accent);
}
.normal {
color: var(--text-normal);
}
.deleted {
color: var(--text-on-accent);
background-color: var(--text-muted);
}
.conflict-dev-name {
display: inline-block;
min-width: 5em;
}
.op-scrollable {
overflow-y: scroll;
/* min-height: 280px; */
max-height: 280px;
user-select: text;
-webkit-user-select: text;
}
.op-pre {
white-space: pre-wrap;
}
.op-warn {
border: 1px solid salmon;
padding: 2px;
border-radius: 4px;
}
.op-warn::before {
content: "Warning";
font-weight: bold;
color: salmon;
position: relative;
display: block;
}
.op-warn-info {
border: 1px solid rgb(255, 209, 81);
padding: 2px;
border-radius: 4px;
}
.op-warn-info::before {
content: "Notice";
font-weight: bold;
color: rgb(255, 209, 81);
position: relative;
display: block;
}
.syncstatusbar {
-webkit-filter: grayscale(100%);
filter: grayscale(100%);
}
.tcenter {
text-align: center;
}
.sls-plugins-wrap {
display: flex;
flex-grow: 1;
max-height: 50vh;
overflow-y: scroll;
}
.sls-plugins-tbl {
border: 1px solid var(--background-modifier-border);
width: 100%;
max-height: 80%;
}
.divider th {
border-top: 1px solid var(--background-modifier-border);
}
.sls-header-button {
margin-left: 2em;
}
.sls-hidden {
display: none;
}
:root {
--sls-log-text: "";
}
.sls-troubleshoot-preview {
max-width: max-content;
}
.sls-troubleshoot-preview img {
max-width: 100%;
}
.sls-setting-tab {
display: none;
}
div.sls-setting-menu-btn {
color: var(--text-normal);
background-color: var(--background-secondary-alt);
border-radius: 8px;
padding: 6px 10px;
cursor: pointer;
margin-right: 2px;
font-family: "Inter", sans-serif;
outline: none;
user-select: none;
flex-grow: 1;
text-align: center;
flex-shrink: 1;
}
.sls-setting-label.selected {
/* order: 1; */
flex-grow: 1;
/* width: 100%; */
}
.sls-setting-tab:hover~div.sls-setting-menu-btn,
.sls-setting-label.selected .sls-setting-tab:checked~div.sls-setting-menu-btn {
background-color: var(--interactive-accent);
color: var(--text-on-accent);
}
.sls-setting-menu-wrapper {
display: flex;
flex-direction: column;
flex-grow: 1;
position: sticky;
top: 0;
backdrop-filter: blur(15px);
padding: 4px;
border-radius: 10px;
z-index: 10;
}
.sls-setting-menu {
display: flex;
flex-direction: row;
overflow-x: auto;
}
body {
--sls-col-transparent: transparent;
--sls-col-warn: rgba(var(--background-modifier-error-rgb), 0.1);
--sls-col-warn-stripe1: var(--sls-col-transparent);
--sls-col-warn-stripe2: var(--sls-col-warn);
}
.sls-setting-menu-buttons {
border: 1px solid var(--sls-col-warn);
padding: 2px;
margin: 1px;
border-radius: 4px;
background-image: linear-gradient(-45deg,
var(--sls-col-warn-stripe1) 25%, var(--sls-col-warn-stripe2) 25%, var(--sls-col-warn-stripe2) 50%,
var(--sls-col-warn-stripe1) 50%, var(--sls-col-warn-stripe1) 75%, var(--sls-col-warn-stripe2) 75%, var(--sls-col-warn-stripe2));
background-size: 30px 30px;
display: flex;
flex-direction: row;
justify-content: flex-end;
padding: 0.5em 0.25em;
justify-content: center;
align-items: center;
/* transition: background-position 1s; */
animation: sls-scroll-warn 1s linear 0s infinite;
}
@keyframes sls-scroll-warn {
0% {
background-position: 0 0;
}
100% {
background-position: 30px 0;
}
}
.sls-setting-menu-buttons label {
margin-right: auto;
flex-grow: 1;
color: var(--text-warning);
}
.sls-setting-label {
flex-grow: 1;
display: inline-flex;
justify-content: center;
}
.setting-collapsed {
display: none;
}
.sls-plugins-tbl-buttons {
text-align: right;
}
.sls-plugins-tbl-buttons button {
flex-grow: 0;
padding: 6px 10px;
}
.sls-plugins-tbl-device-head {
background-color: var(--background-secondary-alt);
color: var(--text-accent);
}
.op-flex {
display: flex;
}
.op-flex input {
display: inline-flex;
flex-grow: 1;
margin-bottom: 8px;
}
.op-info {
display: inline-flex;
flex-grow: 1;
border-bottom: 1px solid var(--background-modifier-border);
width: 100%;
margin-bottom: 4px;
padding-bottom: 4px;
}
.history-added {
color: var(--text-on-accent);
background-color: var(--text-accent);
}
.history-normal {
color: var(--text-normal);
}
.history-deleted {
color: var(--text-on-accent);
background-color: var(--text-muted);
text-decoration: line-through;
}
.ob-btn-config-fix label {
margin-right: 40px;
}
.ob-btn-config-info {
border: 1px solid salmon;
padding: 2px;
margin: 1px;
border-radius: 4px;
}
.ob-btn-config-head {
padding: 2px;
margin: 1px;
border-radius: 4px;
}
.isWizard .wizardHidden {
display: none;
}
.sls-setting:not(.isWizard) .wizardOnly {
display: none;
}
.sls-item-dirty::before {
content: "✏";
}
.sls-item-dirty-help::after {
content: " ❓";
}
.sls-item-invalid-value {
background-color: rgba(var(--background-modifier-error-rgb), 0.3) !important;
}
.sls-setting-disabled input[type=text],
.sls-setting-disabled input[type=number],
.sls-setting-disabled input[type=password] {
filter: brightness(80%);
color: var(--text-muted);
}
.sls-setting-hidden {
display: none;
}
.sls-setting-obsolete {
background-image: linear-gradient(-45deg,
var(--sls-col-warn-stripe1) 25%, var(--sls-col-warn-stripe2) 25%, var(--sls-col-warn-stripe2) 50%,
var(--sls-col-warn-stripe1) 50%, var(--sls-col-warn-stripe1) 75%, var(--sls-col-warn-stripe2) 75%, var(--sls-col-warn-stripe2));
background-image: linear-gradient(-45deg,
transparent 25%, rgba(var(--background-secondary), 0.1) 25%, rgba(var(--background-secondary), 0.1) 50%, transparent 50%, transparent 75%, rgba(var(--background-secondary), 0.1) 75%, rgba(var(--background-secondary), 0.1));
background-size: 60px 60px;
}
.password-input>.setting-item-control>input {
-webkit-text-security: disc;
}
span.ls-mark-cr::after {
user-select: none;
content: "↲";
color: var(--text-muted);
font-size: 0.8em;
}
.deleted span.ls-mark-cr::after {
color: var(--text-on-accent);
}
.ls-imgdiff-wrap {
display: flex;
justify-content: center;
align-items: center;
}
.ls-imgdiff-wrap .overlay {
position: relative;
}
.ls-imgdiff-wrap .overlay .img-base {
position: relative;
top: 0;
left: 0;
}
.ls-imgdiff-wrap .overlay .img-overlay {
-webkit-filter: invert(100%) opacity(50%);
filter: invert(100%) opacity(50%);
position: absolute;
top: 0;
left: 0;
animation: ls-blink-diff 0.5s cubic-bezier(0.4, 0, 1, 1) infinite alternate;
}
@keyframes ls-blink-diff {
0% {
opacity: 0;
}
50% {
opacity: 0;
}
100% {
opacity: 1;
}
}
.livesync-status {
user-select: none;
pointer-events: none;
height: auto;
min-height: 1em;
position: absolute;
background-color: transparent;
width: 100%;
padding: 10px;
padding-right: 16px;
top: var(--header-height);
z-index: calc(var(--layer-cover) + 1);
font-variant-numeric: tabular-nums;
tab-size: 4;
text-align: right;
white-space: pre-wrap;
display: inline-block;
color: var(--text-normal);
font-size: 80%;
}
div.workspace-leaf-content[data-type=bases] .livesync-status {
top: calc(var(--bases-header-height) + var(--header-height));
padding: 5px;
padding-right: 18px;
}
.is-mobile div.workspace-leaf-content[data-type=bases] .livesync-status {
top: calc(var(--bases-header-height) + var(--view-header-height));
padding: 6px;
padding-right: 18px;
}
.livesync-status div {
opacity: 0.6;
-webkit-filter: grayscale(100%);
filter: grayscale(100%);
}
.livesync-status .livesync-status-loghistory {
text-align: left;
opacity: 0.4;
}
.livesync-status div.livesync-status-messagearea:empty {
display: none;
}
.livesync-status div.livesync-status-messagearea:not(:empty) {
opacity: 0.6;
color: var(--text-on-accent);
border: 1px solid var(--background-modifier-error);
background-color: rgba(var(--background-modifier-error-rgb), 0.2);
-webkit-filter: unset;
filter: unset;
width: fit-content;
margin-left: auto;
}
.menu-setting-poweruser-disabled .sls-setting-poweruser {
display: none;
}
.menu-setting-advanced-disabled .sls-setting-advanced {
display: none;
}
.menu-setting-edgecase-disabled .sls-setting-edgecase {
display: none;
}
.sls-setting-panel-title {
position: sticky;
font-size: medium;
top: 2.5em;
background-color: var(--background-secondary-alt);
border-radius: 10px;
padding: 0.5em 1.0em;
}
.active-pane .sls-setting-panel-title {
border: 1px solid var(--interactive-accent);
}
.sls-dialogue-note-wrapper {
display: flex;
justify-content: flex-end;
align-items: center;
}
.sls-dialogue-note-countdown {
font-size: 0.8em;
}
.sls-qr {
display: flex;
justify-content: center;
align-items: center;
max-width: max-content;
}
.sls-keypair pre {
max-width: 100%;
overflow-x: auto;
white-space: pre-wrap;
word-break: break-all;
}