- Add GearSix icon ('gear-six') to icon registry — was missing, causing
Config type to show FileText fallback instead of its configured icon
- Add 'gray' to ACCENT_COLORS palette with CSS variables — was missing,
causing Config type color to fall back to muted foreground
- Extract sidebar section logic to utils/sidebarSections.ts for testability
- Add Config type + instance to mock entries for browser dev mode
- Add tests: icon resolution, gray color, sidebar section builder
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1422 lines
39 KiB
TypeScript
1422 lines
39 KiB
TypeScript
/**
|
|
* Mock vault entries and bulk entry generator.
|
|
* Provides realistic VaultEntry[] data for browser dev mode.
|
|
*/
|
|
|
|
import type { VaultEntry } from '../types'
|
|
|
|
const now = Date.now() / 1000
|
|
|
|
export const MOCK_ENTRIES: VaultEntry[] = [
|
|
{
|
|
path: '/Users/luca/Laputa/project/26q1-laputa-app.md',
|
|
filename: '26q1-laputa-app.md',
|
|
title: 'Build Laputa App',
|
|
isA: 'Project',
|
|
aliases: ['Laputa App'],
|
|
belongsTo: ['[[quarter/q1-2026]]'],
|
|
relatedTo: ['[[topic/software-development]]'],
|
|
status: 'Active',
|
|
owner: 'Luca Rossi',
|
|
cadence: null,
|
|
archived: false,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
modifiedAt: now,
|
|
createdAt: now - 86400 * 60,
|
|
fileSize: 2048,
|
|
snippet: 'This paragraph has bold text, italic text, bold italic, strikethrough, and inline code. Here\'s a regular link and a wiki-link to Matteo Cellini.',
|
|
wordCount: 342,
|
|
relationships: {
|
|
'Belongs to': ['[[quarter/q1-2026]]'],
|
|
'Related to': ['[[topic/software-development]]'],
|
|
'Type': ['[[type/project]]'],
|
|
},
|
|
icon: null,
|
|
color: null,
|
|
order: null,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: ['quarter/q1-2026', 'topic/software-development', 'person/matteo-cellini', 'person/maria-bianchi', 'person/marco-verdi'],
|
|
properties: { Priority: 'High', 'Due date': '2026-06-15' },
|
|
},
|
|
{
|
|
path: '/Users/luca/Laputa/responsibility/grow-newsletter.md',
|
|
filename: 'grow-newsletter.md',
|
|
title: 'Grow Newsletter',
|
|
isA: 'Responsibility',
|
|
aliases: [],
|
|
belongsTo: [],
|
|
relatedTo: ['[[topic/growth]]'],
|
|
status: 'Active',
|
|
owner: 'Luca Rossi',
|
|
cadence: null,
|
|
archived: false,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
modifiedAt: now - 3600,
|
|
createdAt: now - 86400 * 180,
|
|
fileSize: 1024,
|
|
snippet: 'Build a sustainable audience through high-quality weekly essays on engineering leadership, AI, and personal systems.',
|
|
wordCount: 215,
|
|
relationships: {
|
|
'Has': [
|
|
'[[essay/on-writing-well|On Writing Well]]',
|
|
'[[essay/engineering-leadership-101|Engineering Leadership 101]]',
|
|
'[[essay/ai-agents-primer|AI Agents Primer]]',
|
|
],
|
|
'Topics': ['[[topic/growth]]', '[[topic/writing]]'],
|
|
'Related to': ['[[topic/growth]]'],
|
|
'Type': ['[[type/responsibility]]'],
|
|
},
|
|
icon: null,
|
|
color: null,
|
|
order: null,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: ['essay/on-writing-well', 'essay/engineering-leadership-101', 'essay/ai-agents-primer', 'topic/growth', 'topic/writing'],
|
|
properties: { Priority: 'High', Rating: 5, Cadence: 'Weekly' },
|
|
},
|
|
{
|
|
path: '/Users/luca/Laputa/responsibility/manage-sponsorships.md',
|
|
filename: 'manage-sponsorships.md',
|
|
title: 'Manage Sponsorships',
|
|
isA: 'Responsibility',
|
|
aliases: [],
|
|
belongsTo: [],
|
|
relatedTo: [],
|
|
status: 'Active',
|
|
owner: 'Matteo Cellini',
|
|
cadence: null,
|
|
archived: false,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
modifiedAt: now - 7200,
|
|
createdAt: now - 86400 * 150,
|
|
fileSize: 890,
|
|
snippet: 'Revenue stream from newsletter sponsorships. Matteo Cellini handles day-to-day operations.',
|
|
wordCount: 180,
|
|
relationships: {
|
|
'Owner': ['[[person/matteo-cellini|Matteo Cellini]]'],
|
|
'Type': ['[[type/responsibility]]'],
|
|
},
|
|
icon: null,
|
|
color: null,
|
|
order: null,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: ['person/matteo-cellini'],
|
|
properties: {},
|
|
},
|
|
{
|
|
path: '/Users/luca/Laputa/procedure/write-weekly-essays.md',
|
|
filename: 'write-weekly-essays.md',
|
|
title: 'Write Weekly Essays',
|
|
isA: 'Procedure',
|
|
aliases: [],
|
|
belongsTo: ['[[responsibility/grow-newsletter]]'],
|
|
relatedTo: [],
|
|
status: 'Paused',
|
|
owner: 'Luca Rossi',
|
|
cadence: 'Weekly',
|
|
archived: false,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
modifiedAt: now - 86400,
|
|
createdAt: now - 86400 * 120,
|
|
fileSize: 512,
|
|
snippet: 'Monday: Pick topic, outline Tuesday: First draft Wednesday: Edit and polish Thursday: Schedule for Tuesday send',
|
|
wordCount: 95,
|
|
relationships: {
|
|
'Belongs to': ['[[responsibility/grow-newsletter]]'],
|
|
'Type': ['[[type/procedure]]'],
|
|
},
|
|
icon: null,
|
|
color: null,
|
|
order: null,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: ['responsibility/grow-newsletter'],
|
|
properties: {},
|
|
},
|
|
{
|
|
path: '/Users/luca/Laputa/procedure/run-sponsorships.md',
|
|
filename: 'run-sponsorships.md',
|
|
title: 'Run Sponsorships',
|
|
isA: 'Procedure',
|
|
aliases: [],
|
|
belongsTo: ['[[responsibility/manage-sponsorships]]'],
|
|
relatedTo: [],
|
|
status: 'Done',
|
|
owner: 'Matteo Cellini',
|
|
cadence: 'Weekly',
|
|
archived: false,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
modifiedAt: now - 86400 * 2,
|
|
createdAt: now - 86400 * 100,
|
|
fileSize: 640,
|
|
snippet: 'Review pipeline in CRM Follow up with pending proposals Schedule confirmed sponsors Send performance reports to completed sponsors',
|
|
wordCount: 128,
|
|
relationships: {
|
|
'Belongs to': ['[[responsibility/manage-sponsorships]]'],
|
|
'Type': ['[[type/procedure]]'],
|
|
},
|
|
icon: null,
|
|
color: null,
|
|
order: null,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: ['responsibility/manage-sponsorships'],
|
|
properties: {},
|
|
},
|
|
{
|
|
path: '/Users/luca/Laputa/experiment/stock-screener.md',
|
|
filename: 'stock-screener.md',
|
|
title: 'Stock Screener — EMA200 Wick Bounce',
|
|
isA: 'Experiment',
|
|
aliases: ['Trading Screener'],
|
|
belongsTo: [],
|
|
relatedTo: ['[[topic/trading]]', '[[topic/algorithmic-trading]]'],
|
|
status: 'Paused',
|
|
owner: 'Luca Rossi',
|
|
cadence: null,
|
|
archived: false,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
modifiedAt: now - 86400,
|
|
createdAt: now - 86400 * 45,
|
|
fileSize: 3200,
|
|
snippet: 'Stocks that wick below the 200-day EMA and close above it show a statistically significant bounce in the following 5-10 days.',
|
|
wordCount: 520,
|
|
relationships: {
|
|
'Related to': ['[[topic/trading]]', '[[topic/algorithmic-trading]]'],
|
|
'Has Data': ['[[data/ema200-backtest-results]]'],
|
|
'Type': ['[[type/experiment]]'],
|
|
},
|
|
icon: null,
|
|
color: null,
|
|
order: null,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: ['topic/trading', 'topic/algorithmic-trading', 'data/ema200-backtest-results'],
|
|
properties: { Priority: 'Low', 'Due date': '2026-03-01' },
|
|
},
|
|
{
|
|
path: '/Users/luca/Laputa/note/facebook-ads-strategy.md',
|
|
filename: 'facebook-ads-strategy.md',
|
|
title: 'Facebook Ads Strategy',
|
|
isA: 'Note',
|
|
aliases: [],
|
|
belongsTo: ['[[project/26q1-laputa-app]]'],
|
|
relatedTo: ['[[topic/growth]]', '[[topic/ads]]'],
|
|
status: null,
|
|
owner: null,
|
|
cadence: null,
|
|
archived: false,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
modifiedAt: now - 3600 * 5,
|
|
createdAt: now - 86400 * 30,
|
|
fileSize: 847,
|
|
snippet: 'Lookalike audiences from newsletter subscribers convert 3x better than interest-based targeting Video ads outperform static images by 40% on engagement',
|
|
wordCount: 267,
|
|
relationships: {
|
|
'Belongs to': ['[[project/26q1-laputa-app]]'],
|
|
'Related to': ['[[topic/growth]]', '[[topic/ads]]'],
|
|
'Type': ['[[type/note]]'],
|
|
},
|
|
icon: null,
|
|
color: null,
|
|
order: null,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: ['project/26q1-laputa-app', 'topic/growth', 'topic/ads'],
|
|
properties: { Priority: 'Medium', Rating: 4 },
|
|
},
|
|
{
|
|
path: '/Users/luca/Laputa/note/budget-allocation.md',
|
|
filename: 'budget-allocation.md',
|
|
title: 'Budget Allocation',
|
|
isA: 'Note',
|
|
aliases: [],
|
|
belongsTo: ['[[project/26q1-laputa-app]]'],
|
|
relatedTo: [],
|
|
status: null,
|
|
owner: null,
|
|
cadence: null,
|
|
archived: false,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
modifiedAt: now - 86400,
|
|
createdAt: now - 86400 * 20,
|
|
fileSize: 560,
|
|
snippet: 'Under budget on ads due to improved targeting efficiency Consider reallocating savings to content production',
|
|
wordCount: 150,
|
|
relationships: {
|
|
'Belongs to': ['[[project/26q1-laputa-app]]'],
|
|
'Type': ['[[type/note]]'],
|
|
},
|
|
icon: null,
|
|
color: null,
|
|
order: null,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: ['project/26q1-laputa-app'],
|
|
properties: {},
|
|
},
|
|
{
|
|
path: '/Users/luca/Laputa/person/matteo-cellini.md',
|
|
filename: 'matteo-cellini.md',
|
|
title: 'Matteo Cellini',
|
|
isA: 'Person',
|
|
aliases: ['Matteo'],
|
|
belongsTo: [],
|
|
relatedTo: [],
|
|
status: null,
|
|
owner: null,
|
|
cadence: null,
|
|
archived: false,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
modifiedAt: now - 86400 * 7,
|
|
createdAt: now - 86400 * 200,
|
|
fileSize: 320,
|
|
snippet: 'Sponsorship manager — handles all sponsor relationships, proposals, and reporting.',
|
|
wordCount: 88,
|
|
relationships: {
|
|
'Type': ['[[type/person]]'],
|
|
},
|
|
icon: null,
|
|
color: null,
|
|
order: null,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: [],
|
|
properties: { Company: 'Acme Corp', Role: 'Engineering Lead' },
|
|
},
|
|
{
|
|
path: '/Users/luca/Laputa/person/maria-bianchi.md',
|
|
filename: 'maria-bianchi.md',
|
|
title: 'Maria Bianchi',
|
|
isA: 'Person',
|
|
aliases: ['Maria'],
|
|
belongsTo: [],
|
|
relatedTo: [],
|
|
status: null,
|
|
owner: null,
|
|
cadence: null,
|
|
archived: false,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
modifiedAt: now - 86400 * 3,
|
|
createdAt: now - 86400 * 150,
|
|
fileSize: 280,
|
|
snippet: 'Product designer — leads UX research and design sprints for the app.',
|
|
wordCount: 120,
|
|
relationships: {
|
|
'Type': ['[[type/person]]'],
|
|
},
|
|
icon: null,
|
|
color: null,
|
|
order: null,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: [],
|
|
properties: { Company: 'TechStart', Role: 'Product Manager' },
|
|
},
|
|
{
|
|
path: '/Users/luca/Laputa/person/marco-verdi.md',
|
|
filename: 'marco-verdi.md',
|
|
title: 'Marco Verdi',
|
|
isA: 'Person',
|
|
aliases: ['Marco'],
|
|
belongsTo: [],
|
|
relatedTo: [],
|
|
status: null,
|
|
owner: null,
|
|
cadence: null,
|
|
archived: false,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
modifiedAt: now - 86400 * 5,
|
|
createdAt: now - 86400 * 120,
|
|
fileSize: 240,
|
|
snippet: 'Frontend engineer — focuses on React performance and accessibility.',
|
|
wordCount: 95,
|
|
relationships: {
|
|
'Type': ['[[type/person]]'],
|
|
},
|
|
icon: null,
|
|
color: null,
|
|
order: null,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: [],
|
|
properties: {},
|
|
},
|
|
{
|
|
path: '/Users/luca/Laputa/person/elena-russo.md',
|
|
filename: 'elena-russo.md',
|
|
title: 'Elena Russo',
|
|
isA: 'Person',
|
|
aliases: ['Elena'],
|
|
belongsTo: [],
|
|
relatedTo: [],
|
|
status: null,
|
|
owner: null,
|
|
cadence: null,
|
|
archived: false,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
modifiedAt: now - 86400 * 10,
|
|
createdAt: now - 86400 * 90,
|
|
fileSize: 200,
|
|
snippet: 'Content strategist — plans newsletter topics and manages the editorial calendar.',
|
|
wordCount: 75,
|
|
relationships: {
|
|
'Type': ['[[type/person]]'],
|
|
},
|
|
icon: null,
|
|
color: null,
|
|
order: null,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: [],
|
|
properties: {},
|
|
},
|
|
{
|
|
path: '/Users/luca/Laputa/event/2026-02-14-laputa-app-kickoff.md',
|
|
filename: '2026-02-14-laputa-app-kickoff.md',
|
|
title: 'Laputa App Design Session',
|
|
isA: 'Event',
|
|
aliases: [],
|
|
belongsTo: [],
|
|
relatedTo: ['[[project/26q1-laputa-app]]', '[[person/matteo-cellini]]'],
|
|
status: null,
|
|
owner: null,
|
|
cadence: null,
|
|
archived: false,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
modifiedAt: now - 3600 * 2,
|
|
createdAt: now - 86400 * 7,
|
|
fileSize: 1200,
|
|
snippet: 'Agreed on four-panel layout inspired by Bear Notes CodeMirror 6 for the editor — live preview is critical MVP by end of Q1.',
|
|
wordCount: 310,
|
|
relationships: {
|
|
'Related to': ['[[project/26q1-laputa-app]]', '[[person/matteo-cellini]]'],
|
|
'Type': ['[[type/event]]'],
|
|
},
|
|
icon: null,
|
|
color: null,
|
|
order: null,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: ['project/26q1-laputa-app', 'person/matteo-cellini'],
|
|
properties: {},
|
|
},
|
|
{
|
|
path: '/Users/luca/Laputa/topic/software-development.md',
|
|
filename: 'software-development.md',
|
|
title: 'Software Development',
|
|
isA: 'Topic',
|
|
aliases: ['Dev', 'Coding'],
|
|
belongsTo: [],
|
|
relatedTo: [],
|
|
status: null,
|
|
owner: null,
|
|
cadence: null,
|
|
archived: false,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
modifiedAt: now - 86400 * 30,
|
|
createdAt: now - 86400 * 365,
|
|
fileSize: 256,
|
|
snippet: 'A broad topic covering everything from frontend to systems programming.',
|
|
wordCount: 45,
|
|
relationships: {
|
|
'Notes': ['[[note/facebook-ads-strategy]]', '[[note/budget-allocation]]'],
|
|
'Type': ['[[type/topic]]'],
|
|
},
|
|
icon: null,
|
|
color: null,
|
|
order: null,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: [],
|
|
properties: {},
|
|
},
|
|
{
|
|
path: '/Users/luca/Laputa/topic/trading.md',
|
|
filename: 'trading.md',
|
|
title: 'Trading',
|
|
isA: 'Topic',
|
|
aliases: ['Algorithmic Trading'],
|
|
belongsTo: [],
|
|
relatedTo: [],
|
|
status: null,
|
|
owner: null,
|
|
cadence: null,
|
|
archived: false,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
modifiedAt: now - 86400 * 14,
|
|
createdAt: now - 86400 * 300,
|
|
fileSize: 180,
|
|
snippet: 'Technical analysis (EMA, RSI, volume patterns) Algorithmic screening and alerts Risk management and position sizing',
|
|
wordCount: 60,
|
|
relationships: {
|
|
'Notes': ['[[experiment/stock-screener]]'],
|
|
'Type': ['[[type/topic]]'],
|
|
},
|
|
icon: null,
|
|
color: null,
|
|
order: null,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: [],
|
|
properties: {},
|
|
},
|
|
{
|
|
path: '/Users/luca/Laputa/essay/on-writing-well.md',
|
|
filename: 'on-writing-well.md',
|
|
title: 'On Writing Well',
|
|
isA: 'Essay',
|
|
aliases: [],
|
|
belongsTo: ['[[responsibility/grow-newsletter]]'],
|
|
relatedTo: [],
|
|
status: null,
|
|
owner: null,
|
|
cadence: null,
|
|
archived: false,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
modifiedAt: now - 86400 * 3,
|
|
createdAt: now - 86400 * 14,
|
|
fileSize: 4200,
|
|
snippet: 'Good writing is lean and confident. Every sentence should serve a purpose.',
|
|
wordCount: 180,
|
|
relationships: {
|
|
'Belongs to': ['[[responsibility/grow-newsletter]]'],
|
|
'Type': ['[[type/essay]]'],
|
|
},
|
|
icon: null,
|
|
color: null,
|
|
order: null,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: ['responsibility/grow-newsletter'],
|
|
properties: {},
|
|
},
|
|
{
|
|
path: '/Users/luca/Laputa/essay/engineering-leadership-101.md',
|
|
filename: 'engineering-leadership-101.md',
|
|
title: 'Engineering Leadership 101',
|
|
isA: 'Essay',
|
|
aliases: [],
|
|
belongsTo: ['[[responsibility/grow-newsletter]]'],
|
|
relatedTo: ['[[topic/software-development]]'],
|
|
status: null,
|
|
owner: null,
|
|
cadence: null,
|
|
archived: false,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
modifiedAt: now - 86400 * 7,
|
|
createdAt: now - 86400 * 30,
|
|
fileSize: 3800,
|
|
snippet: 'The transition from IC to manager is the hardest career shift in engineering.',
|
|
wordCount: 640,
|
|
relationships: {
|
|
'Belongs to': ['[[responsibility/grow-newsletter]]'],
|
|
'Related to': ['[[topic/software-development]]'],
|
|
'Type': ['[[type/essay]]'],
|
|
},
|
|
icon: null,
|
|
color: null,
|
|
order: null,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: ['responsibility/grow-newsletter', 'topic/software-development'],
|
|
properties: {},
|
|
},
|
|
{
|
|
path: '/Users/luca/Laputa/essay/ai-agents-primer.md',
|
|
filename: 'ai-agents-primer.md',
|
|
title: 'AI Agents Primer',
|
|
isA: 'Essay',
|
|
aliases: [],
|
|
belongsTo: ['[[responsibility/grow-newsletter]]'],
|
|
relatedTo: [],
|
|
status: null,
|
|
owner: null,
|
|
cadence: null,
|
|
archived: false,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
modifiedAt: now - 86400 * 10,
|
|
createdAt: now - 86400 * 21,
|
|
fileSize: 5100,
|
|
snippet: 'AI agents are autonomous systems that can plan, execute, and adapt to achieve goals.',
|
|
wordCount: 410,
|
|
relationships: {
|
|
'Belongs to': ['[[responsibility/grow-newsletter]]'],
|
|
'Type': ['[[type/essay]]'],
|
|
},
|
|
icon: null,
|
|
color: null,
|
|
order: null,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: ['responsibility/grow-newsletter'],
|
|
properties: {},
|
|
},
|
|
// --- Type documents ---
|
|
{
|
|
path: '/Users/luca/Laputa/type/project.md',
|
|
filename: 'project.md',
|
|
title: 'Project',
|
|
isA: 'Type',
|
|
aliases: [],
|
|
belongsTo: [],
|
|
relatedTo: [],
|
|
status: null,
|
|
owner: null,
|
|
cadence: null,
|
|
archived: false,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
modifiedAt: now - 86400 * 90,
|
|
createdAt: now - 86400 * 365,
|
|
fileSize: 320,
|
|
snippet: 'A time-bound initiative that advances a Responsibility. Projects have a clear start, end, and deliverables.',
|
|
wordCount: 280,
|
|
relationships: {},
|
|
icon: null,
|
|
color: null,
|
|
order: 0,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: [],
|
|
properties: {},
|
|
},
|
|
{
|
|
path: '/Users/luca/Laputa/type/responsibility.md',
|
|
filename: 'responsibility.md',
|
|
title: 'Responsibility',
|
|
isA: 'Type',
|
|
aliases: [],
|
|
belongsTo: [],
|
|
relatedTo: [],
|
|
status: null,
|
|
owner: null,
|
|
cadence: null,
|
|
archived: false,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
modifiedAt: now - 86400 * 90,
|
|
createdAt: now - 86400 * 365,
|
|
fileSize: 280,
|
|
snippet: 'An ongoing area of ownership — something you\'re accountable for indefinitely.',
|
|
wordCount: 50,
|
|
relationships: {},
|
|
icon: null,
|
|
color: null,
|
|
order: 1,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: [],
|
|
properties: {},
|
|
},
|
|
{
|
|
path: '/Users/luca/Laputa/type/procedure.md',
|
|
filename: 'procedure.md',
|
|
title: 'Procedure',
|
|
isA: 'Type',
|
|
aliases: [],
|
|
belongsTo: [],
|
|
relatedTo: [],
|
|
status: null,
|
|
owner: null,
|
|
cadence: null,
|
|
archived: false,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
modifiedAt: now - 86400 * 90,
|
|
createdAt: now - 86400 * 365,
|
|
fileSize: 310,
|
|
snippet: 'A recurring process tied to a Responsibility. Procedures have a cadence and describe how to do something.',
|
|
wordCount: 45,
|
|
relationships: {},
|
|
icon: null,
|
|
color: null,
|
|
order: 2,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: [],
|
|
properties: {},
|
|
},
|
|
{
|
|
path: '/Users/luca/Laputa/type/experiment.md',
|
|
filename: 'experiment.md',
|
|
title: 'Experiment',
|
|
isA: 'Type',
|
|
aliases: [],
|
|
belongsTo: [],
|
|
relatedTo: [],
|
|
status: null,
|
|
owner: null,
|
|
cadence: null,
|
|
archived: false,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
modifiedAt: now - 86400 * 90,
|
|
createdAt: now - 86400 * 365,
|
|
fileSize: 290,
|
|
snippet: 'A hypothesis-driven investigation with a clear test and measurable outcome.',
|
|
wordCount: 55,
|
|
relationships: {},
|
|
icon: null,
|
|
color: null,
|
|
order: 3,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: false,
|
|
outgoingLinks: [],
|
|
properties: {},
|
|
},
|
|
{
|
|
path: '/Users/luca/Laputa/type/person.md',
|
|
filename: 'person.md',
|
|
title: 'Person',
|
|
isA: 'Type',
|
|
aliases: [],
|
|
belongsTo: [],
|
|
relatedTo: [],
|
|
status: null,
|
|
owner: null,
|
|
cadence: null,
|
|
archived: false,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
modifiedAt: now - 86400 * 90,
|
|
createdAt: now - 86400 * 365,
|
|
fileSize: 200,
|
|
snippet: 'A person you interact with — team members, collaborators, contacts.',
|
|
wordCount: 40,
|
|
relationships: {},
|
|
icon: null,
|
|
color: null,
|
|
order: 4,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: [],
|
|
properties: {},
|
|
},
|
|
{
|
|
path: '/Users/luca/Laputa/type/event.md',
|
|
filename: 'event.md',
|
|
title: 'Event',
|
|
isA: 'Type',
|
|
aliases: [],
|
|
belongsTo: [],
|
|
relatedTo: [],
|
|
status: null,
|
|
owner: null,
|
|
cadence: null,
|
|
archived: false,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
modifiedAt: now - 86400 * 90,
|
|
createdAt: now - 86400 * 365,
|
|
fileSize: 180,
|
|
snippet: 'A point-in-time occurrence — meetings, launches, milestones.',
|
|
wordCount: 35,
|
|
relationships: {},
|
|
icon: null,
|
|
color: null,
|
|
order: 5,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: [],
|
|
properties: {},
|
|
},
|
|
{
|
|
path: '/Users/luca/Laputa/type/topic.md',
|
|
filename: 'topic.md',
|
|
title: 'Topic',
|
|
isA: 'Type',
|
|
aliases: [],
|
|
belongsTo: [],
|
|
relatedTo: [],
|
|
status: null,
|
|
owner: null,
|
|
cadence: null,
|
|
archived: false,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
modifiedAt: now - 86400 * 90,
|
|
createdAt: now - 86400 * 365,
|
|
fileSize: 170,
|
|
snippet: 'A subject area for categorization. Topics group related notes, projects, and resources by theme.',
|
|
wordCount: 30,
|
|
relationships: {},
|
|
icon: null,
|
|
color: null,
|
|
order: 6,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: [],
|
|
properties: {},
|
|
},
|
|
{
|
|
path: '/Users/luca/Laputa/type/essay.md',
|
|
filename: 'essay.md',
|
|
title: 'Essay',
|
|
isA: 'Type',
|
|
aliases: [],
|
|
belongsTo: [],
|
|
relatedTo: [],
|
|
status: null,
|
|
owner: null,
|
|
cadence: null,
|
|
archived: false,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
modifiedAt: now - 86400 * 90,
|
|
createdAt: now - 86400 * 365,
|
|
fileSize: 200,
|
|
snippet: 'A published piece of writing — newsletter essays, blog posts, articles.',
|
|
wordCount: 50,
|
|
relationships: {},
|
|
icon: null,
|
|
color: null,
|
|
order: 7,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: [],
|
|
properties: {},
|
|
},
|
|
{
|
|
path: '/Users/luca/Laputa/type/note.md',
|
|
filename: 'note.md',
|
|
title: 'Note',
|
|
isA: 'Type',
|
|
aliases: [],
|
|
belongsTo: [],
|
|
relatedTo: [],
|
|
status: null,
|
|
owner: null,
|
|
cadence: null,
|
|
archived: false,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
modifiedAt: now - 86400 * 90,
|
|
createdAt: now - 86400 * 365,
|
|
fileSize: 190,
|
|
snippet: 'A general-purpose document — research notes, meeting notes, strategy docs.',
|
|
wordCount: 60,
|
|
relationships: {},
|
|
icon: null,
|
|
color: null,
|
|
order: 8,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: [],
|
|
properties: {},
|
|
},
|
|
// --- Custom type documents ---
|
|
{
|
|
path: '/Users/luca/Laputa/type/config.md',
|
|
filename: 'config.md',
|
|
title: 'Config',
|
|
isA: 'Type',
|
|
aliases: [],
|
|
belongsTo: [],
|
|
relatedTo: [],
|
|
status: null,
|
|
owner: null,
|
|
cadence: null,
|
|
archived: false,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
modifiedAt: now - 86400 * 30,
|
|
createdAt: now - 86400 * 365,
|
|
fileSize: 300,
|
|
snippet: 'Vault configuration files. These control how AI agents, tools, and other integrations interact with this vault.',
|
|
wordCount: 25,
|
|
relationships: {},
|
|
icon: 'gear-six',
|
|
color: 'gray',
|
|
order: 90,
|
|
sidebarLabel: 'Config',
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: [],
|
|
properties: {},
|
|
},
|
|
{
|
|
path: '/Users/luca/Laputa/type/recipe.md',
|
|
filename: 'recipe.md',
|
|
title: 'Recipe',
|
|
isA: 'Type',
|
|
aliases: [],
|
|
belongsTo: [],
|
|
relatedTo: [],
|
|
status: null,
|
|
owner: null,
|
|
cadence: null,
|
|
archived: false,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
modifiedAt: now - 86400 * 30,
|
|
createdAt: now - 86400 * 365,
|
|
fileSize: 250,
|
|
snippet: 'A recipe for cooking or baking. Recipes have ingredients, steps, and serving info.',
|
|
wordCount: 45,
|
|
relationships: {},
|
|
icon: 'cooking-pot',
|
|
color: 'orange',
|
|
order: 9,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: [],
|
|
properties: {},
|
|
},
|
|
{
|
|
path: '/Users/luca/Laputa/type/book.md',
|
|
filename: 'book.md',
|
|
title: 'Book',
|
|
isA: 'Type',
|
|
aliases: [],
|
|
belongsTo: [],
|
|
relatedTo: [],
|
|
status: null,
|
|
owner: null,
|
|
cadence: null,
|
|
archived: false,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
modifiedAt: now - 86400 * 30,
|
|
createdAt: now - 86400 * 365,
|
|
fileSize: 220,
|
|
snippet: 'A book you\'re reading or have read. Track reading progress, notes, and key takeaways.',
|
|
wordCount: 190,
|
|
relationships: {},
|
|
icon: 'book-open',
|
|
color: 'green',
|
|
order: 10,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: [],
|
|
properties: {},
|
|
},
|
|
// --- Instances of custom types ---
|
|
{
|
|
path: '/Users/luca/Laputa/config/agents.md',
|
|
filename: 'agents.md',
|
|
title: 'Agent Instructions',
|
|
isA: 'Config',
|
|
aliases: [],
|
|
belongsTo: [],
|
|
relatedTo: [],
|
|
status: null,
|
|
owner: null,
|
|
cadence: null,
|
|
archived: false,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
modifiedAt: now - 86400 * 5,
|
|
createdAt: now - 86400 * 30,
|
|
fileSize: 1200,
|
|
snippet: 'Vault instructions for AI agents. Defines how tools and integrations interact with this vault.',
|
|
wordCount: 200,
|
|
relationships: {
|
|
'Type': ['[[type/config]]'],
|
|
},
|
|
icon: null,
|
|
color: null,
|
|
order: null,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: [],
|
|
properties: {},
|
|
},
|
|
{
|
|
path: '/Users/luca/Laputa/recipe/pasta-carbonara.md',
|
|
filename: 'pasta-carbonara.md',
|
|
title: 'Pasta Carbonara',
|
|
isA: 'Recipe',
|
|
aliases: [],
|
|
belongsTo: [],
|
|
relatedTo: [],
|
|
status: null,
|
|
owner: null,
|
|
cadence: null,
|
|
archived: false,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
modifiedAt: now - 86400 * 5,
|
|
createdAt: now - 86400 * 10,
|
|
fileSize: 420,
|
|
snippet: 'Classic Roman pasta dish with eggs, pecorino, guanciale, and black pepper.',
|
|
wordCount: 310,
|
|
relationships: {
|
|
'Type': ['[[type/recipe]]'],
|
|
},
|
|
icon: null,
|
|
color: null,
|
|
order: null,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: [],
|
|
properties: { Difficulty: 'Easy', 'Prep time': '30 min', Servings: 4 },
|
|
},
|
|
{
|
|
path: '/Users/luca/Laputa/book/designing-data-intensive-applications.md',
|
|
filename: 'designing-data-intensive-applications.md',
|
|
title: 'Designing Data-Intensive Applications',
|
|
isA: 'Book',
|
|
aliases: [],
|
|
belongsTo: [],
|
|
relatedTo: [],
|
|
status: null,
|
|
owner: null,
|
|
cadence: null,
|
|
archived: false,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
modifiedAt: now - 86400 * 14,
|
|
createdAt: now - 86400 * 60,
|
|
fileSize: 380,
|
|
snippet: 'Essential reading for anyone building distributed systems. Covers replication, partitioning, transactions.',
|
|
wordCount: 100,
|
|
relationships: {
|
|
'Type': ['[[type/book]]'],
|
|
},
|
|
icon: null,
|
|
color: null,
|
|
order: null,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: [],
|
|
properties: { Author: 'Martin Kleppmann', Rating: 5, 'Year published': 2017 },
|
|
},
|
|
// --- Trashed entries ---
|
|
{
|
|
path: '/Users/luca/Laputa/note/old-draft-notes.md',
|
|
filename: 'old-draft-notes.md',
|
|
title: 'Old Draft Notes',
|
|
isA: 'Note',
|
|
aliases: [],
|
|
belongsTo: ['[[project/26q1-laputa-app]]'],
|
|
relatedTo: [],
|
|
status: null,
|
|
owner: null,
|
|
cadence: null,
|
|
archived: false,
|
|
trashed: true,
|
|
trashedAt: now - 86400 * 5,
|
|
modifiedAt: now - 86400 * 10,
|
|
createdAt: null,
|
|
fileSize: 280,
|
|
snippet: 'Some rough draft content that is no longer relevant. Moving to trash.',
|
|
wordCount: 100,
|
|
relationships: {
|
|
'Belongs to': ['[[project/26q1-laputa-app]]'],
|
|
'Type': ['[[type/note]]'],
|
|
},
|
|
icon: null,
|
|
color: null,
|
|
order: null,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: [],
|
|
properties: {},
|
|
},
|
|
{
|
|
path: '/Users/luca/Laputa/note/deprecated-api-notes.md',
|
|
filename: 'deprecated-api-notes.md',
|
|
title: 'Deprecated API Notes',
|
|
isA: 'Note',
|
|
aliases: [],
|
|
belongsTo: [],
|
|
relatedTo: [],
|
|
status: null,
|
|
owner: null,
|
|
cadence: null,
|
|
archived: false,
|
|
trashed: true,
|
|
trashedAt: now - 86400 * 35,
|
|
modifiedAt: now - 86400 * 40,
|
|
createdAt: null,
|
|
fileSize: 190,
|
|
snippet: 'Old API documentation for the v1 endpoint. Replaced by v2 docs.',
|
|
wordCount: 85,
|
|
relationships: {
|
|
'Type': ['[[type/note]]'],
|
|
},
|
|
icon: null,
|
|
color: null,
|
|
order: null,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: [],
|
|
properties: {},
|
|
},
|
|
{
|
|
path: '/Users/luca/Laputa/experiment/failed-seo-experiment.md',
|
|
filename: 'failed-seo-experiment.md',
|
|
title: 'Failed SEO Experiment',
|
|
isA: 'Experiment',
|
|
aliases: [],
|
|
belongsTo: [],
|
|
relatedTo: ['[[responsibility/grow-newsletter]]'],
|
|
status: 'Dropped',
|
|
owner: 'Luca Rossi',
|
|
cadence: null,
|
|
archived: false,
|
|
trashed: true,
|
|
trashedAt: now - 86400 * 10,
|
|
modifiedAt: now - 86400 * 15,
|
|
createdAt: null,
|
|
fileSize: 340,
|
|
snippet: 'Tried programmatic SEO pages. Results were negligible — trashing this.',
|
|
wordCount: 120,
|
|
relationships: {
|
|
'Related to': ['[[responsibility/grow-newsletter]]'],
|
|
'Type': ['[[type/experiment]]'],
|
|
},
|
|
icon: null,
|
|
color: null,
|
|
order: null,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: [],
|
|
properties: {},
|
|
},
|
|
// --- Archived entries ---
|
|
{
|
|
path: '/Users/luca/Laputa/project/25q3-website-redesign.md',
|
|
filename: '25q3-website-redesign.md',
|
|
title: 'Website Redesign',
|
|
isA: 'Project',
|
|
aliases: [],
|
|
belongsTo: ['[[quarter/q3-2025]]'],
|
|
relatedTo: [],
|
|
status: 'Done',
|
|
owner: 'Luca Rossi',
|
|
cadence: null,
|
|
archived: true,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
icon: null,
|
|
color: null,
|
|
order: null,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: [],
|
|
properties: {},
|
|
modifiedAt: now - 86400 * 120,
|
|
createdAt: now - 86400 * 200,
|
|
fileSize: 680,
|
|
snippet: 'Completed redesign of the company website. Migrated from WordPress to Next.js with improved performance and SEO.',
|
|
wordCount: 342,
|
|
relationships: {
|
|
'Belongs to': ['[[quarter/q3-2025]]'],
|
|
'Type': ['[[type/project]]'],
|
|
},
|
|
},
|
|
{
|
|
path: '/Users/luca/Laputa/experiment/twitter-thread-experiment.md',
|
|
filename: 'twitter-thread-experiment.md',
|
|
title: 'Twitter Thread Growth Experiment',
|
|
isA: 'Experiment',
|
|
aliases: [],
|
|
belongsTo: [],
|
|
relatedTo: ['[[responsibility/grow-newsletter]]'],
|
|
status: 'Done',
|
|
owner: 'Luca Rossi',
|
|
cadence: null,
|
|
archived: true,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
icon: null,
|
|
color: null,
|
|
order: null,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: [],
|
|
properties: {},
|
|
modifiedAt: now - 86400 * 90,
|
|
createdAt: now - 86400 * 150,
|
|
fileSize: 520,
|
|
snippet: 'Publishing 3 Twitter threads per week instead of 1 will increase newsletter signups by 50%. Result: only 12% increase.',
|
|
wordCount: 215,
|
|
relationships: {
|
|
'Related to': ['[[responsibility/grow-newsletter]]'],
|
|
'Type': ['[[type/experiment]]'],
|
|
},
|
|
},
|
|
// --- Refactoring entries for exact-match search testing ---
|
|
{
|
|
path: '/Users/luca/Laputa/area/refactoring.md',
|
|
filename: 'refactoring.md',
|
|
title: 'Refactoring',
|
|
isA: 'Area',
|
|
aliases: [],
|
|
belongsTo: [],
|
|
relatedTo: [],
|
|
status: 'Active',
|
|
owner: null,
|
|
cadence: null,
|
|
archived: false,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
modifiedAt: now - 86400 * 30,
|
|
createdAt: now - 86400 * 365,
|
|
fileSize: 1200,
|
|
snippet: 'Area note covering refactoring practices and principles.',
|
|
wordCount: 180,
|
|
relationships: {},
|
|
icon: null,
|
|
color: null,
|
|
order: null,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: [],
|
|
properties: {},
|
|
},
|
|
{
|
|
path: '/Users/luca/Laputa/note/refactoring-ideas.md',
|
|
filename: 'refactoring-ideas.md',
|
|
title: 'Refactoring Ideas',
|
|
isA: 'Note',
|
|
aliases: [],
|
|
belongsTo: [],
|
|
relatedTo: [],
|
|
status: null,
|
|
owner: null,
|
|
cadence: null,
|
|
archived: false,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
modifiedAt: now - 86400 * 5,
|
|
createdAt: now - 86400 * 60,
|
|
fileSize: 800,
|
|
snippet: 'Ideas for refactoring the codebase.',
|
|
wordCount: 120,
|
|
relationships: {},
|
|
icon: null,
|
|
color: null,
|
|
order: null,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: [],
|
|
properties: {},
|
|
},
|
|
{
|
|
path: '/Users/luca/Laputa/note/refactoring-key-ideas.md',
|
|
filename: 'refactoring-key-ideas.md',
|
|
title: 'Refactoring Key Ideas',
|
|
isA: 'Note',
|
|
aliases: [],
|
|
belongsTo: [],
|
|
relatedTo: [],
|
|
status: null,
|
|
owner: null,
|
|
cadence: null,
|
|
archived: false,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
modifiedAt: now - 86400 * 10,
|
|
createdAt: now - 86400 * 90,
|
|
fileSize: 600,
|
|
snippet: 'Key ideas from the refactoring book.',
|
|
wordCount: 95,
|
|
relationships: {},
|
|
icon: null,
|
|
color: null,
|
|
order: null,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: [],
|
|
properties: {},
|
|
},
|
|
{
|
|
path: '/Users/luca/Laputa/note/refactoring-patterns.md',
|
|
filename: 'refactoring-patterns.md',
|
|
title: 'Refactoring Patterns',
|
|
isA: 'Note',
|
|
aliases: [],
|
|
belongsTo: [],
|
|
relatedTo: [],
|
|
status: null,
|
|
owner: null,
|
|
cadence: null,
|
|
archived: false,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
modifiedAt: now - 86400 * 15,
|
|
createdAt: now - 86400 * 120,
|
|
fileSize: 950,
|
|
snippet: 'Common refactoring patterns and when to apply them.',
|
|
wordCount: 150,
|
|
relationships: {},
|
|
icon: null,
|
|
color: null,
|
|
order: null,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: [],
|
|
properties: {},
|
|
},
|
|
]
|
|
|
|
// --- Bulk entry generator for large vault testing ---
|
|
|
|
const BULK_TYPES = ['Note', 'Project', 'Experiment', 'Responsibility', 'Procedure', 'Person', 'Event', 'Essay', 'Topic']
|
|
const BULK_ADJECTIVES = ['Quick', 'Advanced', 'Daily', 'Weekly', 'Annual', 'Draft', 'Final', 'Revised', 'Archived', 'New']
|
|
const BULK_NOUNS = ['Meeting', 'Strategy', 'Review', 'Plan', 'Analysis', 'Summary', 'Report', 'Guide', 'Checklist', 'Template', 'Framework', 'Workflow', 'Retrospective', 'Brainstorm', 'Proposal']
|
|
const BULK_SNIPPETS = [
|
|
'Key findings from the latest analysis session.',
|
|
'Notes on process improvements and next steps.',
|
|
'Summary of decisions made during the review.',
|
|
'Action items and follow-ups from discussion.',
|
|
'Draft outline for upcoming deliverable.',
|
|
'Reference material for the ongoing initiative.',
|
|
'Tracking progress on quarterly objectives.',
|
|
'Comparison of different approaches considered.',
|
|
]
|
|
|
|
function generateBulkEntries(count: number): VaultEntry[] {
|
|
const entries: VaultEntry[] = []
|
|
for (let i = 0; i < count; i++) {
|
|
const type = BULK_TYPES[i % BULK_TYPES.length]
|
|
const adj = BULK_ADJECTIVES[i % BULK_ADJECTIVES.length]
|
|
const noun = BULK_NOUNS[i % BULK_NOUNS.length]
|
|
const title = `${adj} ${noun} ${i + 1}`
|
|
const slug = title.toLowerCase().replace(/\s+/g, '-')
|
|
const folder = type.toLowerCase()
|
|
entries.push({
|
|
path: `/Users/luca/Laputa/${folder}/${slug}.md`,
|
|
filename: `${slug}.md`,
|
|
title,
|
|
isA: type,
|
|
aliases: [],
|
|
belongsTo: [],
|
|
relatedTo: [],
|
|
status: i % 4 === 0 ? 'Active' : i % 4 === 1 ? 'Paused' : i % 4 === 2 ? 'Done' : null,
|
|
owner: i % 3 === 0 ? 'Luca Rossi' : null,
|
|
cadence: null,
|
|
archived: false,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
modifiedAt: now - i * 600,
|
|
createdAt: now - 86400 * 90 - i * 3600,
|
|
fileSize: 500 + (i % 2000),
|
|
snippet: BULK_SNIPPETS[i % BULK_SNIPPETS.length],
|
|
wordCount: 50 + (i % 200),
|
|
relationships: {},
|
|
icon: null,
|
|
color: null,
|
|
order: null,
|
|
outgoingLinks: Array.from({ length: i % 8 }, (_j, j) => `note/link-target-${(i + j) % 50}`),
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
properties: {},
|
|
})
|
|
}
|
|
return entries
|
|
}
|
|
|
|
// Theme entries — seeded vault themes
|
|
MOCK_ENTRIES.push(
|
|
{
|
|
path: '/Users/luca/Laputa/theme/default.md',
|
|
filename: 'default.md',
|
|
title: 'Default',
|
|
isA: 'Theme',
|
|
aliases: [],
|
|
belongsTo: [],
|
|
relatedTo: [],
|
|
status: null,
|
|
owner: null,
|
|
cadence: null,
|
|
archived: false,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
modifiedAt: now - 86400 * 30,
|
|
createdAt: now - 86400 * 30,
|
|
fileSize: 512,
|
|
snippet: 'Light theme with warm, paper-like tones.',
|
|
wordCount: 10,
|
|
relationships: {},
|
|
icon: null,
|
|
color: null,
|
|
order: null,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: [],
|
|
properties: {},
|
|
},
|
|
{
|
|
path: '/Users/luca/Laputa/theme/dark.md',
|
|
filename: 'dark.md',
|
|
title: 'Dark',
|
|
isA: 'Theme',
|
|
aliases: [],
|
|
belongsTo: [],
|
|
relatedTo: [],
|
|
status: null,
|
|
owner: null,
|
|
cadence: null,
|
|
archived: false,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
modifiedAt: now - 86400 * 30,
|
|
createdAt: now - 86400 * 30,
|
|
fileSize: 512,
|
|
snippet: 'Dark variant with deep navy tones.',
|
|
wordCount: 10,
|
|
relationships: {},
|
|
icon: null,
|
|
color: null,
|
|
order: null,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: [],
|
|
properties: {},
|
|
},
|
|
{
|
|
path: '/Users/luca/Laputa/theme/minimal.md',
|
|
filename: 'minimal.md',
|
|
title: 'Minimal',
|
|
isA: 'Theme',
|
|
aliases: [],
|
|
belongsTo: [],
|
|
relatedTo: [],
|
|
status: null,
|
|
owner: null,
|
|
cadence: null,
|
|
archived: false,
|
|
trashed: false,
|
|
trashedAt: null,
|
|
modifiedAt: now - 86400 * 30,
|
|
createdAt: now - 86400 * 30,
|
|
fileSize: 512,
|
|
snippet: 'High contrast, minimal chrome.',
|
|
wordCount: 10,
|
|
relationships: {},
|
|
icon: null,
|
|
color: null,
|
|
order: null,
|
|
sidebarLabel: null,
|
|
template: null, sort: null, view: null, visible: null,
|
|
outgoingLinks: [],
|
|
properties: {},
|
|
},
|
|
)
|
|
|
|
// Append 9000 generated entries for realistic large-vault testing
|
|
MOCK_ENTRIES.push(...generateBulkEntries(9000))
|