twskin 0.5.9 → 0.5.10

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/CHANGELOG.md CHANGED
@@ -5,6 +5,24 @@ All notable changes to this package are documented here. This project follows
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [0.5.10] - 2026-07-29
9
+
10
+ ### Fixed
11
+
12
+ - Updated `Solvay 1927 · Solarized Light` to theme version `1.0.11`. Task
13
+ previews now remain on a readable light-paper surface, user messages use a
14
+ tighter index-card layout, and the composer has one coherent archive frame
15
+ instead of competing inner and outer borders.
16
+ - Made the sidebar and update-banner actions follow every theme's semantic
17
+ popover, text, border and interaction colors, preventing unreadable dark
18
+ fills in light themes.
19
+
20
+ ### For contributors
21
+
22
+ - Documented the token, component and host-adapter mapping chain, and added
23
+ regression checks for unmapped runtime variables and theme overrides of
24
+ runtime-owned update actions.
25
+
8
26
  ## [0.5.9] - 2026-07-29
9
27
 
10
28
  ### Fixed
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "twskin",
3
- "version": "0.5.9",
3
+ "version": "0.5.10",
4
4
  "description": "An unofficial community theme manager and CLI for TRAE Work on macOS.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -16,7 +16,7 @@ import { spawnSync } from "node:child_process";
16
16
  import { fileURLToPath } from "node:url";
17
17
 
18
18
  const ROOT = path.dirname(fileURLToPath(import.meta.url));
19
- const VERSION = "0.5.9";
19
+ const VERSION = "0.5.10";
20
20
  const DATA_DIR = process.env.TWSKIN_DATA_DIR || path.join(os.homedir(), ".trae-work-skin");
21
21
 
22
22
  function parseArgs(argv) {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "packageVersion": "0.5.9",
3
+ "packageVersion": "0.5.10",
4
4
  "themesBundled": false,
5
5
  "files": [
6
6
  {
@@ -10,8 +10,8 @@
10
10
  },
11
11
  {
12
12
  "path": "injector.mjs",
13
- "size": 31308,
14
- "sha256": "0f50af84b61942a6a9c3c44c3b56a9b4cfbf229fa2ae2c0ea754b21a312992b0"
13
+ "size": 31309,
14
+ "sha256": "7560f2353b03dd52a60fc6b7a87825b03e621e651a3f8c780c2ab03f91f88934"
15
15
  },
16
16
  {
17
17
  "path": "restore.sh",
@@ -20,8 +20,8 @@
20
20
  },
21
21
  {
22
22
  "path": "skin.js",
23
- "size": 61967,
24
- "sha256": "c4b177a30b7d0681c28324d8042e0e75972df71924120342a1b852a8e0ff5cf0"
23
+ "size": 62024,
24
+ "sha256": "4cc53fd2534ba09b15ffe8260f3684430c2fd2477cfdb254f4bd5d31a7eb184b"
25
25
  },
26
26
  {
27
27
  "path": "start.sh",
@@ -30,8 +30,8 @@
30
30
  },
31
31
  {
32
32
  "path": "styles/base.css",
33
- "size": 33535,
34
- "sha256": "0356d33f4197461e325eb563471219064ded7cc75e835c28de6dbedb919c2a05"
33
+ "size": 35586,
34
+ "sha256": "a8bb84a963b8353372bb226c05b81bcaebe982ff18a45355a241f4d24b47e8ba"
35
35
  },
36
36
  {
37
37
  "path": "styles/manager.css",
package/runtime/skin.js CHANGED
@@ -416,6 +416,7 @@
416
416
  setVar("--trae-skin-success", state.success);
417
417
  setVar("--trae-skin-input", surface.input);
418
418
  setVar("--trae-skin-menu", surface.menu);
419
+ setVar("--trae-skin-card-hover", surface.cardHover);
419
420
  setVar("--trae-skin-border-subtle", border.subtle);
420
421
  setVar("--trae-skin-border-default", border.default);
421
422
  setVar("--trae-skin-border-strong", border.strong);
@@ -229,6 +229,42 @@ body.trae-skin-v2 [role="textbox"]:focus-visible {
229
229
  outline: none !important;
230
230
  box-shadow: none !important;
231
231
  }
232
+
233
+ /* 维护操作是宿主固定入口,不会继承 VS Code 的 button token。
234
+ 统一以语义浮层表现 Update / Restart / Download,避免每套主题各自硬编码颜色。 */
235
+ body.trae-skin-v2 .task-list-panel button:has(.progressCircleContainer),
236
+ body.trae-skin-v2 .soloUpdateStatusWrapper .updateAlertActions > button {
237
+ color: var(--trae-skin-text-secondary) !important;
238
+ border: 1px solid var(--trae-skin-border-default) !important;
239
+ border-radius: var(--trae-skin-radius-medium) !important;
240
+ background: var(--trae-skin-popover) !important;
241
+ box-shadow: none !important;
242
+ }
243
+ body.trae-skin-v2 .task-list-panel button:has(.progressCircleContainer) *,
244
+ body.trae-skin-v2 .soloUpdateStatusWrapper .updateAlertActions > button * {
245
+ color: inherit !important;
246
+ }
247
+ body.trae-skin-v2 .task-list-panel button:has(.progressCircleContainer) .progressCircleContainer,
248
+ body.trae-skin-v2 .task-list-panel button:has(.progressCircleContainer) .progressCircleContainer * {
249
+ color: var(--trae-skin-accent) !important;
250
+ }
251
+ body.trae-skin-v2 .task-list-panel button:has(.progressCircleContainer):hover:not(:disabled),
252
+ body.trae-skin-v2 .soloUpdateStatusWrapper .updateAlertActions > button:hover:not(:disabled) {
253
+ color: var(--trae-skin-text-primary) !important;
254
+ border-color: var(--trae-skin-border-strong) !important;
255
+ background: var(--trae-skin-popover-hover) !important;
256
+ }
257
+ body.trae-skin-v2 .task-list-panel button:has(.progressCircleContainer):active:not(:disabled),
258
+ body.trae-skin-v2 .soloUpdateStatusWrapper .updateAlertActions > button:active:not(:disabled) {
259
+ background: var(--trae-skin-card-hover) !important;
260
+ }
261
+ body.trae-skin-v2 .task-list-panel button:has(.progressCircleContainer):disabled,
262
+ body.trae-skin-v2 .soloUpdateStatusWrapper .updateAlertActions > button:disabled,
263
+ body.trae-skin-v2 .soloUpdateStatusWrapper .updateAlertActions > button[aria-disabled="true"] {
264
+ color: var(--trae-skin-text-disabled) !important;
265
+ border-color: var(--trae-skin-border-subtle) !important;
266
+ background: var(--trae-skin-input) !important;
267
+ }
232
268
  body.trae-skin-v2 button[role="tab"][aria-selected="true"] {
233
269
  color: var(--trae-skin-accent) !important;
234
270
  }