Conversation
Migrates session and metadata storage from JSON files to LibSQL/SQLite. Introduces a new administrative dashboard for real-time stream management, including session controls, todos, and reminders.
…ime effects Adds support for stream titles and integrates task/reminder management into the session view. Implements a polling-based effect system allowing the admin panel to trigger live visual and audio cues on the stream view.
- When session exists and ended_at is null: active: true
- When session exists and ended_at is set: active: false
- No-session case already returns { active: false }
Fixes Bug #4 from Trenton's audit.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
FIX #1 #2: remove dead startStreamBtn/endStreamBtn event listeners FIX #3 #4: remove dead projectInput/streamTitleInput references FIX #5: loadActiveSession uses GET /api/stream/status; start/stop buttons use POST /api/stream/start|stop; add input validation for Start btn FIX #6: remove renderTodos() targeting non-existent #todosList FIX #7: remove renderReminders() targeting non-existent #remindersList FIX #8: wire notes to GET/POST/DELETE /api/notes FIX #9: wire todos to GET/POST/PATCH/DELETE /api/todos FIX #10: wire reminders to GET/POST/DELETE /api/reminders FIX #11: fix todo status default 'pending' -> 'new' in index.js FIX #12: replace db.loadSessionData() (server module) with fetch('/api/session/:id') in loadDashboardStats() FIX #13: delete button present in renderSessionReminders() FIX #14: add per-note 'Show on Stream' button calling POST /api/stream/overlay FIX #15: add SSE EventSource subscription in index.html for overlay note events Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Orchestration logs for Romero, Darlene (respawn), Trenton, and Romero (lightweight). Session log documenting full workflow. Merged decisions from inbox into decisions.md. Updated agent history files with session outcomes. Key results: - 16 new REST API endpoints (stream control, notes/todos/reminders CRUD, SSE overlay) - 15 frontend bugs identified and fixed - Source of truth shifted from in-memory JSON to SQLite database - Real-time SSE overlay support added - Admin panel now fully functional Files staged: - .squad/orchestration-log/ (4 agent logs) - .squad/log/ (1 session log) - .squad/decisions.md (merged inbox decisions) - .squad/agents/*/history.md (updated with session context) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… .gitignore
- db.js: Convert all two-arg c.execute(sql, args) calls to proper
{ sql, args } object form required by @libsql/client. The two-arg
form silently drops the args parameter, causing parameterized queries
with ? placeholders to fail. This broke getSessionById, loadSessionData
(all SELECT queries), and saveSessionData (all DELETE queries).
Root cause: /loadfromfile was returning 500 due to the thrown error,
so the stream overlay never received todos data.
- .gitignore: Add *.db, *.db-shm, *.db-wal and src/io/cloudbot.db
to prevent the SQLite database file from being committed.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ories Agents (2026-03-15T14:02:44Z): - Agent-8 (Darlene): Verified stop button state already correct - Agent-9 (Romero): Fixed 10 @libsql/client parameterized query calls, restored overlay todos - Agent-10 (Darlene): Added version/build footer to admin panel sidebar Changes: - Updated Darlene history: Stop button verification, version footer - Updated Romero history: Query bug fix details, gitignore additions - Merged inbox decisions into decisions.md (3 entries) - Deleted decision inbox files Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Replace @libsql/client with @tursodatabase/database - Remove DATABASE_URL / getDbUrl() cloud fallback - Rewrite all queries to new async API (prepare/run/get/all) - All DB calls properly await the async Turso engine - Smoke tested: init, session CRUD, todos verified OK Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- GET /api/export: generate downloadable markdown of active session - /api/session & /api/stream/status: return full session object (nested notes, todos, reminders) - Fix 2 legacy @libsql/client execute() calls in index.js - Move Save/Export buttons into Stream Control card - Fix inverted Show/Hide Todo toggle (admin.html) - Add 5s auto-polling for notes/todos/reminders in admin panel - Add commands audit planning doc (.squad/planning/) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Task 1 — Fix GET /api/export:
- Fixed todo format: cancelled items now render as '~~description~~'
- Fixed reminder format: now '**name**: message' (was 'name: message (interval: Nmin)')
- Endpoint already had correct Content-Disposition/Content-Type headers
Task 2 — Fix project/title persistence:
- loadActiveSession() was reading data.sessionId/projectName/streamTitle (flat fields
that don't exist); /api/stream/status returns { session: { id, project_name, ... } }
- Fixed to read from data.session.* so currentSession.id is correctly populated
- Added PATCH /api/session/:id endpoint to update project_name/stream_title
Task 3 — Fix Save button:
- saveCurrentSession() guarded on streamSessionData which is always null
(legacyData.data no longer exists on /api/session response)
- Now guards on currentSession, reads input fields, calls PATCH /api/session/:id
- Shows showFeedback('Session saved!') on success
Task 3 — Fix Export button:
- Simplified handler to window.location.href = '/api/export'
- Browser handles Content-Disposition: attachment download natively
- Added guard: shows feedback if no active session
Task 4 — Remove legacy JSON file I/O (Phase 2):
- /savetofile: removed fs.writeFile() JSON dump; DB-only now
- /loadfromfile: removed fs.existsSync/readFileSync JSON fallback;
returns empty default structure when no active DB session
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Fix /api/export markdown (correct todo/reminder format, includes notes) - Fix field path bug: loadActiveSession() now reads session.id correctly - Add PATCH /api/session/:id for project name / stream title updates - Rewire Save button to use currentSession (was silently no-oping) - Remove JSON file I/O from /savetofile and /loadfromfile (DB-only) - Fix text contrast on todo/reminder list items in admin panel - Form fields stay populated+disabled after session start - Export button triggers blob file download (not page navigation) - Wire !start/!stop in cloudbot.js to call REST session endpoints Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
… panel - Add /api/version endpoint reading version from package.json + BUILD_DATE at startup - Add upsertUser() and getSessionUsers() to db.js - Add GET /api/users and POST /api/users/score endpoints - Include users in /api/session and /api/stream/status responses - Add persistUserScore() helper in cloudbot.js (fire-and-forget, called on land/drop) - Add dynamic version footer in admin.html (reads /api/version on load) - Add Leaderboard card in Current Session tab with 5s polling Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Admin panel immediately restores notes/todos/reminders/scores on load when an active session exists in the DB - Stream overlay calls loadSessionFromDb() immediately on DOMContentLoaded (no longer waits 5s for first poll tick) - Fix: loadSessionData() in db.js was reading Notes from stale JSON blob; now queries notes table directly - /api/stream/status, /api/session, /loadfromfile all verified to return complete session data from DB with no JSON file fallbacks - Merged .squad/decisions/inbox/ → decisions.md and deleted inbox files - Added orchestration logs: 2026-03-17T17:56:31Z-romero.md and -darlene.md - Added session log: 2026-03-17T17:56:31Z-coldboot-db-sourceoftruth.md - Updated agent histories with Decision 30 (Romero) and 31-32 (Darlene) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Replace inline project/title inputs with "Configure Session" modal
to prevent polling from resetting user input mid-typing
use API-call → immediate DB refresh pattern instead
- Export now saves show-notes-{id}.md to src/io/ AND downloads in browser
- Export includes leaderboard section, all data sourced from DB
- Cold-boot correctly sets projectName/streamTitle JS vars from API
and populates read-only display area on page load
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add project_url field to stream_sessions table (migration + all APIs) - Configure Session modal now includes optional GitHub URL input field - Export now guarantees src/io/ exists before writing (mkdirSync recursive) - Export wrapped in try/catch so failures surface in server logs - Show notes markdown includes stream title, project URL, proper checkboxes - Cold-boot reads project_url and displays as clickable link in admin panel Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- GitHub URL format is always https://github.com/FBoucher/{projectName} - StreamNoteStart() in cloudbot.js now sends projectUrl automatically - Remove GitHub URL input field from Configure Session modal - Remove sessionProjectUrl variable — URL computed inline everywhere - Start button, PATCH save, and session display all auto-derive URL - Modal now has exactly two fields: Project Name + Stream Title Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…toggle - Persist Todo and Reminder status updates to the database in real-time - Auto-generate show notes markdown file when stopping a stream session - Allow exporting historical sessions from the admin panel history table - Implement manual project banner toggle with auto-timer override - Enhance cold-boot loading to restore full session state and reminder intervals
…y; remove unused commands from index.html
…nd comment out unused drop effect
…update admin panel
…nd ensure writable directories are created correctly
…e package version to 1.7.2-beta
…reminders, and download functionality; update export API handling in cloudbot.js
…et version outputs and simplify simple-docker-image.yml by removing unnecessary steps.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request introduces several improvements across the build pipeline, containerization, and front-end functionality. Notably, it enhances Docker image tagging and workflow, adds support for server-sent events (SSE) overlays in the UI, updates dependencies, and improves documentation for container usage. It also introduces configuration for merge strategies and external MCP integration.
Build and Deployment Improvements:
.github/workflows/release-docker-image.yml,.github/workflows/simple-docker-image.yml) [1] [2]Dockerfilenow ensures required directories are created and permissions set after source copy, preventing issues with runtime file access. It also ensures all dependencies are installed and exposes the correct ports.Frontend and User Experience Enhancements:
src/public/index.html)src/public/index.html)Project Configuration and Documentation:
README.mdto clarify database initialization, and provides improved instructions for running the container with both Docker and Podman, including correct volume mounts for persistent storage..gitattributes).copilot/mcp-config.json)Dependencies and Versioning:
1.7.3-betaand adds the@tursodatabase/databasedependency, preparing for future database-related enhancements. (src/package.json) [1] [2]