Changelog¶
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased¶
4.3.0 - 2026-10-21¶
Added¶
- Each dashboard in the Settings list moves with ↑ and ↓; the nav tabs follow that order.
- The nav refreshes its tabs after a config save or a sync, from
GET /api/nav.
4.2.0 - 2026-10-19¶
Added¶
- A dashboard keeps the issues and PRs closed within its
closedDays(Settings: Closed items), greyed with aclosedpill;is:closedpicks them, and raising the longestclosedDaysstarts a full sync.
4.1.0 - 2026-10-18¶
Added¶
- A CI job carries its branch's open PR labels: its card shows them, and
label:and the label filter match them.
4.0.0 - 2026-10-18¶
Changed¶
has:prreplacesis:has-prfor issues and CI jobs; loading a config rewrites its filters (config version 2), but a filter in a URL or an API call needs the new term.
Fixed¶
- A failed scheduled or manually dispatched run on the default branch shows as a CI job card; GitHub's commit status leaves those runs out.
- Merging a branch removes its failed CI jobs.
- The Unmatched tab leaves out a board's epics, which sit in its epic strip.
- A dashboard whose only items are failed CI jobs stays undimmed in the top bar.
3.0.0 - 2026-10-18¶
Added¶
- Failed CI jobs are board items: one card per job whose newest run on a branch of the global
users failed, with filter terms
is:ci-job,job:andbranch:;is:has-prpicks the jobs whose branch has an open PR. - An Unmatched tab in the top bar lists the open items no dashboard places in a cell or inbox
group, a column each for issues, PRs and CI jobs, narrowed by a filter kept in
?filter=;GET /api/unmatchedserves it. - The config has a
version; loading upgrades an older config, and boards from before CI jobs get a topFailed CIswimlane (is:ci-job). - A dashboard
type,boardorinbox, chosen in Settings; dashboards without one load as boards. - Inbox dashboards list PRs, issues and failed CI jobs in groups, each item in the first group
whose filter it matches; groups can start collapsed.
GET /api/dashboards/:id/inboxserves them.
Changed¶
- The UI is restyled in Source Sans 3 and JetBrains Mono, with white panels, a bar for each item's kind and a split top bar, at 125% scale.
Removed¶
- The board's "N issues match no swimlane or column" warning and the
unplacedcount in the board API.
2.0.0 - 2026-10-16¶
Added¶
- Settings suggest repos after
repo:and users afteruser:,author:andassignee:. - Dashboards with no items in the repos switched on are dimmed in the top bar.
Changed¶
- Global
repos,usersandrefreshMinutesreplace the per-dashboard ones; each dashboard narrows them with an optionalfilter, such asrepo:acme/app user:@me, that may not useother. Settings show the global fields above the dashboards. Old configs migrate on load. - Repo chips sit in the top bar, list the global repos by name and switch each off on every board in this browser.
- The sync status and the Refresh and full resync buttons sit in the top bar on every page.
POST /api/syncwithoutreposyncs in the background and answers202with{ status }, withoutresults; pollGET /api/versionfor progress.
Removed¶
- The
repo=board URL parameter; the top bar's repo chips choose the repos.
Fixed¶
- A sync or a star keeps items from a switched-off repo off the board.
- A GitHub request gives up after 30 seconds instead of hanging page loads and sync.
- A failed epic star stays reported instead of vanishing on the reload.
- Clicking the Repositories, Users or Epic label title in settings no longer clicks the first control under it.
1.0.0 - 2026-10-09¶
Added¶
- Swimlanes and columns pick items with a filter in GitHub search syntax (
label:a|b -is:pr,OR, parens), with terms for blockers, parents, sub-issues, repos and people. Settings checks each filter as you type and suggests terms and label names.
Changed¶
- An item shows in every swimlane and column whose filter it matches, not only the first lane and last column.
- An empty filter matches every item. The term
otherholds for items no swimlane above, or no column to the right, matched:otheralone makes the bottom swimlane or the leftmost column a catch-all, andother label:bbelow alabel:alane takes thebitems that lane did not. - Labels, the epic label among them, match by name, ignoring case.
labels,matchandkindon swimlanes and columns becomefilter; old configs convert on load, a catch-all tootherminus the entriesotherdoes not look at.
Removed¶
- Drag and drop on the board, with
POST /api/moveand every GitHub label write. The board is read-only; the token needs read access only.
0.10.1 - 2026-10-05¶
Fixed¶
is:ci:failedflags a PR whenever its last commit shows GitHub's red ✗, failed optional checks included.
0.10.0 - 2026-10-05¶
Added¶
is:has-prmatches issues an open PR closes, with aPR openpill on their cards.
0.9.1 - 2026-10-04¶
Fixed¶
is:ci:failedcounts every check until one reports as required.is:ci:runningflags a PR while any of its checks runs.
0.9.0 - 2026-10-03¶
Added¶
- The ☆ on an epic tile marks it as in active development; marked epics lead the strip with an amber accent, kept per dashboard in the local database.
- Repo chips get an
all/noneswitch, and the last chip on can be switched off too.
Changed¶
is:ci:failedandis:ci:runningcountcodecov/*checks even when they are optional.- A dashboard's
users(GitHub logins,@mefor the token's account) choose whose issues and pull requests it shows, replacingscope;scopestill loads,mineas["@me"]andallas[].
0.8.0 - 2026-10-03¶
Added¶
- PR cards show a pill for each status that holds: merge conflict, CI failed, CI running and unanswered review comments.
Changed¶
is:ci-not-oksplits intois:ci:failed(a required check failed) andis:ci:running(a required check has not finished); configs usingis:ci-not-okno longer load.
0.7.0 - 2026-10-02¶
Added¶
- PR status labels
is:conflicting,is:ci-not-ok(required checks only) andis:unanswered(unresolved review threads the author has not answered) match like labels; each sync refreshes them for every open PR.
Changed¶
- The config rejects any
is:label other than the PR status labels, and a GitHub label named like a status no longer matches it.
0.6.0 - 2026-10-02¶
Added¶
- A column takes only issues or only pull requests with
"kind": "issue"or"pr".
Changed¶
- A card carrying the labels of several columns sits in the last of them, not the first; swimlanes still take the first match.
- The settings editor sets a swimlane's or column's kind with an
is:issue/is:prchip in its label picker, replacing the select.
0.5.0 - 2026-09-29¶
Added¶
- A swimlane takes only issues or only pull requests with
"kind": "issue"or"pr". - Cards are tinted by type: blocked red, epic violet, pull request sky, issue green.
Fixed¶
POST /api/moverefuses a drop an earlier swimlane or column would capture, instead of editing labels for a card that lands elsewhere.
0.4.0 - 2026-09-29¶
Added¶
- Open pull requests appear on the board with a
PRbadge, and an epic's view includes those linked to it or its issues; upgrading forces a full resync to fetch them.
Changed¶
- The repo filter is a row of chips that switch repos off independently;
repotakes a comma-separated list.
0.3.0 - 2026-09-27¶
Added¶
repofilter on boards that span more than one repository.- Epic tiles carry a link that opens the epic on GitHub.
0.2.0 - 2026-09-26¶
Changed¶
- Selecting an epic also shows the issues it blocks and the issues blocking it, next to its sub-issues.
0.1.1 - 2026-09-26¶
Added¶
- Documentation site at https://landschaft.fancysnake.dev: getting started, configuration,
board rules, API and architecture, published from
mainby CI.
Fixed¶
landschaft startruns from a consumer directory:landschaft buildwrites a self-contained server into./distnext tolandschaft.config.json, andstartserves it from there.
0.1.0 - 2026-09-25¶
- Initial release.