Repository navigation
Expand file tree
/
Copy patharchitecture.html
More file actions
70 lines (68 loc) · 65.9 KB
/
Copy patharchitecture.html
File metadata and controls
70 lines (68 loc) · 65.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<!DOCTYPE html>
<html lang="en-US" dir="ltr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Application Architecture | Notely</title>
<meta name="description" content="Comprehensive overview of Notely's offline-first desktop application architecture, subsystems, IPC messaging, storage layers, and logging infrastructure.">
<meta name="generator" content="VitePress v1.6.4">
<link rel="preload stylesheet" href="/assets/style.LHjU0QmO.css" as="style">
<link rel="preload stylesheet" href="/vp-icons.css" as="style">
<script type="module" src="/assets/app.DXa_aX9c.js"></script>
<link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
<link rel="modulepreload" href="/assets/chunks/framework.DACwFHq9.js">
<link rel="modulepreload" href="/assets/chunks/theme.CD6gR9Gt.js">
<link rel="modulepreload" href="/assets/chunks/katex.C5jXJg4s.js">
<link rel="modulepreload" href="/assets/chunks/dagre-BM42HDAG.BIiyP3kB.js">
<link rel="modulepreload" href="/assets/chunks/cose-bilkent-S5V4N54A.7Gd8fKfD.js">
<link rel="modulepreload" href="/assets/chunks/c4Diagram-AAUBKEIU.df12iUOl.js">
<link rel="modulepreload" href="/assets/chunks/flowDiagram-I6XJVG4X.C_KrUtQ-.js">
<link rel="modulepreload" href="/assets/chunks/erDiagram-TEJ5UH35.B2D0S0MG.js">
<link rel="modulepreload" href="/assets/chunks/gitGraphDiagram-PVQCEYII.C-ATfcCj.js">
<link rel="modulepreload" href="/assets/chunks/ganttDiagram-6RSMTGT7.DWs5DXAd.js">
<link rel="modulepreload" href="/assets/chunks/infoDiagram-5YYISTIA.Hq15GQZF.js">
<link rel="modulepreload" href="/assets/chunks/pieDiagram-4H26LBE5.C1YI3Jp3.js">
<link rel="modulepreload" href="/assets/chunks/quadrantDiagram-W4KKPZXB.DzHZBU5C.js">
<link rel="modulepreload" href="/assets/chunks/xychartDiagram-2RQKCTM6.BpCYTbYk.js">
<link rel="modulepreload" href="/assets/chunks/requirementDiagram-4Y6WPE33.GNavK0rl.js">
<link rel="modulepreload" href="/assets/chunks/sequenceDiagram-3UESZ5HK.Dv8Edqau.js">
<link rel="modulepreload" href="/assets/chunks/classDiagram-4FO5ZUOK.vQmJtydv.js">
<link rel="modulepreload" href="/assets/chunks/classDiagram-v2-Q7XG4LA2.vQmJtydv.js">
<link rel="modulepreload" href="/assets/chunks/stateDiagram-AJRCARHV.DlaScnz_.js">
<link rel="modulepreload" href="/assets/chunks/stateDiagram-v2-BHNVJYJU.lfrmuUB2.js">
<link rel="modulepreload" href="/assets/chunks/journeyDiagram-JHISSGLW.BAnsFYTY.js">
<link rel="modulepreload" href="/assets/chunks/timeline-definition-PNZ67QCA.DS_uV7RR.js">
<link rel="modulepreload" href="/assets/chunks/mindmap-definition-RKZ34NQL.BKZqFs0s.js">
<link rel="modulepreload" href="/assets/chunks/kanban-definition-UN3LZRKU.C0pIzFN-.js">
<link rel="modulepreload" href="/assets/chunks/sankeyDiagram-5OEKKPKP.D6bLljU-.js">
<link rel="modulepreload" href="/assets/chunks/diagram-LMA3HP47.DSrkWYvu.js">
<link rel="modulepreload" href="/assets/chunks/diagram-2AECGRRQ.cNddinVX.js">
<link rel="modulepreload" href="/assets/chunks/blockDiagram-GPEHLZMM.DYGYPi4w.js">
<link rel="modulepreload" href="/assets/chunks/diagram-5GNKFQAL.D07rX0lS.js">
<link rel="modulepreload" href="/assets/chunks/architectureDiagram-3BPJPVTR.DhdrvAeF.js">
<link rel="modulepreload" href="/assets/chunks/diagram-KO2AKTUF.Dw6aD3-b.js">
<link rel="modulepreload" href="/assets/chunks/ishikawaDiagram-YF4QCWOH.BH6rKOGz.js">
<link rel="modulepreload" href="/assets/chunks/vennDiagram-CIIHVFJN.DEihtD-w.js">
<link rel="modulepreload" href="/assets/chunks/diagram-OG6HWLK6.BlQXdLaE.js">
<link rel="modulepreload" href="/assets/chunks/wardleyDiagram-YWT4CUSO.CszHvAAH.js">
<link rel="modulepreload" href="/assets/chunks/virtual_mermaid-config.DDnGl6nM.js">
<link rel="modulepreload" href="/assets/architecture.md.Ccadxo2a.lean.js">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="">
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap">
<meta name="theme-color" content="#2f5d62">
<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
</head>
<body>
<div id="app"><div class="Layout" data-v-5d98c3a5><!--[--><!--]--><!--[--><span tabindex="-1" data-v-0b0ada53></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-0b0ada53>Skip to content</a><!--]--><!----><header class="VPNav" data-v-5d98c3a5 data-v-ae24b3ad><div class="VPNavBar" data-v-ae24b3ad data-v-6aa21345><div class="wrapper" data-v-6aa21345><div class="container" data-v-6aa21345><div class="title" data-v-6aa21345><div class="VPNavBarTitle has-sidebar" data-v-6aa21345 data-v-1168a8e4><a class="title" href="/" data-v-1168a8e4><!--[--><!--]--><!--[--><img class="VPImage logo" src="/assets/icon.png" alt data-v-8426fc1a><!--]--><span data-v-1168a8e4>Notely</span><!--[--><!--]--></a></div></div><div class="content" data-v-6aa21345><div class="content-body" data-v-6aa21345><!--[--><!--]--><div class="VPNavBarSearch search" data-v-6aa21345><!--[--><!----><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-6aa21345 data-v-dc692963><span id="main-nav-aria-label" class="visually-hidden" data-v-dc692963> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>Home</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/getting-started/" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>Getting Started</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/editor/" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>Editor</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/workspace/" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>Workspace</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/git/" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>Git</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/ai/" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>AI</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://github.com/TheNotelyApp/Notely/releases/latest" target="_blank" rel="noreferrer" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>Download</span><!--]--></a><!--]--><!--]--></nav><!----><!----><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-6aa21345 data-v-0394ad82 data-v-7bc22406><!--[--><a class="VPSocialLink no-icon" href="https://github.com/TheNotelyApp/Notely" aria-label="github" target="_blank" rel="noopener" data-v-7bc22406 data-v-bd121fe5><span class="vpi-social-github"></span></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-6aa21345 data-v-bb2aa2f0 data-v-cf11d7a2><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-cf11d7a2><span class="vpi-more-horizontal icon" data-v-cf11d7a2></span></button><div class="menu" data-v-cf11d7a2><div class="VPMenu" data-v-cf11d7a2 data-v-b98bc113><!----><!--[--><!--[--><!----><!----><div class="group" data-v-bb2aa2f0><div class="item social-links" data-v-bb2aa2f0><div class="VPSocialLinks social-links-list" data-v-bb2aa2f0 data-v-7bc22406><!--[--><a class="VPSocialLink no-icon" href="https://github.com/TheNotelyApp/Notely" aria-label="github" target="_blank" rel="noopener" data-v-7bc22406 data-v-bd121fe5><span class="vpi-social-github"></span></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-6aa21345 data-v-e5dd9c1c><span class="container" data-v-e5dd9c1c><span class="top" data-v-e5dd9c1c></span><span class="middle" data-v-e5dd9c1c></span><span class="bottom" data-v-e5dd9c1c></span></span></button></div></div></div></div><div class="divider" data-v-6aa21345><div class="divider-line" data-v-6aa21345></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-5d98c3a5 data-v-a6f0e41e><div class="container" data-v-a6f0e41e><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-a6f0e41e><span class="vpi-align-left menu-icon" data-v-a6f0e41e></span><span class="menu-text" data-v-a6f0e41e>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-a6f0e41e data-v-8a42e2b4><button data-v-8a42e2b4>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-5d98c3a5 data-v-319d5ca6><div class="curtain" data-v-319d5ca6></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-319d5ca6><span class="visually-hidden" id="sidebar-aria-label" data-v-319d5ca6> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0 collapsible" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>Getting Started</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b3fd67f8><span class="vpi-chevron-right caret-icon" data-v-b3fd67f8></span></div></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/getting-started/" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/user-guide.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>User Guide</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/getting-started/first-note.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Your First Note</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/top-tasks.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Top Common Tasks</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0 collapsible" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>Editor</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b3fd67f8><span class="vpi-chevron-right caret-icon" data-v-b3fd67f8></span></div></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/editor/" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Editor Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/editor/markdown-guide.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Markdown Guide</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/editor/markdown-toolbar.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Toolbar Reference</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/editor/code-blocks.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Code Blocks</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/editor/tables.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Tables</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/editor/diagrams.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Diagrams & Wireframes</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/editor/focus-mode.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Focus Mode & Outline</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0 collapsible collapsed" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>Search</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b3fd67f8><span class="vpi-chevron-right caret-icon" data-v-b3fd67f8></span></div></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/search.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Search</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0 collapsible" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>Workspace</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b3fd67f8><span class="vpi-chevron-right caret-icon" data-v-b3fd67f8></span></div></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/workspace/" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Workspace Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/workspace/tasks.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Tasks</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/workspace/calendar.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Calendar</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/workspace/media.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Media</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/workspace/audio-recording.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Audio Recording & STT</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/workspace/attached-repos.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Attached Repositories</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/workspace/terminal.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Embedded Terminal</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/workspace/screen-capture.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Screen Capture & Recording</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/workspace/graph.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Workspace Graph</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/workspace/downloads.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Downloads & History</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/workspace/export.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Export</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0 collapsible" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>Export & Import</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b3fd67f8><span class="vpi-chevron-right caret-icon" data-v-b3fd67f8></span></div></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/export-reference.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Export Reference</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/workspace/downloads.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Downloads Manager</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/web-view.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Website View</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/export-import.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Note Packages</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0 collapsible" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>Git Version Control</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b3fd67f8><span class="vpi-chevron-right caret-icon" data-v-b3fd67f8></span></div></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/git/" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Git Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/workspace/attached-repos.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Attached Repositories</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/git/setup.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Setup & Repository</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/git/commit.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Commit & Stage</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/git/history.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>History & Restore</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/git/branches.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Branches & Remote</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0 collapsible" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>AI Features & Graph</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b3fd67f8><span class="vpi-chevron-right caret-icon" data-v-b3fd67f8></span></div></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/ai/" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>AI & MCP Overview</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/ai/ide-bridge.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>External IDE & AI Bridge</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/ai/features.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>AI Capabilities</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/ai/setup.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Provider Setup</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/ai/knowledge-graph.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Knowledge Graph Engine</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/ai/architecture.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>AI Architecture</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0 collapsible collapsed" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>Sync</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b3fd67f8><span class="vpi-chevron-right caret-icon" data-v-b3fd67f8></span></div></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/sync/" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Git Sync & Backup</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/data-sync-security.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Data & Sync Security</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0 collapsible" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>Reference</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b3fd67f8><span class="vpi-chevron-right caret-icon" data-v-b3fd67f8></span></div></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/feature-reference.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Feature Reference</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/settings-reference.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Settings Reference</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/keyboard-shortcuts.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Keyboard Shortcuts</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/feature-availability.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Feature Availability</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0 collapsible" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>Help</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b3fd67f8><span class="vpi-chevron-right caret-icon" data-v-b3fd67f8></span></div></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/troubleshooting.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Troubleshooting</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/faq.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>FAQ</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/release-notes.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Release Notes</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0 collapsible collapsed has-active" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>Developer & MCP</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b3fd67f8><span class="vpi-chevron-right caret-icon" data-v-b3fd67f8></span></div></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/developer/" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Developer Docs</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/developer/mcp.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>MCP Protocol Integration</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/mcp-tools-reference.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Enterprise MCP Tools Reference</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/architecture.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Application Architecture</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/ux-writing-guide.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>UX Writing Guide</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/license.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>License</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-5d98c3a5 data-v-1428d186><div class="VPDoc has-sidebar has-aside" data-v-1428d186 data-v-39a288b8><!--[--><!--]--><div class="container" data-v-39a288b8><div class="aside" data-v-39a288b8><div class="aside-curtain" data-v-39a288b8></div><div class="aside-container" data-v-39a288b8><div class="aside-content" data-v-39a288b8><div class="VPDocAside" data-v-39a288b8 data-v-3f215769><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-3f215769 data-v-a5bbad30><div class="content" data-v-a5bbad30><div class="outline-marker" data-v-a5bbad30></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-a5bbad30>On this page</div><ul class="VPDocOutlineItem root" data-v-a5bbad30 data-v-b933a997><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-3f215769></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-39a288b8><div class="content-container" data-v-39a288b8><!--[--><!--]--><main class="main" data-v-39a288b8><div style="position:relative;" class="vp-doc _architecture" data-v-39a288b8><div><h1 id="notely-application-architecture" tabindex="-1">Notely Application Architecture <a class="header-anchor" href="#notely-application-architecture" aria-label="Permalink to "Notely Application Architecture""></a></h1><p>Notely is an offline-first, local-first markdown note-taking and knowledge management application built using <strong>Electron</strong>, <strong>React</strong>, <strong>CodeMirror 6</strong>, and <strong>Node.js</strong>.</p><hr><h2 id="_1-high-level-architecture-overview" tabindex="-1">1. High-Level Architecture Overview <a class="header-anchor" href="#_1-high-level-architecture-overview" aria-label="Permalink to "1. High-Level Architecture Overview""></a></h2><p>Notely separates execution between a sandboxed <strong>Renderer Process</strong> (React UI) and a privileged <strong>Main Process</strong> (Node.js backend) communicating via secure IPC channels.</p><div class="mermaid"></div><hr><h2 id="_2-renderer-layer-react-editor-architecture" tabindex="-1">2. Renderer Layer (React & Editor Architecture) <a class="header-anchor" href="#_2-renderer-layer-react-editor-architecture" aria-label="Permalink to "2. Renderer Layer (React & Editor Architecture)""></a></h2><p>The user interface is powered by React 18, Vite, and custom CSS variables supporting dynamic light/dark mode themes.</p><h3 id="component-structure" tabindex="-1">Component Structure <a class="header-anchor" href="#component-structure" aria-label="Permalink to "Component Structure""></a></h3><ul><li><strong>App Shell (<code>App.jsx</code>)</strong>: Manages primary navigation, view routing, full-screen page overlays (<code>KnowledgeGraph</code>, <code>EmbeddingsPage</code>, <code>AppLogsPage</code>, <code>AIPersonasManager</code>, <code>AIHealthPage</code>, <code>GitVC</code>), and footer status bar.</li><li><strong>Layout Engine (<code>LandingView.jsx</code>, <code>EditorPane.jsx</code>, <code>DocumentDetail.jsx</code>)</strong>: Responsive split-pane layout supporting Edit mode, Preview mode, and Live Split View.</li><li><strong>Editor Core (<code>CodeMirrorEditor.jsx</code>, <code>MarkdownEditor.jsx</code>)</strong>: Built on CodeMirror 6 with custom extensions for syntax highlighting, line numbers, block folding, spell-checking, search/replace, and hotkeys.</li><li><strong>Preview Renderer (<code>MarkdownPreview.jsx</code>)</strong>: Full GitHub-Flavored Markdown (GFM) renderer supporting LaTeX equations (<code>katex</code>), task lists, local media resolution, and Wikilink navigation (<code>[[Note]]</code>).</li><li><strong>Mermaid.js Integration</strong>: Real-time evaluation and SVG rendering of GFM code blocks (<code>```mermaid</code>) for flowcharts, sequence diagrams, class diagrams, Gantt charts, and mindmaps across preview mode, split view, and exported documents.</li><li><strong>Excalidraw Drawing Editor</strong>: Embedded interactive whiteboard component allowing users to sketch visual diagrams, hand-drawn wireframes, and architectural schematics. Drawings are persisted as human-readable <code>.excalidraw</code> JSON files or embedded SVG graphics inside workspace notes.</li></ul><h3 id="state-management-contexts" tabindex="-1">State Management & Contexts <a class="header-anchor" href="#state-management-contexts" aria-label="Permalink to "State Management & Contexts""></a></h3><ul><li><strong><code>UIStateContext.jsx</code></strong>: Controls global dialogs, sidebar panels, active full-screen pages, theme preferences, and zoom factors.</li><li><strong><code>DocumentContext.jsx</code></strong>: Tracks the open document list, active document handle, unsaved dirty states, file content buffers, and document metadata.</li></ul><hr><h2 id="_3-main-process-application-subsystems" tabindex="-1">3. Main Process & Application Subsystems <a class="header-anchor" href="#_3-main-process-application-subsystems" aria-label="Permalink to "3. Main Process & Application Subsystems""></a></h2><p>The Electron main process (<code>electron/main.cjs</code> & <code>electron/lib/</code>) coordinates application logic across core subsystems:</p><h3 id="a-document-file-system-service" tabindex="-1">A. Document & File System Service <a class="header-anchor" href="#a-document-file-system-service" aria-label="Permalink to "A. Document & File System Service""></a></h3><ul><li><strong>File Watcher (<code>chokidar</code>)</strong>: Watches workspace directory tree recursively for external file additions, edits, renames, and deletions.</li><li><strong>Subfolder & Path Traversal</strong>: Resolves relative note paths, handles file CRUD operations safely, and computes workspace-wide document statistics.</li></ul><h3 id="b-git-version-control-subsystem-gitservice-cjs" tabindex="-1">B. Git Version Control Subsystem (<code>gitService.cjs</code>) <a class="header-anchor" href="#b-git-version-control-subsystem-gitservice-cjs" aria-label="Permalink to "B. Git Version Control Subsystem (`gitService.cjs`)""></a></h3><ul><li><strong>Local Git Execution</strong>: Runs native <code>git</code> CLI commands synchronously or asynchronously without external cloud dependencies.</li><li><strong>Feature Set</strong>: Workspace initialization, status tracking (staged/unstaged files), diff generation, commit creation, branch management, remote push/pull synchronization, and commit history inspection.</li></ul><h3 id="c-package-import-export-subsystem-notepackageipc-cjs" tabindex="-1">C. Package, Import & Export Subsystem (<code>notePackageIpc.cjs</code>) <a class="header-anchor" href="#c-package-import-export-subsystem-notepackageipc-cjs" aria-label="Permalink to "C. Package, Import & Export Subsystem (`notePackageIpc.cjs`)""></a></h3><p><strong>Document Exporters</strong>:</p><ul><li>Exports individual markdown notes to <strong>HTML</strong> and <strong>PDF</strong> formats via Headless Chromium rendering (CSS theme applied, media resolved).</li></ul><p><strong>Note Package System</strong> (<code>.note</code> bundle format):</p><ul><li>Bundles selected <code>.md</code> files with all linked assets into a single portable <code>.note</code> file via <strong>File → Export / Import Note Package</strong>.</li><li><strong>Bundled assets</strong>: markdown files, <code>media/images/</code>, Excalidraw diagrams (<code>.notes-app/excali-diagrams/</code>), Draw.io diagrams (<code>media/draw.io/</code>), and auto-generated <code>metadata.json</code>.</li><li><strong>Security</strong>: AES-256 encrypted bundle (not readable by generic ZIP tools). Each file is SHA-256 hashed and verified on import to reject tampered packages. Optional password protection stores a salted SHA-256 signature in the manifest.</li><li><strong>Import</strong>: Decrypts and verifies bundle integrity, resolves asset path conflicts, and places all files into the active workspace. See <a href="/export-reference.html">Export & Import Reference</a> for full user-facing documentation.</li></ul><h3 id="d-multi-format-document-extraction-subsystem-documentextractionservice-cjs" tabindex="-1">D. Multi-Format Document Extraction Subsystem (<code>DocumentExtractionService.cjs</code>) <a class="header-anchor" href="#d-multi-format-document-extraction-subsystem-documentextractionservice-cjs" aria-label="Permalink to "D. Multi-Format Document Extraction Subsystem (`DocumentExtractionService.cjs`)""></a></h3><ul><li><strong>Multi-Format Parsing Engine</strong>: Extract and convert complex binary documents into clean, structured Markdown: <ul><li>Word documents (<code>.docx</code>) using OpenXML text & table parser (<code>DocxExtractor.cjs</code>).</li><li>Spreadsheets (<code>.xlsx</code>, <code>.xls</code>, <code>.csv</code>, <code>.tsv</code>) using SheetJS workbook extraction (<code>SpreadsheetExtractor.cjs</code>).</li><li>Presentations (<code>.pptx</code>) with slide hierarchy and presenter notes (<code>PptxExtractor.cjs</code>).</li><li>PDF documents (<code>.pdf</code>) with spatial line clustering (<code>PdfExtractor.cjs</code>).</li></ul></li><li><strong>Document Cache Store (<code>DocumentCacheStore.cjs</code>)</strong>: SQLite-backed document store (<code>.notes-app/documents.db</code>) and disk cache (<code>.notes-app/extracted/</code>) storing content hashes, page counts, word counts, and extracted markdown chunks for instantaneous retrieval.</li></ul><h3 id="e-model-context-protocol-mcp-subsystem-mcpserver-cjs" tabindex="-1">E. Model Context Protocol (MCP) Subsystem (<code>McpServer.cjs</code>) <a class="header-anchor" href="#e-model-context-protocol-mcp-subsystem-mcpserver-cjs" aria-label="Permalink to "E. Model Context Protocol (MCP) Subsystem (`McpServer.cjs`)""></a></h3><ul><li><strong>Streamable HTTP & SSE Server</strong>: Embedded dual-transport MCP server listening by default on port <code>3700</code> exposing workspace capabilities to external AI clients (Google Antigravity, Claude Desktop, Cursor, IDE agents).</li><li><strong>Enterprise Capabilities</strong>: Registers <strong>7 unified enterprise tools</strong> (<code>search</code>, <code>read_note</code>, <code>edit_note</code>, <code>manage_tasks</code>, <code>manage_diagrams</code>, <code>workspace_overview</code>, <code>git_control</code>) and <strong>9 standard MCP prompts</strong> (<code>summarize_note</code>, <code>plan_tasks</code>, <code>explore_knowledge_graph</code>, <code>refactor_note</code>, <code>daily_review</code>, <code>synthesize_document</code>, <code>create_diagram</code>, <code>atomic_split</code>, <code>codebase_sync</code>). See <a href="/mcp-tools-reference.html">Enterprise MCP Tools & Prompts Reference</a>.</li><li><strong>Permission Control</strong>: Enforces <code>allowWriteTools</code> configuration toggle; rejects unauthorized write operations (<code>[W]</code>) automatically.</li><li><strong>Telemetry Flight Log</strong>: Records tool execution events in SQLite database and streams updates via IPC to <code>AIHealthPage.jsx</code>.</li></ul><h3 id="f-external-ai-ide-bridge-workspace-ignore-engine-aicontextbridgeservice-cjs" tabindex="-1">F. External AI IDE Bridge & Workspace Ignore Engine (<code>AiContextBridgeService.cjs</code>) <a class="header-anchor" href="#f-external-ai-ide-bridge-workspace-ignore-engine-aicontextbridgeservice-cjs" aria-label="Permalink to "F. External AI IDE Bridge & Workspace Ignore Engine (`AiContextBridgeService.cjs`)""></a></h3><ul><li><strong>Context Bridge</strong>: Background worker that automatically synchronizes real-time workspace sitemaps, open tasks, knowledge hubs, and extracted binary documents into <code>.notes-app/ai/dynamic-context.md</code>, <code>AGENTS.md</code>, <code>CLAUDE.md</code>, <code>.cursorrules</code>, and <code>.vscode/prompts/</code>.</li><li><strong>Workspace Ignore Policy (<code>workspaceIgnorePolicy.cjs</code>)</strong>: Single Source of Truth for ignoring build, dependency, and private system directories across File Tree, Knowledge Graph, Semantic Embeddings, Document Extractions, Task DB, MCP Tools, and external AI bridges. Supports <code>.notelyignore</code> and <code>.gitignore</code>.</li></ul><h3 id="g-knowledge-graph-vector-embedding-subsystem" tabindex="-1">G. Knowledge Graph & Vector Embedding Subsystem <a class="header-anchor" href="#g-knowledge-graph-vector-embedding-subsystem" aria-label="Permalink to "G. Knowledge Graph & Vector Embedding Subsystem""></a></h3><ul><li><strong>Vector Embeddings Engine (<code>EmbeddingDB.js</code>)</strong>: Stores 384-dimensional <code>BGE-small</code> vector chunks in <code>{workspace}/.notes-app/ai-embeddings.db</code>. Features physical vector dimension validation (<code>verifyModelDimensions</code>) to prevent dimension mismatches.</li><li><strong>Knowledge Graph Subsystem (<code>GraphService.js</code>, <code>GraphDB.js</code>)</strong>: Maps note relations, tags, mentions, Wikilinks, Images, Local Documents, and External URLs in <code>{workspace}/.notes-app/ai-graph.db</code>. Executes relation traversals via SQLite <strong>Recursive Common Table Expressions (CTEs)</strong>.</li><li><strong>Local ONNX Embedder</strong>: Vector embeddings (<code>BGE-small-en-v1.5</code>) and Knowledge Graph entity/relationship extraction run on-device and offline using <code>onnxruntime-node</code>.</li></ul><h4 id="ai-layer-architecture" tabindex="-1">AI Layer Architecture <a class="header-anchor" href="#ai-layer-architecture" aria-label="Permalink to "AI Layer Architecture""></a></h4><p>The following diagram shows the full request path from the React UI through each layer to inference and storage:</p><h3 id="f-model-context-protocol-mcp-server-subsystem-electron-mcp" tabindex="-1">F. Model Context Protocol (MCP) Server Subsystem (<code>electron/mcp/</code>) <a class="header-anchor" href="#f-model-context-protocol-mcp-server-subsystem-electron-mcp" aria-label="Permalink to "F. Model Context Protocol (MCP) Server Subsystem (`electron/mcp/`)""></a></h3><ul><li><strong>Streamable HTTP & SSE Server (<code>McpServer.cjs</code>)</strong>: Embedded MCP server (default port <code>3700</code>) exposing Notely workspace capabilities over Streamable HTTP (<code>/mcp</code>, <code>/sse</code>, <code>/</code>) and legacy SSE (<code>/sse</code>, <code>/messages</code>) with Bearer token authentication and session ID tracking.</li><li><strong>Lifecycle Controller (<code>McpLifecycle.cjs</code>)</strong>: Manages MCP server lifecycle, port settings (<code>mcp-config.json</code>), IPC status broadcasting (<code>mcp:status-changed</code>), and graceful app shutdown.</li><li><strong>Session Manager (<code>McpSessionManager.cjs</code>)</strong>: Tracks active client connections, remote User-Agents, request durations, and tool invocation stats.</li><li><strong>Application Tool Registry (<code>ApplicationToolRegistry.cjs</code>)</strong>: Exposes 7 self-sufficient enterprise tools for note operations, workspace multi-modal search, knowledge graph queries, task management, diagram management, git operations, and workspace metadata.</li><li><strong>Capabilities & Diagnostics UI</strong>: Integrated React views <code>MCPToolsPage.jsx</code> (Interactive capabilities catalog & terminal test runner) and <code>AIHealthPage.jsx</code> (MCP server telemetry & Streamable HTTP / SSE session diagnostics). See <a href="/developer/mcp.html">Developer MCP Guide</a> for detailed API schemas.</li></ul><div class="mermaid"></div><p>For a detailed walkthrough of each layer, see <a href="/ai/architecture.html">AI Subsystem Architecture</a>.</p><hr><h2 id="_4-centralized-system-logging-infrastructure-logdb-js" tabindex="-1">4. Centralized System Logging Infrastructure (<code>LogDB.js</code>) <a class="header-anchor" href="#_4-centralized-system-logging-infrastructure-logdb-js" aria-label="Permalink to "4. Centralized System Logging Infrastructure (`LogDB.js`)""></a></h2><p>Logging across Notely is managed by a centralized, generic SQLite log store (<code>LogDB.js</code>).</p><h3 id="database-schema" tabindex="-1">Database Schema <a class="header-anchor" href="#database-schema" aria-label="Permalink to "Database Schema""></a></h3><p>Logs are persisted inside the active workspace directory at <code>{workspace}/.notes-app/ai-logs.db</code>:</p><div class="language-sql vp-adaptive-theme line-numbers-mode"><button title="Copy Code" class="copy"></button><span class="lang">sql</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">CREATE</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> TABLE</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> IF</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> NOT</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> EXISTS</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> logs (</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> id </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">INTEGER</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> PRIMARY KEY</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> AUTOINCREMENT,</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> subsystem </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">TEXT</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> NOT NULL</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> level</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> TEXT</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> DEFAULT</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> 'info'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> message</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> TEXT</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> NOT NULL</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> metadata </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">TEXT</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> timestamp</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> TEXT</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> NOT NULL</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">);</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">CREATE</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> INDEX</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> IF</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> NOT</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> EXISTS</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> idx_logs_subsystem </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">ON</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> logs(subsystem);</span></span></code></pre><div class="line-numbers-wrapper" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br></div></div><h3 id="log-subsystem-categories" tabindex="-1">Log Subsystem Categories <a class="header-anchor" href="#log-subsystem-categories" aria-label="Permalink to "Log Subsystem Categories""></a></h3><ul><li><strong><code>app</code></strong>: Application startup, settings updates, file system I/O, package import/export.</li><li><strong><code>git</code></strong>: Git status checks, staging, commits, diffs, branch operations.</li><li><strong><code>embeddings</code></strong>: Vector indexing pipeline, model loading, chunking, database updates.</li><li><strong><code>graph</code></strong>: Knowledge Graph entity extractions, relationship linking, graph rebuilds.</li><li><strong><code>ai</code></strong>: LLM queries, tool invocations, prompt context assembly.</li></ul><h3 id="user-diagnostics-management-ui" tabindex="-1">User Diagnostics & Management UI <a class="header-anchor" href="#user-diagnostics-management-ui" aria-label="Permalink to "User Diagnostics & Management UI""></a></h3><ul><li><strong>System Logs Console (<code>AppLogsPage.jsx</code>)</strong>: Accessible via <strong>Help -> System & Application Logs</strong>. Features live search, subsystem/severity dropdown filters, live auto-refresh toggle, log clearing, and JSON log export.</li><li><strong>Subsystem Log Feeds</strong>: Embedded log panels inside <code>EmbeddingsPage</code> and <code>KnowledgeGraph</code> display real-time subsystem-filtered events.</li><li><strong>Subsystem Data Clear Buttons</strong>: <code>EmbeddingsPage</code> features a <strong>Clear Embeddings Data</strong> button (<code>aiClearEmbeddingsData</code>), and <code>KnowledgeGraph</code> features a <strong>Clear Knowledge Graph Data</strong> button (<code>aiClearGraphData</code>) to clear data caches independently of logs.</li></ul><hr><h2 id="_5-data-storage-workspace-directory-structure" tabindex="-1">5. Data Storage & Workspace Directory Structure <a class="header-anchor" href="#_5-data-storage-workspace-directory-structure" aria-label="Permalink to "5. Data Storage & Workspace Directory Structure""></a></h2><p>Notely maintains a clean separation between global application config, human-readable workspace files, and local metadata caches:</p><h3 id="workspace-storage-diagram" tabindex="-1">Workspace Storage Diagram <a class="header-anchor" href="#workspace-storage-diagram" aria-label="Permalink to "Workspace Storage Diagram""></a></h3><div class="mermaid"></div><h3 id="global-configuration" tabindex="-1">Global Configuration <a class="header-anchor" href="#global-configuration" aria-label="Permalink to "Global Configuration""></a></h3><ul><li><strong>Global App Database (<code>%APPDATA%/Notely/app.sqlite</code>)</strong>: Manages user preferences, API keys, active themes, window dimensions, and recently opened workspaces.</li></ul><h3 id="workspace-file-structure" tabindex="-1">Workspace File Structure <a class="header-anchor" href="#workspace-file-structure" aria-label="Permalink to "Workspace File Structure""></a></h3><ul><li><strong>Raw <code>.md</code> Files</strong>: Notes are saved as plain-text UTF-8 Markdown files directly in workspace root and subdirectories (<code>{workspace}/**/*.md</code>). Notely imposes zero proprietary database wrapping or lock-in, enabling seamless external editing with Git, VS Code, or Obsidian.</li><li><strong><code>Media/</code> Assets Folder</strong>: A dedicated assets directory located at <code>{workspace}/Media/</code> created to house user-attached media files: <ul><li>Images (<code>.png</code>, <code>.jpg</code>, <code>.jpeg</code>, <code>.gif</code>, <code>.svg</code>, <code>.webp</code>).</li><li>Video & Audio recordings (<code>.mp4</code>, <code>.webm</code>, <code>.mp3</code>, <code>.wav</code>, <code>.m4a</code>).</li><li>Document attachments (<code>.pdf</code>).</li><li>Excalidraw drawing files (<code>.excalidraw</code>).</li></ul></li><li><strong>Hidden Subsystem Folder (<code>{workspace}/.notes-app/</code>)</strong>: Internal SQLite caches for AI, tasks, documents, and system features: <ul><li><code>documents.db</code>: Stores document extraction records, content hashes, extraction status, and parsed metadata.</li><li><code>extracted/</code>: Stores cached raw Markdown representations of office and PDF documents.</li><li><code>task-db.sqlite</code>: Stores workspace-wide task metadata, priorities, due dates, assignee tags, source note hashes, and line indices for bi-directional checklist synchronization.</li><li><code>ai-embeddings.db</code>: Stores chunk text, line offsets, hashes, and 384-dimensional binary vector <code>BLOB</code>s.</li><li><code>ai-graph.db</code>: Stores extracted Knowledge Graph entity nodes, Wikilinks, media links, and relationship edges.</li><li><code>ai-logs.db</code>: Stores multitenant application, git, embedding, graph, and AI log entries.</li><li><code>wireframes/</code>: Stores GrapesJS UI prototype project JSON definitions (<code>.wireframe.json</code>).</li><li><code>app-state.json</code>: Caches workspace UI state, last opened note handles, and view preferences.</li></ul></li></ul></div></div></main><footer class="VPDocFooter" data-v-39a288b8 data-v-e257564d><!--[--><!--]--><div class="edit-info" data-v-e257564d><div class="edit-link" data-v-e257564d><a class="VPLink link vp-external-link-icon no-icon edit-link-button" href="https://github.com/TheNotelyApp/Notely/edit/main/docs/architecture.md" target="_blank" rel="noreferrer" data-v-e257564d><!--[--><span class="vpi-square-pen edit-link-icon" data-v-e257564d></span> Edit this page on GitHub<!--]--></a></div><div class="last-updated" data-v-e257564d><p class="VPLastUpdated" data-v-e257564d data-v-e98dd255>Last updated: <time datetime="2026-10-07T17:59:06.000Z" data-v-e98dd255></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-e257564d><span class="visually-hidden" id="doc-footer-aria-label" data-v-e257564d>Pager</span><div class="pager" data-v-e257564d><a class="VPLink link pager-link prev" href="/mcp-tools-reference.html" data-v-e257564d><!--[--><span class="desc" data-v-e257564d>← Previous</span><span class="title" data-v-e257564d>Enterprise MCP Tools Reference</span><!--]--></a></div><div class="pager" data-v-e257564d><a class="VPLink link pager-link next" href="/ux-writing-guide.html" data-v-e257564d><!--[--><span class="desc" data-v-e257564d>Next →</span><span class="title" data-v-e257564d>UX Writing Guide</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-5d98c3a5 data-v-e315a0ad><div class="container" data-v-e315a0ad><p class="message" data-v-e315a0ad>Released under the <a href='/license'>CC-BY-NC-4.0 License</a>.</p><p class="copyright" data-v-e315a0ad>Copyright © 2026 WGLabz</p></div></footer><!--[--><!--]--></div></div>
<script>window.__VP_HASH_MAP__=JSON.parse("{\"ai_architecture.md\":\"C9gAZZLl\",\"ai_features.md\":\"CUnj_3RQ\",\"ai_ide-bridge.md\":\"nCrxK3Tf\",\"ai_index.md\":\"Bmncv4hO\",\"ai_knowledge-graph.md\":\"DEtFNJVu\",\"ai_setup.md\":\"DS7lafSd\",\"architecture.md\":\"Ccadxo2a\",\"data-sync-security.md\":\"CLlCnZhU\",\"developer_index.md\":\"BuMpAELh\",\"developer_mcp.md\":\"BZTKz1fP\",\"documentation-audit-2026-07-03.md\":\"Cm5kJDe_\",\"editor_code-blocks.md\":\"Beu1N0wG\",\"editor_diagrams.md\":\"DAxXkUeq\",\"editor_focus-mode.md\":\"D-VN1zzI\",\"editor_index.md\":\"1BSI95F2\",\"editor_markdown-guide.md\":\"DdZQWcWL\",\"editor_markdown-toolbar.md\":\"Dhr7uV95\",\"editor_tables.md\":\"bVkxltGP\",\"export-import.md\":\"Dg6QdW-U\",\"export-reference.md\":\"BQp1xi2D\",\"faq.md\":\"BqXSetS0\",\"feature-availability.md\":\"eAqiwCew\",\"feature-reference.md\":\"DBcCzirA\",\"getting-started_first-note.md\":\"End2Qg0y\",\"getting-started_index.md\":\"CbTV8AEM\",\"git_branches.md\":\"BBObxu8f\",\"git_commit.md\":\"DOSKAbHA\",\"git_history.md\":\"Dss85FZO\",\"git_index.md\":\"BoNoRI6j\",\"git_setup.md\":\"D4J8PJWn\",\"index.md\":\"Byll9-X1\",\"keyboard-shortcuts.md\":\"B6OpwTxr\",\"license.md\":\"5jaASXTL\",\"mcp-tools-reference.md\":\"BkIfuTRX\",\"release-notes.md\":\"D9eAXHTG\",\"search.md\":\"C1rvr0fP\",\"settings-reference.md\":\"oEAz-OV0\",\"sync_index.md\":\"B5W0QX0V\",\"top-tasks.md\":\"DWKZ74-H\",\"troubleshooting.md\":\"CoccAtuF\",\"user-guide.md\":\"CPm_yNbw\",\"ux-writing-guide.md\":\"DdWXETlx\",\"web-view.md\":\"CE74cf1X\",\"workspace_attached-repos.md\":\"T6oxyUwF\",\"workspace_audio-recording.md\":\"DsJIaatr\",\"workspace_calendar.md\":\"DfYkjcIh\",\"workspace_downloads.md\":\"BKTQyTtE\",\"workspace_export.md\":\"C7q46B8T\",\"workspace_graph.md\":\"DyatSqvg\",\"workspace_index.md\":\"DFGbBK-o\",\"workspace_media.md\":\"DcvUXWkW\",\"workspace_screen-capture.md\":\"DPc93Avy\",\"workspace_tasks.md\":\"BtA8G7fK\",\"workspace_terminal.md\":\"CVQHXVMH\"}");function deserializeFunctions(r){return Array.isArray(r)?r.map(deserializeFunctions):typeof r=="object"&&r!==null?Object.keys(r).reduce((t,n)=>(t[n]=deserializeFunctions(r[n]),t),{}):typeof r=="string"&&r.startsWith("_vp-fn_")?new Function(`return ${r.slice(7)}`)():r};window.__VP_SITE_DATA__=deserializeFunctions(JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Notely\",\"description\":\"Documentation for Notely — the desktop Markdown notes app with Git version control, AI assistance, and offline-first storage.\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":false,\"themeConfig\":{\"logo\":\"/assets/icon.png\",\"siteTitle\":\"Notely\",\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/TheNotelyApp/Notely\"}],\"nav\":[{\"text\":\"Home\",\"link\":\"/\"},{\"text\":\"Getting Started\",\"link\":\"/getting-started/\"},{\"text\":\"Editor\",\"link\":\"/editor/\"},{\"text\":\"Workspace\",\"link\":\"/workspace/\"},{\"text\":\"Git\",\"link\":\"/git/\"},{\"text\":\"AI\",\"link\":\"/ai/\"},{\"text\":\"Download\",\"link\":\"https://github.com/TheNotelyApp/Notely/releases/latest\"}],\"sidebar\":[{\"text\":\"Getting Started\",\"collapsed\":false,\"items\":[{\"text\":\"Overview\",\"link\":\"/getting-started/\"},{\"text\":\"User Guide\",\"link\":\"/user-guide\"},{\"text\":\"Your First Note\",\"link\":\"/getting-started/first-note\"},{\"text\":\"Top Common Tasks\",\"link\":\"/top-tasks\"}]},{\"text\":\"Editor\",\"collapsed\":false,\"items\":[{\"text\":\"Editor Overview\",\"link\":\"/editor/\"},{\"text\":\"Markdown Guide\",\"link\":\"/editor/markdown-guide\"},{\"text\":\"Toolbar Reference\",\"link\":\"/editor/markdown-toolbar\"},{\"text\":\"Code Blocks\",\"link\":\"/editor/code-blocks\"},{\"text\":\"Tables\",\"link\":\"/editor/tables\"},{\"text\":\"Diagrams & Wireframes\",\"link\":\"/editor/diagrams\"},{\"text\":\"Focus Mode & Outline\",\"link\":\"/editor/focus-mode\"}]},{\"text\":\"Search\",\"collapsed\":true,\"items\":[{\"text\":\"Search\",\"link\":\"/search\"}]},{\"text\":\"Workspace\",\"collapsed\":false,\"items\":[{\"text\":\"Workspace Overview\",\"link\":\"/workspace/\"},{\"text\":\"Tasks\",\"link\":\"/workspace/tasks\"},{\"text\":\"Calendar\",\"link\":\"/workspace/calendar\"},{\"text\":\"Media\",\"link\":\"/workspace/media\"},{\"text\":\"Audio Recording & STT\",\"link\":\"/workspace/audio-recording\"},{\"text\":\"Attached Repositories\",\"link\":\"/workspace/attached-repos\"},{\"text\":\"Embedded Terminal\",\"link\":\"/workspace/terminal\"},{\"text\":\"Screen Capture & Recording\",\"link\":\"/workspace/screen-capture\"},{\"text\":\"Workspace Graph\",\"link\":\"/workspace/graph\"},{\"text\":\"Downloads & History\",\"link\":\"/workspace/downloads\"},{\"text\":\"Export\",\"link\":\"/workspace/export\"}]},{\"text\":\"Export & Import\",\"collapsed\":false,\"items\":[{\"text\":\"Export Reference\",\"link\":\"/export-reference\"},{\"text\":\"Downloads Manager\",\"link\":\"/workspace/downloads\"},{\"text\":\"Website View\",\"link\":\"/web-view\"},{\"text\":\"Note Packages\",\"link\":\"/export-import\"}]},{\"text\":\"Git Version Control\",\"collapsed\":false,\"items\":[{\"text\":\"Git Overview\",\"link\":\"/git/\"},{\"text\":\"Attached Repositories\",\"link\":\"/workspace/attached-repos\"},{\"text\":\"Setup & Repository\",\"link\":\"/git/setup\"},{\"text\":\"Commit & Stage\",\"link\":\"/git/commit\"},{\"text\":\"History & Restore\",\"link\":\"/git/history\"},{\"text\":\"Branches & Remote\",\"link\":\"/git/branches\"}]},{\"text\":\"AI Features & Graph\",\"collapsed\":false,\"items\":[{\"text\":\"AI & MCP Overview\",\"link\":\"/ai/\"},{\"text\":\"External IDE & AI Bridge\",\"link\":\"/ai/ide-bridge\"},{\"text\":\"AI Capabilities\",\"link\":\"/ai/features\"},{\"text\":\"Provider Setup\",\"link\":\"/ai/setup\"},{\"text\":\"Knowledge Graph Engine\",\"link\":\"/ai/knowledge-graph\"},{\"text\":\"AI Architecture\",\"link\":\"/ai/architecture\"}]},{\"text\":\"Sync\",\"collapsed\":true,\"items\":[{\"text\":\"Git Sync & Backup\",\"link\":\"/sync/\"},{\"text\":\"Data & Sync Security\",\"link\":\"/data-sync-security\"}]},{\"text\":\"Reference\",\"collapsed\":false,\"items\":[{\"text\":\"Feature Reference\",\"link\":\"/feature-reference\"},{\"text\":\"Settings Reference\",\"link\":\"/settings-reference\"},{\"text\":\"Keyboard Shortcuts\",\"link\":\"/keyboard-shortcuts\"},{\"text\":\"Feature Availability\",\"link\":\"/feature-availability\"}]},{\"text\":\"Help\",\"collapsed\":false,\"items\":[{\"text\":\"Troubleshooting\",\"link\":\"/troubleshooting\"},{\"text\":\"FAQ\",\"link\":\"/faq\"},{\"text\":\"Release Notes\",\"link\":\"/release-notes\"}]},{\"text\":\"Developer & MCP\",\"collapsed\":true,\"items\":[{\"text\":\"Developer Docs\",\"link\":\"/developer/\"},{\"text\":\"MCP Protocol Integration\",\"link\":\"/developer/mcp\"},{\"text\":\"Enterprise MCP Tools Reference\",\"link\":\"/mcp-tools-reference\"},{\"text\":\"Application Architecture\",\"link\":\"/architecture\"},{\"text\":\"UX Writing Guide\",\"link\":\"/ux-writing-guide\"},{\"text\":\"License\",\"link\":\"/license\"}]}],\"search\":{\"provider\":\"local\",\"options\":{\"miniSearch\":{\"options\":{\"tokenize\":\"_vp-fn_(text) => text.split(/[\\\\s\\\\-_/]+/).filter(Boolean)\"},\"searchOptions\":{\"fuzzy\":0.2,\"prefix\":true,\"boost\":{\"title\":4,\"text\":2,\"titles\":1}}},\"detailedView\":true}},\"editLink\":{\"pattern\":\"https://github.com/TheNotelyApp/Notely/edit/main/docs/:path\",\"text\":\"Edit this page on GitHub\"},\"footer\":{\"message\":\"Released under the <a href='/license'>CC-BY-NC-4.0 License</a>.\",\"copyright\":\"Copyright © 2026 WGLabz\"},\"lastUpdated\":{\"text\":\"Last updated\",\"formatOptions\":{\"dateStyle\":\"medium\"}},\"docFooter\":{\"prev\":\"← Previous\",\"next\":\"Next →\"},\"outline\":{\"level\":[2,3],\"label\":\"On this page\"}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}"));</script>
</body>
</html>