mirror of
https://github.com/rowboatlabs/rowboat.git
synced 2026-05-31 19:15:17 +02:00
added last update time
This commit is contained in:
parent
5fab2b95f4
commit
669650be1a
4 changed files with 28 additions and 10 deletions
|
|
@ -153,6 +153,12 @@ function getSortValue(note: NoteEntry, column: string): string | number {
|
|||
if (column === 'mtimeMs') return note.mtimeMs
|
||||
const v = note.fields[column]
|
||||
if (!v) return ''
|
||||
// Sort date-like columns numerically
|
||||
if (column === 'last_update' || column === 'first_met') {
|
||||
const s = Array.isArray(v) ? v[0] ?? '' : v
|
||||
const ms = Date.parse(s)
|
||||
return isNaN(ms) ? 0 : ms
|
||||
}
|
||||
return Array.isArray(v) ? v[0] ?? '' : v
|
||||
}
|
||||
|
||||
|
|
@ -776,6 +782,17 @@ function CellRenderer({
|
|||
return <span className="text-muted-foreground whitespace-nowrap truncate block">{formatDate(note.mtimeMs)}</span>
|
||||
}
|
||||
|
||||
// Date-like frontmatter columns — render like Last Modified
|
||||
if (column === 'last_update' || column === 'first_met') {
|
||||
const value = note.fields[column]
|
||||
if (!value || Array.isArray(value)) return null
|
||||
const ms = Date.parse(value)
|
||||
if (!isNaN(ms)) {
|
||||
return <span className="text-muted-foreground whitespace-nowrap truncate block">{formatDate(ms)}</span>
|
||||
}
|
||||
return <span className="text-muted-foreground whitespace-nowrap truncate block">{value}</span>
|
||||
}
|
||||
|
||||
// Frontmatter column
|
||||
const value = note.fields[column]
|
||||
if (!value) return null
|
||||
|
|
|
|||
|
|
@ -925,6 +925,7 @@ If you discovered new name variants during resolution, add them to Aliases field
|
|||
- Note state changes with \`[Field → value]\` in activity
|
||||
- Escape quotes properly in shell commands
|
||||
- Write only one file per response (no multi-file write batches)
|
||||
- **Always set \`Last update\`** in the Info section to the YYYY-MM-DD date of the source email or meeting. When updating an existing note, update this field to the new source event's date.
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ const DEFAULT_NOTE_TYPE_DEFINITIONS: NoteTypeDefinition[] = [
|
|||
**Email:** {email or leave blank}
|
||||
**Aliases:** {comma-separated: first name, nicknames, email}
|
||||
**First met:** {YYYY-MM-DD}
|
||||
**Last seen:** {YYYY-MM-DD}
|
||||
**Last update:** {YYYY-MM-DD}
|
||||
|
||||
## Summary
|
||||
{2-3 sentences: Who they are, why you know them, what you're working on together.}
|
||||
|
|
@ -56,7 +56,7 @@ const DEFAULT_NOTE_TYPE_DEFINITIONS: NoteTypeDefinition[] = [
|
|||
**Domain:** {primary email domain}
|
||||
**Aliases:** {comma-separated: short names, abbreviations}
|
||||
**First met:** {YYYY-MM-DD}
|
||||
**Last seen:** {YYYY-MM-DD}
|
||||
**Last update:** {YYYY-MM-DD}
|
||||
|
||||
## Summary
|
||||
{2-3 sentences: What this org is, what your relationship is.}
|
||||
|
|
@ -90,7 +90,7 @@ const DEFAULT_NOTE_TYPE_DEFINITIONS: NoteTypeDefinition[] = [
|
|||
**Type:** {deal|product|initiative|hiring|other}
|
||||
**Status:** {active|planning|on hold|completed|cancelled}
|
||||
**Started:** {YYYY-MM-DD or leave blank}
|
||||
**Last activity:** {YYYY-MM-DD}
|
||||
**Last update:** {YYYY-MM-DD}
|
||||
|
||||
## Summary
|
||||
{2-3 sentences: What this project is, goal, current state.}
|
||||
|
|
@ -131,7 +131,7 @@ const DEFAULT_NOTE_TYPE_DEFINITIONS: NoteTypeDefinition[] = [
|
|||
**Keywords:** {comma-separated}
|
||||
**Aliases:** {other ways this topic is referenced}
|
||||
**First mentioned:** {YYYY-MM-DD}
|
||||
**Last mentioned:** {YYYY-MM-DD}
|
||||
**Last update:** {YYYY-MM-DD}
|
||||
|
||||
## Related
|
||||
- [[People/{Person}]] — {relationship}
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ role: VP Engineering
|
|||
organization: Acme Corp
|
||||
email: sarah@acme.com
|
||||
first_met: "2024-06-15"
|
||||
last_seen: "2025-01-20"
|
||||
last_update: "2025-01-20"
|
||||
---
|
||||
\`\`\`
|
||||
|
||||
|
|
@ -80,7 +80,7 @@ Use these exact keys for each tag category:
|
|||
|
||||
Extract all \`**Key:** value\` fields from the \`## Info\` (or \`## About\`) section into YAML frontmatter keys:
|
||||
|
||||
1. **Convert keys to snake_case**: e.g. \`**First met:**\` → \`first_met\`, \`**Last activity:**\` → \`last_activity\`, \`**Last seen:**\` → \`last_seen\`.
|
||||
1. **Convert keys to snake_case**: e.g. \`**First met:**\` → \`first_met\`, \`**Last update:**\` → \`last_update\`.
|
||||
2. **Strip wiki-link syntax**: \`[[Organizations/Acme Corp]]\` → \`Acme Corp\`. Extract just the display name (last path segment).
|
||||
3. **Skip blank/placeholder values**: If a field says "leave blank", is empty, or contains only template placeholders like \`{role}\`, omit it from the frontmatter.
|
||||
4. **Quote dates**: Wrap date values in quotes, e.g. \`first_met: "2024-06-15"\`.
|
||||
|
|
@ -93,10 +93,10 @@ Extract all \`**Key:** value\` fields from the \`## Info\` (or \`## About\`) sec
|
|||
|
||||
**Per note type, extract these fields:**
|
||||
|
||||
- **People**: role, organization, email, aliases, first_met, last_seen
|
||||
- **Organizations**: type, industry, relationship, domain, aliases, first_met, last_seen
|
||||
- **Projects**: type, status, started, last_activity
|
||||
- **Topics** (from \`## About\`): keywords, aliases, first_mentioned, last_mentioned
|
||||
- **People**: role, organization, email, aliases, first_met, last_update
|
||||
- **Organizations**: type, industry, relationship, domain, aliases, first_met, last_update
|
||||
- **Projects**: type, status, started, last_update
|
||||
- **Topics** (from \`## About\`): keywords, aliases, first_mentioned, last_update
|
||||
- **Meetings**: Extract from the note content and file path:
|
||||
- \`date\`: meeting date (from the file path \`Meetings/{source}/YYYY/MM/DD/\` or from \`created_at\`/\`Date:\` in content)
|
||||
- \`source\`: \`granola\` or \`fireflies\` (from the file path)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue