Skip to content

fix: website bugs - #152

Merged
Hofer-Julian merged 1 commit into
RoboStack:mainfrom
Hofer-Julian:fix-website-bugs
Aug 10, 2026
Merged

fix: website bugs#152
Hofer-Julian merged 1 commit into
RoboStack:mainfrom
Hofer-Julian:fix-website-bugs

Conversation

@Hofer-Julian

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

Copy link
Copy Markdown
Contributor

I spawned a couple of subagents to find bugs in the website.
It fixed the following (smallish) bugs:

  • Clicking a copy button resized it and shifted its neighbours; the BibTeX one had no confirmation style at all
  • The last terminal line on the landing page was accent blue for no good reason
  • The landing page hid the theme switcher and social links on phones (no sidebar drawer to house them)
  • Broken code fences in the FAQ swallowed the glibc note and the whole "Why ROS and Conda?" section
  • The custom fonts never reached the docs pages (--sl-font was never set)
  • The sidebar "Packages" entry lost its highlight on 7 of 8 distro pages
  • The copy button overlapped clipped text in the long Contributing code blocks
  • Small fixes: conda page title casing, Discord link phrasing

Package table bugs

As expected, it found the most bugs in the TS code for the package table:

  • Switching the mutex reset the search box, sort select and keyboard focus
  • A filter could survive a mutex switch with its chip gone, silently showing "No matches"
  • Scrolling rebuilt every row, killing hover state and text selection
  • rosdistro repo URLs went into href unescaped
  • The fetch-error fallback linked to a wrong channel URL for foxy and galactic
  • The table was invisible to screen readers as a matrix: no scope="col", no text on the availability marks, no row count
  • The ros-<distro>- prefix failed WCAG AA contrast and ellipsized the actual package name on phones

It suggested to use Svelte instead of plain TS code. After asking why Svelte instead of plain TS or React, that's what it said:

  • Why not plain TS: every control rebuild had to carry state, focus and escaping by hand, which is exactly where the bugs above came from. Declarative rendering removes that bug class instead of patching each instance
  • Why Svelte instead of React:
    • No VDOM and fine-grained updates suit a scroll-windowed table; keyed rows are patched, not rebuilt
    • Compiled output with Svelte is ~10-15 KB gzipped vs ~40+ KB for React
    • Single-file components with scoped styles match how the .astro components are already written, and the compiler emits a11y warnings at build time

I spawned a couple of subagents to find bugs in the website.
It fixed the following (smallish) bugs:

- Clicking a copy button resized it and shifted its neighbours; the BibTeX one had no confirmation style at all
- The last terminal line on the landing page was accent blue for no good reason
- The landing page hid the theme switcher and social links on phones (no sidebar drawer to house them)
- Broken code fences in the FAQ swallowed the glibc note and the whole "Why ROS and Conda?" section
- The custom fonts never reached the docs pages (`--sl-font` was never set)
- The sidebar "Packages" entry lost its highlight on 7 of 8 distro pages
- The copy button overlapped clipped text in the long Contributing code blocks
- Small fixes: conda page title casing, Discord link phrasing

### Package table bugs

As expected, it found the most bugs in the TS code for the package table:

- Switching the mutex reset the search box, sort select and keyboard focus
- A filter could survive a mutex switch with its chip gone, silently showing "No matches"
- Scrolling rebuilt every row, killing hover state and text selection
- rosdistro repo URLs went into `href` unescaped
- The fetch-error fallback linked to a wrong channel URL for foxy and galactic
- The table was invisible to screen readers as a matrix: no `scope="col"`, no text on the availability marks, no row count
- The `ros-<distro>-` prefix failed WCAG AA contrast and ellipsized the actual package name on phones

It suggested to use Svelte instead of plain TS code. After asking why Svelte instead of plain TS or React, that's what it said: 

- Plain TS: every control rebuild had to carry state, focus and escaping by hand, which is exactly where the bugs above came from. Declarative rendering removes that bug class instead of patching each instance
- React: No VDOM and fine-grained updates suit a scroll-windowed table; keyed rows are patched, not rebuilt
- Compiled output with Svelte is ~10-15 KB gzipped vs ~40+ KB for React
- Single-file components with scoped styles match how the `.astro` components are already written, and the compiler emits a11y warnings at build time
@Hofer-Julian
Hofer-Julian marked this pull request as ready for review August 10, 2026 12:15
@Hofer-Julian
Hofer-Julian merged commit 8388192 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

Development

Successfully merging this pull request may close these issues.

2 participants