a74162e34e
- Bottom-bar resolution dropdown (1080p60/1080p30/720p60/480p30) with tooltip on finding upload bandwidth; disabled while live; no in-app speed test - FocusPreservingListBox keeps selection/focus coherent when a selected scene/source is deleted (skip hidden scenes; leave list when empty) - Themes/Controls.xaml: single dark-theme dictionary merged once in App.xaml; custom ComboBox template fixes SelectionBoxItem rendering; GoLiveWindow and ReuseImageDialog consolidated onto shared styles - AppLog file logger + AppDomain/Dispatcher exception hooks; checkpointed MainWindow/VM/dialog constructors (caught MenuItemRole.Separator XAML crash) - Memory map: schema.md conventions, per-directory index.md, updated ai.md/ TASKS.md/README.md (OAuth creds real; token persistence still pending)
2.8 KiB
2.8 KiB
ytLlive — Memory Map (schema)
This file defines how the repo stores durable, associative memory: context as
plain markdown files, versioned in git. It is the map of the map — the schema
that every other memory file follows. Read ai.md first; this file explains
why and how.
Why markdown files, not a database
- Grep-able, diffable, portable, human-editable — no tooling lock-in.
- Git gives versioning and history for free; every stale fact is a
git logaway. - Files form a graph: each file is a node, each relative link an edge. The map stays associative (like memory) rather than a rigid tree.
File inventory
| File | Role | Entry point? |
|---|---|---|
README.md |
Human-facing intro: what the app is, how to run it, roadmap | no |
ai.md |
AI guide + session handoff — architecture, patterns, decisions, the cognitive map home | yes — start here |
TASKS.md |
Task queue + authoritative YouTube API research facts + task statuses | yes — for status |
schema.md |
This file: the conventions below | when in doubt |
<dir>/index.md |
Per-directory map (progressive disclosure): what lives there + links | when diving into code |
Views/ |
Reserved for Views; currently empty | — |
Conventions
- Semantic filenames. A file's name says what it is (
YouTubeAuthService.cs,FocusPreservingListBox.cs). No codes, no abbreviations. Naming beats search. - One
index.mdper code directory. The index is a Map of Content (MOC): it lists every file in that directory with a one-line purpose and links out to related directories. Details live in the files, never duplicated in the index. - Links over hierarchy. Prefer relative links between related files over
deep nesting. Relationships that matter should be visible from
ai.mdor anindex.md; a note that is unreachable fromai.mdmight as well not exist. - Stale facts get FIXED, not appended. A wrong map is worse than no map. When the code changes, update the memory file in the same change — no "TODO: update later" notes.
- Progressive disclosure. Don't cram detail into
ai.md.ai.mdnames concepts and points at files; the indexes and source are the detail. Each layer adds resolution only when you drill in.
Reading order
ai.md— what this app is, how it's built, current state, open decisions.TASKS.md— what's done, what's next, and the YouTube API constraints.<dir>/index.md— to understand a directory before reading its files.- The source files themselves — always the authority over any memory file.
Integration rule
Every feature change ships with its memory update: ai.md for architecture /
patterns, TASKS.md for status, index files when the layout changes. That is
what keeps the map accurate enough to trust next session.