gbos 1.2.7 → 1.2.9

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.
@@ -0,0 +1,25 @@
1
+ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
2
+ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
3
+ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
4
+ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
5
+ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
6
+ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
7
+ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8
+ @@@@@@@@@@@@@@@@@@@@@@@@&&%%%&@@&@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
9
+ @@@@@@@@@@@@@@@@@@@#%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
10
+ @@@@@@@@@@@@@@%@#%%%%%%%%%%%%%%%%%%%%%#@@@@@@@@@@@@@@@@@@@@@@@@#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
11
+ @@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%@@@&@@@@@@@@@@@@@@@@@@@@#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
12
+ @@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%&@@@@@@@#%%%%%%%%%%%#@@%#%%%%%%%%%%%%@@@@@@@#%%%%%%%%#@@@@@%%%%%%%%%#@@@@@@@@@%%%@@@@@%%%%%%%%%%%@@@@@@@@@@@@@@
13
+ @@@@@@@@@@@@%%%%%%%%%%%%%%@@%%%%%%%@@%%@@@@@@%%%%&@@@@&#%%%%@@@#%%%%@@@@@@%%%&@@@#%%%%@@@@@%%%%@@&%%%@@@@@&&@@@@@@@@@%%%@@@@%%%%@%@@@&%%%&@@@@@@@@@@@@
14
+ @@@@@@@@@@@@%%%%%%%%%%%%%%@@&%%%%%%%%%%&@@@@@%%%@@@@@@@@&%%%@@@#%%&@@@@@@@@%%%#@&%%%@@@@@@@&%%%&@@%%%%%%%&@@@@@@@@@@@%%%@@@#%%%@@@@@@@@%%%%@@@@@@@@@@@
15
+ @@@@@@@@@@@@%%%%%%%%%%%%%%%@@@%%%%%%%%%&@@@@&%%%%@@@@@@@%%%%@@@#%%%@@@@@@@@%%%@@&%%%@@@@@@@@%%%&@@@@@@%%%%%%%@@@@@@@@%%%@@@%%%#@@@@@@@%%%%@@@@@@@@@@@@
16
+ @@@@@@@@@@@@#%%%%%%%%%%%%%%%%@@@#%%%%%%&@@@@@&%%%#@@@@&%%%%%@@@#%%%%#@@@@#%%%&@@@&%%%%@@@@&%%%%@@@%%%@@@@%%%&@@%%%@@@%%%@@@&%%%%&@@@@#%%%&@@@@@@@@@@@@
17
+ @@@@@@@@@@@@@%%%%%%%%%%%%%%%%%@@@%%%%%%@@@@@@@@@%%%%%%%%&%%#@@@#%%%&%%%%%%%&@@@@@@@&%%%%%%%%%@@@@@&%%%%%%%%@@@@%%%&@@%%%@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@
18
+ @@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@&%%%%%@@@@@@@@@@@@@@@@@%%%&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
19
+ @@@@@@@@@@@@@@@@#%%%%%%%%%%%%%@@@@@@@@@@@@@@@%%%%%#%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
20
+ @@@@@@@@@@@@@@@@@@@#%%%%%%%%%#@@@@@@@@@@@@@@@@@@&%#%%#&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
21
+ @@@@@@@@@@@@@@@@@@@@@@@@%&%##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
22
+ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
23
+ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
24
+ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
25
+ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gbos",
3
- "version": "1.2.7",
3
+ "version": "1.2.9",
4
4
  "description": "GBOS - Command line interface for GBOS services",
5
5
  "main": "src/index.js",
6
6
  "bin": {
@@ -4,16 +4,16 @@ const { displayImage, getTerminalWidth } = require('../lib/display');
4
4
  async function logoCommand() {
5
5
  const logoPath = path.join(__dirname, '../../images/logo.png');
6
6
  const terminalWidth = getTerminalWidth();
7
- const targetWidth = Math.max(20, Math.floor(terminalWidth * 0.2));
7
+ const targetWidth = Math.max(22, Math.floor(terminalWidth * 0.2));
8
8
 
9
9
  await displayImage(logoPath, {
10
10
  width: targetWidth,
11
11
  fallbackWidth: targetWidth,
12
- fallbackHeight: 8,
12
+ fallbackHeight: 7,
13
13
  sharp: false,
14
14
  crop: true,
15
- alphaThreshold: 180,
16
- cropAlphaThreshold: 180,
15
+ alphaThreshold: 100,
16
+ cropAlphaThreshold: 100,
17
17
  });
18
18
  }
19
19
 
@@ -207,42 +207,55 @@ function imageToPixels(imagePath, targetWidth = 24, targetHeight = 5, options =
207
207
  const bottomCov = bottomRegion.coverage;
208
208
 
209
209
  // Both empty
210
- if (topCov < 0.1 && bottomCov < 0.1) {
210
+ if (topCov < 0.05 && bottomCov < 0.05) {
211
211
  line += ' ';
212
212
  continue;
213
213
  }
214
214
 
215
- // Use dots for very light coverage (edges)
216
- if (topCov < 0.3 && bottomCov < 0.3) {
215
+ // Very light coverage on both - use dots for smooth curves
216
+ if (topCov < 0.2 && bottomCov < 0.2) {
217
217
  const avgCov = (topCov + bottomCov) / 2;
218
218
  const r = topCov > bottomCov ? topRegion.r : bottomRegion.r;
219
219
  const g = topCov > bottomCov ? topRegion.g : bottomRegion.g;
220
220
  const b = topCov > bottomCov ? topRegion.b : bottomRegion.b;
221
- if (avgCov < 0.15) {
221
+ if (avgCov < 0.08) {
222
222
  line += fg(r, g, b) + '·' + RESET;
223
- } else {
223
+ } else if (avgCov < 0.15) {
224
224
  line += fg(r, g, b) + '░' + RESET;
225
+ } else {
226
+ line += fg(r, g, b) + '▒' + RESET;
225
227
  }
226
228
  continue;
227
229
  }
228
230
 
229
- // Light top, solid bottom - use lower block with possible shading
230
- if (topCov < 0.3 && bottomCov >= 0.3) {
231
- if (topCov > 0.1) {
232
- // Add dot above
231
+ // Light top (edge), more solid bottom
232
+ if (topCov < 0.4 && bottomCov >= 0.2) {
233
+ if (topCov < 0.1) {
234
+ line += fg(bottomRegion.r, bottomRegion.g, bottomRegion.b) + LOWER_HALF + RESET;
235
+ } else if (topCov < 0.2) {
236
+ // Light edge on top - use lower block (curve effect)
233
237
  line += fg(bottomRegion.r, bottomRegion.g, bottomRegion.b) + '▄' + RESET;
234
238
  } else {
235
- line += fg(bottomRegion.r, bottomRegion.g, bottomRegion.b) + LOWER_HALF + RESET;
239
+ // Partial coverage - blend
240
+ line += fg(topRegion.r, topRegion.g, topRegion.b) +
241
+ bg(bottomRegion.r, bottomRegion.g, bottomRegion.b) +
242
+ UPPER_HALF + RESET;
236
243
  }
237
244
  continue;
238
245
  }
239
246
 
240
- // Solid top, light bottom
241
- if (topCov >= 0.3 && bottomCov < 0.3) {
242
- if (bottomCov > 0.1) {
247
+ // More solid top, light bottom (edge)
248
+ if (topCov >= 0.2 && bottomCov < 0.4) {
249
+ if (bottomCov < 0.1) {
250
+ line += fg(topRegion.r, topRegion.g, topRegion.b) + UPPER_HALF + RESET;
251
+ } else if (bottomCov < 0.2) {
252
+ // Light edge on bottom - use upper block (curve effect)
243
253
  line += fg(topRegion.r, topRegion.g, topRegion.b) + '▀' + RESET;
244
254
  } else {
245
- line += fg(topRegion.r, topRegion.g, topRegion.b) + UPPER_HALF + RESET;
255
+ // Partial coverage - blend
256
+ line += fg(topRegion.r, topRegion.g, topRegion.b) +
257
+ bg(bottomRegion.r, bottomRegion.g, bottomRegion.b) +
258
+ UPPER_HALF + RESET;
246
259
  }
247
260
  continue;
248
261
  }
@@ -298,16 +311,16 @@ function displayLogoWithDetails(details = null) {
298
311
  const logoPath = path.join(__dirname, '../../images/logo.png');
299
312
  const version = require('../../package.json').version;
300
313
 
301
- // Render logo at ~20 chars wide, 8 rows tall with smooth edges and dots
302
- let logoLines = imageToPixels(logoPath, 20, 8, {
303
- alphaThreshold: 180,
314
+ // Render logo at ~22 chars wide, 7 rows tall with smooth curved edges
315
+ let logoLines = imageToPixels(logoPath, 22, 7, {
316
+ alphaThreshold: 100,
304
317
  crop: true,
305
- cropAlphaThreshold: 180,
318
+ cropAlphaThreshold: 100,
306
319
  sampleMode: 'coverage',
307
320
  });
308
321
  if (!logoLines) logoLines = COMPACT_LOGO;
309
322
 
310
- const logoWidth = 26; // Account for escape codes
323
+ const logoWidth = 28; // Account for escape codes
311
324
 
312
325
  // Build right side - Claude Code style (clean lines, no boxes)
313
326
  const rightLines = [];
@@ -342,15 +355,15 @@ function displayAuthSuccess(data) {
342
355
  const logoPath = path.join(__dirname, '../../images/logo.png');
343
356
  const version = require('../../package.json').version;
344
357
 
345
- let logoLines = imageToPixels(logoPath, 20, 8, {
346
- alphaThreshold: 180,
358
+ let logoLines = imageToPixels(logoPath, 22, 7, {
359
+ alphaThreshold: 100,
347
360
  crop: true,
348
- cropAlphaThreshold: 180,
361
+ cropAlphaThreshold: 100,
349
362
  sampleMode: 'coverage',
350
363
  });
351
364
  if (!logoLines) logoLines = COMPACT_LOGO;
352
365
 
353
- const logoWidth = 26;
366
+ const logoWidth = 28;
354
367
 
355
368
  const rightLines = [];
356
369
  rightLines.push(`${BOLD}${colors.purple5}gbos.io${RESET} ${DIM}v${version}${RESET}`);