kntanaka253 downloadsHierarchical life-planning table with virtual scrolling and timeline view.
Chronos (time) + Stratum (layer) — a life-goal planning table that lives inside your Obsidian vault.
You need a place where wishes can arrive quickly, before you overthink them: things to learn, places to visit, work to attempt, habits to build, objects you might want someday. But a wish list should not quietly reorder your life.
A thing you want to buy should not make work expand until health disappears. A career goal should not consume the time you meant to protect for family. Chronostra keeps every wish inside a larger map: Health, Family, Work, Learning, Money, Travel, or whatever categories matter to you. Money and things can still have a place; they just do not get to become the whole plan.
Then the timeline turns that map into milestones. Instead of one vague someday list, you can place goals year by year and see whether the shape of your future still matches your priorities.
Chronostra is for people whose lives have more than one scoreboard.
A student with too many possible futures can keep classes, internships, language study, health, friends, and wild "maybe someday" ideas in the same map. Instead of choosing only from what feels urgent this week, they can see which small steps are opening doors for the next few years.
A founder, freelancer, or solo builder can let product ideas, revenue goals, writing plans, and personal experiments move quickly without letting work swallow the rest of life. Health and relationships stay visible beside ambition, so growth has to share the table with recovery, family, and the life the work is supposed to support.
A manager or team lead can separate long-range direction from quarterly goals and near-term actions. The timeline makes tradeoffs easier to discuss: which milestones matter this year, which can wait, and which "nice to have" ideas are starting to crowd out the commitments that actually protect the team.
A person with a full life outside work can track travel, home, money, family, learning, and care responsibilities without turning all of it into a productivity system. Chronostra gives those wishes a shape, then helps them stay in proportion.
Life-planning tools force a choice: beautiful but locked inside proprietary apps, or flexible but scattered across markdown files with no structure. They also confuse two different things — the dream you'll spend a decade chasing, and the chore you might do this weekend — and treat both as "tasks."
Chronostra refuses both compromises. Every row is a goal. Goals differ by scope (how big a dream) and commitment (how seriously you mean it), not by execution type. Your data stays in a plain markdown file you own, but the view above it is structured and zoomable across decades.
Chronostra renders a single future-data code block as a full-width interactive table. Every row carries:
Use it for yearly planning, career roadmaps, learning plans, travel goals, health habits, family projects, or any long-running effort where small steps should stay connected to a larger horizon.
Rows can be sized into one of three visual layers:
| Scope | Meaning | Example |
|---|---|---|
| Vision | A life-scale dream. Abstract, directional, decade-long. | "Travel every prefecture in Japan" |
| Goal | A multi-year objective that supports a Vision (or stands alone). | "Visit 30 of 47 prefectures by 2030" |
| Step | A concrete, achievable goal — months to a year. | "Go to Amami Ōshima this summer" |
You do not have to model your life as exactly Vision → Goal → Step. A single Step can sit directly under a Category (e.g. "Stretch every morning"), and a Goal can stand alone without a Vision parent. Scope is decoupled from depth: depth gives the tree, scope gives the visual weight.
Orthogonal to scope, you can flag any goal:
A Vision can be Must ("found a company by 50") and a Step can be Wish ("see the northern lights, someday"). Mix and match.
The top level (path[0]) is a Category — a pure grouping like Health, Work, Relationships, Money, Learning, Home. Categories don't have scope or commitment; they're just buckets.
Your data lives in a fenced code block inside any markdown file:
```future-data
[
{
"id": "1",
"path": ["Health", "Travel every prefecture in Japan"],
"scope": "vision",
"commitment": "wish",
"metrics": { "future": "47/47 visited", "now": "12/47", "gap": "35 to go" },
"timeline": [{ "year": 2050, "text": "Final prefecture" }]
},
{
"id": "2",
"path": ["Health", "Travel every prefecture in Japan", "Visit Amami Ōshima"],
"scope": "step",
"commitment": "must",
"metrics": { "future": "Booked & visited", "now": "Researching", "gap": "Plan trip" },
"timeline": [{ "year": 2027, "text": "Ferry from Kagoshima" }]
},
{
"id": "3",
"path": ["Health", "Stretch every morning"],
"scope": "step",
"metrics": { "future": "Daily habit", "now": "3x/week", "gap": "Consistency" },
"timeline": []
}
]
```
Notes:
path is an array of labels; the first element is the Category, the rest define nesting.scope and commitment are optional. If scope is omitted, it's inferred from depth (1=vision, 2=goal, 3=step) — so existing data without these fields still works.Chronostra intentionally keeps the plan in one future-data block. You can still link goals to richer notes when they need context, but every item does not have to become its own Markdown file. That keeps the source portable and helps large plans stay light when Obsidian starts up.
The JSON is meant to stay boring on purpose. Chronostra is one interface for the plan, not the owner of it. If your needs change later, you can fork the plugin, edit the data with scripts or LLM-assisted workflows, or build a different front end around the same readable source.
npm install && npm run buildOBSIDIAN_VAULT=/path/to/vault npm run link:vaultdist/ folder to .obsidian/plugins/chronostra/ (must contain main.js, styles.css, manifest.json)examples/Future plan.md into your vault (or set Settings → Chronostra → Target file to your own note with a future-data block)future-data code blocknpm install
npm run dev # watch mode — rebuilds on every change
npm run build # production build
The build outputs dist/main.js, dist/styles.css, and dist/manifest.json.
$state, $derived, $effect)ItemView, vault read/write, settings persistenceesbuild-svelteChronostra follows the Swiss/International Typographic Style: monochrome palette, typographic hierarchy over decorative elements, generous whitespace, functional minimalism. Visual weight comes from scope (Vision = larger, Step = smaller), not from color. The plugin inherits your Obsidian theme's CSS variables, so it looks native in any theme — light or dark.
MIT