Add basic implementation #1

Merged
mike merged 52 commits from v1 into master 2026-09-09 17:04:13 -04:00
Owner
No description provided.
Replace the custom transcript design system with self-hosted Bootstrap 5.3.8 components and Font Awesome 6.2.0 solid icons. The application stylesheet now contains only segment anchor highlighting and HTMX request-indicator behavior, reducing it from 661 lines to 16.

Use HTMX to update and reset individual transcript segment cards without reloading the editor or interrupting the embedded meeting video. Keep native POST/redirect behavior as a no-JavaScript fallback, return focused fragment responses for HTMX requests, and retarget validation failures into the affected card without bespoke application JavaScript.

Remove the incomplete segment-hiding workflow from the domain, memory store, handlers, templates, tests, README, and v1 plan. Also remove unused end timestamps, numeric ID accessors, speaker-ID presentation coupling, duplicate view structures, the undefined About route requirement, and unused frontend assets.

Serve the restored nested static assets through the existing cache and ETag handler. Expand route and browser coverage for asset delivery, inline validation, save, reset, and desktop/mobile behavior.

Validation: dev-scripts/build-all-flake-targets
Bring back the reusable SQLite, Litestream, build metadata, frontend asset, About page, and development tooling removed during the v1 rewrite. Keep the visit counter handlers, schema, storage, and tests deleted.

Restore the corresponding Nix checks and dependencies so the retained scaffolding remains buildable before persistent transcript storage lands.
Extend the in-memory meeting transcript with three consecutive Jonathan Schmidt segments followed by a Chief Alexander response. Update fixed fixture counts in handler and end-to-end tests.
Populate public safety transcript fixture
All checks were successful
ci/crow/pr/build Pipeline was successful
03260e1f64
Replace the placeholder segments with the first three and a half minutes
of the August 11 Public Safety Committee source transcript, retaining
its source timing precision and speaker attribution.

Validation: dev-scripts/build-all-flake-targets
Add all spoken segments that begin within the meeting's first ten minutes, including Jonathan Schmidt and Nathan Markee as speakers. Update transcript test expectations for the expanded fixture.
Use about page for Fly health checks
All checks were successful
ci/crow/pr/build Pipeline was successful
b7b3087a4c
Remove the dedicated /healthz route and restore the deployment health target and shutdown timeout from master.

Validation: dev-scripts/build-all-flake-targets
Accept the existing -db argument so the preserved deployment entrypoint can
start the application before SQLite storage is integrated.

Validation: dev-scripts/build-all-flake-targets
Route every request through an explicit no-op authentication middleware so future authentication can attach request state without changing the router boundary. Run HTTPS redirects before generating a page CSP nonce so redirect responses do not carry unnecessary CSP state.
Remove VCS metadata from builds and the about page, following the upstream change.
Remove unused CSP nonce generation
All checks were successful
ci/crow/pr/build Pipeline was successful
b8a6bde1d3
The merged about page no longer consumes CSP nonces, so remove the dead nonce context plumbing and keep the existing self-only script and style policy.
Group dynamic routes by middleware policy and place every admin route behind a dedicated authentication requirement boundary. The requirement remains a no-op until authentication checks are implemented.
Send transcript segment edits through htmx PATCH requests and return updated
fragments for all mutation responses. Remove native form submission and redirect
fallbacks while retaining POST for the reset action.
Restore CSP nonce generation
All checks were successful
ci/crow/pr/build Pipeline was successful
c69c2c0554
Generate a cryptographically secure nonce for each CSP-protected request, include it in the script and style policies, and retain it in request context for future inline content.
Retain reusable static and SQLite utilities
All checks were successful
ci/crow/pr/build Pipeline was successful
e3312eef28
Restore the public static-file handler API and the shared SQLite timestamp formatter while v1 continues to use in-memory transcript storage.
Use static asset router in tests
Some checks failed
ci/crow/pr/build Pipeline was canceled
3fa62a4be7
Test missing static assets
All checks were successful
ci/crow/pr/build Pipeline was successful
c6388af141
Merge branch 'static-cache-test-v1' into v1
All checks were successful
ci/crow/pr/build Pipeline was successful
2c484e3da7
Keep the existing SQLite and Litestream lifecycle active while transcript
handlers use the in-memory store. Restore the Nix configuration removed from
the branch to minimize unrelated deployment changes, and isolate static range
handling in its own test.
Keep the master branch's collapsible mobile navigation and add the Admin Dashboard link. Update the administrator flow to open the navigation menu when it is collapsed.

Validation: dev-scripts/build-all-flake-targets
Restore the master branch's desktop-only end-to-end configuration and remove mobile-specific navigation steps from the administrator flow.

Validation: dev-scripts/build-all-flake-targets
Cover slug, title, and speaker-name constructors, using Alice McDemo as the speaker fixture.

Validation: dev-scripts/build-all-flake-targets
work in progress
All checks were successful
ci/crow/pr/build Pipeline was successful
9b4762a8eb
Remove redundant admin no-store headers
All checks were successful
ci/crow/pr/build Pipeline was successful
3abfabbc24
Admin handlers did not establish cacheable responses: the GET responses provide
no validators or freshness lifetime, while PATCH and POST responses are not
normally reused by browsers without an explicit cache directive. The headers
therefore did not provide a current functional guarantee and duplicated the
same policy in every handler.

Remove Cache-Control: no-store from the two admin pages and the two HTMX
mutation handlers. Keep static-asset cache handling unchanged, including the
explicit production and development policies. Remove the fragment-response
test assertion that required the deleted header.

Validation: dev-scripts/build-all-flake-targets
work in progress
All checks were successful
ci/crow/pr/build Pipeline was successful
c0ca904ca8
Harden transcript editor delivery
Some checks failed
ci/crow/pr/build Pipeline was canceled
f7d3bcead2
Require browsers to revalidate unversioned static assets so updated HTMX
behavior is available immediately after deployment, while retaining ETag-based
304 responses. Prevent other sites from framing dynamic pages.

Strengthen correction tests to verify speaker reassignment and reset behavior.
Remove unused VCS-stamping flake infrastructure and its transitive lock inputs.

Validation: dev-scripts/build-all-flake-targets
Merge origin/master into v1
All checks were successful
ci/crow/pr/build Pipeline was successful
66a5a9eb91
Delete useless header
All checks were successful
ci/crow/pr/build Pipeline was successful
4949576a16
Merge branch 'master' into v1
All checks were successful
ci/crow/pr/build Pipeline was successful
a72bfef951
# Conflicts:
#	handlers/build_mode_prod.go
#	handlers/routes.go
#	handlers/static_test.go
Simplify CSP directive declarations
All checks were successful
ci/crow/pr/build Pipeline was successful
a767d4833a
Add admin dashboard heading
All checks were successful
ci/crow/pr/build Pipeline was successful
22d333ae0e
Restore the visible page heading required by the administrator transcript workflow.
Merge branch 'master' of ssh://code.openeasthampton.com/oe/transcripts into v1
All checks were successful
ci/crow/pr/build Pipeline was successful
a92816249d
Update the navbar label and end-to-end locators from "Admin Dashboard" to "Admin".
NewSegmentID and NewSpeakerID now accept and validate raw string input, so HTTP handlers no longer parse user-supplied IDs separately.
Fix copy
All checks were successful
ci/crow/pr/build Pipeline was successful
9704b38999
Delete low-value tests
All checks were successful
ci/crow/pr/build Pipeline was successful
9663c59aee
Add validated YouTube video IDs
All checks were successful
ci/crow/pr/build Pipeline was successful
650a0c618c
Represent YouTube video IDs as an immutable domain value that accepts only the 11-character URL-safe Base64 schema. This prevents invalid IDs from entering transcript data.

Validation: go test ./...
mike scheduled this pull request to auto merge when all checks succeed 2026-09-09 17:01:06 -04:00
mike merged commit 07201527dd into master 2026-09-09 17:04:13 -04:00
mike deleted branch v1 2026-09-09 17:04:13 -04:00
mike referenced this pull request from a commit 2026-09-09 17:04:14 -04:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
oe/transcripts!1
No description provided.