jlightner
f6dcc80dbf
merge: reconcile diverged histories — ub01 working tree is source of truth
...
Local auto-mode (M005-M007) and origin/main (M004 manual pushes from ub01) diverged
at e08e8d0 . Commit 7aa33cd accidentally deleted 78 project files during auto-mode.
The ub01 working tree has all features running correctly.
This merge uses 'ours' strategy to record origin/main as an ancestor, then the
following commit overlays the correct file state from ub01.
2026-03-31 02:10:31 +00:00
jlightner
7d4eddce99
chore: auto-commit after complete-milestone
...
GSD-Unit: M007
2026-03-30 19:53:11 +00:00
jlightner
2e2c89ec50
feat: Added flex-wrap, max-width, and tighter mobile gaps to prevent ho…
...
- "frontend/src/App.css"
GSD-Task: S06/T01
2026-03-30 19:48:30 +00:00
jlightner
f2cc72376c
feat: Added overflow: hidden, word-break, max-width: 100%, and min-widt…
...
- "frontend/src/App.css"
GSD-Task: S05/T01
2026-03-30 19:41:41 +00:00
jlightner
9dfa568bb3
feat: Pruned dead UI, renamed view toggle to Oldest/Newest first, added…
...
- "frontend/src/pages/AdminPipeline.tsx"
- "frontend/src/App.css"
GSD-Task: S04/T02
2026-03-30 19:36:47 +00:00
jlightner
44c0df6e08
feat: Added DebugModeToggle component and StatusFilter pill bar to Admi…
...
- "frontend/src/pages/AdminPipeline.tsx"
- "frontend/src/api/public-client.ts"
- "frontend/src/App.css"
GSD-Task: S04/T01
2026-03-30 19:34:11 +00:00
jlightner
64ff263da2
docs: Rewrite README with information flow stages and updated architecture
...
Replaces outdated README with streamlined version covering all 8 services,
complete API endpoints, 6-stage information flow diagram, and current
project structure.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 14:27:02 -05:00
jlightner
97b9f7234a
feat: Added chrysopedia-watcher service to Docker Compose, deployed and…
...
- "docker-compose.yml"
- ".gsd/milestones/M007/slices/S03/tasks/T02-SUMMARY.md"
GSD-Task: S03/T02
2026-03-30 19:24:39 +00:00
jlightner
5e408dff5a
feat: Built backend/watcher.py with PollingObserver-based folder watchi…
...
- "backend/watcher.py"
- "backend/requirements.txt"
GSD-Task: S03/T01
2026-03-30 19:17:47 +00:00
jlightner
07eaa7f309
feat: Added DebugPayloadViewer component with collapsible System Prompt…
...
- "frontend/src/pages/AdminPipeline.tsx"
- "frontend/src/api/public-client.ts"
- "frontend/src/App.css"
GSD-Task: S02/T01
2026-03-30 19:07:23 +00:00
jlightner
653c927845
feat: DebugPayloadViewer component with copy, export, collapsible sections
2026-03-30 19:01:17 +00:00
jlightner
8c89b5d94c
feat: Wired debug-mode-aware LLM I/O capture into pipeline callback — _…
...
- "backend/pipeline/stages.py"
GSD-Task: S01/T02
2026-03-30 18:54:50 +00:00
jlightner
be6b2d5963
feat: Added 3 TEXT columns to pipeline_events (system_prompt_text, user…
...
- "backend/models.py"
- "backend/config.py"
- "backend/schemas.py"
- "backend/routers/pipeline.py"
- "alembic/versions/006_debug_columns.py"
GSD-Task: S01/T01
2026-03-30 18:23:38 +00:00
jlightner
e8bc3fd9a2
feat(whisper): add batch_transcribe.py and document HAL0022 transcription setup
...
- batch_transcribe.py: recursive multi-creator transcription runner that
walks nested subdirectories, attributes creator from top-level folder name,
writes batch_manifest.json with timing and per-creator results
- README.md: updated with batch mode docs, HAL0022 environment details,
transcript output location (C:\Users\jlightner\chrysopedia\transcripts),
scheduled task usage, and transfer instructions for ub01 ingestion
2026-03-30 11:46:52 -05:00
jlightner
0484c15516
chore: auto-commit after complete-milestone
...
GSD-Unit: M006
2026-03-30 12:13:09 +00:00
jlightner
2e9ef20e24
feat: Updated Dockerfile.web and docker-compose.yml on ub01 to pass VIT…
...
- "docker/Dockerfile.web"
- "docker-compose.yml"
GSD-Task: S06/T02
2026-03-30 12:05:28 +00:00
jlightner
e6ce650487
feat: Added AppFooter component displaying app version, build date, com…
...
- "frontend/src/components/AppFooter.tsx"
- "frontend/vite.config.ts"
- "frontend/src/App.tsx"
- "frontend/src/App.css"
- "frontend/src/vite-env.d.ts"
GSD-Task: S06/T01
2026-03-30 12:00:58 +00:00
jlightner
75332343cb
feat: Rewrote TopicsBrowse.tsx from vertical accordion to responsive 2-…
...
- "frontend/src/pages/TopicsBrowse.tsx"
- "frontend/src/App.css"
GSD-Task: S05/T02
2026-03-30 11:48:51 +00:00
jlightner
3f3fe065f8
feat: Added Music Theory as 7th category in canonical_tags.yaml with 8…
...
- "config/canonical_tags.yaml"
- "frontend/src/App.css"
GSD-Task: S05/T01
2026-03-30 11:44:18 +00:00
jlightner
61d52d719e
feat: Reordered technique page sidebar (plugins first), added prominent…
...
- "frontend/src/pages/TechniquePage.tsx"
- "frontend/src/App.css"
GSD-Task: S04/T01
2026-03-30 11:34:14 +00:00
jlightner
b4d4caeda6
feat: Added "Commit" row to version metadata panel on TechniquePage — r…
...
- "frontend/src/pages/TechniquePage.tsx"
GSD-Task: S03/T02
2026-03-30 11:25:47 +00:00
jlightner
12f9fb7334
chore: Added GIT_COMMIT_SHA build arg to Dockerfile.api, compose build…
...
- "docker/Dockerfile.api"
- "docker-compose.yml"
- "backend/config.py"
- "backend/pipeline/stages.py"
GSD-Task: S03/T01
2026-03-30 11:24:34 +00:00
jlightner
ee24731e59
feat: Added Head/Tail segmented toggle to EventLog with order param wir…
...
- "frontend/src/api/public-client.ts"
- "frontend/src/pages/AdminPipeline.tsx"
- "frontend/src/App.css"
GSD-Task: S02/T02
2026-03-30 11:15:21 +00:00
jlightner
bf126f4825
feat: Added order query parameter (asc/desc, default desc) to pipelin…
...
- "backend/routers/pipeline.py"
GSD-Task: S02/T01
2026-03-30 11:10:44 +00:00
jlightner
05c7ba3ca2
feat: Created AdminDropdown component with click-outside/Escape close,…
...
- "frontend/src/components/AdminDropdown.tsx"
- "frontend/src/App.tsx"
- "frontend/src/App.css"
GSD-Task: S01/T01
2026-03-30 11:02:23 +00:00
jlightner
08d7d19d0e
fix: Nginx resolver for Docker DNS — prevent stale upstream IPs
...
Use Docker embedded DNS (127.0.0.11) with 30s TTL and variable-based
proxy_pass so nginx re-resolves the API container IP after recreates
instead of caching the startup IP forever.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 05:55:42 -05:00
jlightner
c6f69019cf
feat: Content hash dedup and prior-page versioning
...
- Add content_hash (SHA-256 of transcript text) to source_videos (migration 005)
- 3-tier duplicate detection at ingest: exact filename, content hash,
then normalized filename + duration (handles yt-dlp re-downloads)
- Snapshot prior technique_page_ids to Redis before pipeline dispatch
- Stage 5 matches prior pages by creator+category before slug fallback,
enabling version snapshots on reprocessing even when LLM generates
different slugs
- Expose content_hash in API responses and admin pipeline dashboard
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 05:55:27 -05:00
jlightner
c6c15defee
feat: Dynamic token estimation for per-stage max_tokens
...
- Add estimate_tokens() and estimate_max_tokens() to llm_client with
stage-specific output ratios (0.3x segmentation, 1.2x extraction,
0.15x classification, 1.5x synthesis)
- Add max_tokens override parameter to LLMClient.complete()
- Wire all 4 pipeline stages to estimate max_tokens from actual prompt
content with 20% buffer and 2048 floor
- Add LLM_MAX_TOKENS_HARD_LIMIT=32768 config (dynamic estimator ceiling)
- Log token estimates alongside every LLM request
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 05:55:17 -05:00
jlightner
df33d15360
feat: Pipeline events, admin dashboard, and version switcher UI
...
- Add pipeline_events table (migration 004) for structured stage logging
- Add PipelineEvent model with token usage tracking
- Admin pipeline dashboard with video list, event log, worker status,
trigger/revoke controls, and collapsible JSON payload viewer
- Version switcher on technique pages — view historical snapshots
with pipeline metadata (model names, prompt hashes)
- Frontend types for pipeline admin and version APIs
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 05:55:07 -05:00
jlightner
94460faf9d
chore: auto-commit after complete-milestone
...
GSD-Unit: M005
2026-03-30 09:01:54 +00:00
jlightner
c6efec8363
feat: Split key moment card header into standalone h3 title and flex-ro…
...
- "frontend/src/pages/TechniquePage.tsx"
- "frontend/src/App.css"
GSD-Task: S03/T01
2026-03-30 08:55:48 +00:00
jlightner
aa71387ad5
feat: Added CSS grid layout splitting technique page into prose (left)…
...
- "frontend/src/App.css"
- "frontend/src/pages/TechniquePage.tsx"
GSD-Task: S02/T01
2026-03-30 08:47:55 +00:00
jlightner
26556ba03e
feat: Built AdminPipeline.tsx page at /admin/pipeline with video table,…
...
- "frontend/src/pages/AdminPipeline.tsx"
- "frontend/src/api/public-client.ts"
- "frontend/src/App.tsx"
- "frontend/src/App.css"
GSD-Task: S01/T03
2026-03-30 08:35:11 +00:00
jlightner
b3d405bb84
fix: All five admin pipeline endpoints respond correctly — fix was ngin…
...
- "backend/routers/pipeline.py"
GSD-Task: S01/T02
2026-03-30 08:30:15 +00:00
jlightner
7aa33cd17f
fix: Fixed syntax errors in pipeline event instrumentation — _emit_even…
...
- "backend/pipeline/stages.py"
GSD-Task: S01/T01
2026-03-30 08:27:53 +00:00
jlightner
b3204bece9
feat: Version switcher on technique pages — view historical snapshots with pipeline metadata
...
- Version dropdown appears when version_count > 0 (hidden until first re-run)
- Selecting a historical version overlays snapshot content (title, summary, body, chains, plugins)
- Key moments and related links always show live data (not versioned)
- Pipeline metadata block shows model, capture time, and prompt file hashes (truncated)
- Cyan banner when viewing historical version with "Back to current" button
- fetchTechniqueVersion API function for single version detail
2026-03-30 03:02:31 -05:00
jlightner
324e933670
feat: Content issue reporting — submit from technique pages, manage in admin reports page
...
- ContentReport model with generic content_type/content_id (supports any entity)
- Alembic migration 003: content_reports table with status + content indexes
- POST /reports (public), GET/PATCH /admin/reports (admin triage)
- Report modal on technique pages with issue type dropdown + description
- Admin reports page with status filter, expand/collapse detail, triage actions
- All CSS uses var(--*) tokens, dark theme consistent
2026-03-30 02:53:56 -05:00
jlightner
e08e8d021f
fix: Creators page 422 — limit=200 exceeded API max of 100, also fix error display for Pydantic validation arrays
2026-03-30 02:37:37 -05:00
jlightner
ac45ce7313
chore: auto-commit after complete-milestone
...
GSD-Unit: M004
2026-03-30 07:27:40 +00:00
jlightner
8fb3f199dc
feat: Added TypeScript version types, fetchTechniqueVersions function,…
...
- "frontend/src/api/public-client.ts"
- "frontend/src/pages/TechniquePage.tsx"
GSD-Task: S04/T03
2026-03-30 07:27:40 +00:00
jlightner
44fbbf030f
test: Added version list/detail API endpoints, Pydantic schemas, versio…
...
- "backend/schemas.py"
- "backend/routers/techniques.py"
- "backend/tests/test_public_api.py"
GSD-Task: S04/T02
2026-03-30 07:27:40 +00:00
jlightner
5c3e9b83c8
feat: Added TechniquePageVersion model, Alembic migration 002, pipeline…
...
- "backend/models.py"
- "alembic/versions/002_technique_page_versions.py"
- "backend/pipeline/stages.py"
GSD-Task: S04/T01
2026-03-30 07:27:40 +00:00
jlightner
37426aae77
feat: Redesigned technique page frontend: meta stats line, video filena…
...
- "frontend/src/api/public-client.ts"
- "frontend/src/pages/TechniquePage.tsx"
- "frontend/src/App.css"
GSD-Task: S03/T02
2026-03-30 07:27:40 +00:00
jlightner
f99ac1b8b9
prompts: Rewrite all four pipeline stage prompts for quality and domain awareness
...
- Stage 2: Add domain context, granularity guidance, unstructured content handling
- Stage 3: Add extract/skip framework, summary quality standards, fewer-richer directive
- Stage 4: Add production-session classification principles, ambiguity resolution examples
- Stage 5: Add voice/tone guidance, anti-generic section names, signal chain detail, anti-filler rules
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 07:27:35 +00:00
jlightner
39006ca5b6
feat: redesign technique page - meta stats, video filenames, monospace signal chains
2026-03-30 06:54:11 +00:00
jlightner
0c4162a777
feat: Added video_filename field to KeyMomentSummary schema and populat…
...
- "backend/schemas.py"
- "backend/routers/techniques.py"
GSD-Task: S03/T01
2026-03-30 06:50:01 +00:00
jlightner
c575e76861
fix: Added overflow-x:hidden to html/body, fixed mobile overflow on mod…
...
- "frontend/src/App.css"
- "frontend/index.html"
GSD-Task: S02/T02
2026-03-30 06:40:58 +00:00
jlightner
893105abd0
feat: Replaced all 193 hex colors and 24 rgba values in App.css with 77…
...
- "frontend/src/App.css"
GSD-Task: S02/T01
2026-03-30 06:37:08 +00:00
jlightner
76138887d2
fix: Creators endpoint returns paginated response, review queue limit raised to 1000, added GET /review/moments/{id} endpoint
...
- Creators: response_model changed from list to {items, total, offset, limit} matching frontend CreatorBrowseResponse
- Review queue: limit raised from 100 to 1000
- New GET /review/moments/{moment_id} endpoint for direct moment fetch
- MomentDetail uses fetchMoment instead of fetching full queue
- Merge candidates fetch uses limit=100
2026-03-30 01:26:12 -05:00
jlightner
0b0ca598b4
feat: Log LLM response token usage (prompt/completion/total, content_len, finish_reason)
2026-03-30 06:15:24 +00:00