127 lines
7.4 KiB
XML
127 lines
7.4 KiB
XML
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 760" width="1200" height="760" role="img" aria-label="wayBetter architecture: one Tauri 2 window with a trusted shell webview and one webview per site tab, a Rust host underneath, your adapter on the side, and the waybetter command for store, release and privacy tooling">
|
|
<defs>
|
|
<linearGradient id="bg" x1="0" y1="0" x2="0" y2="1">
|
|
<stop offset="0" stop-color="#0b1020"/>
|
|
<stop offset="1" stop-color="#06070c"/>
|
|
</linearGradient>
|
|
<radialGradient id="glow" cx="0.5" cy="0" r="0.7">
|
|
<stop offset="0" stop-color="#1d3a8a" stop-opacity="0.55"/>
|
|
<stop offset="1" stop-color="#1d3a8a" stop-opacity="0"/>
|
|
</radialGradient>
|
|
<linearGradient id="accent" x1="0" y1="0" x2="1" y2="0">
|
|
<stop offset="0" stop-color="#3b82f6"/>
|
|
<stop offset="0.55" stop-color="#22d3ee"/>
|
|
<stop offset="1" stop-color="#a855f7"/>
|
|
</linearGradient>
|
|
<marker id="arr" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
|
|
<path d="M0 0L10 5L0 10z" fill="#64748b"/>
|
|
</marker>
|
|
<style>
|
|
.t{font-family:ui-sans-serif,"Segoe UI",system-ui,-apple-system,Helvetica,Arial,sans-serif;fill:#e6e9f2}
|
|
.m{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace}
|
|
.h{font-size:22px;font-weight:700;letter-spacing:-0.01em}
|
|
.k{font-size:12px;font-weight:600;letter-spacing:0.14em;fill:#7dd3fc}
|
|
.s{font-size:14px;fill:#a3acc2}
|
|
.c{font-size:13px;fill:#cbd5e1}
|
|
.box{fill:#0f1626;stroke:#24304a;stroke-width:1.2}
|
|
.trust{fill:#101b33;stroke:#3b82f6;stroke-width:1.4}
|
|
.site{fill:#140f26;stroke:#7c3aed;stroke-width:1.4}
|
|
.chip{fill:#17213a;stroke:#2b3a5c}
|
|
.ln{stroke:#64748b;stroke-width:1.4;fill:none}
|
|
.dash{stroke-dasharray:5 5}
|
|
</style>
|
|
</defs>
|
|
<rect width="1200" height="760" rx="18" fill="url(#bg)"/>
|
|
<rect width="1200" height="380" rx="18" fill="url(#glow)"/>
|
|
|
|
<!-- title -->
|
|
<text class="t k" x="48" y="54">— ARCHITECTURE</text>
|
|
<text class="t" x="48" y="92" font-size="32" font-weight="760" letter-spacing="-0.02em">One window, three layers, one small adapter.</text>
|
|
<rect x="48" y="104" width="560" height="3" rx="1.5" fill="url(#accent)"/>
|
|
|
|
<!-- the site -->
|
|
<rect x="48" y="138" width="760" height="64" rx="12" fill="none" stroke="#334155" stroke-dasharray="6 6"/>
|
|
<text class="t h" x="72" y="170" font-size="18">The website you already use</text>
|
|
<text class="t s" x="72" y="190">loaded live from its exact https origin, never copied: x.com, kick.com, …</text>
|
|
|
|
<!-- window -->
|
|
<rect x="48" y="226" width="760" height="300" rx="16" class="box"/>
|
|
<text class="t k" x="72" y="256">TAURI 2 WINDOW · SYSTEM WEBVIEW</text>
|
|
|
|
<!-- shell -->
|
|
<rect x="72" y="272" width="300" height="234" rx="12" class="trust"/>
|
|
<text class="t h" x="92" y="304">Shell</text>
|
|
<text class="t m s" x="92" y="326" font-size="12">packages/shell · local, trusted</text>
|
|
<g class="t c">
|
|
<text x="92" y="356">Tabs, split panes, address bar</text>
|
|
<text x="92" y="380">Command palette, accounts, decks</text>
|
|
<text x="92" y="404">Settings panel, theme builder</text>
|
|
<text x="92" y="428">Store and the install screen</text>
|
|
<text x="92" y="452">Workspaces, backup, updates</text>
|
|
</g>
|
|
<text class="t s" x="92" y="488" font-size="12">the only webview allowed to change anything</text>
|
|
|
|
<!-- tabs -->
|
|
<rect x="392" y="272" width="396" height="234" rx="12" class="site"/>
|
|
<text class="t h" x="412" y="304">Site tabs</text>
|
|
<text class="t m s" x="412" y="326" font-size="12">one webview + profile per tab · packages/runtime</text>
|
|
<g>
|
|
<rect x="412" y="342" width="110" height="30" rx="8" class="chip"/><text class="t c" x="425" y="362">Plugin API</text>
|
|
<rect x="530" y="342" width="106" height="30" rx="8" class="chip"/><text class="t c" x="543" y="362">Theme engine</text>
|
|
<rect x="644" y="342" width="124" height="30" rx="8" class="chip"/><text class="t c" x="657" y="362">String packs</text>
|
|
<rect x="412" y="380" width="110" height="30" rx="8" class="chip"/><text class="t c" x="425" y="400">DOM hub</text>
|
|
<rect x="530" y="380" width="106" height="30" rx="8" class="chip"/><text class="t c" x="543" y="400">Fetch / XHR hub</text>
|
|
<rect x="644" y="380" width="124" height="30" rx="8" class="chip"/><text class="t c" x="657" y="400">Link routing</text>
|
|
<rect x="412" y="418" width="110" height="30" rx="8" class="chip"/><text class="t c" x="425" y="438">Accounts</text>
|
|
<rect x="530" y="418" width="106" height="30" rx="8" class="chip"/><text class="t c" x="543" y="438">UI kit</text>
|
|
<rect x="644" y="418" width="124" height="30" rx="8" class="chip"/><text class="t c" x="657" y="438">Deck columns</text>
|
|
</g>
|
|
<text class="t s" x="412" y="488" font-size="12">untrusted: may only report about itself</text>
|
|
|
|
<!-- arrows site -> tabs -->
|
|
<path class="ln" d="M590 202 V268" marker-end="url(#arr)"/>
|
|
|
|
<!-- host -->
|
|
<rect x="48" y="550" width="760" height="166" rx="16" class="box"/>
|
|
<text class="t k" x="72" y="580">NATIVE HOST · RUST</text>
|
|
<text class="t h" x="72" y="612">waybetter-host</text>
|
|
<text class="t m s" x="258" y="612" font-size="12">crates/waybetter-host</text>
|
|
<g class="t c">
|
|
<text x="72" y="644">Every command re-checks its caller (webview label, exact origin)</text>
|
|
<text x="72" y="668">Profiles, settings, plugins, themes, fonts, workspaces</text>
|
|
<text x="72" y="692">Signed Store (Ed25519), backup, encrypted sync, signed updates</text>
|
|
</g>
|
|
<path class="ln" d="M222 506 V546" marker-end="url(#arr)" marker-start="url(#arr)"/>
|
|
<path class="ln dash" d="M590 506 V546" marker-end="url(#arr)"/>
|
|
<text class="t s" x="236" y="532" font-size="12">all commands</text>
|
|
<text class="t s" x="604" y="532" font-size="12">a short, reviewed list</text>
|
|
|
|
<!-- adapter -->
|
|
<rect x="836" y="138" width="316" height="300" rx="16" fill="#0f1a1a" stroke="#14b8a6" stroke-width="1.4"/>
|
|
<text class="t k" x="860" y="168" style="fill:#5eead4">YOUR APP</text>
|
|
<text class="t h" x="860" y="200">The adapter</text>
|
|
<text class="t s" x="860" y="222">what only your site knows</text>
|
|
<rect x="860" y="242" width="268" height="52" rx="10" class="chip"/>
|
|
<text class="t m c" x="876" y="264">site.rs · SiteSpec</text>
|
|
<text class="t s" x="876" y="283" font-size="12">hosts, account rules</text>
|
|
<rect x="860" y="304" width="268" height="52" rx="10" class="chip"/>
|
|
<text class="t m c" x="876" y="326">site.ts · SiteAdapter</text>
|
|
<text class="t s" x="876" y="345" font-size="12">selectors, API marks, links</text>
|
|
<rect x="860" y="366" width="268" height="52" rx="10" class="chip"/>
|
|
<text class="t m c" x="876" y="388">capabilities/*.json</text>
|
|
<text class="t s" x="876" y="407" font-size="12">who may call what</text>
|
|
<path class="ln dash" d="M836 290 H812" marker-end="url(#arr)"/>
|
|
|
|
<!-- tooling -->
|
|
<rect x="836" y="462" width="316" height="254" rx="16" fill="#151022" stroke="#a855f7" stroke-width="1.4"/>
|
|
<text class="t k" x="860" y="492" style="fill:#d8b4fe">NPM · waybetter</text>
|
|
<text class="t h" x="860" y="524">The tooling</text>
|
|
<g class="t m c">
|
|
<text x="860" y="558">npm create waybetter</text>
|
|
<text x="860" y="584">waybetter dev --watch</text>
|
|
<text x="860" y="610">waybetter store build|sign|verify</text>
|
|
<text x="860" y="636">waybetter strings check</text>
|
|
<text x="860" y="662">waybetter release</text>
|
|
<text x="860" y="688">waybetter privacy-scan</text>
|
|
</g>
|
|
</svg>
|