No description
Find a file
johnny1093 5da385da2b fix: use a real Preact hook to force re-renders, not this.forceUpdate()
The previous fix (61f15f0) restored this.forceUpdate() based on
tracing through preact's diff/component internals, which showed
function components are invoked as c.render(...) - a method call
that should bind `this` to a real Component instance with a working
forceUpdate(). That trace was confirmed against the library source,
but you tested it and the settings list still didn't update in place
after adding a command, so something in that chain isn't panning out
in practice (possibly the setTimeout-based render scheduling, possibly
something else) - not worth continuing to debug blind.

Replacing it with the standard, unambiguous approach: a useState
counter bumped to force a re-render, the documented Preact/React
idiom that doesn't depend on any internal `this` plumbing. Applied to
CommandViewer, MacroViewer, and MobileModifyComponent everywhere they
previously called this.forceUpdate().

Please rebuild and re-test: add/remove/reorder/rename/recolor a
command from the settings list without switching tabs, same for
macros, and the mobile icon-picker modal.
2026-07-11 10:17:22 -04:00
.github Update GitHub Sponsors username in FUNDING.yml 2026-04-21 10:51:54 -04:00
locale test: add vitest suite for macros, icons, modes, styles, and locales 2026-07-11 09:13:56 -04:00
scripts feat: remove text toolbar from Commander (extracted to standalone plugin) 2026-06-13 19:25:09 -04:00
src fix: use a real Preact hook to force re-renders, not this.forceUpdate() 2026-07-11 10:17:22 -04:00
.editorconfig feat: 🚧 Added initial plugin boilerplate 2022-04-21 21:00:51 +02:00
.gitignore feat: support new icon-set after obsidian 1.7.3 2024-10-11 08:47:06 +08:00
.npmrc feat: 🚧 Added initial plugin boilerplate 2022-04-21 21:00:51 +02:00
AGENTS.md feat: remove text toolbar from Commander (extracted to standalone plugin) 2026-06-13 19:25:09 -04:00
app.css feat: remove text toolbar from Commander (extracted to standalone plugin) 2026-06-13 19:25:09 -04:00
eslint.config.mts lint: defer depend/ban-dependencies for package.json build tooling 2026-07-11 10:03:28 -04:00
LICENSE.md Create LICENSE.md 2022-07-12 21:45:38 +02:00
manifest.json fix: bump minAppVersion to 1.4.4 to match actual API usage 2026-07-11 09:26:32 -04:00
package-lock.json Migrate ESLint to flat config with eslint-plugin-obsidianmd 2026-07-10 12:09:46 -04:00
package.json Migrate ESLint to flat config with eslint-plugin-obsidianmd 2026-07-10 12:09:46 -04:00
README.md Update README.md 2022-08-07 17:25:44 -04:00
tailwind.config.js feat: add tailwind support (hacky) 2022-11-29 20:17:13 +01:00
tsconfig.json deps: upgrade 2022-11-29 19:46:59 +01:00
versions.json chore: correct version to 0.5.6 2026-06-13 19:46:22 -04:00
vitest.config.ts lint: scope Node/mobile-compat rules off test and config files, tidy up a few regressions 2026-07-11 09:55:13 -04:00

commander cover (2) GitHub tag (Latest by date) GitHub all releases

Commander is a plugin for Obsidian which allows you to add commands to different parts of the user interface.

commander overview

Features

  • add commands
  • remove commands
  • re order commands (via plugin settings menu)
  • edit commands
  • hide commands added by Obsidian or other plugins
  • choose which devices commands appear on (for sync users)

Demo

Commander Demo

How you can improve this Plugin

Feedback

Share feedback, issues, and ideas on Github, with our Commander feedback form, or tag the authors on Discord!

Adding translations

If you want to help and translate this Plugin to new languages, see locale/. Copy the English (en.json) File to your language file and start changing the sentences on the right.

Credits

Footer