mirror of
https://github.com/Nystik-gh/ignis.git
synced 2026-06-17 04:35:53 +00:00
2.6 KiB
2.6 KiB
Contributing to Ignis
Thanks for your interest in contributing. Here are some ways you can help.
Reporting Plugin Compatibility Issues
Testing plugins and reporting what works (or doesn't) is one of the most valuable contributions right now. When a plugin doesn't work, the browser console usually contains the information needed to diagnose the problem.
How to file a useful compatibility report
- Open the browser dev tools (F12 or Ctrl+Shift+I)
- Go to the Console tab
- Enable the plugin or trigger the failing action
- Look for errors, especially lines starting with:
[ignis] Unshimmed require: <module>- a Node.js module the plugin needs that Ignis doesn't provide yet[shim:MISS] <module>.<property>- a property or method on a shimmed module that isn't implementedPlugin failure: <plugin-id>- Obsidian caught a crash from the plugin
- Copy the full error including the stack trace
What to include in the issue
- Plugin name and version
- What you tried to do
- What happened (error, crash, nothing, partial functionality)
- The console output (errors and shim warnings)
- Whether the plugin loads at all or fails immediately
Example of a useful report
Plugin: Templater v1.18.4 Status: Broken on load
Console shows:
[ignis] Unshimmed require: util [shim:MISS] UNKNOWN(util).promisify - property not found on shim Plugin failure: templater-obsidian TypeError: t is not a functionThe plugin needs
util.promisifywhich isn't shimmed yet.
This kind of report makes it straightforward to add the missing shim.
Code Contributions
If you want to contribute code:
- Fork the repo and create a branch for your change
- Run
npm run buildto verify everything builds - start the server with
npm run dev. - Test your change in the browser with at least one vault open
- Keep PRs focused - one fix or feature per PR
Project structure
src/shims/- Browser shims for Node.js and Electron APIssrc/ui/- Svelte UI components (vault manager, dialogs)plugin/- The ignis-bridge Obsidian plugin (settings, file actions)server/- Express server (fs routes, WebSocket, plugin system)server/plugins/- Server plugin packages (e.g., headless-sync)
See ARCHITECTURE.md for more detail.
Adding a new shim
If a plugin needs a Node.js module that isn't shimmed:
- Create the shim in
src/shims/node/<module>.js - Export the functions the plugin needs (stub what you can't implement)
- Register it in
src/shims/require.js(import + add torawRegistry) - Build and test with the plugin that needed it