twskin 0.5.6 → 0.5.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.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,23 @@ All notable changes to this package are documented here. This project follows
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [0.5.7] - 2026-07-29
9
+
10
+ ### Fixed
11
+
12
+ - Prevented theme artwork from bleeding through right-side working content by
13
+ making layout-surface ownership a runtime contract. The main workspace now
14
+ retains its declared surface color, opacity, and blur beneath Markdown,
15
+ Task Summary, and Code/Design content.
16
+ - Updated `Solvay 1927 · Solarized Light` to theme version `1.0.4`, restoring
17
+ a readable warm-paper surface in the right workspace and Monaco editor.
18
+
19
+ ### Changed
20
+
21
+ - Added catalog validation that rejects official theme CSS which overrides a
22
+ runtime-owned layout surface directly; themes use surface-decoration
23
+ variables for optional texture instead.
24
+
8
25
  ## [0.5.6] - 2026-07-27
9
26
 
10
27
  ### Changed
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "twskin",
3
- "version": "0.5.6",
3
+ "version": "0.5.7",
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.6";
19
+ const VERSION = "0.5.7";
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.6",
3
+ "packageVersion": "0.5.7",
4
4
  "themesBundled": false,
5
5
  "files": [
6
6
  {
@@ -11,7 +11,7 @@
11
11
  {
12
12
  "path": "injector.mjs",
13
13
  "size": 31308,
14
- "sha256": "4256fcebb123657be1ba2968dae6d3904f54618d120e7d9f62b02796fcdebed0"
14
+ "sha256": "b1ea0108ab8e4449bb509de458705e0019cad3d342fb1ef9fcd8ec98c890bf79"
15
15
  },
16
16
  {
17
17
  "path": "restore.sh",
@@ -30,8 +30,8 @@
30
30
  },
31
31
  {
32
32
  "path": "styles/base.css",
33
- "size": 32439,
34
- "sha256": "cfd57424d2b31732a44e0dd59410ab039d9842017112e6bd688a37db4831262a"
33
+ "size": 33535,
34
+ "sha256": "0356d33f4197461e325eb563471219064ded7cc75e835c28de6dbedb919c2a05"
35
35
  },
36
36
  {
37
37
  "path": "styles/manager.css",
@@ -73,10 +73,12 @@ body.trae-skin-v2 {
73
73
  }
74
74
  body.trae-skin-v2 .task-list-panel {
75
75
  background-color: var(--trae-skin-left-surface) !important;
76
- background-image: var(--trae-skin-left-art-layer, none) !important;
77
- background-position: center, var(--trae-skin-left-art-position, center) !important;
78
- background-size: cover, var(--trae-skin-left-art-size, cover) !important;
79
- background-repeat: no-repeat !important;
76
+ background-image:
77
+ var(--trae-skin-left-decoration, none),
78
+ var(--trae-skin-left-art-layer, none) !important;
79
+ background-position: var(--trae-skin-left-decoration-position, center), center, var(--trae-skin-left-art-position, center) !important;
80
+ background-size: var(--trae-skin-left-decoration-size, 100% 100%), 100% 100%, var(--trae-skin-left-art-size, cover) !important;
81
+ background-repeat: var(--trae-skin-left-decoration-repeat, no-repeat), no-repeat, no-repeat !important;
80
82
  border-right: 1px solid var(--trae-skin-divider) !important;
81
83
  backdrop-filter:
82
84
  blur(var(--trae-skin-left-blur))
@@ -86,7 +88,11 @@ body.trae-skin-v2 .task-list-panel {
86
88
  saturate(var(--trae-skin-left-saturation)) !important;
87
89
  }
88
90
  body.trae-skin-v2 .solo-lite-chat-panel-container {
89
- background: var(--trae-skin-chat-surface) !important;
91
+ background-color: var(--trae-skin-chat-surface) !important;
92
+ background-image: var(--trae-skin-chat-decoration, none) !important;
93
+ background-position: var(--trae-skin-chat-decoration-position, center) !important;
94
+ background-size: var(--trae-skin-chat-decoration-size, 100% 100%) !important;
95
+ background-repeat: var(--trae-skin-chat-decoration-repeat, no-repeat) !important;
90
96
  border-right: 1px solid var(--trae-skin-divider) !important;
91
97
  backdrop-filter:
92
98
  blur(var(--trae-skin-chat-blur))
@@ -97,10 +103,12 @@ body.trae-skin-v2 .solo-lite-chat-panel-container {
97
103
  }
98
104
  body.trae-skin-v2 .solo-lite-main-area {
99
105
  background-color: var(--trae-skin-main-surface) !important;
100
- background-image: var(--trae-skin-right-art-layer, none) !important;
101
- background-position: center, var(--trae-skin-right-art-position, right center) !important;
102
- background-size: cover, var(--trae-skin-right-art-size, auto 100%) !important;
103
- background-repeat: no-repeat !important;
106
+ background-image:
107
+ var(--trae-skin-main-decoration, none),
108
+ var(--trae-skin-right-art-layer, none) !important;
109
+ background-position: var(--trae-skin-main-decoration-position, center), center, var(--trae-skin-right-art-position, right center) !important;
110
+ background-size: var(--trae-skin-main-decoration-size, 100% 100%), 100% 100%, var(--trae-skin-right-art-size, auto 100%) !important;
111
+ background-repeat: var(--trae-skin-main-decoration-repeat, no-repeat), no-repeat, no-repeat !important;
104
112
  backdrop-filter:
105
113
  blur(var(--trae-skin-main-blur))
106
114
  saturate(var(--trae-skin-main-saturation)) !important;
@@ -109,7 +117,11 @@ body.trae-skin-v2 .solo-lite-main-area {
109
117
  saturate(var(--trae-skin-main-saturation)) !important;
110
118
  }
111
119
  body.trae-skin-v2 .panel-container > .panel-content {
112
- background: var(--trae-skin-landing-surface) !important;
120
+ background-color: var(--trae-skin-landing-surface) !important;
121
+ background-image: var(--trae-skin-landing-decoration, none) !important;
122
+ background-position: var(--trae-skin-landing-decoration-position, center) !important;
123
+ background-size: var(--trae-skin-landing-decoration-size, 100% 100%) !important;
124
+ background-repeat: var(--trae-skin-landing-decoration-repeat, no-repeat) !important;
113
125
  backdrop-filter:
114
126
  blur(var(--trae-skin-landing-blur))
115
127
  saturate(var(--trae-skin-landing-saturation)) !important;