Releases
v0.1.0
Compare
Sorry, something went wrong.
No results found
Changelog
Features
feat(assets): implement OverlayFS for layered asset management
feat(config): implement SiteConfig with YAML and env var support
feat(config): skip filesystem validation for Git URLs
feat(main): integrate Git provider via factory function
feat(provider): add Git URL parsing with IsGitURL helper
feat(provider): add Git-specific sentinel errors
feat(provider): add GitProvider with complete Provider implementation
feat(provider): add NewProvider factory function
feat(provider): add gitFileInfo and gitDirEntry implementations
feat(renderer): implement YAML front matter support
feat(security): add middleware to block hidden files and directories
feat(template): implement TemplateCache interface and update context
feat: add MIME type normalization utilities
feat: add ServerConfig with DirIndex support
feat: add breadcrumb navigation to markdown rendering
feat: add comprehensive config validation for port, directory, and timeouts
feat: add configurable HTTP server timeouts for security hardening
feat: add error handling foundation with sentinel errors
feat: complete handler refactor with content negotiation and rendering
feat: define core renderer interfaces
feat: define core renderer interfaces
feat: future-proof provider interface with io.Closer implementation
feat: implement HTTP Accept header negotiation
feat: implement MarkdownRenderer with context support
feat: implement PassthroughRenderer with wildcard MIME support
feat: implement directory listing generation utilities
feat: remove deprecated processor package
feat: restructure to interface-driven architecture with performance optimizations
feat: specify mime-based renderers logic
feat: support inline mermaid graph in the default theme layout
feat: update Provider interface to return MIME types and handle directories
Bug fixes
fix(build): marshal sitemap-index.xml instead of string-building (REVIEW §9.2)
fix(i18n): serve per-language content instead of 404 (REVIEW §9.1)
fix(mcp): tab-aware heading indentation check (REVIEW §9.4)
fix(metadata): deep-copy AllPages inner references (REVIEW §9.8)
fix(provider): accept any fs.FS, not just fs.StatFS (REVIEW §9.7)
fix(resolve): return defensive copy from AllMappings (REVIEW §9.8)
fix(search): truncate query on a rune boundary (REVIEW §9.4)
fix(see-also): cap related-docs list (REVIEW §9.4)
fix(see-also): resolve related-page links via contentURL (REVIEW §9.2)
fix(server): guard nil LocaleBundle in per-language loop (REVIEW §9.4)
fix(tags): normalize page tag chips like the index (REVIEW §9.4)
fix(tooling): show proper error on format error
fix: add renderer import in provider tests for MIME type registration
fix: add sentinel errors and structured error types for better error handling
fix: define constants for maximum configurable values
fix: fix configuration envvar override
fix: improve HTMLRenderer dependency injection pattern
fix: resolve race condition in TitleCase by creating new Caser per call
fix: sort OverlayFS ReadDir results for consistent output
fix: suppress false positive gosec G710 in ExtensionRedirect
fix: transform breadcrumbs from map to array
fix: update renderer to support Context cancelation
Documentation
docs: add comprehensive user guide
docs: add thread-safety documentation to DefaultRegistry and HTMLRenderer
docs: add yaml front matter metadata to all documentation files
docs: comprehensive documentation for renderer system
docs: conclude 14th review pass; sync REVIEW.md + roadmap
docs: document unbounded template cache limitations
docs: fix documentation drift (REVIEW §9.6)
docs: reconcile roadmap + record 14th review pass
docs: update configuration guide with exhaustive options
docs: update documentation with all recent changes
docs: update roadmap to reflect strategic pivot towards git-native viewer
Other
Convert NewHandler to use HandlerConfig options struct
Fix NormalizeMimeType case inconsistency between fast and slow paths
Fix byte position mismatches in search snippet Unicode handling
Separate config Validate from Normalize
Add --dir-index flag to preview subcommand for quick directory listings
Add --domain flag to serve, build, and preview commands
Add --force flag to guard build output directory
Add .worktrees/ to .gitignore
Add sequential page links from navigation tree
Add API language resolution and multi-language search dispatch
Add Atom feed generation for serve and build modes
Add BCP 47 language detection from directory names and URL paths
Add CSS value sanitization for theme variables
Add ETag/304 Not Modified HTTP caching support
Add ErrEmptyDefaultIndex sentinel to replace duplicated error string
Add ErrProviderClosed sentinel error for closed provider operations
Add HTTP Basic Auth with htpasswd file support
Add JSON-LD structured data with Schema.org markup (Phase 9b)
Add KaTeX math rendering support for inline and block math
Add MCP Streamable HTTP endpoint at /_mcp/ on serve and preview (Phase 10b)
Add MCP server for AI-native documentation access (Phase 10a)
Add Makefile install target
Add OverlayProvider for static asset fallback and consolidate packages
Add PathResolver for extensionless URL mapping
Add Prometheus metrics middleware and /metrics endpoint (WU-10)
Add RelatedDocs field to template PageContext
Add RenderTagPage and tags-list partial
Add RenderTagsIndex and tags-index partial
Add StripExtensions config field with .md default
Add StripFrontmatter tests, bringing coverage from 0% to 100%
Add TagPageHandler for /tags/{tag}
Add TagsIndexHandler for /tags/
Add Unwrap method to statusRecorder for ResponseWriter chain
Add an info subcommand
Add auto-navigation sidebar with collapsible directory tree
Add auto-port assignment with --port :auto flag
Add benchmark suite and pprof endpoint (Phase 4)
Add built-in en-US locale file with all UI strings
Add byPath index to metadata.Index for O(1) page lookup
Add client-side search UI with modal, keyboard navigation, and Ctrl+K shortcut (Phase 5)
Add comprehensive i18n guide (13-internationalization.md), document web components strategy in theming guide, add admin port and theme variables sections to configuration, expand observability with Go runtime metrics, update SEO with Atom feeds and hreflang, and add multi-language coverage across search, deployment, API reference, and markdown extensions docs. Remove outdated Kubernetes/Docker Compose examples and Grafana section from observability. Fix language default from "en" to "en-US", correct Prometheus scrape target, and update middleware chain. Remove dead ServerConfig.GitSSHKey field from architecture doc.
Add comprehensive test suite and fix path handling
Add config.NewFromDir for non-server config loading
Add configurable HTML lang attribute with per-page override
Add configurable exclude patterns for file serving
Add content enricher pipeline (Phase 6b)
Add contentURL template function for absolute content paths
Add context.Context to Provider interface methods
Add copy-to-clipboard button for code blocks
Add dark/light mode toggle button to navigation
Add debug logging for non-ErrNotExist errors in OverlayFS.ReadDir
Add dedicated admin port for metrics and pprof endpoints
Add defaultIndex validation in SiteConfig.Validate()
Add design spec: see-also section (tag components sub-spec 2 of 3)
Add design spec: tag chips, listing, and index pages
Add design spec: tag: search syntax (tag components sub-spec 3 of 3)
Add direct snippet function tests with Unicode edge cases
Add disk-based Git storage factory to prevent OOM on large repos
Add en-US locale string for see-also section heading
Add en-US locale strings for tag pages and chips
Add enrichment data to markdown passthrough renderer
Add env var support to build and preview subcommands
Add extension redirect middleware and resolver-based path resolution
Add full-text search engine with inverted index and API endpoint (Phase 5)
Add generic feature toggles system replacing one-off ColorChips and HasSearch
Add git flags to preview, build, and mcp for consistent CLI
Add gomddoc build command for static site generation
Add gomddoc init subcommand to scaffold .gomddoc/ config
Add gomddoc preview subcommand for quick local documentation preview
Add gzip response compression middleware
Add health check endpoints for liveness and readiness probes
Add i18n support to TemplateContext: T(), Lang(), Languages()
Add implementation plan for build sentinel file
Add implementation plan for path traversal fixes
Add implementation plan: see-also section
Add implementation plan: tag chips, listing, and index pages
Add inline color chip rendering for backtick-wrapped hex codes
Add integration tests and fix uncommitted changes from parallel tasks
Add integration tests for i18n: detection, routing, API, hreflang
Add locale bundle for i18n string resolution
Add metadata indexing with JSON API for tags
Add missing t.Parallel(), improve test assertions and cleanup
Add multi-language pipeline setup with per-language provider instances
Add multi-language static site build with per-language output
Add multi-stage Dockerfile and deployment documentation
Add page layout selection via frontmatter layout field
Add per-page robots meta tag with sitemap noindex exclusion
Add pre-launch SEO: canonical URLs, sitemap, robots.txt, Open Graph (Phase 9a)
Add pretty URL output and extension redirects in build mode
Add provider-agnostic asset overlay to support Git repo theme overrides
Add redirect_from frontmatter support for URL redirects
Add request ID middleware for HTTP request tracing
Add request size limits for MCP endpoint and search API
Add restricted path check to MCP summarize_page prompt
Add security headers middleware
Add see-also partial for related pages section
Add site-level partial override resolution for theme customization
Add sitemap timestamps from file modification times
Add spec for build sentinel file to prevent source tree deletion
Add spec for path traversal fixes
Add static asset serving via /_assets/ route (Phase 8e)
Add t.Parallel() systematically across test suite
Add tagURL and pageTags template helpers
Add template-rendered error pages for serve and build modes
Add tests for loadAuthStore, admin server lifecycle, and metadata.ByPath
Add theme variable CSS injection from configuration
Add theme variable key/value validation to prevent CSS injection
Add two-dimensional content negotiation (Phase 6a)
Add unit tests across 6 packages to raise coverage from 73% to 82%
Address REVIEW.md LOW perf items: cache, stream, dedup
Address all testing issues from REVIEW.md
Apply Go idioms: modern range, slices.SortFunc, time.Compare, DRY title
Build metadata index once for SEO and redirect generation
Cache immutable navigation tree and pre-compute prev/next index
Cache navigation tree to avoid FS walk per request
Cache sitemap XML on first request instead of regenerating each time
Change default language from 'en' to 'en-US' (BCP 47)
Clamp Accept header q-values to valid [0,1] range
Comprehensive documentation update
Configure github CI workflows
Consolidate NormalizeMimeType and address review findings
Consolidate project documentation: merge PLAN.md into roadmap, delete completed specs
Consolidate stripFrontmatter into shared text package
Consolidate writeJSON helpers in server package
Convert GitProvider functional options to options struct
Convert NewHTTPServer to options struct pattern
Decouple search index availability from theme feature flags
Deduplicate "Theme template not found" log to once per missing template
Deduplicate build output: README.md produces only index.html
Deduplicate sitemap generation by having ServeHTTP call GenerateSitemap
Discard oversized compression buffers instead of pooling them
Distinguish missing vs broken theme templates in fallback logic
Document URL extension stripping feature
Emit /tags/ index and per-tag pages in build mode
Enable metadata in build pipeline instead of building separately
Enhance serve startup log with clickable URL, dir, and dev mode
Escape markdown special characters in directory listing filenames
Expand internal documentation for URL extension stripping
Extract color chips into a web component
Extract serveWithETag helper to deduplicate ETag/cache pattern
Extract shared CLI pipeline setup into pipeline.go
Extract shared DeriveTitle into internal/text package
Extract shared JS assets for theme toggle, code copy, and TOC highlighting
Extract shared directory handling helper to reduce provider duplication
Extract shared setupServer() to deduplicate serve/preview setup
Extract shared theme partials and fix accessibility across themes
Feature: Add "Edit on GitHub" links (WU-13)
Feature: Add syntax highlighting for code blocks using Chroma (WU-12)
Feature: Content Table of Contents (TOC) and Modernized Markdown Rendering
Feature: GitHub-style admonitions for markdown rendering
Feature: add hover-to-reveal heading anchor links
Filter q=0 entries in Accept header parsing
Fix ETag weak comparison per RFC 9110 §8.8.3.2
Fix MCP command error handling and remove dead code
Fix MCP tools bypassing hidden path restrictions
Fix Makefile run target to use in-repo test site
Fix Prometheus metrics test race, consolidate test helpers, fix port bug
Fix Unicode escape format for supplementary plane runes
Fix Vary header handling for content negotiation and compression
Fix XSS in GenerateRedirectHTML via html/template
Fix a11y issues
Fix admonition css
Fix admonition test to match updated NewMarkdownRenderer signature
Fix bytes.TrimLeft BOM stripping to use TrimPrefix
Fix config log to show values after env var overrides
Fix correctness issues: MIME casing, ReadDir spec, theme vars, YAML marshal
Fix dummy bcrypt hash
Fix false-positive defaultIndex stripping in SEO URL normalization
Fix i18n review issues: wire language pipelines, per-lang sitemaps, cleanup
Fix i18n review issues: wire language pipelines, per-lang sitemaps, cleanup
Fix locale bundle loading from embedded assets
Fix middleware bypass on non-content routes
Fix non-asserting test and add missing t.Parallel() calls
Fix path traversal in build output and template asset loading
Fix path traversal in build output and template asset loading
Fix redirect_from double redirects and pass resolver to MCP
Fix review issues: determinism, error handling, and performance
Fix security, race conditions, and code quality issues from code review
Fix security, race conditions, and code quality issues from code review
Fix self-exclusion in findRelatedDocs across URL extension stripping
Fix small code quality issues from review
Fix static build missing navigation sidebar
Fix use-after-close risk and memory leak in gitTreeFS
Honor Accept-Encoding quality values per RFC 9110
Implement comprehensive enhanced testing suite
Improve default theme UI/UX
Include Content-Type header in 304 Not Modified responses
Include tag pages in generated sitemap
Increase cmd/ test coverage from 30% to 80%
Increase provider test coverage from 75.3% to 86.8%
Initial commit
Invert preview --no-open flag to opt-in --open
Let Start() own context-driven shutdown, remove duplicate from caller
Log only safe config fields in dev mode instead of entire struct
Mark Related pages via tags roadmap item done
Mark tag-component sub-items done; log decision
Migrate CLI to Kong subcommand architecture with serve command
Modernize code base
Move IsGitURL from provider to config to fix layering inversion
Move JSON-LD <script> wrapper from Go into template partial
Move TOC rendering from Go code to recursive template partials
Move navigation HTML rendering from Go code to template partials
Move navigation data from template layer into enricher pipeline
Parallelize static site generation with errgroup worker pool
Pre-size markdown render buffer to reduce allocations
Redirect to first nav page when directory has no index file
Reduce hot-path allocations across ETag, content negotiation, and registry
Reduce per-request allocations in feature merging and cache key
Refactor BuildIndex to parse frontmatter concurrently with errgroup
Refactor search index to use field-tagged postings
Refactor: move breadcrumb logic to template function
Refactor: replace gomarkdown with goldmark
Register tag-page routes per language
Remove --dev flag from serve command
Remove BOM handling from search tokenizer
Remove BOM stripping from extractFrontmatter
Remove browser-opening test that disrupts local runs and fails in CI
Remove duplicate pageURL template function
Remove hardcoded theme list from init command help text
Rename to for namespace consistency
Render see-also section in build mode
Render see-also section in server response
Render tag chips below H1 (default theme)
Replace --force flag with .gomddoc-build sentinel file
Replace -d flag with positional dir argument across all subcommands
Replace KaTeX onload handler with addEventListener for CSP
Replace admonition HTML-in-Go with web component
Replace breadcrumb InfoProvider interface with IsDirFunc function type
Replace filepath.Ext with path.Ext for fs.FS operations
Replace fragile timing-dependent tests with deterministic contexts
Replace hardcoded UI strings with T() calls and data attributes
Replace heading anchor HTML-in-Go with web component
Replace inlineAsset with typed inline asset functions
Replace post-validation config mutation with ServeArgs struct
Replace regex post-processors with goldmark AST extensions
Replace sync.Once with retry-capable lazy init in sitemap/feed handlers
Resolve template thundering herd with singleflight
Simplify and deduplicate test suite infrastructure
Simplify: extract header constants, share title comparator, dedup ByTag
Skip resolver for default index files in sitemap, feed, and redirects
Sort Navigation items alphabetically
Sort theme vars for deterministic CSS output and stable ETags
Split default theme into layouts and partials
Standardize sort.Slice to slices.SortFunc
Support SSH_KNOWN_HOSTS env var for custom known_hosts path
Suppress gosec G705 false positive on static asset handler
Theme: show hover items by default on touch device
Unexport TransformAdmonitions to match other post-processors
Unify TitleCase to use language.English
Update CLAUDE.md for repository split
Update dependencies
Update docs
Update docs
Update docs
Update docs
Update docs
Update docs for HTML-in-Go to web components migration
Update docs for goldmark extensions and t.Parallel() adoption
Update docs to reflect Phase 4-8 progress and current 82.5% coverage
Update docs to reflect completed Phase 5 search (engine + UI)
Update docs to reflect sentinel file replacing --force flag
Update documentation
Update documentation
Update documentation for Phase 4-7 features: disk storage, navigation, metadata, SSG
Update documentation for Phase 8 features and content negotiation roadmap
Update guides
Update tests to reflect sentinel file logic
Upgrade to Go 1.26 with modernized code and gosec security fixes
Use consistent closeErr naming in serve.go cleanup lambda
Use context.Background() in sitemap/feed sync.Once init
Use errors.Is() for go-git error comparison in GitProvider
Use go-git typed errors in classifyCloneError instead of string matching
Use negotiate.DetectMIME consistently for directory index MIME detection
Use path instead of filepath for fs.FS paths in build command
Use slices.Clone and slices.Concat instead of make+copy
Use sync.Map.Clear() in template cache
Use yaml.Marshal for config generation instead of fmt.Sprintf
Validate EditURL scheme to prevent XSS via javascript: URLs
Validate X-Request-ID header input
Validate tag charset: drop slash/empty/whitespace tags
Warn at startup when content collides with /tags routes
Wire i18n context into template rendering for serve and build
Wire see-also partial into default layout
ci(release): add GoReleaser pipeline (binaries, ghcr, homebrew, cosign)
deps: add go-git/go-git v5 for Git provider support
doc: add llm and feature documentation
doc: add roadmap.md, remove obsolete info from docs/README.md
hardening(git): fs.ValidPath guard in ReadFile/Stat (REVIEW §9.9)
hardening(inputs): cap tag route and MCP string args (REVIEW §9.9)
metadata: deduplicate tags per page
perf(nav): label leaf pages from metadata index titles (REVIEW §9.8)
perf(tags): count tags without allocating page slices (REVIEW §9.3)
perf(template): cache parsed partials for tag pages (REVIEW §9.3)
poc: content templating
refact(config): homogenize configuration structs
refactor(common): centralize URL and MIME utilities
refactor(config): simplify reflection logic
refactor(provider): inject fs.FS into FilesystemProvider for testing
refactor(provider): simplify ssh auth to only support explicit key file
refactor(server): extract lazyBytes for sitemap/feed caching (REVIEW §9.8)
refactor(sort): unify title ordering with stable path tiebreaker (REVIEW §9.4)
refactor(template): decouple breadcrumb generation from provider
refactor(template): share page/error context builders (REVIEW §9.2)
refactor: improve error handling and testability in main.go
search: add tag: filter syntax
sec: implement proper http status on error
spec: Git based provider specification
spec: site configuration feature specification
test: add comprehensive integration tests for rendering system
test: comprehensive test suite optimization and modernization
test: cover multi-language build, multi-tag search, redirects (REVIEW §9.5)
test: suppress verbose log output during tests
You can’t perform that action at this time.