Add the generated Gitty runtime architecture documentation produced by archify: rendered HTML, JSON specification and delivery/browser receipts, visual-check screenshots and contact sheets, and accompanying diagram JSON/visual files under docs/diagrams. These are auto-generated static documentation artifacts (archify metadata present) and should not be edited by hand.
354 lines
7.0 KiB
JSON
354 lines
7.0 KiB
JSON
{
|
|
"schema_version": 1,
|
|
"diagram_type": "architecture",
|
|
"meta": {
|
|
"title": "Gitty runtime architecture",
|
|
"locale": "en",
|
|
"quality_profile": "showcase",
|
|
"repository": {
|
|
"url": "https://git.cbsk-tech.de/Christoph/GitLite.git",
|
|
"revision": "47b8544ba889a1357f6578469d2163bbd438ab00",
|
|
"link_mode": "local-only"
|
|
}
|
|
},
|
|
"components": [
|
|
{
|
|
"id": "workspace",
|
|
"type": "frontend",
|
|
"label": "Workspace UI",
|
|
"sublabel": "Svelte 5 \u00b7 WebView",
|
|
"pos": [
|
|
60,
|
|
220
|
|
],
|
|
"size": [
|
|
180,
|
|
70
|
|
],
|
|
"sources": [
|
|
{
|
|
"path": "src/App.svelte",
|
|
"line": 1
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "dispatch",
|
|
"type": "backend",
|
|
"label": "Tauri commands",
|
|
"sublabel": "Invoke / event bridge",
|
|
"pos": [
|
|
325,
|
|
220
|
|
],
|
|
"size": [
|
|
180,
|
|
70
|
|
],
|
|
"sources": [
|
|
{
|
|
"path": "src-tauri/src/main.rs",
|
|
"line": 334
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "git-service",
|
|
"type": "backend",
|
|
"label": "Git operations",
|
|
"sublabel": "Rust \u00b7 blocking tasks",
|
|
"pos": [
|
|
590,
|
|
220
|
|
],
|
|
"size": [
|
|
180,
|
|
70
|
|
],
|
|
"sources": [
|
|
{
|
|
"path": "src-tauri/src/git.rs",
|
|
"line": 577
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "git-process",
|
|
"type": "external",
|
|
"label": "Git + Git LFS",
|
|
"sublabel": "Native subprocesses",
|
|
"pos": [
|
|
855,
|
|
220
|
|
],
|
|
"size": [
|
|
180,
|
|
70
|
|
],
|
|
"sources": [
|
|
{
|
|
"path": "src-tauri/src/git.rs",
|
|
"line": 415
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "repository",
|
|
"type": "database",
|
|
"label": "Local repository",
|
|
"sublabel": "Worktree \u00b7 index \u00b7 .git",
|
|
"pos": [
|
|
1120,
|
|
220
|
|
],
|
|
"size": [
|
|
180,
|
|
70
|
|
],
|
|
"sources": [
|
|
{
|
|
"path": "src-tauri/src/git.rs",
|
|
"line": 7436
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "hosting-client",
|
|
"type": "backend",
|
|
"label": "Hosting adapters",
|
|
"sublabel": "Issues \u00b7 reviews \u00b7 boards",
|
|
"pos": [
|
|
325,
|
|
70
|
|
],
|
|
"size": [
|
|
180,
|
|
70
|
|
],
|
|
"sources": [
|
|
{
|
|
"path": "src-tauri/src/integrations.rs",
|
|
"line": 1
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "host-services",
|
|
"type": "external",
|
|
"label": "Git hosting",
|
|
"sublabel": "GitHub \u00b7 GitLab \u00b7 others",
|
|
"pos": [
|
|
60,
|
|
70
|
|
],
|
|
"size": [
|
|
180,
|
|
70
|
|
],
|
|
"sources": [
|
|
{
|
|
"path": "src-tauri/src/integrations.rs",
|
|
"line": 1
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "ai-client",
|
|
"type": "backend",
|
|
"label": "AI assistance",
|
|
"sublabel": "commit_ai crate",
|
|
"pos": [
|
|
590,
|
|
390
|
|
],
|
|
"size": [
|
|
180,
|
|
70
|
|
],
|
|
"sources": [
|
|
{
|
|
"path": "src-tauri/crates/commit_ai/src/lib.rs",
|
|
"line": 1
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "ai-endpoint",
|
|
"type": "external",
|
|
"label": "Model endpoint",
|
|
"sublabel": "OpenAI \u00b7 Anthropic \u00b7 custom",
|
|
"pos": [
|
|
855,
|
|
390
|
|
],
|
|
"size": [
|
|
180,
|
|
70
|
|
],
|
|
"sources": [
|
|
{
|
|
"path": "src-tauri/crates/commit_ai/src/cloud.rs",
|
|
"line": 1
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "keychain",
|
|
"type": "security",
|
|
"label": "OS keychain",
|
|
"sublabel": "Credentials / API keys",
|
|
"pos": [
|
|
60,
|
|
390
|
|
],
|
|
"size": [
|
|
180,
|
|
70
|
|
],
|
|
"sources": [
|
|
{
|
|
"path": "src-tauri/src/git.rs",
|
|
"line": 3033
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"boundaries": [
|
|
{
|
|
"kind": "security-group",
|
|
"label": "WebView",
|
|
"wraps": [
|
|
"workspace"
|
|
],
|
|
"pad": 25
|
|
},
|
|
{
|
|
"kind": "security-group",
|
|
"label": "Native application process",
|
|
"wraps": [
|
|
"dispatch",
|
|
"git-service",
|
|
"hosting-client",
|
|
"ai-client"
|
|
],
|
|
"pad": 28
|
|
},
|
|
{
|
|
"kind": "region",
|
|
"label": "OS processes & filesystem",
|
|
"wraps": [
|
|
"git-process",
|
|
"repository"
|
|
],
|
|
"pad": 28
|
|
}
|
|
],
|
|
"connections": [
|
|
{
|
|
"id": "ui-invoke",
|
|
"from": "workspace",
|
|
"to": "dispatch",
|
|
"label": "IPC invoke",
|
|
"variant": "emphasis"
|
|
},
|
|
{
|
|
"id": "dispatch-git",
|
|
"from": "dispatch",
|
|
"to": "git-service",
|
|
"label": "Rust call",
|
|
"variant": "emphasis"
|
|
},
|
|
{
|
|
"id": "spawn-git",
|
|
"from": "git-service",
|
|
"to": "git-process",
|
|
"label": "spawn",
|
|
"variant": "emphasis"
|
|
},
|
|
{
|
|
"id": "git-files",
|
|
"from": "git-process",
|
|
"to": "repository",
|
|
"label": "read / write",
|
|
"variant": "emphasis"
|
|
},
|
|
{
|
|
"id": "dispatch-hosting",
|
|
"from": "dispatch",
|
|
"to": "hosting-client",
|
|
"label": "Rust call",
|
|
"variant": "default",
|
|
"fromSide": "top",
|
|
"toSide": "bottom"
|
|
},
|
|
{
|
|
"id": "hosting-api",
|
|
"from": "hosting-client",
|
|
"to": "host-services",
|
|
"label": "HTTPS API",
|
|
"variant": "default"
|
|
},
|
|
{
|
|
"id": "git-ai",
|
|
"from": "git-service",
|
|
"to": "ai-client",
|
|
"label": "diff + notes",
|
|
"variant": "default",
|
|
"fromSide": "bottom",
|
|
"toSide": "top",
|
|
"labelAt": [
|
|
680,
|
|
304
|
|
]
|
|
},
|
|
{
|
|
"id": "ai-http",
|
|
"from": "ai-client",
|
|
"to": "ai-endpoint",
|
|
"label": "HTTP(S)",
|
|
"variant": "default"
|
|
},
|
|
{
|
|
"id": "command-secrets",
|
|
"from": "dispatch",
|
|
"to": "keychain",
|
|
"label": "keyring API",
|
|
"variant": "security",
|
|
"fromSide": "bottom",
|
|
"toSide": "right",
|
|
"labelAt": [
|
|
300,
|
|
425
|
|
]
|
|
}
|
|
],
|
|
"cards": [
|
|
{
|
|
"dot": "cyan",
|
|
"title": "Primary path",
|
|
"items": [
|
|
"UI invokes registered commands; Rust runs Git off the async executor. Results return to the UI.",
|
|
"Git LFS handles large objects. Git uses HTTPS / SSH for fetch, pull, push and clone."
|
|
]
|
|
},
|
|
{
|
|
"dot": "violet",
|
|
"title": "Supporting runtime",
|
|
"items": [
|
|
"Hosting: GitHub, GitLab, Azure DevOps and Gitea; REST calls use reqwest.",
|
|
"AI: diffs / notes and API keys are passed to the selected provider through native commands.",
|
|
"Workspace preferences live in WebView localStorage."
|
|
]
|
|
},
|
|
{
|
|
"dot": "rose",
|
|
"title": "Trust & external services",
|
|
"items": [
|
|
"IPC crosses into native filesystem and process privileges; CSP is currently null.",
|
|
"OS keychain also stores hosting credentials. Network endpoints may be cloud or self-hosted.",
|
|
"Aptabase telemetry and the Windows/macOS update CDN are secondary dependencies; Linux uses package updates."
|
|
]
|
|
}
|
|
]
|
|
}
|