feat: note subtitle — show metadata (date + word count) (#94)

* feat: show metadata subtitle (date + word count) instead of snippet

Replace the note list subtitle with a compact metadata summary showing
relative date and word count (e.g. "2d ago · 342 words") instead of
the first paragraph of note content. Adds word_count to VaultEntry on
the Rust backend, computed during vault scan.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: cargo fmt formatting

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Luca Rossi
2026-02-26 20:50:29 +01:00
committed by GitHub
parent 1c2f0ee193
commit 4664f3360e
30 changed files with 279 additions and 21 deletions

View File

@@ -34,6 +34,7 @@ const mockEntries: VaultEntry[] = [
createdAt: null,
fileSize: 1024,
snippet: '',
wordCount: 0,
relationships: {},
icon: null,
color: null,
@@ -58,6 +59,7 @@ const mockEntries: VaultEntry[] = [
createdAt: null,
fileSize: 512,
snippet: '',
wordCount: 0,
relationships: {},
icon: null,
color: null,
@@ -82,6 +84,7 @@ const mockEntries: VaultEntry[] = [
createdAt: null,
fileSize: 256,
snippet: '',
wordCount: 0,
relationships: {},
icon: null,
color: null,
@@ -106,6 +109,7 @@ const mockEntries: VaultEntry[] = [
createdAt: null,
fileSize: 128,
snippet: '',
wordCount: 0,
relationships: {},
icon: null,
color: null,
@@ -130,6 +134,7 @@ const mockEntries: VaultEntry[] = [
createdAt: null,
fileSize: 256,
snippet: '',
wordCount: 0,
relationships: {},
icon: null,
color: null,
@@ -154,6 +159,7 @@ const mockEntries: VaultEntry[] = [
createdAt: null,
fileSize: 180,
snippet: '',
wordCount: 0,
relationships: {},
icon: null,
color: null,
@@ -178,6 +184,7 @@ const mockEntries: VaultEntry[] = [
createdAt: null,
fileSize: 100,
snippet: '',
wordCount: 0,
relationships: {},
icon: null,
color: null,
@@ -202,6 +209,7 @@ const mockEntries: VaultEntry[] = [
createdAt: null,
fileSize: 200,
snippet: '',
wordCount: 0,
relationships: {},
icon: null,
color: null,
@@ -385,6 +393,7 @@ describe('Sidebar', () => {
createdAt: null,
fileSize: 200,
snippet: '',
wordCount: 0,
relationships: {},
icon: null,
color: null,
@@ -409,6 +418,7 @@ describe('Sidebar', () => {
createdAt: null,
fileSize: 200,
snippet: '',
wordCount: 0,
relationships: {},
icon: null,
color: null,
@@ -433,6 +443,7 @@ describe('Sidebar', () => {
createdAt: null,
fileSize: 300,
snippet: '',
wordCount: 0,
relationships: {},
icon: null,
color: null,
@@ -486,6 +497,7 @@ describe('Sidebar', () => {
createdAt: null,
fileSize: 200,
snippet: '',
wordCount: 0,
relationships: {},
icon: null,
color: null,
@@ -603,18 +615,21 @@ describe('Sidebar', () => {
path: '/vault/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: 1700000000, createdAt: null, fileSize: 200, snippet: '',
wordCount: 0,
relationships: {}, icon: null, color: null, order: 5, outgoingLinks: [],
},
{
path: '/vault/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: 1700000000, createdAt: null, fileSize: 200, snippet: '',
wordCount: 0,
relationships: {}, icon: null, color: null, order: 0, outgoingLinks: [],
},
{
path: '/vault/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: 1700000000, createdAt: null, fileSize: 200, snippet: '',
wordCount: 0,
relationships: {}, icon: null, color: null, order: 1, outgoingLinks: [],
},
]