@cmodjs/core 4.0.1 → 4.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/docs/commands.md CHANGED
@@ -125,7 +125,7 @@ It needs, and refuses to start without:
125
125
 
126
126
  ## Install mods
127
127
 
128
- `cmod install`, `cmod update`, `cmod remove`, `cmod enable`, `cmod disable`, `cmod link`, `cmod unlink`, and `cmod try` write the time to `plugins-changed` in the cmod store when they finish, also when they fail partway, such as an update that updated some mods. The cmod plugin of every running session watches that file and runs `/reload-plugins`, so each session runs the mods the person has now. A reload clears each mod's `memory` state. A machine where cmod set up no mod has no store, and these commands write nothing there. `cmod permission` needs no reload, because a mod sees its grants change before its next call.
128
+ `cmod install`, `cmod update`, `cmod remove`, `cmod enable`, `cmod disable`, `cmod link`, `cmod unlink`, and `cmod try` write the time to `plugins-changed` in the cmod store when they finish, also when they fail partway, such as an update that updated some mods. The cmod plugin of every running session watches that file, Claude Code's `installed_plugins.json`, and the `enabledPlugins` of the user's `settings.json`, and runs `/reload-plugins` when any of them changes. So each session runs the plugins the person has now, whether a `cmod` command, `/plugin`, `claude plugin`, or Claude Code's automatic update changed them. A reload keeps the prompt cache: the next request reads the whole conversation from the cache and pays only for the plugins' new content. A reload clears each mod's `memory` state. A machine where cmod set up no mod has no store, and these commands write nothing there. `cmod permission` needs no reload, because a mod sees its grants change before its next call.
129
129
 
130
130
  ### cmod install
131
131
 
@@ -45,7 +45,7 @@ The mod starts only once its install step has run ([mod.md](mod.md)).
45
45
 
46
46
  ## Automatic updates
47
47
 
48
- Claude Code updates a plugin by itself only when its marketplace has automatic updates on, and they are off for every marketplace that is not Anthropic's. So the setup of a mod installed from a marketplace turns them on, through `"autoUpdate": true` on that marketplace's `extraKnownMarketplaces` entry in `settings.json`. The consent lists it as `Update <mod> automatically from the <marketplace> marketplace`, and a mod with nothing to consent to logs it. The setup never changes a choice the person made, in `settings.json` or with the toggle under `/plugin` Marketplaces, and leaves a linked mod alone.
48
+ Claude Code updates a plugin by itself only when its marketplace has automatic updates on, and they are off for every marketplace that is not Anthropic's. So the setup of a mod installed from a marketplace turns them on, through `"autoUpdate": true` on that marketplace's `extraKnownMarketplaces` entry in `settings.json`. The consent lists it as `Update <mod> automatically from the <marketplace> marketplace`, and a mod with nothing to consent to logs it. The setup never changes a choice the person made, in `settings.json` or with the toggle under `/plugin` Marketplaces, and leaves a linked mod alone. The cmod plugin's own `cmod` marketplace gets the same entry whenever a `cmod` command installs the cmod plugin or `cmod update` updates it.
49
49
 
50
50
  Claude Code downloads an update in the background and loads it at the next launch or `/reload-plugins`. An update whose scripts, hotkeys, or permissions changed waits for consent again, so an update never runs a new install step unasked.
51
51
 
package/docs/ui.md CHANGED
@@ -83,7 +83,7 @@ Progress(props: { value: number; width?: number })
83
83
 
84
84
  ## The Sidebar and its pages
85
85
 
86
- The Sidebar is one pane the cmod plugin draws beside the conversation for every mod. Its tabs are the Dashboard, the pages mods opened, and Settings. The person shows or hides it with `ctrl+q`, switches tabs with `0` for the Dashboard, `1` to `8` for the pages, and `9` for Settings, and closes a page with the `×` on its tab. They change both combos in Settings, under cmod, Hotkeys.
86
+ The Sidebar is one pane the cmod plugin draws beside the conversation for every mod. Its tabs are the Dashboard, the pages mods opened, and Settings. The person shows or hides it with `meta+0`, switches tabs with `0` for the Dashboard, `1` to `8` for the pages, and `9` for Settings, and closes a page with the `×` on its tab. They change both combos in Settings, under cmod, Hotkeys.
87
87
 
88
88
  A page is a part of a mod that draws in the Sidebar. Put each page in its own file in `src/pages/`:
89
89
 
@@ -160,7 +160,7 @@ export const notes = defineMod({
160
160
 
161
161
  ### Settings pages
162
162
 
163
- `mod.settings.add(page)` adds a page to the mod's entry in Settings, beside the Options, Permissions, Hotkeys, and Changelog cmod draws for every mod. It takes the same `PageInit` and returns the same `Page`. `mod.settings.open()` shows Settings at the mod's entry. `/mods` and `meta+s` open Settings too.
163
+ `mod.settings.add(page)` adds a page to the mod's entry in Settings, beside the Options, Permissions, Hotkeys, and Changelog cmod draws for every mod. It takes the same `PageInit` and returns the same `Page`. `mod.settings.open()` shows Settings at the mod's entry. `/mods` and `meta+m` open Settings too.
164
164
 
165
165
  ## Panes
166
166
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cmodjs/core",
3
- "version": "4.0.1",
3
+ "version": "4.0.3",
4
4
  "description": "Build Claude Code mods: hooks, panes, permissions, checks, and an install that just works.",
5
5
  "license": "MIT",
6
6
  "type": "module",
package/records.d.ts CHANGED
@@ -77,7 +77,7 @@ export declare function consentPath(store: string): string;
77
77
  export declare function pluginsChangedPath(store: string): string;
78
78
  export declare function widgetsPath(store: string): string;
79
79
  export declare function parseConsent(value: unknown, path: string): Record<string, string[]>;
80
- export declare const coreVersion = "4.0.1";
80
+ export declare const coreVersion = "4.0.3";
81
81
  export declare function hotkeyCommand(mod: string, hotkey: string): string;
82
82
  export declare function hotkeyBindings(mod: string, hotkeys: Hotkeys | undefined): Record<string, string>;
83
83
  export declare function boundCombos(keybindings: unknown): Map<string, string>;
package/records.js CHANGED
@@ -228,7 +228,7 @@ function readHotkeys(hotkeys) {
228
228
  throw new Error(`package.json "cmod.hotkeys" is not a map of hotkeys to their title and default combo. ${fix}`);
229
229
  return { hotkeys: checkHotkeys('package.json "cmod"', hotkeys) };
230
230
  }
231
- export const coreVersion = '4.0.1';
231
+ export const coreVersion = '4.0.3';
232
232
  export function hotkeyCommand(mod, hotkey) {
233
233
  return `${mod}--${hotkey}`;
234
234
  }
package/src/records.ts CHANGED
@@ -263,7 +263,7 @@ function readHotkeys(hotkeys: unknown): Steps {
263
263
  return { hotkeys: checkHotkeys('package.json "cmod"', hotkeys as Record<string, HotkeyInit>) }
264
264
  }
265
265
 
266
- export const coreVersion = '4.0.1'
266
+ export const coreVersion = '4.0.3'
267
267
 
268
268
  export function hotkeyCommand(mod: string, hotkey: string): string {
269
269
  return `${mod}--${hotkey}`