diff --git a/docs/architecture/browser-receipt.json b/docs/architecture/browser-receipt.json
new file mode 100644
index 0000000..6c15467
--- /dev/null
+++ b/docs/architecture/browser-receipt.json
@@ -0,0 +1,548 @@
+{
+ "schemaVersion": 1,
+ "ok": true,
+ "command": "visual-check",
+ "evidenceKind": "automated-browser",
+ "status": "pass",
+ "visualReview": "pending",
+ "artifact": {
+ "path": "/mnt/data/Development/GitLite/docs/architecture/gitty-runtime.html",
+ "sha256": "33ab3aad21863795fbdad67a1f7eab75e4b3fd682c318b8bad34ab7f3717be27",
+ "bytes": 814934
+ },
+ "state": {
+ "detail": "read",
+ "motion": "still"
+ },
+ "chrome": {
+ "status": "available",
+ "executable": "/opt/helium-browser-bin/chrome"
+ },
+ "diagnostics": [],
+ "containment": {
+ "status": "pass",
+ "viewports": [
+ {
+ "width": 1440,
+ "height": 900,
+ "theme": "light",
+ "innerWidth": 1440,
+ "innerHeight": 900,
+ "scrollWidth": 1440,
+ "scrollHeight": 900,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1376,
+ "diagramWidth": 1346,
+ "viewBoxWidth": 1368,
+ "minimumProjectedNodeTextPx": 8.855263157894736,
+ "minimumProjectedNodeText": "Svelte 5 · WebView",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 1600,
+ "height": 1000,
+ "theme": "light",
+ "innerWidth": 1600,
+ "innerHeight": 1000,
+ "scrollWidth": 1600,
+ "scrollHeight": 1000,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1533,
+ "diagramWidth": 1503,
+ "viewBoxWidth": 1368,
+ "minimumProjectedNodeTextPx": 9,
+ "minimumProjectedNodeText": "Svelte 5 · WebView",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 1920,
+ "height": 1080,
+ "theme": "light",
+ "innerWidth": 1920,
+ "innerHeight": 1080,
+ "scrollWidth": 1920,
+ "scrollHeight": 1080,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1733,
+ "diagramWidth": 1703,
+ "viewBoxWidth": 1368,
+ "minimumProjectedNodeTextPx": 9,
+ "minimumProjectedNodeText": "Svelte 5 · WebView",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 2048,
+ "height": 1320,
+ "theme": "light",
+ "innerWidth": 2048,
+ "innerHeight": 1320,
+ "scrollWidth": 2048,
+ "scrollHeight": 1320,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1920,
+ "diagramWidth": 1870,
+ "viewBoxWidth": 1368,
+ "minimumProjectedNodeTextPx": 9,
+ "minimumProjectedNodeText": "Svelte 5 · WebView",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 41,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ }
+ ]
+ },
+ "readability": {
+ "status": "pass",
+ "minimumProjectedNodeTextPx": 6,
+ "viewports": [
+ {
+ "width": 1440,
+ "height": 900,
+ "theme": "light",
+ "innerWidth": 1440,
+ "innerHeight": 900,
+ "scrollWidth": 1440,
+ "scrollHeight": 900,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1376,
+ "diagramWidth": 1346,
+ "viewBoxWidth": 1368,
+ "minimumProjectedNodeTextPx": 8.855263157894736,
+ "minimumProjectedNodeText": "Svelte 5 · WebView",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 1600,
+ "height": 1000,
+ "theme": "light",
+ "innerWidth": 1600,
+ "innerHeight": 1000,
+ "scrollWidth": 1600,
+ "scrollHeight": 1000,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1533,
+ "diagramWidth": 1503,
+ "viewBoxWidth": 1368,
+ "minimumProjectedNodeTextPx": 9,
+ "minimumProjectedNodeText": "Svelte 5 · WebView",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 1920,
+ "height": 1080,
+ "theme": "light",
+ "innerWidth": 1920,
+ "innerHeight": 1080,
+ "scrollWidth": 1920,
+ "scrollHeight": 1080,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1733,
+ "diagramWidth": 1703,
+ "viewBoxWidth": 1368,
+ "minimumProjectedNodeTextPx": 9,
+ "minimumProjectedNodeText": "Svelte 5 · WebView",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 2048,
+ "height": 1320,
+ "theme": "light",
+ "innerWidth": 2048,
+ "innerHeight": 1320,
+ "scrollWidth": 2048,
+ "scrollHeight": 1320,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1920,
+ "diagramWidth": 1870,
+ "viewBoxWidth": 1368,
+ "minimumProjectedNodeTextPx": 9,
+ "minimumProjectedNodeText": "Svelte 5 · WebView",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 41,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ }
+ ]
+ },
+ "viewerChrome": {
+ "status": "pass",
+ "viewports": [
+ {
+ "width": 1440,
+ "height": 900,
+ "theme": "light",
+ "innerWidth": 1440,
+ "innerHeight": 900,
+ "scrollWidth": 1440,
+ "scrollHeight": 900,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1376,
+ "diagramWidth": 1346,
+ "viewBoxWidth": 1368,
+ "minimumProjectedNodeTextPx": 8.855263157894736,
+ "minimumProjectedNodeText": "Svelte 5 · WebView",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 1600,
+ "height": 1000,
+ "theme": "light",
+ "innerWidth": 1600,
+ "innerHeight": 1000,
+ "scrollWidth": 1600,
+ "scrollHeight": 1000,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1533,
+ "diagramWidth": 1503,
+ "viewBoxWidth": 1368,
+ "minimumProjectedNodeTextPx": 9,
+ "minimumProjectedNodeText": "Svelte 5 · WebView",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 1920,
+ "height": 1080,
+ "theme": "light",
+ "innerWidth": 1920,
+ "innerHeight": 1080,
+ "scrollWidth": 1920,
+ "scrollHeight": 1080,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1733,
+ "diagramWidth": 1703,
+ "viewBoxWidth": 1368,
+ "minimumProjectedNodeTextPx": 9,
+ "minimumProjectedNodeText": "Svelte 5 · WebView",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 2048,
+ "height": 1320,
+ "theme": "light",
+ "innerWidth": 2048,
+ "innerHeight": 1320,
+ "scrollWidth": 2048,
+ "scrollHeight": 1320,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1920,
+ "diagramWidth": 1870,
+ "viewBoxWidth": 1368,
+ "minimumProjectedNodeTextPx": 9,
+ "minimumProjectedNodeText": "Svelte 5 · WebView",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 41,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ }
+ ]
+ },
+ "captures": {
+ "status": "pass",
+ "screenshots": [
+ {
+ "width": 1440,
+ "height": 900,
+ "theme": "light",
+ "innerWidth": 1440,
+ "innerHeight": 900,
+ "scrollWidth": 1440,
+ "scrollHeight": 900,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1376,
+ "diagramWidth": 1346,
+ "viewBoxWidth": 1368,
+ "minimumProjectedNodeTextPx": 8.855263157894736,
+ "minimumProjectedNodeText": "Svelte 5 · WebView",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light",
+ "file": "gitty-runtime.visual-check.1440x900.light.png"
+ },
+ {
+ "width": 1440,
+ "height": 900,
+ "theme": "dark",
+ "innerWidth": 1440,
+ "innerHeight": 900,
+ "scrollWidth": 1440,
+ "scrollHeight": 900,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1376,
+ "diagramWidth": 1346,
+ "viewBoxWidth": 1368,
+ "minimumProjectedNodeTextPx": 8.855263157894736,
+ "minimumProjectedNodeText": "Svelte 5 · WebView",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "dark",
+ "file": "gitty-runtime.visual-check.1440x900.dark.png"
+ },
+ {
+ "width": 2048,
+ "height": 1320,
+ "theme": "light",
+ "innerWidth": 2048,
+ "innerHeight": 1320,
+ "scrollWidth": 2048,
+ "scrollHeight": 1320,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1920,
+ "diagramWidth": 1870,
+ "viewBoxWidth": 1368,
+ "minimumProjectedNodeTextPx": 9,
+ "minimumProjectedNodeText": "Svelte 5 · WebView",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 41,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light",
+ "file": "gitty-runtime.visual-check.2048x1320.light.png"
+ },
+ {
+ "width": 2048,
+ "height": 1320,
+ "theme": "dark",
+ "innerWidth": 2048,
+ "innerHeight": 1320,
+ "scrollWidth": 2048,
+ "scrollHeight": 1320,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1920,
+ "diagramWidth": 1870,
+ "viewBoxWidth": 1368,
+ "minimumProjectedNodeTextPx": 9,
+ "minimumProjectedNodeText": "Svelte 5 · WebView",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 41,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "dark",
+ "file": "gitty-runtime.visual-check.2048x1320.dark.png"
+ }
+ ],
+ "contactSheet": "gitty-runtime.visual-check.html"
+ },
+ "sidecars": {
+ "receipt": "gitty-runtime.visual-check.json",
+ "contactSheet": "gitty-runtime.visual-check.html"
+ }
+}
diff --git a/docs/architecture/delivery-receipt.json b/docs/architecture/delivery-receipt.json
new file mode 100644
index 0000000..c0d21c4
--- /dev/null
+++ b/docs/architecture/delivery-receipt.json
@@ -0,0 +1,31 @@
+{
+ "schemaVersion": 1,
+ "ok": true,
+ "command": "deliver",
+ "type": "architecture",
+ "input": "/mnt/data/Development/GitLite/docs/architecture/gitty-runtime.json",
+ "output": "/mnt/data/Development/GitLite/docs/architecture/gitty-runtime.html",
+ "specification": {
+ "sha256": "00f6492407bbd4487f595c696c894b90d5c2fe14f3e1a8e499953c4a378f6268",
+ "bytes": 7214
+ },
+ "artifact": {
+ "sha256": "33ab3aad21863795fbdad67a1f7eab75e4b3fd682c318b8bad34ab7f3717be27",
+ "bytes": 814934
+ },
+ "validation": {
+ "checksPassed": 9,
+ "checkCount": 9,
+ "compositionProfile": "showcase",
+ "compositionStatus": "pass",
+ "errors": 0,
+ "warnings": 0
+ },
+ "evidence": {
+ "verified": true,
+ "repository": "https://git.cbsk-tech.de/Christoph/GitLite.git",
+ "revision": "47b8544ba889a1357f6578469d2163bbd438ab00",
+ "references": 10,
+ "linkMode": "local-only"
+ }
+}
diff --git a/docs/architecture/gitty-runtime.html b/docs/architecture/gitty-runtime.html
new file mode 100644
index 0000000..cecea0e
--- /dev/null
+++ b/docs/architecture/gitty-runtime.html
@@ -0,0 +1,15024 @@
+
+
+
+
+
+
+ Gitty runtime architecture Diagram
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Guided views
+
+
+
+
+
Explore this system
+
Step through curated paths without changing the source diagram.
+
+
+ Beat
+
+
+
+ Next
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Ready
+ Chapter 01 / 01
+
+
+ Guided chapter
+
+
+
+
+
+
+
+
+ Diagram guide
+ Explore this system
+
+
+
+
Inspecting compiled semantics
+
+
+
+
+
+
+
+
+
+ E ExportT ThemeS Style0 Reset+ Zoom in- Zoom outEsc Close
+
+
+
+
+
+ Find a node
+
+
+
+ ⌕
+
+ /
+
+
+
No matching nodes
+
+
+
+
+
+
Semantic passport
+
+
+
+
+
+
+
+
+
+
+
+
+
Authored reach
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Route probe
+ Choose a start node
+
+
+
+
+
+
+
+
+ Pick two semantic nodes on the diagram
+
+
+
+
+
+
+
+
Choose the source, then the destination. Direction matters.
+
+
+
+
+ Semantic lens
+ Compare system roles
+
+
+
+
Choose up to two semantic kinds. One reveals its real traffic; two compare only direct authored relationships.
+
+
Choose a kind to inspect its nodes and touching relationships.
+
+
+
+
+
+
+
+
+
+ Semantic radar
+ Building overview
+
+
+
+
+
+
Click nodeDrag to pan
+
+
Semantic radar needs more MAP space.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ - • 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.
+
+
+
+
+
+
+ - • 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.
+
+
+
+
+
+
+ - • 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.
+
+
+
+
+
+
+
+
+
diff --git a/docs/architecture/gitty-runtime.json b/docs/architecture/gitty-runtime.json
new file mode 100644
index 0000000..23f7701
--- /dev/null
+++ b/docs/architecture/gitty-runtime.json
@@ -0,0 +1,353 @@
+{
+ "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."
+ ]
+ }
+ ]
+}
diff --git a/docs/architecture/gitty-runtime.visual-check.1440x900.dark.png b/docs/architecture/gitty-runtime.visual-check.1440x900.dark.png
new file mode 100644
index 0000000..edd6b35
Binary files /dev/null and b/docs/architecture/gitty-runtime.visual-check.1440x900.dark.png differ
diff --git a/docs/architecture/gitty-runtime.visual-check.1440x900.light.png b/docs/architecture/gitty-runtime.visual-check.1440x900.light.png
new file mode 100644
index 0000000..9321a85
Binary files /dev/null and b/docs/architecture/gitty-runtime.visual-check.1440x900.light.png differ
diff --git a/docs/architecture/gitty-runtime.visual-check.2048x1320.dark.png b/docs/architecture/gitty-runtime.visual-check.2048x1320.dark.png
new file mode 100644
index 0000000..08253fe
Binary files /dev/null and b/docs/architecture/gitty-runtime.visual-check.2048x1320.dark.png differ
diff --git a/docs/architecture/gitty-runtime.visual-check.2048x1320.light.png b/docs/architecture/gitty-runtime.visual-check.2048x1320.light.png
new file mode 100644
index 0000000..3d2f81d
Binary files /dev/null and b/docs/architecture/gitty-runtime.visual-check.2048x1320.light.png differ
diff --git a/docs/architecture/gitty-runtime.visual-check.html b/docs/architecture/gitty-runtime.visual-check.html
new file mode 100644
index 0000000..72ee11b
--- /dev/null
+++ b/docs/architecture/gitty-runtime.visual-check.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+Archify automated browser evidence · gitty-runtime.html
+
+
+
+
+
+
+
+ LIGHT · 1440×900 · containment pass
+
+
+
+ DARK · 1440×900 · containment pass
+
+
+
+ LIGHT · 2048×1320 · containment pass
+
+
+
+ DARK · 2048×1320 · containment pass
+
+
+
+
diff --git a/docs/architecture/gitty-runtime.visual-check.json b/docs/architecture/gitty-runtime.visual-check.json
new file mode 100644
index 0000000..6c15467
--- /dev/null
+++ b/docs/architecture/gitty-runtime.visual-check.json
@@ -0,0 +1,548 @@
+{
+ "schemaVersion": 1,
+ "ok": true,
+ "command": "visual-check",
+ "evidenceKind": "automated-browser",
+ "status": "pass",
+ "visualReview": "pending",
+ "artifact": {
+ "path": "/mnt/data/Development/GitLite/docs/architecture/gitty-runtime.html",
+ "sha256": "33ab3aad21863795fbdad67a1f7eab75e4b3fd682c318b8bad34ab7f3717be27",
+ "bytes": 814934
+ },
+ "state": {
+ "detail": "read",
+ "motion": "still"
+ },
+ "chrome": {
+ "status": "available",
+ "executable": "/opt/helium-browser-bin/chrome"
+ },
+ "diagnostics": [],
+ "containment": {
+ "status": "pass",
+ "viewports": [
+ {
+ "width": 1440,
+ "height": 900,
+ "theme": "light",
+ "innerWidth": 1440,
+ "innerHeight": 900,
+ "scrollWidth": 1440,
+ "scrollHeight": 900,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1376,
+ "diagramWidth": 1346,
+ "viewBoxWidth": 1368,
+ "minimumProjectedNodeTextPx": 8.855263157894736,
+ "minimumProjectedNodeText": "Svelte 5 · WebView",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 1600,
+ "height": 1000,
+ "theme": "light",
+ "innerWidth": 1600,
+ "innerHeight": 1000,
+ "scrollWidth": 1600,
+ "scrollHeight": 1000,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1533,
+ "diagramWidth": 1503,
+ "viewBoxWidth": 1368,
+ "minimumProjectedNodeTextPx": 9,
+ "minimumProjectedNodeText": "Svelte 5 · WebView",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 1920,
+ "height": 1080,
+ "theme": "light",
+ "innerWidth": 1920,
+ "innerHeight": 1080,
+ "scrollWidth": 1920,
+ "scrollHeight": 1080,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1733,
+ "diagramWidth": 1703,
+ "viewBoxWidth": 1368,
+ "minimumProjectedNodeTextPx": 9,
+ "minimumProjectedNodeText": "Svelte 5 · WebView",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 2048,
+ "height": 1320,
+ "theme": "light",
+ "innerWidth": 2048,
+ "innerHeight": 1320,
+ "scrollWidth": 2048,
+ "scrollHeight": 1320,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1920,
+ "diagramWidth": 1870,
+ "viewBoxWidth": 1368,
+ "minimumProjectedNodeTextPx": 9,
+ "minimumProjectedNodeText": "Svelte 5 · WebView",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 41,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ }
+ ]
+ },
+ "readability": {
+ "status": "pass",
+ "minimumProjectedNodeTextPx": 6,
+ "viewports": [
+ {
+ "width": 1440,
+ "height": 900,
+ "theme": "light",
+ "innerWidth": 1440,
+ "innerHeight": 900,
+ "scrollWidth": 1440,
+ "scrollHeight": 900,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1376,
+ "diagramWidth": 1346,
+ "viewBoxWidth": 1368,
+ "minimumProjectedNodeTextPx": 8.855263157894736,
+ "minimumProjectedNodeText": "Svelte 5 · WebView",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 1600,
+ "height": 1000,
+ "theme": "light",
+ "innerWidth": 1600,
+ "innerHeight": 1000,
+ "scrollWidth": 1600,
+ "scrollHeight": 1000,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1533,
+ "diagramWidth": 1503,
+ "viewBoxWidth": 1368,
+ "minimumProjectedNodeTextPx": 9,
+ "minimumProjectedNodeText": "Svelte 5 · WebView",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 1920,
+ "height": 1080,
+ "theme": "light",
+ "innerWidth": 1920,
+ "innerHeight": 1080,
+ "scrollWidth": 1920,
+ "scrollHeight": 1080,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1733,
+ "diagramWidth": 1703,
+ "viewBoxWidth": 1368,
+ "minimumProjectedNodeTextPx": 9,
+ "minimumProjectedNodeText": "Svelte 5 · WebView",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 2048,
+ "height": 1320,
+ "theme": "light",
+ "innerWidth": 2048,
+ "innerHeight": 1320,
+ "scrollWidth": 2048,
+ "scrollHeight": 1320,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1920,
+ "diagramWidth": 1870,
+ "viewBoxWidth": 1368,
+ "minimumProjectedNodeTextPx": 9,
+ "minimumProjectedNodeText": "Svelte 5 · WebView",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 41,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ }
+ ]
+ },
+ "viewerChrome": {
+ "status": "pass",
+ "viewports": [
+ {
+ "width": 1440,
+ "height": 900,
+ "theme": "light",
+ "innerWidth": 1440,
+ "innerHeight": 900,
+ "scrollWidth": 1440,
+ "scrollHeight": 900,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1376,
+ "diagramWidth": 1346,
+ "viewBoxWidth": 1368,
+ "minimumProjectedNodeTextPx": 8.855263157894736,
+ "minimumProjectedNodeText": "Svelte 5 · WebView",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 1600,
+ "height": 1000,
+ "theme": "light",
+ "innerWidth": 1600,
+ "innerHeight": 1000,
+ "scrollWidth": 1600,
+ "scrollHeight": 1000,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1533,
+ "diagramWidth": 1503,
+ "viewBoxWidth": 1368,
+ "minimumProjectedNodeTextPx": 9,
+ "minimumProjectedNodeText": "Svelte 5 · WebView",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 1920,
+ "height": 1080,
+ "theme": "light",
+ "innerWidth": 1920,
+ "innerHeight": 1080,
+ "scrollWidth": 1920,
+ "scrollHeight": 1080,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1733,
+ "diagramWidth": 1703,
+ "viewBoxWidth": 1368,
+ "minimumProjectedNodeTextPx": 9,
+ "minimumProjectedNodeText": "Svelte 5 · WebView",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 2048,
+ "height": 1320,
+ "theme": "light",
+ "innerWidth": 2048,
+ "innerHeight": 1320,
+ "scrollWidth": 2048,
+ "scrollHeight": 1320,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1920,
+ "diagramWidth": 1870,
+ "viewBoxWidth": 1368,
+ "minimumProjectedNodeTextPx": 9,
+ "minimumProjectedNodeText": "Svelte 5 · WebView",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 41,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ }
+ ]
+ },
+ "captures": {
+ "status": "pass",
+ "screenshots": [
+ {
+ "width": 1440,
+ "height": 900,
+ "theme": "light",
+ "innerWidth": 1440,
+ "innerHeight": 900,
+ "scrollWidth": 1440,
+ "scrollHeight": 900,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1376,
+ "diagramWidth": 1346,
+ "viewBoxWidth": 1368,
+ "minimumProjectedNodeTextPx": 8.855263157894736,
+ "minimumProjectedNodeText": "Svelte 5 · WebView",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light",
+ "file": "gitty-runtime.visual-check.1440x900.light.png"
+ },
+ {
+ "width": 1440,
+ "height": 900,
+ "theme": "dark",
+ "innerWidth": 1440,
+ "innerHeight": 900,
+ "scrollWidth": 1440,
+ "scrollHeight": 900,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1376,
+ "diagramWidth": 1346,
+ "viewBoxWidth": 1368,
+ "minimumProjectedNodeTextPx": 8.855263157894736,
+ "minimumProjectedNodeText": "Svelte 5 · WebView",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "dark",
+ "file": "gitty-runtime.visual-check.1440x900.dark.png"
+ },
+ {
+ "width": 2048,
+ "height": 1320,
+ "theme": "light",
+ "innerWidth": 2048,
+ "innerHeight": 1320,
+ "scrollWidth": 2048,
+ "scrollHeight": 1320,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1920,
+ "diagramWidth": 1870,
+ "viewBoxWidth": 1368,
+ "minimumProjectedNodeTextPx": 9,
+ "minimumProjectedNodeText": "Svelte 5 · WebView",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 41,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light",
+ "file": "gitty-runtime.visual-check.2048x1320.light.png"
+ },
+ {
+ "width": 2048,
+ "height": 1320,
+ "theme": "dark",
+ "innerWidth": 2048,
+ "innerHeight": 1320,
+ "scrollWidth": 2048,
+ "scrollHeight": 1320,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1920,
+ "diagramWidth": 1870,
+ "viewBoxWidth": 1368,
+ "minimumProjectedNodeTextPx": 9,
+ "minimumProjectedNodeText": "Svelte 5 · WebView",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 41,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "dark",
+ "file": "gitty-runtime.visual-check.2048x1320.dark.png"
+ }
+ ],
+ "contactSheet": "gitty-runtime.visual-check.html"
+ },
+ "sidecars": {
+ "receipt": "gitty-runtime.visual-check.json",
+ "contactSheet": "gitty-runtime.visual-check.html"
+ }
+}
diff --git a/docs/architecture/handoff-receipt.json b/docs/architecture/handoff-receipt.json
new file mode 100644
index 0000000..cbcf46d
--- /dev/null
+++ b/docs/architecture/handoff-receipt.json
@@ -0,0 +1,11 @@
+{
+ "diagram_type": "architecture",
+ "output": "/mnt/data/Development/GitLite/docs/architecture/gitty-runtime.html",
+ "specification_sha256": "00f6492407bbd4487f595c696c894b90d5c2fe14f3e1a8e499953c4a378f6268",
+ "artifact_sha256": "33ab3aad21863795fbdad67a1f7eab75e4b3fd682c318b8bad34ab7f3717be27",
+ "validation": "9/9 showcase, 0 errors, 0 warnings",
+ "browser_evidence": "passed",
+ "visual_review": "passed",
+ "correction_rounds": 1,
+ "visual_review_scope": "Inspected delivered screenshots at 2048x1320 light and 1440x900 dark; readable nodes, unobstructed routes, visible cards. Automated containment passed at all four desktop sizes."
+}
diff --git a/docs/diagrams/README.md b/docs/diagrams/README.md
new file mode 100644
index 0000000..7b7d9e8
--- /dev/null
+++ b/docs/diagrams/README.md
@@ -0,0 +1,34 @@
+# Gitty: drei Detaildiagramme
+
+Die Diagramme beschreiben den Code bei Revision `47b8544ba889a1357f6578469d2163bbd438ab00`.
+Die Inhalte sind Deutsch; feste Archify-Bedienelemente und HTML-Sprachkennung bleiben Englisch.
+
+- [KI-Commit-Nachricht](ai-commit.html): Datenfluss von vorgemerkten Änderungen und Notizen zum bearbeitbaren Vorschlag.
+- [Repository klonen](clone-repository.html): Hauptablauf, Anmeldung mit Wiederholung und LFS-Nachbereitung.
+- [Merge und Konfliktauflösung](merge-conflicts.html): Zustände des normalen Merge mit konfliktfreiem Abschluss und Abbruch.
+
+## Geprüfte Codebelege
+
+| Thema | Datei und Einstieg | Aussage |
+|---|---|---|
+| KI-Aufruf | `src/App.svelte:1327`, `src/lib/git.ts:425` | Bestehende Nachricht wird als Notiz verwendet; Schlüssel werden geladen und per IPC weitergegeben. Die Antwort ersetzt das Nachrichtenfeld. |
+| KI-Datenbasis | `src-tauri/src/git.rs:2178` | Staged-Dateiliste und gecachter Diff; generierte Lockfiles sind im Detaildiff ausgenommen. |
+| KI-Anbieter | `src-tauri/src/git.rs:2216`, `src-tauri/crates/commit_ai/src/cloud.rs` | OpenAI, Anthropic oder eigener Endpunkt; native HTTP-Anfrage und Antwortverarbeitung. Der Diagrammpfeil zum Vorschlag fasst den Rückweg durch Rust und IPC zusammen. |
+| Prompt | `src-tauri/crates/commit_ai/src/lib.rs:51` | Leere Änderungen werden abgewiesen; der Diff wird vor der Anfrage begrenzt. Die Instruktionen sind kein technischer Geheimnisfilter. |
+| Clone-UI | `src/App.svelte:2571` | Zugangsdaten aus dem Store, Auth-Fehlerdialog, erneuter Versuch und Anwenden des RepositoryBundle. |
+| Clone-Backend | `src-tauri/src/git.rs:648`, `src-tauri/src/git.rs:5840` | spawn_blocking, Zielprüfung, Git-Clone, LFS-Nachbereitung und Bundle. LFS-Fehler werden als Warnung weitergegeben. |
+| Merge | `src-tauri/src/git.rs:3279` | Konflikte kommen als GitStatus zurück. Andere Merge-Fehler werden als Fehler gemeldet. |
+| Fortsetzen / Abbruch | `src-tauri/src/git.rs:3336` | Fortsetzen prüft laufenden Merge und offene Konflikte; commit --no-edit. Abbruch: merge --abort. |
+| Konflikt lösen | `src-tauri/src/git.rs:5000`, `src-tauri/src/git.rs:5042` | ours/theirs übernehmen oder Text schreiben; danach git add und aktualisierter Status. |
+
+## Abstraktion und Grenzen
+
+Die KI-Grafik zeigt Datenherkunft und Empfänger, keine vollständige Aufrufsequenz. Der OS-Keychain-Pfeil umfasst den Weg über native Credential-Befehle, UI und den erneuten Tauri-Aufruf.
+
+Der Merge-Hauptpfad liest sich von links nach rechts: Starten, bei Konflikten warten, alle Dateien lösen und vormerken, anschließend ausdrücklich fortsetzen. Wiederholte Dateiauflösungen sind in diesem Hauptzustand zusammengefasst. Ein erfolgreicher konfliktfreier Merge überspringt die Konfliktzustände. Abbruch ist auch nach vollständiger Auflösung möglich, solange der Merge noch läuft; diese zusätzliche Kante ist zugunsten der Übersicht ausgelassen. Squash und reine ff-only-Ablehnungen sind nicht als normaler Konfliktpfad dargestellt.
+
+## Prüfung
+
+Alle drei Artefakte: 9/9 Showcase-Prüfungen, keine Kompositionsfehler oder Warnungen. Browserprüfung: 1440×900, 1600×1000, 1920×1080 und 2048×1320 ohne Seitenüberlauf. Visuelle Prüfung der finalen Screenshots: 1440×900 dunkel und 2048×1320 hell.
+
+Die JSON-Spezifikationen liegen neben den HTML-Dateien. `handoff-receipts.json` enthält Typ, Pfad, SHA-256, Dateigrößen und getrennte Validierungs-, Browser- und Sichtprüfungsstatus. Die jeweiligen `.delivery.json` und `.browser.json` sind die unveränderten Werkzeugprotokolle.
diff --git a/docs/diagrams/ai-commit.browser.json b/docs/diagrams/ai-commit.browser.json
new file mode 100644
index 0000000..387ea77
--- /dev/null
+++ b/docs/diagrams/ai-commit.browser.json
@@ -0,0 +1,548 @@
+{
+ "schemaVersion": 1,
+ "ok": true,
+ "command": "visual-check",
+ "evidenceKind": "automated-browser",
+ "status": "pass",
+ "visualReview": "pending",
+ "artifact": {
+ "path": "/mnt/data/Development/GitLite/docs/diagrams/ai-commit.html",
+ "sha256": "c29e634d61bf0b7eeee9bffe6d6fc9ac1f0e3419dd42d20dc474f2c8cde8c26b",
+ "bytes": 804685
+ },
+ "state": {
+ "detail": "read",
+ "motion": "still"
+ },
+ "chrome": {
+ "status": "available",
+ "executable": "/opt/helium-browser-bin/chrome"
+ },
+ "diagnostics": [],
+ "containment": {
+ "status": "pass",
+ "viewports": [
+ {
+ "width": 1440,
+ "height": 900,
+ "theme": "light",
+ "innerWidth": 1440,
+ "innerHeight": 900,
+ "scrollWidth": 1440,
+ "scrollHeight": 900,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 981,
+ "diagramWidth": 951,
+ "viewBoxWidth": 880,
+ "minimumProjectedNodeTextPx": 6.6,
+ "minimumProjectedNodeText": "Bearbeitbar im Commit-Feld",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 1600,
+ "height": 1000,
+ "theme": "light",
+ "innerWidth": 1600,
+ "innerHeight": 1000,
+ "scrollWidth": 1600,
+ "scrollHeight": 1000,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1022,
+ "diagramWidth": 992,
+ "viewBoxWidth": 880,
+ "minimumProjectedNodeTextPx": 6.6,
+ "minimumProjectedNodeText": "Bearbeitbar im Commit-Feld",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 1920,
+ "height": 1080,
+ "theme": "light",
+ "innerWidth": 1920,
+ "innerHeight": 1080,
+ "scrollWidth": 1920,
+ "scrollHeight": 1080,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1184,
+ "diagramWidth": 1154,
+ "viewBoxWidth": 880,
+ "minimumProjectedNodeTextPx": 6.6,
+ "minimumProjectedNodeText": "Bearbeitbar im Commit-Feld",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 2048,
+ "height": 1320,
+ "theme": "light",
+ "innerWidth": 2048,
+ "innerHeight": 1320,
+ "scrollWidth": 2048,
+ "scrollHeight": 1320,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1566,
+ "diagramWidth": 1516,
+ "viewBoxWidth": 880,
+ "minimumProjectedNodeTextPx": 6.6,
+ "minimumProjectedNodeText": "Bearbeitbar im Commit-Feld",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 41,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ }
+ ]
+ },
+ "readability": {
+ "status": "pass",
+ "minimumProjectedNodeTextPx": 6,
+ "viewports": [
+ {
+ "width": 1440,
+ "height": 900,
+ "theme": "light",
+ "innerWidth": 1440,
+ "innerHeight": 900,
+ "scrollWidth": 1440,
+ "scrollHeight": 900,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 981,
+ "diagramWidth": 951,
+ "viewBoxWidth": 880,
+ "minimumProjectedNodeTextPx": 6.6,
+ "minimumProjectedNodeText": "Bearbeitbar im Commit-Feld",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 1600,
+ "height": 1000,
+ "theme": "light",
+ "innerWidth": 1600,
+ "innerHeight": 1000,
+ "scrollWidth": 1600,
+ "scrollHeight": 1000,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1022,
+ "diagramWidth": 992,
+ "viewBoxWidth": 880,
+ "minimumProjectedNodeTextPx": 6.6,
+ "minimumProjectedNodeText": "Bearbeitbar im Commit-Feld",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 1920,
+ "height": 1080,
+ "theme": "light",
+ "innerWidth": 1920,
+ "innerHeight": 1080,
+ "scrollWidth": 1920,
+ "scrollHeight": 1080,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1184,
+ "diagramWidth": 1154,
+ "viewBoxWidth": 880,
+ "minimumProjectedNodeTextPx": 6.6,
+ "minimumProjectedNodeText": "Bearbeitbar im Commit-Feld",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 2048,
+ "height": 1320,
+ "theme": "light",
+ "innerWidth": 2048,
+ "innerHeight": 1320,
+ "scrollWidth": 2048,
+ "scrollHeight": 1320,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1566,
+ "diagramWidth": 1516,
+ "viewBoxWidth": 880,
+ "minimumProjectedNodeTextPx": 6.6,
+ "minimumProjectedNodeText": "Bearbeitbar im Commit-Feld",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 41,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ }
+ ]
+ },
+ "viewerChrome": {
+ "status": "pass",
+ "viewports": [
+ {
+ "width": 1440,
+ "height": 900,
+ "theme": "light",
+ "innerWidth": 1440,
+ "innerHeight": 900,
+ "scrollWidth": 1440,
+ "scrollHeight": 900,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 981,
+ "diagramWidth": 951,
+ "viewBoxWidth": 880,
+ "minimumProjectedNodeTextPx": 6.6,
+ "minimumProjectedNodeText": "Bearbeitbar im Commit-Feld",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 1600,
+ "height": 1000,
+ "theme": "light",
+ "innerWidth": 1600,
+ "innerHeight": 1000,
+ "scrollWidth": 1600,
+ "scrollHeight": 1000,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1022,
+ "diagramWidth": 992,
+ "viewBoxWidth": 880,
+ "minimumProjectedNodeTextPx": 6.6,
+ "minimumProjectedNodeText": "Bearbeitbar im Commit-Feld",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 1920,
+ "height": 1080,
+ "theme": "light",
+ "innerWidth": 1920,
+ "innerHeight": 1080,
+ "scrollWidth": 1920,
+ "scrollHeight": 1080,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1184,
+ "diagramWidth": 1154,
+ "viewBoxWidth": 880,
+ "minimumProjectedNodeTextPx": 6.6,
+ "minimumProjectedNodeText": "Bearbeitbar im Commit-Feld",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 2048,
+ "height": 1320,
+ "theme": "light",
+ "innerWidth": 2048,
+ "innerHeight": 1320,
+ "scrollWidth": 2048,
+ "scrollHeight": 1320,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1566,
+ "diagramWidth": 1516,
+ "viewBoxWidth": 880,
+ "minimumProjectedNodeTextPx": 6.6,
+ "minimumProjectedNodeText": "Bearbeitbar im Commit-Feld",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 41,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ }
+ ]
+ },
+ "captures": {
+ "status": "pass",
+ "screenshots": [
+ {
+ "width": 1440,
+ "height": 900,
+ "theme": "light",
+ "innerWidth": 1440,
+ "innerHeight": 900,
+ "scrollWidth": 1440,
+ "scrollHeight": 900,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 981,
+ "diagramWidth": 951,
+ "viewBoxWidth": 880,
+ "minimumProjectedNodeTextPx": 6.6,
+ "minimumProjectedNodeText": "Bearbeitbar im Commit-Feld",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light",
+ "file": "ai-commit.visual-check.1440x900.light.png"
+ },
+ {
+ "width": 1440,
+ "height": 900,
+ "theme": "dark",
+ "innerWidth": 1440,
+ "innerHeight": 900,
+ "scrollWidth": 1440,
+ "scrollHeight": 900,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 981,
+ "diagramWidth": 951,
+ "viewBoxWidth": 880,
+ "minimumProjectedNodeTextPx": 6.6,
+ "minimumProjectedNodeText": "Bearbeitbar im Commit-Feld",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "dark",
+ "file": "ai-commit.visual-check.1440x900.dark.png"
+ },
+ {
+ "width": 2048,
+ "height": 1320,
+ "theme": "light",
+ "innerWidth": 2048,
+ "innerHeight": 1320,
+ "scrollWidth": 2048,
+ "scrollHeight": 1320,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1566,
+ "diagramWidth": 1516,
+ "viewBoxWidth": 880,
+ "minimumProjectedNodeTextPx": 6.6,
+ "minimumProjectedNodeText": "Bearbeitbar im Commit-Feld",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 41,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light",
+ "file": "ai-commit.visual-check.2048x1320.light.png"
+ },
+ {
+ "width": 2048,
+ "height": 1320,
+ "theme": "dark",
+ "innerWidth": 2048,
+ "innerHeight": 1320,
+ "scrollWidth": 2048,
+ "scrollHeight": 1320,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1566,
+ "diagramWidth": 1516,
+ "viewBoxWidth": 880,
+ "minimumProjectedNodeTextPx": 6.6,
+ "minimumProjectedNodeText": "Bearbeitbar im Commit-Feld",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 41,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "dark",
+ "file": "ai-commit.visual-check.2048x1320.dark.png"
+ }
+ ],
+ "contactSheet": "ai-commit.visual-check.html"
+ },
+ "sidecars": {
+ "receipt": "ai-commit.visual-check.json",
+ "contactSheet": "ai-commit.visual-check.html"
+ }
+}
diff --git a/docs/diagrams/ai-commit.delivery.json b/docs/diagrams/ai-commit.delivery.json
new file mode 100644
index 0000000..e8106e6
--- /dev/null
+++ b/docs/diagrams/ai-commit.delivery.json
@@ -0,0 +1,24 @@
+{
+ "schemaVersion": 1,
+ "ok": true,
+ "command": "deliver",
+ "type": "dataflow",
+ "input": "/mnt/data/Development/GitLite/docs/diagrams/ai-commit.json",
+ "output": "/mnt/data/Development/GitLite/docs/diagrams/ai-commit.html",
+ "specification": {
+ "sha256": "56fb5f77f2300ccd958e3d51b037ad1169ad431894e3afff00775edae2caae7a",
+ "bytes": 3071
+ },
+ "artifact": {
+ "sha256": "c29e634d61bf0b7eeee9bffe6d6fc9ac1f0e3419dd42d20dc474f2c8cde8c26b",
+ "bytes": 804685
+ },
+ "validation": {
+ "checksPassed": 9,
+ "checkCount": 9,
+ "compositionProfile": "showcase",
+ "compositionStatus": "pass",
+ "errors": 0,
+ "warnings": 0
+ }
+}
diff --git a/docs/diagrams/ai-commit.html b/docs/diagrams/ai-commit.html
new file mode 100644
index 0000000..9e59624
--- /dev/null
+++ b/docs/diagrams/ai-commit.html
@@ -0,0 +1,14946 @@
+
+
+
+
+
+
+ Gitty · KI-Commit-Nachricht Diagram
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Guided views
+
+
+
+
+
Explore this system
+
Step through curated paths without changing the source diagram.
+
+
+ Beat
+
+
+
+ Next
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Ready
+ Chapter 01 / 01
+
+
+ Guided chapter
+
+
+
+
+
+
+
+
+ Diagram guide
+ Explore this system
+
+
+
+
Inspecting compiled semantics
+
+
+
+
+
+
+
+
+
+ E ExportT ThemeS Style0 Reset+ Zoom in- Zoom outEsc Close
+
+
+
+
+
+ Find a node
+
+
+
+ ⌕
+
+ /
+
+
+
No matching nodes
+
+
+
+
+
+
Semantic passport
+
+
+
+
+
+
+
+
+
+
+
+
+
Authored reach
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Route probe
+ Choose a start node
+
+
+
+
+
+
+
+
+ Pick two semantic nodes on the diagram
+
+
+
+
+
+
+
+
Choose the source, then the destination. Direction matters.
+
+
+
+
+ Semantic lens
+ Compare system roles
+
+
+
+
Choose up to two semantic kinds. One reveals its real traffic; two compare only direct authored relationships.
+
+
Choose a kind to inspect its nodes and touching relationships.
+
+
+
+
+
+
+
+
+
+ Semantic radar
+ Building overview
+
+
+
+
+
+
Click nodeDrag to pan
+
+
Semantic radar needs more MAP space.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ - • Nur vorgemerkte Änderungen bilden den Diff. Notizen sind optional.
+ - • Die Oberfläche übergibt Modell, Anbieter und API-Schlüssel per Tauri-Aufruf.
+
+
+
+
+
+
+ - • Schlüssel liegen im OS-Keychain, werden aber in die Oberfläche geladen.
+ - • Diff und Notizen verlassen bei Cloud-Anbietern den Rechner; eigene Endpunkte können lokal sein.
+ - • Unterstützt: OpenAI, Anthropic und eigene kompatible Endpunkte.
+
+
+
+
+
+
+ - • Die Antwort füllt das bearbeitbare Nachrichtenfeld.
+ - • Ein Commit wird erst durch eine separate Nutzeraktion erstellt.
+
+
+
+
+
+
+
+
+
diff --git a/docs/diagrams/ai-commit.json b/docs/diagrams/ai-commit.json
new file mode 100644
index 0000000..d900755
--- /dev/null
+++ b/docs/diagrams/ai-commit.json
@@ -0,0 +1,147 @@
+{
+ "schema_version": 1,
+ "diagram_type": "dataflow",
+ "meta": {
+ "title": "Gitty · KI-Commit-Nachricht",
+ "quality_profile": "showcase",
+ "viewBox": [
+ 880,
+ 520
+ ]
+ },
+ "stages": [
+ {
+ "label": "Lokale Eingaben"
+ },
+ {
+ "label": "Native Verarbeitung"
+ },
+ {
+ "label": "Modell-Endpunkt"
+ },
+ {
+ "label": "Ergebnis"
+ }
+ ],
+ "nodes": [
+ {
+ "id": "staged",
+ "type": "database",
+ "label": "Git-Index",
+ "sublabel": "Vorgemerkte Änderungen",
+ "stage": 0,
+ "row": 1
+ },
+ {
+ "id": "notes",
+ "type": "frontend",
+ "label": "Notizen & Auswahl",
+ "sublabel": "Anbieter / Modell",
+ "stage": 0,
+ "row": 0
+ },
+ {
+ "id": "prepare",
+ "type": "backend",
+ "label": "Diff & Prompt",
+ "sublabel": "Rust + commit_ai",
+ "stage": 1,
+ "row": 1
+ },
+ {
+ "id": "model",
+ "type": "external",
+ "label": "KI-Anbieter",
+ "sublabel": "Gewählter Endpunkt",
+ "stage": 2,
+ "row": 1
+ },
+ {
+ "id": "draft",
+ "type": "frontend",
+ "label": "Vorschlag",
+ "sublabel": "Bearbeitbar im Commit-Feld",
+ "stage": 3,
+ "row": 1
+ },
+ {
+ "id": "keys",
+ "type": "security",
+ "label": "OS-Keychain",
+ "sublabel": "API-Schlüssel via UI",
+ "stage": 1,
+ "row": 2
+ }
+ ],
+ "flows": [
+ {
+ "id": "diff",
+ "from": "staged",
+ "to": "prepare",
+ "label": "Diff",
+ "variant": "emphasis"
+ },
+ {
+ "id": "context",
+ "from": "notes",
+ "to": "prepare",
+ "label": "Notizen",
+ "variant": "default",
+ "toSide": "top",
+ "via": [
+ [
+ 315,
+ 157
+ ]
+ ]
+ },
+ {
+ "id": "request",
+ "from": "prepare",
+ "to": "model",
+ "label": "Prompt",
+ "variant": "emphasis"
+ },
+ {
+ "id": "response",
+ "from": "model",
+ "to": "draft",
+ "label": "Antwort",
+ "variant": "emphasis"
+ },
+ {
+ "id": "secret",
+ "from": "keys",
+ "to": "prepare",
+ "label": "API-Key",
+ "variant": "security"
+ }
+ ],
+ "cards": [
+ {
+ "dot": "cyan",
+ "title": "Datenbasis",
+ "items": [
+ "Nur vorgemerkte Änderungen bilden den Diff. Notizen sind optional.",
+ "Die Oberfläche übergibt Modell, Anbieter und API-Schlüssel per Tauri-Aufruf."
+ ]
+ },
+ {
+ "dot": "rose",
+ "title": "Vertrauensgrenzen",
+ "items": [
+ "Schlüssel liegen im OS-Keychain, werden aber in die Oberfläche geladen.",
+ "Diff und Notizen verlassen bei Cloud-Anbietern den Rechner; eigene Endpunkte können lokal sein.",
+ "Unterstützt: OpenAI, Anthropic und eigene kompatible Endpunkte."
+ ]
+ },
+ {
+ "dot": "emerald",
+ "title": "Vorschlag statt Commit",
+ "items": [
+ "Die Antwort füllt das bearbeitbare Nachrichtenfeld.",
+ "Ein Commit wird erst durch eine separate Nutzeraktion erstellt."
+ ]
+ }
+ ]
+}
diff --git a/docs/diagrams/ai-commit.visual-check.1440x900.dark.png b/docs/diagrams/ai-commit.visual-check.1440x900.dark.png
new file mode 100644
index 0000000..4ba2c3b
Binary files /dev/null and b/docs/diagrams/ai-commit.visual-check.1440x900.dark.png differ
diff --git a/docs/diagrams/ai-commit.visual-check.1440x900.light.png b/docs/diagrams/ai-commit.visual-check.1440x900.light.png
new file mode 100644
index 0000000..91129e7
Binary files /dev/null and b/docs/diagrams/ai-commit.visual-check.1440x900.light.png differ
diff --git a/docs/diagrams/ai-commit.visual-check.2048x1320.dark.png b/docs/diagrams/ai-commit.visual-check.2048x1320.dark.png
new file mode 100644
index 0000000..51478a0
Binary files /dev/null and b/docs/diagrams/ai-commit.visual-check.2048x1320.dark.png differ
diff --git a/docs/diagrams/ai-commit.visual-check.2048x1320.light.png b/docs/diagrams/ai-commit.visual-check.2048x1320.light.png
new file mode 100644
index 0000000..f4e7b18
Binary files /dev/null and b/docs/diagrams/ai-commit.visual-check.2048x1320.light.png differ
diff --git a/docs/diagrams/ai-commit.visual-check.html b/docs/diagrams/ai-commit.visual-check.html
new file mode 100644
index 0000000..d04bfab
--- /dev/null
+++ b/docs/diagrams/ai-commit.visual-check.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+Archify automated browser evidence · ai-commit.html
+
+
+
+
+
+
+
+ LIGHT · 1440×900 · containment pass
+
+
+
+ DARK · 1440×900 · containment pass
+
+
+
+ LIGHT · 2048×1320 · containment pass
+
+
+
+ DARK · 2048×1320 · containment pass
+
+
+
+
diff --git a/docs/diagrams/ai-commit.visual-check.json b/docs/diagrams/ai-commit.visual-check.json
new file mode 100644
index 0000000..387ea77
--- /dev/null
+++ b/docs/diagrams/ai-commit.visual-check.json
@@ -0,0 +1,548 @@
+{
+ "schemaVersion": 1,
+ "ok": true,
+ "command": "visual-check",
+ "evidenceKind": "automated-browser",
+ "status": "pass",
+ "visualReview": "pending",
+ "artifact": {
+ "path": "/mnt/data/Development/GitLite/docs/diagrams/ai-commit.html",
+ "sha256": "c29e634d61bf0b7eeee9bffe6d6fc9ac1f0e3419dd42d20dc474f2c8cde8c26b",
+ "bytes": 804685
+ },
+ "state": {
+ "detail": "read",
+ "motion": "still"
+ },
+ "chrome": {
+ "status": "available",
+ "executable": "/opt/helium-browser-bin/chrome"
+ },
+ "diagnostics": [],
+ "containment": {
+ "status": "pass",
+ "viewports": [
+ {
+ "width": 1440,
+ "height": 900,
+ "theme": "light",
+ "innerWidth": 1440,
+ "innerHeight": 900,
+ "scrollWidth": 1440,
+ "scrollHeight": 900,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 981,
+ "diagramWidth": 951,
+ "viewBoxWidth": 880,
+ "minimumProjectedNodeTextPx": 6.6,
+ "minimumProjectedNodeText": "Bearbeitbar im Commit-Feld",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 1600,
+ "height": 1000,
+ "theme": "light",
+ "innerWidth": 1600,
+ "innerHeight": 1000,
+ "scrollWidth": 1600,
+ "scrollHeight": 1000,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1022,
+ "diagramWidth": 992,
+ "viewBoxWidth": 880,
+ "minimumProjectedNodeTextPx": 6.6,
+ "minimumProjectedNodeText": "Bearbeitbar im Commit-Feld",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 1920,
+ "height": 1080,
+ "theme": "light",
+ "innerWidth": 1920,
+ "innerHeight": 1080,
+ "scrollWidth": 1920,
+ "scrollHeight": 1080,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1184,
+ "diagramWidth": 1154,
+ "viewBoxWidth": 880,
+ "minimumProjectedNodeTextPx": 6.6,
+ "minimumProjectedNodeText": "Bearbeitbar im Commit-Feld",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 2048,
+ "height": 1320,
+ "theme": "light",
+ "innerWidth": 2048,
+ "innerHeight": 1320,
+ "scrollWidth": 2048,
+ "scrollHeight": 1320,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1566,
+ "diagramWidth": 1516,
+ "viewBoxWidth": 880,
+ "minimumProjectedNodeTextPx": 6.6,
+ "minimumProjectedNodeText": "Bearbeitbar im Commit-Feld",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 41,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ }
+ ]
+ },
+ "readability": {
+ "status": "pass",
+ "minimumProjectedNodeTextPx": 6,
+ "viewports": [
+ {
+ "width": 1440,
+ "height": 900,
+ "theme": "light",
+ "innerWidth": 1440,
+ "innerHeight": 900,
+ "scrollWidth": 1440,
+ "scrollHeight": 900,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 981,
+ "diagramWidth": 951,
+ "viewBoxWidth": 880,
+ "minimumProjectedNodeTextPx": 6.6,
+ "minimumProjectedNodeText": "Bearbeitbar im Commit-Feld",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 1600,
+ "height": 1000,
+ "theme": "light",
+ "innerWidth": 1600,
+ "innerHeight": 1000,
+ "scrollWidth": 1600,
+ "scrollHeight": 1000,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1022,
+ "diagramWidth": 992,
+ "viewBoxWidth": 880,
+ "minimumProjectedNodeTextPx": 6.6,
+ "minimumProjectedNodeText": "Bearbeitbar im Commit-Feld",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 1920,
+ "height": 1080,
+ "theme": "light",
+ "innerWidth": 1920,
+ "innerHeight": 1080,
+ "scrollWidth": 1920,
+ "scrollHeight": 1080,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1184,
+ "diagramWidth": 1154,
+ "viewBoxWidth": 880,
+ "minimumProjectedNodeTextPx": 6.6,
+ "minimumProjectedNodeText": "Bearbeitbar im Commit-Feld",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 2048,
+ "height": 1320,
+ "theme": "light",
+ "innerWidth": 2048,
+ "innerHeight": 1320,
+ "scrollWidth": 2048,
+ "scrollHeight": 1320,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1566,
+ "diagramWidth": 1516,
+ "viewBoxWidth": 880,
+ "minimumProjectedNodeTextPx": 6.6,
+ "minimumProjectedNodeText": "Bearbeitbar im Commit-Feld",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 41,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ }
+ ]
+ },
+ "viewerChrome": {
+ "status": "pass",
+ "viewports": [
+ {
+ "width": 1440,
+ "height": 900,
+ "theme": "light",
+ "innerWidth": 1440,
+ "innerHeight": 900,
+ "scrollWidth": 1440,
+ "scrollHeight": 900,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 981,
+ "diagramWidth": 951,
+ "viewBoxWidth": 880,
+ "minimumProjectedNodeTextPx": 6.6,
+ "minimumProjectedNodeText": "Bearbeitbar im Commit-Feld",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 1600,
+ "height": 1000,
+ "theme": "light",
+ "innerWidth": 1600,
+ "innerHeight": 1000,
+ "scrollWidth": 1600,
+ "scrollHeight": 1000,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1022,
+ "diagramWidth": 992,
+ "viewBoxWidth": 880,
+ "minimumProjectedNodeTextPx": 6.6,
+ "minimumProjectedNodeText": "Bearbeitbar im Commit-Feld",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 1920,
+ "height": 1080,
+ "theme": "light",
+ "innerWidth": 1920,
+ "innerHeight": 1080,
+ "scrollWidth": 1920,
+ "scrollHeight": 1080,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1184,
+ "diagramWidth": 1154,
+ "viewBoxWidth": 880,
+ "minimumProjectedNodeTextPx": 6.6,
+ "minimumProjectedNodeText": "Bearbeitbar im Commit-Feld",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 2048,
+ "height": 1320,
+ "theme": "light",
+ "innerWidth": 2048,
+ "innerHeight": 1320,
+ "scrollWidth": 2048,
+ "scrollHeight": 1320,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1566,
+ "diagramWidth": 1516,
+ "viewBoxWidth": 880,
+ "minimumProjectedNodeTextPx": 6.6,
+ "minimumProjectedNodeText": "Bearbeitbar im Commit-Feld",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 41,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ }
+ ]
+ },
+ "captures": {
+ "status": "pass",
+ "screenshots": [
+ {
+ "width": 1440,
+ "height": 900,
+ "theme": "light",
+ "innerWidth": 1440,
+ "innerHeight": 900,
+ "scrollWidth": 1440,
+ "scrollHeight": 900,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 981,
+ "diagramWidth": 951,
+ "viewBoxWidth": 880,
+ "minimumProjectedNodeTextPx": 6.6,
+ "minimumProjectedNodeText": "Bearbeitbar im Commit-Feld",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light",
+ "file": "ai-commit.visual-check.1440x900.light.png"
+ },
+ {
+ "width": 1440,
+ "height": 900,
+ "theme": "dark",
+ "innerWidth": 1440,
+ "innerHeight": 900,
+ "scrollWidth": 1440,
+ "scrollHeight": 900,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 981,
+ "diagramWidth": 951,
+ "viewBoxWidth": 880,
+ "minimumProjectedNodeTextPx": 6.6,
+ "minimumProjectedNodeText": "Bearbeitbar im Commit-Feld",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "dark",
+ "file": "ai-commit.visual-check.1440x900.dark.png"
+ },
+ {
+ "width": 2048,
+ "height": 1320,
+ "theme": "light",
+ "innerWidth": 2048,
+ "innerHeight": 1320,
+ "scrollWidth": 2048,
+ "scrollHeight": 1320,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1566,
+ "diagramWidth": 1516,
+ "viewBoxWidth": 880,
+ "minimumProjectedNodeTextPx": 6.6,
+ "minimumProjectedNodeText": "Bearbeitbar im Commit-Feld",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 41,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light",
+ "file": "ai-commit.visual-check.2048x1320.light.png"
+ },
+ {
+ "width": 2048,
+ "height": 1320,
+ "theme": "dark",
+ "innerWidth": 2048,
+ "innerHeight": 1320,
+ "scrollWidth": 2048,
+ "scrollHeight": 1320,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1566,
+ "diagramWidth": 1516,
+ "viewBoxWidth": 880,
+ "minimumProjectedNodeTextPx": 6.6,
+ "minimumProjectedNodeText": "Bearbeitbar im Commit-Feld",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 41,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "dark",
+ "file": "ai-commit.visual-check.2048x1320.dark.png"
+ }
+ ],
+ "contactSheet": "ai-commit.visual-check.html"
+ },
+ "sidecars": {
+ "receipt": "ai-commit.visual-check.json",
+ "contactSheet": "ai-commit.visual-check.html"
+ }
+}
diff --git a/docs/diagrams/clone-repository.browser.json b/docs/diagrams/clone-repository.browser.json
new file mode 100644
index 0000000..7dad037
--- /dev/null
+++ b/docs/diagrams/clone-repository.browser.json
@@ -0,0 +1,548 @@
+{
+ "schemaVersion": 1,
+ "ok": true,
+ "command": "visual-check",
+ "evidenceKind": "automated-browser",
+ "status": "pass",
+ "visualReview": "pending",
+ "artifact": {
+ "path": "/mnt/data/Development/GitLite/docs/diagrams/clone-repository.html",
+ "sha256": "073e7a45ad071e43b8a2ce3385897d6d7d04ecd92d89f87bbbae85e7dcba72be",
+ "bytes": 807347
+ },
+ "state": {
+ "detail": "read",
+ "motion": "still"
+ },
+ "chrome": {
+ "status": "available",
+ "executable": "/opt/helium-browser-bin/chrome"
+ },
+ "diagnostics": [],
+ "containment": {
+ "status": "pass",
+ "viewports": [
+ {
+ "width": 1440,
+ "height": 900,
+ "theme": "light",
+ "innerWidth": 1440,
+ "innerHeight": 900,
+ "scrollWidth": 1440,
+ "scrollHeight": 900,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1376,
+ "diagramWidth": 1346,
+ "viewBoxWidth": 1223,
+ "minimumProjectedNodeTextPx": 8,
+ "minimumProjectedNodeText": "Dialog / Integration",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 1600,
+ "height": 1000,
+ "theme": "light",
+ "innerWidth": 1600,
+ "innerHeight": 1000,
+ "scrollWidth": 1600,
+ "scrollHeight": 1000,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1536,
+ "diagramWidth": 1506,
+ "viewBoxWidth": 1223,
+ "minimumProjectedNodeTextPx": 8,
+ "minimumProjectedNodeText": "Dialog / Integration",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 1920,
+ "height": 1080,
+ "theme": "light",
+ "innerWidth": 1920,
+ "innerHeight": 1080,
+ "scrollWidth": 1920,
+ "scrollHeight": 1080,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1856,
+ "diagramWidth": 1826,
+ "viewBoxWidth": 1223,
+ "minimumProjectedNodeTextPx": 8,
+ "minimumProjectedNodeText": "Dialog / Integration",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 2048,
+ "height": 1320,
+ "theme": "light",
+ "innerWidth": 2048,
+ "innerHeight": 1320,
+ "scrollWidth": 2048,
+ "scrollHeight": 1320,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1920,
+ "diagramWidth": 1870,
+ "viewBoxWidth": 1223,
+ "minimumProjectedNodeTextPx": 8,
+ "minimumProjectedNodeText": "Dialog / Integration",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 41,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ }
+ ]
+ },
+ "readability": {
+ "status": "pass",
+ "minimumProjectedNodeTextPx": 6,
+ "viewports": [
+ {
+ "width": 1440,
+ "height": 900,
+ "theme": "light",
+ "innerWidth": 1440,
+ "innerHeight": 900,
+ "scrollWidth": 1440,
+ "scrollHeight": 900,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1376,
+ "diagramWidth": 1346,
+ "viewBoxWidth": 1223,
+ "minimumProjectedNodeTextPx": 8,
+ "minimumProjectedNodeText": "Dialog / Integration",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 1600,
+ "height": 1000,
+ "theme": "light",
+ "innerWidth": 1600,
+ "innerHeight": 1000,
+ "scrollWidth": 1600,
+ "scrollHeight": 1000,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1536,
+ "diagramWidth": 1506,
+ "viewBoxWidth": 1223,
+ "minimumProjectedNodeTextPx": 8,
+ "minimumProjectedNodeText": "Dialog / Integration",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 1920,
+ "height": 1080,
+ "theme": "light",
+ "innerWidth": 1920,
+ "innerHeight": 1080,
+ "scrollWidth": 1920,
+ "scrollHeight": 1080,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1856,
+ "diagramWidth": 1826,
+ "viewBoxWidth": 1223,
+ "minimumProjectedNodeTextPx": 8,
+ "minimumProjectedNodeText": "Dialog / Integration",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 2048,
+ "height": 1320,
+ "theme": "light",
+ "innerWidth": 2048,
+ "innerHeight": 1320,
+ "scrollWidth": 2048,
+ "scrollHeight": 1320,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1920,
+ "diagramWidth": 1870,
+ "viewBoxWidth": 1223,
+ "minimumProjectedNodeTextPx": 8,
+ "minimumProjectedNodeText": "Dialog / Integration",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 41,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ }
+ ]
+ },
+ "viewerChrome": {
+ "status": "pass",
+ "viewports": [
+ {
+ "width": 1440,
+ "height": 900,
+ "theme": "light",
+ "innerWidth": 1440,
+ "innerHeight": 900,
+ "scrollWidth": 1440,
+ "scrollHeight": 900,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1376,
+ "diagramWidth": 1346,
+ "viewBoxWidth": 1223,
+ "minimumProjectedNodeTextPx": 8,
+ "minimumProjectedNodeText": "Dialog / Integration",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 1600,
+ "height": 1000,
+ "theme": "light",
+ "innerWidth": 1600,
+ "innerHeight": 1000,
+ "scrollWidth": 1600,
+ "scrollHeight": 1000,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1536,
+ "diagramWidth": 1506,
+ "viewBoxWidth": 1223,
+ "minimumProjectedNodeTextPx": 8,
+ "minimumProjectedNodeText": "Dialog / Integration",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 1920,
+ "height": 1080,
+ "theme": "light",
+ "innerWidth": 1920,
+ "innerHeight": 1080,
+ "scrollWidth": 1920,
+ "scrollHeight": 1080,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1856,
+ "diagramWidth": 1826,
+ "viewBoxWidth": 1223,
+ "minimumProjectedNodeTextPx": 8,
+ "minimumProjectedNodeText": "Dialog / Integration",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ },
+ {
+ "width": 2048,
+ "height": 1320,
+ "theme": "light",
+ "innerWidth": 2048,
+ "innerHeight": 1320,
+ "scrollWidth": 2048,
+ "scrollHeight": 1320,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1920,
+ "diagramWidth": 1870,
+ "viewBoxWidth": 1223,
+ "minimumProjectedNodeTextPx": 8,
+ "minimumProjectedNodeText": "Dialog / Integration",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 41,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light"
+ }
+ ]
+ },
+ "captures": {
+ "status": "pass",
+ "screenshots": [
+ {
+ "width": 1440,
+ "height": 900,
+ "theme": "light",
+ "innerWidth": 1440,
+ "innerHeight": 900,
+ "scrollWidth": 1440,
+ "scrollHeight": 900,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1376,
+ "diagramWidth": 1346,
+ "viewBoxWidth": 1223,
+ "minimumProjectedNodeTextPx": 8,
+ "minimumProjectedNodeText": "Dialog / Integration",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light",
+ "file": "clone-repository.visual-check.1440x900.light.png"
+ },
+ {
+ "width": 1440,
+ "height": 900,
+ "theme": "dark",
+ "innerWidth": 1440,
+ "innerHeight": 900,
+ "scrollWidth": 1440,
+ "scrollHeight": 900,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1376,
+ "diagramWidth": 1346,
+ "viewBoxWidth": 1223,
+ "minimumProjectedNodeTextPx": 8,
+ "minimumProjectedNodeText": "Dialog / Integration",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 51,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "dark",
+ "file": "clone-repository.visual-check.1440x900.dark.png"
+ },
+ {
+ "width": 2048,
+ "height": 1320,
+ "theme": "light",
+ "innerWidth": 2048,
+ "innerHeight": 1320,
+ "scrollWidth": 2048,
+ "scrollHeight": 1320,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1920,
+ "diagramWidth": 1870,
+ "viewBoxWidth": 1223,
+ "minimumProjectedNodeTextPx": 8,
+ "minimumProjectedNodeText": "Dialog / Integration",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 41,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "light",
+ "file": "clone-repository.visual-check.2048x1320.light.png"
+ },
+ {
+ "width": 2048,
+ "height": 1320,
+ "theme": "dark",
+ "innerWidth": 2048,
+ "innerHeight": 1320,
+ "scrollWidth": 2048,
+ "scrollHeight": 1320,
+ "overflowX": false,
+ "overflowY": false,
+ "ok": true,
+ "readerWidth": 1920,
+ "diagramWidth": 1870,
+ "viewBoxWidth": 1223,
+ "minimumProjectedNodeTextPx": 8,
+ "minimumProjectedNodeText": "Dialog / Integration",
+ "minimumProjectedNodeTextDetail": "context",
+ "minimumRequiredNodeTextPx": 6,
+ "readabilityOk": true,
+ "hasLegend": true,
+ "hasNavigationDock": true,
+ "legendDockIntersectionArea": 0,
+ "dockStageIntersectionArea": 0,
+ "dockStageGap": 10.21875,
+ "requiredDockStageGap": 10,
+ "viewerChromeStageOk": true,
+ "viewerChromeReserve": 41,
+ "viewerChromeActive": true,
+ "viewerChromeOk": true,
+ "resolvedTheme": "dark",
+ "file": "clone-repository.visual-check.2048x1320.dark.png"
+ }
+ ],
+ "contactSheet": "clone-repository.visual-check.html"
+ },
+ "sidecars": {
+ "receipt": "clone-repository.visual-check.json",
+ "contactSheet": "clone-repository.visual-check.html"
+ }
+}
diff --git a/docs/diagrams/clone-repository.delivery.json b/docs/diagrams/clone-repository.delivery.json
new file mode 100644
index 0000000..6c5df98
--- /dev/null
+++ b/docs/diagrams/clone-repository.delivery.json
@@ -0,0 +1,24 @@
+{
+ "schemaVersion": 1,
+ "ok": true,
+ "command": "deliver",
+ "type": "workflow",
+ "input": "/mnt/data/Development/GitLite/docs/diagrams/clone-repository.json",
+ "output": "/mnt/data/Development/GitLite/docs/diagrams/clone-repository.html",
+ "specification": {
+ "sha256": "08ddcd0a8efa4f6992112be4e1d8a81fb39fca161298eef83febd346393cb52c",
+ "bytes": 4223
+ },
+ "artifact": {
+ "sha256": "073e7a45ad071e43b8a2ce3385897d6d7d04ecd92d89f87bbbae85e7dcba72be",
+ "bytes": 807347
+ },
+ "validation": {
+ "checksPassed": 9,
+ "checkCount": 9,
+ "compositionProfile": "showcase",
+ "compositionStatus": "pass",
+ "errors": 0,
+ "warnings": 0
+ }
+}
diff --git a/docs/diagrams/clone-repository.html b/docs/diagrams/clone-repository.html
new file mode 100644
index 0000000..0589ec4
--- /dev/null
+++ b/docs/diagrams/clone-repository.html
@@ -0,0 +1,14967 @@
+
+
+
+
+
+
+ Gitty · Repository klonen und öffnen Diagram
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Guided views
+
+
+
+
+
Explore this system
+
Step through curated paths without changing the source diagram.
+
+
+ Beat
+
+
+
+ Next
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Ready
+ Chapter 01 / 01
+
+
+ Guided chapter
+
+
+
+
+
+
+
+
+ Diagram guide
+ Explore this system
+
+
+
+
Inspecting compiled semantics
+
+
+
+
+
+
+
+
+
+ E ExportT ThemeS Style0 Reset+ Zoom in- Zoom outEsc Close
+
+
+
+
+
+ Find a node
+
+
+
+ ⌕
+
+ /
+
+
+
No matching nodes
+
+
+
+
+
+
Semantic passport
+
+
+
+
+
+
+
+
+
+
+
+
+
Authored reach
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Route probe
+ Choose a start node
+
+
+
+
+
+
+
+
+ Pick two semantic nodes on the diagram
+
+
+
+
+
+
+
+
Choose the source, then the destination. Direction matters.
+
+
+
+
+ Semantic lens
+ Compare system roles
+
+
+
+
Choose up to two semantic kinds. One reveals its real traffic; two compare only direct authored relationships.
+
+
Choose a kind to inspect its nodes and touching relationships.
+
+
+
+
+
+
+
+
+
+ Semantic radar
+ Building overview
+
+
+
+
+
+
Click nodeDrag to pan
+
+
Semantic radar needs more MAP space.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ - • URL oder Hosting-Integration liefert das Remote; Zielordner und Optionen kommen aus dem Dialog.
+ - • Tauri führt den Clone in spawn_blocking aus. Git nutzt HTTPS oder SSH.
+
+
+
+
+
+
+ - • Nur bei vorhandenem HEAD: LFS erkennen, lokale Filter / Hook einrichten, Objekte laden.
+ - • Ein LFS-Fehler wird zur Warnung; das geklonte Repository wird trotzdem geöffnet.
+
+
+
+
+
+
+ - • Bei Authentifizierungsfehlern öffnet die UI den Anmeldedialog; neue Zugangsdaten erlauben einen erneuten Versuch.
+ - • Branch, shallow, blobless und sparse sind optionale Varianten. Andere Clone-Fehler bleiben im Dialog sichtbar.
+
+
+
+
+
+
+
+
+
diff --git a/docs/diagrams/clone-repository.json b/docs/diagrams/clone-repository.json
new file mode 100644
index 0000000..4f28daf
--- /dev/null
+++ b/docs/diagrams/clone-repository.json
@@ -0,0 +1,194 @@
+{
+ "schema_version": 2,
+ "diagram_type": "workflow",
+ "meta": {
+ "title": "Gitty · Repository klonen und öffnen",
+ "quality_profile": "showcase",
+ "legend": {
+ "entries": {
+ "frontend": {
+ "label": "Oberfläche"
+ },
+ "backend": {
+ "label": "Verarbeitung"
+ },
+ "security": {
+ "label": "Zugang"
+ },
+ "database": {
+ "label": "Repository-Daten"
+ }
+ }
+ }
+ },
+ "lanes": [
+ {
+ "id": "main",
+ "label": "Klonen & Öffnen"
+ },
+ {
+ "id": "auth",
+ "label": "Anmeldung",
+ "variant": "exception"
+ }
+ ],
+ "mainPath": [
+ "choose",
+ "credentials",
+ "clone",
+ "lfs",
+ "bundle",
+ "open"
+ ],
+ "nodes": [
+ {
+ "id": "choose",
+ "lane": "main",
+ "col": 0,
+ "type": "frontend",
+ "label": "Remote & Ziel",
+ "sublabel": "Dialog / Integration",
+ "width": 155,
+ "yOffset": 0
+ },
+ {
+ "id": "credentials",
+ "lane": "main",
+ "col": 1,
+ "type": "security",
+ "label": "Zugang prüfen",
+ "sublabel": "OS-Keychain / Git",
+ "width": 155,
+ "yOffset": 0
+ },
+ {
+ "id": "clone",
+ "lane": "main",
+ "col": 2,
+ "type": "backend",
+ "label": "Git klont",
+ "sublabel": "Ziel lokal validieren",
+ "width": 155,
+ "yOffset": 0
+ },
+ {
+ "id": "lfs",
+ "lane": "main",
+ "col": 3,
+ "type": "backend",
+ "label": "LFS nachladen",
+ "sublabel": "Falls erforderlich",
+ "width": 155,
+ "yOffset": 0
+ },
+ {
+ "id": "bundle",
+ "lane": "main",
+ "col": 4,
+ "type": "database",
+ "label": "Daten bündeln",
+ "sublabel": "Status / Historie / Dateien",
+ "width": 155,
+ "yOffset": 0
+ },
+ {
+ "id": "open",
+ "lane": "main",
+ "col": 5,
+ "type": "frontend",
+ "label": "Repository öffnen",
+ "sublabel": "Bundle in UI anwenden",
+ "width": 155,
+ "yOffset": 0
+ },
+ {
+ "id": "signin",
+ "lane": "auth",
+ "col": 2,
+ "type": "security",
+ "label": "Neu anmelden",
+ "sublabel": "Zugangsdaten eingeben",
+ "width": 155,
+ "yOffset": 25
+ }
+ ],
+ "edges": [
+ {
+ "id": "main-0",
+ "from": "choose",
+ "to": "credentials",
+ "label": "Start",
+ "variant": "emphasis"
+ },
+ {
+ "id": "main-1",
+ "from": "credentials",
+ "to": "clone",
+ "label": "IPC",
+ "variant": "emphasis"
+ },
+ {
+ "id": "main-2",
+ "from": "clone",
+ "to": "lfs",
+ "label": "Erfolg",
+ "variant": "emphasis"
+ },
+ {
+ "id": "main-3",
+ "from": "lfs",
+ "to": "bundle",
+ "label": "Weiter",
+ "variant": "emphasis"
+ },
+ {
+ "id": "main-4",
+ "from": "bundle",
+ "to": "open",
+ "label": "Bundle",
+ "variant": "emphasis"
+ },
+ {
+ "id": "auth-error",
+ "from": "clone",
+ "to": "signin",
+ "label": "Auth-Fehler",
+ "variant": "security",
+ "role": "error"
+ },
+ {
+ "id": "retry-clone",
+ "from": "signin",
+ "to": "credentials",
+ "label": "Erneut versuchen",
+ "variant": "dashed",
+ "role": "return"
+ }
+ ],
+ "cards": [
+ {
+ "dot": "cyan",
+ "title": "Auswahl & Ausführung",
+ "items": [
+ "URL oder Hosting-Integration liefert das Remote; Zielordner und Optionen kommen aus dem Dialog.",
+ "Tauri führt den Clone in spawn_blocking aus. Git nutzt HTTPS oder SSH."
+ ]
+ },
+ {
+ "dot": "amber",
+ "title": "LFS ist ein Folgeschritt",
+ "items": [
+ "Nur bei vorhandenem HEAD: LFS erkennen, lokale Filter / Hook einrichten, Objekte laden.",
+ "Ein LFS-Fehler wird zur Warnung; das geklonte Repository wird trotzdem geöffnet."
+ ]
+ },
+ {
+ "dot": "rose",
+ "title": "Fehler & Optionen",
+ "items": [
+ "Bei Authentifizierungsfehlern öffnet die UI den Anmeldedialog; neue Zugangsdaten erlauben einen erneuten Versuch.",
+ "Branch, shallow, blobless und sparse sind optionale Varianten. Andere Clone-Fehler bleiben im Dialog sichtbar."
+ ]
+ }
+ ]
+}
diff --git a/docs/diagrams/clone-repository.validation.json b/docs/diagrams/clone-repository.validation.json
new file mode 100644
index 0000000..371fbbc
--- /dev/null
+++ b/docs/diagrams/clone-repository.validation.json
@@ -0,0 +1,91 @@
+{
+ "schemaVersion": 1,
+ "ok": true,
+ "command": "validate",
+ "type": "workflow",
+ "input": "/mnt/data/Development/GitLite/docs/diagrams/clone-repository.json",
+ "checks": [
+ {
+ "name": "single_svg",
+ "ok": true,
+ "details": [
+ "found 1