Repository navigation
Exploration Exobiology Plan
Status (20260905): historical. This plan has landed. Read it for the data model, the prediction engine and the size-class tables, which are still current — but not for the layout: Exploration and Exobiology shipped as two windows and were later merged into one, with a body's biology nested under its exploration row. The default layout tables below describe the arrangement at the time and have been superseded by CONFIGURATION.md. The
core/explo_*module split described in ROADMAP.md is still outstanding.
Scope: Two new dashboard windows (Exploration, Exobiology), a shared body data layer fed from the commander's full journal history, and a layout system that lets the user choose which windows are shown and where. Multi-session effort; this document is the running plan and is updated as workstreams land.
How to use this document: Each workstream below has a checklist. The data model, size-class model, and default-layout tables are the canonical references — update them in the same commit as the code they describe.
These hold for every line of code and documentation produced under this plan.
- Independent implementation. Every algorithm, data table, and schema in EDLD is written from first principles against the game's journal format and publicly known formulae. No code is carried over from any external project.
- MIT throughout. EDLD remains MIT-licensed. Nothing in the tree creates a dependency on, or derivative relationship with, any third-party tool.
- No external attribution anywhere in the realm. Code, comments, docstrings, docs, config, and UI strings name no outside tool, author, or codebase. In-game terminology (e.g. the Pioneer Supplies carrier tax, the Pioneer exploration rank) and the game publisher / journal spec are not attribution and are retained.
- No overlay. (Superseded — see Streamer Stats Overlay. The reasoning below stands for the exploration and exobiology windows, which still put every datum in a box rather than relying on an overlay to carry it. The overlay was added later for a different purpose: the subset worth putting on camera, not a replacement for having a home in the dashboard.) Neither window renders an in-game overlay. Any datum that would otherwise be surfaced only via an overlay is instead presented inside the relevant EDLD box (see Workstream D, navigation aids).
- Process rules (unchanged): complete files only, destination table on every delivery, Python syntax-validated before delivery, only files modified that turn are shipped, and release notes are produced only on explicit request.
Remove residual references to external journal-tooling codebases from existing comments and docs, keeping all technical content. Affected files are comment/doc edits only; no behavior changes. In-game terms and journal-spec references are retained.
- README setup-guide wording
- EDSM component comments
- Inara component comment
- Module-name table sourcing comments
- Ship-name table sourcing comments
- Status-flag table sourcing comment
- Re-grep the tree to confirm zero external-codebase mentions remain
Make the dashboard composition data-driven in both UIs and let the user assign windows to positions, so the new windows can replace existing ones without breaking the layout. No visible change ships until Workstreams C/D flip the defaults.
Blocks are grouped into interchangeable size classes. A position only accepts blocks of its own class, which is what prevents layout breakage.
| Class | Members (current + planned) | Std width | Std height |
|---|---|---|---|
panel |
Assets, Engineering, Career, Cargo, Exploration, Exobiology | 11 / 10 | ~38 rows |
stack |
Massacre Missions, Navigation, Colonization | 11 / 10 | ~28 rows |
compact |
Alerts, Crew/SLF | 10 | ~17 rows |
anchor |
Commander | 10 | 32 rows |
Standardized heights are chosen close to today's values so the visible layout
barely shifts. Left and right columns are both 11 units wide, so panel/stack
blocks swap freely across them; the center column is 10 units, so its positions
are mutually compatible. Navigation's internal vertical padding is trimmed as
part of fitting it to the stack height.
- Positions are addressed in spreadsheet notation: column letter (A = left, B = center, C = right) + row index within the column (A1, A2, B3, …).
- Each position carries a size class. Its Preferences > Display selector lists only the blocks of that class, plus "(empty)".
- Selecting a block already shown elsewhere moves it; positions left empty close up so the column reflows without gaps.
- Define size classes + per-block class membership in one shared module.
- TUI: replace the hard-coded
compose()columns and static per-block CSS heights with composition from the same assignment map. - Preferences > Display tab (both UIs): per-position class-filtered selector, "reset to defaults", live apply without restart where feasible.
- Persist assignments per commander; migrate existing
layout.jsonfiles. - Verify: disabling/enabling any block, in any position, never produces an overlapping or zero-size widget in either UI.
A shared, normalized store of system/body facts plus per-commander scan status, populated from the full journal archive and kept current during play.
-
Engine: standard-library
sqlite3, thin hand-written data-access layer. No ORM dependency. - Location: one shared galaxy database at the EDLD data root (system and body facts are universal); commander-scoped rows for discovery/scan/map state.
-
Migrations: integer schema version in a
metatable; forward migrations run at startup; version checked before the windows read from it.
| Table | Purpose |
|---|---|
meta |
schema version, last-import bookmarks |
journals |
processed journal filenames (incremental import bookmark) |
commanders |
id ↔ FID/name, for status segmentation |
systems |
name, coords, region, body/non-body counts, population |
system_status |
per-commander honked / fully-scanned / fully-mapped |
stars |
type, subclass, luminosity, mass, distance, rings |
star_status |
per-commander discovered / was-discovered / scan-state |
planets |
class, atmosphere, volcanism, gravity, temp, pressure, radius, materials, terraform state, bio/geo signal counts, rings |
planet_status |
per-commander discovered / mapped / footfall / efficient / scan-state |
planet_gas |
per-planet atmospheric composition |
planet_signals |
per-planet detected biological / geological signal genera |
flora |
per-planet genus / species / color |
flora_status |
per-commander sample count / logged / waypoints |
non_bodies |
belts, clusters, barycenters |
- First run / catch-up: reuse the existing startup preload and lifetime journal
scan to walk the archive once, recording each processed journal in
journalsso subsequent launches are incremental. - Live: the Exploration and Exobiology components write through to the DB as scan/map/sample events arrive during play.
- Manual: a "rebuild from journals" action for recovery.
- DAL module + schema + migration runner.
- Incremental journal-import walker on top of the preload.
- Live write-through from the two feature components.
- Optional external-data enrichment hook (deferred; design only for now).
Replaces Assets in the default layout; Assets ships view-disabled by default.
Extend the existing exploration provider so it also writes body/value data to the data layer and exposes a system/body view for the new blocks. Body value math (base, terraform-bonus range, first-discovery, mapped + efficiency bonus, honk contribution) already exists in the tree and is reused.
- System header: honk / fully-scanned / fully-mapped / first-footfall markers.
- Main-star value including the honk bonus contributed by all bodies.
- High-value mappable highlights with terraformable / previously-scanned / previously-mapped markers and a configurable value threshold.
- Bodies-with-biological-signals callouts.
- Detailed per-body list: type, current value, max-if-mapped value, honk contribution, scan/map/footfall status (with "previously done" marker).
- System totals: current value and max-if-fully-mapped value.
- First-fully-scanned / first-fully-mapped system bonuses.
- Component write-through + system/body accessor for blocks.
- TUI block (
tui/blocks/exploration.py) + composition entry + CSS height. - Default layout: Exploration into the Assets position; Assets view off.
Replaces Engineering in the default layout; Engineering ships view-disabled by default.
Independent species-prediction module built from the game's biological criteria (body class, atmosphere, gravity, temperature, volcanism, parent-star class, galactic region, nebula proximity). Produces the candidate genera/species and value ranges for a planet's signals, narrowing to detected genera after mapping and to the final species as samples are taken.
- System body tracker: shorthand body type + signal counts; gravity warnings (high ≥ 1 G, extreme ≥ 2.7 G / non-walkable).
- Per-planet candidate genera/species with value ranges; optional full variant breakdown.
- Post-DSS narrowing to detected genera/species.
- Live sample progress (1/3, 2/3, complete) and final per-species value.
- Required sample distance and current minimum distance to the previous sample.
- Overlay-relocated navigation aids: nearest-waypoint distance, compass heading, and turn-to-heading indicator shown inside the box (the on-foot radar graphic is dropped; its useful data is presented numerically here).
- Codex novelty markers: not-yet-logged-in-region and never-seen indicators.
- System totals: analyzed value and possible first-find value.
- Prediction module + value-range calculator.
- Component write-through (signals, samples, waypoints) + accessors.
- TUI block (
tui/blocks/exobiology.py) + composition entry + CSS height. - Default layout: Exobiology into the Engineering position; Engineering off.
- Walk the target feature set end-to-end against live play; close gaps.
- Confirm every former overlay-only datum has a box home.
- Performance pass on full-archive import and large-system rendering.
-
docs/CONFIGURATION.mdentries for the new windows and Display tab.
Before (current):
| Column | Positions (top → bottom) |
|---|---|
| A (left) | Assets · Engineering · Colonization |
| B (center) | Commander · Crew/SLF · Alerts · Cargo |
| C (right) | Massacre Missions · Navigation · Career |
After (Exploration + Exobiology default-on, Assets + Engineering default-off):
| Column | Positions (top → bottom) |
|---|---|
| A (left) | Exploration · Exobiology · Colonization |
| B (center) | Commander · Crew/SLF · Alerts · Cargo |
| C (right) | Massacre Missions · Navigation · Career |
Assets and Engineering remain fully available and one selection away in Preferences > Display; they are only hidden by default.
- This plan.
- Data layer (Workstream B) — schema, DAL, migrations, journal import.
- Layout foundation (Workstream A) — size classes, positions, Display tab.
- Exploration window (Workstream C) + default flip.
- Exobiology window (Workstream D) + default flip.
- Parity audit & polish (Workstream E).
Workstream 0 (attribution scrub) is independent and runs as soon as approved.
- Data layer is an independent MIT implementation;
sqlite3(no ORM). - No external attribution anywhere in the realm; in-game terms and the journal spec are retained.
- Neither window renders an overlay; overlay-only data is relocated into boxes.
- Existing TUI layout changes are held to the minimum needed to standardize box sizes for interchangeability.
Getting Started
Guides
Reference
- Automation
- Building
- Configuration
- Dossier
- Edcars
- Exploration Exobiology Plan
- Licensing
- Mission Bootstrap
- Privacy
- Roadmap
- Server
- Signing
- Startup
- Streamer Stats Overlay
- Surface Survey
- Terminal Output
- Theming
Releases