Fix note-field space bar hijacking video, rework Outline topics as documents
- Lesson page's global keyboard shortcuts (space/arrows for play-pause/ seek/volume) fired regardless of focus, so typing a space in the notes textarea toggled the video instead of typing. Now skipped entirely whenever a text field/select has focus. - Outline topics no longer spawn their own top-level collection each time. A topic is now a document inside one fixed, user-configured collection (Settings -> Outline Integration -> Default collection), and a lesson's note becomes a child document nested under its topic - matching how notes actually get organized in a real Outline instance instead of cluttering the collections list with one per topic. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -248,6 +248,29 @@ before.
|
||||
session), including Settings → Test Connection hitting the real HTTP
|
||||
path.
|
||||
|
||||
## Outline integration follow-up fixes (this session)
|
||||
|
||||
- **Space bar bug**: the lesson page's global keyboard-shortcut handler
|
||||
(space/arrows for play-pause/seek/volume) fired regardless of what had
|
||||
focus, so typing a space in the notes textarea toggled the video instead.
|
||||
Fixed with an `isTypingTarget()` guard that skips the shortcut handler
|
||||
entirely when a textarea/input/select/contenteditable has focus.
|
||||
- **Topic model redesign**: topics used to each spawn their own top-level
|
||||
Outline *collection*. Changed so a topic is instead a *document* inside
|
||||
one fixed, user-configured collection (Settings → Outline Integration →
|
||||
Default collection, e.g. "Training Notes") - a lesson's note becomes a
|
||||
child document nested under its topic document, matching how the user
|
||||
actually organizes their real Outline instance. `list_outline_topics()`
|
||||
fetches the collection's documents and filters to `parentDocumentId is
|
||||
None` locally rather than trusting `documents.list`'s `collectionId`/
|
||||
`parentDocumentId` request filters - both are marked deprecated in
|
||||
Outline's own API spec with unclear recursive-vs-top-level semantics, so
|
||||
filtering the response ourselves is the version that can't be wrong.
|
||||
Verified end-to-end against a local mock Outline server: resolving a new
|
||||
topic creates a top-level doc, pushing a note creates a child doc under
|
||||
it, and the child never leaks back into the topic chooser as if it were
|
||||
a topic itself.
|
||||
|
||||
## Known limitations still open
|
||||
- App is unauthenticated by design (matches upstream) — settings and hidden-path
|
||||
curation apply app-wide, not per-browser/per-user.
|
||||
|
||||
Reference in New Issue
Block a user