Initial commit: obsidian to gitea

This commit is contained in:
2026-05-07 15:04:41 +08:00
commit a57afa86b4
323 changed files with 42569 additions and 0 deletions

16
.obsidian/app.json vendored Normal file
View File

@@ -0,0 +1,16 @@
{
"vimMode": true,
"attachmentFolderPath": "/",
"newFileLocation": "current",
"alwaysUpdateLinks": true,
"promptDelete": false,
"showInlineTitle": false,
"pdfExportSettings": {
"includeName": false,
"pageSize": "A4",
"landscape": false,
"margin": "0",
"downscalePercent": 100
},
"showIndentGuide": false
}

7
.obsidian/appearance.json vendored Normal file
View File

@@ -0,0 +1,7 @@
{
"cssTheme": "Minimal",
"enabledCssSnippets": [
"table-wrap-fix",
"mermaid"
]
}

10
.obsidian/community-plugins.json vendored Normal file
View File

@@ -0,0 +1,10 @@
[
"attachment-management",
"periodic-notes",
"oz-clear-unused-images",
"obsidian-focus-mode",
"remember-cursor-position",
"remotely-save",
"copy-as-html",
"obsidian-image-toolkit"
]

30
.obsidian/core-plugins-migration.json vendored Normal file
View File

@@ -0,0 +1,30 @@
{
"file-explorer": true,
"global-search": true,
"switcher": true,
"graph": true,
"backlink": true,
"canvas": true,
"outgoing-link": true,
"tag-pane": true,
"properties": false,
"page-preview": true,
"daily-notes": true,
"templates": true,
"note-composer": true,
"command-palette": true,
"slash-command": false,
"editor-status": true,
"bookmarks": true,
"markdown-importer": false,
"zk-prefixer": false,
"random-note": false,
"outline": true,
"word-count": true,
"slides": false,
"audio-recorder": false,
"workspaces": false,
"file-recovery": true,
"publish": false,
"sync": false
}

33
.obsidian/core-plugins.json vendored Normal file
View File

@@ -0,0 +1,33 @@
{
"file-explorer": true,
"global-search": true,
"switcher": true,
"graph": true,
"backlink": true,
"canvas": true,
"outgoing-link": true,
"tag-pane": true,
"properties": false,
"page-preview": true,
"daily-notes": true,
"templates": true,
"note-composer": true,
"command-palette": true,
"slash-command": false,
"editor-status": true,
"bookmarks": true,
"markdown-importer": false,
"zk-prefixer": false,
"random-note": false,
"outline": true,
"word-count": true,
"slides": false,
"audio-recorder": false,
"workspaces": false,
"file-recovery": true,
"publish": false,
"sync": false,
"webviewer": false,
"footnotes": false,
"bases": true
}

5
.obsidian/daily-notes.json vendored Normal file
View File

@@ -0,0 +1,5 @@
{
"folder": "daily",
"format": "YYMMDD",
"template": "daily/250216"
}

22
.obsidian/graph.json vendored Normal file
View File

@@ -0,0 +1,22 @@
{
"collapse-filter": true,
"search": "",
"showTags": false,
"showAttachments": false,
"hideUnresolved": false,
"showOrphans": true,
"collapse-color-groups": true,
"colorGroups": [],
"collapse-display": true,
"showArrow": false,
"textFadeMultiplier": 0,
"nodeSizeMultiplier": 1,
"lineSizeMultiplier": 1,
"collapse-forces": true,
"centerStrength": 0.518713248970312,
"repelStrength": 10,
"linkStrength": 1,
"linkDistance": 250,
"scale": 1,
"close": true
}

11
.obsidian/hotkeys.json vendored Normal file
View File

@@ -0,0 +1,11 @@
{
"app:toggle-left-sidebar": [
{
"modifiers": [
"Mod"
],
"key": "B"
}
],
"editor:toggle-bold": []
}

View File

@@ -0,0 +1,19 @@
{
"attachPath": {
"attachmentRoot": "",
"saveAttE": "obsFolder",
"attachmentPath": "${notepath}/${notename}.figs",
"attachFormat": "${date}",
"type": "GLOBAL",
"extensionOverride": []
},
"dateFormat": "YYMMDD-HHmmss",
"excludeExtensionPattern": "",
"autoRenameAttachment": true,
"excludedPaths": "",
"excludePathsArray": [],
"excludeSubpaths": false,
"originalNameStorage": [],
"overridePath": {},
"disableNotification": false
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,10 @@
{
"id": "attachment-management",
"name": "Attachment Management",
"version": "0.9.16",
"description": "Customize your attachment path of notes independently with variables and auto rename it on change.",
"author": "trganda",
"authorUrl": "https://github.com/trganda",
"fundingUrl": "https://paypal.me/trganda",
"isDesktopOnly": false
}

View File

@@ -0,0 +1,15 @@
/*
This CSS file will be included with your plugin, and
available in the app when your plugin is enabled.
If your plugin does not need CSS, delete this file.
*/
.attach_management_sub_setting {
padding-left: 2em;
}
.attach_management_sub_setting + .attach_management_sub_setting {
padding-left: 0;
margin-left: 2em;
}

3747
.obsidian/plugins/copy-as-html/main.js vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,10 @@
{
"id": "copy-as-html",
"name": "Copy as HTML",
"version": "1.1.3",
"minAppVersion": "0.12.0",
"description": "This is a simple plugin that converts the selected markdown to HTML and copies it to the clipboard.",
"author": "Bailey Jennings",
"authorUrl": "https://twitter.com/Bailey_Jennings",
"isDesktopOnly": false
}

View File

@@ -0,0 +1,182 @@
/*
THIS IS A GENERATED/BUNDLED FILE BY ROLLUP
if you want to view the source visit the plugins github repository
*/
'use strict';
var obsidian = require('obsidian');
/******************************************************************************
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());
});
}
class FocusMode extends obsidian.Plugin {
constructor() {
super(...arguments);
this.focusModeActive = false;
this.maximisedClass = "maximised";
this.focusModeClass = "focus-mode";
this.superFocusModeClass = "super-focus-mode";
}
storeSplitsValues() {
// @ts-ignore
this.leftSplitCollapsed = this.app.workspace.leftSplit.collapsed;
// @ts-ignore
this.rightSplitCollapsed = this.app.workspace.rightSplit.collapsed;
}
collapseSplits() {
// @ts-ignore
this.app.workspace.leftSplit.collapse();
// @ts-ignore
this.app.workspace.rightSplit.collapse();
}
restoreSplits() {
if (!this.leftSplitCollapsed) {
// @ts-ignore
this.app.workspace.leftSplit.expand();
}
if (!this.rightSplitCollapsed) {
// @ts-ignore
this.app.workspace.rightSplit.expand();
}
}
removeExtraneousClasses() {
if (
// @ts-ignore
this.app.workspace.rootSplit.containerEl.hasClass(this.maximisedClass)) {
// @ts-ignore
this.app.workspace.rootSplit.containerEl.removeClass(this.maximisedClass);
// @ts-ignore
this.app.workspace.onLayoutChange();
}
if (document.body.classList.contains(this.superFocusModeClass)) {
document.body.classList.remove(this.superFocusModeClass);
}
}
sharedFocusModeCommands() {
this.focusModeActive = true;
// @ts-ignore
this.app.on("active-leaf-change", () => {
try {
// @ts-ignore
this.app.workspace.activeLeaf.view.editor.blur();
// @ts-ignore
this.app.workspace.activeLeaf.view.editor.focus();
// @ts-ignore
this.app.workspace.activeLeaf.view.editor.refresh();
}
catch (ignore) { }
});
if (!document.body.classList.contains(this.focusModeClass)) {
this.storeSplitsValues();
}
this.collapseSplits();
}
enableSuperFocusMode() {
this.sharedFocusModeCommands();
// @ts-ignore
this.app.workspace.rootSplit.containerEl.toggleClass(this.maximisedClass,
// @ts-ignore
!this.app.workspace.rootSplit.containerEl.hasClass(this.maximisedClass));
document.body.classList.toggle(this.superFocusModeClass, !document.body.classList.contains(this.superFocusModeClass));
if (!document.body.classList.contains(this.focusModeClass)) {
document.body.classList.add(this.focusModeClass);
}
if (document.body.classList.contains(this.superFocusModeClass)) {
Array.from(document.querySelectorAll(`.${this.superFocusModeClass} .workspace-split`)).forEach((node) => {
const theNode = node;
const hasActiveKids = theNode.querySelector(".mod-active");
if (hasActiveKids) {
theNode.style.display = "flex";
}
else {
theNode.style.display = "none";
}
});
}
// @ts-ignore
this.app.workspace.onLayoutChange();
}
enableFocusMode() {
this.sharedFocusModeCommands();
this.removeExtraneousClasses();
document.body.classList.toggle(this.focusModeClass, !document.body.classList.contains(this.focusModeClass));
}
disableFocusMode() {
this.removeExtraneousClasses();
if (document.body.classList.contains(this.focusModeClass)) {
document.body.classList.remove(this.focusModeClass);
}
this.restoreSplits();
Array.from(document.querySelectorAll(".workspace-split")).forEach((node) => {
const theNode = node;
theNode.style.display = "flex";
});
this.focusModeActive = false;
}
toggleFocusMode(superFocus = false) {
if (superFocus) {
this.enableSuperFocusMode();
}
else if (this.focusModeActive) {
this.disableFocusMode();
}
else {
this.enableFocusMode();
}
}
onload() {
return __awaiter(this, void 0, void 0, function* () {
console.log("Loading Focus Mode plugin ...");
this.addRibbonIcon("enter", "Toggle Focus Mode (Shift + Click to show active pane only)", (event) => {
this.toggleFocusMode(event.shiftKey);
});
this.addCommand({
id: "toggle-focus-mode",
name: "Toggle Focus Mode",
callback: () => {
this.toggleFocusMode();
},
hotkeys: [{ modifiers: ["Alt", "Mod"], key: "Z" }],
});
this.addCommand({
id: "toggle-super-focus-mode",
name: "Toggle Super Focus Mode (Active pane only)",
callback: () => {
this.toggleFocusMode(true);
},
hotkeys: [{ modifiers: ["Alt", "Mod", "Shift"], key: "Z" }],
});
});
}
onunload() {
console.log("Unloading Focus Mode plugin ...");
}
}
module.exports = FocusMode;
/* nosourcemap */

View File

@@ -0,0 +1,10 @@
{
"id": "obsidian-focus-mode",
"name": "Focus Mode",
"version": "1.11.5",
"minAppVersion": "0.9.12",
"description": "Add Focus Mode to Obsidian.",
"author": "ryanpcmcquen",
"authorUrl": "https://github.com/ryanpcmcquen",
"isDesktopOnly": false
}

View File

@@ -0,0 +1,44 @@
.focus-mode .cm-s-obsidian .cm-line:not(.cm-active),
.focus-mode .cm-s-obsidian div:not(.CodeMirror-activeline) > .CodeMirror-line {
opacity: 0.85;
filter: saturate(0.85);
}
.focus-mode .status-bar,
.focus-mode .view-actions,
.focus-mode .view-header-icon,
.focus-mode .inline-title,
.focus-mode .workspace-ribbon:not(.mod-left),
.focus-mode .workspace-split.maximised .workspace-leaf:not(.mod-active),
.focus-mode
.workspace-split.maximised
.workspace-leaf.mod-active
~ .workspace-split,
.focus-mode.plugin-tabs .stayopen .view-header,
.super-focus-mode .workspace-tabs:not(.mod-active) {
display: none;
}
.super-focus-mode .workspace-tab-header-container {
padding-left: var(--size-4-8);
}
.focus-mode .view-content {
height: 100%;
}
.focus-mode .workspace-split.maximised .workspace-leaf.mod-active {
/* 4px is for scrollbar width: */
flex-basis: calc(100% - 4px);
}
.focus-mode .workspace-ribbon,
.focus-mode .sidebar-toggle-button {
visibility: hidden;
}
.focus-mode .workspace-ribbon::before,
.focus-mode
.side-dock-ribbon-action[aria-label="Toggle Focus Mode (Shift + Click to show active pane only)"] {
visibility: visible;
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,10 @@
{
"id": "obsidian-image-toolkit",
"name": "Image Toolkit",
"version": "1.4.3",
"minAppVersion": "1.8.7",
"description": "Click images to preview with zoom, move, rotate, flip, invert, and copy.",
"author": "Xiangru",
"authorUrl": "https://github.com/sissilab",
"isDesktopOnly": true
}

View File

@@ -0,0 +1,319 @@
body {
--layer-image-toolkit-popup: 1024;
--layer-image-toolkit-player: 1025;
--layer-image-toolkit-notice: 1026;
}
.notice-container {
z-index: var(--layer-image-toolkit-notice);
}
.oit li::before {
margin-left: 0;
}
.image-toolkit-img-invert {
filter: invert(1) hue-rotate(180deg);
mix-blend-mode: screen;
}
.oit-normal {
position: fixed;
font-size: 0;
line-height: 0;
top: 0;
bottom: 0;
left: 0;
right: 0;
background: rgba(0, 0, 0, .6);
z-index: var(--layer-image-toolkit-popup);
display: none;
}
.oit-pin {
position: fixed;
font-size: 0;
line-height: 0;
z-index: var(--layer-image-toolkit-popup);
display: none;
}
.oit .oit-img-container {
position: fixed;
top: 0;
pointer-events: none;
}
.oit .oit-img-container .oit-img-view {
max-height: none;
pointer-events: auto;
}
.oit-pin .oit-img-container .oit-img-view {
position: fixed;
pointer-events: auto;
box-shadow: 0 0 5px;
}
.oit-pin .oit-img-container .oit-img-view:hover {
box-shadow: 0 0 6px #55acc6;
}
.oit .img-default-background {
background-position: 0 0, 5px 5px !important;
background-size: 10px 10px !important;
background-image: linear-gradient(45deg, #eee 25%, transparent 25%, transparent 75%, #eee 75%, #eee 100%), linear-gradient(45deg, #eee 25%, #fff 25%, #fff 75%, #eee 75%, #eee 100%) !important;
}
.oit .oit-img-container .oit-img-view:hover {
cursor: pointer;
}
.oit-normal .img-close {
position: absolute;
width: 32px;
height: 32px;
top: 0;
right: 0;
cursor: pointer;
}
.oit .oit-img-tip {
position: absolute;
top: 50%;
left: 50%;
font-size: 12px;
line-height: 20px;
height: 20px;
width: 50px;
text-align: center;
color: #fff;
border-radius: 10px;
background-color: rgba(0, 0, 0, .4);
pointer-events: none;
z-index: 1;
}
/*region img-player*/
.oit .img-player {
display: none;
position: fixed;
width: 100%;
height: 100%;
left: 0;
top: 0;
cursor: none;
background-color: #000;
text-align: center;
cursor: pointer;
}
.oit .img-player > img {
display: inline;
float: none;
padding: 0;
max-height: none;
transform: none;
cursor: pointer;
}
/*endregion*/
.oit-normal .oit-img-footer {
position: absolute;
text-align: center;
bottom: 5px;
left: 0;
right: 0;
}
/*region oit-img-title*/
.oit-normal .oit-img-footer .oit-img-title {
font-size: 12px;
line-height: 1;
display: inline-block;
max-width: 90%;
white-space: nowrap;
text-overflow: ellipsis;
margin: 5px;
opacity: .8;
color: #fff;
/* filter: alpha(opacity=80) */
}
.oit-normal .oit-img-footer .oit-img-title:hover {
/* opacity: 1; */
color: #fff;
font-size: 15px;
background-color: rgba(0, 0, 0, .3);
border-radius: 8px;
line-height: 1.5;
/* filter: alpha(opacity=100) */
}
/*endregion*/
/*region toolbar*/
.oit-normal .oit-img-footer .oit-img-toolbar {
width: 385px;
height: 30px;
margin: 0 auto 5px;
padding: 3px 0;
}
.oit-normal .oit-img-footer .oit-img-toolbar:hover {
background-color: rgba(0, 0, 0, .3);
border-radius: 12px;
}
.oit-normal .oit-img-footer .oit-img-toolbar > li {
float: left;
width: 25px;
height: 25px;
margin: 0 5px;
padding: 0;
line-height: 0;
border: none;
cursor: pointer;
overflow: hidden;
}
.oit-normal .oit-img-footer .oit-img-toolbar > li:hover {
animation: bounce .5s cubic-bezier(0.51, 0.23, 0.02, 0.96)
}
@keyframes bounce {
0% {
transform: scale(1, 1);
}
50% {
transform: scale(0.85, 1.1) translateY(-5px);
}
}
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_zoom_to_100::before,
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_zoom_in::before,
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_zoom_out::before,
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_full_screen::before,
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_refresh::before,
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_rotate_left::before,
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_rotate_right::before,
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_scale_x::before,
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_scale_y::before,
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_invert_color::before,
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_copy::before {
font-size: 0;
line-height: 0;
display: block;
width: 25px;
height: 25px;
color: transparent;
background-image: url(data:image/png;base64,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);
background-repeat: no-repeat
}
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_zoom_to_100::before {
content: 'Zoom to Actual Size';
background-position: 0 0
}
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_zoom_in::before {
content: 'Zoom In';
background-position: -25px 0
}
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_zoom_out::before {
content: 'Zoom Out';
background-position: -50px 0
}
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_full_screen::before {
content: 'Full Screen';
background-position: -75px 0
}
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_refresh::before {
content: 'Refresh';
background-position: -100px 0
}
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_rotate_left::before {
content: 'Rotate Left';
background-position: -125px 0
}
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_rotate_right::before {
content: 'Rotate Right';
background-position: -150px 0
}
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_scale_x::before {
content: 'Scale x';
background-position: -175px 0
}
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_scale_y::before {
content: 'Scale y';
background-position: -200px 0
}
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_invert_color::before {
content: 'Invert color';
background-position: -225px 0
}
.oit-normal .oit-img-footer .oit-img-toolbar .toolbar_copy::before {
content: 'Copy';
background-position: -250px 0
}
/*endregion*/
/*region gallery-navbar*/
.oit-normal .oit-img-footer .gallery-navbar {
position: relative;
flex: 0 0 auto;
overflow: hidden;
max-width: 100%;
max-height: 100%;
width: 100%;
height: 60px;
margin-top: 20px;
background-color: rgba(0, 0, 0, .1);
}
.oit-normal .oit-img-footer .gallery-navbar:hover {
background-color: rgba(0, 0, 0, .8);
}
.oit-normal .oit-img-footer .gallery-navbar .gallery-list {
display: flex;
transform: translateX(0px);
cursor: pointer;
}
.oit-normal .oit-img-footer .gallery-navbar .gallery-list .gallery-active {
opacity: 1;
}
.oit-normal .oit-img-footer .gallery-navbar .gallery-list .img-border-active {
margin-top: 1px;
border-width: 1px;
border-style: solid;
border-color: red;
}
.oit-normal .oit-img-footer .gallery-navbar .gallery-list > li {
width: 48px;
height: 58px;
opacity: .3;
color: transparent;
margin: 2px 1px;
padding: 0;
border-radius: 0;
/* transition: all 100ms linear; */
}
.oit-normal .oit-img-footer .gallery-navbar .gallery-list img {
width: 46px;
height: 56px;
}
/*endregion*/

View File

@@ -0,0 +1,7 @@
{
"deleteOption": "system-trash",
"logsModal": true,
"excludedFolders": "",
"ribbonIcon": false,
"excludeSubfolders": false
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,11 @@
{
"id": "oz-clear-unused-images",
"name": "Clear Unused Images",
"version": "1.1.1",
"minAppVersion": "0.11.13",
"description": "Clear the images that you are not using anymore in your markdown notes to save space.",
"author": "Ozan",
"authorUrl": "https://www.ozan.pl",
"fundingUrl": "https://ko-fi.com/ozante",
"isDesktopOnly": false
}

View File

@@ -0,0 +1,10 @@
.unused-images-logs {
margin-bottom: 13px;
margin-top: 5px;
}
.unused-images-center-wrapper {
display: flex;
align-items: center;
justify-content: center;
}

View File

@@ -0,0 +1,32 @@
{
"showGettingStartedBanner": false,
"hasMigratedDailyNoteSettings": true,
"hasMigratedWeeklyNoteSettings": false,
"daily": {
"format": "YYMMDD",
"folder": "period/daily/26",
"template": "",
"enabled": true
},
"weekly": {
"format": "YY-WW",
"template": "",
"folder": "period/weekly",
"enabled": true
},
"monthly": {
"format": "",
"template": "",
"folder": ""
},
"quarterly": {
"format": "",
"template": "",
"folder": ""
},
"yearly": {
"format": "",
"template": "",
"folder": ""
}
}

5561
.obsidian/plugins/periodic-notes/main.js vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,10 @@
{
"id": "periodic-notes",
"name": "Periodic Notes",
"description": "Create/manage your daily, weekly, and monthly notes",
"version": "0.0.17",
"author": "Liam Cain",
"authorUrl": "https://github.com/liamcain/",
"isDesktopOnly": false,
"minAppVersion": "0.10.11"
}

View File

@@ -0,0 +1,30 @@
.periodic-modal {
min-width: 40vw;
}
.settings-banner {
background-color: var(--background-primary-alt);
border-radius: 8px;
border: 1px solid var(--background-modifier-border);
margin-bottom: 1em;
margin-top: 1em;
padding: 1.5em;
text-align: left;
}
.settings-banner h3 {
margin-top: 0;
}
.settings-banner h4 {
margin-bottom: 0.25em;
}
.has-error {
color: var(--text-error);
}
input.has-error {
color: var(--text-error);
border-color: var(--text-error);
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,302 @@
/*
THIS IS A GENERATED/BUNDLED FILE BY ROLLUP
if you want to view the source visit the plugins github repository
*/
'use strict';
var obsidian = require('obsidian');
/******************************************************************************
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());
});
}
typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
var e = new Error(message);
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
};
const SAFE_DB_FLUSH_INTERVAL = 5000;
const DEFAULT_SETTINGS = {
dbFileName: '.obsidian/plugins/remember-cursor-position/cursor-positions.json',
delayAfterFileOpening: 100,
saveTimer: SAFE_DB_FLUSH_INTERVAL,
};
class RememberCursorPosition extends obsidian.Plugin {
constructor() {
super(...arguments);
this.loadedLeafIdList = [];
this.loadingFile = false;
}
onload() {
return __awaiter(this, void 0, void 0, function* () {
yield this.loadSettings();
try {
this.db = yield this.readDb();
this.lastSavedDb = yield this.readDb();
}
catch (e) {
console.error("Remember Cursor Position plugin can\'t read database: " + e);
this.db = {};
this.lastSavedDb = {};
}
this.addSettingTab(new SettingTab(this.app, this));
this.registerEvent(this.app.workspace.on('file-open', (file) => this.restoreEphemeralState()));
this.registerEvent(this.app.workspace.on('quit', () => { this.writeDb(this.db); }));
this.registerEvent(this.app.vault.on('rename', (file, oldPath) => this.renameFile(file, oldPath)));
this.registerEvent(this.app.vault.on('delete', (file) => this.deleteFile(file)));
//todo: replace by scroll and mouse cursor move events
this.registerInterval(window.setInterval(() => this.checkEphemeralStateChanged(), 100));
this.registerInterval(window.setInterval(() => this.writeDb(this.db), this.settings.saveTimer));
this.restoreEphemeralState();
});
}
renameFile(file, oldPath) {
let newName = file.path;
let oldName = oldPath;
this.db[newName] = this.db[oldName];
delete this.db[oldName];
}
deleteFile(file) {
let fileName = file.path;
delete this.db[fileName];
}
checkEphemeralStateChanged() {
var _a;
let fileName = (_a = this.app.workspace.getActiveFile()) === null || _a === void 0 ? void 0 : _a.path;
//waiting for load new file
if (!fileName || !this.lastLoadedFileName || fileName != this.lastLoadedFileName || this.loadingFile)
return;
let st = this.getEphemeralState();
if (!this.lastEphemeralState)
this.lastEphemeralState = st;
if (!isNaN(st.scroll) && !this.isEphemeralStatesEquals(st, this.lastEphemeralState)) {
this.saveEphemeralState(st);
this.lastEphemeralState = st;
}
}
isEphemeralStatesEquals(state1, state2) {
if (state1.cursor && !state2.cursor)
return false;
if (!state1.cursor && state2.cursor)
return false;
if (state1.cursor) {
if (state1.cursor.from.ch != state2.cursor.from.ch)
return false;
if (state1.cursor.from.line != state2.cursor.from.line)
return false;
if (state1.cursor.to.ch != state2.cursor.to.ch)
return false;
if (state1.cursor.to.line != state2.cursor.to.line)
return false;
}
if (state1.scroll && !state2.scroll)
return false;
if (!state1.scroll && state2.scroll)
return false;
if (state1.scroll && state1.scroll != state2.scroll)
return false;
return true;
}
saveEphemeralState(st) {
var _a;
return __awaiter(this, void 0, void 0, function* () {
let fileName = (_a = this.app.workspace.getActiveFile()) === null || _a === void 0 ? void 0 : _a.path;
if (fileName && fileName == this.lastLoadedFileName) { //do not save if file changed or was not loaded
this.db[fileName] = st;
}
});
}
restoreEphemeralState() {
var _a, _b, _c;
return __awaiter(this, void 0, void 0, function* () {
let fileName = (_a = this.app.workspace.getActiveFile()) === null || _a === void 0 ? void 0 : _a.path;
if (fileName && this.loadingFile && this.lastLoadedFileName == fileName) //if already started loading
return;
let activeLeaf = this.app.workspace.getMostRecentLeaf();
if (activeLeaf && this.loadedLeafIdList.includes(activeLeaf.id + ':' + activeLeaf.getViewState().state.file))
return;
this.loadedLeafIdList = [];
this.app.workspace.iterateAllLeaves((leaf) => {
if (leaf.getViewState().type === "markdown") {
this.loadedLeafIdList.push(leaf.id + ':' + leaf.getViewState().state.file);
}
});
this.loadingFile = true;
if (this.lastLoadedFileName != fileName) {
this.lastEphemeralState = {};
this.lastLoadedFileName = fileName;
let st;
if (fileName) {
st = this.db[fileName];
if (st) {
//waiting for load note
yield this.delay(this.settings.delayAfterFileOpening);
let scroll;
for (let i = 0; i < 20; i++) {
scroll = (_c = (_b = this.app.workspace.getActiveViewOfType(obsidian.MarkdownView)) === null || _b === void 0 ? void 0 : _b.currentMode) === null || _c === void 0 ? void 0 : _c.getScroll();
if (scroll !== null)
break;
yield this.delay(10);
}
// TODO: if note opened by link like [link](note.md#header), do not scroll it
yield this.delay(10);
this.setEphemeralState(st);
}
}
this.lastEphemeralState = st;
}
this.loadingFile = false;
});
}
readDb() {
return __awaiter(this, void 0, void 0, function* () {
let db = {};
if (yield this.app.vault.adapter.exists(this.settings.dbFileName)) {
let data = yield this.app.vault.adapter.read(this.settings.dbFileName);
db = JSON.parse(data);
}
return db;
});
}
writeDb(db) {
return __awaiter(this, void 0, void 0, function* () {
//create folder for db file if not exist
let newParentFolder = this.settings.dbFileName.substring(0, this.settings.dbFileName.lastIndexOf("/"));
if (!(yield this.app.vault.adapter.exists(newParentFolder)))
this.app.vault.adapter.mkdir(newParentFolder);
if (JSON.stringify(this.db) !== JSON.stringify(this.lastSavedDb)) {
this.app.vault.adapter.write(this.settings.dbFileName, JSON.stringify(db));
this.lastSavedDb = JSON.parse(JSON.stringify(db));
}
});
}
getEphemeralState() {
// let state: EphemeralState = this.app.workspace.getActiveViewOfType(MarkdownView)?.getEphemeralState(); //doesn't work properly
var _a, _b, _c;
let state = {};
state.scroll = Number((_c = (_b = (_a = this.app.workspace.getActiveViewOfType(obsidian.MarkdownView)) === null || _a === void 0 ? void 0 : _a.currentMode) === null || _b === void 0 ? void 0 : _b.getScroll()) === null || _c === void 0 ? void 0 : _c.toFixed(4));
let editor = this.getEditor();
if (editor) {
let from = editor.getCursor("anchor");
let to = editor.getCursor("head");
if (from && to) {
state.cursor = {
from: {
ch: from.ch,
line: from.line
},
to: {
ch: to.ch,
line: to.line
}
};
}
}
return state;
}
setEphemeralState(state) {
const view = this.app.workspace.getActiveViewOfType(obsidian.MarkdownView);
if (state.cursor) {
let editor = this.getEditor();
if (editor) {
editor.setSelection(state.cursor.from, state.cursor.to);
}
}
if (view && state.scroll) {
view.setEphemeralState(state);
// view.previewMode.applyScroll(state.scroll);
// view.sourceMode.applyScroll(state.scroll);
}
}
getEditor() {
var _a;
return (_a = this.app.workspace.getActiveViewOfType(obsidian.MarkdownView)) === null || _a === void 0 ? void 0 : _a.editor;
}
loadSettings() {
return __awaiter(this, void 0, void 0, function* () {
let settings = Object.assign({}, DEFAULT_SETTINGS, yield this.loadData());
if ((settings === null || settings === void 0 ? void 0 : settings.saveTimer) < SAFE_DB_FLUSH_INTERVAL) {
settings.saveTimer = SAFE_DB_FLUSH_INTERVAL;
}
this.settings = settings;
});
}
saveSettings() {
return __awaiter(this, void 0, void 0, function* () {
yield this.saveData(this.settings);
});
}
delay(ms) {
return __awaiter(this, void 0, void 0, function* () {
return new Promise(resolve => setTimeout(resolve, ms));
});
}
}
class SettingTab extends obsidian.PluginSettingTab {
constructor(app, plugin) {
super(app, plugin);
this.plugin = plugin;
}
display() {
let { containerEl } = this;
containerEl.empty();
containerEl.createEl('h2', { text: 'Remember cursor position - Settings' });
new obsidian.Setting(containerEl)
.setName('Data file name')
.setDesc('Save positions to this file')
.addText((text) => text
.setPlaceholder('Example: cursor-positions.json')
.setValue(this.plugin.settings.dbFileName)
.onChange((value) => __awaiter(this, void 0, void 0, function* () {
this.plugin.settings.dbFileName = value;
yield this.plugin.saveSettings();
})));
new obsidian.Setting(containerEl)
.setName('Delay after opening a new note')
.setDesc("This plugin shouldn't scroll if you used a link to the note header like [link](note.md#header). If it did, then increase the delay until everything works. If you are not using links to page sections, set the delay to zero (slider to the left). Slider values: 0-300 ms (default value: 100 ms).")
.addSlider((text) => text
.setLimits(0, 300, 10)
.setValue(this.plugin.settings.delayAfterFileOpening)
.onChange((value) => __awaiter(this, void 0, void 0, function* () {
this.plugin.settings.delayAfterFileOpening = value;
yield this.plugin.saveSettings();
})));
new obsidian.Setting(containerEl)
.setName('Delay between saving the cursor position to file')
.setDesc("Useful for multi-device users. If you don't want to wait until closing Obsidian to the cursor position been saved.")
.addSlider((text) => text
.setLimits(SAFE_DB_FLUSH_INTERVAL, SAFE_DB_FLUSH_INTERVAL * 10, 10)
.setValue(this.plugin.settings.saveTimer)
.onChange((value) => __awaiter(this, void 0, void 0, function* () {
this.plugin.settings.saveTimer = value;
yield this.plugin.saveSettings();
})));
}
}
module.exports = RememberCursorPosition;
/* nosourcemap */

View File

@@ -0,0 +1,10 @@
{
"id": "remember-cursor-position",
"name": "Remember cursor position",
"version": "1.0.9",
"minAppVersion": "0.9.12",
"description": "Remember cursor and scroll position for each note",
"author": "Dmitry Savosh",
"authorUrl": "https://github.com/dy-sh/",
"isDesktopOnly": false
}

View File

@@ -0,0 +1 @@
data.json

235
.obsidian/plugins/remotely-save/main.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,11 @@
{
"id": "remotely-save",
"name": "Remotely Save",
"version": "0.5.25",
"minAppVersion": "0.13.21",
"description": "Yet another unofficial plugin allowing users to synchronize notes between local device and the cloud service.",
"author": "fyears",
"authorUrl": "https://github.com/fyears",
"isDesktopOnly": false,
"fundingUrl": "https://remotelysave.com"
}

View File

@@ -0,0 +1,244 @@
/* set the styles */
.password-second-confirm {
font-weight: bold;
}
.password-disclaimer {
font-weight: bold;
}
.encryptionmethod-second-confirm {
font-weight: bold;
}
.settings-auth-related {
border-top: 1px solid var(--background-modifier-border);
padding-top: 18px;
}
.settings-percentage-custom-hide {
display: none;
}
.settings-encryption-method-hide {
display: none;
}
.s3-disclaimer {
font-weight: bold;
}
.s3-hide {
display: none;
}
.dropbox-disclaimer {
font-weight: bold;
}
.dropbox-hide {
display: none;
}
.dropbox-auth-button-hide {
display: none;
}
.dropbox-revoke-auth-button-hide {
display: none;
}
.onedrive-disclaimer {
font-weight: bold;
}
.onedrive-hide {
display: none;
}
.onedrive-auth-button-hide {
display: none;
}
.onedrive-revoke-auth-button-hide {
display: none;
}
.onedrivefull-allow-to-use-hide {
display: none;
}
.onedrivefull-disclaimer {
font-weight: bold;
}
.onedrivefull-hide {
display: none;
}
.onedrivefull-auth-button-hide {
display: none;
}
.onedrivefull-revoke-auth-button-hide {
display: none;
}
.webdav-disclaimer {
font-weight: bold;
}
.webdav-hide {
display: none;
}
.webdav-customheaders-textarea {
font-family: monospace;
}
.webdis-disclaimer {
font-weight: bold;
}
.webdis-hide {
display: none;
}
.googledrive-disclaimer {
font-weight: bold;
}
.googledrive-hide {
display: none;
}
.googledrive-allow-to-use-hide {
display: none;
}
.googledrive-auth-button-hide {
display: none;
}
.googledrive-revoke-auth-button-hide {
display: none;
}
.box-disclaimer {
font-weight: bold;
}
.box-hide {
display: none;
}
.box-allow-to-use-hide {
display: none;
}
.box-auth-button-hide {
display: none;
}
.box-revoke-auth-button-hide {
display: none;
}
.pcloud-disclaimer {
font-weight: bold;
}
.pcloud-hide {
display: none;
}
.pcloud-allow-to-use-hide {
display: none;
}
.pcloud-auth-button-hide {
display: none;
}
.pcloud-revoke-auth-button-hide {
display: none;
}
.yandexdisk-disclaimer {
font-weight: bold;
}
.yandexdisk-hide {
display: none;
}
.yandexdisk-allow-to-use-hide {
display: none;
}
.yandexdisk-auth-button-hide {
display: none;
}
.yandexdisk-revoke-auth-button-hide {
display: none;
}
.koofr-disclaimer {
font-weight: bold;
}
.koofr-hide {
display: none;
}
.koofr-allow-to-use-hide {
display: none;
}
.koofr-auth-button-hide {
display: none;
}
.koofr-revoke-auth-button-hide {
display: none;
}
.azureblobstorage-disclaimer {
font-weight: bold;
}
.azureblobstorage-hide {
display: none;
}
.azureblobstorage-allow-to-use-hide {
display: none;
}
.qrcode-img {
width: 350px;
height: 350px;
}
.ignorepaths-textarea {
font-family: monospace;
}
.onlyallowpaths-textarea {
font-family: monospace;
}
.logtohttpserver-warning {
color: red;
font-weight: bolder;
}
.setting-need-wrapping .setting-item-control {
/* flex-wrap: wrap; */
display: grid;
}
.pro-disclaimer {
font-weight: bold;
}
.pro-hide {
display: none;
}
.pro-auth-button-hide {
display: none;
}
.pro-revoke-auth-button-hide {
display: none;
}

35
.obsidian/snippets/mermaid.css vendored Normal file
View File

@@ -0,0 +1,35 @@
.markdown-preview-view .mermaid,
.markdown-rendered .mermaid {
display: flex;
justify-content: center;
align-items: center;
margin: 0;
}
.mermaid svg {
display: block;
width: auto !important;
height: auto !important;
max-width: 80%;
margin: 0;
padding: 0;
}
div:has(> .mermaid):hover {
width: auto !important;
}
.mermaid:hover {
overflow: scroll;
padding: 0;
margin: 0;
text-align: left;
}
.mermaid:hover svg {
display: block;
width: auto;
margin: 0;
padding: 0;
}

17
.obsidian/snippets/table-wrap-fix.css vendored Normal file
View File

@@ -0,0 +1,17 @@
.markdown-preview-view table {
table-layout: fixed;
width: 100%;
}
.markdown-preview-view th,
.markdown-preview-view td {
white-space: normal !important;
word-break: break-word !important;
overflow-wrap: break-word !important;
}
.markdown-preview-view code {
white-space: pre-wrap !important;
word-break: break-all !important;
}

View File

@@ -0,0 +1,8 @@
{
"name": "Baseline",
"version": "3.2.9",
"minAppVersion": "1.11.6",
"author": "Alexis C",
"authorUrl": "https://github.com/aaaaalexis",
"fundingUrl": "https://www.buymeacoffee.com/sevenaxis"
}

3146
.obsidian/themes/Baseline/theme.css vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,8 @@
{
"name": "Minimal",
"version": "8.0.4",
"minAppVersion": "1.9.0",
"author": "@kepano",
"authorUrl": "https://twitter.com/kepano",
"fundingUrl": "https://www.buymeacoffee.com/kepano"
}

2251
.obsidian/themes/Minimal/theme.css vendored Normal file

File diff suppressed because one or more lines are too long

229
.obsidian/workspace-mobile.json vendored Normal file
View File

@@ -0,0 +1,229 @@
{
"main": {
"id": "63c7a94c5413fbe9",
"type": "split",
"children": [
{
"id": "c7e2a979e98e91a5",
"type": "tabs",
"children": [
{
"id": "9e20e40848ead0dd",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "period/daily/250509.md",
"mode": "source",
"source": false
},
"icon": "lucide-file",
"title": "250509"
}
},
{
"id": "96952f7fa67ed71b",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "study/conf/EuroSys'26.md",
"mode": "preview",
"source": false
},
"icon": "lucide-file",
"title": "EuroSys'26"
}
},
{
"id": "211edc9bbedb8e4a",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "study/conf/Untitled.md",
"mode": "source",
"source": false
},
"icon": "lucide-file",
"title": "Untitled"
}
}
],
"currentTab": 2
}
],
"direction": "vertical"
},
"left": {
"id": "dda3df687c3b1f7a",
"type": "mobile-drawer",
"children": [
{
"id": "2681dfdaed3d6e72",
"type": "leaf",
"state": {
"type": "file-explorer",
"state": {
"sortOrder": "alphabetical",
"autoReveal": false
},
"icon": "lucide-folder-closed",
"title": "Files"
}
},
{
"id": "47d7b56b8956fba6",
"type": "leaf",
"state": {
"type": "search",
"state": {
"query": "",
"matchingCase": false,
"explainSearch": false,
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical"
},
"icon": "lucide-search",
"title": "Search"
}
},
{
"id": "987074333a2814fc",
"type": "leaf",
"state": {
"type": "tag",
"state": {
"sortOrder": "frequency",
"useHierarchy": true,
"showSearch": false,
"searchQuery": ""
},
"icon": "lucide-tags",
"title": "Tags"
}
},
{
"id": "90f659e436253420",
"type": "leaf",
"state": {
"type": "bookmarks",
"state": {},
"icon": "lucide-bookmark",
"title": "Bookmarks"
}
}
],
"currentTab": 0
},
"right": {
"id": "205878452f07eea8",
"type": "mobile-drawer",
"children": [
{
"id": "8b57cba29869dbde",
"type": "leaf",
"state": {
"type": "backlink",
"state": {
"file": "study/conf/EuroSys'26.md",
"collapseAll": true,
"extraContext": false,
"sortOrder": "alphabetical",
"showSearch": false,
"searchQuery": "",
"backlinkCollapsed": false,
"unlinkedCollapsed": true
},
"icon": "links-coming-in",
"title": "Backlinks"
}
},
{
"id": "d5da11cc7f42c6e0",
"type": "leaf",
"state": {
"type": "outgoing-link",
"state": {
"file": "phd/research/moe/Study.md",
"linksCollapsed": false,
"unlinkedCollapsed": true
},
"icon": "links-going-out",
"title": "Outgoing links"
}
},
{
"id": "d597776f419bcca5",
"type": "leaf",
"state": {
"type": "outline",
"state": {
"file": "phd/research/moe/Study.md",
"followCursor": false,
"showSearch": false,
"searchQuery": ""
},
"icon": "lucide-list",
"title": "Outline"
}
}
],
"currentTab": 0
},
"left-ribbon": {
"hiddenItems": {
"remotely-save:Remotely Save": false,
"bases:Create new base": false,
"obsidian-focus-mode:Toggle Focus Mode (Shift + Click to show active pane only)": false,
"switcher:Open quick switcher": false,
"graph:Open graph view": false,
"canvas:Create new canvas": false,
"daily-notes:Open today's daily note": false,
"templates:Insert template": false,
"command-palette:Open command palette": false,
"periodic-notes:Open today": false
}
},
"active": "211edc9bbedb8e4a",
"lastOpenFiles": [
"study/conf/Untitled.md",
"study/conf/EuroSys'26.md",
"projects/agentic-kvcache/ongoing.md",
"dev-env-setup.md",
"Scrolling.md",
"projects/heterogenous-parallelism/sync2.md",
"z/courses/中马.md",
"z/courses/pm/report.figs/struct.drawio",
"phd/weekly-report/251214.md",
"z/courses/自然辩证法复习资料.md",
"phd/weekly-report/251109.md",
"phd/weekly-report/251102.md",
"phd/weekly-report/251026.md",
"Config for Ali.md",
"projects/heterogenous-parallelism/Sync.md",
"article/Thinking.md",
"ongoing/Agentic AI Infra.md",
"projects/moe-autoscaling/Bailian Arch.md",
"projects/moe-autoscaling/Survey.md",
"projects/moe-autoscaling/Survey.figs",
"projects/moe-autoscaling/Survey.figs/250611-091821.jpeg",
"phd/paper-sharing/IMPRESS.md",
"conf/ChinaSys25-Spr.md",
"conf/ChinaSys25-Spr.figs/250525-101629.jpeg",
"conf/ChinaSys25-Spr.figs/250525-101147.jpeg",
"conf/ChinaSys25-Spr.figs/250525-100839.jpeg",
"conf/ChinaSys25-Spr.figs/250525-100200.jpeg",
"conf/ChinaSys25-Spr.figs/250525-095739.jpeg",
"ongoing/Hardware for Inference.md",
"conf/ChinaSys25-Spr.figs",
"conf/ChinaSys25-Spr.figs/250524-113000.jpeg",
"period/daily/250509.md",
"conf",
"period/daily/250508.md",
"project/serverless-kvcache/Dev.md",
"period/weekly/25-08.md",
"period/weekly/25-14.md"
]
}

241
.obsidian/workspace.json vendored Normal file
View File

@@ -0,0 +1,241 @@
{
"main": {
"id": "9403ee3a1c3b5fdc",
"type": "split",
"children": [
{
"id": "a8893039c60b1468",
"type": "tabs",
"children": [
{
"id": "d3ef7a66c76312f9",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "Config for Ali.md",
"mode": "source",
"source": false
},
"icon": "lucide-file",
"title": "Config for Ali"
}
},
{
"id": "355b338ca9065921",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "projects/agentic-kvcache/related-works.md",
"mode": "source",
"source": false
},
"icon": "lucide-file",
"title": "related-works"
}
}
],
"currentTab": 1
}
],
"direction": "vertical"
},
"left": {
"id": "be577ada85f6747a",
"type": "split",
"children": [
{
"id": "cd5cce81b09d3b4e",
"type": "tabs",
"children": [
{
"id": "91d8cf92d8e931b2",
"type": "leaf",
"state": {
"type": "file-explorer",
"state": {
"sortOrder": "alphabetical",
"autoReveal": true
},
"icon": "lucide-folder-closed",
"title": "Files"
}
},
{
"id": "023b47b49edb4ba3",
"type": "leaf",
"state": {
"type": "search",
"state": {
"query": "",
"matchingCase": false,
"explainSearch": false,
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical"
},
"icon": "lucide-search",
"title": "Search"
}
},
{
"id": "914daba8cb3bfdc1",
"type": "leaf",
"state": {
"type": "bookmarks",
"state": {},
"icon": "lucide-bookmark",
"title": "Bookmarks"
}
}
]
}
],
"direction": "horizontal",
"width": 247.5
},
"right": {
"id": "ec415b2a0aef9bb4",
"type": "split",
"children": [
{
"id": "010cf2140800e841",
"type": "tabs",
"children": [
{
"id": "90f6b8f3150c9e47",
"type": "leaf",
"state": {
"type": "backlink",
"state": {
"file": "phd/paper-sharing/IMPRESS.md",
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical",
"showSearch": false,
"searchQuery": "",
"backlinkCollapsed": false,
"unlinkedCollapsed": true
},
"icon": "links-coming-in",
"title": "Backlinks for IMPRESS"
}
},
{
"id": "e0ffc1ccd84af0df",
"type": "leaf",
"state": {
"type": "outgoing-link",
"state": {
"file": "phd/research/MoE/Papers.md",
"linksCollapsed": false,
"unlinkedCollapsed": true
},
"icon": "links-going-out",
"title": "Outgoing links from Papers"
}
},
{
"id": "c905c5e3f85014fd",
"type": "leaf",
"state": {
"type": "tag",
"state": {
"sortOrder": "frequency",
"useHierarchy": true,
"showSearch": false,
"searchQuery": ""
},
"icon": "lucide-tags",
"title": "Tags"
}
},
{
"id": "b9bf7673cb90e601",
"type": "leaf",
"state": {
"type": "outline",
"state": {
"file": "projects/agentic-kvcache/related-works.md",
"followCursor": false,
"showSearch": false,
"searchQuery": ""
},
"icon": "lucide-list",
"title": "Outline of related-works"
}
}
],
"currentTab": 3
}
],
"direction": "horizontal",
"width": 200
},
"left-ribbon": {
"hiddenItems": {
"bases:Create new base": false,
"switcher:Open quick switcher": false,
"graph:Open graph view": false,
"canvas:Create new canvas": false,
"templates:Insert template": false,
"command-palette:Open command palette": false,
"daily-notes:Open today's daily note": true,
"obsidian-focus-mode:Toggle Focus Mode (Shift + Click to show active pane only)": false,
"remotely-save:Remotely Save": false,
"periodic-notes:Open today": false
}
},
"active": "355b338ca9065921",
"lastOpenFiles": [
"study/conf/Untitled.md",
"study/conf/EuroSys'26.md",
"Untitled.md",
"Config for Ali.md",
"projects/auto-tuner/Ali Deployment.md",
"projects/agentic-kvcache/ongoing.md",
"projects/agentic-kvcache/related-works.md",
"Commands.md",
"projects/agentic-kvcache/sync.md",
"projects/agentic-kvcache/outline.md",
"projects/agentic-kvcache/roadmap.md",
"projects/agentic-kvcache/main.md",
"projects/agentic-kvcache",
"projects/auto-tuner/sync2.md",
"period/daily/26/260310.md",
"period/daily/26/260312.md",
"projects/auto-tuner/ali trace.md",
"projects/auto-tuner/Untitled 3.md",
"projects/auto-tuner/eval setup.md",
"projects/auto-tuner/related-works.md",
"dev-env-setup.md",
"projects/auto-tuner/draft.md",
"projects/auto-tuner/Untitled 1.md",
"period/daily/26/260320.md",
"period/daily/26/260317.md",
"projects/auto-tuner/Untitled 2.md",
"projects/auto-tuner/principles model.md",
"projects/auto-tuner/related-works.figs",
"projects/auto-tuner/related-works.figs/260410-105227.png",
"projects/auto-tuner/sync2.figs/260410-105228-9.png",
"projects/auto-tuner/sync2.figs/260410-105228-7.png",
"projects/auto-tuner/sync2.figs/260410-105228-6.png",
"projects/auto-tuner/sync2.figs/260410-105228-8.png",
"projects/auto-tuner/sync2.figs/260410-105228-5.png",
"projects/auto-tuner/sync2.figs/260410-105228-4.png",
"projects/auto-tuner/sync2.figs/260410-105228-3.png",
"projects/auto-tuner/sync2.figs/260410-105228-2.png",
"main.canvas",
"period/weekly/26",
"period/weekly/25",
"period/daily/25",
"period/daily/26",
"article/published/杂谈|博零总结.figs/250913-144507.png",
"article/published/杂谈|博零总结.figs",
"article/published",
"article/drafts",
"review/assignments",
"Untitled.canvas"
]
}