Skip to content

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 16 Jun 14:46
· 195 commits to main since this release
b62ccb9

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