Plugins Directory » Pulse Plan
|
|
Author: | Jeroen Visser |
|---|---|---|
| Website: | https://github.com/pljeroen/redmine_pulse_plan | |
| Code repository: | https://github.com/pljeroen/redmine_pulse_plan | |
| Registered on: | 2026-07-17 (about 7 hours ago) | |
| Current version: | 0.1.0 | |
| Compatible with: | Redmine 7.0.x, 6.1.x | |
| User ratings: |
Pulse Planner¶
A PMBOK-lite critical-path planner for Redmine 6.1–7.x — part of the Pulse ecosystem. Write tasks, order them by dependency, and let the plugin compute the critical path and a timeline from any start date — all edited drag-and-drop (and fully by keyboard), right on the Issues and Gantt views you already use.
Write-capable. Unlike its read-only sibling redmine_pulse, this plugin mutates native Redmine data — issue start/due dates, issue relations (precedes/follows), status changes, and journal notes. Every write goes through Redmine's own permission checks and is recorded in the native journal audit trail. It makes no outbound network calls: no telemetry, no phone-home, no license gates.





What it does¶
- Plan by dependency. Add tasks inline; precedes/follows relations drive the schedule. Blocking vs. scheduling relations are shown distinctly.
- Critical path + computed timeline. A forward/backward CPM pass from a chosen start date surfaces the zero-float critical chain, honouring your working calendar (non-working weekdays + holidays).
- Drag-and-drop editing over the Issues + Gantt views: drag a bar edge to change duration, drag the bar middle to move it on the calendar, draw a dependency from the connect-dot. Change status and add a note inline.
- Keyboard-operable. Tab to a plan bar, Arrow keys move/resize it (Shift = resize), Enter/Space commits, Escape cancels with no write. Every interactive control carries an ARIA role/label.
- Baselines: plan vs. actual. Capture a named baseline, then see a ghost of the original plan and a signed drift badge on every task that has slipped.
- Resource leveling. A per-assignee load heatmap flags over-booked days; the leveler
proposes date shifts to resolve them (smoothing or leveling mode). Review every proposed move before applying, and see exactly why an over-allocation could not be
resolved. - Pin a task to hold its date. A pinned task is exempt from leveling moves, and a drag or relation change that would push it past its committed date is refused with a clear reason rather than silently rescheduling it.
- Per-project working calendar — configurable hours-per-working-day and a holiday list.
- Bilingual — ships with English and Dutch (nl) localizations; all user-facing text is server-localized.
How it works¶
Hexagonal (ports-and-adapters): a pure-Ruby, stdlib-only domain layer (the CPM engine and working calendar — zero external dependencies) behind ports, with a thin adapter
layer as the sole locus of Redmine I/O. The Gantt/Issues decoration is a framework-free overlay rendered from a server-inlined JSON blob; it adds no new browsable page and no new menu — purely additive to the native views. The write path is POST-only, html/js (Rails CSRF), with no API-format route.
The plugin uses the PulsePlan::* Ruby namespace (distinct from redmine_pulse's Pulse::*), so both Pulse-ecosystem plugins can be installed in the same Redmine
without collisions. Its migrations touch only four plugin-owned tables (pulse_plan_baselines, pulse_plan_baseline_entries, pulse_plan_project_calendars, pulse_plan_pinned_issues) — no native Redmine table is altered.
Installation notes
Requirements¶
- Redmine 6.1.0 or higher (tested through 7.0.x)
- Ruby 3.2+
Installation¶
- Copy the plugin into
plugins/redmine_pulse_planin your Redmine directory. - Precompile the plugin assets (required after every install/upgrade and any overlay JS/CSS change), from the Redmine root:
bin/rails assets:precompile RAILS_ENV=production
then restart your application server. An unprecompiled plugin asset silently 404s and the overlay will not render. - Run the plugin migrations:
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
- Enable the Pulse Planner module per project (Project → Settings → Modules) and grant the relevant permissions (
View pulse plan,Edit issues,Add issues,Add notes,Manage issue relations, and the plugin'sManage plan baselines).
Uninstall is reversible; see the README for the exact steps. Native data (issue dates, relations, journals) is never dropped — only the four plugin-private tables are, and only on an explicit VERSION=0 rollback.
Support¶
This is a solo, best-effort project. Public GitHub issues and pull requests are not actively monitored and there is no support SLA. A focused fix that arrives with a passing test is the most likely to be picked up. Report security problems privately via GitHub's security-advisory flow (see SECURITY.md) — not as a public issue.
License¶
GPL-2.0-only, to match Redmine and the rest of the Pulse ecosystem.
Changelog
0.1.0 (2026-07-17)
Compatible with Redmine 7.0.x, 6.1.x.