Project

General

Profile

Plugins Directory » Redmine Pinned Issues

Author: K Seraph3000
Website: https://github.com/seraph3000/redmine_pinned_issues
Code repository: https://github.com/seraph3000/redmine_pinned_issues
Registered on: 2026-04-19 (4 months ago)
Current version: 0.4.0
Compatible with: Redmine 7.0.x, 6.1.x, 6.0.x
User ratings:   (0)

Pinning issues

  • Pin/Unpin issues : Pin specific issues to the top of the list or unpin them.
  • Priority display : Pinned issues always appear at the top regardless of the sort order chosen by the user.
  • Expiration periods : Set pin duration with 9 presets (30 minutes, 1/4/8 hours, 1/3 days, 1 week, 1 month, no expiration). Pins are automatically hidden once expired.
  • Smart sort order for pinned issues : Among pinned issues, those with no expiration appear first, followed by those with longer remaining time.
  • Permission control : Grant "Pin issues" permission to specific roles only.
  • Project module : Enable or disable the pinning feature per project.
  • Visual indicators :
    • Pinned issue rows are highlighted with a customizable background color (separate colors for odd/even rows).
    • A pin icon is displayed before the issue title on both the issue list and detail pages.
    • Hovering the icon shows who pinned the issue and how much time remains.
  • Context menu UI : All operations are accessible via right-click context menu with a submenu for expiration selection. No page reloads or modal dialogs — everything happens inline via Ajax.

Note (how expiration is calculated):
Durations such as "1 week" and "1 month" are calculated on a calendar basis (Ruby on Rails).
In particular, "1 month" is not a fixed 30 days but the same day of the next month, so the remaining time varies between 28–31 days depending on when the issue was pinned (e.g., ~31 days if pinned in May, ~28 days in February).
The tooltip displays this actual remaining time as-is.

Important notes

  • Mark comments as important : A star button on each comment toggles its "important" state via Ajax.
  • Highlighted display : Important comments get a colored underline on the header, a tinted background and a left accent border.
  • Dedicated tab : An "Important notes" tab appears on the issue history and filters it down to the marked comments. The tab only shows up when at least one comment is marked.
  • Audit trail : Marking and unmarking is recorded in the issue history with a link to the note.
  • Permission control : Grant "Pin comments as important" permission to specific roles only. No separate project module is required — the permission belongs to the core issue tracking module.

Detailed explanation :
https://note.com/taba_muichi/n/nfeaf50234003?hl=en
https://note.com/taba_muichi/n/n3d1eaec391c9?hl=en

Installation notes

Requirements

  • Redmine 6.0 or later (also tested on 6.1/7.0). Redmine 5.x and earlier are not supported -- the plugin raises an error on load if the Redmine version is below 6.0.0.
  • PostgreSQL 16 (other databases may work but are not officially tested)

Install

Clone into Redmine's plugins directory and run the migration:

   cd /path/to/redmine/plugins
   git clone https://github.com/seraph3000/redmine_pinned_issues.git
   cd /path/to/redmine
   bundle exec rake redmine:plugins:migrate RAILS_ENV=production
Depending on your environment, you may need to recompile assets:

   RAILS_ENV=production bundle exec rake assets:clobber
   RAILS_ENV=production bundle exec rake assets:precompile

For subdirectory deployments (e.g. /redmine), prefix the commands with RAILS_RELATIVE_URL_ROOT=/redmine.
Then restart your web server (e.g. systemctl restart httpd).

Uninstall

Revert the plugin's migrations (this drops the pinned_issues table and deletes all pin data):

   cd /path/to/redmine
   bundle exec rake redmine:plugins:migrate NAME=redmine_pinned_issues VERSION=0 RAILS_ENV=production

Remove the plugin directory:
   rm -rf /path/to/redmine/plugins/redmine_pinned_issues

Recompile assets if needed for your environment:
   RAILS_ENV=production bundle exec rake assets:clobber
   RAILS_ENV=production bundle exec rake assets:precompile

Restart your web server (e.g. systemctl restart httpd).

Post-install setup

  • Administration > Roles and permissions: grant the "Pin issues" permission to the roles that should be able to pin issues.
  • Project settings > Modules: enable "Pin Issues" on each project where the feature should be available.
  • (Optional) Administration > Plugins > Redmine Pinned Issues plugin > Configure: adjust the pinned-row background colors (odd / even).

Recommended cron (daily cleanup of expired pin records)

Expired pins are automatically excluded from the list and sort order, but the underlying DB records remain until cleaned up. A daily cleanup is recommended:

0 3 * * * cd /path/to/redmine && /usr/bin/flock -xn /tmp/redmine_pinned_issues_cleanup.lock -c 'RAILS_ENV=production bundle exec rake redmine:pinned_issues:cleanup'

Changelog

0.4.0 (2026-08-12)

Compatible with Redmine 7.0.x, 6.1.x, 6.0.x.

  • Added the important notes feature. Comments can be marked as important with a star button, are highlighted in the history, and can be filtered through a dedicated "Important notes" tab. Marking and unmarking is recorded in the issue history. Controlled by the new "Pin comments as important" permission.
  • Added three color settings for important notes (header underline, background, left border).

0.3.0 (2026-07-22)

Compatible with Redmine 7.0.x, 6.1.x, 6.0.x.

  • Added optional issue list coloring (Farend fancy theme compatible).

0.2.5 (2026-07-12)

Compatible with Redmine 7.0.x, 6.1.x, 6.0.x.

  • Confirmed compatibility with Redmine 7.0. No code changes required; sort/join patches already use Arel.sql and DB-agnostic quoting.

0.2.4 (2026-06-27)

Compatible with Redmine 6.1.x, 6.0.x.

  • Fixed an issue where the pin/unpin options mistakenly appeared in the context menu on Gantt chart views.
  • Optimized performance by restricting plugin JavaScript, CSS, and JSON data injection to issue-related pages only.

0.2.3 (2026-05-29)

Compatible with Redmine 6.1.x, 6.0.x.

  • Validate plugin color settings (hex only) before inline CSS output,
    fixing a potential stored XSS on the settings screen
  • Add a default pinned icon color to avoid an empty CSS variable
  • Restrict pin actions to visible issues (Issue.visible)
  • Handle concurrent pin toggles gracefully (rescue RecordNotUnique)

0.2.2 (2026-05-23)

Compatible with Redmine 6.1.x, 6.0.x.

  • Added a tooltip on the Pin icon showing who pinned the issue and the remaining time on hover.
  • Documented that expiration periods are calendar-based ("1 month" is not a fixed 30 days).

0.2.1 (2026-05-20)

Compatible with Redmine 6.1.x, 6.0.x.

  • Removed leftover debug CSS class (patch-alive-test) from issue row output.

0.2.0 (2026-04-18)

Compatible with Redmine 6.1.x, 6.0.x.