@pixelspace/manifesto 2026.15.0 → 2026.15.2
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/package.json +1 -1
- package/src/index.js +63 -18
package/package.json
CHANGED
package/src/index.js
CHANGED
|
@@ -4,10 +4,52 @@ import { readFileSync } from 'fs';
|
|
|
4
4
|
import { dirname, join } from 'path';
|
|
5
5
|
import { fileURLToPath } from 'url';
|
|
6
6
|
import { skillCommand } from './skills/load-skill.js';
|
|
7
|
+
import { isTTY } from './detect.js';
|
|
7
8
|
|
|
8
9
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
9
10
|
const MANIFESTO_PATH = join(__dirname, '..', 'manifestos', 'Pixelspace Design Manifesto 2026 v0.5 — Formal.txt');
|
|
10
11
|
|
|
12
|
+
// ANSI escape codes — zero deps
|
|
13
|
+
const BRAND = '\x1b[38;2;255;0;90m'; // #FF005A
|
|
14
|
+
const WHITE = '\x1b[97m';
|
|
15
|
+
const DIM = '\x1b[2m';
|
|
16
|
+
const RESET = '\x1b[0m';
|
|
17
|
+
|
|
18
|
+
const LOGO = [
|
|
19
|
+
'█▀█ █ ▀▄▀ █▀▀ █ █▀▀ █▀█ █▀█ █▀▀ █▀▀',
|
|
20
|
+
'█▀▀ █ █ █▀▀ █ ▀▀█ █▀▀ █▀█ █ █▀▀',
|
|
21
|
+
'▀ ▀ ▀ ▀ ▀▀▀ ▀▀▀ ▀▀▀ ▀ ▀ ▀ ▀▀▀ ▀▀▀'
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
const TITLE = 'Design and Product Manifesto. Letters from the Exodus.';
|
|
25
|
+
const DESCRIPTION = 'A constitution for biological and digital intelligences navigating the crossing. Use when brainstorming, incubating new products/features/services, making architecture decisions, evaluating tradeoffs, discussing product strategy or business models, designing AI-native experiences, or when human thinking feels shallow and needs depth.';
|
|
26
|
+
|
|
27
|
+
const SEPARATOR = '──────────────────────────────────────────────────────────────';
|
|
28
|
+
|
|
29
|
+
// Word wrap preserving indent on continuation lines
|
|
30
|
+
function wrapText(text, width = 62, indent = ' ') {
|
|
31
|
+
const words = text.split(/\s+/);
|
|
32
|
+
const lines = [];
|
|
33
|
+
let line = '';
|
|
34
|
+
for (const word of words) {
|
|
35
|
+
if (line.length + word.length + 1 <= width) {
|
|
36
|
+
line += (line ? ' ' : '') + word;
|
|
37
|
+
} else {
|
|
38
|
+
if (line) lines.push(line);
|
|
39
|
+
line = word;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
if (line) lines.push(line);
|
|
43
|
+
return lines.map(l => indent + l).join('\n');
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// Color mathematical/logical symbols with brand color
|
|
47
|
+
const SYMBOL_RE = /(:=|[∀∃∈∉∧∨¬→⟹≠≅≫≤≥∝⊂∪∘∅∞≡↑≈∵₀₁₂₃₄₅₆₇₈₉ₙ⁶{}()\[\]|=<>\\])/g;
|
|
48
|
+
|
|
49
|
+
function colorSymbols(text) {
|
|
50
|
+
return text.replace(SYMBOL_RE, `${BRAND}$1${RESET}`);
|
|
51
|
+
}
|
|
52
|
+
|
|
11
53
|
export async function run() {
|
|
12
54
|
const args = process.argv;
|
|
13
55
|
|
|
@@ -27,24 +69,27 @@ export async function run() {
|
|
|
27
69
|
}
|
|
28
70
|
|
|
29
71
|
// Default: print header + Formal.txt
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
72
|
+
const raw = readFileSync(MANIFESTO_PATH, 'utf-8');
|
|
73
|
+
|
|
74
|
+
if (!isTTY()) {
|
|
75
|
+
console.log('Pixelspace — Design and Product Manifesto\n');
|
|
76
|
+
console.log(raw);
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// TTY: formatted output with colors and indentation
|
|
81
|
+
const logo = LOGO.map(l => ` ${BRAND}${l}${RESET}`).join('\n');
|
|
82
|
+
const title = WHITE + wrapText(TITLE) + RESET;
|
|
83
|
+
const desc = DIM + wrapText(DESCRIPTION) + RESET;
|
|
84
|
+
const sep = DIM + ' ' + SEPARATOR + RESET;
|
|
85
|
+
|
|
86
|
+
const paragraphs = raw.trim().split('\n\n');
|
|
87
|
+
const body = paragraphs.map(p => {
|
|
88
|
+
const wrapped = wrapText(p.replace(/\n/g, ' '));
|
|
89
|
+
return colorSymbols(wrapped);
|
|
90
|
+
}).join('\n\n');
|
|
91
|
+
|
|
92
|
+
console.log(`\n${logo}\n\n${title}\n${desc}\n\n${sep}\n\n${body}\n\n${sep}\n`);
|
|
48
93
|
}
|
|
49
94
|
|
|
50
95
|
export default run;
|