Skip to content

fix: harden the package table pipeline and polish the site - #153

Merged
ruben-arts merged 4 commits into
RoboStack:mainfrom
Hofer-Julian:harden-pipeline-and-polish-site
Aug 10, 2026
Merged

fix: harden the package table pipeline and polish the site#153
ruben-arts merged 4 commits into
RoboStack:mainfrom
Hofer-Julian:harden-pipeline-and-polish-site

Conversation

@Hofer-Julian

@Hofer-Julian Hofer-Julian commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

This PR contains three big improvements

Fixes #99
Fixes #98

Pipeline

We update the data for the tables every 6 hours.
Now we retry on failure and drop content we don't actually use

Site

Made sure that data that can be generated is generated. That mostly concerns stats, what's the latest distro and how long distros are supported. Also add packages to the package table that are in robostack but not in ROS.

Refactor

  • Inline SVG icons move to src/assets/icons/
  • Move functionality in own components and split big components
  • PackageTable moves into src/components/package-table/, with the pure logic (document format, unpacking, version comparison, filters, sorters) extracted into data.ts
  • Comments describe what is there instead of retelling history

- Retry transient HTTP failures and regenerate all distros in one
  `--all` run that keeps going when a single distro fails
- Single source for the distro and platform lists:
  `src/data/distros.json`, read by `distros.ts` and the pipeline
- Deploy only after a successful table refresh, add concurrency groups
- Trim the payload: drop the unused `license` field, cap the mutex
  generations at 4
- Show channel-only packages as rows, marked `indexed` 0
- Normalize seconds-vs-milliseconds timestamps in `collect_builds`,
  fail the staging copy loudly on fetch errors, use `pathlib`
- All package links land on the newest release via `newestRelease()`;
  the hero terminal and the home distro cards derive from the same
  data, so a new release moves them on its own
- Home: "Get started" is the primary CTA, cards lose the meaningless
  colored dots and the "best choice" wording, tab title no longer reads
  "RoboStack | RoboStack"
- Table: search ranks exact > prefix > substring, the filter chips
  double as the legend instead of triplicating the counts, a "/" hint
  on the search box, one sentence explaining the distro mutex
- Narrow screens collapse the platform columns into a tap-to-expand
  coverage pill with finger-sized targets
- "ROS 2 Kilted" instead of "ROS2 Kilted", end-of-life tabs dimmed
- Inline SVG icons move to `src/assets/icons/*.svg`, painted with
  `currentColor`
Comments now describe what is there: the table comment explains the
JSON-plus-windowing approach without the old static-Markdown story.
`src/components/package-table/` holds the Astro wrapper, the Svelte
island, and a new `data.ts` with the pure logic: the document format,
the positional unpacking, version comparison, the per-mutex row
derivation, filters and sorters. The component keeps the reactive
state, the template and the styles.
@Hofer-Julian
Hofer-Julian marked this pull request as ready for review August 10, 2026 14:15

@ruben-arts ruben-arts left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks

@ruben-arts
ruben-arts merged commit 9dfc3f9 into RoboStack:main Aug 10, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants