Plugins Directory » Redmine expert Agile
|
|
Author: | Dennis Buehring |
|---|---|---|
| Website: | https://redmine-plugins.expert.de | |
| Code repository: | https://github.com/expertZentrale/redmine_expert_agile | |
| Registered on: | 2026-08-20 (about 2 months ago) | |
| Current version: | 0.9.1 | |
| Compatible with: | Redmine 7.0.x, 6.1.x, 6.0.x, 5.1.x | |
| User ratings: |
Redmine expert Agile¶
Agile boards for Redmine: a Kanban/Scrum board built on Redmine's own query system, story points, sprints with a backlog planner, epics, and charts.
The board is a Redmine query. Every filter, column, grouping and visibility rule you already use on the issue list applies to a board unchanged, and a saved board is a single row in Redmine's queries table — the plugin adds no query schema of its own.
Features¶
- Board — columns from issue statuses, drag & drop that marks every column allowed or blocked by the workflow the moment a card is picked up, swimlanes by project, tracker, status, priority, author, assignee, category, target version or epic (a drop into an assignee, priority, category, target-version or epic lane sets that field, other lanes refuse it), advisory WIP limits, configurable card fields, sub-columns from a shared
Prefix:status naming, and saved boards. - Story points — stored per issue, offered as a configurable value list (modified Fibonacci by default), restrictable to selected trackers, and available as a sortable column and filter on the issue list.
- Sprints — a first-class entity with start and end dates, an open/active/closed lifecycle, and Version-style sharing across a project tree. Redmine versions remain usable for planning alongside sprints. A board can be narrowed to one sprint, or follow whichever sprint is active. Complete sprint moves the open issues to the next sprint, the backlog or a new sprint, closes the sprint and can make the target the active one — in one step. The issue list gains a Sprint filter (including Active sprint) and a Sprint column that sorts, groups and exports.
- Epics — Jira-style epics on top of Redmine's own subtask tree: pick the epic trackers, and an issue belongs to the nearest epic above it. With the optional Epic and Subtasks card fields, cards carry their epic as a coloured badge, a subtask names its story, and a story folds out its subtasks with their progress. Epic swimlanes and an epic planner move stories between epics; every epic shows its progress, and an Epics tab lists them as a tree. No table or custom field of its own, so Redmine's parent filter, the REST API and the Gantt chart see the same data.
- Backlog planner — drag issues into sprints, versions or epics from a dedicated planning view, with the same filters and card fields as the board plus saved backlogs, behind its own project module.
- Charts — burndown, burnup, cumulative flow, velocity and cycle time, in issues, hours or story points.
- Colours — cards coloured by tracker, priority, status, project, assignee or spent time. Any colour can be picked in a colour picker that offers 18 palette shades as swatches, and a card's background tint stays light enough to read on whatever was chosen. Deliberately by what an issue is, never one issue at a time.
- REST API — read and write agile data (story points, sprint assignment), plus full sprint CRUD.
Design notes¶
A few deliberate choices, because they affect correctness rather than taste:
- Board ranks are fractional and computed on the server. A move sends only the dragged card and its two neighbours, and writes one row once the cards around it carry ranks. Re-indexing a whole column in the browser loses concurrent moves and silently reorders cards that are paginated out of view.
- Chart history is reconstructed in a single pass over one journal query and cached, rather than re-scanning every issue's journals once per date.
- No inline JavaScript. Views render markup; data reaches the browser through a JSON island. The board works under a
script-src 'self'content security policy. - No global monkeypatching of
ActiveRecord::BaseorApplicationController.
Requirements¶
- Redmine 5.0 or newer (tested against 5.1, 6.0, 6.1 and 7.0)
- Ruby 3.2+ / MySQL, MariaDB or PostgreSQL
- No additional gems — Chart.js and the Coloris colour picker are vendored with the plugin
Links¶
Licensed under the GPL-2.0-or-later. This is an independent, clean-room implementation and contains no code from any other agile plugin.
Installation notes
Installation¶
- Copy the plugin into your Redmine's
pluginsdirectory:cd /path/to/redmine/plugins git clone https://github.com/expertZentrale/redmine_expert_agile.git
Or unpack a release archive from the Releases page intoplugins/. The archive already contains a top-levelredmine_expert_agile/directory. - Run the plugin migrations:
cd /path/to/redmine bundle exec rake redmine:plugins:migrate NAME=redmine_expert_agile RAILS_ENV=production
- Restart Redmine.
- Enable the expert Agile module per project under Project settings → Modules. Enable expert Agile Backlog as well if you want the backlog planner.
- Grant the permissions your roles need under Administration → Roles and permissions.
No additional gems are required. Chart.js and the Coloris colour picker ship with the plugin, so there is no dependency on any other plugin's assets.
Upgrading¶
Re-run the migration step after replacing the plugin directory, then restart. Migrations are numbered and additive; none is ever edited after release.
Permissions¶
| Module | Permission | Allows |
|---|---|---|
| expert Agile | View agile board | Open the board and the Epics tab, read cards |
| expert Agile | Edit agile board | Drag & drop, create and edit cards |
| expert Agile | Save agile boards | Create private saved boards, charts and backlogs |
| expert Agile | Manage public agile boards | Create and edit public saved boards, charts and backlogs |
| expert Agile | View agile charts | Open the charts page |
| expert Agile | Manage sprints | Create, edit, close and complete sprints |
| expert Agile Backlog | View backlog | Open the backlog planner, filter it, open a saved backlog |
| expert Agile Backlog | Manage backlog | Plan issues into sprints and versions, also the sprint field on the issue form |
Moving a story between epics — on the board or in the planner — sets its parent task, so it also needs Redmine's own Manage subtasks permission.
Saving a backlog uses the two board permissions above, which belong to the expert Agile module. A project that enables expert Agile Backlog on its own can therefore filter its backlog but not save one — enable both modules if saved backlogs are wanted.
Configuration¶
Administration → expert Agile. Every setting ships with a default, so a fresh install is usable immediately. Worth knowing:
- Board item limit (default 500) caps how many issues one board render loads. A board that hits the cap says so rather than looking complete.
- Chart item limit (default 1000) and chart cache duration (default 60 minutes) bound the cost of every chart. A chart over more issues than the limit says so instead of drawing.
- Epic trackers (default: none) switch epics on. Issues of the chosen trackers are epics; leaving the selection empty keeps the feature, its card fields, swimlane, planner view and Epics tab out of sight.
Card colours for trackers, priorities and statuses are managed from the Colors section of that settings page, which links to the screen that assigns them.
Running alongside RedmineUP Agile¶
All classes, tables and routes are prefixed, so both plugins can be installed at the same time. However, both patch Issue, IssueQuery and ProjectsHelper, so enabling both on the same project is not supported. Migrate a project by disabling one module and enabling the other.
Changelog
0.9.1 (2026-10-15)
Compatible with Redmine 7.0.x, 6.1.x, 6.0.x, 5.1.x.
redmine_expert_agile 0.9.1 — 2026-10-14¶
The global board can be opened again, and the menu links to it.
Fixed¶
- The global board was unreachable.
/expert_agile/board, the board across every project a user may see, answered 404 for everyone: the project lookup ran on it although the URL names no project. It now runs only where the URL names a project, so the global board — and the redirect after saving a global board — opens again.
Added¶
- A menu entry for the global board. It sits in the application menu next to Projects, Activity and Issues, for anyone holding View agile board in at least one project.
Upgrade notes¶
No migrations, no new settings and no new gems. Replace the plugin directory and restart.
0.9.0 (2026-10-13)
Compatible with Redmine 7.0.x, 6.1.x, 6.0.x, 5.1.x.
redmine_expert_agile 0.9.0 — 2026-10-13¶
Completing a sprint becomes one step, and the issue list knows the sprint.
Added¶
- Complete a sprint in one step, as in Jira. Complete sprint — in the project's sprint list and in the sprint's lane header in the backlog planner — shows what is done and what is still open, and moves the open issues to the next sprint, back to the backlog, or into a new sprint created on the spot (name counted up, dates following on). It closes the sprint and, if asked, makes the target the active sprint, so a board following the active sprint shows it right away. Every issue moves like a planner move — journaled, under the Manage backlog and Edit issues permissions and the issue's own validation; if a single issue cannot move, nothing is written and the page lists each refusal. Also over the REST API:
POST /projects/:project_id/expert_agile_sprints/:id/complete.json. - Sprint filter and column on the issue list. A Sprint filter — one or more sprints, Active sprint (automatic) resolved each time the list runs, any sprint or none — and a Sprint column that sorts by start date, groups the list by sprint and goes into the CSV export. Saved lists such as "everything in the current sprint", sprint exports and bulk edits become possible. Offered in projects with one of the plugin's modules and on cross-project lists; a sprint the reader may not see is never named.
Fixed¶
- A reopened issue left open work in a closed sprint. A completed sprint keeps the issues done in it; reopening one of them later kept it there. Reopening now takes the issue out of the closed sprint and back to the backlog, recorded in its history.
Upgrade notes¶
No migrations, no new settings and no new gems. Completing a sprint belongs to the existing Manage sprints permission. Replace the plugin directory and restart.
0.8.0 (2026-10-13)
Compatible with Redmine 7.0.x, 6.1.x, 6.0.x, 5.1.x.
redmine_expert_agile 0.8.0 — 2026-10-13¶
Epics, as in Jira, on top of Redmine's own subtask tree.
Added¶
- Epics. Choose the trackers whose issues are epics under Administration → expert Agile → Epics. An issue belongs to the nearest epic above it in the subtask tree, so a story is a subtask of its epic and the story's subtasks belong to it through the story. No new table and no custom field: Redmine's parent filter, the REST API, the Gantt chart and the story point roll-up see the same data.
- Epic card field. With the Epic card field switched on, every card on the board and in the backlog that belongs to an epic carries it as a coloured badge, one colour per epic; a story's subtask also names its story, and the tooltip shows the whole path. Only epics and issues the viewer may see are shown.
- Epics stay off the board by default, as in Jira. Switching off the board option Hide epics on the board brings them back; column counts and totals follow what the board shows.
- Swimlanes by epic. One lane per epic plus a lane without one. Dropping a story into another epic's lane makes it that epic's subtask, under the issue form's rules (the Manage subtasks permission, the issue's own validation) and into the issue history. A story's subtask and an epic itself are refused by name.
- Planning into epics. The backlog planner offers Epics next to Sprints and Versions.
- Epic progress. Epic lanes on the board and in the planner, and the epic's issue page, show a bar with the share done — by story points where the work is estimated, by issue count otherwise. A move refreshes every epic it touched.
- Subtasks card field. A story's card shows "Subtasks done: 2/5" with a thin bar and folds out into the list of subtasks with their status. Moving a subtask redraws its story's card.
- Epics tab. Every open epic of the project as a folding block with its progress, its stories and their subtasks indented beneath; closed epics on request.
Fixed¶
- The backlog planner refreshes the lane a card leaves. Moving a card between two sprints, versions or epics left the source lane's count and story points stale until a reload.
Upgrade notes¶
No migrations and no new gems. One new setting, Epic trackers, defaults to none — epics stay switched off until trackers are chosen. Moving stories between epics needs Redmine's Manage subtasks permission. Replace the plugin directory and restart.
0.7.1 (2026-10-05)
Compatible with Redmine 7.0.x, 6.1.x, 6.0.x, 5.1.x.
redmine_expert_agile 0.7.1 — 2026-10-05¶
Long boards keep their column names in view.
Added¶
- The board's column headers stay in view. On a board taller than the window, the status headers stop at the top edge of the window while you scroll down and stay there until the board's last row has passed, so a long column never loses its name. They follow the board when it is scrolled sideways.
Upgrade notes¶
No migrations and no new settings. Replace the plugin directory and restart.
0.7.0 (2026-10-04)
Compatible with Redmine 7.0.x, 6.1.x, 6.0.x, 5.1.x.
redmine_expert_agile 0.7.0 — 2026-10-02¶
Swimlanes become drop targets.
Added¶
- Dropping a card into another swimlane sets the field the lanes are grouped by — for assignee, priority, category and target version. Into someone's lane hands the card over, into a priority lane raises it, into a version lane plans it, into a category lane triages it. The drop follows the issue form's rules: the right to edit the issue, the fields the workflow makes read-only for the new status, and the issue's own validation, whose message the board shows. Status change and field are saved together or not at all.
Fixed¶
- A drop into another swimlane drew the card in a lane the database never put it in. The status change was saved and the lane ignored, so the board looked different after a reload. Lanes that may not take a card (project, tracker, status, author) are now marked blocked while it is dragged, and the card snaps back from them without changing anything. The server refuses such a move as well, status change included.
- Lane totals went stale after a move. A move now refreshes the totals of every lane and puts the card into the lane it belongs to, also when the move changed the lane on the side (a status change on a board grouped by status, claiming a card on a board grouped by assignee).
Upgrade notes¶
No migrations and no new settings. Replace the plugin directory and restart.
0.6.1 (2026-10-01)
Compatible with Redmine 7.0.x, 6.1.x, 6.0.x, 5.1.x.
redmine_expert_agile 0.6.1 — 2026-10-01¶
A bugfix release. Please update if you use story points or sprints.
Fixed¶
- Creating an issue with story points or a sprint failed. As soon as the new-issue form shows the story points or the sprint field, it sends them along, even when left empty, and saving then failed with "Issue cannot be blank". Creating issues with
expert_agile_data_attributesthrough the REST API (POST /issues.json) failed the same way. Both work again; the rule that a sprint must belong to the issue's project still applies.
Upgrade notes¶
No migrations and no new settings. Replace the plugin directory and restart.
0.6.0 (2026-09-28)
Compatible with Redmine 7.0.x, 6.1.x, 6.0.x, 5.1.x.
redmine_expert_agile 0.6.0 — 2026-09-28¶
The board now shows where a card may go before it is dropped, and a card no longer ends up drawn in a place it is not stored.
Added¶
- Allowed and blocked columns while dragging. Picking a card up marks every column green where the workflow lets that card go and striped where it does not. The answer is per card — tracker, current status, the user's roles, author- and assignee-only transitions (including a group the user belongs to), open subtasks and blocking issues all count — and it comes from the same check the server enforces the move with, so a column marked allowed is never refused for workflow reasons. A blocked column does not accept the drop. Cards the user may not edit at all are not offered for dragging.
Fixed¶
- A cancelled drag left the card in the wrong column. Pressing Escape or letting go outside the board left the card wherever the pointer last was, with no request sent, until the next reload. It now goes back to where it was picked up.
- A status change another plugin undid was reported as saved, and the card jumped back on the next reload. The move is now refused with a message naming both statuses.
- Boards grouped into swimlanes by % done, a date or the private flag answered with an error. Swimlanes are now offered only for project, tracker, status, priority, author, assignee, category and target version.
- Swimlanes silently disappeared when no issue on the board had a value for the chosen field, so the board looked ungrouped. It now shows the single "(none)" lane.
Upgrade notes¶
No migrations. Replace the plugin directory and restart.
A board saved with swimlanes by % done, start or due date, created, updated or closed date, or the private flag now opens without swimlanes. Pick one of the remaining fields and save it again if you want lanes.
0.5.5 (2026-09-27)
Compatible with Redmine 7.0.x, 6.1.x, 6.0.x, 5.1.x.
redmine_expert_agile 0.5.5 — 2026-09-27¶
A security release that tightens who may plan issues into sprints. Please read the upgrade notes: roles that set sprints on the issue form may need a permission they did not need before.
Fixed¶
- Planning an issue into a sprint now needs the planning permission everywhere. The backlog planner already required Manage backlog. The sprint field on the issue form, bulk edit, the issue REST API and the agile data endpoint accepted a sprint from anyone who may edit the issue. They now require the same permission, and the issue form only shows the sprint field to users who have it.
- An open issue could be planned into a closed sprint, which changed that sprint's burndown and velocity after the fact. Only open or active sprints are accepted now.
- Deleting a shared sprint silently removed issues of other projects from it. A sprint that issues of other projects are planned into can no longer be deleted, just as Redmine refuses to delete a version that is still in use.
- The velocity and cycle time charts loaded every visible issue. They are now limited like the other charts (setting Chart item limit).
Upgrade notes¶
No migrations. Replace the plugin directory and restart.
After the upgrade, only roles with Manage backlog (module expert Agile Backlog) can set or change an issue's sprint. That applies on the issue form, in bulk edit, through the REST API and in the backlog planner. If some of your roles planned sprints through the issue form without that permission, grant it to them under Administration → Roles and permissions. Story points are not affected.
Very large velocity or cycle time charts that exceeded Chart item limit now show the "too many items" message instead of drawing. Narrow their filters, or raise the limit in the plugin settings.
0.5.4 (2026-09-27)
Compatible with Redmine 7.0.x, 6.1.x, 6.0.x, 5.1.x.
redmine_expert_agile 0.5.4 — 2026-09-27¶
A security release, following an audit of the plugin for more of the problems fixed in 0.5.3. Upgrading is recommended.
Fixed¶
- The REST agile data endpoint let a user who may only add notes change story points and sprints.
PUT /issues/:id/expert_agile_dataskipped the permission check, and it worked even with the agile module disabled. It now needs Edit agile board in the issue's project and the same right to change these fields as the issue form. A sprint change made through it now appears in the issue history. Reading the data (GET) now needs View agile board. - A saved chart of another user could be opened by its id. Private and role-restricted charts opened with their name, filters and date range. Charts now follow the same visibility rules as boards and backlogs.
- Anyone allowed to manage public views in one project could publish a global board, chart or backlog. A global view is listed in every project, so publishing one is now reserved to administrators, as in Redmine itself.
- A single chart request could compute millions of data points. The chart's date range is now limited to three years.
- An issue moved to another project kept a sprint the new project cannot use. The issue was invisible in that sprint's backlog and prevented the sprint from being closed. The sprint is now removed when the issue moves, as Redmine does with the target version, and the history records it.
- Sprints of archived projects were still offered and accepted. They no longer are, as with versions in Redmine.
- Smaller fixes: a card's position on the board is only computed from issues the user can see,
%and_in the backlog search are no longer wildcards, too large story point values give a validation error instead of a server error, and sprint names in notification mails are shown correctly.
Upgrade notes¶
No migrations. Replace the plugin directory and restart.
REST clients that write agile data (PUT /issues/:id/expert_agile_data) now need a user whose role has Edit agile board and Edit issues in the issue's project, and the agile module must be enabled there. Clients that only read it need View agile board. Check the roles of any API users before upgrading.
0.5.3 (2026-09-27)
Compatible with Redmine 7.0.x, 6.1.x, 6.0.x, 5.1.x.
redmine_expert_agile 0.5.3 — 2026-09-27¶
A security release. All five fixes were reported and contributed by idevchris. Upgrading is recommended.
Fixed¶
- Any sprint of any project could be put on an issue, and its name then read from the issue history. The issue form, bulk edit and the issue REST API accepted any sprint id. An issue can now only be planned into a sprint of its own project or one shared with it. The history names a sprint only if the reader could see it anyway, and this also applies to history written before this fix.
- The backlog planner let users re-plan issues they were not allowed to change. Planning rights in one project were enough to move issues of other projects out of their sprint or version, and adding notes was enough to change the field. A planning move now needs the planning permission in the issue's own project and the same right to change the sprint or target version that the issue form requires, including read-only fields from the workflow.
- Moving a card on the board could change the status of issues the user was not allowed to edit. A role that may only add issues and notes could close any visible issue by dragging it. A status change on the board now needs the same right as in the issue form. "Assign to me when moving a card" also respects that right and a read-only assignee, and it no longer claims a card that was only reordered within its column.
- Any sprint manager could share a sprint with every project in the instance. Sharing now follows Redmine's rules for versions: "With all projects" only for administrators, and the project tree or hierarchy only for users who manage sprints in the root project.
- Story point totals counted issues the reader could not see. The total on a parent issue, and the sprint totals in the REST API, now count only issues the reader may see, as Redmine does for estimated time.
Upgrade notes¶
No migrations. Replace the plugin directory and restart.
Three of these fixes tighten who may do what, so some users may notice a refusal where a move used to go through:
- Changing an issue's status on the board, or its sprint or target version in the backlog planner, now needs the same right as the issue form: Edit issues, or Edit own issues for the user's own issues. Changing the sprint is the exception and needs Edit issues, as the sprint field on the issue form already did. Adding notes alone is no longer enough for any of these.
- Planning an issue in the backlog needs the planning permission in the issue's own project, not only in the project whose backlog is open.
- Only administrators can share a sprint with all projects. Sprints that are already shared more widely than the new rules allow stay as they are. An administrator should review them under each project's Sprints settings.
0.5.2 (2026-09-24)
Compatible with Redmine 7.0.x, 6.1.x, 6.0.x, 5.1.x.
redmine_expert_agile 0.5.2 — 2026-09-24¶
Fixed¶
- On a parent project's board, moving a subproject card showed only that subproject's counts. With swimlanes by project, moving a card inside a subproject's lane changed the column headers to that lane's numbers, and a move in another lane changed them back to the total. The move rebuilt the board for the card's own project instead of the board it was dragged on, and in doing so also replaced the board kept in the session. The column headers now always show the board you are looking at, and moving a card no longer changes the board's saved state. Permissions are still checked on the card's own project, and the board a move reports on must be one the user is allowed to open.
Upgrade notes¶
No migrations. Replace the plugin directory and restart.
The board script changed, so users with the board open should reload the page once after the upgrade. Until they do, their moves behave as in 0.5.1.
0.5.1 (2026-09-24)
Compatible with Redmine 7.0.x, 6.1.x, 6.0.x, 5.1.x.
redmine_expert_agile 0.5.1 — 2026-09-24¶
Fixed¶
- After a card was moved to another column, the column counts showed the board as it was one move earlier. The move itself was saved correctly, but the numbers in the column headers — card count, estimated hours, story points and the WIP-limit warning — were read before the save. So a column could look inside its WIP limit while it was already over it. They now reflect the move just made. Thanks to idevchris for the report and the fix.
- Cached charts could be shown to the wrong viewer. Charts are cached for a while (60 minutes by default) and the cache is shared, but the cache key did not cover everything a chart depends on. A German viewer could get the English chart someone else had just loaded, and a renamed status kept its old name in the cumulative flow until the cache expired. Two viewers who could see different issues, or who worked in different time zones, could get each other's chart. The cache now tells apart the language, the viewer's date and time zone, exactly which issues the viewer may see, the chart settings and the status names.
Upgrade notes¶
No migrations. Replace the plugin directory and restart.
Charts cached by 0.5.0 are simply not reused: they expire on their own within the cache duration.
0.5.0 (2026-09-24)
Compatible with Redmine 7.0.x, 6.1.x, 6.0.x, 5.1.x.
redmine_expert_agile 0.5.0 — 2026-09-23¶
Changed¶
- Card colours can be any colour. The card colour screen now has a proper colour picker (Coloris, shipped with the plugin): a colour area, a hue slider and a hex field, with the plugin's 18 palette shades offered as swatches and a No color button. Before, a colour could only be one of those 18 shades. A card shows its colour as the left border and a pale tint of it as the background, and the tint stays light enough to read the card's text on whatever was picked. Column headers, swimlanes and backlog lanes follow the same colours. A value that is not a colour is refused by name and keeps the old colour, while the rest of the form is still saved.
Upgrade notes¶
Run the plugin migrations: bundle exec rake redmine:plugins:migrate NAME=redmine_expert_agile RAILS_ENV=production. Migration 005 converts every stored card colour from its palette name to the matching hex value, so boards look the same after the upgrade. Rolling back maps colours that are still palette shades back to their names and removes any other colours.
Scripts or console snippets that set a colour by name (tracker.color = 'blue') must now pass a hex value such as #3d7ec4. There is no REST endpoint for colours, so API clients are unaffected.
0.4.0 (2026-09-23)
Compatible with Redmine 7.0.x, 6.1.x, 6.0.x, 5.1.x.
redmine_expert_agile 0.4.0 — 2026-09-23¶
Added¶
- Sprint boards. A board can now be narrowed to one sprint, from a new Sprint selector in its options panel or with
sprint_id=<id>in the board URL. Active sprint (sprint_id=active) follows whichever sprint is running, so a saved sprint board does not have to be re-pointed when the next iteration starts. Columns, counts and story-point totals then cover only that sprint's issues. The option was already accepted and saved before, but it never actually narrowed the board. Only sprints the project may plan into are accepted, closed ones included so a finished sprint can be reviewed. Any other id, or Active sprint while none is running, shows an empty board rather than every issue.
Upgrade notes¶
No migrations. Replace the plugin directory and restart.
A saved board without a sprint still shows every issue its filters match. A board that was saved while a sprint_id was in its URL already stored that sprint, and from this release on it shows only that sprint. Clear the Sprint selector and save it again if that was not intended.
0.3.2 (2026-08-28)
Compatible with Redmine 7.0.x, 6.1.x, 6.0.x, 5.1.x.
redmine_expert_agile 0.3.2 — 2026-08-28¶
Fixed¶
- A card from a subproject could not be moved on the parent project's board, and said only "the move could not be saved". A board is not one project: a parent project's board carries its subprojects' issues and the global board carries everything, while the permission to move a card is checked where that card lives. The board decided draggability once, from the project it was being shown in, so subproject cards were offered for dragging and bounced straight back. A subproject that has not enabled the agile module refuses even an administrator, because Redmine checks the module before it checks who is asking. Each card now says for itself whether it may be moved, and a refusal names the project to go and look at. The backlog planner is fixed with it.
- "The move could not be saved" was the answer to five different questions. That sentence is the board's fallback for an answer it cannot read, and Redmine answers everything it refuses with an empty body for every format but HTML — so a missing
Edit agile boardpermission, a session that had run out while the board sat open, a page whose CSRF token no longer matched, a card that had been deleted, and any unexpected server error all reached the user as the same sentence, none of them as the reason. Each of those now answers in the board's own shape and says which one it is; anything unforeseen is logged in full rather than left to Rails' HTML error page. A move whose saved answer the board then failed to display no longer puts the card back as though nothing had been written, and a saved board deleted while the page naming it was still open no longer sinks the move. The backlog planner had all of this too and is fixed with it. - Editing a saved board could only rename it. The edit form wrote the board's configuration out as hidden fields taken from the stored record, so the only things it could actually change were the name and the visibility — the filters, card fields, swimlanes, colouring, status columns and WIP limits went in and came back out untouched. The way in made that invisible: the board's Edit button was a plain link, so everything just applied in the options panel was dropped on the way there, and saving wrote the old configuration straight back over it. The form now renders the board's own options panel, so a saved board is edited with the controls it was created with, and Edit carries the panel along, so it opens the board as it is on screen rather than as it was last saved. The same applies to a saved backlog.
Upgrade notes¶
No migrations. Replace the plugin directory and restart.
If cards cannot be moved, check two things in the project the card belongs to — not the one whose board is on screen: that its agile module is enabled, and that the role carries Edit agile board. A subproject missing the module refuses everyone, administrators included.
Saved boards and backlogs are unaffected — nothing about how they are stored changed, only what the edit screen lets you do with them.
0.3.1 (2026-08-27)
Compatible with Redmine 7.0.x, 6.1.x, 6.0.x, 5.1.x.
redmine_expert_agile 0.3.1 — 2026-08-27¶
Changed¶
- A move the workflow refuses now says which transition it refused, and what is open instead. The board said "the workflow does not allow this status change", which leaves a user guessing whether they dropped the card in the wrong column, lack a permission, or hit a rule someone set deliberately — and leaves an administrator with nowhere to start looking, since a workflow is written per tracker, per role and per status pair and the message named none of them. It now names the tracker and both statuses, and lists the statuses that are open from where the card sits. Administrators also get a link into that tracker's workflow; nobody else is offered it, since nobody else can change one or open that page.
Upgrade notes¶
No migrations. Replace the plugin directory and restart.
The message is built by the board's own script, so a browser holding the previous one in cache keeps the old wording until it reloads the file.
Note when trying it as an administrator: Redmine measures an administrator against every role at once, so a transition counts as allowed if any role has it. To see the everyday case — allowed for one colleague, refused for another — try it as a user with a single role.
0.3.0 (2026-08-27)
Compatible with Redmine 7.0.x, 6.1.x, 6.0.x, 5.1.x.
redmine_expert_agile 0.3.0 — 2026-08-27¶
Removed¶
- Cards can no longer be coloured one issue at a time. A board colours by what an issue is — its tracker, status, priority, project, assignee, or how its spent time compares to its estimate — and a colour set on a single issue is a note in a place nobody looks for one. The colour basis Issue is gone from the settings, the Issue tab from the card colour screen, and the colour field from the issue form. That tab was also the one screen here that could not survive a real installation: it listed every issue in the instance, each with the full palette.
Added¶
- The current colour is spelled out beside the palette, as a swatch with the colour's name and its hex code, and it follows what you click rather than what was last saved.
Fixed¶
- The colour picker showed no colours. 0.2.3 replaced the colour dropdowns with swatches, but neither screen that shows them loads the plugin's stylesheet — it is pulled in by the board, the backlog and the charts, and the card colour screen is none of those. Without it the swatches were empty elements of no size and the radio buttons behind them were never hidden, so what was left was a row of radio buttons whose colours existed only in a hover title. The screen now loads the stylesheet, and each swatch carries its own colour, size and border inline, so it is a visible colour even on a page that fails to load a stylesheet at all.
- On 0.2.3, opening an issue raised an error wherever boards coloured by issue. The colour field on the issue form was drawn by a plugin helper that Redmine's own issues controller never had. Fixed first, then removed with the rest of per-issue colouring.
Upgrade notes¶
One migration, which deletes the rows that held per-issue colours. Nothing else reads or writes them once this version is installed, and no other colour is touched:
bundle exec rake redmine:plugins:migrate NAME=redmine_expert_agile RAILS_ENV=production
Anyone running 0.2.3 should take this release: there the card colour screen cannot be used at all, and an issue form raises where boards colour by issue.
Colour settings pointing at Issue fall back to no colouring, since that basis no longer exists. Colours assigned to trackers, priorities, statuses and projects are untouched.
Both fixes are in the plugin's assets, so a browser holding the previous stylesheet in cache will keep the old behaviour until it reloads the file.
0.2.3 (2026-08-26)
Compatible with Redmine 7.0.x, 6.1.x, 6.0.x, 5.1.x.
redmine_expert_agile 0.2.3 — 2026-08-26¶
Changed¶
- Card colours are picked from the palette itself instead of from a list of colour names. Both places that assign one — the administration screen and the colour field on an issue — offered a dropdown reading "Green", "Light green", "Turquoise", so the one thing you need to see while choosing was the one thing not shown. Both now show the palette as the colours themselves, with the current one marked and a slashed swatch to clear it. They are radio buttons underneath, so the keyboard works as before.
- The palette has grown from 9 colours to 18, ordered by hue so related shades sit together. The nine that existed keep their names and values, and anything already coloured keeps its colour.
- The plugin has one entry in the administration menu, named after itself. Its settings were reachable only through Administration → Plugins → Configure, while the one thing the plugin put in the administration menu was the card colour screen, listed among Redmine's own areas under a name that said nothing about which plugin it belongs to. There is now a single expert Agile entry leading to the settings, and the card colour screen is reached from the colour section of those settings.
Fixed¶
- The plugin's administration entry had no icon on Redmine 6 and newer. It asked for an icon from the plugin's own icon sprite, which this plugin never shipped — and an icon requested that way is not looked up in Redmine's core set, so nothing was drawn. The plugin now ships a sprite.
Upgrade notes¶
No migrations. Replace the plugin directory and restart.
Two things moved. The settings are now under Administration → expert Agile instead of Administration → Plugins → Configure, and the card colour screen is reached from the Colors section of that page rather than from its own entry in the administration menu; its address is unchanged, so a bookmark still works.
One visible change without a setting behind it: a board that colours by assignee derives the colour from the palette, so those cards change colour now that the palette has grown. Nothing is stored for them — the assignment was never meaningful, only stable.
0.2.2 (2026-08-26)
Compatible with Redmine 7.0.x, 6.1.x, 6.0.x, 5.1.x.
redmine_expert_agile 0.2.2 — 2026-08-26¶
Fixed¶
- A move the workflow refused was still shown as done. Dragging a card to a column the workflow does not allow reported the refusal — and then left the card lying in the target column, as though the board had accepted the move it had just called impossible. Only a reload put the card back, since nothing was ever written. The card now returns to the exact position it was picked up from, as it does for a move refused for any other reason. Whether a move is refused at all depends on the workflow of the user's role, so the same drag can be fine for one user and refused for another.
- Any failed move reported a refused status change. The message shown when a request never came back — a dropped connection, a server error, a response that was not the expected answer — was the workflow one on the board and "this sprint or version is not available" in the backlog planner, neither of which had anything to do with what actually went wrong. Those two remain what the server sends when it really does refuse a move; a request that got no answer now says so.
Upgrade notes¶
No migrations. Replace the plugin directory and restart.
Both fixes are in the board's own JavaScript, so a browser holding the previous version in cache will keep the old behaviour until it reloads the file.
0.2.1 (2026-08-20)
Compatible with Redmine 7.0.x, 6.1.x, 6.0.x, 5.1.x.