expert Lightbox
Click an image or a PDF attachment and it opens in a modal, instead of navigating away from the page you were reading. Arrow keys, swipe and edge clicks step through everything else on the page.
This exists because redmine_x_lightbox2 stopped working on Redmine 6 and 7. It had overridden a core attachment view and leaned on the icon-* font classes that Redmine 7 removed. The replacement deliberately owns none of that: no view override, no controller patch, nothing that depends on core’s attachment markup.
What it does
Preview
Images and PDFs, in place
An image opens scaled to fit the viewport; a PDF opens in the browser’s own PDF viewer. Anything else behaves exactly as it did before — the plugin does not interfere with files it cannot preview. Esc or a click on the backdrop closes it, and focus returns to the link you clicked.
PDFs
And PDFs, in the browser's own viewer
A PDF opens in the viewer the browser already has — scrolling, zoom, page thumbnails, print and save all behave as they always do. The edge click zones are deliberately left out over a PDF, because they would sit on top of that viewer’s own toolbar and scrolling; the buttons in the top bar remain the way to step past it.
Gallery
Four ways through the set
Every previewable attachment on the page becomes a gallery in document order. Step through it with the arrow keys, the buttons in the top bar, the click zones at the left and right edge of the picture — invisible until you hover, always visible on touch — or a horizontal swipe. Mostly vertical drags still scroll the page, and Ctrl/Cmd/middle-click still opens the attachment in a new tab.
Everywhere
No per-page allowlist
Issue attachments, journal thumbnails, inline wiki images, the Files and Documents modules, news and forum posts — and any third-party plugin page that links to an attachment, because detection keys only on the shape of attachment URLs rather than on a list of controllers we happened to think of.
Inline images
Long tickets stay readable
A full-size screenshot pasted into an issue, a note or a wiki page can push everything after it off the screen. An optional maximum width and/or height for inline attachment images keeps them in check; a click still opens the full-size picture in the lightbox. Set it globally in the plugin settings, or override it per project in the Image preview tab of the project settings, which anyone allowed to edit the project can reach. Blank means no limit and is the default, so an upgrade changes nothing until you set one. External images are left alone, because the lightbox cannot open them either.
Why this one
- Zero dependencies. Vanilla JavaScript and a native
<dialog>, soEsc, focus trapping and the backdrop come from the browser. No jQuery, no Fancybox, no build step, no CDN request. - No view override and no controller patch. It keys on URL shapes that have been stable across many Redmine majors, not on core’s markup, CSS classes or icon fonts — which is exactly what broke its predecessor.
- Nothing to configure unless you want to. No module to enable, no permissions to grant. The only setting is the optional size limit for inline images, and it starts out blank.
- It degrades to nothing. On a browser without
<dialog>the plugin stays inert and attachment links navigate normally. - The one server endpoint is deliberately narrow. It serves a file inline only if the extension is on a fixed allowlist, sends
X-Content-Type-Options: nosniffwith a type taken from that allowlist rather than the upload’s own metadata, and checks core’sAttachment#visible?— so it grants nothing that the normal download route would not.
Testers wanted
Try it, break it, tell us
These plugins are young and move quickly. The suites run on every Redmine from 5.1 to 7.0, but our own installation is only one setup — we would like to hear from people who run them somewhere else: another mail server, another theme, next to other plugins, or with a workflow we never thought of. Something broken, something missing, something that works but feels wrong: all of it helps.
The bug form asks for the plugin version and your environment; pasting the table from Administration → Information covers the rest. To hear about new versions, watch the repository on GitHub for releases.
Compatibility
- Latest release
- v1.3.0 2026-11-02
- Redmine
- 5.1 · 6.0 · 6.1 · 7.0
- Database
- MariaDB, MySQL, PostgreSQL
- Additional gems
- None
- Migrations
- 1
- Licence
- GPL-2.0-or-later
No gems, no permissions, one optional setting and one small table for the per-project image size. Works on MariaDB, MySQL and PostgreSQL.
Installing
- Download the release archive: redmine_expert_lightbox-1.3.0.zip
- Unpack it into your Redmine's `plugins/` directory:
cd /path/to/redmine unzip redmine_expert_lightbox-1.3.0.zip -d plugins/ - Run the migration:
bundle exec rake redmine:plugins:migrate NAME=redmine_expert_lightbox RAILS_ENV=production - Restart Redmine. The lightbox works straight away — no module to enable, no permission to grant. A size limit for inline images is optional, under *Administration → Plugins → Configure*.
The one migration only creates the table for per-project image size overrides; the lightbox itself stores nothing. If you are replacing redmine_x_lightbox2 or redmine_lightbox2, remove it first — two lightboxes on one page will both try to handle the click.