vault backup: 2026-08-02 09:03:32
This commit is contained in:
+162
-59
@@ -10813,6 +10813,9 @@ function notePathBase(settings) {
|
||||
function imagePathBase(settings) {
|
||||
return `${contentBaseDir(settings)}${IMAGE_PATH_BASE}`;
|
||||
}
|
||||
function imageHashKey(assetPath) {
|
||||
return assetPath.replace(/^\/img\/user\//, "");
|
||||
}
|
||||
function sitePath(settings, sub) {
|
||||
return `${contentBaseDir(settings)}src/site${sub}`;
|
||||
}
|
||||
@@ -12781,7 +12784,10 @@ function tryDVEvaluate(query, file, dvApi) {
|
||||
function tryEval(query) {
|
||||
let result = "";
|
||||
try {
|
||||
result = (0, eval)("const dv = DataviewAPI;" + query);
|
||||
const evaluateQuery = new Function("dv", `return ${query}`);
|
||||
result = evaluateQuery(
|
||||
window.DataviewAPI
|
||||
);
|
||||
} catch (e) {
|
||||
import_js_logger5.default.warn("eval did not yield any result", e);
|
||||
}
|
||||
@@ -12810,6 +12816,73 @@ function delay(milliseconds) {
|
||||
// src/compiler/CanvasCompiler.ts
|
||||
var import_obsidian4 = require("obsidian");
|
||||
|
||||
// src/compiler/frontmatterLinks.ts
|
||||
var FRONTMATTER_IMAGE_EXTENSIONS = /\.(png|jpg|jpeg|gif|webp|svg)$/i;
|
||||
function getFrontmatterImageLinkpath(value) {
|
||||
if (typeof value !== "string") {
|
||||
return null;
|
||||
}
|
||||
let linkpath = value.trim();
|
||||
const wikilink = linkpath.match(/^!?\[\[([^\]]+)\]\]$/);
|
||||
if (wikilink) {
|
||||
linkpath = wikilink[1].split("|")[0].split("#")[0].trim();
|
||||
}
|
||||
if (linkpath.startsWith("http")) {
|
||||
return null;
|
||||
}
|
||||
if (!FRONTMATTER_IMAGE_EXTENSIONS.test(linkpath)) {
|
||||
return null;
|
||||
}
|
||||
return linkpath;
|
||||
}
|
||||
function resolveFrontmatterImageValue(value, resolveLinkpath) {
|
||||
const linkpath = getFrontmatterImageLinkpath(value);
|
||||
if (!linkpath) {
|
||||
return value;
|
||||
}
|
||||
const resolvedPath = resolveLinkpath(linkpath);
|
||||
if (!resolvedPath || resolvedPath === linkpath) {
|
||||
return value;
|
||||
}
|
||||
const trimmed = value.trim();
|
||||
const wikilink = trimmed.match(/^(!?)\[\[([^\]]+)\]\]$/);
|
||||
if (wikilink) {
|
||||
const suffixStart = wikilink[2].search(/[|#]/);
|
||||
const suffix = suffixStart === -1 ? "" : wikilink[2].slice(suffixStart);
|
||||
return `${wikilink[1]}[[${resolvedPath}${suffix}]]`;
|
||||
}
|
||||
return resolvedPath;
|
||||
}
|
||||
function resolveFrontmatterValue(value, resolveLinkpath) {
|
||||
if (Array.isArray(value)) {
|
||||
return value.map(
|
||||
(item) => resolveFrontmatterValue(item, resolveLinkpath)
|
||||
);
|
||||
}
|
||||
if (typeof value !== "string") {
|
||||
return value;
|
||||
}
|
||||
if (getFrontmatterImageLinkpath(value)) {
|
||||
return resolveFrontmatterImageValue(value, resolveLinkpath);
|
||||
}
|
||||
const wikilink = value.trim().match(/^(!?)\[\[([^\]]+)\]\]$/);
|
||||
if (!wikilink) {
|
||||
return value;
|
||||
}
|
||||
const suffixStart = wikilink[2].search(/[|#]/);
|
||||
const target = (suffixStart === -1 ? wikilink[2] : wikilink[2].slice(0, suffixStart)).trim();
|
||||
const suffix = suffixStart === -1 ? "" : wikilink[2].slice(suffixStart);
|
||||
const resolvedPath = resolveLinkpath(target);
|
||||
if (!resolvedPath || !resolvedPath.endsWith(".md")) {
|
||||
return value;
|
||||
}
|
||||
const noteLinkpath = resolvedPath.slice(0, -".md".length);
|
||||
if (noteLinkpath === target) {
|
||||
return value;
|
||||
}
|
||||
return `${wikilink[1]}[[${noteLinkpath}${suffix}]]`;
|
||||
}
|
||||
|
||||
// src/compiler/FrontmatterCompiler.ts
|
||||
var FrontmatterCompiler = class {
|
||||
constructor(settings) {
|
||||
@@ -12863,7 +12936,10 @@ var FrontmatterCompiler = class {
|
||||
publishedFrontMatter
|
||||
);
|
||||
publishedFrontMatter = this.addTimestampsFrontmatter(file)(publishedFrontMatter);
|
||||
const userProperties = this.extractUserProperties(fileFrontMatter);
|
||||
const userProperties = this.resolveLinkProperties(
|
||||
this.extractUserProperties(fileFrontMatter),
|
||||
file
|
||||
);
|
||||
const fullFrontMatter = (publishedFrontMatter == null ? void 0 : publishedFrontMatter.dgPassFrontmatter) ? __spreadProps(__spreadValues(__spreadValues({}, fileFrontMatter), publishedFrontMatter), {
|
||||
"dg-note-properties": userProperties
|
||||
}) : __spreadProps(__spreadValues({}, publishedFrontMatter), { "dg-note-properties": userProperties });
|
||||
@@ -12977,10 +13053,27 @@ ${frontMatterString}
|
||||
return publishedFrontMatter;
|
||||
}
|
||||
/**
|
||||
* Extracts all user-defined frontmatter properties, excluding
|
||||
* Obsidian internal fields and dg-* plugin fields that are already
|
||||
* handled by the compilation pipeline.
|
||||
* Rewrite link-shaped property values (images and note wikilinks,
|
||||
* including arrays of them) to full vault paths via the vault's own
|
||||
* link resolution, so the published values match where assets are
|
||||
* uploaded and which notes they target.
|
||||
*/
|
||||
resolveLinkProperties(userProps, file) {
|
||||
const resolved = {};
|
||||
for (const [key2, value] of Object.entries(userProps)) {
|
||||
resolved[key2] = resolveFrontmatterValue(
|
||||
value,
|
||||
(linkpath) => {
|
||||
var _a6, _b3;
|
||||
return (_b3 = (_a6 = file.metadataCache.getFirstLinkpathDest(
|
||||
linkpath,
|
||||
file.getPath()
|
||||
)) == null ? void 0 : _a6.path) != null ? _b3 : null;
|
||||
}
|
||||
);
|
||||
}
|
||||
return resolved;
|
||||
}
|
||||
extractUserProperties(frontmatter) {
|
||||
if (!frontmatter) return {};
|
||||
const skipKeys = /* @__PURE__ */ new Set([
|
||||
@@ -19582,24 +19675,6 @@ function createBaseCodeBlock(baseFileText, transclusionFileName) {
|
||||
const [baseFileName, selectedViewName] = transclusionFileName.split("#");
|
||||
return "\n```base\n" + selectBaseView(baseFileText, selectedViewName == null ? void 0 : selectedViewName.trim(), baseFileName) + "\n```\n";
|
||||
}
|
||||
var FRONTMATTER_IMAGE_EXTENSIONS = /\.(png|jpg|jpeg|gif|webp|svg)$/i;
|
||||
function getFrontmatterImageLinkpath(value) {
|
||||
if (typeof value !== "string") {
|
||||
return null;
|
||||
}
|
||||
let linkpath = value.trim();
|
||||
const wikilink = linkpath.match(/^!?\[\[([^\]]+)\]\]$/);
|
||||
if (wikilink) {
|
||||
linkpath = wikilink[1].split("|")[0].split("#")[0].trim();
|
||||
}
|
||||
if (linkpath.startsWith("http")) {
|
||||
return null;
|
||||
}
|
||||
if (!FRONTMATTER_IMAGE_EXTENSIONS.test(linkpath)) {
|
||||
return null;
|
||||
}
|
||||
return linkpath;
|
||||
}
|
||||
var GardenPageCompiler = class {
|
||||
constructor(vault, settings, metadataCache, getFilesMarkedForPublishing) {
|
||||
this.resolveLinkedFile = (linkPath, sourcePath) => {
|
||||
@@ -20867,8 +20942,7 @@ var Publisher = class {
|
||||
uploadAssets(_0) {
|
||||
return __async(this, arguments, function* (assets, remoteImageHashes = {}) {
|
||||
for (const image of assets.images) {
|
||||
const hashKey = image.path.replace("/img/user/", "");
|
||||
const remoteHash = remoteImageHashes[hashKey];
|
||||
const remoteHash = remoteImageHashes[imageHashKey(image.path)];
|
||||
if (remoteHash && image.localHash && remoteHash === image.localHash) {
|
||||
import_js_logger7.default.debug(`Skipping unchanged image: ${image.path}`);
|
||||
continue;
|
||||
@@ -20974,12 +21048,15 @@ var PublishStatusManager = class {
|
||||
const marked = yield this.publisher.getFilesMarkedForPublishing();
|
||||
for (const file of marked.notes) {
|
||||
const compiledFile = yield file.compile();
|
||||
const [content, _] = compiledFile.getCompiledFile();
|
||||
const [content, assets] = compiledFile.getCompiledFile();
|
||||
const localHash = generateBlobHash(content);
|
||||
const remoteHash = remoteNoteHashes[file.getPath()];
|
||||
const hasMissingRemoteImage = assets.images.some(
|
||||
(image) => !remoteImageHashes[imageHashKey(image.path)]
|
||||
);
|
||||
if (!remoteHash) {
|
||||
unpublishedNotes.push(compiledFile);
|
||||
} else if (remoteHash === localHash) {
|
||||
} else if (remoteHash === localHash && !hasMissingRemoteImage) {
|
||||
compiledFile.setRemoteHash(remoteHash);
|
||||
publishedNotes.push(compiledFile);
|
||||
} else {
|
||||
@@ -25262,7 +25339,7 @@ var flags = EFFECT_TRANSPARENT | EFFECT_PRESERVED;
|
||||
function boundary(node, props, children, transform_error) {
|
||||
new Boundary(node, props, children, transform_error);
|
||||
}
|
||||
var _anchor, _hydrate_open, _props, _children, _effect, _main_effect, _pending_effect, _failed_effect, _offscreen_fragment, _local_pending_count, _pending_count, _pending_count_update_queued, _dirty_effects, _maybe_dirty_effects, _effect_pending, _effect_pending_subscriber, _Boundary_instances, hydrate_resolved_content_fn, hydrate_failed_content_fn, hydrate_pending_content_fn, render_fn, resolve_fn, run_fn, update_pending_count_fn, handle_error_fn;
|
||||
var _anchor, _hydrate_open, _props, _children, _effect, _main_effect, _pending_effect, _failed_effect, _offscreen_fragment, _local_pending_count, _pending_count, _pending_count_update_queued, _dirty_effects, _maybe_dirty_effects, _effect_pending, _effect_pending_subscriber, _Boundary_instances, hydrate_resolved_content_fn, hydrate_failed_content_fn, create_reset_fn, hydrate_pending_content_fn, render_fn, resolve_fn, run_fn, update_pending_count_fn, handle_error_fn;
|
||||
var Boundary = class {
|
||||
/**
|
||||
* @param {TemplateNode} node
|
||||
@@ -25453,16 +25530,56 @@ hydrate_resolved_content_fn = function() {
|
||||
*/
|
||||
hydrate_failed_content_fn = function(error) {
|
||||
const failed = __privateGet(this, _props).failed;
|
||||
const { reset: reset2, invoke_onerror } = __privateMethod(this, _Boundary_instances, create_reset_fn).call(this, error);
|
||||
queue_micro_task(invoke_onerror);
|
||||
if (!failed) return;
|
||||
__privateSet(this, _failed_effect, branch(() => {
|
||||
failed(
|
||||
__privateGet(this, _anchor),
|
||||
() => error,
|
||||
() => () => {
|
||||
}
|
||||
() => reset2
|
||||
);
|
||||
}));
|
||||
};
|
||||
/**
|
||||
* Creates the `reset` function for a failed boundary, along with a function
|
||||
* that invokes `onerror` with it (if provided)
|
||||
* @param {unknown} error
|
||||
* @returns {{ reset: () => void, invoke_onerror: () => void }}
|
||||
*/
|
||||
create_reset_fn = function(error) {
|
||||
var did_reset = false;
|
||||
var calling_on_error = false;
|
||||
const reset2 = () => {
|
||||
if (did_reset) {
|
||||
svelte_boundary_reset_noop();
|
||||
return;
|
||||
}
|
||||
did_reset = true;
|
||||
if (calling_on_error) {
|
||||
svelte_boundary_reset_onerror();
|
||||
}
|
||||
if (__privateGet(this, _failed_effect) !== null) {
|
||||
pause_effect(__privateGet(this, _failed_effect), () => {
|
||||
__privateSet(this, _failed_effect, null);
|
||||
});
|
||||
}
|
||||
__privateMethod(this, _Boundary_instances, run_fn).call(this, () => {
|
||||
__privateMethod(this, _Boundary_instances, render_fn).call(this);
|
||||
});
|
||||
};
|
||||
const invoke_onerror = () => {
|
||||
var _a6, _b3;
|
||||
try {
|
||||
calling_on_error = true;
|
||||
(_b3 = (_a6 = __privateGet(this, _props)).onerror) == null ? void 0 : _b3.call(_a6, error, reset2);
|
||||
calling_on_error = false;
|
||||
} catch (err) {
|
||||
invoke_error_boundary(err, __privateGet(this, _effect) && __privateGet(this, _effect).parent);
|
||||
}
|
||||
};
|
||||
return { reset: reset2, invoke_onerror };
|
||||
};
|
||||
hydrate_pending_content_fn = function() {
|
||||
const pending2 = __privateGet(this, _props).pending;
|
||||
if (!pending2) return;
|
||||
@@ -25602,36 +25719,10 @@ handle_error_fn = function(error) {
|
||||
next();
|
||||
set_hydrate_node(skip_nodes());
|
||||
}
|
||||
var onerror = __privateGet(this, _props).onerror;
|
||||
let failed = __privateGet(this, _props).failed;
|
||||
var did_reset = false;
|
||||
var calling_on_error = false;
|
||||
const reset2 = () => {
|
||||
if (did_reset) {
|
||||
svelte_boundary_reset_noop();
|
||||
return;
|
||||
}
|
||||
did_reset = true;
|
||||
if (calling_on_error) {
|
||||
svelte_boundary_reset_onerror();
|
||||
}
|
||||
if (__privateGet(this, _failed_effect) !== null) {
|
||||
pause_effect(__privateGet(this, _failed_effect), () => {
|
||||
__privateSet(this, _failed_effect, null);
|
||||
});
|
||||
}
|
||||
__privateMethod(this, _Boundary_instances, run_fn).call(this, () => {
|
||||
__privateMethod(this, _Boundary_instances, render_fn).call(this);
|
||||
});
|
||||
};
|
||||
const handle_error_result = (transformed_error) => {
|
||||
try {
|
||||
calling_on_error = true;
|
||||
onerror == null ? void 0 : onerror(transformed_error, reset2);
|
||||
calling_on_error = false;
|
||||
} catch (error2) {
|
||||
invoke_error_boundary(error2, __privateGet(this, _effect) && __privateGet(this, _effect).parent);
|
||||
}
|
||||
const { reset: reset2, invoke_onerror } = __privateMethod(this, _Boundary_instances, create_reset_fn).call(this, transformed_error);
|
||||
invoke_onerror();
|
||||
if (failed) {
|
||||
__privateSet(this, _failed_effect, __privateMethod(this, _Boundary_instances, run_fn).call(this, () => {
|
||||
try {
|
||||
@@ -32721,7 +32812,8 @@ var TextInputSuggest = class {
|
||||
const suggestions = this.getSuggestions(inputStr);
|
||||
if (suggestions.length > 0) {
|
||||
this.suggest.setSuggestions(suggestions);
|
||||
this.open(this.app.dom.appContainerEl, this.inputEl);
|
||||
const appContainerEl = this.app.dom.appContainerEl;
|
||||
this.open(appContainerEl, this.inputEl);
|
||||
}
|
||||
}
|
||||
open(container, inputEl) {
|
||||
@@ -36848,6 +36940,16 @@ var SettingView = class {
|
||||
markAsChanged();
|
||||
});
|
||||
});
|
||||
new import_obsidian15.Setting(noteSettingsModal.contentEl).setName("Show Graph Depth Control (dg-show-graph-depth-control)").setDesc("When turned on, graph will show a depth slider.").addToggle((t) => {
|
||||
toggles["dgShowGraphDepthControl"] = t;
|
||||
t.setValue(
|
||||
this.settings.defaultNoteSettings.dgShowGraphDepthControl
|
||||
);
|
||||
t.onChange((val) => {
|
||||
this.settings.defaultNoteSettings.dgShowGraphDepthControl = val;
|
||||
markAsChanged();
|
||||
});
|
||||
});
|
||||
new import_obsidian15.Setting(noteSettingsModal.contentEl).setName("Show backlinks for notes (dg-show-backlinks)").setDesc(
|
||||
"When turned on, notes will show backlinks in a sidebar on desktop and at the bottom of the page on mobile."
|
||||
).addToggle((t) => {
|
||||
@@ -40216,6 +40318,7 @@ var DEFAULT_SETTINGS = {
|
||||
dgPassFrontmatter: false,
|
||||
dgShowBacklinks: false,
|
||||
dgShowLocalGraph: false,
|
||||
dgShowGraphDepthControl: false,
|
||||
dgShowInlineTitle: false,
|
||||
dgShowFileTree: false,
|
||||
dgEnableSearch: false,
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"id": "digitalgarden",
|
||||
"name": "Digital Garden",
|
||||
"version": "2.80.3",
|
||||
"version": "2.83.1",
|
||||
"minAppVersion": "1.10.0",
|
||||
"description": "Publish your notes to the web for others to enjoy. For free.",
|
||||
"author": "Ole Eskild Steensen",
|
||||
|
||||
+23
-23
@@ -6,29 +6,29 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
|
||||
|
||||
var require$$0__default = /*#__PURE__*/_interopDefaultLegacy(require$$0$1);
|
||||
|
||||
/******************************************************************************
|
||||
Copyright (c) Microsoft Corporation.
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any
|
||||
purpose with or without fee is hereby granted.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
PERFORMANCE OF THIS SOFTWARE.
|
||||
***************************************************************************** */
|
||||
|
||||
function __awaiter(thisArg, _arguments, P, generator) {
|
||||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
||||
return new (P || (P = Promise))(function (resolve, reject) {
|
||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||||
});
|
||||
/******************************************************************************
|
||||
Copyright (c) Microsoft Corporation.
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any
|
||||
purpose with or without fee is hereby granted.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
PERFORMANCE OF THIS SOFTWARE.
|
||||
***************************************************************************** */
|
||||
|
||||
function __awaiter(thisArg, _arguments, P, generator) {
|
||||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
||||
return new (P || (P = Promise))(function (resolve, reject) {
|
||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||||
});
|
||||
}
|
||||
|
||||
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
||||
|
||||
+10
-10
@@ -1,10 +1,10 @@
|
||||
{
|
||||
"id": "nldates-obsidian",
|
||||
"name": "Natural Language Dates",
|
||||
"description": "Create date-links based on natural language",
|
||||
"version": "0.6.2",
|
||||
"author": "Argentina Ortega Sainz",
|
||||
"authorUrl": "https://argentinaos.com/",
|
||||
"isDesktopOnly": false,
|
||||
"minAppVersion": "1.0.0"
|
||||
}
|
||||
{
|
||||
"id": "nldates-obsidian",
|
||||
"name": "Natural Language Dates",
|
||||
"description": "Create date-links based on natural language",
|
||||
"version": "0.6.4",
|
||||
"author": "Obsidian Community (Formerly Argentina Ortega Sainz)",
|
||||
"authorUrl": "https://github.com/obsidian-community/nldates",
|
||||
"isDesktopOnly": false,
|
||||
"minAppVersion": "1.0.0"
|
||||
}
|
||||
|
||||
+2
-2
File diff suppressed because one or more lines are too long
+1
-1
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"id": "obsidian-livesync",
|
||||
"name": "Self-hosted LiveSync",
|
||||
"version": "0.25.83",
|
||||
"version": "1.0.2",
|
||||
"minAppVersion": "1.7.2",
|
||||
"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",
|
||||
|
||||
+264
-23
@@ -12,13 +12,26 @@
|
||||
background-color: var(--text-muted);
|
||||
}
|
||||
|
||||
.vpk-action-dialog__message {
|
||||
user-select: text;
|
||||
-webkit-user-select: text;
|
||||
}
|
||||
|
||||
.conflict-dev-name {
|
||||
display: inline-block;
|
||||
min-width: 5em;
|
||||
}
|
||||
|
||||
.conflict-action-container {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: var(--size-4-2);
|
||||
margin-top: var(--size-4-2);
|
||||
}
|
||||
|
||||
.conflict-action-button {
|
||||
margin-right: 4px;
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.op-scrollable {
|
||||
@@ -138,8 +151,8 @@ div.sls-setting-menu-btn {
|
||||
/* width: 100%; */
|
||||
}
|
||||
|
||||
.sls-setting-tab:hover~div.sls-setting-menu-btn,
|
||||
.sls-setting-label.selected .sls-setting-tab:checked~div.sls-setting-menu-btn {
|
||||
.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);
|
||||
}
|
||||
@@ -174,9 +187,16 @@ body {
|
||||
/* 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-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;
|
||||
@@ -196,7 +216,6 @@ body {
|
||||
100% {
|
||||
background-position: 30px 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.sls-setting-menu-buttons label {
|
||||
@@ -301,33 +320,95 @@ body {
|
||||
background-color: rgba(var(--background-modifier-error-rgb), 0.3);
|
||||
}
|
||||
|
||||
.sls-setting-disabled input[type=text],
|
||||
.sls-setting-disabled input[type=number],
|
||||
.sls-setting-disabled input[type=password] {
|
||||
.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-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 {
|
||||
.password-input > .setting-item-control > input {
|
||||
-webkit-text-security: disc;
|
||||
}
|
||||
|
||||
.sls-onboarding-invitation-action {
|
||||
display: inline-flex;
|
||||
min-width: 44px;
|
||||
min-height: 44px;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.sls-review-harness {
|
||||
box-sizing: border-box;
|
||||
max-width: 100%;
|
||||
overflow-x: clip;
|
||||
padding-bottom: max(1rem, env(safe-area-inset-bottom));
|
||||
}
|
||||
|
||||
.sls-review-harness .setting-item,
|
||||
.sls-review-harness .setting-item-control {
|
||||
flex-wrap: wrap;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.sls-review-harness .setting-item-info {
|
||||
min-width: min(16rem, 100%);
|
||||
}
|
||||
|
||||
.sls-review-harness .setting-item-control {
|
||||
gap: 0.5rem;
|
||||
}
|
||||
|
||||
.sls-review-harness button {
|
||||
min-height: 44px;
|
||||
max-width: 100%;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
.sls-review-harness__result,
|
||||
.sls-review-harness__warning,
|
||||
.sls-review-harness__privacy,
|
||||
.sls-review-harness__error,
|
||||
.sls-review-harness__resumed {
|
||||
max-width: 100%;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
|
||||
.sls-review-harness__result {
|
||||
margin: 0 0 1rem;
|
||||
}
|
||||
|
||||
.sls-review-harness__warning,
|
||||
.sls-review-harness__error {
|
||||
color: var(--text-error);
|
||||
}
|
||||
|
||||
.sls-review-harness__resumed {
|
||||
color: var(--text-success);
|
||||
}
|
||||
|
||||
span.ls-mark-cr::after {
|
||||
user-select: none;
|
||||
content: "↲";
|
||||
@@ -378,7 +459,6 @@ span.ls-mark-cr::after {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.livesync-status {
|
||||
user-select: none;
|
||||
pointer-events: none;
|
||||
@@ -401,13 +481,13 @@ span.ls-mark-cr::after {
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
div.workspace-leaf-content[data-type=bases] .livesync-status {
|
||||
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 {
|
||||
.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;
|
||||
@@ -422,7 +502,6 @@ div.workspace-leaf-content[data-type=bases] .livesync-status {
|
||||
.livesync-status .livesync-status-loghistory {
|
||||
text-align: left;
|
||||
opacity: 0.4;
|
||||
|
||||
}
|
||||
|
||||
.livesync-status div.livesync-status-messagearea:empty {
|
||||
@@ -440,7 +519,6 @@ div.workspace-leaf-content[data-type=bases] .livesync-status {
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
|
||||
.menu-setting-poweruser-disabled .sls-setting-poweruser {
|
||||
display: none;
|
||||
}
|
||||
@@ -459,7 +537,7 @@ div.workspace-leaf-content[data-type=bases] .livesync-status {
|
||||
top: 2.5em;
|
||||
background-color: var(--background-secondary-alt);
|
||||
border-radius: 10px;
|
||||
padding: 0.5em 1.0em;
|
||||
padding: 0.5em 1em;
|
||||
}
|
||||
|
||||
.active-pane .sls-setting-panel-title {
|
||||
@@ -476,6 +554,34 @@ div.workspace-leaf-content[data-type=bases] .livesync-status {
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
body.is-mobile .livesync-message-box-container {
|
||||
box-sizing: border-box;
|
||||
padding-top: var(--safe-area-inset-top, env(safe-area-inset-top, 0px));
|
||||
padding-right: var(--safe-area-inset-right, env(safe-area-inset-right, 0px));
|
||||
padding-bottom: var(--safe-area-inset-bottom, env(safe-area-inset-bottom, 0px));
|
||||
padding-left: var(--safe-area-inset-left, env(safe-area-inset-left, 0px));
|
||||
}
|
||||
|
||||
body.is-mobile .livesync-message-box-container .modal {
|
||||
max-height: 100%;
|
||||
}
|
||||
|
||||
body.is-mobile .livesync-message-box-container button {
|
||||
height: auto;
|
||||
min-height: var(--input-height);
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
body.is-mobile .livesync-compatibility-review-notice {
|
||||
box-sizing: border-box;
|
||||
margin-right: calc(64px + var(--safe-area-inset-right, env(safe-area-inset-right, 0px)));
|
||||
min-width: 0;
|
||||
width: calc(
|
||||
100vw - 88px - var(--safe-area-inset-left, env(safe-area-inset-left, 0px)) -
|
||||
var(--safe-area-inset-right, env(safe-area-inset-right, 0px))
|
||||
);
|
||||
}
|
||||
|
||||
.sls-qr {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
@@ -488,7 +594,98 @@ div.workspace-leaf-content[data-type=bases] .livesync-status {
|
||||
overflow-x: auto;
|
||||
white-space: pre-wrap;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.sls-repair-results {
|
||||
display: grid;
|
||||
gap: var(--size-4-3);
|
||||
}
|
||||
|
||||
.sls-repair-result {
|
||||
padding: var(--size-4-3);
|
||||
border: 1px solid var(--background-modifier-border);
|
||||
border-radius: var(--radius-m);
|
||||
background: var(--background-secondary);
|
||||
}
|
||||
|
||||
.sls-repair-header {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
justify-content: space-between;
|
||||
gap: var(--size-4-2);
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.sls-repair-header > :first-child {
|
||||
flex: 1 1 auto;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.sls-repair-header h6 {
|
||||
margin: 0;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
|
||||
.sls-repair-status {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: var(--size-4-2);
|
||||
margin-top: var(--size-4-1);
|
||||
font-size: var(--font-ui-smaller);
|
||||
}
|
||||
|
||||
.sls-repair-status-ok {
|
||||
color: var(--text-success);
|
||||
}
|
||||
|
||||
.sls-repair-status-warning {
|
||||
color: var(--text-warning);
|
||||
}
|
||||
|
||||
.sls-repair-metric {
|
||||
margin-top: var(--size-4-1);
|
||||
font-size: var(--font-ui-smaller);
|
||||
line-height: var(--line-height-tight);
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
|
||||
.sls-repair-action-menu {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
min-width: var(--clickable-icon-size);
|
||||
width: var(--clickable-icon-size);
|
||||
height: var(--clickable-icon-size);
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.sls-repair-action-menu .svg-icon {
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
}
|
||||
|
||||
.sls-repair-revision {
|
||||
margin-top: var(--size-4-2);
|
||||
padding: var(--size-4-2);
|
||||
border-left: 3px solid var(--background-modifier-border);
|
||||
background: var(--background-primary-alt);
|
||||
}
|
||||
|
||||
.sls-repair-revision-title {
|
||||
font-weight: var(--font-semibold);
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
|
||||
.sls-repair-revision code {
|
||||
display: block;
|
||||
margin-top: var(--size-4-1);
|
||||
overflow-wrap: anywhere;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
.sls-repair-ancestor-warning {
|
||||
margin-top: var(--size-4-2);
|
||||
color: var(--text-warning);
|
||||
}
|
||||
|
||||
/* Diff navigation */
|
||||
@@ -551,6 +748,51 @@ div.workspace-leaf-content[data-type=bases] .livesync-status {
|
||||
color: var(--text-muted);
|
||||
}
|
||||
|
||||
.history-search-row button:disabled {
|
||||
opacity: 0.4;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
.history-rev-nav-row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.history-rev-nav-row input[type="range"] {
|
||||
flex-grow: 1;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.history-rev-nav-btn {
|
||||
flex-shrink: 0;
|
||||
padding: 2px 10px;
|
||||
font-size: 0.9em;
|
||||
cursor: pointer;
|
||||
border: 1px solid var(--background-modifier-border);
|
||||
border-radius: 4px;
|
||||
background-color: var(--background-secondary);
|
||||
color: var(--text-normal);
|
||||
}
|
||||
|
||||
.history-rev-nav-btn:hover:not(:disabled) {
|
||||
background-color: var(--background-modifier-hover);
|
||||
}
|
||||
|
||||
.history-rev-nav-btn:disabled {
|
||||
opacity: 0.4;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
.history-rev-indicator {
|
||||
flex-shrink: 0;
|
||||
font-size: 0.85em;
|
||||
color: var(--text-muted);
|
||||
min-width: 4.5em;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.history-diff-options-row {
|
||||
justify-content: space-between;
|
||||
}
|
||||
@@ -570,4 +812,3 @@ div.workspace-leaf-content[data-type=bases] .livesync-status {
|
||||
outline-offset: 1px;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
|
||||
+89
-89
@@ -1000,55 +1000,55 @@
|
||||
"id": 38835133,
|
||||
"title": "硬/软件评测",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:14.880Z"
|
||||
"lastSyncDate": "2026-08-01T10:03:03.494Z"
|
||||
},
|
||||
"38835134": {
|
||||
"id": 38835134,
|
||||
"title": "硬/软件评测/硬件评测",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:15.710Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:04.285Z",
|
||||
"parentId": 38835133
|
||||
},
|
||||
"38835135": {
|
||||
"id": 38835135,
|
||||
"title": "硬/软件评测/20230709",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:16.598Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:05.346Z",
|
||||
"parentId": 38835133
|
||||
},
|
||||
"38835136": {
|
||||
"id": 38835136,
|
||||
"title": "硬/软件评测/opencore",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:17.360Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:06.247Z",
|
||||
"parentId": 38835133
|
||||
},
|
||||
"38835137": {
|
||||
"id": 38835137,
|
||||
"title": "硬/软件评测/20230826",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:18.166Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:07.019Z",
|
||||
"parentId": 38835133
|
||||
},
|
||||
"38835138": {
|
||||
"id": 38835138,
|
||||
"title": "硬/软件评测/elasticsearch",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:19.424Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:07.859Z",
|
||||
"parentId": 38835133
|
||||
},
|
||||
"38835140": {
|
||||
"id": 38835140,
|
||||
"title": "硬/软件评测/记账软件",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:20.252Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:08.630Z",
|
||||
"parentId": 38835133
|
||||
},
|
||||
"38835141": {
|
||||
"id": 38835141,
|
||||
"title": "硬/软件评测/图片工具",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:20.973Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:09.900Z",
|
||||
"parentId": 38835133
|
||||
},
|
||||
"38835142": {
|
||||
@@ -1143,7 +1143,7 @@
|
||||
"id": 38835159,
|
||||
"title": "群晖NAS/docker",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:21.752Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:10.623Z",
|
||||
"parentId": 38835158
|
||||
},
|
||||
"38835160": {
|
||||
@@ -1162,21 +1162,21 @@
|
||||
"id": 38835163,
|
||||
"title": "群晖NAS/20230708",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:22.636Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:11.745Z",
|
||||
"parentId": 38835158
|
||||
},
|
||||
"38835164": {
|
||||
"id": 38835164,
|
||||
"title": "群晖NAS/20230811",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:23.520Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:12.807Z",
|
||||
"parentId": 38835158
|
||||
},
|
||||
"38835165": {
|
||||
"id": 38835165,
|
||||
"title": "破解网站",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:24.270Z"
|
||||
"lastSyncDate": "2026-08-01T10:03:14.148Z"
|
||||
},
|
||||
"38835166": {
|
||||
"id": 38835166,
|
||||
@@ -1199,13 +1199,13 @@
|
||||
"id": 38835169,
|
||||
"title": "越狱",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:25.582Z"
|
||||
"lastSyncDate": "2026-08-01T10:03:15.218Z"
|
||||
},
|
||||
"38835170": {
|
||||
"id": 38835170,
|
||||
"title": "越狱/安装ipa",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:26.341Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:16.292Z",
|
||||
"parentId": 38835169
|
||||
},
|
||||
"38835171": {
|
||||
@@ -1224,7 +1224,7 @@
|
||||
"id": 38835174,
|
||||
"title": "越狱/巨魔",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:27.121Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:17.415Z",
|
||||
"parentId": 38835169
|
||||
},
|
||||
"38835175": {
|
||||
@@ -1422,7 +1422,7 @@
|
||||
"id": 38835212,
|
||||
"title": "英语学习",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:28.425Z"
|
||||
"lastSyncDate": "2026-08-01T10:03:18.689Z"
|
||||
},
|
||||
"38835213": {
|
||||
"id": 38835213,
|
||||
@@ -1493,7 +1493,7 @@
|
||||
"id": 38835225,
|
||||
"title": "幼儿教育",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:29.205Z"
|
||||
"lastSyncDate": "2026-08-01T10:03:19.910Z"
|
||||
},
|
||||
"38835226": {
|
||||
"id": 38835226,
|
||||
@@ -1647,28 +1647,28 @@
|
||||
"id": 38835253,
|
||||
"title": "物联网解决方案/产品评估",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:29.957Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:20.995Z",
|
||||
"parentId": 38835252
|
||||
},
|
||||
"38835254": {
|
||||
"id": 38835254,
|
||||
"title": "物联网解决方案/产品评估/语音机器人",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:30.727Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:22.142Z",
|
||||
"parentId": 38835253
|
||||
},
|
||||
"38835255": {
|
||||
"id": 38835255,
|
||||
"title": "物联网解决方案/产品评估/语音机器人/智慧农业",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:31.973Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:23.354Z",
|
||||
"parentId": 38835254
|
||||
},
|
||||
"38835256": {
|
||||
"id": 38835256,
|
||||
"title": "物联网解决方案/产品评估/语音机器人/智慧农业/智慧照明",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:32.719Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:24.368Z",
|
||||
"parentId": 38835255
|
||||
},
|
||||
"38835257": {
|
||||
@@ -1681,7 +1681,7 @@
|
||||
"id": 38835258,
|
||||
"title": "物联网解决方案/供应商",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:34.004Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:25.837Z",
|
||||
"parentId": 38835252
|
||||
},
|
||||
"38835259": {
|
||||
@@ -1706,7 +1706,7 @@
|
||||
"id": 38835262,
|
||||
"title": "物联网解决方案/安防网站",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:35.487Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:27.846Z",
|
||||
"parentId": 38835252
|
||||
},
|
||||
"38835263": {
|
||||
@@ -1736,62 +1736,62 @@
|
||||
"id": 38835268,
|
||||
"title": "学习网站/ChatGPT",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:36.244Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:28.695Z",
|
||||
"parentId": 38835265
|
||||
},
|
||||
"38835269": {
|
||||
"id": 38835269,
|
||||
"title": "学习网站/ChatGPT/20230709",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:36.985Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:29.448Z",
|
||||
"parentId": 38835268
|
||||
},
|
||||
"38835270": {
|
||||
"id": 38835270,
|
||||
"title": "学习网站/Comic",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:37.703Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:30.434Z",
|
||||
"parentId": 38835265
|
||||
},
|
||||
"38835271": {
|
||||
"id": 38835271,
|
||||
"title": "开发网站",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:38.944Z"
|
||||
"lastSyncDate": "2026-08-01T10:03:31.656Z"
|
||||
},
|
||||
"38835272": {
|
||||
"id": 38835272,
|
||||
"title": "开发网站/20230709",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:39.748Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:32.423Z",
|
||||
"parentId": 38835271
|
||||
},
|
||||
"38835273": {
|
||||
"id": 38835273,
|
||||
"title": "开发网站/VSCode",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:40.962Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:33.671Z",
|
||||
"parentId": 38835271
|
||||
},
|
||||
"38835274": {
|
||||
"id": 38835274,
|
||||
"title": "开发网站/Python",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:41.828Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:34.631Z",
|
||||
"parentId": 38835271
|
||||
},
|
||||
"38835275": {
|
||||
"id": 38835275,
|
||||
"title": "开发网站/F^Q",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:43.027Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:35.371Z",
|
||||
"parentId": 38835271
|
||||
},
|
||||
"38835276": {
|
||||
"id": 38835276,
|
||||
"title": "开发网站/F^Q/20230812",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:44.237Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:36.086Z",
|
||||
"parentId": 38835275
|
||||
},
|
||||
"38835285": {
|
||||
@@ -2905,7 +2905,7 @@
|
||||
"id": 38835489,
|
||||
"title": "群晖NAS",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:45.565Z"
|
||||
"lastSyncDate": "2026-08-01T10:03:36.857Z"
|
||||
},
|
||||
"38835490": {
|
||||
"id": 38835490,
|
||||
@@ -2917,14 +2917,14 @@
|
||||
"id": 38835491,
|
||||
"title": "群晖NAS/nginx",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:46.331Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:37.646Z",
|
||||
"parentId": 38835489
|
||||
},
|
||||
"38835492": {
|
||||
"id": 38835492,
|
||||
"title": "群晖NAS/20230709",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:47.134Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:38.692Z",
|
||||
"parentId": 38835489
|
||||
},
|
||||
"38835493": {
|
||||
@@ -2976,14 +2976,14 @@
|
||||
"id": 38835502,
|
||||
"title": "越狱/IPA",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:48.446Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:40.082Z",
|
||||
"parentId": 38835500
|
||||
},
|
||||
"38835503": {
|
||||
"id": 38835503,
|
||||
"title": "越狱/IPA提取",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:49.259Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:40.870Z",
|
||||
"parentId": 38835500
|
||||
},
|
||||
"38835504": {
|
||||
@@ -3434,7 +3434,7 @@
|
||||
"id": 38835584,
|
||||
"title": "物联网解决方案/行业资讯",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:50.588Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:42.373Z",
|
||||
"parentId": 38835579
|
||||
},
|
||||
"38835585": {
|
||||
@@ -3447,21 +3447,21 @@
|
||||
"id": 38835586,
|
||||
"title": "物联网解决方案/数字孪生",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:51.755Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:43.115Z",
|
||||
"parentId": 38835579
|
||||
},
|
||||
"38835587": {
|
||||
"id": 38835587,
|
||||
"title": "物联网解决方案/智慧停车",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:52.493Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:43.875Z",
|
||||
"parentId": 38835579
|
||||
},
|
||||
"38835588": {
|
||||
"id": 38835588,
|
||||
"title": "物联网解决方案/智能家居",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:53.312Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:44.605Z",
|
||||
"parentId": 38835579
|
||||
},
|
||||
"38835589": {
|
||||
@@ -3474,27 +3474,27 @@
|
||||
"id": 38835590,
|
||||
"title": "物联网解决方案/智慧酒店",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:54.583Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:45.838Z",
|
||||
"parentId": 38835579
|
||||
},
|
||||
"38835591": {
|
||||
"id": 38835591,
|
||||
"title": "物联网解决方案/智慧园区",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:55.360Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:46.608Z",
|
||||
"parentId": 38835579
|
||||
},
|
||||
"38835592": {
|
||||
"id": 38835592,
|
||||
"title": "学习网站",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:56.186Z"
|
||||
"lastSyncDate": "2026-08-01T10:03:47.515Z"
|
||||
},
|
||||
"38835593": {
|
||||
"id": 38835593,
|
||||
"title": "学习网站/博客",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:56.945Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:48.504Z",
|
||||
"parentId": 38835592
|
||||
},
|
||||
"38835595": {
|
||||
@@ -3519,243 +3519,243 @@
|
||||
"id": 38835599,
|
||||
"title": "开发网站",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:57.750Z"
|
||||
"lastSyncDate": "2026-08-01T10:03:49.737Z"
|
||||
},
|
||||
"38835600": {
|
||||
"id": 38835600,
|
||||
"title": "开发网站/20230709",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:58.734Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:50.661Z",
|
||||
"parentId": 38835599
|
||||
},
|
||||
"38835601": {
|
||||
"id": 38835601,
|
||||
"title": "开发网站/VSCode",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:54:59.687Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:51.505Z",
|
||||
"parentId": 38835599
|
||||
},
|
||||
"38835602": {
|
||||
"id": 38835602,
|
||||
"title": "开发网站/Python",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:55:00.493Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:52.818Z",
|
||||
"parentId": 38835599
|
||||
},
|
||||
"38835603": {
|
||||
"id": 38835603,
|
||||
"title": "开发网站/F^Q",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:55:01.740Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:53.572Z",
|
||||
"parentId": 38835599
|
||||
},
|
||||
"38835604": {
|
||||
"id": 38835604,
|
||||
"title": "开发网站/F^Q/20230812",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:55:02.514Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:54.662Z",
|
||||
"parentId": 38835603
|
||||
},
|
||||
"38835605": {
|
||||
"id": 38835605,
|
||||
"title": "开发网站/SQL",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:55:03.258Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:55.424Z",
|
||||
"parentId": 38835599
|
||||
},
|
||||
"38835606": {
|
||||
"id": 38835606,
|
||||
"title": "开发网站/App打包",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:55:04.587Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:56.223Z",
|
||||
"parentId": 38835599
|
||||
},
|
||||
"38835607": {
|
||||
"id": 38835607,
|
||||
"title": "开发网站/抓包",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:55:05.933Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:57.051Z",
|
||||
"parentId": 38835599
|
||||
},
|
||||
"38835608": {
|
||||
"id": 38835608,
|
||||
"title": "开发网站/抓包/抓音频",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:55:07.412Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:57.799Z",
|
||||
"parentId": 38835607
|
||||
},
|
||||
"38835609": {
|
||||
"id": 38835609,
|
||||
"title": "开发网站/抓包/charles",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:55:08.735Z",
|
||||
"lastSyncDate": "2026-08-01T10:03:58.705Z",
|
||||
"parentId": 38835607
|
||||
},
|
||||
"38835610": {
|
||||
"id": 38835610,
|
||||
"title": "开发网站/pdf.js",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:55:09.713Z",
|
||||
"lastSyncDate": "2026-08-01T10:04:00.295Z",
|
||||
"parentId": 38835599
|
||||
},
|
||||
"38835611": {
|
||||
"id": 38835611,
|
||||
"title": "开发网站/webplayer",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:55:10.610Z",
|
||||
"lastSyncDate": "2026-08-01T10:04:01.514Z",
|
||||
"parentId": 38835599
|
||||
},
|
||||
"38835612": {
|
||||
"id": 38835612,
|
||||
"title": "开发网站/加解密",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:55:11.422Z",
|
||||
"lastSyncDate": "2026-08-01T10:04:02.285Z",
|
||||
"parentId": 38835599
|
||||
},
|
||||
"38835613": {
|
||||
"id": 38835613,
|
||||
"title": "开发网站/cors",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:55:12.391Z",
|
||||
"lastSyncDate": "2026-08-01T10:04:03.388Z",
|
||||
"parentId": 38835599
|
||||
},
|
||||
"38835614": {
|
||||
"id": 38835614,
|
||||
"title": "开发网站/Delphi",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:55:13.371Z",
|
||||
"lastSyncDate": "2026-08-01T10:04:04.427Z",
|
||||
"parentId": 38835599
|
||||
},
|
||||
"38835615": {
|
||||
"id": 38835615,
|
||||
"title": "开发网站/APK反编译",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:55:14.613Z",
|
||||
"lastSyncDate": "2026-08-01T10:04:05.434Z",
|
||||
"parentId": 38835599
|
||||
},
|
||||
"38835616": {
|
||||
"id": 38835616,
|
||||
"title": "开源项目",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:55:15.559Z"
|
||||
"lastSyncDate": "2026-08-01T10:04:06.465Z"
|
||||
},
|
||||
"38835617": {
|
||||
"id": 38835617,
|
||||
"title": "开源项目/siyuan",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:55:16.313Z",
|
||||
"lastSyncDate": "2026-08-01T10:04:07.177Z",
|
||||
"parentId": 38835616
|
||||
},
|
||||
"38835618": {
|
||||
"id": 38835618,
|
||||
"title": "开源项目/rustdesk",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:55:17.081Z",
|
||||
"lastSyncDate": "2026-08-01T10:04:07.932Z",
|
||||
"parentId": 38835616
|
||||
},
|
||||
"38835619": {
|
||||
"id": 38835619,
|
||||
"title": "开源项目/SiP",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:55:18.358Z",
|
||||
"lastSyncDate": "2026-08-01T10:04:09.136Z",
|
||||
"parentId": 38835616
|
||||
},
|
||||
"38835620": {
|
||||
"id": 38835620,
|
||||
"title": "开源项目/GitHub",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:55:19.782Z",
|
||||
"lastSyncDate": "2026-08-01T10:04:10.394Z",
|
||||
"parentId": 38835616
|
||||
},
|
||||
"38835621": {
|
||||
"id": 38835621,
|
||||
"title": "开源项目/GitHub/20230709",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:55:21.407Z",
|
||||
"lastSyncDate": "2026-08-01T10:04:11.414Z",
|
||||
"parentId": 38835620
|
||||
},
|
||||
"38835622": {
|
||||
"id": 38835622,
|
||||
"title": "开源项目/GitHub/aria2",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:55:22.347Z",
|
||||
"lastSyncDate": "2026-08-01T10:04:12.355Z",
|
||||
"parentId": 38835620
|
||||
},
|
||||
"38835624": {
|
||||
"id": 38835624,
|
||||
"title": "开源项目/GitHub/小白羊",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:55:23.424Z",
|
||||
"lastSyncDate": "2026-08-01T10:04:13.584Z",
|
||||
"parentId": 38835620
|
||||
},
|
||||
"38835625": {
|
||||
"id": 38835625,
|
||||
"title": "开源项目/GitHub/alist",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:55:24.683Z",
|
||||
"lastSyncDate": "2026-08-01T10:04:14.334Z",
|
||||
"parentId": 38835620
|
||||
},
|
||||
"38835626": {
|
||||
"id": 38835626,
|
||||
"title": "开源项目/GitHub/RustDesk",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:55:25.401Z",
|
||||
"lastSyncDate": "2026-08-01T10:04:15.062Z",
|
||||
"parentId": 38835620
|
||||
},
|
||||
"38835627": {
|
||||
"id": 38835627,
|
||||
"title": "开源项目/GitHub/imagine",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:55:26.617Z",
|
||||
"lastSyncDate": "2026-08-01T10:04:16.285Z",
|
||||
"parentId": 38835620
|
||||
},
|
||||
"38835628": {
|
||||
"id": 38835628,
|
||||
"title": "开源项目/GitHub/Bridge",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:55:27.896Z",
|
||||
"lastSyncDate": "2026-08-01T10:04:17.145Z",
|
||||
"parentId": 38835620
|
||||
},
|
||||
"38835629": {
|
||||
"id": 38835629,
|
||||
"title": "开源项目/OnlyOffice",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:55:28.887Z",
|
||||
"lastSyncDate": "2026-08-01T10:04:18.695Z",
|
||||
"parentId": 38835616
|
||||
},
|
||||
"38835630": {
|
||||
"id": 38835630,
|
||||
"title": "开源项目/OnlyOffice/20230809",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:55:29.785Z",
|
||||
"lastSyncDate": "2026-08-01T10:04:19.475Z",
|
||||
"parentId": 38835629
|
||||
},
|
||||
"38835631": {
|
||||
"id": 38835631,
|
||||
"title": "开源项目/日历",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:55:31.126Z",
|
||||
"lastSyncDate": "2026-08-01T10:04:20.745Z",
|
||||
"parentId": 38835616
|
||||
},
|
||||
"38835632": {
|
||||
"id": 38835632,
|
||||
"title": "开源项目/OCR",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:55:32.272Z",
|
||||
"lastSyncDate": "2026-08-01T10:04:21.796Z",
|
||||
"parentId": 38835616
|
||||
},
|
||||
"38835633": {
|
||||
"id": 38835633,
|
||||
"title": "开源项目/Bridge",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:55:33.030Z",
|
||||
"lastSyncDate": "2026-08-01T10:04:22.548Z",
|
||||
"parentId": 38835616
|
||||
},
|
||||
"38835636": {
|
||||
"id": 38835636,
|
||||
"title": "游戏网站",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:55:34.158Z"
|
||||
"lastSyncDate": "2026-08-01T10:04:23.336Z"
|
||||
},
|
||||
"38835638": {
|
||||
"id": 38835638,
|
||||
@@ -3879,27 +3879,27 @@
|
||||
"id": 38835659,
|
||||
"title": "电子书",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:55:35.049Z"
|
||||
"lastSyncDate": "2026-08-01T10:04:24.117Z"
|
||||
},
|
||||
"38835660": {
|
||||
"id": 38835660,
|
||||
"title": "电子书/电子书制作",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:55:36.330Z",
|
||||
"lastSyncDate": "2026-08-01T10:04:25.448Z",
|
||||
"parentId": 38835659
|
||||
},
|
||||
"38835661": {
|
||||
"id": 38835661,
|
||||
"title": "电子书/calibre",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:55:37.096Z",
|
||||
"lastSyncDate": "2026-08-01T10:04:26.217Z",
|
||||
"parentId": 38835659
|
||||
},
|
||||
"38835662": {
|
||||
"id": 38835662,
|
||||
"title": "电子书/20230826",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:55:37.895Z",
|
||||
"lastSyncDate": "2026-08-01T10:04:27.310Z",
|
||||
"parentId": 38835659
|
||||
},
|
||||
"38835663": {
|
||||
@@ -3916,7 +3916,7 @@
|
||||
"id": 38835665,
|
||||
"title": "Favorites",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:55:38.656Z"
|
||||
"lastSyncDate": "2026-08-01T10:04:28.036Z"
|
||||
},
|
||||
"38835666": {
|
||||
"id": 38835666,
|
||||
@@ -3934,26 +3934,26 @@
|
||||
"id": 38835668,
|
||||
"title": "翻译",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:55:39.459Z"
|
||||
"lastSyncDate": "2026-08-01T10:04:28.800Z"
|
||||
},
|
||||
"38835669": {
|
||||
"id": 38835669,
|
||||
"title": "智能家居",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:55:40.832Z"
|
||||
"lastSyncDate": "2026-08-01T10:04:29.770Z"
|
||||
},
|
||||
"38835670": {
|
||||
"id": 38835670,
|
||||
"title": "智能家居/HomeAssist",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:55:41.612Z",
|
||||
"lastSyncDate": "2026-08-01T10:04:30.557Z",
|
||||
"parentId": 38835669
|
||||
},
|
||||
"58561271": {
|
||||
"id": 58561271,
|
||||
"title": "ClipperBox",
|
||||
"sync": true,
|
||||
"lastSyncDate": "2026-07-29T21:55:42.555Z"
|
||||
"lastSyncDate": "2026-08-01T10:04:31.886Z"
|
||||
},
|
||||
"-1": {
|
||||
"id": -1,
|
||||
|
||||
+51
-49
File diff suppressed because one or more lines are too long
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"id": "obsidian-reminder-plugin",
|
||||
"name": "Reminder",
|
||||
"version": "1.3.2",
|
||||
"version": "1.4.0",
|
||||
"minAppVersion": "1.0.3",
|
||||
"description": "Reminder plugin for Obsidian. This plugin adds feature to manage TODOs with reminder.",
|
||||
"author": "uphy",
|
||||
|
||||
+4
-4
@@ -10,13 +10,13 @@
|
||||
"savePassword": true,
|
||||
"isDefault": true,
|
||||
"lastSelectedCategories": [
|
||||
15
|
||||
1
|
||||
],
|
||||
"username": "wpAdmin",
|
||||
"encryptedPassword": {
|
||||
"key": "{\"alg\":\"A256GCM\",\"ext\":true,\"k\":\"zMoleceJw_wSCoAdfOMHqtQJQ4pZITh_NEFqooLqw8Y\",\"key_ops\":[\"encrypt\",\"decrypt\"],\"kty\":\"oct\"}",
|
||||
"vector": "hkIfpWbZ5ayi4/Mn",
|
||||
"encrypted": "5241BmtV2IX5Xwz8norL6j4SP1Ha8WKl"
|
||||
"key": "{\"alg\":\"A256GCM\",\"ext\":true,\"k\":\"7Iqj2qFJvPxP2DnfyHDeBothUUsyRQticN6m-cl3Vys\",\"key_ops\":[\"encrypt\",\"decrypt\"],\"kty\":\"oct\"}",
|
||||
"vector": "7BwGNpXL37h9ci/H",
|
||||
"encrypted": "i+vmxM1EW8hnQtHqWFkFu5RC0BKxqAZG"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
Vendored
+66
-14
@@ -3,13 +3,16 @@
|
||||
"inputPrompt": "single-line",
|
||||
"persistInputPromptDrafts": true,
|
||||
"useSelectionAsCaptureValue": true,
|
||||
"searchNestedChoices": true,
|
||||
"templateFolderLauncherRow": "bottom",
|
||||
"devMode": false,
|
||||
"templateFolderPath": "",
|
||||
"templateFolderPaths": [],
|
||||
"announceUpdates": "all",
|
||||
"version": "2.12.3",
|
||||
"version": "2.21.0",
|
||||
"globalVariables": {},
|
||||
"onePageInputEnabled": false,
|
||||
"disableOnlineFeatures": true,
|
||||
"enableUriCallbacks": false,
|
||||
"enableRibbonIcon": false,
|
||||
"showCaptureNotification": true,
|
||||
"showInputCancellationNotification": false,
|
||||
@@ -56,28 +59,74 @@
|
||||
"name": "gpt-4",
|
||||
"maxTokens": 8192
|
||||
},
|
||||
{
|
||||
"name": "gpt-4-32k",
|
||||
"maxTokens": 32768
|
||||
},
|
||||
{
|
||||
"name": "gpt-4-1106-preview",
|
||||
"maxTokens": 128000
|
||||
},
|
||||
{
|
||||
"name": "gpt-4-turbo",
|
||||
"maxTokens": 128000
|
||||
},
|
||||
{
|
||||
"name": "gpt-4o",
|
||||
"maxTokens": 128000
|
||||
"maxTokens": 128000,
|
||||
"maxOutputTokens": 16384,
|
||||
"supportsTemperature": true
|
||||
},
|
||||
{
|
||||
"name": "gpt-4o-mini",
|
||||
"maxTokens": 128000
|
||||
"maxTokens": 128000,
|
||||
"maxOutputTokens": 16384,
|
||||
"supportsTemperature": true
|
||||
},
|
||||
{
|
||||
"name": "gpt-5.5",
|
||||
"maxTokens": 1050000,
|
||||
"maxOutputTokens": 128000,
|
||||
"supportsTemperature": false
|
||||
},
|
||||
{
|
||||
"name": "gpt-5.4",
|
||||
"maxTokens": 1050000,
|
||||
"maxOutputTokens": 128000,
|
||||
"supportsTemperature": false
|
||||
},
|
||||
{
|
||||
"name": "gpt-5.4-mini",
|
||||
"maxTokens": 400000,
|
||||
"maxOutputTokens": 128000,
|
||||
"supportsTemperature": false
|
||||
},
|
||||
{
|
||||
"name": "gpt-5.4-nano",
|
||||
"maxTokens": 400000,
|
||||
"maxOutputTokens": 128000,
|
||||
"supportsTemperature": false
|
||||
},
|
||||
{
|
||||
"name": "gpt-4.1",
|
||||
"maxTokens": 1047576,
|
||||
"maxOutputTokens": 32768,
|
||||
"supportsTemperature": true
|
||||
},
|
||||
{
|
||||
"name": "gpt-4.1-mini",
|
||||
"maxTokens": 1047576,
|
||||
"maxOutputTokens": 32768,
|
||||
"supportsTemperature": true
|
||||
},
|
||||
{
|
||||
"name": "o3",
|
||||
"maxTokens": 200000,
|
||||
"maxOutputTokens": 100000,
|
||||
"supportsTemperature": false
|
||||
},
|
||||
{
|
||||
"name": "o4-mini",
|
||||
"maxTokens": 200000,
|
||||
"maxOutputTokens": 100000,
|
||||
"supportsTemperature": false
|
||||
}
|
||||
],
|
||||
"modelSource": "auto"
|
||||
"modelSource": "modelsDev",
|
||||
"autoSyncModels": true,
|
||||
"id": "openai"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -94,7 +143,10 @@
|
||||
"backfillFileOpeningDefaults": true,
|
||||
"migrateProviderApiKeysToSecretStorage": true,
|
||||
"consolidateFileExistsBehavior": true,
|
||||
"repairTemplateFileExistsBehavior": true
|
||||
"repairTemplateFileExistsBehavior": true,
|
||||
"migrateToMultipleTemplateFolders": true,
|
||||
"refreshStaleDefaultModelSeeds": true,
|
||||
"pinAiModelRefs": true
|
||||
},
|
||||
"macros": []
|
||||
}
|
||||
Vendored
+397
-82
File diff suppressed because one or more lines are too long
+3
-3
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"id": "quickadd",
|
||||
"name": "QuickAdd",
|
||||
"version": "2.12.3",
|
||||
"minAppVersion": "1.11.4",
|
||||
"version": "2.21.0",
|
||||
"minAppVersion": "1.13.0",
|
||||
"description": "Quickly add new pages or content to your vault.",
|
||||
"author": "Christian B. B. Houmann",
|
||||
"authorUrl": "https://bagerbach.com",
|
||||
"fundingUrl": "https://www.buymeacoffee.com/chhoumann",
|
||||
"helpUrl": "https://quickadd.obsidian.guide/docs/",
|
||||
"isDesktopOnly": false
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
File diff suppressed because one or more lines are too long
+108
-52
@@ -1,8 +1,12 @@
|
||||
{
|
||||
"recentFiles": [
|
||||
{
|
||||
"basename": "2026-07-29",
|
||||
"path": "01-工作日记/2026-07-29.md"
|
||||
"basename": "数据备份列表",
|
||||
"path": "03-工作笔记/应用部署/数据备份列表.md"
|
||||
},
|
||||
{
|
||||
"basename": "本地应用部署笔记",
|
||||
"path": "03-工作笔记/应用部署/本地应用部署笔记.md"
|
||||
},
|
||||
{
|
||||
"basename": "本地服务器重新规划",
|
||||
@@ -13,8 +17,108 @@
|
||||
"path": "03-工作笔记/应用部署/数据存储规划V2.1.md"
|
||||
},
|
||||
{
|
||||
"basename": "本地应用部署笔记",
|
||||
"path": "03-工作笔记/应用部署/本地应用部署笔记.md"
|
||||
"basename": "2026-08-01",
|
||||
"path": "01-工作日记/2026-08-01.md"
|
||||
},
|
||||
{
|
||||
"basename": "2026-07-31",
|
||||
"path": "01-工作日记/2026-07-31.md"
|
||||
},
|
||||
{
|
||||
"basename": "Aio-fnT平台构建笔记",
|
||||
"path": "03-工作笔记/AioPloto/Aio-fnT平台构建笔记.md"
|
||||
},
|
||||
{
|
||||
"basename": "云盘清单",
|
||||
"path": "06-数字仓库/061-云资源/云盘清单.md"
|
||||
},
|
||||
{
|
||||
"basename": "我的订阅",
|
||||
"path": "06-数字仓库/063-订阅/我的订阅.md"
|
||||
},
|
||||
{
|
||||
"basename": "数据恢复",
|
||||
"path": "08-Inbox/数据恢复.md"
|
||||
},
|
||||
{
|
||||
"basename": "截屏 2026-01-14 22.38.31",
|
||||
"path": "03-工作笔记/应用部署/assets/截屏 2026-01-14 22.38.31.png"
|
||||
},
|
||||
{
|
||||
"basename": "截屏 2026-01-14 22.44.12 2",
|
||||
"path": "03-工作笔记/应用部署/assets/截屏 2026-01-14 22.44.12 2.png"
|
||||
},
|
||||
{
|
||||
"basename": "截屏 2026-01-14 22.40.10 1",
|
||||
"path": "03-工作笔记/应用部署/assets/截屏 2026-01-14 22.40.10 1.png"
|
||||
},
|
||||
{
|
||||
"basename": "长郡中学校歌",
|
||||
"path": "08-Inbox/长郡中学校歌.md"
|
||||
},
|
||||
{
|
||||
"basename": "研学拓展",
|
||||
"path": "08-Inbox/研学拓展.md"
|
||||
},
|
||||
{
|
||||
"basename": "5月7日-5月11日湖北麻城荆州监利自驾行程",
|
||||
"path": "08-Inbox/5月7日-5月11日湖北麻城荆州监利自驾行程.md"
|
||||
},
|
||||
{
|
||||
"basename": "当爱已成往事",
|
||||
"path": "08-Inbox/当爱已成往事.md"
|
||||
},
|
||||
{
|
||||
"basename": "客户端安装步骤",
|
||||
"path": "03-工作笔记/应用部署/客户端安装步骤.md"
|
||||
},
|
||||
{
|
||||
"basename": "Mermaid示例",
|
||||
"path": "08-Inbox/Mermaid示例.md"
|
||||
},
|
||||
{
|
||||
"basename": "README",
|
||||
"path": "README.md"
|
||||
},
|
||||
{
|
||||
"basename": "ufs explorer 10.3 R studio pc 300 Mrt (2026-05-28 11-30)",
|
||||
"path": "50-Memos/2026/05/ufs explorer 10.3 R studio pc 300 Mrt (2026-05-28 11-30).md"
|
||||
},
|
||||
{
|
||||
"basename": "- [ ] 换了一台服务器测试 (2026-07-05 23-24)",
|
||||
"path": "50-Memos/2026/07/- [ ] 换了一台服务器测试 (2026-07-05 23-24).md"
|
||||
},
|
||||
{
|
||||
"basename": "83万人遇难的明代大地震,四大怪事至今无解 httpsk.sina.cnarticle787... (2026-07-14 11-32)",
|
||||
"path": "50-Memos/2026/07/83万人遇难的明代大地震,四大怪事至今无解 httpsk.sina.cnarticle787... (2026-07-14 11-32).md"
|
||||
},
|
||||
{
|
||||
"basename": "多尔衮妻妾成群,11岁就结婚的他为何只有一个女儿?原因非常简单 httpsk.sina.cn... (2026-07-16 16-44)",
|
||||
"path": "50-Memos/2026/07/多尔衮妻妾成群,11岁就结婚的他为何只有一个女儿?原因非常简单 httpsk.sina.cn... (2026-07-16 16-44).md"
|
||||
},
|
||||
{
|
||||
"basename": "更换了服务器 (2026-07-23 11-54)",
|
||||
"path": "50-Memos/2026/07/更换了服务器 (2026-07-23 11-54).md"
|
||||
},
|
||||
{
|
||||
"basename": "姚明、吴金星三人一起商议欠款结算问题,初步是三个月内先还8000元,从李鹏程那里走,另外4-5万从机... (2026-07-23 18-42)",
|
||||
"path": "50-Memos/2026/07/姚明、吴金星三人一起商议欠款结算问题,初步是三个月内先还8000元,从李鹏程那里走,另外4-5万从机... (2026-07-23 18-42).md"
|
||||
},
|
||||
{
|
||||
"basename": "搞懂有氧和无氧的区别,这样减肥才能瘦得快还不反弹",
|
||||
"path": "04-博客发布/042-健康乐活/搞懂有氧和无氧的区别,这样减肥才能瘦得快还不反弹.md"
|
||||
},
|
||||
{
|
||||
"basename": "2026-07-30",
|
||||
"path": "01-工作日记/2026-07-30.md"
|
||||
},
|
||||
{
|
||||
"basename": "应用内网穿透设计",
|
||||
"path": "03-工作笔记/应用部署/应用内网穿透设计.md"
|
||||
},
|
||||
{
|
||||
"basename": "2026-07-29",
|
||||
"path": "01-工作日记/2026-07-29.md"
|
||||
},
|
||||
{
|
||||
"basename": "2026-07-28",
|
||||
@@ -95,54 +199,6 @@
|
||||
{
|
||||
"basename": "Linux系统非root用户使用docker命令 - 蓝莓薄荷 - 博客园",
|
||||
"path": "10-WebClipper/Linux系统非root用户使用docker命令 - 蓝莓薄荷 - 博客园.md"
|
||||
},
|
||||
{
|
||||
"basename": "十大硬盘数据恢复软件有哪些?数据恢复软件哪个好用推荐?_数据恢复软件recovery-CSDN博客",
|
||||
"path": "10-WebClipper/十大硬盘数据恢复软件有哪些?数据恢复软件哪个好用推荐?_数据恢复软件recovery-CSDN博客.md"
|
||||
},
|
||||
{
|
||||
"basename": "Windows使用命令行 查看定时计划任务_windows查看当前定时任务-CSDN博客",
|
||||
"path": "10-WebClipper/Windows使用命令行 查看定时计划任务_windows查看当前定时任务-CSDN博客.md"
|
||||
},
|
||||
{
|
||||
"basename": "windows定时计划任务的查看、取消、启动和创建方法_windows_Windows系列_操作系统_脚本之家",
|
||||
"path": "10-WebClipper/windows定时计划任务的查看、取消、启动和创建方法_windows_Windows系列_操作系统_脚本之家.md"
|
||||
},
|
||||
{
|
||||
"basename": "处理实践 - inotify watch 耗尽 - 《Kubernetes 实践指南(Kubernetes Practice Guide)》 - 书栈网 · BookStack",
|
||||
"path": "10-WebClipper/处理实践 - inotify watch 耗尽 - 《Kubernetes 实践指南(Kubernetes Practice Guide)》 - 书栈网 · BookStack.md"
|
||||
},
|
||||
{
|
||||
"basename": "Use MCP servers in VS Code(English)",
|
||||
"path": "10-WebClipper/Use MCP servers in VS Code(English).md"
|
||||
},
|
||||
{
|
||||
"basename": "最近热火朝天的 MCP 是什么鬼?如何使用 MCP?一文给你讲清楚!",
|
||||
"path": "10-WebClipper/最近热火朝天的 MCP 是什么鬼?如何使用 MCP?一文给你讲清楚!.md"
|
||||
},
|
||||
{
|
||||
"basename": "10M…200M下载速度峰值对照表(附计算公式) - 知乎",
|
||||
"path": "10-WebClipper/10M…200M下载速度峰值对照表(附计算公式) - 知乎.md"
|
||||
},
|
||||
{
|
||||
"basename": "OpenWrt旁路由",
|
||||
"path": "10-WebClipper/OpenWrt旁路由.md"
|
||||
},
|
||||
{
|
||||
"basename": "飞牛私有云论坛 fnOS 1",
|
||||
"path": "10-WebClipper/飞牛私有云论坛 fnOS 1.md"
|
||||
},
|
||||
{
|
||||
"basename": "飞牛私有云论坛 fnOS",
|
||||
"path": "10-WebClipper/飞牛私有云论坛 fnOS.md"
|
||||
},
|
||||
{
|
||||
"basename": "Linux软件包格式全解析-RPM、DEB、AppImage有何区别?如何选择? - 大神的开源笔记",
|
||||
"path": "10-WebClipper/Linux软件包格式全解析-RPM、DEB、AppImage有何区别?如何选择? - 大神的开源笔记.md"
|
||||
},
|
||||
{
|
||||
"basename": "fs.inotify.max_user_watches默认值太小,导致too many open files_user watch files-CSDN博客",
|
||||
"path": "10-WebClipper/fs.inotify.max_user_watches默认值太小,导致too many open files_user watch files-CSDN博客.md"
|
||||
}
|
||||
],
|
||||
"omittedPaths": [],
|
||||
|
||||
+293
-337
File diff suppressed because one or more lines are too long
Vendored
+483
-856
File diff suppressed because one or more lines are too long
+1
-1
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"id": "sheet-plus",
|
||||
"name": "Sheet Plus",
|
||||
"version": "2.12.11",
|
||||
"version": "2.12.13",
|
||||
"minAppVersion": "1.5.11",
|
||||
"description": "Create Excel-like spreadsheets and easily embed them in Markdown.",
|
||||
"author": "ljcoder",
|
||||
|
||||
+10
-29
@@ -1,38 +1,19 @@
|
||||
{
|
||||
"data_version": 2,
|
||||
"command_timeout": 5,
|
||||
"templates_folder": "09-Templates",
|
||||
"templates_pairs": [
|
||||
[
|
||||
"",
|
||||
""
|
||||
]
|
||||
],
|
||||
"trigger_on_file_creation": false,
|
||||
"templates_pairs": [],
|
||||
"trigger_on_file_creation_mode": "folder",
|
||||
"auto_jump_to_cursor": false,
|
||||
"enable_system_commands": false,
|
||||
"jump_to_cursor_after_file_name": false,
|
||||
"shell_path": "",
|
||||
"user_scripts_folder": "",
|
||||
"enable_folder_templates": true,
|
||||
"folder_templates": [
|
||||
{
|
||||
"folder": "",
|
||||
"template": ""
|
||||
}
|
||||
],
|
||||
"enable_file_templates": false,
|
||||
"file_templates": [
|
||||
{
|
||||
"regex": ".*",
|
||||
"template": ""
|
||||
}
|
||||
],
|
||||
"folder_templates": [],
|
||||
"file_templates": [],
|
||||
"syntax_highlighting": true,
|
||||
"syntax_highlighting_mobile": false,
|
||||
"enabled_templates_hotkeys": [
|
||||
""
|
||||
],
|
||||
"startup_templates": [
|
||||
""
|
||||
],
|
||||
"intellisense_render": 1
|
||||
"enabled_templates_hotkeys": [],
|
||||
"startup_templates": [],
|
||||
"intellisense_render": "1",
|
||||
"ignore_folders_on_creation": []
|
||||
}
|
||||
+27
-19
File diff suppressed because one or more lines are too long
+2
-2
@@ -1,9 +1,9 @@
|
||||
{
|
||||
"id": "templater-obsidian",
|
||||
"name": "Templater",
|
||||
"version": "2.20.6",
|
||||
"version": "2.24.3",
|
||||
"description": "Advanced templating and automation using handlebars-like syntax.",
|
||||
"minAppVersion": "1.12.2",
|
||||
"minAppVersion": "1.13.0",
|
||||
"author": "SilentVoid",
|
||||
"authorUrl": "https://github.com/SilentVoid13",
|
||||
"fundingUrl": {
|
||||
|
||||
+5
-61
@@ -1,69 +1,8 @@
|
||||
.templater_search {
|
||||
width: calc(100% - 20px);
|
||||
}
|
||||
|
||||
.templater_div {
|
||||
border-top: 1px solid var(--background-modifier-border);
|
||||
}
|
||||
|
||||
.templater_div > .setting-item {
|
||||
border-top: none !important;
|
||||
align-self: center;
|
||||
}
|
||||
|
||||
.templater_div > .setting-item > .setting-item-control {
|
||||
justify-content: space-around;
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.templater_div
|
||||
> .setting-item
|
||||
> .setting-item-control
|
||||
> .setting-editor-extra-setting-button {
|
||||
align-self: center;
|
||||
}
|
||||
|
||||
.templater_donating {
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
.templater_title {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
margin-top: 5px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.templater_template {
|
||||
align-self: center;
|
||||
margin-left: 5px;
|
||||
margin-right: 5px;
|
||||
width: 70%;
|
||||
}
|
||||
|
||||
.templater_cmd {
|
||||
margin-left: 5px;
|
||||
margin-right: 5px;
|
||||
font-size: 14px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.templater_div2 > .setting-item {
|
||||
align-content: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.templater-prompt-div,
|
||||
.templater-multisuggester-div {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.templater-prompt-form {
|
||||
display: flex;
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
.templater-prompt-input,
|
||||
.templater-multisuggester-input {
|
||||
flex-grow: 1;
|
||||
@@ -80,6 +19,11 @@ textarea.templater-prompt-input {
|
||||
height: 10rem;
|
||||
}
|
||||
|
||||
.templater-ignore-folder-modal .modal-content input[type="text"],
|
||||
.templater-startup-template-modal .modal-content input[type="text"] {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
textarea.templater-prompt-input:focus {
|
||||
border-color: var(--interactive-accent);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user