ORDdashboard

by Ordnung
5
4
3
2
1
Score: 50/100

Description

Comprehensive note analytics and spaced repetition plugin for tracking engagement and optimizing knowledge retention.

Reviews

No reviews yet.

Stats

0
stars
39
downloads
0
forks
6
days
6
days
6
days
0
total PRs
0
open PRs
0
closed PRs
0
merged PRs
0
total issues
0
open issues
0
closed issues
15
commits

Latest Version

7 days ago

Changelog

See README for details.

README file from

Github

ORDdashboard

Tracks how you work with your notes and tells you which ones are ready to refresh.

ORDdashboard cover

The dashboard lives in the sidebar: it keeps its state while you work, and notes open in a new tab without closing it. The scrollable part holds search, statistics and note lists; the link graph is pinned to the bottom of the panel, so it stays visible while you scroll. Panel actions (refresh, clear data) sit in the panel header — the top-right corner of the panel itself.

Panel header actions are not visible if a theme or snippet hides the panel header. In that case use the ribbon icon or the command.

Features

Capability What it does
Analytics Totals for notes, views, edits and notes active in the last 30 days; large totals are shortened (241,3 тыс.) with the exact number on hover
Most active Notes with the most views and edits in the current month
Ready to refresh Notes you opened but have not revisited, with 5 progressive stages and deadlines
Recently active Notes opened in the last week, or opened more than once this month
All notes Your notes sorted by creation date, with activity details
Link graph Graph pinned to the bottom of the panel: the neighbourhood of the open note, or the whole vault most-connected view. Folded away it is a single header row. The open note keeps its name; other names are hidden while the graph is only fitted and appear as you zoom in
Zoom Wheel zooms, dragging pans, hover lights up a note's links, click opens it; double-click fits the graph again
Collapsible sections Select a section header to fold it away; the number of items stays visible
Search Quick search by note name or path
I18n Interface adapts to the Obsidian language (EN / RU)
Compact data Aggregates instead of long timestamp lists: the data file stays in the kilobyte range

Installation

Settings → Community plugins → Browse → ORDdashboard → Install & Enable

Manual: copy main.js, manifest.json, styles.css to .obsidian/plugins/ord-dashboard/

Usage

Action What happens
Ribbon icon Opens the dashboard in the right sidebar
Panel header: refresh Rebuilds the panel from the current data
Panel header: clear data Asks for confirmation, then deletes all recorded activity
Command: Open dashboard Same as the ribbon icon
Command: Clear analytics data Asks for confirmation, then deletes all recorded activity
Command: Seed activity from file dates Fills activity for notes edited in the last 30 days
Select a note in the panel Opens it in a new tab; notes from "Ready to refresh" advance one stage

The graph is a bounded overview of the whole vault, drawn and laid out with the same formulas as the core Graph view:

Element Rule (same as the core graph)
Forces forceX/forceY(centerStrength), forceLink(linkDistance, strength = linkStrength / min(degree)), forceManyBody(-repelStrength, distanceMin 30), forceCollide(radius 60, strength 0.5)
Integration v *= 0.6, alpha decays from 1 to 0.001 over ~300 ticks, forces re-heat to 0.3 when data or settings change
Node size nodeSizeMultiplier * clamp(3 * sqrt(degree + 1), 8, 30), scaled by sqrt(scale) on screen
Links lineSizeMultiplier px thick, drawn between the circles, --graph-line, highlighted with --interactive-accent while hovering
Labels fade with clamp(log2(scale) + 1 - textFadeMultiplier, 0, 1); the hovered note keeps its size and sits lower
Hover everything unrelated to the hovered note fades to 20%
Zoom 1.5^(-deltaY / 120), range 1/128 … 8, zoom centre under the cursor when zooming in
Open note By default the graph shows the neighbourhood of the note you are reading; it rebuilds whenever you open another note. Links in both directions are followed, and a note reached only through shared section indexes is dropped: "close" is measured with a random walk from the open note, not assumed from the number of hops. Switch "What to show" for a whole-vault overview instead
Nearest means measured Every note links to the sections it lives in, so two hops can mean the whole vault. Candidates are scored by a focused random walk divided by the same walk started over the whole vault (a link count for undirected links): a note that is only two hops away through an index scores below 1 and is left out. Index notes never pass the walk on, so "registered in the same table of contents" is not closeness. Measured on a 3 225-note vault: opening a deep work note gives 10 notes — its own files, a template and the nearest module notes
Place counts too Notes filed next to the open one are neighbours even when nothing links them, so a checklist shows the checklists next to it. A real link always weighs more than sharing a folder
Index notes A note linked to at least 2% of the vault (and at least 25 links) is a table of contents, not a connection: dimmed and drawn without lines by default. On the vault above that removed 95% of the lines, which all led to seven index notes
Node types Tags, attachments, unresolved links and orphans — each with its own colour, exactly as the vault's graph settings say (showTags, showAttachments, hideUnresolved, showOrphans)
Colour groups Groups from the vault's graph settings are applied (the last matching group wins). Queries using tag:, path:, file:, plain text, quotes and - negation are supported; a group with anything else (Obsidian's internal search operators) is skipped rather than guessed

Colours come from the core's own CSS classes (.graph-view.color-fill, …color-fill-tag, …color-fill-attachment, …color-fill-unresolved, …color-line, …), read from a probe attached to the document — the palette (--graph-node, --graph-line, …) is declared on body, so it only resolves for an element that is actually in the document. That is why the graph repaints on css-change: switching the theme, the light/dark mode or a CSS snippet recolours it immediately, and per-type opacities (unresolved links 0.5, arrows 0.5) come along.

Node size. The core sizes nodes for a full graph window (nodeSizeMultiplier * clamp(3 * sqrt(degree + 1), 8, 30), times sqrt(scale)), tuning them for thousands of nodes on a large canvas. A panel is much smaller, so the same formula scaled down looks like the original: "Node size in the panel" defaults to 50% of the core size (options: as in Obsidian / 75% / 50% / 35%), and a hub can never grow past 5% of the panel, so no dots turn into blobs. With the values from this vault (node size multiplier 1.205, forces 0.7 / 20 / 0.9 / 30) a hub is about 5 px and a leaf about 2.4 px in a 240×180 px panel.

By default the look — node and line size, text fade, arrows, which node types to show and the colour groups — is read from the vault's own graph settings (.obsidian/graph.json), so the picture matches the Graph view you configured. The forces stay at the core defaults on purpose: the panel shows a few hundred nodes, and a force configuration tuned for a full window (this vault uses center 0.7 with repel 20) squeezes them into a tight lump.

Action What happens
Select the graph header Collapses or expands the graph, freeing its part of the panel
Hover a node Highlights the node and its neighbours, dims the rest, shows their names
Select a node Opens that note; the graph then rings it as the open note
Drag a node Moves it and lets the layout settle again around it
Drag the background Pans; the mouse wheel zooms, double-click fits the graph into the panel
Header buttons Rebuild the graph, fit to panel

Review stages

Stage Interval Deadline
1 7 days 2 days
2 14 days 2 days
3 30 days 7 days
4 60 days 7 days
5 120 days 14 days

Settings

Setting Default Description
Track opened notes ON Records when a note is opened
Track edited notes ON Records when a note is edited
Show ribbon icon ON Adds the dashboard icon to the ribbon; turn it off to keep the left sidebar clean and open the panel from the command palette or a hotkey
Graph → Show link graph ON Pins the link graph to the bottom of the panel
Graph → What to show Around the open note The neighbourhood of the note you are reading (rebuilt as you navigate) or an overview of the whole vault
Graph → Depth 2 hops How far the neighbourhood reaches (1–3 links away)
Graph → How close is close enough Close links Notes reached through links stay only when they are measurably closer to this note than to a random one; "Core-like" keeps everything inside the depth limit
Graph → Index notes Dimmed context A note linked to a large part of the vault is a table of contents: dimmed without lines, hidden, or drawn like the core does. Its links are never routes either: reaching a note through a table of contents does not make it close
Graph → Notes filed next to the open one ON Notes in the same folder count as neighbours even without links. Folders with more than 50 notes are ignored, since there a folder stops meaning anything
Graph → Graph nodes 300 Upper limit of notes; the most connected ones are kept
Graph → Animate layout ON Lets the graph settle softly and then freeze
Graph → Node size in the panel 50% Scales node sizes down for the panel; "As in Obsidian" reproduces the core formula exactly
Graph → Graph height Medium Share of the panel taken by the graph (small / medium / large)
Data → Tracked notes — How many notes have recorded activity
Data → Clear analytics data — Deletes all recorded activity

Performance

The graph is a bounded overview, not a copy of the vault graph:

  • Node selection is capped (300 by default, up to 2000) and links are capped too, so drawing stays under a millisecond per frame no matter how large the vault is.
  • The link index is walked in small steps during idle time, never in one blocking pass; the panel stays responsive and the graph appears with a progress line.
  • The layout settles in about 300 ticks and freezes itself (a couple of seconds of soft animation, like the core graph); nothing runs while the graph is collapsed or the panel is hidden.
  • Rebuilds happen at most once per ten seconds after the link index changes, and only if the graph is visible.
  • Measured on synthetic data: 100 000 notes with 500 000 links are scanned in about 0.09 s of work spread over twenty idle steps — a million-note vault costs roughly a second of background work, not a freeze. 300 nodes settle in ~0.15 s of simulation time.

The graph reads only Obsidian's link index (resolvedLinks); note contents are never opened.

Data and privacy

Everything is stored locally in the plugin's data.json as aggregates per note: total views and edits, last opened and last edited timestamps, the refresh stage, and counters for the current month and the two months before it. Nothing is sent anywhere, and no note content is read or modified.

Notes that no longer exist are dropped from the data on start. Monthly counters older than three months are removed automatically.

Upgrading from 0.0.1

The first start of this version reads the old note-views.json, converts it into aggregates and renames the original file to note-views.json.bak, so nothing is lost. Records for non-Markdown files (the old version tracked every file type) are skipped.

Development

git clone https://github.com/Ordnungen/ord-dashboard
cd ord-dashboard
npm install
npm run dev      # watch build
npm run check    # typecheck + lint
npm run build    # production build

License

MIT