feat: add site2oza converter and improve ozaserve UX#1
Open
feat: add site2oza converter and improve ozaserve UX#1
Conversation
Scope CLI coverage to ./internal/... to avoid "no such tool covdata" on main packages in Go 1.25. The gh-pages branch was also created for benchmark-action storage. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add site2oza CLI tool: converts static site directories (HTML, Markdown, assets) into OZA archives; stores .md natively for on-demand rendering; generates synthesized TOC when index page has no links; extracts titles from YAML frontmatter and # headings - Add fetch-site-testdata.sh / fetch-site-benchdata.sh for React docs, Go by Example, MDN, Kubernetes, Terraform test/bench datasets - ozaserve: render text/markdown entries via goldmark with frontmatter stripping, <title> injection, padding, and MDX expression removal - ozaserve: add .html↔.md extension fallback for broken framework links - ozaserve: live autocomplete search in header bar and /search page with keyboard navigation (↓↑ Escape Enter); relax CSP to allow-scripts - ozaserve: show # bucket in A–Z header bar when numeric entries exist - Release: add site2oza to build, add Homebrew tap config, add ozacmp/ epub2oza to goreleaser, wire HOMEBREW_TAP_TOKEN - Remove stale docs/PERFORMANCE.md (resolved items archived in git history) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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.
Summary
.mdnatively; ozaserve renders on demand. Synthesizes a TOC when the index page has no links. Extracts titles from YAML frontmatter and#headings.text/markdownentries with frontmatter stripping,<title>injection from frontmatter, body padding, and MDX{expr}removal..html↔.mdextension fallback for framework-style links;#bucket shown in A–Z header bar when numeric entries exist./searchpage with keyboard navigation (↓ ↑ Escape Enter); CSP relaxed toallow-scripts allow-same-originfor fetch.HOMEBREW_TAP_TOKENwired.fetch-site-testdata.sh(React docs, Go by Example, Go docs) andfetch-site-benchdata.sh(MDN, Kubernetes, Terraform) via sparse git clone.Test plan
make test-racepasses both modulesmake lintexits 0make buildproducesbin/site2ozasite2oza ./testdata/sites/react/ react.oza && ozaserve react.oza— browse, search autocomplete, keyboard nav all work<title>matches page title.htmllinks in React content resolve via extension fallback (no 404s)#appears in header A–Z bar for archives with numeric-title entries🤖 Generated with Claude Code