Snapshot date: 2026-04-26
Purpose:
- Capture the current stable application structure at a facade and subsystem level
- Describe how the main flows move through the codebase today
- Keep architectural context separate from the tactical work tracked in
REFACTOR.md
Related document:
- Refactor sequencing and migration notes live in REFACTOR.md
eu.startales.spacepixels.gui- Swing application shell, panels, dialogs, and top-level user workflows
eu.startales.spacepixels.tasks- Background task runners launched by the GUI
eu.startales.spacepixels.util- Processing facade plus FITS, WCS, visualization, and pipeline support services
eu.startales.spacepixels.util.reporting- Detection report export subsystem, report section writers, and astrometry/report lookup support
eu.startales.spacepixels.api- Headless/public pipeline API for non-Swing callers
Role:
- Desktop application shell and top-level composition root for the Swing application
Owns or coordinates:
MainApplicationPanelDetectionConfigurationPanelConfigurationPanelStretchPanelBlinkFrameImageProcessingReportLookupProxyServer- Guava
EventBus
Role:
- Main desktop workflow facade for import, solve, preview, blink, and detection actions
Depends on:
ApplicationWindowImageProcessingDetectionConfigurationPanelStretchPanelProcessingProgressDialogDetectionSequenceFrame
Launches background tasks:
FitsImportTaskBatchConvertMonoTaskBlinkImagesTaskManualTransientInspectionTaskDetectionTaskIterativeDetectionTaskPlateSolveTask
Role:
- Detection-settings facade for UI binding, persistence, preview, and auto-tune control
Depends on:
ApplicationWindowTuningPreviewManagerDetectionConfigSpacePixelsDetectionProfileSpacePixelsDetectionProfileIOSpacePixelsVisualizationPreferencesSpacePixelsVisualizationPreferencesIOAutoTuneTaskJTransientAutoTuner
Also controls runtime export settings through:
DetectionReportGenerator
Role:
- Backend processing facade for FITS loading, conversion, preview/stretch, plate solving, and detection/report handoff
Coordinates these services:
StandardDetectionPipelineServiceIterativeDetectionPipelineServiceDetectionPipelineSupportPlateSolveServiceFitsVisualizationRenderer
Relies on these supporting classes:
FitsPixelConverterFitsFileInformationFitsFormatCheckerXisfImageConverterWcsCoordinateTransformerWcsSolutionResolverAppConfigSpacePixelsAppConfigIO
Hands report export to:
DetectionReportGenerator
Role:
- Reporting facade that exports the HTML report and all companion visualization assets
Coordinates report models and document structure:
DetectionReportContextDetectionReportSummaryExportVisualizationSettingsDetectionReportDocumentWriterReportClientScriptWriter
Coordinates section writers:
PipelineDiagnosticsSectionWriterTargetVisualizationSectionWriterDeepStackReportSectionWriterResidualReviewSectionWriterGlobalMapsSectionWriter
Uses rendering/export helpers:
TrackVisualizationRendererTrackCropGeometryGifSequenceWriterCreativeTributeRendererDisplayImageRenderer
Depends on astrometry/report lookup support:
DetectionReportAstrometry
Consumes upstream pipeline/domain models:
PipelineResultDetectionConfigFitsFileInformationSourceExtractorTrackLinkerResidualTransientAnalysisSlowMoverAnalysisSlowMoverCandidateResultSlowMoverSummaryTelemetryPipelineTelemetryTrackerTelemetry
Role:
- Report-side astrometry facade for WCS-based sky identification, lookup query construction, and report-ready identification markup
Coordinates context and WCS support:
AstrometryContextFactoryWcsSolutionResolverWcsCoordinateTransformer
Coordinates query-target builders:
SolarSystemQueryTargetSolarSystemQueryTargetFactorySatCheckerQueryTargetFactory
Coordinates report-facing HTML and URL builders:
AstrometryIdentificationHtmlBuilderJplSbIdentUrlBuilderSatCheckerUrlBuilderSkyViewerHtmlBuilder
Consumes:
FitsFileInformationAppConfigSourceExtractorTrackLinker
Role:
- Headless/public facade for running the SpacePixels pipeline without the Swing UI
Coordinates:
DetectionInputPreparationImageProcessingAutoTuneCandidatePoolBuilderJTransientAutoTuner
Consumes or returns:
SpacePixelsPipelineRequestSpacePixelsPipelineResultDetectionConfigFitsFileInformation
ApplicationWindow
-> MainApplicationPanel
-> DetectionTask
-> ImageProcessing
-> StandardDetectionPipelineService
-> DetectionReportGenerator
ApplicationWindow
-> MainApplicationPanel
-> IterativeDetectionTask
-> ImageProcessing
-> IterativeDetectionPipelineService
-> iterative report/index export
DefaultSpacePixelsPipelineApi
-> DetectionInputPreparation
-> ImageProcessing
-> StandardDetectionPipelineService
-> optional DetectionReportGenerator
GUI or API caller
-> ImageProcessing
-> PlateSolveService
-> FITS WCS header update/cleanup
-> DetectionReportAstrometry consumes resolved WCS during report export
ImageProcessing
-> DetectionReportGenerator
-> DetectionReportAstrometry
-> report section writers
-> HTML document plus image/GIF assets
DetectionConfigurationPanel
-> UI widgets
-> DetectionConfig
-> profile/preferences persistence
-> preview and auto-tune tasks
-> runtime export setting updates
ImageProcessingremains the main backend facade even though several responsibilities have already been extracted behind it.DetectionReportGeneratoris now mostly an orchestration facade, while detailed report sections live in dedicated writer classes.DetectionReportAstrometryis still a concentrated boundary between WCS context, lookup strategy, and report-facing identification output.DetectionConfigurationPanelandMainApplicationPanelstill combine view and controller behavior, which is why they remain refactor targets.DefaultSpacePixelsPipelineApiis the main non-GUI entry point and should stay aligned with the same backend services used by the desktop application.
Use this document for:
- stable facade inventory
- subsystem boundaries
- runtime flow reference
Use REFACTOR.md for:
- current refactor priorities
- extraction order
- migration constraints
- verification expectations