refactor: split oasis-core monolith into 12 crates - #10
Merged
Conversation
Extract core types and traits into a new `oasis-types` crate: - error.rs (OasisError, Result) - input.rs (InputEvent, Button, Trigger) - backend.rs (Color, TextureId, DrawCommand, SdiBackend, InputBackend, NetworkBackend, AudioBackend, NetworkStream, AudioTrackId) - config.rs (OasisConfig) - color.rs (lerp_color, darken, lighten, with_alpha) - shadow.rs (Shadow, ShadowLayer) - pbp.rs (PBP parser) - tls.rs (TlsProvider trait) oasis-core re-exports all modules so downstream crate::* paths are unchanged. Removes Theme::from_skin_theme() (callers use skin.to_ui_theme() directly). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move VFS trait, MemoryVfs, RealVfs, GameAssetVfs, and vfs bench into standalone `oasis-vfs` crate. oasis-core re-exports via `pub use oasis_vfs as vfs;` so all downstream `crate::vfs::*` paths continue to work unchanged. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move platform service traits (PowerService, TimeService, UsbService, OskService, NetworkService), DesktopPlatform impl, and 27 tests into standalone `oasis-platform` crate. oasis-core re-exports via `pub use oasis_platform as platform;`. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move SDI scene graph (SdiRegistry, SdiObject, helpers) and sdi_registry bench into standalone `oasis-sdi` crate. oasis-core re-exports via `pub use oasis_sdi as sdi;`. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move TCP networking, RemoteListener/Client, StdNetworkBackend, hosts config, and TLS (rustls) impl into standalone `oasis-net` crate. The `tls-rustls` feature propagates: oasis-core forwards to oasis-net. oasis-core re-exports via `pub use oasis_net as net;`. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move audio subsystem (playlist management, playback state, AudioManager, NullAudioBackend) into standalone oasis-audio crate. Re-exported from oasis-core as `pub use oasis_audio as audio` for backward compatibility. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move UI widget toolkit (20 widgets, DrawContext, Theme, animation, layout) into standalone oasis-ui crate with local MockBackend for tests. Re-exported from oasis-core as `pub use oasis_ui as ui` for backward compatibility. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move window manager (window configs, hit testing, drag/resize, focus) into standalone oasis-wm crate. Re-exported from oasis-core as `pub use oasis_wm as wm` for backward compatibility. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move skin system (TOML skins, builtin skins, effects, corrupted modifiers, active theme, legacy theme constants) into standalone oasis-skin crate. Re-exported from oasis-core for backward compatibility. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move interpreter, commands, audio_commands, network_commands, and skin_commands into a new oasis-terminal crate. Agent and plugin commands remain in oasis-core because they depend on oasis-core modules (agent, plugin). The oasis-core terminal module re-exports everything from oasis-terminal via glob import. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move the entire browser subsystem (HTML/CSS parser, Gemini protocol, layout engine, paint layer, resource loader, navigation, reader mode) and 4 criterion benchmarks into a new oasis-browser crate. This is the largest extraction at ~23.8K LOC. oasis-core re-exports via `pub use oasis_browser as browser;`. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Gemini AI Code ReviewIssues(none) Previous Issues(none) Suggestions
Notes
Generated by Gemini AI (gemini-3-flash-preview). Supplementary to human reviews. |
Owner
Author
Review Response Agent (Iteration 1)Status: No changes needed Fixed Issues
Ignored Issues
Deferred to Human
Notes
The agent reviewed feedback but determined no code changes were required. |
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
oasis-core(57K LOC monolith) into 12 independent crates with zero downstream import changescrate::*paths continue to work through re-exports inoasis-coreExtracted crates
oasis-typesoasis-vfsoasis-platformoasis-sdioasis-netoasis-audiooasis-uioasis-wmoasis-skinoasis-terminaloasis-browseroasis-coreTest plan
cargo build --workspacecompiles (desktop)cargo build --workspace --releasecompilescargo test --workspace-- all 1,756 tests passcargo clippy --workspace -- -D warnings-- cleancargo fmt --all -- --check-- cleancargo +nightly psp --release)Generated with Claude Code