Borked the gpg signing :(

This commit is contained in:
2022-11-25 08:58:10 +01:00
parent 539eccdd3e
commit 7f18165d32
69 changed files with 82457 additions and 1502 deletions

File diff suppressed because one or more lines are too long

View File

@@ -1,7 +1,7 @@
{
"id": "breadcrumbs",
"name": "Breadcrumbs",
"version": "3.6.3",
"version": "3.6.4",
"minAppVersion": "0.15.2",
"description": "Visualise & navigate your vault's structure",
"author": "SkepticMystic",

File diff suppressed because one or more lines are too long

View File

@@ -1,10 +1,10 @@
{
"id": "emoji-shortcodes",
"name": "Emoji Shortcodes",
"version": "2.1.2",
"version": "2.1.3",
"minAppVersion": "0.12.17",
"description": "This Plugin enables the use of Markdown Emoji Shortcodes :smile:",
"author": "phibr0",
"authorUrl": "https://github.com/phibr0",
"isDesktopOnly": false
}
}

View File

@@ -2253,7 +2253,7 @@ var CompletrPlugin = class extends import_obsidian5.Plugin {
constructor() {
super(...arguments);
this.onFileOpened = (file) => {
if (!this.settings.fileScannerScanCurrent || !file)
if (!this.settings.fileScannerProviderEnabled || !this.settings.fileScannerScanCurrent || !file)
return;
FileScanner.scanFile(this.settings, file, true);
};
@@ -2327,7 +2327,8 @@ var CompletrPlugin = class extends import_obsidian5.Plugin {
],
editorCallback: (editor) => {
this._suggestionPopup.trigger(editor, this.app.workspace.getActiveFile(), true);
}
},
isVisible: () => !this._suggestionPopup.isVisible()
});
this.addCommand({
id: "completr-select-next-suggestion",

View File

@@ -1,7 +1,7 @@
{
"id": "obsidian-completr",
"name": "Completr",
"version": "3.0.0",
"version": "3.0.1",
"minAppVersion": "1.0.0",
"description": "This plugin provides advanced auto-completion functionality for LaTeX, Frontmatter and standard writing.",
"author": "tth05",

File diff suppressed because it is too large Load Diff

View File

@@ -1,9 +1,9 @@
{
"folder": "Excalidraw",
"folder": "!Załączniki/Excalidraw",
"embedUseExcalidrawFolder": false,
"templateFilePath": "Excalidraw/Template.excalidraw",
"scriptFolderPath": "Excalidraw/Scripts",
"compress": false,
"templateFilePath": "!Załączniki/Excalidraw/Template.excalidraw",
"scriptFolderPath": "!Załączniki/Excalidraw/Scripts",
"compress": true,
"autosave": true,
"autosaveInterval": 15000,
"drawingFilenamePrefix": "Drawing ",
@@ -16,8 +16,8 @@
"previewMatchObsidianTheme": false,
"width": "400",
"isLeftHanded": false,
"matchTheme": false,
"matchThemeAlways": false,
"matchTheme": true,
"matchThemeAlways": true,
"matchThemeTrigger": false,
"defaultMode": "normal",
"defaultPenMode": "never",
@@ -75,7 +75,7 @@
"mdCSS": "",
"scriptEngineSettings": {},
"defaultTrayMode": false,
"previousRelease": "1.7.25",
"previousRelease": "1.7.29",
"showReleaseNotes": true,
"showNewVersionNotification": true,
"mathjaxSourceURL": "https://cdn.jsdelivr.net/npm/mathjax@3.2.1/es5/tex-svg.js"

File diff suppressed because one or more lines are too long

View File

@@ -1,7 +1,7 @@
{
"id": "obsidian-excalidraw-plugin",
"name": "Excalidraw",
"version": "1.7.25",
"version": "1.7.29",
"minAppVersion": "0.15.6",
"description": "An Obsidian plugin to edit and view Excalidraw drawings",
"author": "Zsolt Viczian",

View File

@@ -96,8 +96,7 @@ li[data-testid] {
.ex-coffee-div {
text-align: center;
margin-bottom: 20px;
margin-bottom: 10px;
}
.excalidraw-scriptengine-install td>img {
@@ -184,9 +183,8 @@ li[data-testid] {
}
.excalidraw-release .modal {
max-height: 90%;
width: auto;
max-width: 130ch;
max-height: 80%;
max-width: 100ch;
}
.excalidraw .Island .scrollbar {
@@ -225,6 +223,65 @@ textarea.excalidraw-wysiwyg {
border-radius: 0;
}
.is-tablet .excalidraw button {
.is-tablet .excalidraw button,
.is-mobile .excalidraw button {
padding: initial;
height: 1.8rem;
}
.excalidraw button,
.ToolIcon button {
box-shadow: none;
justify-content: initial;
}
.excalidraw {
--default-button-size: 2rem !important;
--default-icon-size: 1rem !important;
--lg-button-size: 1.8rem !important;
--lg-icon-size: 1rem !important;
}
.excalidraw .tray-zoom {
pointer-events: initial;
padding-bottom: 0.05rem;
padding-top: 0.05rem;
}
.excalidraw-container.theme--dark {
background-color: #121212;
color: #fff;
}
/* https://discordapp.com/channels/686053708261228577/989603365606531104/1041266507256184863 */
/*.workspace-leaf {
contain: none !important;
}*/
.color-picker-content {
overflow-y: auto;
max-height: 10rem;
}
.excalidraw .FixedSideContainer_side_top {
top: 0.3rem;
}
.excalidraw .ToolIcon__keybinding {
font-size: 0.5rem;
}
.Island > .Stack > .Stack {
padding:0.2rem;
}
label.color-input-container > input {
max-width: 8rem;
}
.excalidraw .FixedSideContainer_side_top {
left: 10px !important;
top: 10px !important;
right: 10px !important;
bottom: 10px !important;
}

View File

@@ -2,9 +2,9 @@
"commitMessage": "vault backup: {{date}}",
"autoCommitMessage": "vault backup: {{date}}",
"commitDateFormat": "YYYY-MM-DD HH:mm:ss",
"autoSaveInterval": 0,
"autoSaveInterval": 5,
"autoPushInterval": 0,
"autoPullInterval": 0,
"autoPullInterval": 60,
"autoPullOnBoot": false,
"disablePush": false,
"pullBeforePush": true,
@@ -14,13 +14,12 @@
"updateSubmodules": false,
"syncMethod": "merge",
"customMessageOnAutoBackup": false,
"autoBackupAfterFileChange": false,
"autoBackupAfterFileChange": true,
"treeStructure": false,
"refreshSourceControl": true,
"basePath": "",
"differentIntervalCommitAndPush": false,
"changedFilesInStatusBar": false,
"username": "",
"showedMobileNotice": true,
"refreshSourceControlTimer": 7000,
"showBranchStatusBar": true

View File

@@ -1886,6 +1886,7 @@ var require_lib = __commonJS({
}
this.timeout = opts.timeout || AsyncLock2.DEFAULT_TIMEOUT;
this.maxOccupationTime = opts.maxOccupationTime || AsyncLock2.DEFAULT_MAX_OCCUPATION_TIME;
this.maxExecutionTime = opts.maxExecutionTime || AsyncLock2.DEFAULT_MAX_EXECUTION_TIME;
if (opts.maxPending === Infinity || Number.isInteger(opts.maxPending) && opts.maxPending >= 0) {
this.maxPending = opts.maxPending;
} else {
@@ -1894,6 +1895,7 @@ var require_lib = __commonJS({
};
AsyncLock2.DEFAULT_TIMEOUT = 0;
AsyncLock2.DEFAULT_MAX_OCCUPATION_TIME = 0;
AsyncLock2.DEFAULT_MAX_EXECUTION_TIME = 0;
AsyncLock2.DEFAULT_MAX_PENDING = 1e3;
AsyncLock2.prototype.acquire = function(key2, fn, cb, opts) {
if (Array.isArray(key2)) {
@@ -1917,12 +1919,17 @@ var require_lib = __commonJS({
var resolved = false;
var timer = null;
var occupationTimer = null;
var executionTimer = null;
var self3 = this;
var done = function(locked, err, ret) {
if (occupationTimer) {
clearTimeout(occupationTimer);
occupationTimer = null;
}
if (executionTimer) {
clearTimeout(executionTimer);
executionTimer = null;
}
if (locked) {
if (!!self3.queues[key2] && self3.queues[key2].length === 0) {
delete self3.queues[key2];
@@ -1962,6 +1969,14 @@ var require_lib = __commonJS({
if (self3.domainReentrant && locked) {
self3.domains[key2] = process.domain;
}
var maxExecutionTime = opts.maxExecutionTime || self3.maxExecutionTime;
if (maxExecutionTime) {
executionTimer = setTimeout(function() {
if (!!self3.queues[key2]) {
done(locked, new Error("Maximum execution time is exceeded " + key2));
}
}, maxExecutionTime);
}
if (fn.length === 1) {
var called = false;
try {
@@ -19625,10 +19640,10 @@ var IsomorphicGit = class extends GitManager {
fs: this.fs,
dir: this.plugin.settings.basePath,
onAuth: () => {
var _a2;
var _a2, _b;
return {
username: this.plugin.settings.username,
password: (_a2 = this.plugin.localStorage.getPassword()) != null ? _a2 : void 0
username: (_a2 = this.plugin.localStorage.getUsername()) != null ? _a2 : void 0,
password: (_b = this.plugin.localStorage.getPassword()) != null ? _b : void 0
};
},
onAuthFailure: async () => {
@@ -19637,8 +19652,7 @@ var IsomorphicGit = class extends GitManager {
if (username) {
const password = await new GeneralModal({ placeholder: "Specify your password/personal access token" }).open();
if (password) {
this.plugin.settings.username = username;
await this.plugin.saveSettings();
this.plugin.localStorage.setUsername(username);
this.plugin.localStorage.setPassword(password);
return {
username,
@@ -19683,17 +19697,22 @@ var IsomorphicGit = class extends GitManager {
}
}
async status() {
const notice = new import_obsidian5.Notice("Getting status...", this.noticeLength);
let notice;
const timeout = window.setTimeout(function() {
notice = new import_obsidian5.Notice("This takes longer: Getting status", this.noticeLength);
}, 2e4);
try {
this.plugin.setState(PluginState.status);
const status2 = (await this.wrapFS(isomorphic_git_default.statusMatrix({ ...this.getRepo() }))).map((row) => this.getFileStatusResult(row));
const changed = status2.filter((fileStatus) => fileStatus.working_dir !== " ");
const staged = status2.filter((fileStatus) => fileStatus.index !== " " && fileStatus.index !== "U");
const conflicted = [];
notice.hide();
window.clearTimeout(timeout);
notice == null ? void 0 : notice.hide();
return { changed, staged, conflicted };
} catch (error) {
notice.hide();
window.clearTimeout(timeout);
notice == null ? void 0 : notice.hide();
this.plugin.displayError(error);
throw error;
}
@@ -19831,7 +19850,7 @@ var IsomorphicGit = class extends GitManager {
return this.wrapFS(isomorphic_git_default.resolveRef({ ...this.getRepo(), ref }));
}
async pull() {
const progressNotice = new import_obsidian5.Notice("Initializing pull", this.noticeLength);
const progressNotice = this.showNotice("Initializing pull");
try {
this.plugin.setState(PluginState.pull);
const localCommit = await this.resolveRef("HEAD");
@@ -19847,11 +19866,13 @@ var IsomorphicGit = class extends GitManager {
...this.getRepo(),
ref: branchInfo.current,
onProgress: (progress) => {
progressNotice.noticeEl.innerText = this.getProgressText("Checkout", progress);
if (progressNotice !== void 0) {
progressNotice.noticeEl.innerText = this.getProgressText("Checkout", progress);
}
},
remote: branchInfo.remote
}));
progressNotice.hide();
progressNotice == null ? void 0 : progressNotice.hide();
const upstreamCommit = await this.resolveRef("HEAD");
this.plugin.lastUpdate = Date.now();
const changedFiles = await this.getFileChangesCount(localCommit, upstreamCommit);
@@ -19863,7 +19884,7 @@ var IsomorphicGit = class extends GitManager {
vault_path: this.getVaultPath(file.path)
}));
} catch (error) {
progressNotice.hide();
progressNotice == null ? void 0 : progressNotice.hide();
if (error instanceof Errors.MergeConflictError) {
this.plugin.handleConflict(error.data.filepaths.map((file) => this.getVaultPath(file)));
}
@@ -19875,7 +19896,7 @@ var IsomorphicGit = class extends GitManager {
if (!await this.canPush()) {
return 0;
}
const progressNotice = new import_obsidian5.Notice("Initializing push", this.noticeLength);
const progressNotice = this.showNotice("Initializing push");
try {
this.plugin.setState(PluginState.status);
const status2 = await this.branchInfo();
@@ -19886,13 +19907,15 @@ var IsomorphicGit = class extends GitManager {
await this.wrapFS(isomorphic_git_default.push({
...this.getRepo(),
onProgress: (progress) => {
progressNotice.noticeEl.innerText = this.getProgressText("Pushing", progress);
if (progressNotice !== void 0) {
progressNotice.noticeEl.innerText = this.getProgressText("Pushing", progress);
}
}
}));
progressNotice.hide();
progressNotice == null ? void 0 : progressNotice.hide();
return numChangedFiles;
} catch (error) {
progressNotice.hide();
progressNotice == null ? void 0 : progressNotice.hide();
this.plugin.displayError(error);
throw error;
}
@@ -19973,19 +19996,21 @@ var IsomorphicGit = class extends GitManager {
}
}
async clone(url, dir) {
const progressNotice = new import_obsidian5.Notice("Initializing clone", this.noticeLength);
const progressNotice = this.showNotice("Initializing clone");
try {
await this.wrapFS(isomorphic_git_default.clone({
...this.getRepo(),
dir,
url,
onProgress: (progress) => {
progressNotice.noticeEl.innerText = this.getProgressText("Cloning", progress);
if (progressNotice !== void 0) {
progressNotice.noticeEl.innerText = this.getProgressText("Cloning", progress);
}
}
}));
progressNotice.hide();
progressNotice == null ? void 0 : progressNotice.hide();
} catch (error) {
progressNotice.hide();
progressNotice == null ? void 0 : progressNotice.hide();
this.plugin.displayError(error);
throw error;
}
@@ -20014,26 +20039,28 @@ var IsomorphicGit = class extends GitManager {
}
}
async fetch(remote) {
const progressNotice = new import_obsidian5.Notice("Initializing fetch", this.noticeLength);
const progressNotice = this.showNotice("Initializing fetch");
try {
const args = {
...this.getRepo(),
onProgress: (progress) => {
progressNotice.noticeEl.innerText = this.getProgressText("Fetching", progress);
if (progressNotice !== void 0) {
progressNotice.noticeEl.innerText = this.getProgressText("Fetching", progress);
}
},
remote: remote != null ? remote : await this.getCurrentRemote()
};
await this.wrapFS(isomorphic_git_default.fetch(args));
progressNotice.hide();
progressNotice == null ? void 0 : progressNotice.hide();
} catch (error) {
this.plugin.displayError(error);
progressNotice.hide();
progressNotice == null ? void 0 : progressNotice.hide();
throw error;
}
}
async setRemote(name, url) {
try {
await this.wrapFS(isomorphic_git_default.addRemote({ ...this.getRepo(), remote: name, url }));
await this.wrapFS(isomorphic_git_default.addRemote({ ...this.getRepo(), remote: name, url, force: true }));
} catch (error) {
this.plugin.displayError(error);
throw error;
@@ -20053,7 +20080,8 @@ var IsomorphicGit = class extends GitManager {
await this.wrapFS(isomorphic_git_default.deleteRemote({ ...this.getRepo(), remote: remoteName }));
}
async getRemoteUrl(remote) {
return (await this.wrapFS(isomorphic_git_default.listRemotes({ ...this.getRepo() }))).filter((item) => item.remote == remote)[0].url;
var _a2;
return (_a2 = (await this.wrapFS(isomorphic_git_default.listRemotes({ ...this.getRepo() }))).filter((item) => item.remote == remote)[0]) == null ? void 0 : _a2.url;
}
updateBasePath(basePath) {
this.getRepo().dir = basePath;
@@ -20122,7 +20150,10 @@ var IsomorphicGit = class extends GitManager {
});
}
async getUnstagedFiles(base = ".") {
const notice = new import_obsidian5.Notice("Getting status...", this.noticeLength);
let notice;
const timeout = window.setTimeout(function() {
notice = new import_obsidian5.Notice("This takes longer: Getting status", this.noticeLength);
}, 2e4);
try {
const repo = this.getRepo();
const res = await this.wrapFS(isomorphic_git_default.walk({
@@ -20174,10 +20205,12 @@ var IsomorphicGit = class extends GitManager {
return null;
}
}));
notice.hide();
window.clearTimeout(timeout);
notice == null ? void 0 : notice.hide();
return res;
} catch (error) {
notice.hide();
window.clearTimeout(timeout);
notice == null ? void 0 : notice.hide();
this.plugin.displayError(error);
throw error;
}
@@ -20221,6 +20254,11 @@ var IsomorphicGit = class extends GitManager {
vault_path: this.getVaultPath(row[this.FILE])
};
}
showNotice(message) {
if (!this.plugin.settings.disablePopups) {
return new import_obsidian5.Notice(message, this.noticeLength);
}
}
};
function fromValue2(value) {
let queue = [value];
@@ -23795,6 +23833,32 @@ function abortPlugin(signal) {
};
return [onSpawnBefore, onSpawnAfter];
}
function isConfigSwitch(arg) {
return arg.trim().toLowerCase() === "-c";
}
function preventProtocolOverride(arg, next) {
if (!isConfigSwitch(arg)) {
return;
}
if (!/^\s*protocol(.[a-z]+)?.allow/.test(next)) {
return;
}
throw new GitPluginError(void 0, "unsafe", "Configuring protocol.allow is not permitted without enabling allowUnsafeExtProtocol");
}
function blockUnsafeOperationsPlugin({
allowUnsafeProtocolOverride = false
} = {}) {
return {
type: "spawn.args",
action(args, _context) {
args.forEach((current, index2) => {
const next = index2 < args.length ? args[index2 + 1] : "";
allowUnsafeProtocolOverride || preventProtocolOverride(current, next);
});
return args;
}
};
}
init_utils();
function commandConfigPrefixingPlugin(configuration) {
const prefix = prefixedArray(configuration, "-c");
@@ -24023,6 +24087,7 @@ function gitInstanceFactory(baseDir, options) {
if (Array.isArray(config.config)) {
plugins.add(commandConfigPrefixingPlugin(config.config));
}
plugins.add(blockUnsafeOperationsPlugin(config.unsafe));
plugins.add(completionDetectionPlugin(config.completion));
config.abort && plugins.add(abortPlugin(config.abort));
config.progress && plugins.add(progressMonitorPlugin(config.progress));
@@ -24058,7 +24123,14 @@ var SimpleGit = class extends GitManager {
binary: this.plugin.localStorage.getGitPath() || void 0,
config: ["core.quotepath=off"]
});
this.git.cwd(await this.git.revparse("--show-toplevel"));
const env = this.plugin.localStorage.getPATHPaths();
if (env.length > 0) {
const path3 = process.env["PATH"] + ":" + env.join(":");
process.env["PATH"] = path3;
}
const debug2 = require_browser();
debug2.enable("simple-git");
await this.git.cwd(await this.git.revparse("--show-toplevel"));
}
}
async status() {
@@ -24300,10 +24372,14 @@ var SimpleGit = class extends GitManager {
await this.git.clone(url, path.join(this.app.vault.adapter.getBasePath(), dir), [], (err) => this.onError(err));
}
async setConfig(path2, value) {
await this.git.addConfig(path2, value, (err) => this.onError(err));
if (value == void 0) {
await this.git.raw(["config", "--local", "--unset", path2]);
} else {
await this.git.addConfig(path2, value, (err) => this.onError(err));
}
}
async getConfig(path2) {
const config = await this.git.listConfig((err) => this.onError(err));
const config = await this.git.listConfig("local", (err) => this.onError(err));
return config.all[path2];
}
async fetch(remote) {
@@ -24377,7 +24453,7 @@ var SimpleGit = class extends GitManager {
}
onError(error) {
if (error) {
const networkFailure = error.message.contains("Could not resolve host") || error.message.match(/ssh: connect to host .*? port .*?: Operation timed out/);
const networkFailure = error.message.contains("Could not resolve host") || error.message.match(/ssh: connect to host .*? port .*?: Operation timed out/) || error.message.match(/ssh: connect to host .*? port .*?: Network is unreachable/);
if (!networkFailure) {
this.plugin.displayError(error.message);
this.plugin.setState(PluginState.idle);
@@ -24435,7 +24511,7 @@ var ObsidianGitSettingsTab = class extends import_obsidian7.PluginSettingTab {
new import_obsidian7.Notice("Please specify a valid number.");
}
}));
new import_obsidian7.Setting(containerEl).setName(`If turned on, do auto ${commitOrBackup} every X minutes after last change. Prevents auto ${commitOrBackup} while editing a file. If turned off, do auto ${commitOrBackup} every X minutes. It's independent from last change.`).addToggle((toggle) => toggle.setValue(plugin.settings.autoBackupAfterFileChange).onChange((value) => {
new import_obsidian7.Setting(containerEl).setName(`Auto Backup after Filechange`).setDesc(`If turned on, do auto ${commitOrBackup} every ${plugin.settings.autoSaveInterval} minutes after last change. This also prevents auto ${commitOrBackup} while editing a file. If turned off, it's independent from last the change.`).addToggle((toggle) => toggle.setValue(plugin.settings.autoBackupAfterFileChange).onChange((value) => {
plugin.settings.autoBackupAfterFileChange = value;
plugin.saveSettings();
plugin.clearAutoBackup();
@@ -24564,6 +24640,43 @@ var ObsidianGitSettingsTab = class extends import_obsidian7.PluginSettingTab {
plugin.saveSettings();
}));
containerEl.createEl("br");
if (plugin.gitManager instanceof IsomorphicGit) {
containerEl.createEl("h3", { text: "Authentication/Commit Author" });
} else {
containerEl.createEl("h3", { text: "Commit Author" });
}
if (plugin.gitManager instanceof IsomorphicGit)
new import_obsidian7.Setting(containerEl).setName("Username on your git server. E.g. your username on GitHub").addText((cb) => {
var _a2;
cb.setValue((_a2 = plugin.localStorage.getUsername()) != null ? _a2 : "");
cb.onChange((value) => {
plugin.localStorage.setUsername(value);
});
});
if (plugin.gitManager instanceof IsomorphicGit)
new import_obsidian7.Setting(containerEl).setName("Password/Personal access token").setDesc("Type in your password. You won't be able to see it again.").addText((cb) => {
cb.inputEl.autocapitalize = "off";
cb.inputEl.autocomplete = "off";
cb.inputEl.spellcheck = false;
cb.onChange((value) => {
plugin.localStorage.setPassword(value);
});
});
if (gitReady)
new import_obsidian7.Setting(containerEl).setName("Author name for commit").addText(async (cb) => {
cb.setValue(await plugin.gitManager.getConfig("user.name"));
cb.onChange((value) => {
plugin.gitManager.setConfig("user.name", value == "" ? void 0 : value);
});
});
if (gitReady)
new import_obsidian7.Setting(containerEl).setName("Author email for commit").addText(async (cb) => {
cb.setValue(await plugin.gitManager.getConfig("user.email"));
cb.onChange((value) => {
plugin.gitManager.setConfig("user.email", value == "" ? void 0 : value);
});
});
containerEl.createEl("br");
containerEl.createEl("h3", { text: "Advanced" });
if (plugin.gitManager instanceof SimpleGit)
new import_obsidian7.Setting(containerEl).setName("Update submodules").setDesc('"Create backup" and "pull" takes care of submodules. Missing features: Conflicted files, count of pulled/pushed/committed files. Tracking branch needs to be set for each submodule').addToggle((toggle) => toggle.setValue(plugin.settings.updateSubmodules).onChange((value) => {
@@ -24580,35 +24693,19 @@ var ObsidianGitSettingsTab = class extends import_obsidian7.PluginSettingTab {
plugin.gitManager.updateGitPath(value || "git");
});
});
if (plugin.gitManager instanceof IsomorphicGit)
new import_obsidian7.Setting(containerEl).setName("Username on your git server. E.g. your username on GitHub").addText((cb) => {
cb.setValue(plugin.settings.username);
if (plugin.gitManager instanceof SimpleGit)
new import_obsidian7.Setting(containerEl).setName("Additional PATH environment variable paths").setDesc("Use each line for one path").addTextArea((cb) => {
cb.setValue(plugin.localStorage.getPATHPaths().join("\n"));
cb.onChange((value) => {
plugin.settings.username = value;
plugin.saveSettings();
plugin.localStorage.setPATHPaths(value.split("\n"));
});
});
if (plugin.gitManager instanceof IsomorphicGit)
new import_obsidian7.Setting(containerEl).setName("Password/Personal access token").setDesc("Type in your password. You won't be able to see it again.").addText((cb) => {
cb.inputEl.autocapitalize = "off";
cb.inputEl.autocomplete = "off";
cb.inputEl.spellcheck = false;
cb.onChange((value) => {
plugin.localStorage.setPassword(value);
});
});
if (gitReady)
new import_obsidian7.Setting(containerEl).setName("Author name for commit").addText(async (cb) => {
cb.setValue(await plugin.gitManager.getConfig("user.name"));
cb.onChange((value) => {
plugin.gitManager.setConfig("user.name", value);
});
});
if (gitReady)
new import_obsidian7.Setting(containerEl).setName("Author email for commit").addText(async (cb) => {
cb.setValue(await plugin.gitManager.getConfig("user.email"));
cb.onChange((value) => {
plugin.gitManager.setConfig("user.email", value);
if (plugin.gitManager instanceof SimpleGit)
new import_obsidian7.Setting(containerEl).setName("Reload with new PATH environment variable").addButton((cb) => {
cb.setButtonText("Reload");
cb.setCta();
cb.onClick(() => {
plugin.gitManager.setGitInstance();
});
});
new import_obsidian7.Setting(containerEl).setName("Custom base path (Git repository path)").setDesc(`
@@ -24852,7 +24949,6 @@ var DEFAULT_SETTINGS = {
basePath: "",
differentIntervalCommitAndPush: false,
changedFilesInStatusBar: false,
username: "",
showedMobileNotice: false,
refreshSourceControlTimer: 7e3,
showBranchStatusBar: true
@@ -24893,6 +24989,12 @@ var LocalStorageSettings = class {
setPassword(value) {
return app.saveLocalStorage(this.prefix + "password", value);
}
getUsername() {
return app.loadLocalStorage(this.prefix + "username");
}
setUsername(value) {
return app.saveLocalStorage(this.prefix + "username", value);
}
getHostname() {
return app.loadLocalStorage(this.prefix + "hostname");
}
@@ -24929,6 +25031,13 @@ var LocalStorageSettings = class {
setGitPath(value) {
return app.saveLocalStorage(this.prefix + "gitPath", value);
}
getPATHPaths() {
var _a2, _b;
return (_b = (_a2 = app.loadLocalStorage(this.prefix + "PATHPaths")) == null ? void 0 : _a2.split(":")) != null ? _b : [];
}
setPATHPaths(value) {
return app.saveLocalStorage(this.prefix + "PATHPaths", value.join(":"));
}
getPluginDisabled() {
return app.loadLocalStorage(this.prefix + "pluginDisabled") == "true";
}
@@ -26757,7 +26866,9 @@ function insert(target, node, anchor) {
target.insertBefore(node, anchor || null);
}
function detach(node) {
node.parentNode.removeChild(node);
if (node.parentNode) {
node.parentNode.removeChild(node);
}
}
function destroy_each(iterations, detaching) {
for (let i = 0; i < iterations.length; i += 1) {
@@ -30581,7 +30692,14 @@ var ObsidianGit = class extends import_obsidian23.Plugin {
if (checking) {
return file !== null;
} else {
(_a2 = getNewLeaf()) == null ? void 0 : _a2.setViewState({ type: DIFF_VIEW_CONFIG.type, state: { staged: false, file: file.path } });
(_a2 = getNewLeaf()) == null ? void 0 : _a2.setViewState({
type: DIFF_VIEW_CONFIG.type,
active: true,
state: {
staged: false,
file: file.path
}
});
}
}
});
@@ -30846,6 +30964,11 @@ var ObsidianGit = class extends import_obsidian23.Plugin {
this.settings.gitPath = void 0;
await this.saveSettings();
}
if (this.settings.username != void 0) {
this.localStorage.setPassword(this.settings.username);
this.settings.username = void 0;
await this.saveSettings();
}
}
unloadPlugin() {
this.gitReady = false;
@@ -31465,20 +31588,6 @@ var ObsidianGit = class extends import_obsidian23.Plugin {
* @author Feross Aboukhadijeh <https://feross.org>
* @license MIT
*/
/*! *****************************************************************************
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.
***************************************************************************** */
/*! crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */
/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */
/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */

View File

@@ -4,5 +4,5 @@
"description": "Backup your vault with Git.",
"isDesktopOnly": false,
"js": "main.js",
"version": "2.8.0"
"version": "2.10.2"
}

File diff suppressed because one or more lines are too long

View File

@@ -1,7 +1,7 @@
{
"id": "obsidian-icon-folder",
"name": "Icon Folder",
"version": "1.3.5",
"version": "1.4.1",
"minAppVersion": "0.9.12",
"description": "This plugin allows to add an emoji or an icon to a folder or file.",
"author": "Florian Woelki",

View File

@@ -2,18 +2,14 @@
"ruleConfigs": {
"Escape YAML Special Characters": {
"Escapes colons with a space after them (: ), single quotes ('), and double quotes (\") in YAML.": false,
"Default Escape Character": "\"",
"Try to Escape Single Line Arrays": false,
"Force Yaml Escape on Keys": ""
"Try to Escape Single Line Arrays": false
},
"Format Tags in YAML": {
"Remove Hashtags from tags in the YAML frontmatter, as they make the tags there invalid.": false
},
"Format Yaml Array": {
"Allows for the formatting of regular yaml arrays as either multi-line or single-line and `tags` and `aliases` are allowed to have some Obsidian specific yaml formats. Note that single string to single-line goes from a single string entry to a single-line array if more than 1 entry is present. The same is true for single string to multi-line except it becomes a multi-line array.": false,
"Yaml aliases section style": "single-line",
"Format yaml aliases section": true,
"Yaml tags section style": "single-line",
"Format yaml tags section": true,
"Default yaml array section style": "single-line",
"Format yaml array sections": true,
@@ -26,9 +22,8 @@
},
"Move Tags to Yaml": {
"Move all tags to Yaml frontmatter of the document.": false,
"Yaml tags section style": "single-line",
"Remove the hashtag from tags in content body": false,
"Tags to ignore": ""
"Tags to ignore": "",
"Body tag operation": "Nothing"
},
"Remove YAML Keys": {
"Removes the YAML keys specified": false,
@@ -54,13 +49,12 @@
},
"YAML Title Alias": {
"Inserts the title of the file into the YAML frontmatter's aliases section. Gets the title from the first H1 or filename.": false,
"YAML aliases section style": "Multi-line array",
"Preserve existing aliases section style": true,
"Keep alias that matches the filename": false,
"Use the YAML key `linter-yaml-title-alias` to help with filename and heading changes": true
},
"Capitalize Headings": {
"Headings should be formatted with capitalization": false,
"Headings should be formatted with capitalization": true,
"Style": "Title Case",
"Ignore Cased Words": true,
"Ignore Words": "macOS, iOS, iPhone, iPad, JavaScript, TypeScript, AppleScript",
@@ -82,31 +76,31 @@
"Re-indexes footnote keys and footnote, based on the order of occurrence (NOTE: This rule deliberately does *not* preserve the relation between key and footnote, to be able to re-index duplicate keys.)": false
},
"Convert Bullet List Markers": {
"Converts common bullet list marker symbols to markdown list markers.": false
"Converts common bullet list marker symbols to markdown list markers.": true
},
"Emphasis Style": {
"Makes sure the emphasis style is consistent.": false,
"Makes sure the emphasis style is consistent.": true,
"Style": "consistent"
},
"No Bare URLs": {
"Encloses bare URLs with angle brackets except when enclosed in back ticks, square braces, or single or double quotes.": false
"Encloses bare URLs with angle brackets except when enclosed in back ticks, square braces, or single or double quotes.": true
},
"Ordered List Style": {
"Makes sure that ordered lists follow the style specified. Note that 2 spaces or 1 tab is considered to be an indentation level.": false,
"Makes sure that ordered lists follow the style specified. Note that 2 spaces or 1 tab is considered to be an indentation level.": true,
"Number Style": "ascending",
"Ordered List Indicator End Style": "."
},
"Proper Ellipsis": {
"Replaces three consecutive dots with an ellipsis.": false
"Replaces three consecutive dots with an ellipsis.": true
},
"Remove Consecutive List Markers": {
"Removes consecutive list markers. Useful when copy-pasting list items.": false
"Removes consecutive list markers. Useful when copy-pasting list items.": true
},
"Remove Empty List Markers": {
"Removes empty list markers, i.e. list items without content.": false
"Removes empty list markers, i.e. list items without content.": true
},
"Remove Hyphenated Line Breaks": {
"Removes hyphenated line breaks. Useful when pasting text from textbooks.": false
"Removes hyphenated line breaks. Useful when pasting text from textbooks.": true
},
"Remove Multiple Spaces": {
"Removes two or more consecutive spaces. Ignores spaces at the beginning and ending of the line. ": false
@@ -119,8 +113,8 @@
"Makes sure that two spaces are added to the ends of lines with content continued on the next line for paragraphs, blockquotes, and list items": false
},
"Unordered List Style": {
"Makes sure that unordered lists follow the style specified.": false,
"List item style": "consistent"
"Makes sure that unordered lists follow the style specified.": true,
"List item style": "-"
},
"Compact YAML": {
"Removes leading and trailing blank lines in the YAML front matter.": false,
@@ -140,7 +134,7 @@
"Ensures that there is an empty line around code fences unless they start or end a document.": false
},
"Empty Line Around Tables": {
"Ensures that there is an empty line around github flavored tables unless they start or end a document.": false
"Ensures that there is an empty line around github flavored tables unless they start or end a document.": true
},
"Heading blank lines": {
"All headings have a blank line both before and after (except where the heading is at the beginning or end of the document).": false,
@@ -171,6 +165,40 @@
"Trailing spaces": {
"Removes extra spaces after every line.": false,
"Two Space Linebreak": false
},
"Force YAML Escape": {
"Escapes the values for the specified YAML keys.": false,
"Force YAML Escape on Keys": ""
},
"Empty Line Around Math Blocks": {
"Ensures that there is an empty line around math blocks using `Number of Dollar Signs to Indicate a Math Block` to determine how many dollar signs indicates a math block for single-line math.": true
},
"Move Math Block Indicators to Their Own Line": {
"Move all starting and ending math block indicators to their own lines using `Number of Dollar Signs to Indicate a Math Block` to determine how many dollar signs indicates a math block for single-line math.": false
},
"Add Blockquote Indentation on Paste": {
"Adds blockquotes to all but the first line, when the cursor is in a blockquote/callout line during pasting": false
},
"Prevent Double Checklist Indicator on Paste": {
"Removes starting checklist indicator from the text to paste if the line the cursor is on in the file has a checklist indicator": false
},
"Prevent Double List Item Indicator on Paste": {
"Removes starting list indicator from the text to paste if the line the cursor is on in the file has a list indicator": false
},
"Proper Ellipsis on Paste": {
"Replaces three consecutive dots with an ellipsis even if they have a space between them in the text to paste": false
},
"Remove Hyphens on Paste": {
"Removes hyphens from the text to paste": false
},
"Remove Leading or Trailing Whitespace on Paste": {
"Removes any leading non-tab whitespace and all trailing whitespace for the text to paste": false
},
"Remove Leftover Footnotes from Quote on Paste": {
"Removes any leftover footnote references for the text to paste": false
},
"Remove Multiple Blank Lines on Paste": {
"Condenses multiple blank lines down into one blank line for the text to paste": false
}
},
"lintOnSave": false,
@@ -178,5 +206,11 @@
"foldersToIgnore": [],
"linterLocale": "system-default",
"logLevel": 4,
"lintCommands": []
"lintCommands": [],
"commonStyles": {
"aliasArrayStyle": "single-line",
"tagArrayStyle": "single-line",
"minimumNumberOfDollarSignsToBeAMathBlock": 2,
"escapeCharacter": "\""
}
}

File diff suppressed because one or more lines are too long

View File

@@ -1,9 +1,9 @@
{
"id": "obsidian-linter",
"name": "Linter",
"version": "1.6.0",
"version": "1.7.1",
"minAppVersion": "0.15.6",
"description": "Enforces consistent markdown styling.",
"description": "Formats and styles your notes. It can be used to format YAML tags, aliases, arrays, and metadata; footnotes; headings; spacing; math blocks; regular markdown contents like list, italics, and bold styles; and more with the use of custom rule options as well.",
"author": "Victor Tao",
"authorUrl": "https://github.com/platers",
"isDesktopOnly": false

View File

@@ -128,6 +128,8 @@
/** Hide linter element css
* Based on https://zellwk.com/blog/hide-content-accessibly/
*/
.linter-navigation-item:not(.linter-navigation-item-selected) > span:nth-child(2),
.linter-visually-hidden {
border: 0;
clip: rect(0 0 0 0);

View File

@@ -1,9 +1,9 @@
{
"couchDB_URI": "http://couchdb.patalong.pl:88",
"couchDB_URI": "http://couchdb.patalong.pl:44404",
"couchDB_USER": "peter",
"couchDB_PASSWORD": "ZAQ!2wsx",
"couchDB_DBNAME": "polsl-obsidian-teleinf",
"liveSync": true,
"liveSync": false,
"syncOnSave": false,
"syncOnStart": false,
"savingDelay": 200,
@@ -15,8 +15,8 @@
"showVerboseLog": false,
"suspendFileWatching": false,
"trashInsteadDelete": true,
"periodicReplication": false,
"periodicReplicationInterval": 60,
"periodicReplication": true,
"periodicReplicationInterval": 30,
"syncOnFileOpen": false,
"encrypt": false,
"passphrase": "",

View File

@@ -1483,7 +1483,8 @@ var DEFAULT_SETTINGS = {
syncOnlyRegEx: "",
customChunkSize: 0,
readChunksOnline: true,
watchInternalFileChanges: true
watchInternalFileChanges: true,
automaticallyDeleteMetadataOfDeletedFiles: 0
};
var FLAGMD_REDFLAG = "redflag.md";
var SYNCINFO_ID = "syncinfo";
@@ -3059,13 +3060,11 @@ var LocalPouchDBBase = class {
let plainSplit = false;
let cacheUsed = 0;
const userPasswordHash = this.h32Raw(new TextEncoder().encode(this.settings.passphrase));
const minimumChunkSize = this.settings.minimumChunkSize;
if (!saveAsBigChunk && shouldSplitAsPlainText(note._id)) {
pieceSize = MAX_DOC_SIZE;
plainSplit = true;
}
const minimumChunkSize = Math.min(Math.max(40, ~~(note.data.length / 100)), maxChunkSize);
if (pieceSize < minimumChunkSize)
pieceSize = minimumChunkSize;
const newLeafs = [];
const pieces = splitPieces2(note.data, pieceSize, plainSplit, minimumChunkSize, 0);
for (const piece of pieces()) {
@@ -3421,6 +3420,13 @@ var LocalPouchDBBase = class {
this.replicationErrored(e3);
Logger("Replication stopped.", showResult ? LOG_LEVEL.NOTICE : LOG_LEVEL.INFO, "sync");
if (this.getLastPostFailedBySize()) {
if ("status" in e3 && e3.status == 413) {
Logger(`Self-hosted LiveSync has detected some remote-database-incompatible chunks that exist in the local database. It means synchronization with the server had been no longer possible.
The problem may be caused by chunks that were created with the faulty version or by switching platforms of the database.
To solve the circumstance, configure the remote database correctly or we have to rebuild both local and remote databases.`, LOG_LEVEL.NOTICE);
return;
}
const tempSetting = JSON.parse(JSON.stringify(setting));
tempSetting.batch_size = Math.ceil(tempSetting.batch_size / 2) + 2;
tempSetting.batches_limit = Math.ceil(tempSetting.batches_limit / 2) + 2;
@@ -10121,7 +10127,7 @@ var LocalPouchDB = class extends LocalPouchDBBase {
await this.kvDB.destroy();
}
getLastPostFailedBySize() {
return this.last_successful_post;
return !this.last_successful_post;
}
async fetchByAPI(request) {
var _a, _b;
@@ -10162,7 +10168,7 @@ var LocalPouchDB = class extends LocalPouchDBBase {
const method = (_a = opts.method) != null ? _a : "GET";
if (opts.body) {
const opts_length = opts.body.toString().length;
if (opts_length > 1024 * 1024 * 10) {
if (opts_length > 1e3 * 1e3 * 10) {
if (isCloudantURI(uri)) {
this.last_successful_post = false;
Logger("This request should fail on IBM Cloudant.", LOG_LEVEL.VERBOSE);
@@ -10309,8 +10315,8 @@ var ConflictResolveModal = class extends import_obsidian4.Modal {
diff = diff.replace(/\n/g, "<br>");
div.innerHTML = diff;
const div2 = contentEl.createDiv("");
const date1 = new Date(this.result.left.mtime).toLocaleString();
const date2 = new Date(this.result.right.mtime).toLocaleString();
const date1 = new Date(this.result.left.mtime).toLocaleString() + (this.result.left.deleted ? " (Deleted)" : "");
const date2 = new Date(this.result.right.mtime).toLocaleString() + (this.result.right.deleted ? " (Deleted)" : "");
div2.innerHTML = `
<span class='deleted'>A:${date1}</span><br /><span class='added'>B:${date2}</span><br>
`;
@@ -10440,8 +10446,8 @@ var ObsidianLiveSyncSettingTab = class extends import_obsidian5.PluginSettingTab
const containerInformationEl = containerEl.createDiv();
const h3El = containerInformationEl.createEl("h3", { text: "Updates" });
const informationDivEl = containerInformationEl.createEl("div", { text: "" });
const manifestVersion = "0.16.4";
const updateInformation = "### 0.16.0\n- Now hidden files need not be scanned. Changes will be detected automatically.\n - If you want it to back to its previous behaviour, please disable `Monitor changes to internal files`.\n - Due to using an internal API, this feature may become unusable with a major update. If this happens, please disable this once.\n\n#### Minors\n\n- 0.16.1 Added missing log updates.\n- 0.16.2 Fixed many problems caused by combinations of `Sync On Save` and the tracking logic that changed at 0.15.6.\n- 0.16.3\n - Fixed detection of IBM Cloudant (And if there are some issues, be fixed automatically).\n - A configuration information reporting tool has been implemented.\n- 0.16.4 Fixed detection failure. Please set the `Chunk size` again when using a self-hosted database.\n\n### 0.15.0\n- Outdated configuration items have been removed.\n- Setup wizard has been implemented!\n\nI appreciate for reviewing and giving me advice @Pouhon158!\n\n#### Minors\n- 0.15.1 Missed the stylesheet.\n- 0.15.2 The wizard has been improved and documented!\n- 0.15.3 Fixed the issue about locking/unlocking remote database while rebuilding in the wizard.\n- 0.15.4 Fixed issues about asynchronous processing (e.g., Conflict check or hidden file detection)\n- 0.15.5 Add new features for setting Self-hosted LiveSync up more easier.\n- 0.15.6 File tracking logic has been refined.\n- 0.15.7 Fixed bug about renaming file.\n- 0.15.8 Fixed bug about deleting empty directory, weird behaviour on boot-sequence on mobile devices.\n- 0.15.9 Improved chunk retrieving, now chunks are retrieved in batch on continuous requests.\n- 0.15.10 Fixed:\n - The boot sequence has been corrected and now boots smoothly.\n - Auto applying of batch save will be processed earlier than before.\n\n... To continue on to `updates_old.md`.";
const manifestVersion = "0.16.6";
const updateInformation = "### 0.16.0\n- Now hidden files need not be scanned. Changes will be detected automatically.\n - If you want it to back to its previous behaviour, please disable `Monitor changes to internal files`.\n - Due to using an internal API, this feature may become unusable with a major update. If this happens, please disable this once.\n\n#### Minors\n\n- 0.16.1 Added missing log updates.\n- 0.16.2 Fixed many problems caused by combinations of `Sync On Save` and the tracking logic that changed at 0.15.6.\n- 0.16.3\n - Fixed detection of IBM Cloudant (And if there are some issues, be fixed automatically).\n - A configuration information reporting tool has been implemented.\n- 0.16.4 Fixed detection failure. Please set the `Chunk size` again when using a self-hosted database.\n- 0.16.5\n - Fixed\n - Conflict detection and merging now be able to treat deleted files.\n - Logs while the boot-up sequence has been tidied up.\n - Fixed incorrect log entries.\n - New Feature\n - The feature of automatically deleting old expired metadata has been implemented.\n We can configure it in `Delete old metadata of deleted files on start-up` in the `General Settings` pane.\n- 0.16.6\n - Fixed\n - Automatic (temporary) batch size adjustment has been restored to work correctly.\n - Chunk splitting has been backed to the previous behaviour for saving them correctly.\n - Improved\n - Corrupted chunks will be detected automatically.\n - Now on the case-insensitive system, `aaa.md` and `AAA.md` will be treated as the same file or path at applying changesets.\n\nNote:\nBefore 0.16.5, LiveSync had some issues making chunks. In this case, synchronisation had became been always failing after a corrupted one should be made. After 0.16.6, the corrupted chunk is automatically detected. Sorry for troubling you but please do `rebuild everything` when this plug-in notified so.\n\n### 0.15.0\n- Outdated configuration items have been removed.\n- Setup wizard has been implemented!\n\nI appreciate for reviewing and giving me advice @Pouhon158!\n\n#### Minors\n- 0.15.1 Missed the stylesheet.\n- 0.15.2 The wizard has been improved and documented!\n- 0.15.3 Fixed the issue about locking/unlocking remote database while rebuilding in the wizard.\n- 0.15.4 Fixed issues about asynchronous processing (e.g., Conflict check or hidden file detection)\n- 0.15.5 Add new features for setting Self-hosted LiveSync up more easier.\n- 0.15.6 File tracking logic has been refined.\n- 0.15.7 Fixed bug about renaming file.\n- 0.15.8 Fixed bug about deleting empty directory, weird behaviour on boot-sequence on mobile devices.\n- 0.15.9 Improved chunk retrieving, now chunks are retrieved in batch on continuous requests.\n- 0.15.10 Fixed:\n - The boot sequence has been corrected and now boots smoothly.\n - Auto applying of batch save will be processed earlier than before.\n\n... To continue on to `updates_old.md`.";
const lastVersion = ~~(versionNumberString2Number(manifestVersion) / 1e3);
const tmpDiv = createSpan();
tmpDiv.addClass("sls-header-button");
@@ -10915,6 +10921,17 @@ var ObsidianLiveSyncSettingTab = class extends import_obsidian5.PluginSettingTab
await this.plugin.saveSettings();
});
});
new import_obsidian5.Setting(containerGeneralSettingsEl).setName("Delete old metadata of deleted files on start-up").setClass("wizardHidden").setDesc("(Days passed, 0 to disable automatic-deletion)").addText((text2) => {
text2.setPlaceholder("").setValue(this.plugin.settings.automaticallyDeleteMetadataOfDeletedFiles + "").onChange(async (value) => {
let v = Number(value);
if (isNaN(v)) {
v = 0;
}
this.plugin.settings.automaticallyDeleteMetadataOfDeletedFiles = v;
await this.plugin.saveSettings();
});
text2.inputEl.setAttribute("type", "number");
});
addScreenElement("20", containerGeneralSettingsEl);
const containerSyncSettingEl = containerEl.createDiv();
containerSyncSettingEl.createEl("h3", { text: "Sync Settings" });
@@ -12825,6 +12842,14 @@ var ICHeader = "i:";
var ICHeaderEnd = "i;";
var ICHeaderLength = ICHeader.length;
var FileWatchEventQueueMax = 10;
function getAbstractFileByPath(path) {
var _a, _b;
if ("getAbstractFileByPathInsensitive" in app.vault && ((_b = (_a = app.vault.adapter) == null ? void 0 : _a.insensitive) != null ? _b : false)) {
return app.vault.getAbstractFileByPathInsensitive(path);
} else {
return app.vault.getAbstractFileByPath(path);
}
}
function isInternalChunk(str) {
return str.startsWith(ICHeader);
}
@@ -12865,7 +12890,7 @@ var askString = (app2, title, key, placeholder) => {
};
var touchedFiles = [];
function touch(file) {
const f = file instanceof import_obsidian8.TFile ? file : app.vault.getAbstractFileByPath(file);
const f = file instanceof import_obsidian8.TFile ? file : getAbstractFileByPath(file);
const key = `${f.path}-${f.stat.mtime}-${f.stat.size}`;
touchedFiles.unshift(key);
touchedFiles = touchedFiles.slice(0, 100);
@@ -12914,7 +12939,7 @@ var ObsidianLiveSyncPlugin = class extends import_obsidian8.Plugin {
return timer;
}
isRedFlagRaised() {
const redflag = this.app.vault.getAbstractFileByPath((0, import_obsidian8.normalizePath)(FLAGMD_REDFLAG));
const redflag = getAbstractFileByPath((0, import_obsidian8.normalizePath)(FLAGMD_REDFLAG));
if (redflag != null) {
return true;
}
@@ -12968,10 +12993,6 @@ var ObsidianLiveSyncPlugin = class extends import_obsidian8.Plugin {
continue;
if (isInternalChunk(row.id))
continue;
if (doc._deleted)
continue;
if ("deleted" in doc && doc.deleted)
continue;
if (doc.type == "newnote" || doc.type == "plain") {
notes.push({ path: id2path(doc._id), mtime: doc.mtime });
}
@@ -12990,15 +13011,53 @@ var ObsidianLiveSyncPlugin = class extends import_obsidian8.Plugin {
if (target) {
if (isInternalChunk(target)) {
} else {
await this.showIfConflicted(this.app.vault.getAbstractFileByPath(target));
await this.showIfConflicted(target);
}
}
}
async collectDeletedFiles() {
const pageLimit = 1e3;
let nextKey = "";
const limitDays = this.settings.automaticallyDeleteMetadataOfDeletedFiles;
if (limitDays <= 0)
return;
Logger(`Checking expired file history`);
const limit = Date.now() - 86400 * 1e3 * limitDays;
const notes = [];
do {
const docs = await this.localDatabase.localDatabase.allDocs({ limit: pageLimit, startkey: nextKey, conflicts: true, include_docs: true });
nextKey = "";
for (const row of docs.rows) {
const doc = row.doc;
nextKey = `${row.id}\u{10FFFF}`;
if (doc.type == "newnote" || doc.type == "plain") {
if (doc.deleted && doc.mtime - limit < 0) {
notes.push({ path: id2path(doc._id), mtime: doc.mtime, ttl: (doc.mtime - limit) / 1e3 / 86400, doc });
}
}
if (isChunk(nextKey)) {
nextKey = CHeaderEnd;
}
}
} while (nextKey != "");
if (notes.length == 0) {
Logger("There are no old documents");
Logger(`Checking expired file history done`);
return;
}
for (const v of notes) {
Logger(`Deletion history expired: ${v.path}`);
const delDoc = v.doc;
delDoc._deleted = true;
await this.localDatabase.localDatabase.put(delDoc);
}
Logger(`Checking expired file history done`);
}
async onload() {
setLogger(this.addLog.bind(this));
Logger("loading plugin");
const manifestVersion = "0.16.4";
const packageVersion = "0.16.4";
const manifestVersion = "0.16.6";
const packageVersion = "0.16.6";
Logger(`Self-hosted LiveSync v${manifestVersion} ${packageVersion} `);
const lsKey = "obsidian-live-sync-ver" + this.getVaultName();
const last_version = localStorage.getItem(lsKey);
@@ -13270,7 +13329,7 @@ var ObsidianLiveSyncPlugin = class extends import_obsidian8.Plugin {
id: "livesync-checkdoc-conflicted",
name: "Resolve if conflicted.",
editorCallback: async (editor, view) => {
await this.showIfConflicted(view.file);
await this.showIfConflicted(view.file.path);
}
});
this.addCommand({
@@ -13620,7 +13679,7 @@ var ObsidianLiveSyncPlugin = class extends import_obsidian8.Plugin {
if (this.settings.syncOnFileOpen && !this.suspended) {
await this.replicate();
}
await this.showIfConflicted(file);
await this.showIfConflicted(file.path);
}
async applyBatchChange() {
if (this.settings.batchSave) {
@@ -13693,7 +13752,7 @@ var ObsidianLiveSyncPlugin = class extends import_obsidian8.Plugin {
for (const i2 of newFiles) {
try {
const newFilePath = (0, import_obsidian8.normalizePath)(this.getFilePath(i2));
const newFile = this.app.vault.getAbstractFileByPath(newFilePath);
const newFile = getAbstractFileByPath(newFilePath);
if (newFile instanceof import_obsidian8.TFile) {
Logger(`save ${newFile.path} into db`);
await this.updateIntoDB(newFile);
@@ -13837,7 +13896,7 @@ var ObsidianLiveSyncPlugin = class extends import_obsidian8.Plugin {
touch(newFile);
this.app.vault.trigger("create", newFile);
} catch (ex) {
Logger(msg + "ERROR, Could not parse: " + path + "(" + doc.datatype + ")", LOG_LEVEL.NOTICE);
Logger(msg + "ERROR, Could not create: " + path + "(" + doc.datatype + ")", LOG_LEVEL.NOTICE);
Logger(ex, LOG_LEVEL.VERBOSE);
}
} else {
@@ -13900,7 +13959,7 @@ var ObsidianLiveSyncPlugin = class extends import_obsidian8.Plugin {
try {
await this.app.vault.modifyBinary(file, bin, { ctime: doc.ctime, mtime: doc.mtime });
Logger(msg + path);
const xf = this.app.vault.getAbstractFileByPath(file.path);
const xf = getAbstractFileByPath(file.path);
touch(xf);
this.app.vault.trigger("modify", xf);
} catch (ex) {
@@ -13916,7 +13975,7 @@ var ObsidianLiveSyncPlugin = class extends import_obsidian8.Plugin {
try {
await this.app.vault.modify(file, doc.data, { ctime: doc.ctime, mtime: doc.mtime });
Logger(msg + path);
const xf = this.app.vault.getAbstractFileByPath(file.path);
const xf = getAbstractFileByPath(file.path);
touch(xf);
this.app.vault.trigger("modify", xf);
} catch (ex) {
@@ -13956,7 +14015,7 @@ var ObsidianLiveSyncPlugin = class extends import_obsidian8.Plugin {
this.refreshStatusText();
}
async handleDBChangedAsync(change) {
const targetFile = this.app.vault.getAbstractFileByPath(id2path(change._id));
const targetFile = getAbstractFileByPath(id2path(change._id));
if (targetFile == null) {
if (change._deleted || change.deleted) {
return;
@@ -14062,7 +14121,7 @@ var ObsidianLiveSyncPlugin = class extends import_obsidian8.Plugin {
return;
const skipOldFile = this.settings.skipOlderFilesOnSync && false;
if (!isInternalChunk(doc._id) && skipOldFile) {
const info = this.app.vault.getAbstractFileByPath(id2path(doc._id));
const info = getAbstractFileByPath(id2path(doc._id));
if (info && info instanceof import_obsidian8.TFile) {
const localMtime = ~~(info.stat.mtime / 1e3);
const docMtime = ~~(doc.mtime / 1e3);
@@ -14336,10 +14395,11 @@ var ObsidianLiveSyncPlugin = class extends import_obsidian8.Plugin {
if (showingNotice) {
Logger("Initializing", LOG_LEVEL.NOTICE, "syncAll");
}
await this.collectDeletedFiles();
const filesStorage = this.app.vault.getFiles().filter((e3) => this.isTargetFile(e3));
const filesStorageName = filesStorage.map((e3) => e3.path);
const wf = await this.localDatabase.localDatabase.allDocs();
const filesDatabase = wf.rows.filter((e3) => !isChunk(e3.id) && !isPluginChunk(e3.id) && e3.id != "obsydian_livesync_version").filter((e3) => isValidPath(e3.id)).map((e3) => id2path(e3.id)).filter((e3) => this.isTargetFile(e3));
const filesDatabase = wf.rows.filter((e3) => !isChunk(e3.id) && !isPluginChunk(e3.id) && e3.id != "obsydian_livesync_version" && e3.id != "_design/replicate").filter((e3) => isValidPath(e3.id)).map((e3) => id2path(e3.id)).filter((e3) => this.isTargetFile(e3));
const isInitialized = await this.localDatabase.kvDB.get("initialized") || false;
if (filesDatabase.length == 0 && !isInitialized) {
initialScan = true;
@@ -14353,27 +14413,14 @@ var ObsidianLiveSyncPlugin = class extends import_obsidian8.Plugin {
Logger("Updating database by new files");
this.setStatusBarText(`UPDATE DATABASE`);
const runAll = async (procedureName, objects, callback) => {
const count = objects.length;
Logger(procedureName);
let i2 = 0;
const semaphore = Semaphore(10);
Logger(`${procedureName} exec.`);
if (!this.localDatabase.isReady)
throw Error("Database is not ready!");
const processes = objects.map((e3) => (async (v) => {
const releaser = await semaphore.acquire(1, procedureName);
try {
await callback(v);
i2++;
if (i2 % 50 == 0) {
const notify = `${procedureName} : ${i2}/${count}`;
if (showingNotice) {
Logger(notify, LOG_LEVEL.NOTICE, "syncAll");
} else {
Logger(notify);
}
this.setStatusBarText(notify);
}
} catch (ex) {
Logger(`Error while ${procedureName}`, LOG_LEVEL.NOTICE);
Logger(ex);
@@ -14390,13 +14437,15 @@ var ObsidianLiveSyncPlugin = class extends import_obsidian8.Plugin {
});
if (!initialScan) {
await runAll("UPDATE STORAGE", onlyInDatabase, async (e3) => {
const w = await this.localDatabase.getDBEntryMeta(e3);
if (w) {
const w = await this.localDatabase.getDBEntryMeta(e3, {}, true);
if (w && !(w.deleted || w._deleted)) {
Logger(`Check or pull from db:${e3}`);
await this.pullFile(e3, filesStorage, false, null, false);
Logger(`Check or pull from db:${e3} OK`);
} else if (w) {
Logger(`Deletion history skipped: ${e3}`, LOG_LEVEL.VERBOSE);
} else {
Logger(`entry not found, maybe deleted (it is normal behavior):${e3}`);
Logger(`entry not found: ${e3}`);
}
});
}
@@ -14466,7 +14515,7 @@ var ObsidianLiveSyncPlugin = class extends import_obsidian8.Plugin {
}
async getConflictedDoc(path, rev) {
try {
const doc = await this.localDatabase.getDBEntry(path, { rev }, false, false);
const doc = await this.localDatabase.getDBEntry(path, { rev }, false, false, true);
if (doc === false)
return false;
let data = doc.data;
@@ -14476,6 +14525,7 @@ var ObsidianLiveSyncPlugin = class extends import_obsidian8.Plugin {
data = doc.data;
}
return {
deleted: doc.deleted || doc._deleted,
ctime: doc.ctime,
mtime: doc.mtime,
rev,
@@ -14489,7 +14539,7 @@ var ObsidianLiveSyncPlugin = class extends import_obsidian8.Plugin {
return false;
}
async getConflictedStatus(path) {
const test = await this.localDatabase.getDBEntry(path, { conflicts: true }, false, false);
const test = await this.localDatabase.getDBEntry(path, { conflicts: true }, false, false, true);
if (test === false)
return false;
if (test == null)
@@ -14510,7 +14560,7 @@ var ObsidianLiveSyncPlugin = class extends import_obsidian8.Plugin {
Logger(`could not get old revisions, automatically used newer one:${path}`, LOG_LEVEL.NOTICE);
return true;
}
if (leftLeaf.data == rightLeaf.data) {
if (leftLeaf.data == rightLeaf.data && leftLeaf.deleted == rightLeaf.deleted) {
let leaf = leftLeaf;
if (leftLeaf.mtime > rightLeaf.mtime) {
leaf = rightLeaf;
@@ -14542,11 +14592,11 @@ var ObsidianLiveSyncPlugin = class extends import_obsidian8.Plugin {
diff
};
}
showMergeDialog(file, conflictCheckResult) {
showMergeDialog(filename, conflictCheckResult) {
return new Promise((res, rej) => {
Logger("open conflict dialog", LOG_LEVEL.VERBOSE);
new ConflictResolveModal(this.app, conflictCheckResult, async (selected) => {
const testDoc = await this.localDatabase.getDBEntry(file.path, { conflicts: true });
const testDoc = await this.localDatabase.getDBEntry(filename, { conflicts: true }, false, false, true);
if (testDoc === false) {
Logger("Missing file..", LOG_LEVEL.VERBOSE);
return res(true);
@@ -14559,23 +14609,29 @@ var ObsidianLiveSyncPlugin = class extends import_obsidian8.Plugin {
const toKeep = conflictCheckResult.left.rev != toDelete ? conflictCheckResult.left.rev : conflictCheckResult.right.rev;
if (toDelete == "") {
const p = conflictCheckResult.diff.map((e3) => e3[1]).join("");
await this.localDatabase.deleteDBEntry(file.path, { rev: conflictCheckResult.left.rev });
await this.localDatabase.deleteDBEntry(file.path, { rev: conflictCheckResult.right.rev });
await this.app.vault.modify(file, p);
await this.updateIntoDB(file);
await this.pullFile(file.path);
await this.localDatabase.deleteDBEntry(filename, { rev: conflictCheckResult.left.rev });
await this.localDatabase.deleteDBEntry(filename, { rev: conflictCheckResult.right.rev });
const file = getAbstractFileByPath(filename);
if (file) {
await this.app.vault.modify(file, p);
await this.updateIntoDB(file);
} else {
const newFile = await this.app.vault.create(filename, p);
await this.updateIntoDB(newFile);
}
await this.pullFile(filename);
Logger("concat both file");
setTimeout(() => {
this.showIfConflicted(file);
this.showIfConflicted(filename);
}, 500);
} else if (toDelete == null) {
Logger("Leave it still conflicted");
} else {
Logger(`Conflict resolved:${file.path}`);
await this.localDatabase.deleteDBEntry(file.path, { rev: toDelete });
await this.pullFile(file.path, null, true, toKeep);
Logger(`Conflict resolved:${filename}`);
await this.localDatabase.deleteDBEntry(filename, { rev: toDelete });
await this.pullFile(filename, null, true, toKeep);
setTimeout(() => {
this.showIfConflicted(file);
this.showIfConflicted(filename);
}, 500);
}
return res(true);
@@ -14593,9 +14649,9 @@ var ObsidianLiveSyncPlugin = class extends import_obsidian8.Plugin {
const checkFiles = JSON.parse(JSON.stringify(this.conflictedCheckFiles));
for (const filename of checkFiles) {
try {
const file2 = this.app.vault.getAbstractFileByPath(filename);
const file2 = getAbstractFileByPath(filename);
if (file2 != null && file2 instanceof import_obsidian8.TFile) {
await this.showIfConflicted(file2);
await this.showIfConflicted(file2.path);
}
} catch (ex) {
Logger(ex);
@@ -14603,24 +14659,24 @@ var ObsidianLiveSyncPlugin = class extends import_obsidian8.Plugin {
}
}, 1e3);
}
async showIfConflicted(file) {
async showIfConflicted(filename) {
await runWithLock("conflicted", false, async () => {
const conflictCheckResult = await this.getConflictedStatus(file.path);
const conflictCheckResult = await this.getConflictedStatus(filename);
if (conflictCheckResult === false) {
return;
}
if (conflictCheckResult === true) {
Logger("conflict:Automatically merged, but we have to check it again");
setTimeout(() => {
this.showIfConflicted(file);
this.showIfConflicted(filename);
}, 500);
return;
}
await this.showMergeDialog(file, conflictCheckResult);
await this.showMergeDialog(filename, conflictCheckResult);
});
}
async pullFile(filename, fileList, force, rev, waitForReady = true) {
const targetFile = this.app.vault.getAbstractFileByPath(id2path(filename));
const targetFile = getAbstractFileByPath(id2path(filename));
if (!this.isTargetFile(id2path(filename)))
return;
if (targetFile == null) {
@@ -14647,7 +14703,7 @@ var ObsidianLiveSyncPlugin = class extends import_obsidian8.Plugin {
throw new Error(`Missing doc:${file.path}`);
}
if (!(file instanceof import_obsidian8.TFile) && "path" in file) {
const w = this.app.vault.getAbstractFileByPath(file.path);
const w = getAbstractFileByPath(file.path);
if (w instanceof import_obsidian8.TFile) {
file = w;
} else {

View File

@@ -1,7 +1,7 @@
{
"id": "obsidian-livesync",
"name": "Self-hosted LiveSync",
"version": "0.16.4",
"version": "0.16.6",
"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",

File diff suppressed because one or more lines are too long

View File

@@ -1,7 +1,7 @@
{
"id": "obsidian-outliner",
"name": "Outliner",
"version": "4.1.0",
"version": "4.1.1",
"minAppVersion": "1.0.0",
"description": "Work with your lists like in Workflowy or RoamResearch.",
"author": "Viacheslav Slinko",

View File

@@ -65,6 +65,7 @@
.outliner-plugin-vertical-lines
.markdown-source-view.mod-cm6
.cm-hmd-list-indent
.cm-indent::before {
content: none;
}

View File

@@ -1,4 +1,10 @@
{
"catppuccin-theme-settings@@catppuccin-theme-dark": "ctp-macchiato",
"catppuccin-theme-settings@@catppuccin-theme-accents": "ctp-accent-red"
"catppuccin-theme-settings@@catppuccin-theme-accents": "ctp-accent-red",
"catppuccin-interface-styles@@ctp-bold-folder-title": true,
"catppuccin-font-styles@@ctp-h2": "var(--ctp-maroon)",
"catppuccin-font-styles@@ctp-h6": "var(--ctp-lavender)",
"catppuccin-font-styles@@ctp-h5": "var(--ctp-teal)",
"catppuccin-font-styles@@ctp-h4": "var(--ctp-flamingo)",
"catppuccin-font-styles@@ctp-h3": "var(--ctp-peach)"
}

File diff suppressed because one or more lines are too long

View File

@@ -1,7 +1,7 @@
{
"id": "quick-latex",
"name": "Quick Latex for Obsidian",
"version": "2.5.0",
"version": "2.5.1",
"minAppVersion": "0.9.12",
"description": "Speedup latex math typing with auto fraction, align block shortcut, matrix shortcut...etc",
"author": "joeyuping",

View File

@@ -1,7 +1,7 @@
{
"name": "Catppuccin",
"version": "0.2.0",
"minAppVersion": "1.0.0",
"author": "Marshall Beckrich",
"authorUrl": "https://github.com/catppuccin/obsidian"
"name": "Catppuccin",
"version": "0.2.13",
"minAppVersion": "1.0.0",
"author": "Marshall Beckrich",
"authorUrl": "https://github.com/catppuccin/obsidian"
}

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
{
"name": "Obsidian Nord",
"version": "0.1.6",
"version": "0.1.7",
"minAppVersion": "0.16.0",
"author": "insanum",
"authorUrl": "https://insanum.com"

View File

@@ -163,6 +163,9 @@ body
--dataview-key-background: rgba(var(--frost2_x), 0.3);
--dataview-value: var(--text-faint);
--dataview-value-background: rgba(var(--red_x), 0.3);
--tab-text-color-focused-active: var(--frost2);
--tab-text-color-focused-active-current: var(--red);
}
.theme-light
@@ -261,6 +264,9 @@ body
--dataview-key-background: rgba(var(--frost2_x), 0.3);
--dataview-value: var(--text-faint);
--dataview-value-background: rgba(var(--red_x), 0.3);
--tab-text-color-focused-active: var(--frost2);
--tab-text-color-focused-active-current: var(--red);
}
table
@@ -468,3 +474,8 @@ pre[class*="language-"]
background-color: var(--dataview-value-background) !important;
}
.suggestion-highlight
{
color: var(--red);
}

View File

@@ -4,42 +4,32 @@
"type": "split",
"children": [
{
"id": "3f5dc457994bbd99",
"id": "da7b72acdd5782c1",
"type": "tabs",
"children": [
{
"id": "531c313e44ad2003",
"id": "5c31f65df875fed7",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "AMiAL/Ćwiczenia/1 SEM/20221028120723.md",
"file": "AMiAL/Wykłady/Wykłady.md",
"mode": "source",
"source": false
}
}
},
{
"id": "4f5bedb3e6d1067b",
"id": "3bc0e42c65536104",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "AMiAL/Ćwiczenia/Zadania/funkcje/Zadanie 1.md",
"file": "AMiAL/Wykłady/1 SEM/20221125083233.md",
"mode": "source",
"source": false
}
}
},
{
"id": "a6018bec66c4363d",
"type": "leaf",
"state": {
"type": "pdf",
"state": {
"file": "AMiAL/!Materiały/funkcje.pdf"
}
}
}
],
"currentTab": 1
@@ -108,7 +98,7 @@
"state": {
"type": "backlink",
"state": {
"file": "AMiAL/Ćwiczenia/Zadania/funkcje/Zadanie 1.md",
"file": "AMiAL/Wykłady/1 SEM/20221125083233.md",
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical",
@@ -125,7 +115,7 @@
"state": {
"type": "outgoing-link",
"state": {
"file": "AMiAL/Ćwiczenia/Zadania/funkcje/Zadanie 1.md",
"file": "AMiAL/Wykłady/1 SEM/20221125083233.md",
"linksCollapsed": false,
"unlinkedCollapsed": true
}
@@ -148,26 +138,10 @@
"state": {
"type": "outline",
"state": {
"file": "AMiAL/Ćwiczenia/Zadania/funkcje/Zadanie 1.md"
"file": "AMiAL/Wykłady/1 SEM/20221125083233.md"
}
}
},
{
"id": "23b819a2dc2500c7",
"type": "leaf",
"state": {
"type": "BC-matrix",
"state": {}
}
},
{
"id": "5f7d6c81bffeeaaf",
"type": "leaf",
"state": {
"type": "BC-tree",
"state": {}
}
},
{
"id": "8f0923324d861591",
"type": "leaf",
@@ -175,25 +149,42 @@
"type": "calendar",
"state": {}
}
},
{
"id": "3a7bd8a3ae5a1a09",
"type": "leaf",
"state": {
"type": "BC-matrix",
"state": {}
}
},
{
"id": "b0803323a2aa4ad9",
"type": "leaf",
"state": {
"type": "BC-tree",
"state": {}
}
}
]
],
"currentTab": 6
}
],
"direction": "horizontal",
"width": 300,
"collapsed": true
},
"active": "4f5bedb3e6d1067b",
"active": "3bc0e42c65536104",
"lastOpenFiles": [
"AMiAL/!Materiały/funkcje.pdf",
"AMiAL/Ćwiczenia/1 SEM/20221028120723.md",
"AMiAL/Ćwiczenia/Zadania/funkcje/Zadanie 1.md",
"AMiAL/Ćwiczenia/1 SEM/20221021120444.md",
"AMiAL/Ćwiczenia/1 SEM/Liczby Zespolone/Liczby Zespolone.md",
"AMiAL/!Materiały/w5_granica_funkcji.pdf",
"AMiAL/Wykłady/1 SEM/20221125083233.md",
"AMiAL/Wykłady/1 SEM/20221123083519.md",
"AMiAL/Wykłady/1 SEM/20221104082939.md",
"AMiAL/Wykłady/1 SEM/20221021083844.md",
"Excalidraw/Drawing 2022-10-28 11.47.05.excalidraw.md",
"Elektrotechnika/Ćwiczenia/20221028102800.md",
"AMiAL/!Materiały/w1_liczby_zesp.pdf",
"!Załączniki/20221021120444 2022-10-28 11.01.18.excalidraw.md"
"AMiAL/Wykłady/1 SEM/20221014083923.md",
"AMiAL/Wykłady/Wykłady.md",
"AMiAL/Ćwiczenia/1 SEM/20221123123903.md",
"PI/Wykłady/1 SEM/20221014134528.md",
"PI/Ćwiczenia/20221010123607.md"
]
}