No description
  • Go 54.1%
  • JavaScript 15.6%
  • Nix 8.3%
  • Shell 7.3%
  • TypeScript 7%
  • Other 7.7%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
mike 69a6b453b1
All checks were successful
ci/crow/push/build Pipeline was successful
Carry mid-segment paragraph breaks from the editor to the server (#69)
Transcript administrators can start a new paragraph at a segment boundary, but not in the middle of a segment's text. #68 added paragraph breaks and stored each one on a segment, so a break mid-sentence means splitting that segment in two. The store can't split a segment yet.

This change builds everything between the click and that split, so the next change only has to teach the store to split:

- A break inside a segment's text posts to `POST /admin/transcripts/{slug}/segments/{id}/paragraph-break` with the segment's text and the break's offset. A break at either end of a segment still takes the boundary path from #68. Both Shift-click and the context menu reach the new endpoint.
- The handler parses the request and answers `501 Not Implemented` until the store can split. It retargets the response to the editor's error region, so an error never replaces the transcript. A malformed segment ID answers `400` the same way.
- An unsaved edit in another segment saves first, and the break request follows once that save returns.

Until the split lands, a break inside a segment reports "Paragraph breaks within a segment are not implemented yet." Before this change, that click did nothing at all.

Testing gap: no browser test exercises the context menu's paragraph action, here or before this change. Only Shift-click runs in a browser.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Reviewed-on: #69
2026-10-04 21:02:54 -04:00
.crow Upgrade nix to 2.35.2 in CrowCI (#18) 2026-09-10 08:36:45 -04:00
.vscode Initial commit 2026-09-07 03:24:52 +00:00
cmd/app Add basic implementation (#1) 2026-09-09 17:04:12 -04:00
dev-scripts Fail CI when flake target builds fail (#22) 2026-09-19 12:38:59 -04:00
e2e Carry mid-segment paragraph breaks from the editor to the server (#69) 2026-10-04 21:02:54 -04:00
handlers Carry mid-segment paragraph breaks from the editor to the server (#69) 2026-10-04 21:02:54 -04:00
store Store and render paragraph breaks within speaker turns (#68) 2026-09-30 21:05:33 -04:00
transcripts Store and render paragraph breaks within speaker turns (#68) 2026-09-30 21:05:33 -04:00
.air.toml Initial commit 2026-09-07 03:24:52 +00:00
.env.example Initial commit 2026-09-07 03:24:52 +00:00
.envrc Initial commit 2026-09-07 03:24:52 +00:00
.gitignore Initial commit 2026-09-07 03:24:52 +00:00
.prettierignore Initial commit 2026-09-07 03:24:52 +00:00
.prettierrc Initial commit 2026-09-07 03:24:52 +00:00
.sqlfluffignore Initial commit 2026-09-07 03:24:52 +00:00
AGENTS.md Hide transcript editor markup behind view classes (#74) 2026-09-27 11:37:49 -04:00
CLAUDE.md Initial commit 2026-09-07 03:24:52 +00:00
docker-entrypoint Initial commit 2026-09-07 03:24:52 +00:00
eslint.config.js Initial commit 2026-09-07 03:24:52 +00:00
flake.lock Remove VCS metadata from builds and about page (#5) 2026-09-07 01:48:53 -04:00
flake.nix Make transcript E2E tests independent of YouTube (#23) 2026-09-19 10:06:58 -04:00
fly.toml Initial commit 2026-09-07 03:24:52 +00:00
go.mod Initial commit 2026-09-07 03:24:52 +00:00
go.sum Initial commit 2026-09-07 03:24:52 +00:00
litestream.yml Initial commit 2026-09-07 03:24:52 +00:00
nix-ci.nix Initial commit 2026-09-07 03:24:52 +00:00
package.json Initial commit 2026-09-07 03:24:52 +00:00
playwright.config.ts Make transcript E2E tests independent of YouTube (#23) 2026-09-19 10:06:58 -04:00
pnpm-lock.yaml Initial commit 2026-09-07 03:24:52 +00:00
README.md Initial commit 2026-09-07 03:24:52 +00:00

Open Easthampton Transcripts

Open Easthampton Transcripts publishes Easthampton meeting transcripts.

Deployment

Fly.io

To deploy manually to Fly.io, replace fly.toml with your own, and provide a Fly API token:

FLY_API_TOKEN='your-api-token' nix run .#deploy-to-fly

The deploy targets the app named in fly.toml. Set FLY_APP to deploy to a differently-named app without editing fly.toml.

The image is tagged with the current commit (git rev-parse --short HEAD). Set DEPLOY_IMAGE_TAG to override it.