@house365/comate 0.2.2 → 0.2.3

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 (2) hide show
  1. package/bin/init-run.mjs +26 -13
  2. package/package.json +1 -1
package/bin/init-run.mjs CHANGED
@@ -166,28 +166,35 @@ export function pkgVersion(root = resolve(import.meta.dirname, '..')) {
166
166
  // Box-drawing glyphs need a UTF-8 capable terminal. Windows consoles still
167
167
  // default to a legacy codepage where they render as mojibake, so the wordmark
168
168
  // only goes out when the codepage says otherwise; everything else gets the
169
- // plain line. Piped output is skipped too — logos belong on screens, not in
170
- // logs or CI transcripts.
171
- export function banner(version, { tty = process.stdout.isTTY, utf8 = unicodeSafe() } = {}) {
169
+ // plain line.
170
+ //
171
+ // isTTY deliberately does NOT gate this. npm's Windows global install resolves
172
+ // `comate` to a comate.ps1 shim, and PowerShell calling node through a .ps1
173
+ // wrapper takes over stdout — so isTTY is false in a real terminal and the
174
+ // wordmark never showed. CI is the case actually worth suppressing, and it
175
+ // announces itself with an env var.
176
+ export function banner(version, { utf8 = unicodeSafe(), ci = isCI() } = {}) {
172
177
  const tag = `comate${version ? ` v${version}` : ''}`;
173
- const plain = `\n ${tag} — OpenSpec + Superpowers 规约驱动开发编排器\n`;
174
- if (!tty || !utf8) return plain;
178
+ const plain = `\n ${tag} - AI coding almost there!\n`;
179
+ if (!utf8 || ci) return plain;
175
180
 
176
181
  const art = [
177
- '██████╗ ██████╗ ███╗ ███╗ █████╗ ███████╗',
178
- '██╔═══╝██╔═══██╗████╗ ████║██╔══██╗╚══██╔══╝',
179
- '██║ ██║ ██║██╔████╔██║███████║ ██║',
180
- '██║ ██║ ██║██║╚██╔╝██║██╔══██║ ██║',
181
- '╚██████╗╚██████╔╝██║ ╚═╝ ██║██║ ██║ ██║',
182
- ' ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝',
182
+ ' ██████╗ ██████╗ ███╗ ███╗ █████╗ ████████╗███████╗',
183
+ '██╔════╝██╔═══██╗████╗ ████║██╔══██╗╚══██╔══╝██╔════╝',
184
+ '██║ ██║ ██║██╔████╔██║███████║ ██║ █████╗ ',
185
+ '██║ ██║ ██║██║╚██╔╝██║██╔══██║ ██║ ██╔══╝ ',
186
+ '╚██████╗╚██████╔╝██║ ╚═╝ ██║██║ ██║ ██║ ███████╗',
187
+ ' ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚══════╝',
183
188
  ];
184
189
  const cyan = (s) => (process.env.NO_COLOR ? s : `\x1B[36m${s}\x1B[0m`);
185
190
  const dim = (s) => (process.env.NO_COLOR ? s : `\x1B[2m${s}\x1B[0m`);
186
191
  return [
187
192
  '',
188
- ...art.map((line) => ` ${cyan(line)}`),
193
+ // Trailing padding keeps the source rows aligned; strip it so the colour
194
+ // reset doesn't sit behind spaces the terminal may highlight on select.
195
+ ...art.map((line) => ` ${cyan(line.replace(/\s+$/, ''))}`),
189
196
  '',
190
- ` ${dim(`${tag} — OpenSpec + Superpowers 规约驱动开发编排器`)}`,
197
+ ` ${dim(`${tag} - AI coding almost there!`)}`,
191
198
  '',
192
199
  ].join('\n');
193
200
  }
@@ -199,3 +206,9 @@ function unicodeSafe() {
199
206
  if (process.platform !== 'win32') return true;
200
207
  return /65001/.test(capture('chcp', []) ?? '');
201
208
  }
209
+
210
+ // Every major CI sets CI=true; GITHUB_ACTIONS covers the Actions runner even in
211
+ // the odd config that doesn't.
212
+ function isCI() {
213
+ return Boolean(process.env.CI || process.env.GITHUB_ACTIONS);
214
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@house365/comate",
3
- "version": "0.2.2",
3
+ "version": "0.2.3",
4
4
  "description": "comate —— OpenSpec + Superpowers 规约驱动的 AI 开发编排器(Agent Skills)",
5
5
  "type": "module",
6
6
  "license": "MIT",