threadwell 0.0.6 → 0.0.7

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.
Files changed (93) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/README.md +4 -8
  3. package/dist/cli/args.d.ts.map +1 -1
  4. package/dist/cli/args.js +5 -7
  5. package/dist/cli/args.js.map +1 -1
  6. package/dist/cli/config-selector.d.ts.map +1 -1
  7. package/dist/cli/config-selector.js +4 -2
  8. package/dist/cli/config-selector.js.map +1 -1
  9. package/dist/core/settings-manager.d.ts +3 -0
  10. package/dist/core/settings-manager.d.ts.map +1 -1
  11. package/dist/core/settings-manager.js +5 -0
  12. package/dist/core/settings-manager.js.map +1 -1
  13. package/dist/core/slash-commands.d.ts.map +1 -1
  14. package/dist/core/slash-commands.js +1 -1
  15. package/dist/core/slash-commands.js.map +1 -1
  16. package/dist/core/tools/edit.d.ts.map +1 -1
  17. package/dist/core/tools/edit.js +7 -1
  18. package/dist/core/tools/edit.js.map +1 -1
  19. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  20. package/dist/modes/interactive/components/assistant-message.js +12 -4
  21. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  22. package/dist/modes/interactive/components/bash-execution.d.ts +2 -0
  23. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  24. package/dist/modes/interactive/components/bash-execution.js +43 -4
  25. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  26. package/dist/modes/interactive/components/branch-summary-message.d.ts +4 -3
  27. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  28. package/dist/modes/interactive/components/branch-summary-message.js +31 -8
  29. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  30. package/dist/modes/interactive/components/compaction-summary-message.d.ts +4 -3
  31. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
  32. package/dist/modes/interactive/components/compaction-summary-message.js +32 -8
  33. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
  34. package/dist/modes/interactive/components/config-selector.d.ts +1 -1
  35. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  36. package/dist/modes/interactive/components/config-selector.js +1 -9
  37. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  38. package/dist/modes/interactive/components/custom-message.d.ts +3 -0
  39. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  40. package/dist/modes/interactive/components/custom-message.js +33 -20
  41. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  42. package/dist/modes/interactive/components/diff.d.ts.map +1 -1
  43. package/dist/modes/interactive/components/diff.js +70 -0
  44. package/dist/modes/interactive/components/diff.js.map +1 -1
  45. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  46. package/dist/modes/interactive/components/footer.js +61 -49
  47. package/dist/modes/interactive/components/footer.js.map +1 -1
  48. package/dist/modes/interactive/components/framed-message.d.ts +17 -0
  49. package/dist/modes/interactive/components/framed-message.d.ts.map +1 -0
  50. package/dist/modes/interactive/components/framed-message.js +39 -0
  51. package/dist/modes/interactive/components/framed-message.js.map +1 -0
  52. package/dist/modes/interactive/components/settings-selector.d.ts +0 -4
  53. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  54. package/dist/modes/interactive/components/settings-selector.js +0 -20
  55. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  56. package/dist/modes/interactive/components/skill-invocation-message.d.ts +4 -3
  57. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  58. package/dist/modes/interactive/components/skill-invocation-message.js +31 -9
  59. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  60. package/dist/modes/interactive/components/split-info-card.d.ts.map +1 -1
  61. package/dist/modes/interactive/components/split-info-card.js +24 -17
  62. package/dist/modes/interactive/components/split-info-card.js.map +1 -1
  63. package/dist/modes/interactive/components/thinking-card.d.ts +6 -0
  64. package/dist/modes/interactive/components/thinking-card.d.ts.map +1 -0
  65. package/dist/modes/interactive/components/thinking-card.js +17 -0
  66. package/dist/modes/interactive/components/thinking-card.js.map +1 -0
  67. package/dist/modes/interactive/components/tool-execution.d.ts +5 -0
  68. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  69. package/dist/modes/interactive/components/tool-execution.js +72 -2
  70. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  71. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  72. package/dist/modes/interactive/components/user-message.js +16 -0
  73. package/dist/modes/interactive/components/user-message.js.map +1 -1
  74. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  75. package/dist/modes/interactive/interactive-mode.js +86 -73
  76. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  77. package/dist/modes/interactive/theme/visual-profile.d.ts +69 -0
  78. package/dist/modes/interactive/theme/visual-profile.d.ts.map +1 -0
  79. package/dist/modes/interactive/theme/visual-profile.js +131 -0
  80. package/dist/modes/interactive/theme/visual-profile.js.map +1 -0
  81. package/dist/package-manager-cli.d.ts.map +1 -1
  82. package/dist/package-manager-cli.js +1 -1
  83. package/dist/package-manager-cli.js.map +1 -1
  84. package/docs/docs.json +1 -5
  85. package/docs/extensions.md +7 -16
  86. package/docs/index.md +6 -5
  87. package/docs/packages.md +8 -30
  88. package/docs/quickstart.md +1 -1
  89. package/docs/sdk.md +2 -3
  90. package/docs/settings.md +24 -7
  91. package/docs/themes.md +5 -295
  92. package/docs/usage.md +14 -17
  93. package/package.json +4 -4
package/docs/packages.md CHANGED
@@ -1,8 +1,10 @@
1
- > Threadwell can help you create Threadwell packages. Ask it to bundle your extensions, skills, prompt templates, or themes.
1
+ > Threadwell can help you create Threadwell packages. Ask it to bundle your extensions, skills, or prompt templates.
2
2
 
3
3
  # Threadwell Packages
4
4
 
5
- Threadwell packages bundle extensions, skills, prompt templates, and themes so you can share them through npm or git. A package can declare resources in `package.json` under the `thread` key, or use conventional directories.
5
+ Threadwell packages are an advanced local customization and distribution mechanism. They can bundle extensions, skills, and prompt templates through npm, git, or local paths. Normal Threadwell use does not require package authoring.
6
+
7
+ A package can declare resources in `package.json` under the `thread` key, or use conventional directories.
6
8
 
7
9
  ## Table of Contents
8
10
 
@@ -119,35 +121,13 @@ Add a `thread` manifest to `package.json` or use conventional directories. Inclu
119
121
  "threadwell": {
120
122
  "extensions": ["./extensions"],
121
123
  "skills": ["./skills"],
122
- "prompts": ["./prompts"],
123
- "themes": ["./themes"]
124
+ "prompts": ["./prompts"]
124
125
  }
125
126
  }
126
127
  ```
127
128
 
128
129
  Paths are relative to the package root. Arrays support glob patterns and `!exclusions`.
129
130
 
130
- ### Gallery Metadata
131
-
132
- The [package gallery](https://threadwell.local/packages) displays packages tagged with `threadwell-package`. Add `video` or `image` fields to show a preview:
133
-
134
- ```json
135
- {
136
- "name": "my-package",
137
- "keywords": ["threadwell-package"],
138
- "threadwell": {
139
- "extensions": ["./extensions"],
140
- "video": "https://example.com/demo.mp4",
141
- "image": "https://example.com/screenshot.png"
142
- }
143
- }
144
- ```
145
-
146
- - **video**: MP4 only. On desktop, autoplays on hover. Clicking opens a fullscreen player.
147
- - **image**: PNG, JPEG, GIF, or WebP. Displayed as a static preview.
148
-
149
- If both are set, video takes precedence.
150
-
151
131
  ## Package Structure
152
132
 
153
133
  ### Convention Directories
@@ -157,11 +137,10 @@ If no `thread` manifest is present, Threadwell auto-discovers resources from the
157
137
  - `extensions/` loads `.ts` and `.js` files
158
138
  - `skills/` recursively finds `SKILL.md` folders and loads top-level `.md` files as skills
159
139
  - `prompts/` loads `.md` files
160
- - `themes/` loads `.json` files
161
140
 
162
141
  ## Dependencies
163
142
 
164
- Third party runtime dependencies belong in `dependencies` in `package.json`. Dependencies that do not register extensions, skills, prompt templates, or themes also belong in `dependencies`. When Threadwell installs a package from npm or git, it runs `npm install`, so those dependencies are installed automatically.
143
+ Third party runtime dependencies belong in `dependencies` in `package.json`. Dependencies that do not register extensions, skills, or prompt templates also belong in `dependencies`. When Threadwell installs a package from npm or git, it runs `npm install`, so those dependencies are installed automatically.
165
144
 
166
145
  Threadwell bundles core packages for extensions and skills. If you import any of these, list them in `peerDependencies` with a `"*"` range and do not bundle them: `@threadwell/ai`, `@threadwell/agent-core`, `threadwell`, `@threadwell/tui`, `typebox`.
167
146
 
@@ -194,8 +173,7 @@ Filter what a package loads using the object form in settings:
194
173
  "source": "npm:my-package",
195
174
  "extensions": ["extensions/*.ts", "!extensions/legacy.ts"],
196
175
  "skills": [],
197
- "prompts": ["prompts/review.md"],
198
- "themes": ["+themes/legacy.json"]
176
+ "prompts": ["prompts/review.md"]
199
177
  }
200
178
  ]
201
179
  }
@@ -212,7 +190,7 @@ Filter what a package loads using the object form in settings:
212
190
 
213
191
  ## Enable and Disable Resources
214
192
 
215
- Use `thread config` to enable or disable extensions, skills, prompt templates, and themes from installed packages and local directories. Works for both global (`~/.threadwell/agent`) and project (`.threadwell/`) scopes.
193
+ Use `thread config` to enable or disable extensions, skills, and prompt templates from installed packages and local directories. Works for both global (`~/.threadwell/agent`) and project (`.threadwell/`) scopes.
216
194
 
217
195
  ## Scope and Deduplication
218
196
 
@@ -137,6 +137,6 @@ Use `--mode json` for JSON event output or `--mode rpc` for process integration.
137
137
  - [Providers](providers.md) - authentication and model setup.
138
138
  - [Settings](settings.md) - global and project configuration.
139
139
  - [Keybindings](keybindings.md) - shortcuts and customization.
140
- - [Threadwell Packages](packages.md) - install shared extensions, skills, prompts, and themes.
140
+ - [Threadwell Packages](packages.md) - install shared extensions, skills, and prompts.
141
141
 
142
142
  Platform notes: [Windows](windows.md), [Termux](termux.md), [tmux](tmux.md), [Terminal setup](terminal-setup.md), [Shell aliases](shell-aliases.md).
package/docs/sdk.md CHANGED
@@ -51,7 +51,7 @@ The SDK is included in the main package. No separate installation needed.
51
51
 
52
52
  The main factory function for a single `AgentSession`.
53
53
 
54
- `createAgentSession()` uses a `ResourceLoader` to supply extensions, skills, prompt templates, themes, and context files. If you do not provide one, it uses `DefaultResourceLoader` with standard discovery.
54
+ `createAgentSession()` uses a `ResourceLoader` to supply extensions, skills, prompt templates, and context files. If you do not provide one, it uses `DefaultResourceLoader` with standard discovery.
55
55
 
56
56
  ```typescript
57
57
  import { createAgentSession } from "threadwell";
@@ -834,7 +834,7 @@ Project overrides global. Nested objects merge keys. Setters modify global setti
834
834
 
835
835
  ## ResourceLoader
836
836
 
837
- Use `DefaultResourceLoader` to discover extensions, skills, prompts, themes, and context files.
837
+ Use `DefaultResourceLoader` to discover extensions, skills, prompts, and context files.
838
838
 
839
839
  ```typescript
840
840
  import {
@@ -851,7 +851,6 @@ await loader.reload();
851
851
  const extensions = loader.getExtensions();
852
852
  const skills = loader.getSkills();
853
853
  const prompts = loader.getPrompts();
854
- const themes = loader.getThemes();
855
854
  const contextFiles = loader.getAgentsFiles().agentsFiles;
856
855
  ```
857
856
 
package/docs/settings.md CHANGED
@@ -48,7 +48,6 @@ Edit directly or use `/settings` for common options.
48
48
 
49
49
  | Setting | Type | Default | Description |
50
50
  |---------|------|---------|-------------|
51
- | `theme` | string | `"dark"` | Theme name (`"dark"`, `"light"`, or custom) |
52
51
  | `quietStartup` | boolean | `false` | Hide startup header |
53
52
  | `collapseChangelog` | boolean | `false` | Show condensed changelog after updates |
54
53
  | `enableInstallTelemetry` | boolean | `true` | Send an anonymous install/update version ping after first install or changelog-detected updates. This does not control update checks |
@@ -57,10 +56,32 @@ Edit directly or use `/settings` for common options.
57
56
  | `editorPaddingX` | number | `0` | Horizontal padding for input editor (0-3) |
58
57
  | `autocompleteMaxVisible` | number | `5` | Max visible items in autocomplete dropdown (3-20) |
59
58
  | `showHardwareCursor` | boolean | `false` | Show terminal cursor |
59
+ | `interface.visualProfile` | string | `"auto"` | Terminal visual profile: `"auto"`, `"baseline"`, or `"enhanced"` |
60
+
61
+ #### Enhanced visual profile
62
+
63
+ Threadwell works in normal terminals with the baseline profile. New visual polish targets WezTerm-first progressive enhancement.
64
+
65
+ Recommended enhanced setup:
66
+
67
+ - WezTerm
68
+ - JetBrains Mono
69
+ - Symbols Nerd Font Mono
70
+ - truecolor support
71
+
72
+ ```json
73
+ {
74
+ "interface": {
75
+ "visualProfile": "auto"
76
+ }
77
+ }
78
+ ```
79
+
80
+ Use `"baseline"` to force plain fallback rendering, or `"enhanced"` to force the WezTerm/Nerd Font-oriented token set for local experimentation.
60
81
 
61
82
  ### Telemetry and update checks
62
83
 
63
- `enableInstallTelemetry` only controls the anonymous install/update ping to `https://threadwell.local/api/report-install`. Opting out of telemetry does not disable update checks; Threadwell can still fetch `https://registry.npmjs.org/threadwell/latest` to look for the latest npm version.
84
+ `enableInstallTelemetry` only controls the anonymous install/update ping. Opting out of telemetry does not disable update checks; Threadwell can still fetch `https://registry.npmjs.org/threadwell/latest` to look for the latest npm version.
64
85
 
65
86
  Set `THREADWELL_SKIP_VERSION_CHECK=1` to disable the Threadwell version update check. Use `--offline` or `THREADWELL_OFFLINE=1` to disable all startup network operations described here, including update checks, package update checks, and install/update telemetry.
66
87
 
@@ -287,7 +308,7 @@ When multiple sources specify a session directory, precedence is `--session-dir`
287
308
 
288
309
  ### Resources
289
310
 
290
- These settings define where to load extensions, skills, prompts, and themes from.
311
+ These settings define where to load extensions, skills, and prompts from.
291
312
 
292
313
  Paths in `~/.threadwell/agent/settings.json` resolve relative to `~/.threadwell/agent`. Paths in `.threadwell/settings.json` resolve relative to `.threadwell`; `.threadwell/settings.json` is still read as a compatibility fallback when `.threadwell/settings.json` is absent. Absolute paths and `~` are supported.
293
314
 
@@ -298,7 +319,6 @@ Paths in `~/.threadwell/agent/settings.json` resolve relative to `~/.threadwell/
298
319
  | `skills` | string[] | `[]` | Local skill file paths or directories |
299
320
  | `skillsEnabled` | boolean | `true` | Load and inject installed skills |
300
321
  | `prompts` | string[] | `[]` | Local prompt template paths or directories |
301
- | `themes` | string[] | `[]` | Local theme file paths or directories |
302
322
  | `enableSkillCommands` | boolean | `true` | Register loaded skills as `/skill:name` commands |
303
323
 
304
324
  Set `skillsEnabled` to `false` to disable skills for this Threadwell configuration without deleting or moving skill files. Arrays support glob patterns and exclusions. Use `!pattern` to exclude. Use `+path` to force-include an exact path and `-path` to force-exclude an exact path.
@@ -336,7 +356,6 @@ See [packages.md](packages.md) for package management details.
336
356
  "defaultProvider": "anthropic",
337
357
  "defaultModel": "claude-sonnet-4-20250514",
338
358
  "defaultThinkingLevel": "medium",
339
- "theme": "dark",
340
359
  "compaction": {
341
360
  "enabled": true,
342
361
  "reserveTokens": 16384,
@@ -361,7 +380,6 @@ Project settings (`.threadwell/settings.json`, or `.threadwell/settings.json` fa
361
380
  ```json
362
381
  // ~/.threadwell/agent/settings.json (global)
363
382
  {
364
- "theme": "dark",
365
383
  "compaction": { "enabled": true, "reserveTokens": 16384 }
366
384
  }
367
385
 
@@ -372,7 +390,6 @@ Project settings (`.threadwell/settings.json`, or `.threadwell/settings.json` fa
372
390
 
373
391
  // Result
374
392
  {
375
- "theme": "dark",
376
393
  "compaction": { "enabled": true, "reserveTokens": 8192 }
377
394
  }
378
395
  ```
package/docs/themes.md CHANGED
@@ -1,295 +1,5 @@
1
- > Threadwell can create themes. Ask it to build one for your setup.
2
-
3
- # Themes
4
-
5
- Themes are JSON files that define colors for the TUI.
6
-
7
- ## Table of Contents
8
-
9
- - [Locations](#locations)
10
- - [Selecting a Theme](#selecting-a-theme)
11
- - [Creating a Custom Theme](#creating-a-custom-theme)
12
- - [Theme Format](#theme-format)
13
- - [Color Tokens](#color-tokens)
14
- - [Color Values](#color-values)
15
- - [Tips](#tips)
16
-
17
- ## Locations
18
-
19
- Threadwell loads themes from:
20
-
21
- - Built-in: `dark`, `light`
22
- - Global: `~/.threadwell/agent/themes/*.json`
23
- - Project: `.threadwell/themes/*.json`
24
- - Packages: `themes/` directories or `threadwell.themes` entries in `package.json`
25
- - Settings: `themes` array with files or directories
26
- - CLI: `--theme <path>` (repeatable)
27
-
28
- Disable discovery with `--no-themes`.
29
-
30
- ## Selecting a Theme
31
-
32
- Select a theme via `/settings` or in `settings.json`:
33
-
34
- ```json
35
- {
36
- "theme": "my-theme"
37
- }
38
- ```
39
-
40
- On first run, Threadwell detects your terminal background and defaults to `dark` or `light`.
41
-
42
- ## Creating a Custom Theme
43
-
44
- 1. Create a theme file:
45
-
46
- ```bash
47
- mkdir -p ~/.threadwell/agent/themes
48
- vim ~/.threadwell/agent/themes/my-theme.json
49
- ```
50
-
51
- 2. Define the theme with all required colors (see [Color Tokens](#color-tokens)):
52
-
53
- ```json
54
- {
55
- "$schema": "https://raw.githubusercontent.com/Threadwell source/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json",
56
- "name": "my-theme",
57
- "vars": {
58
- "primary": "#00aaff",
59
- "secondary": 242
60
- },
61
- "colors": {
62
- "accent": "primary",
63
- "border": "primary",
64
- "borderAccent": "#00ffff",
65
- "borderMuted": "secondary",
66
- "success": "#00ff00",
67
- "error": "#ff0000",
68
- "warning": "#ffff00",
69
- "muted": "secondary",
70
- "dim": 240,
71
- "text": "",
72
- "thinkingText": "secondary",
73
- "selectedBg": "#2d2d30",
74
- "userMessageBg": "#2d2d30",
75
- "userMessageText": "",
76
- "customMessageBg": "#2d2d30",
77
- "customMessageText": "",
78
- "customMessageLabel": "primary",
79
- "toolPendingBg": "#1e1e2e",
80
- "toolSuccessBg": "#1e2e1e",
81
- "toolErrorBg": "#2e1e1e",
82
- "toolTitle": "primary",
83
- "toolOutput": "",
84
- "mdHeading": "#ffaa00",
85
- "mdLink": "primary",
86
- "mdLinkUrl": "secondary",
87
- "mdCode": "#00ffff",
88
- "mdCodeBlock": "",
89
- "mdCodeBlockBorder": "secondary",
90
- "mdQuote": "secondary",
91
- "mdQuoteBorder": "secondary",
92
- "mdHr": "secondary",
93
- "mdListBullet": "#00ffff",
94
- "toolDiffAdded": "#00ff00",
95
- "toolDiffRemoved": "#ff0000",
96
- "toolDiffContext": "secondary",
97
- "syntaxComment": "secondary",
98
- "syntaxKeyword": "primary",
99
- "syntaxFunction": "#00aaff",
100
- "syntaxVariable": "#ffaa00",
101
- "syntaxString": "#00ff00",
102
- "syntaxNumber": "#ff00ff",
103
- "syntaxType": "#00aaff",
104
- "syntaxOperator": "primary",
105
- "syntaxPunctuation": "secondary",
106
- "thinkingOff": "secondary",
107
- "thinkingMinimal": "primary",
108
- "thinkingLow": "#00aaff",
109
- "thinkingMedium": "#00ffff",
110
- "thinkingHigh": "#ff00ff",
111
- "thinkingXhigh": "#ff0000",
112
- "bashMode": "#ffaa00"
113
- }
114
- }
115
- ```
116
-
117
- 3. Select the theme via `/settings`.
118
-
119
- **Hot reload:** When you edit the currently active custom theme file, Threadwell reloads it automatically for immediate visual feedback.
120
-
121
- ## Theme Format
122
-
123
- ```json
124
- {
125
- "$schema": "https://raw.githubusercontent.com/Threadwell source/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json",
126
- "name": "my-theme",
127
- "vars": {
128
- "blue": "#0066cc",
129
- "gray": 242
130
- },
131
- "colors": {
132
- "accent": "blue",
133
- "muted": "gray",
134
- "text": "",
135
- ...
136
- }
137
- }
138
- ```
139
-
140
- - `name` is required and must be unique.
141
- - `vars` is optional. Define reusable colors here, then reference them in `colors`.
142
- - `colors` must define all 51 required tokens.
143
-
144
- The `$schema` field enables editor auto-completion and validation.
145
-
146
- ## Color Tokens
147
-
148
- Every theme must define all 51 color tokens. There are no optional colors.
149
-
150
- ### Core UI (11 colors)
151
-
152
- | Token | Purpose |
153
- |-------|---------|
154
- | `accent` | Primary accent (logo, selected items, cursor) |
155
- | `border` | Normal borders |
156
- | `borderAccent` | Highlighted borders |
157
- | `borderMuted` | Subtle borders (editor) |
158
- | `success` | Success states |
159
- | `error` | Error states |
160
- | `warning` | Warning states |
161
- | `muted` | Secondary text |
162
- | `dim` | Tertiary text |
163
- | `text` | Default text (usually `""`) |
164
- | `thinkingText` | Thinking block text |
165
-
166
- ### Backgrounds & Content (11 colors)
167
-
168
- | Token | Purpose |
169
- |-------|---------|
170
- | `selectedBg` | Selected line background |
171
- | `userMessageBg` | User message background |
172
- | `userMessageText` | User message text |
173
- | `customMessageBg` | Extension message background |
174
- | `customMessageText` | Extension message text |
175
- | `customMessageLabel` | Extension message label |
176
- | `toolPendingBg` | Tool box (pending) |
177
- | `toolSuccessBg` | Tool box (success) |
178
- | `toolErrorBg` | Tool box (error) |
179
- | `toolTitle` | Tool title |
180
- | `toolOutput` | Tool output text |
181
-
182
- ### Markdown (10 colors)
183
-
184
- | Token | Purpose |
185
- |-------|---------|
186
- | `mdHeading` | Headings |
187
- | `mdLink` | Link text |
188
- | `mdLinkUrl` | Link URL |
189
- | `mdCode` | Inline code |
190
- | `mdCodeBlock` | Code block content |
191
- | `mdCodeBlockBorder` | Code block fences |
192
- | `mdQuote` | Blockquote text |
193
- | `mdQuoteBorder` | Blockquote border |
194
- | `mdHr` | Horizontal rule |
195
- | `mdListBullet` | List bullets |
196
-
197
- ### Tool Diffs (3 colors)
198
-
199
- | Token | Purpose |
200
- |-------|---------|
201
- | `toolDiffAdded` | Added lines |
202
- | `toolDiffRemoved` | Removed lines |
203
- | `toolDiffContext` | Context lines |
204
-
205
- ### Syntax Highlighting (9 colors)
206
-
207
- | Token | Purpose |
208
- |-------|---------|
209
- | `syntaxComment` | Comments |
210
- | `syntaxKeyword` | Keywords |
211
- | `syntaxFunction` | Function names |
212
- | `syntaxVariable` | Variables |
213
- | `syntaxString` | Strings |
214
- | `syntaxNumber` | Numbers |
215
- | `syntaxType` | Types |
216
- | `syntaxOperator` | Operators |
217
- | `syntaxPunctuation` | Punctuation |
218
-
219
- ### Thinking Level Borders (6 colors)
220
-
221
- Editor border colors indicating thinking level (visual hierarchy from subtle to prominent):
222
-
223
- | Token | Purpose |
224
- |-------|---------|
225
- | `thinkingOff` | Thinking off |
226
- | `thinkingMinimal` | Minimal thinking |
227
- | `thinkingLow` | Low thinking |
228
- | `thinkingMedium` | Medium thinking |
229
- | `thinkingHigh` | High thinking |
230
- | `thinkingXhigh` | Extra high thinking |
231
-
232
- ### Bash Mode (1 color)
233
-
234
- | Token | Purpose |
235
- |-------|---------|
236
- | `bashMode` | Editor border in bash mode (`!` prefix) |
237
-
238
- ### HTML Export (optional)
239
-
240
- The `export` section controls colors for `/export` HTML output. If omitted, colors are derived from `userMessageBg`.
241
-
242
- ```json
243
- {
244
- "export": {
245
- "pageBg": "#18181e",
246
- "cardBg": "#1e1e24",
247
- "infoBg": "#3c3728"
248
- }
249
- }
250
- ```
251
-
252
- ## Color Values
253
-
254
- Four formats are supported:
255
-
256
- | Format | Example | Description |
257
- |--------|---------|-------------|
258
- | Hex | `"#ff0000"` | 6-digit hex RGB |
259
- | 256-color | `39` | xterm 256-color palette index (0-255) |
260
- | Variable | `"primary"` | Reference to a `vars` entry |
261
- | Default | `""` | Terminal's default color |
262
-
263
- ### 256-Color Palette
264
-
265
- - `0-15`: Basic ANSI colors (terminal-dependent)
266
- - `16-231`: 6×6×6 RGB cube (`16 + 36×R + 6×G + B` where R,G,B are 0-5)
267
- - `232-255`: Grayscale ramp
268
-
269
- ### Terminal Compatibility
270
-
271
- Threadwell uses 24-bit RGB colors. Most modern terminals support this (iTerm2, Kitty, WezTerm, Windows Terminal, VS Code). For older terminals with only 256-color support, Threadwell falls back to the nearest approximation.
272
-
273
- Check truecolor support:
274
-
275
- ```bash
276
- echo $COLORTERM # Should output "truecolor" or "24bit"
277
- ```
278
-
279
- ## Tips
280
-
281
- **Dark terminals:** Use bright, saturated colors with higher contrast.
282
-
283
- **Light terminals:** Use darker, muted colors with lower contrast.
284
-
285
- **Color harmony:** Start with a base palette (Nord, Gruvbox, Tokyo Night), define it in `vars`, and reference consistently.
286
-
287
- **Testing:** Check your theme with different message types, tool states, markdown content, and long wrapped text.
288
-
289
- **VS Code:** Set `terminal.integrated.minimumContrastRatio` to `1` for accurate colors.
290
-
291
- ## Examples
292
-
293
- See the built-in themes:
294
- - [dark.json](../src/modes/interactive/theme/dark.json)
295
- - [light.json](../src/modes/interactive/theme/light.json)
1
+ # Themes
2
+
3
+ Threadwell currently ships with a fixed built-in terminal theme.
4
+
5
+ The theme engine remains internal because the TUI components depend on theme tokens, but user-facing custom theme selection and package theme management are frozen for now. Existing `theme` or `themes` settings are ignored by the interactive UI and should not be used for new configuration.
package/docs/usage.md CHANGED
@@ -13,7 +13,7 @@ The interface has four main areas:
13
13
  - **Editor** - where you type; border color indicates the current thinking level
14
14
  - **Footer** - working directory, session name, token/cache usage, cost, context usage, and current model
15
15
 
16
- The editor can be replaced temporarily by built-in UI such as `/settings` or by custom extension UI.
16
+ The editor can be replaced temporarily by built-in UI such as `/settings` and other terminal-native overlays.
17
17
 
18
18
  ### Editor Features
19
19
 
@@ -31,14 +31,14 @@ See [Keybindings](keybindings.md) for all shortcuts and customization.
31
31
 
32
32
  ## Slash Commands
33
33
 
34
- Type `/` in the editor to open command completion. Extensions can register custom commands, skills are available as `/skill:name`, and prompt templates expand via `/templatename`.
34
+ Type `/` in the editor to open command completion. Built-in commands cover model selection, settings, sessions, memory, context, and exports. Skills and prompt templates can also appear as slash commands when configured.
35
35
 
36
36
  | Command | Description |
37
37
  |---------|-------------|
38
38
  | `/login`, `/logout` | Manage OAuth or API-key credentials |
39
39
  | `/model` | Switch models |
40
40
  | `/scoped-models` | Enable/disable models for Ctrl+P cycling |
41
- | `/settings` | Thinking level, theme, message delivery, transport |
41
+ | `/settings` | Thinking level, message delivery, transport |
42
42
  | `/resume` | Pick from previous sessions |
43
43
  | `/new` | Start a new session |
44
44
  | `/name <name>` | Set session display name |
@@ -126,15 +126,14 @@ thread [options] [@files...] [messages...]
126
126
  ### Package Commands
127
127
 
128
128
  ```bash
129
- thread install <source> [-l] # Install package, -l for project-local
130
- thread remove <source> [-l] # Remove package
131
- thread uninstall <source> [-l] # Alias for remove
132
- thread update [source|self] # Update Threadwell and packages; skips pinned packages
133
- thread update --extensions # Update packages only
134
- thread update --self # Update Threadwell only
135
- thread update --extension <src> # Update one package
136
- thread list # List installed packages
137
- thread config # Enable/disable package resources
129
+ thread update # Update Threadwell and packages; skips pinned packages
130
+ thread update --self # Update Threadwell only
131
+ thread list # List installed packages
132
+
133
+ # Advanced local package management
134
+ thread install <source> [-l] # Install package, -l for project-local
135
+ thread remove <source> [-l] # Remove package
136
+ thread config # Enable/disable package resources
138
137
  ```
139
138
 
140
139
  See [Threadwell Packages](packages.md) for package sources and security notes.
@@ -187,7 +186,7 @@ cat README.md | Threadwell -p "Summarize this text"
187
186
 
188
187
  Built-in tools: `read`, `bash`, `edit`, `write`, `grep`, `find`, `ls`.
189
188
 
190
- ### Resource Options
189
+ ### Advanced Resource Options
191
190
 
192
191
  | Option | Description |
193
192
  |--------|-------------|
@@ -197,11 +196,9 @@ Built-in tools: `read`, `bash`, `edit`, `write`, `grep`, `find`, `ls`.
197
196
  | `--no-skills` | Disable skill discovery |
198
197
  | `--prompt-template <path>` | Load a prompt template; repeatable |
199
198
  | `--no-prompt-templates` | Disable prompt template discovery |
200
- | `--theme <path>` | Load a theme; repeatable |
201
- | `--no-themes` | Disable theme discovery |
202
199
  | `--no-context-files`, `-nc` | Disable `AGENTS.md` and `CLAUDE.md` discovery |
203
200
 
204
- Combine `--no-*` with explicit flags to load exactly what you need, ignoring settings. Example:
201
+ These are mainly for extension/package development and troubleshooting. Combine `--no-*` with explicit flags to load exactly what you need, ignoring settings. Example:
205
202
 
206
203
  ```bash
207
204
  thread --no-extensions -e ./my-extension.ts
@@ -270,7 +267,7 @@ thread --tools read,grep,find,ls -p "Review the code"
270
267
 
271
268
  ## Design Principles
272
269
 
273
- Threadwell keeps the core small and pushes workflow-specific behavior into extensions, skills, prompt templates, and packages.
270
+ Threadwell keeps the day-to-day surface small and terminal-native. Advanced workflow-specific behavior can still live in extensions, skills, prompt templates, and packages.
274
271
 
275
272
  It intentionally does not include built-in MCP, sub-agents, permission popups, plan mode, to-dos, or background bash. You can build or install those workflows as extensions or packages, or use external tools such as containers and tmux.
276
273
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "threadwell",
3
- "version": "0.0.6",
3
+ "version": "0.0.7",
4
4
  "description": "Coding agent CLI with read, bash, edit, write tools and session management",
5
5
  "type": "module",
6
6
  "threadwellConfig": {
@@ -39,9 +39,9 @@
39
39
  "prepublishOnly": "npm run clean && npm run build"
40
40
  },
41
41
  "dependencies": {
42
- "@threadwell/agent-core": "^0.0.6",
43
- "@threadwell/ai": "^0.0.6",
44
- "@threadwell/tui": "^0.0.6",
42
+ "@threadwell/agent-core": "^0.0.7",
43
+ "@threadwell/ai": "^0.0.7",
44
+ "@threadwell/tui": "^0.0.7",
45
45
  "@silvia-odwyer/photon-node": "^0.3.4",
46
46
  "@types/better-sqlite3": "^7.6.13",
47
47
  "better-sqlite3": "^12.10.0",