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 (about 2 months ago)
Current version: 0.2.3
Compatible with: Redmine 6.1.x, 6.0.x
User ratings:   (0)

Adds a "pin" feature to Redmine's issue list: important issues can be pinned to the top of the list regardless of the user-chosen sort order. Similar to pinned posts on social platforms, this helps teams keep urgent or high-priority issues visible without manually reshuffling the list or changing due dates.

Features

  • Pin / unpin from the issue list right-click context menu -- no modal dialog, no page reload (Ajax)
  • 9 expiration presets: 30 min / 1 / 4 / 8 hour / 1 / 3 day / 1 week / 1 month / no expiration
  • Pinned rows are highlighted with a customizable background color (separate colors for odd and even rows, configurable from the plugin settings page)
  • A pin icon is displayed before the subject on both the issue list and the issue detail page
  • Hovering over the Pin icon shows a tooltip with who pinned the issue and the remaining time.
  • Smart sort order among pinned issues: no-expiration pins first, then pins with longer remaining time
  • Per-project activation via a project module ("Pin Issues")
  • Role-based permission ("Pin issues")
  • i18n: English, Japanese

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.

Links

Detailed explanation (Japanese): https://note.com/taba_muichi/n/nfeaf50234003

Installation notes

Requirements

  • Redmine 6.0 or later (also tested on 6.1). Redmine 5.x and earlier are not supported -- the plugin raises an error on load if the Redmine version is below 6.0.0.
  • Ruby 3.2 / 3.3
  • Rails 7.2
  • 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.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.