Files
tolaria/src/mock-tauri/mock-entries.ts
Test b3bf2bf76e fix: sidebar section header reflects type icon, color, and label
- 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>
2026-03-11 21:24:51 +01:00

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))