Dashy

by dimagious
5
4
3
2
1
Score: 51/100

Description

Dashboards in Obsidian from small YAML blocks: tiles, number cards, progress bars, a day row, countdowns, a year heatmap and charts. A habit tracker without Dataview or JavaScript.

Reviews

No reviews yet.

Stats

0
stars
350
downloads
0
forks
11
days
1
days
3
days
28
total PRs
0
open PRs
2
closed PRs
26
merged PRs
1
total issues
0
open issues
1
closed issues
105
commits

Latest Version

3 days ago

Changelog

What's Changed

Full Changelog: https://github.com/Dimagious/dashsidian/compare/1.5.1...1.5.2

README file from

Github

Dashy

Downloads Latest release Stars

Charts, streaks, heatmaps and goals from the properties in your daily notes. Each block is a few lines of YAML. No JavaScript, no Dataview, and it runs on your phone.

Website · Every block and key · Guides · Changelog

That page is one note and three blocks: stats, chart and heatmap.

Install

Settings → Community plugins → Browse → search for Dashy → Install → Enable.

Open a note, run Dashy: Insert block from the command palette, pick a block. A working example lands at the cursor, already pointed at a folder and a property from your own vault.

A habit tracker in two blocks

Tick gym: true in a daily note's Properties. Paste this into any other note:

```stats
columns: 4
items:
  - { label: Gym days, source: Diary, field: gym, agg: sum, icon: 🏋️ }
  - { label: Longest gym streak, source: Diary, field: gym, agg: streak, unit: days, icon: 🔥 }
  - { label: Gym this week, source: Diary, field: gym, agg: sum, period: week, icon: 📅, compare: true, better: up }
  - { label: Gym this month, source: Diary, field: gym, agg: sum, period: month, icon: 🗓 }
```

```heatmap
source: Diary
field: gym
color: orange
title: Gym
```

Diary is the folder your daily notes live in, and each note's name starts with its date. A ticked box counts as 1. period: week is always the current week, and compare: true sets it against the same days of last week. The step-by-step version, with the same tracker in Tracker and dataviewjs next to it: a habit tracker without Dataview.

Seven blocks

Every block reads frontmatter through Obsidian's own metadata cache. Each name below opens its page: a picture, an example, every key.

  • stats: number cards. Count, sum, average, best and current streak, this week against last.
  • chart: a line or bars of a number by day, week or month, with a goal line.
  • heatmap: a year of days coloured by a number or a checkbox, several habits on one grid.
  • progress: bars towards a goal, like 24 books this year.
  • today: today's date and links to the daily, weekly and monthly notes.
  • tiles: link tiles into the vault, with live note counts.
  • countdown: days until a race, a holiday, a review.

Durations read the way your watch writes them: sleep: 7h 38min counts as a number and comes back as 7h 38m. Every block redraws when a note changes and takes its colours from your theme. With Obsidian Charts turned on, write the chart block as dashy-chart.

When the config is wrong, the block says so in the note: a typo gets a "did you mean", a broken YAML line gets its line number.

Guides

One problem per page, with the notes, the block, and the Tracker or dataviewjs version beside it:

Your AI agent can write these blocks

Two buttons in Dashy's settings write a reference of every block and key: a Claude Code skill, or an AGENTS.md section for Cursor, Codex and the rest. Both are generated from the schema the plugin validates against. Then ask for "weekly distance as bars with a 40 km goal and my current streak". More on the site.

What it leaves out

Pie, radar and scatter charts and stacked bars (Obsidian Charts), tables and queries (Bases, Dataview), kanban, tasks. It reads frontmatter only, not inline key:: value fields or tags with values. If that stops you, say what you tried.

Questions

No. Dashy reads frontmatter from Obsidian's own metadata cache. Nothing else to install.

Yes. A tap on a heatmap cell or a chart bar shows its value, and a second tap opens the note.

From its name, when it starts with YYYY-MM-DD: 2026-01-05 Monday counts. Otherwise add date_field to the block and keep the date in a property.

English, Russian, German, French and Spanish, following Obsidian or picked in the settings. Corrections to a translation are welcome: copy src/i18n/en.ts and translate the values.

Bugs and ideas

The settings tab has a row for each. It opens a GitHub issue with your plugin and Obsidian versions filled in. Or go straight to the issue tracker.

Development

npm install
npm test             # vitest, with coverage gates
npm run lint         # eslint + eslint-plugin-obsidianmd
npm run typecheck
npm run build        # main.js + styles.css
npm run dev:vault    # build into a test vault and watch
npm run build:skill  # regenerate the agent skill from the schema
npm run build:reference  # regenerate the site's block reference

npm run preview shows every block in every state in a browser. npm run e2e runs the suite against a real Obsidian, and npm run capture retakes the pictures. Logic lives in src/core/, which imports neither Obsidian nor the DOM. Block keys live in src/blocks/schema.json; the agent skill and the site's reference pages are generated from it. Design notes: docs/SPEC.md.

License

MIT © Dmitriy Yurkin