Add timestamped notes: multi-note support, quick-capture hotkey, live saved indicator

Replace the single free-text note per lesson with a list of timestamped
note entries, migrated transparently from the old format. Adds a
floating notes panel on the lesson page with an always-reachable
quick-capture bar (press N to pause and jump in), inline edit/delete,
click-to-seek timestamps, and a live "Saved Xs ago" indicator. Notes
Hub, the study guide export, and the Outline push all updated to
render multiple timestamped notes per lesson.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-22 20:17:20 -04:00
co-authored by Claude Sonnet 5
parent c871d6efae
commit 8b365c4463
3 changed files with 569 additions and 98 deletions
+15 -2
View File
@@ -167,6 +167,16 @@
white-space: nowrap;
flex-shrink: 0;
}
.timestamp-badge {
font-size: 0.75em;
background: var(--bg-primary);
color: var(--text-muted);
padding: 2px 8px;
border-radius: 3px;
border: 1px solid var(--border-color);
white-space: nowrap;
flex-shrink: 0;
}
.note-card-body {
white-space: pre-wrap;
word-break: break-word;
@@ -213,13 +223,16 @@
<span class="note-lesson-title">{{ note.lesson_title }}</span>
<span class="note-course-name">{{ note.course_name }}</span>
</div>
{% if note.timestamp_label %}
<span class="timestamp-badge">{{ note.timestamp_label }}</span>
{% endif %}
{% if note.pushed_to_outline %}
<span class="outline-badge">Outline</span>
{% endif %}
</div>
<div class="note-card-body">{{ note.note }}</div>
<div class="note-card-body">{{ note.text }}</div>
<a class="note-card-link"
href="/recent/open?course_path={{ note.course_path | urlencode }}&lesson_path={{ note.lesson_path | urlencode }}">
href="/recent/open?course_path={{ note.course_path | urlencode }}&lesson_path={{ note.lesson_path | urlencode }}{% if note.timestamp_seconds is not none %}&t={{ note.timestamp_seconds }}{% endif %}">
Open lesson →
</a>
</div>