Project

General

Profile

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:   (0)

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

  1. Copy the plugin into plugins/redmine_pulse_plan in your Redmine directory.
  2. 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.
  3. Run the plugin migrations:
    bundle exec rake redmine:plugins:migrate RAILS_ENV=production
  4. 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's Manage 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.