Critique your plugin #2 — Obsidian October 2024
Based on Obsidian's video on YouTube. If you like this content, support the original creators by watching, liking and subscribing to their content.
Timeline View plots notes along a timeline using a selected frontmatter property, with filtering and grouping similar in spirit to Obsidian’s graph view.
Briefing
Timeline View for Obsidian turns notes into a navigable timeline by plotting them according to the value of a chosen frontmatter property. It’s built to feel native—matching familiar navigation controls and configuration patterns from Obsidian’s core graph view—while keeping the scope focused on one job: presenting notes along a time axis. That combination makes it promising for anyone who wants quick visual browsing of dated notes, release logs, or project milestones.
In day-to-day use, the plugin’s biggest practical weakness shows up on high-density displays and trackpads. On a MacBook Pro Retina display, the timeline rendering looks blurry because the plugin draws its content to a fixed-size HTML canvas that doesn’t scale to the screen’s pixel density. Input handling also appears incomplete: two-finger scrolling on a Magic Trackpad barely advances the timeline, and horizontal scrolling doesn’t work unless the user holds Shift. Small UI inconsistencies add friction too—missing horizontal padding in the navigation bar and hover effects that don’t match native Obsidian buttons.
The critique then shifts from user experience to implementation details. Using Obsidian developer tools, the canvas issue is traced to a canvas element rendered at a fixed pixel size (effectively using “virtual pixels” that don’t match the display). A CSS scaling approach could correct the blur, but it would require changes in how the canvas is created and scaled. Navigation alignment can be improved by adjusting CSS positioning for the timeline controls container, and tooltip placement can be influenced via a data attribute that the tooltip library reads.
Code review highlights mostly solid plugin lifecycle hygiene inside the main onload function: settings tab registration, ribbon icon and command registration, custom view registration, and event wiring are generally structured in ways that should load reliably. One notable bug risk appears in the editor menu event handler—an event reference returned from an on() call isn’t properly unloaded, which could leave a lingering listener after the plugin is disabled. Performance is also checked using Obsidian’s “notify if startup takes longer than expected” feature; the timeline view reports loading in about 17 milliseconds in the reviewer’s test.
A deeper design point centers on Obsidian’s navigation flag for custom views. Timeline View’s leaf is treated as not eligible for navigation when users click notes, which causes clicks to open new tabs instead of replacing the existing timeline view. The critique argues that, when a view belongs in the main workspace split, setting navigation to true is usually the more consistent convention—especially because it affects how workspace link previews, status bar updates, and file-open events propagate.
Finally, a demo with Obsidian release notes shows the plugin’s potential: notes grouped and plotted by release date and version. The demo initially fails because the “published” frontmatter value is stored as a string, so the plugin’s property-to-number conversion needs to parse dates. Converting valid date strings into Unix timestamps fixes the timeline distribution. Notes missing the chosen property become outliers, and the critique suggests ignoring such notes would be a valuable future feature. After cleanup, the timeline zooms to fit cleanly and groups releases by major version (1.5, 1.6, 1.7), demonstrating the plugin’s core value when its data mapping is correct.
Cornell Notes
Timeline View for Obsidian creates a dedicated timeline view that plots notes along a time axis using the value of a selected frontmatter property. It aims to match Obsidian’s native UI patterns (navigation controls and graph-view-like configuration) while focusing on one main task: timeline presentation and filtering/grouping. The main usability problems are rendering blur on Retina displays (canvas scaling mismatch), weak trackpad scrolling support, and a few UI alignment/hover inconsistencies. Code review finds mostly sound lifecycle structure and good startup performance, but flags a likely event-unload bug and a navigation-flag choice that makes note clicks open new tabs instead of reusing the timeline leaf. A release-notes demo succeeds after converting date strings to Unix timestamps and removing notes missing the required property.
Why does Timeline View look blurry on Retina displays, and what does the fix require?
What input-handling issues affect navigation on a Magic Trackpad?
How does the plugin’s navigation flag change what happens when users click notes?
What lifecycle/performance checks were highlighted in the code review?
What event-unload bug risk was identified?
How was the release-notes demo fixed so dates plotted correctly?
Review Questions
- What specific canvas sizing mismatch causes the Retina blur, and why can’t it be solved purely with CSS tweaks outside the plugin code?
- How does Obsidian’s navigation eligibility logic (pinned state + navigation flag) determine whether clicking a note replaces the current leaf or opens a new tab?
- In the release-notes demo, what data transformation was required to convert a datetime string into a timeline-plottable numeric value, and what happens to notes missing the chosen property?
Key Points
- 1
Timeline View plots notes along a timeline using a selected frontmatter property, with filtering and grouping similar in spirit to Obsidian’s graph view.
- 2
Retina blur comes from canvas rendering at a fixed resolution that doesn’t match device pixel density; correcting it requires adjusting canvas sizing/scaling logic in code.
- 3
Magic Trackpad behavior suggests incomplete gesture support: two-finger scrolling barely affects the timeline, and horizontal scrolling doesn’t work unless Shift is held.
- 4
Most onload work is structured cleanly, and Timeline View can load quickly (about 17 ms in the reviewer’s test), but one event listener appears not to be properly unloaded.
- 5
The navigation flag choice affects UX: Timeline View is treated as not eligible for navigation, so note clicks open new tabs instead of reusing the timeline leaf.
- 6
Date plotting depends on converting datetime strings into numeric values (Unix timestamps); notes missing the required property become outliers unless ignored or filtered.
- 7
UI polish gaps include navigation bar padding and hover effects that don’t fully match native Obsidian controls.