Appendix: Common Tasks
- Add a new file parser
- Implement the parser in
io/pipelines/src/formats/<format>.rs. - Register it in
io/pipelines/src/registry.rs. - Extend
LoaderServicetests or add a regression case undertests/regression. - Document the format in
docs/USER_GUIDE.md.
- Implement the parser in
- Add a keyboard shortcut
- Define the key mapping in
ui/shell/src/keyboard.rs. - Handle the action inside
viewer_loop/key_actions/(updateKeyActionContextif new state is required). - Update the User Guide’s shortcut tables.
- Define the key mapping in
- Create a new viewer panel
- Add a module under
ui/shell/src/panels/. - Expose actions via enums in
panels.rsand wire them throughViewerLoop. - Persist any new state in
UiStateand update serialisation logic if applicable.
- Add a module under
- Extend remote access
- Add the capability to
SftpDataSource(core/services/src/data_source/sftp/mod.rs), or to theDataSourcetrait if it should apply to every backend. - Update
RemoteContext(ui/shell/src/remote/) to use it. - Surface the feature in the GUI remote browser or CLI remote commands.
- Add the capability to
- Expose a new CLI subcommand
- Update
automation/cli/src/main.rswith the Clap definition. - Implement the logic using
OrbitronServicesinstead of re-implementing loaders. - Add user-facing documentation and tests (ideally under
automation/cli/testsor as integration binaries).
- Update
- Expose functionality in the Python bridge
- Add public methods to
PyOrbitronorPySceneinextensions/python-bridge/src/lib.rs. - Reuse existing service helpers; avoid duplicating logic already present in the CLI.
- Update docstrings and provide a short example in the User Guide or Python README.
- Rebuild via
maturin developand add a smoke test underextensions/python-bridge/testsif possible.
- Add public methods to
- Add an analysis module shared by CLI/TUI
- Implement the core logic under
automation/cli/src/analyze_<module>.rs(follow existing modules for geometry/orbitals). - Expose the module through the
AnalyzeCommandsenum and handler. - If the TUI should display the data, add a helper in
automation/tui/src/analysis.rsand render it inside the appropriate panel. - Capture representative fixtures in regression tests.
- Implement the core logic under
By following the patterns described in this guide and reusing existing abstractions, new features remain consistent with the rest of the Orbitron workspace while minimising regressions.