First color-display board on the site (nRF52840 + SX1262 + 1.14" 240x135
ST7789 TFT). Slotted into the Heltec block in boards.ts; Uf2DownloadFlow
maps the T114 id to the bootloader drive name (T114BOOT — verify on
real hardware).
Drive-by: the /flash page subtitle said "download UF2 files for nRF
boards" but the Waveshare RP2040-LoRa is also a UF2 target. Updated to
"nRF52840 and RP2040 boards".
Three changes, all from finally having working RAK4631 firmware and
noticing the homepage grid was hand-coded, stale, and disconnected from
the flasher.
1. RAK4631 display name. Silkscreen + RAK marketing call this module
'RAK4631'; 'WisBlock' is the ecosystem brand. The site was showing
'RAK WisBlock 4631', which matched neither the product name nor the
firmware commit message ('RAK4631 WisBlock bring-up'). It also
contradicted Uf2DownloadFlow.svelte, which already correctly told
users 'A USB drive named RAK4631 should appear'. Renamed to 'RAK4631
WisBlock' in boards.ts. Stable identifiers (board id, asset filename
pattern, driveName lookup) unchanged so v1.4.0 artifacts still
resolve.
2. Homepage grid is now data-driven from boards.ts. Previously a
hand-coded list that had silently drifted: missing the LilyGo T-Beam
classic, LilyGo T-Beam S3 Supreme, and the Heltec V3 UART variant.
Now maps over the same `boards` array the flasher uses, sorted
case-insensitively by display name. Adding a board in one place
updates both pages. `badgeText()` and `badgeColor()` lifted out of
BoardSelector.svelte into boards.ts so the label and accent color
have a single source of truth too.
3. Homepage cards are now links — clicking a card takes you to
/flash?board=<id> with that board pre-selected. Flasher.svelte reads
the param on mount and sets selectedBoard if the id resolves, so the
user lands on the version-picker step directly.
The flasher's BoardSelector keeps its richer UI (search filter,
MCU-family grouping) — only the simpler homepage grid was unified.
Gives the GitHub-release-body markdown real typography on the
/flash page:
- `## [version]` becomes a bordered mono version heading
- `### Added / Changed / Fixed / Removed / Deprecated / Security`
render as uppercase section headers, color-coded per
Keep-a-Changelog semantics (green / yellow / blue / red)
- Nested bullet lists switch marker style (disc → circle → square)
- Inline `code`, fenced `pre`, hr, strong, em, blockquote all styled
- Proper vertical rhythm (line-height 1.65, section spacing)
To colorize the section headers, `VersionSelector`.renderBody now
post-processes marked's output to tag known h3 texts with a
`data-section` attribute that CSS targets.
Rules live in `src/styles/global.css` under `@layer base`, not in
the Svelte component's `<style>` block: the Astro + Svelte 5 build
pipeline was silently dropping the component's scoped CSS in the
production bundle (works in dev via HMR, but `dist/_astro/*.css`
shipped with zero `.changelog` rules), leaving the netlify site
completely unstyled. Moving to global CSS sidesteps that toolchain
issue; the `.changelog` parent selector is specific enough that no
scope leakage is possible.
ESP32-S3 Meshtastic handset with SH1106 OLED. Flashes via the
CP2102 bridge, so this board is download-only like heltec_v3_uart —
Web Serial is unreliable through the bridge. The existing
`download-only` branch of EspFlashFlow surfaces the CP2102 warning
plus a .bin download and espflash CLI instructions, so no new
component code is needed.
ESP32-S3 grid in BoardSelector goes from sm:grid-cols-3 to
sm:grid-cols-2 lg:grid-cols-4 to accommodate the fourth ESP board.
Homepage Supported Boards grid drops from lg:grid-cols-5 to
lg:grid-cols-3 (3x2 layout) — six 200-px cards in one row was tight.
New RP2040 board family in board selector, homepage grid, and UF2
download flow (RPI-RP2 drive name, correct probe-rs chip).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Custom Shiki theme matching site palette (green keywords, yellow strings,
blue functions, purple constants). Toggle button to switch between
highlighted and plain green. Reorganized page: What is it → Quick Start →
What can you do. Tightened copy. Narrower architecture diagram.