Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
624555e
docs: design for binary document live-reload (auto-update)
exilis Jun 26, 2026
1359814
docs: implementation plan for binary document live-reload
exilis Jun 26, 2026
07926df
feat(binreload): scroll-ratio helpers + debounce constant
exilis Jun 26, 2026
af8761e
feat(binreload): change-routing decision
exilis Jun 26, 2026
9a94309
feat(binreload): per-path debounce scheduler
exilis Jun 26, 2026
bc5cb4f
feat(binreload): seq-guarded refresh with off-screen swap and PPTX in…
exilis Jun 26, 2026
8f341e3
refactor(binreload): structural never-reject at scheduler + drop dead…
exilis Jun 26, 2026
77e4a50
feat(app): auto-update binary previews via binreload refresher
exilis Jun 26, 2026
9ab5513
fix(binreload): remove off-screen container on abort paths; consume r…
exilis Jun 26, 2026
fe0cae3
build: embed web/binreload.js in the binary
exilis Jun 26, 2026
885e985
fix(watcher): emit change events for binary documents, not just markdown
exilis Jun 26, 2026
50e1de5
docs: announce binary live-reload; correct backend assumption; cross-…
exilis Jun 26, 2026
4e8eb09
docs(binreload): drop stale task refs; note defensive PPTX clear
exilis Jun 26, 2026
67cab3f
feat(binreload): show missing-file state when an open binary doc is d…
exilis Jun 26, 2026
196d097
docs: note binary deletion shows missing-file state
exilis Jun 26, 2026
cb56983
feat(app): show missing-file state when an open document is deleted o…
exilis Jun 26, 2026
b7d0e69
refactor(app): drop unused dirOf import
exilis Jun 26, 2026
ffaa322
test(e2e): Playwright browser tests for binary live-reload; wire into CI
exilis Jun 26, 2026
1e7e359
test(e2e): harden server startup against port races; review nits
exilis Jun 26, 2026
ea04a29
docs: changelog for E2E tests and delete-state fix
exilis Jun 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,3 +38,26 @@ jobs:
node-version: '22'
- run: npm install
- run: npm test

e2e:
name: E2E (Playwright)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-go@v6
with:
go-version: '1.23'
cache: true
- uses: actions/setup-node@v6
with:
node-version: '22'
- run: npm install
# Install only the Chromium browser plus its OS dependencies.
- run: npx playwright install --with-deps chromium
- run: npm run e2e
- uses: actions/upload-artifact@v4
if: failure()
with:
name: playwright-report
path: playwright-report/
retention-days: 7
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,12 @@
/node_modules/
/package-lock.json

# Playwright E2E artifacts (dev-only; never committed)
/test-results/
/playwright-report/
/blob-report/
/.last-run.json

# Editor / OS
.DS_Store

Expand Down
21 changes: 21 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,27 @@ All notable changes to reefdoc are documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.10.0] - 2026-06-26

### Added
- Binary document previews (PDF, DOCX, XLSX, PPTX) now **auto-update** when the
file changes on disk, matching markdown live-reload. The active preview
re-renders automatically; background tabs are flagged and re-render when you
switch to them. PDF/DOCX/XLSX render off-screen and swap in (no flicker, and a
half-written file leaves the previous preview intact); PPTX re-renders in
place. Scroll position is best-effort preserved across a refresh.
- End-to-end browser tests (Playwright) covering the live-reload pipeline:
active-tab auto-update, the background "updated" marker, and the
deleted-file state. Run with `npm run e2e`.

### Fixed
- The file watcher now emits change events for binary document formats, not
just markdown, so binary previews actually receive live updates.
- Deleting an open document on disk now shows the "this file no longer exists"
state in its tab, instead of leaving a stale preview. This previously did not
happen for any file type (deletion emits only a directory-tree event); the
open tab is now re-checked when its directory listing changes.

## [0.9.0] - 2026-06-25

### Added
Expand Down
7 changes: 5 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,8 @@ go build -o reefdoc . && ./reefdoc ./docs
- Preview PDF, DOCX, XLSX, and PPTX files in the browser (rendered client-side)
- Auto table of contents from document headings
- Dark / light theme (mermaid follows the theme)
- Live reload: edit a file in any editor and the open tab updates
- Live reload: edit a file in any editor and the open tab updates — including
PDF, DOCX, XLSX, and PPTX previews
- Hyperlinks between documents — markdown links and Allium `use` paths open in a new tab

## Status
Expand All @@ -52,7 +53,9 @@ plus a vanilla-JS frontend (tree, tabs, markdown/mermaid/highlighting, TOC,
themes, live reload). See [`docs/specs`](docs/specs) for the design and
[`docs/plans`](docs/plans) for the implementation plan.

Run the tests with `go test ./...` and `npm test`.
Run the tests with `go test ./...` and `npm test`. End-to-end browser tests
(Playwright) live in `web/e2e/`; run them with `npm run e2e` (first time:
`npx playwright install chromium`).

## Architecture

Expand Down
Loading