A Redmine plugin that enables quick access to Redmine objects and macros via trigger characters, contextual autocomplete, and an inline selection menu in any text field.
-
>>— Smart Linker: A cascading popover to build links to any internal objects without knowing the syntax:-
Hierarchical Drill-Down: Seamlessly drill down from projects/subprojects
$\rightarrow$ sections (Issues, Wiki, News, Files, etc.)$\rightarrow$ target items or wiki anchors. - Wiki, News, Documents & Files Integration: Browse, search, and link wiki headings/anchors, news articles, documents, and project files with automatic, native Redmine/Markdown syntax formatting.
-
Tab-Triggered Link Editing: Place caret cursor on any link (Markdown, Textile, Double Brackets, raw attachments/issues) and press
Tabto instantly reopen the Smart Linker cascaded at that exact item! -
Third-Party Addon Support: Automatically scrapes active Redmine
#main-menulinks on load to dynamically register and link third-party tabs (like DMSF, Questions, Checklists, etc.) in the subpages menu.
-
Hierarchical Drill-Down: Seamlessly drill down from projects/subprojects
-
{{— Macro Autocomplete: Type{{to get a dropdown of all available Redmine macros with descriptions and a full detail preview panel. -
@— Instant Mention Dropdown: Shows up immediately after@(no minimum character required) for extremely fast user tagging.
All features work in every wiki text area: wiki pages, issue descriptions, issue notes, journal edits, news comments, forum messages, and project/document descriptions.
- Redmine 5.0 or higher
Important
The plugin directory MUST be named redmine_subtrigger for the hook to load correctly.
-
Clone into your plugins directory:
cd /path/to/redmine/plugins git clone https://github.com/subversive-tools/redmine_subtrigger.git redmine_subtrigger -
Restart Redmine (no migrations required).
Type >> after a space or at the start of a line. An ultra-compact multi-column panel opens, showing one active navigation column at a time (width 280px) and following your cursor.
You can either navigate options visually (using arrow keys or your mouse cursor) or type text to filter options in real-time and press Tab/Enter to autocomplete and drill down.
- ArrowUp / ArrowDown: Navigate through list items in the active column.
- Tab / Enter / ArrowRight (
→): Expand the highlighted intermediate item (project or subpage branch), appending a>delimiter (e.g.>>myproject>Tickets>) and cascading to the next adjacent column. - Escape (
Esc) / ArrowLeft (←) / Shift+Tab: Backtrack one column level to the left, safely reverting the path and restoring the highlighted parent selection without closing the panel.
- Wiki Anchors: Typing
#after a Wiki page name or highlighting a page in Column 3 and pressingTabtriggers autocomplete for the page's headings. - News, Documents, Files etc: Integrates project news (with comment counts), documents (crawled dynamically), and files (via JSON API) for instant lookup and linking.
The Smart Linker dynamically crawls the #main-menu navigation on load. Any third-party Redmine addon tab (e.g., DMSF, Questions, Checklists, etc.) will automatically appear as an option in the subpage list and can be searched and linked directly.
If the caret is inside any Markdown link, Textile link, double-bracket wiki link ([[Page]]), attachment shorthand (attachment:file.ext), or issue shorthand (#123 or project#123), pressing Tab will trigger the Smart Linker.
Type {{ anywhere in a wiki text area. A dropdown appears listing all available macros with a short description. Use arrow keys to navigate, Tab or Enter to insert.
The detail panel below the list shows the full macro description for the currently selected entry.
Type @ at the start of a word. The member dropdown opens immediately (unlike Redmine's default which requires at least one character). Type to filter; only the first 10 members are shown.
Administrators can configure the plugin under Administration -> Plugins -> Subtrigger (Configure):
- Toggle Features: Independently enable/disable macro autocomplete (
{{), mention autocomplete patch (@), or the Smart Linker (>>). - Custom Trigger: Customize the trigger characters for the Smart Linker (default is
>>, but can be set to any other key).
The plugin injects a single <style> and <script> block into every Redmine page via a ViewListener hook. No external dependencies or bloated JavaScript frameworks. All assets are read from disk on each request, making browser reload sufficient after updating plugin files.
The project list is prefetched 2 seconds after page load so the Smart Linker panel opens instantly.
Contributions are welcome — please fork the repository and open a Pull Request.
- Fork it
- Create your feature branch (
git checkout -b feature/my-feature) - Commit your changes
- Push to the branch
- Open a Pull Request
MIT License — Copyright (c) 2026 Stefan Mischke