diff --git a/build.js b/build.js index d95dc1d..db213d1 100644 --- a/build.js +++ b/build.js @@ -2,6 +2,8 @@ const esbuild = require("esbuild"); const sveltePlugin = require("esbuild-svelte"); const path = require("path"); +const { version: ignisVersion } = require("./package.json"); + Promise.all([ // Build shim-loader.js esbuild.build({ @@ -14,6 +16,9 @@ Promise.all([ alias: { path: "path-browserify", }, + define: { + __IGNIS_VERSION__: JSON.stringify(ignisVersion), + }, logLevel: "info", }), diff --git a/plugin/src/main.js b/plugin/src/main.js index 40c75da..8d46554 100644 --- a/plugin/src/main.js +++ b/plugin/src/main.js @@ -1,6 +1,13 @@ const { Plugin, TFile, TFolder } = require("obsidian"); -const { showFilePicker, addFileMenuItems, addFolderMenuItems } = require("./file-actions"); -const { patchSettingsModal, unpatchSettingsModal } = require("./settings/inject"); +const { + showFilePicker, + addFileMenuItems, + addFolderMenuItems, +} = require("./file-actions"); +const { + patchSettingsModal, + unpatchSettingsModal, +} = require("./settings/inject"); const pluginRegistry = require("./plugin-registry"); const { initStatusBar } = require("./status-bar"); const { WorkspacePickerModal } = require("./workspace-picker"); @@ -10,6 +17,11 @@ window.__obsidianAPI = require("obsidian"); class IgnisBridgePlugin extends Plugin { async onload() { + if (!window.__ignis) { + console.log("[ignis-bridge] Not running in Ignis - plugin is a no-op."); + return; + } + console.log("[ignis-bridge] Plugin loaded"); await pluginRegistry.refresh(); @@ -41,6 +53,10 @@ class IgnisBridgePlugin extends Plugin { } onunload() { + if (!window.__ignis) { + return; + } + if (this._statusBarInterval) { clearInterval(this._statusBarInterval); } diff --git a/server/plugins/headless-sync/plugin/src/main.js b/server/plugins/headless-sync/plugin/src/main.js index 04adce0..1f47399 100644 --- a/server/plugins/headless-sync/plugin/src/main.js +++ b/server/plugins/headless-sync/plugin/src/main.js @@ -7,6 +7,13 @@ const api = require("./api"); class IgnisHeadlessSyncPlugin extends Plugin { async onload() { + if (!window.__ignis) { + console.log( + "[ignis-headless-sync] Not running in Ignis - plugin is a no-op.", + ); + return; + } + this.wsListener = new WsListener(); this.wsListener.start(); @@ -53,6 +60,10 @@ class IgnisHeadlessSyncPlugin extends Plugin { } onunload() { + if (!window.__ignis) { + return; + } + window.__ignisHeadlessSyncActive = false; if (this._coreSyncGuard) { diff --git a/src/shims/loader.js b/src/shims/loader.js index 7be6389..99fd41b 100644 --- a/src/shims/loader.js +++ b/src/shims/loader.js @@ -4,6 +4,9 @@ import { installCssOverrides } from "./css-overrides.js"; import { initialize } from "./init.js"; import { fsShim } from "./fs/index.js"; +// __IGNIS_VERSION__ is replaced at build time from package.json. +window.__ignis = { version: __IGNIS_VERSION__ }; + installGlobals(); // process, Buffer, window overrides (before require so Buffer is available) installRequire(); // shim registry, window.require installCssOverrides(); // browser-specific CSS fixes