cbrowser 16.14.5 → 16.15.0

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 (43) hide show
  1. package/dist/config.d.ts +46 -0
  2. package/dist/config.d.ts.map +1 -1
  3. package/dist/config.js +235 -4
  4. package/dist/config.js.map +1 -1
  5. package/docs/personas/Persona-ADHD.md +2 -2
  6. package/docs/personas/Persona-ElderlyUser.md +2 -2
  7. package/docs/personas/Persona-FirstTimer.md +2 -2
  8. package/docs/personas/Persona-ImpatientUser.md +2 -2
  9. package/docs/personas/Persona-Index.md +23 -23
  10. package/docs/personas/Persona-LowVision.md +2 -2
  11. package/docs/personas/Persona-MobileUser.md +2 -2
  12. package/docs/personas/Persona-MotorTremor.md +2 -2
  13. package/docs/personas/Persona-PowerUser.md +2 -2
  14. package/docs/personas/Persona-ScreenReaderUser.md +2 -2
  15. package/docs/research/Bibliography.md +3 -3
  16. package/docs/research/Research-Methodology.md +4 -4
  17. package/docs/traits/Trait-AnchoringBias.md +12 -12
  18. package/docs/traits/Trait-AttributionStyle.md +12 -12
  19. package/docs/traits/Trait-AuthoritySensitivity.md +5 -5
  20. package/docs/traits/Trait-ChangeBlindness.md +4 -4
  21. package/docs/traits/Trait-Comprehension.md +6 -6
  22. package/docs/traits/Trait-Curiosity.md +8 -8
  23. package/docs/traits/Trait-EmotionalContagion.md +5 -5
  24. package/docs/traits/Trait-FOMO.md +5 -5
  25. package/docs/traits/Trait-Index.md +30 -30
  26. package/docs/traits/Trait-InformationForaging.md +12 -12
  27. package/docs/traits/Trait-InterruptRecovery.md +5 -5
  28. package/docs/traits/Trait-MentalModelRigidity.md +6 -6
  29. package/docs/traits/Trait-MetacognitivePlanning.md +11 -11
  30. package/docs/traits/Trait-Patience.md +6 -6
  31. package/docs/traits/Trait-Persistence.md +4 -4
  32. package/docs/traits/Trait-ProceduralFluency.md +12 -12
  33. package/docs/traits/Trait-ReadingTendency.md +10 -10
  34. package/docs/traits/Trait-Resilience.md +5 -5
  35. package/docs/traits/Trait-RiskTolerance.md +4 -4
  36. package/docs/traits/Trait-Satisficing.md +10 -10
  37. package/docs/traits/Trait-SelfEfficacy.md +5 -5
  38. package/docs/traits/Trait-SocialProofSensitivity.md +5 -5
  39. package/docs/traits/Trait-TimeHorizon.md +12 -12
  40. package/docs/traits/Trait-TransferLearning.md +11 -11
  41. package/docs/traits/Trait-TrustCalibration.md +5 -5
  42. package/docs/traits/Trait-WorkingMemory.md +5 -5
  43. package/package.json +3 -1
package/dist/config.d.ts CHANGED
@@ -11,6 +11,19 @@
11
11
  * See LICENSE for full terms.
12
12
  */
13
13
  import type { GeoLocation, DeviceDescriptor, NetworkMock, PerformanceBudget, CBrowserConfigFile, ProxyConfig } from "./types.js";
14
+ /**
15
+ * Get or create the current session ID.
16
+ * For MCP server mode, this isolates each user's screenshots.
17
+ */
18
+ export declare function getSessionId(): string;
19
+ /**
20
+ * Set the session ID explicitly (useful for MCP server).
21
+ */
22
+ export declare function setSessionId(id: string): void;
23
+ /**
24
+ * Reset session ID (for testing).
25
+ */
26
+ export declare function resetSessionId(): void;
14
27
  export type BrowserType = "chromium" | "firefox" | "webkit";
15
28
  export type ColorScheme = "light" | "dark" | "no-preference";
16
29
  export interface CBrowserConfig {
@@ -74,6 +87,8 @@ export interface CBrowserPaths {
74
87
  dataDir: string;
75
88
  sessionsDir: string;
76
89
  screenshotsDir: string;
90
+ /** Base screenshots directory (without session ID) */
91
+ screenshotsBaseDir: string;
77
92
  videosDir: string;
78
93
  harDir: string;
79
94
  personasDir: string;
@@ -86,19 +101,45 @@ export interface CBrowserPaths {
86
101
  visualScreenshotsDir: string;
87
102
  browserStateDir: string;
88
103
  credentialsFile: string;
104
+ /** Current session ID for screenshot isolation */
105
+ sessionId: string;
89
106
  }
90
107
  /**
91
108
  * Get all paths based on the data directory.
109
+ * Screenshots are stored in session-specific subdirectories for multi-user safety.
92
110
  */
93
111
  export declare function getPaths(dataDir?: string): CBrowserPaths;
94
112
  /**
95
113
  * Ensure all required directories exist.
114
+ * Also runs automatic screenshot cleanup based on retention settings.
96
115
  */
97
116
  export declare function ensureDirectories(paths?: CBrowserPaths): CBrowserPaths;
98
117
  /**
99
118
  * Merge user config with defaults.
100
119
  */
101
120
  export declare function mergeConfig(userConfig: Partial<CBrowserConfig>): CBrowserConfig;
121
+ /**
122
+ * Get screenshot retention period in milliseconds.
123
+ * Default: 1 hour (3600000 ms)
124
+ * Set CBROWSER_SCREENSHOT_RETENTION to customize (in ms or with suffix: 1h, 30m, 7d)
125
+ */
126
+ export declare function getScreenshotRetention(): number;
127
+ /**
128
+ * Clean up old screenshot SESSION DIRECTORIES that exceed the retention period.
129
+ * This is safe for multi-user MCP server deployments:
130
+ * - Each user gets their own session directory
131
+ * - Only entire old sessions are cleaned up, not individual files
132
+ * - A session directory is only deleted if ALL its contents are older than retention
133
+ *
134
+ * Called automatically on CBrowser startup.
135
+ * Returns the number of session directories deleted.
136
+ */
137
+ export declare function cleanupOldScreenshotSessions(paths?: CBrowserPaths): number;
138
+ /**
139
+ * Clean up screenshots in the CURRENT session only.
140
+ * Useful for explicit cleanup without affecting other users.
141
+ */
142
+ export declare function cleanupCurrentSessionScreenshots(paths?: CBrowserPaths): number;
102
143
  /**
103
144
  * Status info for diagnostics.
104
145
  */
@@ -125,6 +166,9 @@ export interface StatusInfo {
125
166
  viewportWidth: number;
126
167
  viewportHeight: number;
127
168
  configFile: string | null;
169
+ screenshotRetention: string;
170
+ /** Current screenshot session ID */
171
+ screenshotSession: string;
128
172
  };
129
173
  healCache: {
130
174
  totalEntries: number;
@@ -136,6 +180,8 @@ export interface StatusInfo {
136
180
  visualBaselines: number;
137
181
  recordings: number;
138
182
  suggestions: string[];
183
+ /** Number of active screenshot sessions */
184
+ screenshotSessions: number;
139
185
  }
140
186
  /**
141
187
  * Check which Playwright browsers are installed.
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/config.js CHANGED
@@ -16,9 +16,38 @@
16
16
  * All paths are configurable via environment variables or constructor options.
17
17
  * Default: ~/.cbrowser/
18
18
  */
19
- import { existsSync, mkdirSync, readFileSync, readdirSync } from "fs";
19
+ import { existsSync, mkdirSync, readFileSync, readdirSync, unlinkSync, statSync, rmdirSync } from "fs";
20
20
  import { homedir } from "os";
21
21
  import { join } from "path";
22
+ import { randomUUID } from "crypto";
23
+ /**
24
+ * Session ID for multi-user safety.
25
+ * Each MCP server instance or CLI invocation gets a unique session.
26
+ * Screenshots are stored in session-specific subdirectories.
27
+ */
28
+ let currentSessionId = null;
29
+ /**
30
+ * Get or create the current session ID.
31
+ * For MCP server mode, this isolates each user's screenshots.
32
+ */
33
+ export function getSessionId() {
34
+ if (!currentSessionId) {
35
+ currentSessionId = randomUUID().slice(0, 8);
36
+ }
37
+ return currentSessionId;
38
+ }
39
+ /**
40
+ * Set the session ID explicitly (useful for MCP server).
41
+ */
42
+ export function setSessionId(id) {
43
+ currentSessionId = id;
44
+ }
45
+ /**
46
+ * Reset session ID (for testing).
47
+ */
48
+ export function resetSessionId() {
49
+ currentSessionId = null;
50
+ }
22
51
  /**
23
52
  * Get the data directory from environment or default.
24
53
  */
@@ -116,13 +145,17 @@ export function getDefaultConfig() {
116
145
  }
117
146
  /**
118
147
  * Get all paths based on the data directory.
148
+ * Screenshots are stored in session-specific subdirectories for multi-user safety.
119
149
  */
120
150
  export function getPaths(dataDir) {
121
151
  const base = dataDir || getDataDir();
152
+ const sessionId = getSessionId();
153
+ const screenshotsBase = join(base, "screenshots");
122
154
  return {
123
155
  dataDir: base,
124
156
  sessionsDir: join(base, "sessions"),
125
- screenshotsDir: join(base, "screenshots"),
157
+ screenshotsBaseDir: screenshotsBase,
158
+ screenshotsDir: join(screenshotsBase, sessionId), // Session-scoped!
126
159
  videosDir: join(base, "videos"),
127
160
  harDir: join(base, "har"),
128
161
  personasDir: join(base, "personas"),
@@ -135,17 +168,20 @@ export function getPaths(dataDir) {
135
168
  visualScreenshotsDir: join(base, "visual-baselines", "screenshots"),
136
169
  browserStateDir: join(base, "browser-state"),
137
170
  credentialsFile: join(base, "credentials.json"),
171
+ sessionId,
138
172
  };
139
173
  }
140
174
  /**
141
175
  * Ensure all required directories exist.
176
+ * Also runs automatic screenshot cleanup based on retention settings.
142
177
  */
143
178
  export function ensureDirectories(paths) {
144
179
  const p = paths || getPaths();
145
180
  const dirs = [
146
181
  p.dataDir,
147
182
  p.sessionsDir,
148
- p.screenshotsDir,
183
+ p.screenshotsBaseDir, // Base screenshots dir
184
+ p.screenshotsDir, // Session-specific screenshots dir
149
185
  p.videosDir,
150
186
  p.harDir,
151
187
  p.personasDir,
@@ -163,6 +199,9 @@ export function ensureDirectories(paths) {
163
199
  mkdirSync(dir, { recursive: true });
164
200
  }
165
201
  }
202
+ // Automatic cleanup of OLD screenshot sessions on startup
203
+ // This is safe for multi-user: only deletes sessions older than retention period
204
+ cleanupOldScreenshotSessions(p);
166
205
  return p;
167
206
  }
168
207
  /**
@@ -172,6 +211,157 @@ export function mergeConfig(userConfig) {
172
211
  const defaults = getDefaultConfig();
173
212
  return { ...defaults, ...userConfig };
174
213
  }
214
+ /**
215
+ * Get screenshot retention period in milliseconds.
216
+ * Default: 1 hour (3600000 ms)
217
+ * Set CBROWSER_SCREENSHOT_RETENTION to customize (in ms or with suffix: 1h, 30m, 7d)
218
+ */
219
+ export function getScreenshotRetention() {
220
+ const value = process.env.CBROWSER_SCREENSHOT_RETENTION;
221
+ if (!value)
222
+ return 3600000; // 1 hour default
223
+ // Parse suffixes: 1h, 30m, 7d, 24h
224
+ const match = value.match(/^(\d+)(ms|s|m|h|d)?$/i);
225
+ if (match) {
226
+ const num = parseInt(match[1], 10);
227
+ const unit = (match[2] || "ms").toLowerCase();
228
+ switch (unit) {
229
+ case "d": return num * 24 * 60 * 60 * 1000;
230
+ case "h": return num * 60 * 60 * 1000;
231
+ case "m": return num * 60 * 1000;
232
+ case "s": return num * 1000;
233
+ default: return num; // ms
234
+ }
235
+ }
236
+ return parseInt(value, 10) || 3600000;
237
+ }
238
+ /**
239
+ * Clean up old screenshots that exceed the retention period.
240
+ * Called automatically on CBrowser startup.
241
+ * Returns the number of files deleted.
242
+ */
243
+ /**
244
+ * Format retention period for display.
245
+ */
246
+ function formatRetention(ms) {
247
+ if (ms === 0)
248
+ return "disabled";
249
+ if (ms >= 24 * 60 * 60 * 1000) {
250
+ const days = Math.round(ms / (24 * 60 * 60 * 1000));
251
+ return `${days}d`;
252
+ }
253
+ if (ms >= 60 * 60 * 1000) {
254
+ const hours = Math.round(ms / (60 * 60 * 1000));
255
+ return `${hours}h`;
256
+ }
257
+ if (ms >= 60 * 1000) {
258
+ const mins = Math.round(ms / (60 * 1000));
259
+ return `${mins}m`;
260
+ }
261
+ return `${ms}ms`;
262
+ }
263
+ /**
264
+ * Clean up old screenshot SESSION DIRECTORIES that exceed the retention period.
265
+ * This is safe for multi-user MCP server deployments:
266
+ * - Each user gets their own session directory
267
+ * - Only entire old sessions are cleaned up, not individual files
268
+ * - A session directory is only deleted if ALL its contents are older than retention
269
+ *
270
+ * Called automatically on CBrowser startup.
271
+ * Returns the number of session directories deleted.
272
+ */
273
+ export function cleanupOldScreenshotSessions(paths) {
274
+ const p = paths || getPaths();
275
+ const retention = getScreenshotRetention();
276
+ const now = Date.now();
277
+ let deletedSessions = 0;
278
+ // Skip cleanup if retention is 0 (disabled)
279
+ if (retention === 0)
280
+ return 0;
281
+ if (!existsSync(p.screenshotsBaseDir))
282
+ return 0;
283
+ try {
284
+ const entries = readdirSync(p.screenshotsBaseDir);
285
+ for (const entry of entries) {
286
+ const sessionDir = join(p.screenshotsBaseDir, entry);
287
+ try {
288
+ const stats = statSync(sessionDir);
289
+ // Skip if not a directory (legacy flat files)
290
+ if (!stats.isDirectory()) {
291
+ // Clean up legacy flat files too
292
+ if (entry.endsWith(".png") || entry.endsWith(".jpg") || entry.endsWith(".jpeg")) {
293
+ const age = now - stats.mtimeMs;
294
+ if (age > retention) {
295
+ unlinkSync(sessionDir);
296
+ }
297
+ }
298
+ continue;
299
+ }
300
+ // Don't delete the current session
301
+ if (entry === p.sessionId)
302
+ continue;
303
+ // Check if the session directory is old enough to delete
304
+ const sessionAge = now - stats.mtimeMs;
305
+ if (sessionAge > retention) {
306
+ // Delete all files in the session directory
307
+ const files = readdirSync(sessionDir);
308
+ for (const file of files) {
309
+ try {
310
+ unlinkSync(join(sessionDir, file));
311
+ }
312
+ catch {
313
+ // Skip files we can't delete
314
+ }
315
+ }
316
+ // Remove the empty directory
317
+ try {
318
+ rmdirSync(sessionDir);
319
+ deletedSessions++;
320
+ }
321
+ catch {
322
+ // Directory not empty or permission error
323
+ }
324
+ }
325
+ }
326
+ catch {
327
+ // Skip entries we can't stat
328
+ }
329
+ }
330
+ }
331
+ catch {
332
+ // Directory read error, skip cleanup
333
+ }
334
+ return deletedSessions;
335
+ }
336
+ /**
337
+ * Clean up screenshots in the CURRENT session only.
338
+ * Useful for explicit cleanup without affecting other users.
339
+ */
340
+ export function cleanupCurrentSessionScreenshots(paths) {
341
+ const p = paths || getPaths();
342
+ let deleted = 0;
343
+ if (!existsSync(p.screenshotsDir))
344
+ return 0;
345
+ try {
346
+ const files = readdirSync(p.screenshotsDir);
347
+ for (const file of files) {
348
+ if (!file.endsWith(".png") && !file.endsWith(".jpg") && !file.endsWith(".jpeg")) {
349
+ continue;
350
+ }
351
+ try {
352
+ unlinkSync(join(p.screenshotsDir, file));
353
+ deleted++;
354
+ }
355
+ catch {
356
+ // Skip files we can't delete
357
+ }
358
+ }
359
+ }
360
+ catch {
361
+ // Directory read error
362
+ }
363
+ return deleted;
364
+ }
175
365
  function countFiles(dir, ext) {
176
366
  if (!existsSync(dir))
177
367
  return 0;
@@ -222,15 +412,51 @@ export async function checkBrowsers() {
222
412
  }
223
413
  return results;
224
414
  }
415
+ /**
416
+ * Count screenshot sessions and total files across all sessions.
417
+ */
418
+ function countScreenshotSessions(baseDir) {
419
+ if (!existsSync(baseDir))
420
+ return { sessions: 0, files: 0 };
421
+ try {
422
+ const entries = readdirSync(baseDir);
423
+ let sessions = 0;
424
+ let files = 0;
425
+ for (const entry of entries) {
426
+ const entryPath = join(baseDir, entry);
427
+ try {
428
+ const stats = statSync(entryPath);
429
+ if (stats.isDirectory()) {
430
+ sessions++;
431
+ const sessionFiles = readdirSync(entryPath);
432
+ files += sessionFiles.filter(f => f.endsWith(".png") || f.endsWith(".jpg")).length;
433
+ }
434
+ else if (entry.endsWith(".png") || entry.endsWith(".jpg")) {
435
+ // Legacy flat files
436
+ files++;
437
+ }
438
+ }
439
+ catch {
440
+ // Skip
441
+ }
442
+ }
443
+ return { sessions, files };
444
+ }
445
+ catch {
446
+ return { sessions: 0, files: 0 };
447
+ }
448
+ }
225
449
  /**
226
450
  * Gather environment status info for diagnostics.
227
451
  */
228
452
  export async function getStatusInfo(version) {
229
453
  const paths = getPaths();
230
454
  const config = getDefaultConfig();
455
+ // Screenshot session stats
456
+ const screenshotStats = countScreenshotSessions(paths.screenshotsBaseDir);
231
457
  // Directory status
232
458
  const dirEntries = [
233
- ["screenshots", paths.screenshotsDir, ".png"],
459
+ ["screenshots", paths.screenshotsBaseDir, ".png"],
234
460
  ["sessions", paths.sessionsDir, ".json"],
235
461
  ["baselines", paths.baselinesDir, ".json"],
236
462
  ["visual-baselines", paths.visualBaselinesDir],
@@ -298,6 +524,8 @@ export async function getStatusInfo(version) {
298
524
  viewportWidth: config.viewportWidth,
299
525
  viewportHeight: config.viewportHeight,
300
526
  configFile: findConfigFile(),
527
+ screenshotRetention: formatRetention(getScreenshotRetention()),
528
+ screenshotSession: paths.sessionId,
301
529
  },
302
530
  healCache,
303
531
  sessions,
@@ -305,6 +533,7 @@ export async function getStatusInfo(version) {
305
533
  visualBaselines,
306
534
  recordings,
307
535
  suggestions,
536
+ screenshotSessions: screenshotStats.sessions,
308
537
  };
309
538
  }
310
539
  /**
@@ -340,6 +569,8 @@ export function formatStatus(info) {
340
569
  lines.push(` ├── Headless: ${info.config.headless}`);
341
570
  lines.push(` ├── Timeout: ${info.config.timeout}ms`);
342
571
  lines.push(` ├── Viewport: ${info.config.viewportWidth}x${info.config.viewportHeight}`);
572
+ lines.push(` ├── Screenshot cleanup: ${info.config.screenshotRetention} (auto, per-session)`);
573
+ lines.push(` ├── Session ID: ${info.config.screenshotSession} (${info.screenshotSessions} active sessions)`);
343
574
  lines.push(` └── Config file: ${info.config.configFile || "none found"}`);
344
575
  lines.push("");
345
576
  // Self-healing cache
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -127,8 +127,8 @@ npx cbrowser cognitive-journey --persona cognitive-adhd --start https://example.
127
127
 
128
128
  ## See Also
129
129
 
130
- - [Persona Index](Persona-Index)
131
- - [Trait Index](../traits/Trait-Index)
130
+ - [Persona Index](./Persona-Index.md)
131
+ - [Trait Index](../traits/Trait-Index.md)
132
132
  - [Working Memory](../traits/Trait-WorkingMemory.md)
133
133
  - [Patience](../traits/Trait-Patience.md)
134
134
  - [Curiosity](../traits/Trait-Curiosity.md)
@@ -124,8 +124,8 @@ npx cbrowser cognitive-journey --persona elderly-user --start https://example.co
124
124
 
125
125
  ## See Also
126
126
 
127
- - [Persona Index](Persona-Index)
128
- - [Trait Index](../traits/Trait-Index)
127
+ - [Persona Index](./Persona-Index.md)
128
+ - [Trait Index](../traits/Trait-Index.md)
129
129
  - [Patience](../traits/Trait-Patience.md)
130
130
  - [Working Memory](../traits/Trait-WorkingMemory.md)
131
131
  - [Reading Tendency](../traits/Trait-ReadingTendency.md)
@@ -124,8 +124,8 @@ npx cbrowser cognitive-journey --persona first-timer --start https://example.com
124
124
 
125
125
  ## See Also
126
126
 
127
- - [Persona Index](Persona-Index)
128
- - [Trait Index](../traits/Trait-Index)
127
+ - [Persona Index](./Persona-Index.md)
128
+ - [Trait Index](../traits/Trait-Index.md)
129
129
  - [Curiosity](../traits/Trait-Curiosity.md)
130
130
  - [Comprehension](../traits/Trait-Comprehension.md)
131
131
  - [Risk Tolerance](../traits/Trait-RiskTolerance.md)
@@ -125,8 +125,8 @@ npx cbrowser cognitive-journey --persona impatient-user --start https://example.
125
125
 
126
126
  ## See Also
127
127
 
128
- - [Persona Index](Persona-Index)
129
- - [Trait Index](../traits/Trait-Index)
128
+ - [Persona Index](./Persona-Index.md)
129
+ - [Trait Index](../traits/Trait-Index.md)
130
130
  - [Patience](../traits/Trait-Patience.md)
131
131
  - [FOMO](../traits/Trait-FOMO.md)
132
132
  - [Persistence](../traits/Trait-Persistence.md)
@@ -12,15 +12,15 @@ CBrowser includes 9 pre-configured user personas, each with research-backed cogn
12
12
 
13
13
  | Persona | Description | Key Characteristics |
14
14
  |---------|-------------|---------------------|
15
- | [Power User](Persona-PowerUser) | Tech-savvy expert | High comprehension, low patience, rapid scanning |
16
- | [First Timer](Persona-FirstTimer) | New to the interface | Low comprehension, high curiosity, methodical |
17
- | [Elderly User](Persona-ElderlyUser) | Older adult (65+) | Low working memory, high reading tendency |
18
- | [Mobile User](Persona-MobileUser) | Smartphone-first | Low patience, high satisficing, touch-focused |
19
- | [Impatient User](Persona-ImpatientUser) | Quick to abandon | Very low patience, high FOMO |
20
- | [Screen Reader User](Persona-ScreenReaderUser) | Assistive technology | High persistence, sequential navigation |
21
- | [Motor Tremor](Persona-MotorTremor) | Motor impairment | Low risk tolerance, high patience |
22
- | [Low Vision](Persona-LowVision) | Vision impairment | High reading tendency, low change blindness |
23
- | [ADHD](Persona-ADHD) | Attention differences | Low working memory, high curiosity, low patience |
15
+ | [Power User](./Persona-PowerUser.md) | Tech-savvy expert | High comprehension, low patience, rapid scanning |
16
+ | [First Timer](./Persona-FirstTimer.md) | New to the interface | Low comprehension, high curiosity, methodical |
17
+ | [Elderly User](./Persona-ElderlyUser.md) | Older adult (65+) | Low working memory, high reading tendency |
18
+ | [Mobile User](./Persona-MobileUser.md) | Smartphone-first | Low patience, high satisficing, touch-focused |
19
+ | [Impatient User](./Persona-ImpatientUser.md) | Quick to abandon | Very low patience, high FOMO |
20
+ | [Screen Reader User](./Persona-ScreenReaderUser.md) | Assistive technology | High persistence, sequential navigation |
21
+ | [Motor Tremor](./Persona-MotorTremor.md) | Motor impairment | Low risk tolerance, high patience |
22
+ | [Low Vision](./Persona-LowVision.md) | Vision impairment | High reading tendency, low change blindness |
23
+ | [ADHD](./Persona-ADHD.md) | Attention differences | Low working memory, high curiosity, low patience |
24
24
 
25
25
  ---
26
26
 
@@ -46,18 +46,18 @@ All values on 0.0-1.0 scale. Higher = more of the trait.
46
46
 
47
47
  ### General Users
48
48
 
49
- - **[Power User](Persona-PowerUser)** - Experienced users who know shortcuts, scan quickly, and expect responsive interfaces
50
- - **[First Timer](Persona-FirstTimer)** - New users learning the interface, more exploratory and methodical
51
- - **[Mobile User](Persona-MobileUser)** - Users on smartphones with touch interaction and attention constraints
52
- - **[Impatient User](Persona-ImpatientUser)** - Users with very low tolerance for friction, quick to abandon
49
+ - **[Power User](./Persona-PowerUser.md)** - Experienced users who know shortcuts, scan quickly, and expect responsive interfaces
50
+ - **[First Timer](./Persona-FirstTimer.md)** - New users learning the interface, more exploratory and methodical
51
+ - **[Mobile User](./Persona-MobileUser.md)** - Users on smartphones with touch interaction and attention constraints
52
+ - **[Impatient User](./Persona-ImpatientUser.md)** - Users with very low tolerance for friction, quick to abandon
53
53
 
54
54
  ### Accessibility Personas
55
55
 
56
- - **[Elderly User](Persona-ElderlyUser)** - Older adults with age-related cognitive changes
57
- - **[Screen Reader User](Persona-ScreenReaderUser)** - Users navigating via screen reader technology
58
- - **[Motor Tremor](Persona-MotorTremor)** - Users with motor impairments affecting precision
59
- - **[Low Vision](Persona-LowVision)** - Users with significant vision impairment
60
- - **[ADHD](Persona-ADHD)** - Users with attention differences
56
+ - **[Elderly User](./Persona-ElderlyUser.md)** - Older adults with age-related cognitive changes
57
+ - **[Screen Reader User](./Persona-ScreenReaderUser.md)** - Users navigating via screen reader technology
58
+ - **[Motor Tremor](./Persona-MotorTremor.md)** - Users with motor impairments affecting precision
59
+ - **[Low Vision](./Persona-LowVision.md)** - Users with significant vision impairment
60
+ - **[ADHD](./Persona-ADHD.md)** - Users with attention differences
61
61
 
62
62
  ---
63
63
 
@@ -284,13 +284,13 @@ const customPersona = {
284
284
 
285
285
  ## See Also
286
286
 
287
- - [Trait Index](../traits/Trait-Index) - All 25 cognitive traits explained
288
- - [Cognitive User Simulation](../Cognitive-User-Simulation) - Main documentation
289
- - [Persona Questionnaire](../Persona-Questionnaire) - Generate custom personas
290
- - [Multi-Persona Comparison](../Multi-Persona-Comparison) - Compare across personas
287
+ - [Trait Index](../traits/Trait-Index.md) - All 25 cognitive traits explained
288
+ - [Cognitive User Simulation](../COGNITIVE-SIMULATION.md) - Main documentation
289
+ - [Persona Questionnaire](../PERSONA-QUESTIONNAIRE.md) - Generate custom personas
290
+ - [Multi-Persona Comparison](../GETTING-STARTED.md) - Compare across personas
291
291
 
292
292
  ---
293
293
 
294
294
  ## Bibliography
295
295
 
296
- See [Complete Bibliography](../research/Bibliography) for all academic sources used in persona development.
296
+ See [Complete Bibliography](../research/Bibliography.md) for all academic sources used in persona development.
@@ -126,8 +126,8 @@ npx cbrowser cognitive-journey --persona low-vision --start https://example.com
126
126
 
127
127
  ## See Also
128
128
 
129
- - [Persona Index](Persona-Index)
130
- - [Trait Index](../traits/Trait-Index)
129
+ - [Persona Index](./Persona-Index.md)
130
+ - [Trait Index](../traits/Trait-Index.md)
131
131
  - [Reading Tendency](../traits/Trait-ReadingTendency.md)
132
132
  - [Persistence](../traits/Trait-Persistence.md)
133
133
  - [Change Blindness](../traits/Trait-ChangeBlindness.md)
@@ -126,8 +126,8 @@ npx cbrowser cognitive-journey --persona mobile-user --start https://example.com
126
126
 
127
127
  ## See Also
128
128
 
129
- - [Persona Index](Persona-Index)
130
- - [Trait Index](../traits/Trait-Index)
129
+ - [Persona Index](./Persona-Index.md)
130
+ - [Trait Index](../traits/Trait-Index.md)
131
131
  - [Patience](../traits/Trait-Patience.md)
132
132
  - [Satisficing](../traits/Trait-Satisficing.md)
133
133
  - [Reading Tendency](../traits/Trait-ReadingTendency.md)