refactor(build): split monolith into focused crates (remote-server, cli, app-core, app, transport)#143
Merged
Merged
Conversation
…er crate Moves the HTTP/WS remote-control server (src/remote/) out of the monolithic okena binary into a dedicated library crate, so the axum/hyper/rustls/rcgen server stack no longer compiles on the binary's hot path and can build in parallel. Re-exported as `crate::remote` via a shim in main.rs so existing references keep working. CommandResult DTO moved to okena-core alongside ActionRequest. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
…ions) into okena-app-core crate Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
… now a thin entry point Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
…ena-transport okena-core was a 28-consumer hub that forced the async stack (tokio, reqwest, tokio-tungstenite, rustls) onto every crate via its `client` / `blocking-http` features. Move the transport layer — the async client engine (client/, WS + TLS pinning), blocking HTTP and remote_action — into a new okena-transport crate depending on okena-core. The wire schema (api) and WS message types (ws) stay in okena-core as pure serde data, so api's 14 consumers are unchanged. okena-core now pulls no networking deps. Repoint the 8 client + 6 blocking-http consumers at okena-transport, and drop the dead `client` activation from hooks, app-core and the root binary (none use the transport). Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
`AuthStore`, `PtyBroadcaster` and `RemoteInfo` each have a public argument-less `new()`. While they lived in the binary crate they were not externally reachable, so clippy's `new_without_default` stayed quiet. After extracting them into the `okena-remote-server` library crate they became public API, tripping the lint under CI's `-D warnings`. Add the conventional `Default` impls that delegate to `new()`. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Splits the okena monolith further into focused crates. The desktop binary becomes a thin entry point (
main.rs,assets.rs,smoke_tests.rs) — everything else moves into dedicated workspace crates. No behavior changes; this is a pure build/structure refactor.Extracted crates
refactor(build): …okena-remote-serverokena-remote-serverrefactor(build): …okena-cliokena-clirefactor(build): …okena-app-coreokena-app-corerefactor(build): …okena-appokena-apprefactor(build): …okena-transportokena-transportokena-core(client, http, TLS, remote_action)Notes
[dependencies]shrinks to justokena-app+ the few lower-level cratesmain.rs/smoke_tests.rsstill touch directly.main(8315ff59); merged cleanly with the newokena-usagecrate from feat(usage): unify Claude & Codex widgets, add working-days setting #142.cargo checkpasses across all 30 workspace crates after each commit.🤖 Generated with Claude Code