56 lines
2.8 KiB
Markdown
56 lines
2.8 KiB
Markdown
# beaver-calendar
|
|
[](https://sladge.net)
|
|
|
|
A calendar and a task list for Obsidian on top of Kanban boards and the Tasks plugin. A sphere is a board file, a project is an h2 inside it; every task keeps living in its board, the plugin only shows them together - by deadline, by sphere, or on a month grid - and lets you drag, edit and close them without opening the board.
|
|
|
|

|
|
|
|

|
|
|
|
## Archiving
|
|
|
|
"Archive completed tasks" empties every board of what is finished with it, into
|
|
a mirror of the boards folder: `Boards/work.md` archives into
|
|
`Boards/archive/work.md`, itself a Kanban board with the same lanes, so the
|
|
history opens normally and the board stays short. The same pass lifts a board's
|
|
old native archive - everything below the `***` separator - into that mirror,
|
|
headings and all, so nothing is left behind in two places.
|
|
|
|
Set "Archive folder" before the first run: renaming it later leaves the mirrors
|
|
already written behind, where they read as ordinary boards.
|
|
|
|
Archived tasks render alongside live ones when both "Include the archive" and
|
|
"Show completed" are on - from the mirror files and from any `***` section still
|
|
sitting in a board. They carry an Archive badge instead of a project chip, ride
|
|
with the sphere they came from in the rail, and are not drop targets.
|
|
|
|
## Build and install
|
|
|
|
```bash
|
|
npm install
|
|
npm run dev # esbuild watch
|
|
npm run build # typecheck + bundle + css
|
|
npm test # round-trip, smoke
|
|
npm run preview # UI in browser, no Obsidian
|
|
make install VAULT=/path/to/vault # build and copy to vault
|
|
make zip # distributable
|
|
```
|
|
|
|
After `make install` turn on plugin in settings.
|
|
|
|
`styles.css` is Tailwind output run through `scripts/scope-css.mjs`: every
|
|
selector is prefixed with `:is(.bcal-root, .bcal-root *)`. Other plugins built
|
|
with Tailwind put their utilities into the same `utilities` cascade layer, and
|
|
without the extra specificity whichever plugin loaded last would win (their
|
|
`.hidden` over our `@container` variants, for one).
|
|
|
|
Preview knobs, all optional:
|
|
|
|
```bash
|
|
VAULT=/path/to/vault npm run preview # the vault's theme
|
|
BOARDS=/path/to/vault/Boards npm run preview # real boards, not fixtures
|
|
EXTRA_CSS=/path/to/other-plugin/styles.css … # another plugin's css, loaded after ours
|
|
open 'http://localhost:4173/?groupBy=due&railCollapsed=1#edit-date' # prefs + scene
|
|
node preview/shot.mjs out.png 'http://localhost:4173/#cal' # screenshot + console
|
|
```
|