docs
Implementation plan
Historical implementation notes and migration planning context.
Implementation Plan - Ready to Start
Note: The desktop shell is now React (
../frontend-react/). File paths and Svelte references below are historical planning notes.
Summary of Updates
Based on your requirements, I’ve updated the architecture to:
✅ Preserved Existing Functionality
- i18n: Kept existing i18n system (en, cz, es, fr) - no changes needed
- Theming: Kept existing theming system (light/dark, presets) - no changes needed
- Canvas Rendering: MiddleContent.svelte will support multiple views (radix, table, statistics, interpretations)
✅ Enhanced for JPL Precision
- Microsecond Precision: TIMESTAMP supports microseconds for exact timing
- Optional Columns: Declination, right ascension, distance stored when available (JPL only)
- Storage Strategy: NULL for missing columns, efficient queries with WHERE clauses
✅ Time Navigation
- High Precision: Seconds-level stepping (default: 1 hour, adjustable to minutes/seconds)
- Quick Navigation: First, Prev, Next, Last, Now buttons
- Time Shift: Astrolab-style shift (years, months, days, hours, minutes, seconds)
- Time Range: Start/end datetime pickers with presets
Architecture Files
ARCHITECTURE_PROPOSAL.md - Updated with:
- Optional JPL columns (declination, RA, distance)
- Microsecond precision support
- Time granularity options
TIME_NAVIGATION.md - New document with:
- Complete time navigation UI design
- Svelte store implementation
- Component code examples
- Keyboard shortcuts
INTEGRATION_EXAMPLES.md - Updated with:
- Python CLI supporting second-level precision
- Rust storage with optional columns
- Time step parsing (seconds to days)
UPDATED_ARCHITECTURE.md - Summary of all changes
Next Steps - Ready to Iterate
Step 1: Create Time Navigation Store
# Create the store file
touch src/lib/stores/timeNavigation.ts
Step 2: Create Time Navigation Component
# Create the component
touch src/lib/components/TimeNavigationPanel.svelte
Step 3: Integrate into Left Sidebar
- Add TimeNavigationPanel to App.svelte left column
- Connect to existing ExpandablePanel structure
Step 4: Update DuckDB Schema
- Add optional columns to computed_positions table
- Update Rust storage functions
Step 5: Extend Python CLI
- Add time step parsing (seconds support)
- Add optional column computation (declination, RA, distance)
Step 6: Create Data Table Component
- Support optional columns (show/hide based on availability)
- Connect to time navigation store
Key Design Decisions
- Time Precision: Store at microsecond level, step at user-selected granularity
- Optional Columns: Only compute/store when engine supports (JPL = declination/RA/distance)
- Backward Compatibility: Existing data remains valid (NULL for optional columns)
- No Breaking Changes: i18n/theming preserved exactly as-is
Questions Resolved
✅ i18n/Theming: Preserved - no changes needed
✅ JPL Declination: Supported as optional column
✅ Time Precision: Microsecond storage, second-level stepping
✅ Time Navigation: Full implementation with Astrolab-style shift
✅ Canvas Views: Radix, Table, Statistics, Interpretations supported
Ready to Start?
The architecture is now complete and ready for implementation. We can start with:
- Phase 1: Time navigation store + component (preserves existing UI)
- Phase 2: DuckDB schema updates (adds optional columns)
- Phase 3: Python CLI extensions (adds precision + optional columns)
- Phase 4: Data table component (displays optional columns)
- Phase 5: Integration and testing
Would you like me to start implementing Phase 1 (time navigation)?