Implement multi-stage Docker build with security hardening, add health check endpoint, optimize in-memory search with O(1) wikilink lookup, extract inline tags from markdown content, and enhance documentation with architecture diagrams and performance metrics

This commit is contained in:
2026-03-22 19:03:34 -04:00
parent d9add8dcba
commit d311a09527
11 changed files with 1097 additions and 182 deletions
+62 -2
View File
@@ -26,6 +26,10 @@
--scrollbar: #30363d;
--resize-handle: #30363d;
--overlay-bg: rgba(0,0,0,0.5);
--danger: #ff7b72;
--danger-bg: #3d1a18;
--success: #3fb950;
--success-bg: #1a3d1f;
}
/* ===== THEME — LIGHT ===== */
@@ -47,6 +51,10 @@
--scrollbar: #d0d7de;
--resize-handle: #d0d7de;
--overlay-bg: rgba(0,0,0,0.3);
--danger: #cf222e;
--danger-bg: #ffebe9;
--success: #1a7f37;
--success-bg: #dafbe1;
}
/* ===== BASE ===== */
@@ -1382,8 +1390,8 @@ select {
opacity: 0.9;
}
.editor-btn.danger:hover {
color: #ff7b72;
border-color: #ff7b72;
color: var(--danger);
border-color: var(--danger);
}
.editor-body {
flex: 1;
@@ -2059,3 +2067,55 @@ body.resizing-v {
border: none;
padding: 0;
}
/* --- Toast notifications --- */
.toast-container {
position: fixed;
bottom: 20px;
left: 50%;
transform: translateX(-50%);
z-index: 10000;
display: flex;
flex-direction: column;
align-items: center;
gap: 8px;
pointer-events: none;
}
.toast {
padding: 10px 20px;
border-radius: 8px;
font-family: 'JetBrains Mono', monospace;
font-size: 0.82rem;
color: var(--text-primary);
background: var(--bg-secondary);
border: 1px solid var(--border);
box-shadow: 0 8px 24px rgba(0,0,0,0.3);
opacity: 0;
transform: translateY(12px);
transition: opacity 250ms ease, transform 250ms ease;
pointer-events: auto;
max-width: 420px;
text-align: center;
}
.toast.show {
opacity: 1;
transform: translateY(0);
}
.toast-error {
border-color: var(--danger);
background: var(--danger-bg);
color: var(--danger);
}
.toast-success {
border-color: var(--success);
background: var(--success-bg);
color: var(--success);
}
/* --- Tree loading indicator --- */
.tree-loading {
display: flex;
align-items: center;
justify-content: center;
padding: 8px 16px;
}