Repository navigation
Releases: DawsonCodes/US-Space-Mission-Control
Release list
v3.7.0 — Presentation Polish
Launch photos are shown whole instead of cropped. Launch Library's pictures are mostly tall shots of a rocket on the pad, and fitting them to a short landscape strip cut the vehicle in half. The picture now sits over a blurred copy of itself, so it still fills the frame.
More variety in those pictures. Launch Library's launch image is nearly always the rocket-configuration photo, so a hundred Falcon 9 flights all showed the same one and only 24 distinct images covered 222 launches. Mission patches, pad photos and program images are now used when they exist, with the shared rocket photo as the last resort.
Status messages are a floating panel in the corner rather than a strip in the toolbar, where they scrolled out of view and were missed. They stay above everything and have a real close button.
Random mission opens the mission it picked. Scrolling to a highlighted card asked you to work out what had been chosen, and on a long list the highlight was often off-screen by the time the scroll finished.
Detail views are wider and taller on desktop, with a fourth column of facts on a large screen, so they usually fit without scrolling.
Visibility, wind and gusts read in miles and mph first, then metric, matching how temperature has always been shown.
Fixes
- A split accent edge read as one colour. On hover the whole border was tinted with the first accent and the split ring was drawn on top of it, so the lower half looked like the first colour showing through. There is also a hard divider between the bands now.
- The saved drawer's scrollbar flashed in and out when a mission was removed, which shifted the list sideways.
Removed Reset filters from the More menu; the toolbar already has it.
Built by DawsonCodes.
v3.6.1 — The Snapshot Actually Publishes
Fixed the reason no published data ever appeared. The workflow ran eight times and succeeded eight times, wrote both files, then asked git whether anything had changed using a check that only looks at tracked files. The data directory was brand new and untracked, so the answer was always no and the files were discarded. Every visitor was falling through to the API because there was nothing to read.
The completed-launch feed is no longer paged. Launch Library reports over a thousand completed launches in its count even though the query asks for twenty, so paging walked backwards through history that gets thrown away and spent most of the run budget doing it, which starved the upcoming feed. With that budget freed, the upcoming list is published whole.
Weather recorded at a past launch is now fetched by the workflow and published with the launch, so every visitor reads the same stored reading instead of each browser looking it up. It is carried forward between runs, so a launch is looked up once and never again.
Fixes
- The startup title flashed solid white before the animation began. The gradient arrived with a class added 420ms in; the resting colour now matches the tone the glow sweeps over.
- The split accent edge has square ends. The rounded left corners were tapering whichever band sat at the top and bottom.
- Selects stayed brightly ringed after use. Chromium treats a mouse click on a select as keyboard focus, and focus stays on the control after the popup closes, so the ring sat there looking like a stuck open state.
- A launch card stayed highlighted after its details modal closed, because focus is deliberately restored to the button inside it.
- The saved-data notice is amber rather than blue.
Collapsing Mission insights is now remembered on your device.
Built by DawsonCodes.
v3.6.0 — Sync, Timing & API Accounting
The update countdown is anchored to when the data was published rather than to when the tab opened, so it reads the same in every tab and continues across a reload instead of restarting at thirty minutes. The publish time travels through the saved copy, so even the first paint of a reload is correct.
Completed launches now ride the same 30-minute cycle as everything else, reading the published file in the background, so opening the panel shows current data rather than fetching on demand.
Every API request is now counted and published. The About panel reports what the scheduled run spent, what that works out to per hour against the allowance, and how many requests this browser has made, which should be zero. The workflow will not exceed seven requests per run; if a feed grows past that it stops paging and says so rather than quietly spending the next run's allowance.
Fixes
- The NASA-only dashboard, at its remaining source. The development mirror was standing in when production was refused, and when one of its feeds came back short the result was every NASA mission and nothing else, labelled as published data. The mirror is no longer a fallback of any kind.
- The workflow now refuses to publish a snapshot whose provider feed returned nothing, so a NASA-only list cannot reach everyone from the server side either.
- The saved-data banner flashing and vanishing. Withholding an API request counted as a failure and dismissed the banner a few hundred milliseconds after raising it.
- A banner raised during startup no longer spends its ten seconds behind the boot overlay.
- Debug data appeared dead for twenty seconds. It now shows a pressed and loading state before any network work starts, and gives up after five seconds.
- The startup glow started on top of the title. A tiled gradient always has a copy over the glyphs, so it could never begin off-text.
- The accent edge leads with NASA, and hovering keeps both colours instead of collapsing to one.
Debug messages have their own amber style rather than looking like ordinary information.
Built by DawsonCodes.
v3.5.3 — Development Mirror
Debug data now pulls real missions from The Space Devs' development mirror at lldev, which they run for exactly this purpose and which is not meaningfully rate limited. The bundled sample missions remain as the offline fallback, so the switch still works with no network.
That mirror serves a cached dataset which can be days behind, so it is labelled wherever it appears and is never written to the launch cache.
The published data is still preferred over everything, and production is preferred over the mirror.
Built by DawsonCodes.
v3.5.0 — Automatic Data
The launch data no longer comes from each visitor's browser, and there is nothing to press to update it.
Launch Library allows roughly 15 requests an hour per caller. Every visitor calling it directly ran that out quickly, which caused the partial lists, the provider-feed warnings and the outright failures after a tab had been closed for a while.
A workflow now runs twice an hour, fetches every upcoming launch, and commits the result as plain JSON. The dashboard loads that from its own origin, so no visitor makes a launch API request and no one can be rate limited. Because it runs on a schedule instead of per visitor, it pages each feed until exhausted and retries a feed that fails, so the list is complete instead of partial.
The page refreshes itself every 30 minutes and when you return to a backgrounded tab. Both ends skip work when nothing changed: an unchanged file comes back as a 304 with no data transferred, and the workflow commits nothing when the data is identical.
Removed the Refresh data button and Reload live data. The hero now shows where the window stands, for example "Updated 6 minutes ago. Next update in 24 minutes".
Reloading the page no longer costs an API request. Before this, every reload spent two or three against a budget of fifteen an hour, so it was possible to be rate limited before finishing the first visit.
Fixes
- The dashboard showing NASA missions and nothing else. When the provider feed failed, the NASA feed was all that answered, and that got rendered as the full list and saved to the cache, so every later visit started NASA-only. A one-feed result is now never cached and never replaces a more complete list.
Demo data is now Debug data and lives at the bottom of the page next to the credits.
Built by DawsonCodes.
v3.4.3 — Previous Launch Details, Accents & Cleanup
Previous launches now open a full detail view with the mission description, rocket, pad, orbit, agencies, outcome, published cause and a pad map.
Added the weather recorded at liftoff to that view, from Open-Meteo. It is fetched once per launch and stored with it, so reopening a launch costs nothing and the weather source is barely touched.
The Previous launches panel is now a rolling window of the 20 most recent completed launches. A new launch enters the top, the oldest drops off, and its stored weather goes with it, so the saved data cannot grow.
Launch cards, saved missions and previous launches now carry a coloured edge for the organization flying them. A mission shared by two organizations splits the edge into a band for each, so a NASA payload on a SpaceX rocket reads as both at a glance.
Redesigned the saved missions drawer. Soonest first, launches that already flew sink to the bottom and are labelled, a count of what is still ahead, a quieter remove control and a clearer empty state.
Launch feeds are now paged. Launch Library 2 returns at most 100 records per request, so a feed with more than that follows one extra page and covers up to 200 upcoming launches instead of 100.
Coverage messages now say how many launches are shown rather than just calling the list partial.
Cut duplicated and low-value text from the dashboard, including the organization note that repeated the tab strip directly above it.
Rewrote the README and changelog to be shorter and plainer.
Added four test suites for feed paging, the rolling store, accent edges and the saved drawer.
Built by DawsonCodes.
v3.4.2 — Startup Polish & Previous Launches
Fixed the dashboard flashing on screen before the loading overlay appeared. A head gate applies the pre-boot state before first paint, so the title screen is the first thing you see.
The boot overlay now uses the real starfield background instead of a flat panel.
The startup sequence confirms with "Loaded" under the title, then flies the title into its dashboard position.
Added a Previous launches panel to the More menu, with a Success, Partial failure or Failure outcome, the published cause when something went wrong, and a link to watch the launch back.
Fixed "Partial Failure" being read as a plain failure, since the label contains the word failure.
Detail modals are wider on desktop with a three-column grid from 900px up. Mobile keeps its full-screen sheet.
Built by DawsonCodes.
v3.4.1 — Controls, Motion & Startup
Buttons are now a solid graphite system with no gradients or blue tints. Primary keeps its hierarchy through a lighter step of the same gray.
Organization tiles blend their accent into the charcoal instead of filling with flat colour, so NASA reads as a light rose wash rather than a red block.
Added the startup sequence. The title shimmers, a loading spinner holds for at least three seconds, then the title flies into the hero and the dashboard reveals in a stagger. Skipped for reduced motion, deep links and repeat visits.
The shimmer no longer makes the title vanish. The gradient tiles, so every glyph stays painted and only the highlight moves.
Countdowns everywhere now show days, hours, minutes and seconds with per-digit roll animations. Cards dropped the vague "in 22 days" label for it.
Save keeps its green pill, the star turns gold and fires a confetti burst, the button no longer jumps, and the saved count updates instantly.
Fixes
- Launch-card image distortion on hover. Nested transforms were forcing bitmap resampling; the image now gets its own compositor layer.
- Mission Insights chips replaying their entrance on every keystroke.
- Overview counts animating up from a stale dataset after a reload.
- Button hover sheen snapping back to the right at the end.
- Long select labels clipping, and the typewriter search hint truncating to an unreadable ellipsis.
Full animation pass, 29 animations catalogued in ANIMATIONS.md.
Built by DawsonCodes.
U.S. Space Mission Control v3.4.0
U.S. Space Mission Control v3.4.0
v3.4.0 is a final polish update focused on the app’s visual theme, input stability, pagination behavior, and overall launch-readiness.
New
- Refreshed the app with a cleaner black/charcoal space theme
- Reworked the background into a darker starfield with subtle shooting-star motion
- Added a calmer, more premium visual style while preserving the existing dashboard layout
- Added dedicated validation coverage for the new theme behavior
Improved
- Reduced the blue-heavy background wash across the app
- Improved panel, card, footer, and modal readability on the darker theme
- Tuned the starfield so the background feels more subtle and less distracting
- Preserved reduced-motion behavior for users who prefer less animation
Fixed
- Fixed search/input text clipping so typed text and placeholder text render cleanly
- Fixed the long-standing pagination issue where “Load 10 more” and “Show all” could remain visible when all results were already shown
- Improved pagination visibility after filtering, searching, changing tabs, resetting filters, refreshing data, and loading cached results
Validation
- Existing project validation passes
- Theme tests added
- Pagination tests added
- Search/input behavior checked
- Cache, status, merge, calendar, deep-link, organization color, and responsive validation retained
- No new dependencies, framework, backend, API keys, package manager, or build step added
U.S. Space Mission Control v3.3.1 — Launch Stabilization
U.S. Space Mission Control v3.3.1 — Launch Stabilization
A final launch-readiness patch focused on mobile support, API resilience, and dashboard presentation polish.
Highlights
- Repaired mobile layouts across the hero, filters, mission details modal, saved-missions drawer, and footer.
- Redesigned the organization selector so NASA, SpaceX, Blue Origin, Rocket Lab, ULA, and Firefly remain clearly visible without clipped tabs.
- Added distinct organization accent colors for easier mission scanning.
- Added a local organization-color customizer with accessible presets, instant previews, reload persistence, and a reset-to-defaults option.
- Redesigned Mission Overview into a cleaner responsive grid.
- Added an animated mission-search hint with a reduced-motion fallback.
- Hardened launch-data loading with partial-feed recovery, stale-cache fallbacks, bounded retry behavior, and duplicate-refresh prevention.
- Added expanded validation coverage for API resilience, responsive behavior, organization colors, search-hint lifecycle handling, and cache fallbacks.
Notes
- The app remains fully static and dependency-free.
- No backend, framework, package manager, API key, or build step is required.
- Organization-color preferences are stored locally in the browser.