dsh-code-server-app 0.1.2 → 0.1.19

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/lib/index.js CHANGED
@@ -63,6 +63,9 @@ export const Config = z.object({
63
63
  /** reserveComposer=true(默认)窗口不盖输入框(初始/缩放/最大化止于输入栏上方);
64
64
  * false 时允许盖住输入框(最大化到视口底)。 */
65
65
  reserveComposer: z.boolean().default(true),
66
+ /** windowedOpen=false(默认)点击悬浮球打开内部浮动窗口;
67
+ * true 时改为在浏览器新标签页打开 code-server(自动启动并跟随工作区)。 */
68
+ windowedOpen: z.boolean().default(false),
66
69
  });
67
70
 
68
71
  const DEFAULT_CONFIG = {
@@ -105,11 +108,10 @@ function win32() {
105
108
  return process.platform === 'win32';
106
109
  }
107
110
 
108
- /** 插件自带 code-server 入口探测,兼容三种依赖布局:
111
+ /** 插件自带 code-server 入口探测,兼容两种依赖布局:
109
112
  * 1. profile 专用目录:profileRoot/.code-server-app/node_modules/code-server/...
110
113
  * (方案 D 默认安装位,独立项目、避开 profile 依赖树冲突);
111
- * 2. npm/flat:插件目录/node_modules/code-server/...(工作区/独立 npm install);
112
- * 3. pnpm hoisted:profile node_modules/code-server/...(历史布局)。
114
+ * 2. 包内:插件目录/node_modules/code-server/...(开发期 link:/独立 npm install 布局)
113
115
  * 不存在 → 回退配置/PATH。 */
114
116
  function bundledRuntimeEntry() {
115
117
  try {
@@ -117,8 +119,8 @@ function bundledRuntimeEntry() {
117
119
  const candidates = [
118
120
  // profile 专用目录:here=.../dsh-code-server/lib → ../..=node_modules → ../../..=profile根
119
121
  path.join(here, '..', '..', '..', '.code-server-app', 'node_modules', 'code-server', 'out', 'node', 'entry.js'),
122
+ // 包内(dev link / 独立目录):here=.../lib → ../node_modules
120
123
  path.join(here, '..', 'node_modules', 'code-server', 'out', 'node', 'entry.js'),
121
- path.join(here, '..', '..', 'code-server', 'out', 'node', 'entry.js'),
122
124
  ];
123
125
  for (const entry of candidates) {
124
126
  if (fs.existsSync(entry)) return entry;
@@ -229,6 +231,7 @@ export async function apply(ctx, config) {
229
231
  // ---- 设置:行配置为种子;settings 命名空间持久化(设置卡片写入) ----
230
232
  const settingsSvc = ctx.get('settings');
231
233
  let reserveComposer = true;
234
+ let windowedOpen = false;
232
235
  if (settingsSvc !== undefined && typeof settingsSvc.register === 'function') {
233
236
  try {
234
237
  const scope = settingsSvc.register(SETTINGS_NS, Config);
@@ -236,15 +239,20 @@ export async function apply(ctx, config) {
236
239
  if (rawDoc !== undefined && rawDoc !== null) {
237
240
  const resolved = scope.get();
238
241
  reserveComposer = resolved && typeof resolved.reserveComposer === 'boolean' ? resolved.reserveComposer : true;
242
+ windowedOpen = resolved && typeof resolved.windowedOpen === 'boolean' ? resolved.windowedOpen : false;
239
243
  }
240
244
  scope.watch((next) => {
241
245
  if (next != null && typeof next.reserveComposer === 'boolean') {
242
246
  reserveComposer = next.reserveComposer;
243
247
  console.log(`[code-server] reserveComposer updated: ${reserveComposer}`);
244
248
  }
249
+ if (next != null && typeof next.windowedOpen === 'boolean') {
250
+ windowedOpen = next.windowedOpen;
251
+ console.log(`[code-server] windowedOpen updated: ${windowedOpen}`);
252
+ }
245
253
  });
246
254
  } catch (error) {
247
- console.error(`[code-server] settings unavailable; using default reserveComposer=true: ${error.message}`);
255
+ console.error(`[code-server] settings unavailable; using defaults (reserveComposer=true, windowedOpen=false): ${error.message}`);
248
256
  }
249
257
  }
250
258
 
@@ -282,6 +290,7 @@ export async function apply(ctx, config) {
282
290
  logTail: state.logTail.slice(-LOG_TAIL_MAX),
283
291
  adopted: state.adopted,
284
292
  reserveComposer,
293
+ windowedOpen,
285
294
  env: state.env,
286
295
  setup: {
287
296
  running: state.setup.running,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "dsh-code-server-app",
3
- "version": "0.1.2",
4
- "description": "Integrate code-server (VS Code in the browser) into DSH Web: sidebar action + fullscreen overlay, host-side process lifecycle over a /code-server JSON API.",
3
+ "version": "0.1.19",
4
+ "description": "Integrate code-server (VS Code in the browser) into DSH Web: floating ball entry + fullscreen overlay, host-side process lifecycle over a /code-server JSON API (motion-based spring window animations).",
5
5
  "homepage": "https://github.com/jinsiyu/dsh-code-server-app",
6
6
  "repository": {
7
7
  "type": "git",
@@ -36,7 +36,12 @@
36
36
  ],
37
37
  "scripts": {
38
38
  "postinstall": "node scripts/setup-code-server.mjs",
39
- "setup:code-server": "node scripts/setup-code-server.mjs"
39
+ "setup:code-server": "node scripts/setup-code-server.mjs",
40
+ "build:client": "node scripts/build-client.mjs"
41
+ },
42
+ "devDependencies": {
43
+ "esbuild": "^0.25.0",
44
+ "motion": "^12.0.0"
40
45
  },
41
46
  "license": "MIT",
42
47
  "allowScripts": {
@@ -52,13 +52,11 @@ function profileRootOf() {
52
52
  function findCodeServer() {
53
53
  // 布局候选(与安装目标同顺序):
54
54
  // 1. profile 专用目录:profileRoot\code-server-app\node_modules\code-server
55
- // 2. 与主包平级:profileRoot\node_modules\code-server(pnpm hoisted,历史布局)
56
- // 3. 包内:pkgRoot/node_modules/code-server(回退/独立目录)
55
+ // 2. 包内:pkgRoot/node_modules/code-server(开发期 link:/独立目录)
57
56
  const profileRoot = profileRootOf();
58
57
  const cands = [];
59
58
  if (profileRoot !== null) {
60
59
  cands.push(join(profileRoot, APP_DIR_NAME, 'node_modules', 'code-server'));
61
- cands.push(join(profileRoot, 'node_modules', 'code-server'));
62
60
  }
63
61
  cands.push(join(pkgRoot, 'node_modules', 'code-server'));
64
62
  for (const cand of cands) {