Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 24 additions & 8 deletions .claude/skills/release/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -150,13 +150,28 @@ If a **new skill** was created under `.claude/skills/` as part of this release,

---

## Step 7 — Verify the versioned docs deploy (after the tag is pushed)

Pushing the `vX.Y.Z` tag triggers `.github/workflows/deploy.yml`, which rebuilds the docs for every tag (`scripts/docs/build-versioned-docs.mjs`). Once the run is green, check:

- `https://marketsquare.github.io/robotframework-dashboard/` shows `vX.Y.Z` in the nav bar (the root is always the latest tag)
- `https://marketsquare.github.io/robotframework-dashboard/vX.Y.Z/` exists
- `https://marketsquare.github.io/robotframework-dashboard/versions.json` lists the new version with `"latest": true`
## Step 7 — After the release PR is merged: tag, GitHub Release, docs

The user merges the release PR (squash, `Release X.Y.Z (#PR)`), uploads to PyPI and posts the Slack notes. The rest, in this order:

1. **Tag the merge commit** — never before the merge, or the tag points at a commit that is not on `main`:
```bash
git checkout main && git pull
git tag vX.Y.Z && git push origin vX.Y.Z
```
2. **GitHub Release** — same style as the earlier releases (auto-generated "What's Changed"):
```bash
gh release create vX.Y.Z --title "Robotdashboard vX.Y.Z" --generate-notes --notes-start-tag vPREVIOUS --latest
```
Check `gh release list` first: every tag should have a release, so create any missing earlier one (oldest first) before this one so `--latest` ends up on the new version.
3. **Re-run the docs deploy.** `.github/workflows/deploy.yml` runs only on pushes to `main` (plus `workflow_dispatch`), **not** on tags; it builds every release tag it finds (`scripts/docs/build-versioned-docs.mjs`). The run started by the merge usually builds before the tag exists, so trigger it again after the tag push:
```bash
gh workflow run deploy.yml
```
Once that run is green, check:
- `https://marketsquare.github.io/robotframework-dashboard/` shows `vX.Y.Z` in the nav bar (the root is always the latest tag)
- `https://marketsquare.github.io/robotframework-dashboard/vX.Y.Z/` exists
- `https://marketsquare.github.io/robotframework-dashboard/versions.json` lists the new version with `"latest": true`

---

Expand All @@ -169,4 +184,5 @@ Pushing the `vX.Y.Z` tag triggers `.github/workflows/deploy.yml`, which rebuilds
- [ ] `example/robot_results.db` — regenerated
- [ ] `CHANGELOG.md` — new section added at the top
- [ ] Slack release notes produced
- [ ] After the tag push: `/`, `/vX.Y.Z/` and `versions.json` on the docs site show the new version
- [ ] After the merge: `vX.Y.Z` tag pushed on the merge commit, GitHub Release created
- [ ] `gh workflow run deploy.yml` after the tag push; `/`, `/vX.Y.Z/` and `versions.json` on the docs site show the new version
25 changes: 25 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,31 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).

---

## [2.4.0](https://github.com/MarketSquare/robotframework-dashboard/releases/tag/v2.4.0) - 2026-09-26

### Added
- Drag to select time histogram for the date filter — the filter modal now opens with a bar chart of runs per time bucket above the date range, stacked by run status. Drag across the bars to fill the date inputs and zoom in (the chart re-buckets finer on every drag, so a month at a bar per day becomes a week at a bar per 6 hours), click a single bar to select that bucket, or use **Reset Range** for the full span. Hovering a bar lists every run in it with its passed/failed/skipped counts. The histogram follows every other filter but not the date range itself, so widening the range always brings runs back
- Run counts and greying out of impossible filter options — every option of the Runs, Run Tags, Versions, Metadata and custom filter dropdowns shows how many runs remain if that option is selected, and options that can only ever yield zero runs are greyed out (they stay visible and selectable). Counts are computed with every filter except their own applied, and in **NOT** mode a count is what is left over. Both the counts and the greying out can be turned off in Settings > Defaults
- Segmented section tracks in the menu bar — the sections of a page now sit in a rounded track directly after the page itself, with a filled pill marking the section in view, for the Overview (project bars), the Dashboard (`Runs`, `Suites`, `Tests`, `Keywords`) and, for the first time, the Tables page. In the responsive sidebar the pages became collapsible groups: the page you are on is expanded and a chevron folds its sections away
- Custom filter attributes on the Overview run cards — `custom_filter` key/value pairs can be shown on the run cards via Settings > Overview > "Display Custom Filter attributes on run cards"

### Fixed
- The amount filter is applied per project instead of over the combined run list, so a project with a lower run frequency no longer drops out of the Overview entirely. The same holds for retention: `-r limit=N` (and the admin page and `/remove-outputs`) now keeps the N newest runs *per project*, where it could previously wipe a low frequency project's whole history. A run is kept when it is in the last X of at least one of its projects, so the shown total can exceed X — the filter modal label is now **"Amount per project"** and its ⓘ popup explains this
- Navigating back to the Overview after clicking a project card resets the filter that the card applied, unless the filter was changed by hand in the meantime
- The page behind an open modal no longer scrolls — Bootstrap locks `<body>`, but the dashboard's scroll container is `<html>`
- Long information popups near the bottom of the window are no longer cut off; they flip above their icon and are clamped to the window
- The Overview bar settings (*projects by Name*, *projects by Tag*, *latest runs*, *total stats*) now rebuild the section navigation, which kept buttons for bars that had been switched off and missed the ones that appeared
- The filter dropdown panels paint their own opaque surface, so the modal rows underneath no longer show through an open dropdown; the search box inside them is sticky, and `--color-text-muted` now passes WCAG AA contrast on the light theme
- Three JavaScript imports that only resolved because the bundler flattens every module into one scope (`filteredAmount`, the `setup_*_in_select` functions and `set_filter_show_current_version`)

### Changed
- The four largest source files were split along their existing seams: `server.py` into `server.py` + `server_models.py` + `server_routes_outputs.py` + `server_routes_logs.py`, `js/eventlisteners.js` into `js/eventlisteners/` (8 modules), `js/filter.js` into `js/filter/` (8 modules) and `css/components.css` into `css/components/` (8 numbered files, path order is cascade order). `from robotframework_dashboard.server import ...` keeps working for the models, the bundled `<script>` and `<style>` are unchanged, and no user-visible behaviour changed
- The `/dev/` documentation now rebuilds the example dashboard from `main` on every deploy, so it is no longer the example of the last release; `/vX.Y.Z/` keeps serving the example committed with that release
- Pushing a release tag no longer triggers a second docs deploy that could only fail, which left a red cross on every release commit
- The filter dropdowns (Filter Profiles, Run Tags, Versions, custom filters and the hidden custom filter pickers in Settings) open above their select when there is not enough room below and are capped to the available space, so opening one near the bottom of the modal no longer adds a scrollbar and makes the page jump

---

## [2.3.0](https://github.com/MarketSquare/robotframework-dashboard/releases/tag/v2.3.0) - 2026-09-22

### Added
Expand Down
Loading