Linear Issue Age Badge
Free to download on every platform. Comes pre-installed on BotFone, BotPad and BotFlip — with extra free apps included.
About this app
WHAT IT DOES
This userscript adds visual age indicators to Linear issues, helping you quickly identify stale or aging tasks at a glance. It reads the creation date of each issue from Linear's issue lists, boards, and individual issue views, calculates the age in days, and displays a color-coded badge next to the issue title. The badge shows the exact number of days since creation, with colors that change based on configurable age thresholds: new (0-2 days, green), young (3-5 days, yellow), mid (6-10 days, orange), old (11-20 days, red), and stale (21+ days, dark red). Hover over any badge to see a tooltip with additional details including issue identifier, status, and assignee. The script also offers optional background highlighting for even greater visibility.
WHERE IT RUNS
The script activates on all Linear app pages including project views (linear.app/project/*), team boards, backlog views, inbox, and individual issue pages. It works seamlessly across Linear's dynamic interface, automatically detecting issues as they load or scroll into view.
HOW TO USE
After installation, navigate to any Linear project or issue list. The script automatically scans visible issues, calculates their age, and adds color-coded badges. Use the panel to customize age thresholds and colors - adjust the min/max days for each age category and pick your preferred colors. Toggle between left and right badge positions, enable or disable background highlighting, exclude done or canceled issues, and control whether tooltips appear on hover. Click "Refresh Badges" to reapply after making changes or "Reset Rules" to restore default settings. The "Copy Issue Ages" button exports a list of all issues and their ages to your clipboard.
THE ACTUAL REASON IT WORKS
Unlike issue tracking tools that require API access or server-side processing, this script performs direct DOM scraping optimized for Linear's React-based interface. It uses a cascade of selector strategies targeting data-testid attributes, component class names, and structural heuristics unique to Linear's UI. For date extraction, the script combines multiple parsing approaches: it checks for explicit time elements, parses ISO date strings, extracts relative time references like "X days ago" from text content, and even detects date patterns in surrounding text. The age calculation uses real-time comparison with the current date. Badges are injected into the DOM without breaking Linear's React event handlers by targeting specific container elements and using DOM insertion methods that preserve existing component state.
THE PANEL
The panel is fully draggable by its header and remembers its position across page loads using GM_setValue. It collapses to a small icon when minimized, preserving screen space. Press Escape or click the × button to close the panel. The panel includes an age rules editor where you can add, remove, or modify age thresholds with number inputs and color pickers. A live preview circle shows each rule's color. The panel also provides toggle switches for badge position, excluding done issues, background highlighting, and tooltips, plus action buttons for refreshing and copying data.
PLEASE NOTE
This userscript requires the free BotGentz extension to run. The script reads only issue data visible on the current page - it does not load additional items beyond what is rendered in the viewport. For large boards, ensure all issues are loaded by scrolling before relying on the badges. Linear periodically updates its interface, which may affect issue detection; we actively maintain the script for compatibility. The script does not send any data to external servers - all processing occurs locally in your browser. Age calculations are based on the creation date as displayed in Linear; issues with missing or malformed dates will not display a badge.