diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 406379c..403dd46 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -6,8 +6,8 @@ }, "plugins": [ { - "name": "jsc-statusbar", - "source": "./plugins/jsc-statusbar", + "name": "jsc-mod", + "source": "./plugins/jsc-mod", "description": "輸入框上方單行狀態列:模型、目錄、分支、5h/7d 額度與重置、context、CPU/記憶體/磁碟" }, { diff --git a/README.md b/README.md index 5205a44..781fab4 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ JSC 自用 Claude Code mods 的 marketplace。每個插件皆可單獨安裝、 ## 插件 -### [jsc-statusbar](plugins/jsc-statusbar) `0.0.4` +### [jsc-mod](plugins/jsc-mod) `0.0.1` 輸入框上方單行狀態列:模型、目錄、分支、5h/7d 額度與重置、context、CPU/記憶體/磁碟。 @@ -34,7 +34,7 @@ Matt Pocock 的工程技能整套(grilling、spec/ticket、TDD、code review ```bash claude plugin marketplace add https://gitea.jsc.idv.tw/jiantw83/jsc-marketplace.git -claude plugin install jsc-statusbar@jsc-marketplace +claude plugin install jsc-mod@jsc-marketplace claude plugin install jsc-companion@jsc-marketplace claude plugin install jsc-herdr@jsc-marketplace claude plugin install jsc-claude@jsc-marketplace @@ -45,7 +45,7 @@ claude plugin install jsc-matt@jsc-marketplace ```bash claude plugin marketplace update jsc-marketplace -claude plugin update jsc-statusbar@jsc-marketplace +claude plugin update jsc-mod@jsc-marketplace claude plugin update jsc-companion@jsc-marketplace claude plugin update jsc-herdr@jsc-marketplace claude plugin update jsc-claude@jsc-marketplace @@ -57,7 +57,7 @@ claude plugin update jsc-matt@jsc-marketplace ## 移除 ```bash -claude plugin uninstall jsc-statusbar@jsc-marketplace +claude plugin uninstall jsc-mod@jsc-marketplace claude plugin uninstall jsc-companion@jsc-marketplace claude plugin uninstall jsc-herdr@jsc-marketplace claude plugin uninstall jsc-claude@jsc-marketplace @@ -65,7 +65,7 @@ claude plugin uninstall jsc-matt@jsc-marketplace claude plugin marketplace remove jsc-marketplace ``` -曾安裝舊名稱(`statusbar`、`companion`、`herdr`、`herdr-issue`、`jsc-eli5`)的環境,請先 `claude plugin uninstall <舊名>@jsc-marketplace` 再安裝新名稱。`jsc-eli5` 已改名為 `jsc-claude`,指令為 `/jsc-claude:eli5`。 +曾安裝舊名稱(`statusbar`、`jsc-statusbar`、`companion`、`herdr`、`herdr-issue`、`jsc-eli5`)的環境,請先 `claude plugin uninstall <舊名>@jsc-marketplace` 再安裝新名稱。`jsc-eli5` 已改名為 `jsc-claude`,指令為 `/jsc-claude:eli5`。 ## 授權 diff --git a/plugins/jsc-companion/hooks/companion/seg.ts b/plugins/jsc-companion/hooks/companion/seg.ts index 5744ffe..be6938d 100644 --- a/plugins/jsc-companion/hooks/companion/seg.ts +++ b/plugins/jsc-companion/hooks/companion/seg.ts @@ -1,4 +1,4 @@ -// 角色行用的字串片段與寬度計算(與 statusbar 外掛各自獨立,不互相依賴) +// 角色行用的字串片段與寬度計算(與 jsc-mod 外掛各自獨立,不互相依賴) export type Seg = { text: string; color?: string; dim?: boolean; bold?: boolean } export function bar(p: number, cells = 5): string { diff --git a/plugins/jsc-statusbar/.claude-plugin/plugin.json b/plugins/jsc-mod/.claude-plugin/plugin.json similarity index 82% rename from plugins/jsc-statusbar/.claude-plugin/plugin.json rename to plugins/jsc-mod/.claude-plugin/plugin.json index 2317b5f..2de79bc 100644 --- a/plugins/jsc-statusbar/.claude-plugin/plugin.json +++ b/plugins/jsc-mod/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { - "name": "jsc-statusbar", - "version": "0.0.4", + "name": "jsc-mod", + "version": "0.0.1", "description": "輸入框上方的單行狀態列:模型、目錄、分支、5h/7d 額度與重置、context、CPU/記憶體/磁碟", "license": "MIT", "types": "./types/index.d.ts", diff --git a/plugins/jsc-mod/README.md b/plugins/jsc-mod/README.md new file mode 100644 index 0000000..2f7e3d1 --- /dev/null +++ b/plugins/jsc-mod/README.md @@ -0,0 +1,27 @@ +# jsc-mod + +## 指令 + +### `/statusline on` + +開啟狀態列。 + +```text +/statusline on +``` + +### `/statusline off` + +隱藏狀態列。 + +```text +/statusline off +``` + +### `/statusline compact` + +改用極窄版狀態列。 + +```text +/statusline compact +``` diff --git a/plugins/jsc-statusbar/hooks/format.ts b/plugins/jsc-mod/hooks/format.ts similarity index 100% rename from plugins/jsc-statusbar/hooks/format.ts rename to plugins/jsc-mod/hooks/format.ts diff --git a/plugins/jsc-statusbar/hooks/hooks.json b/plugins/jsc-mod/hooks/hooks.json similarity index 100% rename from plugins/jsc-statusbar/hooks/hooks.json rename to plugins/jsc-mod/hooks/hooks.json diff --git a/plugins/jsc-statusbar/hooks/hud.test.tsx b/plugins/jsc-mod/hooks/hud.test.tsx similarity index 93% rename from plugins/jsc-statusbar/hooks/hud.test.tsx rename to plugins/jsc-mod/hooks/hud.test.tsx index f9d00e9..10452b8 100644 --- a/plugins/jsc-statusbar/hooks/hud.test.tsx +++ b/plugins/jsc-mod/hooks/hud.test.tsx @@ -91,7 +91,7 @@ describe('format', () => { }) describe('band', () => { - test('draws one line above the prompt and hides with /statusbar off', async ($, on) => { + test('draws one line above the prompt and hides with /statusline off', async ($, on) => { on('session.model', () => ({ value: 'claude-opus-5-5' })) on('session.cwd', () => ({ value: '/home/dev/work/luopan' })) const props = { @@ -103,12 +103,12 @@ describe('band', () => { view: {}, } for (const surface of ['terminal', 'desktop'] as const) { - const ui = await $.ui.mount({ plugin: 'jsc-statusbar', surface, component: 'AbovePrompt', props }) + const ui = await $.ui.mount({ plugin: 'jsc-mod', surface, component: 'AbovePrompt', props }) expect(await ui.find({ type: 'Text', text: /◆ Opus 5\.5/ })).toBeDefined() expect(await ui.find({ type: 'Text', text: /5h —/ })).toBeDefined() await ui.unmount() } - const ran = await $.command.run({ command: 'statusbar', args: 'off' } as Parameters[0]) + const ran = await $.command.run({ command: 'statusline', args: 'off' } as Parameters[0]) expect(JSON.stringify(ran)).toContain('隱藏') }) }) diff --git a/plugins/jsc-statusbar/hooks/register.tsx b/plugins/jsc-mod/hooks/register.tsx similarity index 92% rename from plugins/jsc-statusbar/hooks/register.tsx rename to plugins/jsc-mod/hooks/register.tsx index c76d676..0eeb1f0 100644 --- a/plugins/jsc-statusbar/hooks/register.tsx +++ b/plugins/jsc-mod/hooks/register.tsx @@ -5,12 +5,12 @@ import type { Mode, Sys, Usage, Window } from '../types' import { fit, cpuPercent, parseCpu, parseDf, parseGit, parseMem, parseOffset } from './format' import type { CpuSample } from './format' -const usageAtom = atom({ plugin: 'jsc-statusbar', key: 'usage' } as const, {}) -const gitAtom = atom({ plugin: 'jsc-statusbar', key: 'git' } as const, null) -const sysAtom = atom({ plugin: 'jsc-statusbar', key: 'sys' } as const, {}) -const modeAtom = atom({ plugin: 'jsc-statusbar', key: 'mode' } as const, 'auto') -const alertedAtom = atom({ plugin: 'jsc-statusbar', key: 'alerted' } as const, []) -const effortAtom = atom({ plugin: 'jsc-statusbar', key: 'effort' } as const, null) +const usageAtom = atom({ plugin: 'jsc-mod', key: 'usage' } as const, {}) +const gitAtom = atom({ plugin: 'jsc-mod', key: 'git' } as const, null) +const sysAtom = atom({ plugin: 'jsc-mod', key: 'sys' } as const, {}) +const modeAtom = atom({ plugin: 'jsc-mod', key: 'mode' } as const, 'auto') +const alertedAtom = atom({ plugin: 'jsc-mod', key: 'alerted' } as const, []) +const effortAtom = atom({ plugin: 'jsc-mod', key: 'effort' } as const, null) const SYS_MS = 3000 const GIT_MS = 15_000 @@ -111,7 +111,7 @@ async function runHud($: EngineInterface, args: string) { export const register: Register = on => { on('session.start', async ($, e, next) => { await $.command.register({ - name: 'statusbar', + name: 'statusline', description: '切換輸入框上方的狀態列', argumentHint: 'on | off | compact', }) @@ -161,7 +161,7 @@ export const register: Register = on => { return ran }) - on('command.run', { command: 'statusbar' }, ($, e) => runHud($, e.args)) + on('command.run', { command: 'statusline' }, ($, e) => runHud($, e.args)) on('ui.render', { component: 'AbovePrompt' }, async ($, e, next) => { const mode = await read($, modeAtom) diff --git a/plugins/jsc-statusbar/tsconfig.json b/plugins/jsc-mod/tsconfig.json similarity index 100% rename from plugins/jsc-statusbar/tsconfig.json rename to plugins/jsc-mod/tsconfig.json diff --git a/plugins/jsc-statusbar/types/index.d.ts b/plugins/jsc-mod/types/index.d.ts similarity index 96% rename from plugins/jsc-statusbar/types/index.d.ts rename to plugins/jsc-mod/types/index.d.ts index 7ec74ba..9460c92 100644 --- a/plugins/jsc-statusbar/types/index.d.ts +++ b/plugins/jsc-mod/types/index.d.ts @@ -16,7 +16,7 @@ export type Mode = 'auto' | 'compact' | 'off' declare module 'claude-code' { interface PluginState { - 'jsc-statusbar': { + 'jsc-mod': { usage: Usage git: Git | null sys: Sys diff --git a/plugins/jsc-statusbar/README.md b/plugins/jsc-statusbar/README.md deleted file mode 100644 index e024303..0000000 --- a/plugins/jsc-statusbar/README.md +++ /dev/null @@ -1,27 +0,0 @@ -# jsc-statusbar - -## 指令 - -### `/statusbar on` - -開啟狀態列。 - -```text -/statusbar on -``` - -### `/statusbar off` - -隱藏狀態列。 - -```text -/statusbar off -``` - -### `/statusbar compact` - -改用極窄版狀態列。 - -```text -/statusbar compact -```