Ablaze #
Robin's personal all-purpose Obsidian plugin. Works on desktop and mobile.
It adds an Ablaze panel (right sidebar) with one button per content type — Entity, Reference, Notion, Idea, Project, Blog, Document, Admin, Personal. Clicking a button opens a modal that creates a new note of that type with the right frontmatter (tags, plus type-specific fields for references, blog posts, and personal notes), warns if the file already exists, and opens the new note in a tab.
The panel can be reopened at any time via the ribbon icon or the "Ablaze: Open panel" command.
Layout #
src/main.js— the whole plugin: theAblazeplugin class, the sidebarAblazeView, and the note-creationAblazeModal. Plain JS, no TypeScript; esbuild bundles it (plustemplates.json) into the rootmain.jsthat Obsidian actually loads — imports don't resolve at runtime (there's no Node on mobile), so everything has to end up in that one file.templates.json— the content-type definitions (name, colour, icon, tag, and the id used by Supercharged Links). Shared bysrc/main.jsandgenerate-superstyle.js.generate-superstyle.js— regeneratessupercharged-config.json, the style settings for the Supercharged Links plugin (node generate-superstyle.js). Careful: the icon prefix uses a six-per-em space (U+2006) that looks exactly like a regular space.
Developing #
npm ito install dependencies (just esbuild).npm run watchrebuildsmain.json every change tosrc/main.js.npm run buildproduces the productionmain.js.
Installing #
npm run install-plugin builds and copies main.js, styles.css, and manifest.json
into VaultFolder/.obsidian/plugins/ablaze/ (set ABLAZE_VAULT to target another vault),
then reload Obsidian. It must be a real directory, not a symlink — see the gotchas.
Gotchas learnt the hard way #
- Views must be registered in
onload(), which runs on every app launch.onUserEnable()only runs the one time the plugin is enabled in settings — registering the view there means that after any restart the persisted tab has no view and Obsidian shows "Plugin no longer active. The plugin that created this tab has gone away." - Obsidian Sync only carries
main.js,manifest.json,styles.css, anddata.jsonto other devices, and the only version a device shows (Settings → Community plugins) is the one inmanifest.json— bumpingpackage.jsonalone proves nothing. Bump the manifest (npm version) when you need to check that a device actually received a build; the panel also prints its version at the bottom for the same reason. - Don't symlink the plugin directory into the vault. Desktop Obsidian coped with it, but
Obsidian Sync never reliably pushed the rebuilt
main.jsto mobile, which kept running a build from before theonload()fix above.install.mjscopies real files instead.