You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add a focused aetheris-openconnect crate that isolates libopenconnect FFI behind safe Rust session, config, event, and error types.
Expose the crate behind an optional aetheris-app openconnect feature, wire it into the workspace, and document the architecture and local build requirements for the system-libopenconnect feature.
`aetheris-app` owns windows, widgets, user state, and persistence of Aetheris projects. `aetheris-kube` owns kubeconfig parsing, Kubernetes clients, discovery, list/watch, mutations, logs, exec, port-forwarding, metrics, and resource details.
22
+
`aetheris-app` owns windows, widgets, user state, and persistence of Aetheris projects. `aetheris-kube` owns kubeconfig parsing, Kubernetes clients, discovery, list/watch, mutations, logs, exec, port-forwarding, metrics, and resource details.`aetheris-openconnect` is an optional native integration crate for libopenconnect; it isolates C FFI and exposes a Rust API for future VPN workflows.
22
23
23
24
## Crate Boundaries
24
25
@@ -40,10 +41,17 @@ flowchart LR
40
41
Ops[Logs exec port-forward mutations]
41
42
end
42
43
44
+
subgraph OpenConnect["aetheris-openconnect"]
45
+
SafeApi[Safe Rust API]
46
+
Ffi[libopenconnect FFI]
47
+
end
48
+
43
49
Widgets --> State
44
50
State --> Commands
45
51
State --> Streams
46
52
Commands --> Manager
53
+
Commands -. optional .-> SafeApi
54
+
SafeApi --> Ffi
47
55
Streams --> Manager
48
56
Manager --> Session
49
57
Session --> Resources
@@ -52,7 +60,7 @@ flowchart LR
52
60
Projects --> State
53
61
```
54
62
55
-
The backend crate must not import GTK, Adwaita, Relm4, VTE, or application widgets. Shared data crosses the boundary through DTOs exported from `aetheris-kube::types`.
63
+
The backend crate must not import GTK, Adwaita, Relm4, VTE, or application widgets. Shared data crosses the boundary through DTOs exported from `aetheris-kube::types`. Native C integrations are kept out of both UI widgets and `aetheris-kube`; each integration gets a focused crate such as `aetheris-openconnect`, with `unsafe` declarations confined to its FFI module.
0 commit comments