Skip to content

feat(docs): implement documentation - #40

Merged
mroczect merged 49 commits into
masterfrom
docs/write-full-docs
Sep 8, 2026
Merged

mroczect merged 49 commits into
masterfrom
docs/write-full-docs

Conversation

@mroczect

@mroczect mroczect commented Sep 8, 2026

Copy link
Copy Markdown
Owner

No description provided.

* chore: update Cargo.lock for workspace split

Remove dependency entries for the old single-crate project and retain only entries for the three new workspace crates. This reflects the transition to a workspace layout.

* refactor: convert to Cargo workspace with three crates

Replace the single `librawssg` package with a workspace containing `librawssg_compiler`, `librawssg_handler`, and `librawssg_templates`. Add strict workspace-level lints for clippy and rustc. Remove all old dependencies and features.

* refactor: remove src/config/loader.rs

Delete the old YAML config loader implementation. Configuration handling will be reimplemented in the new workspace crates.

* refactor: remove src/config/mod.rs

Delete the old configuration module. Configuration functionality will be split across the new workspace crates.

* refactor: remove src/error.rs

Delete the old error type definitions. Error types will be redefined in the new workspace crates.

* refactor: remove src/frontmatter.rs

Delete the frontmatter parser. This logic will be moved to the appropriate new crate.

* refactor: remove src/fs/mod.rs

Delete the filesystem abstraction trait. Filesystem operations will be handled by the new crates.

* refactor: remove src/fs/real.rs

Delete the real filesystem implementation. It will be replaced by functionality in the new crates.

* refactor: remove src/lib.rs

Delete the old crate root. The library is now a workspace of multiple crates.

* refactor: remove src/markdown.rs

Delete the Markdown rendering trait and pulldown implementation. Markdown handling will be moved to the compiler crate.

* refactor: remove src/serve/mod.rs

Delete the development server module. Serving functionality will be reimplemented in the handler crate.

* refactor: remove src/serve/watcher.rs

Delete the file watcher module. Watch functionality will be part of the handler crate.

* refactor: remove src/site/builders/mod.rs

Delete the builders module declaration. Site building logic will be relocated.

* refactor: remove src/site/builders/site.rs

Delete the Site builder implementation. This core logic will be moved to the compiler crate.

* refactor: remove src/site/builders/site_builder.rs

Delete the SiteBuilder implementation. It will be reimplemented in the compiler crate.

* refactor: remove src/site/context.rs

Delete the context builder traits and Tera implementations. Context handling moves to the templates crate.

* refactor: remove src/site/feed.rs

Delete the RSS feed generation module. Feed generation will be part of the compiler crate.

* refactor: remove src/site/mod.rs

Delete the main site module that defined traits and handlers. These will be split across new crates.

* refactor: remove src/site/page.rs

Delete the page building logic. Page processing will be implemented in the compiler crate.

* refactor: remove src/site/sitemap.rs

Delete the sitemap generation module. This functionality moves to the compiler crate.

* refactor: remove src/types.rs

Delete the old configuration and page types. New type definitions will live in the appropriate workspace crates.

* refactor: remove src/util.rs

Delete utility functions including safe_path, slugify, and pattern matching. These will be reimplemented in the new crates.

* feat: add librawssg_compiler crate manifest

Create Cargo.toml for the new compiler crate, using workspace lints and no dependencies.

* feat: add librawssg_compiler placeholder lib

Add a placeholder library file with a simple add function and test to bootstrap the compiler crate.

* feat: add librawssg_handler crate manifest

Create Cargo.toml for the new handler crate, using workspace lints and no dependencies.

* feat: add librawssg_handler placeholder lib

Add a placeholder library file with a simple add function and test to bootstrap the handler crate.

* feat: add librawssg_templates crate manifest

Create Cargo.toml for the new templates crate, using workspace lints and no dependencies.

* feat: add librawssg_templates placeholder lib

Add a placeholder library file with a simple add function and test to bootstrap the templates crate.
* chore(lock): update lockfile for new workspace crates

Add entries for librawssg_config, librawssg_error, librawssg_fs and adjust existing crate versions to 1.0.0. Include thiserror and its transitive dependencies.

* feat(workspace): add config, error, fs crates to workspace

Expand workspace members to include librawssg_config, librawssg_error, and librawssg_fs. Keep existing members.

* chore(compiler): bump version to 1.0.0 and add metadata

Set version to 1.0.0 and add description, license, repository, readme, keywords, and categories.

* docs(compiler): add README for compiler crate

Add a short description of the build pipeline orchestration role.

* feat(config): add config crate manifest

Create Cargo.toml for librawssg_config with description, license, repository, readme, keywords, and categories. Include workspace lints.

* docs(config): add README for config crate

Describe the purpose of the config crate.

* feat(config): add placeholder library for config crate

Add a simple placeholder lib.rs with add function and test to bootstrap the crate.

* feat(error): add error crate manifest

Create Cargo.toml for librawssg_error with thiserror dependency and metadata. Use workspace lints.

* docs(error): add README for error crate

Describe the unified error type and Result alias.

* feat(error): define unified error enum and Result alias

Add a non-exhaustive Error enum with variants for common SSG failures. Export Result type using thiserror.

* test(error): add placeholder integration test file

Create empty integration_tests.rs for future tests.

* test(error): add placeholder property test file

Create empty property_tests.rs for future tests.

* test(error): add placeholder unit test file

Create empty unit_tests.rs for future tests.

* feat(fs): add fs crate manifest

Create Cargo.toml for librawssg_fs with description, license, repository, readme, keywords, and categories. Use workspace lints.

* docs(fs): add README for fs crate

Describe the filesystem abstraction layer.

* feat(fs): add placeholder library for fs crate

Add a simple placeholder lib.rs with add function and test.

* chore(handler): bump version to 1.0.0 and add metadata

Set version to 1.0.0 and add description, license, repository, readme, keywords, and categories.

* docs(handler): add README for handler crate

Describe the content processing contracts.

* chore(templates): bump version to 1.0.0 and add metadata

Set version to 1.0.0 and add description, license, repository, readme, keywords, and categories.

* docs(templates): add README for templates crate

Describe the template rendering contracts.
* ci(workflows): improve CI pipeline and add build steps

Update CI workflow with explicit job names and timeouts. Pin Rust toolchain to 1.96.0. Add build steps for debug and release, ensure formatting check runs in both jobs, and use workspace-wide clippy and test commands.

* ci(workflows): remove obsolete docs deployment workflow

Delete the GitHub Pages documentation deployment workflow. It is no longer needed since the workspace is being restructured and documentation deployment will be handled separately.

* chore(gitignore): ignore generated PR body files

Add pull_request_body.md to .gitignore to prevent temporary PR body files from being tracked accidentally.

* refactor(makefile): expand build automation with per-crate targets

Replace simple Makefile with comprehensive workspace targets. Add per-crate shortcuts, publish helpers, clippy flags variable, and improved help. This improves developer workflow across the new workspace.

* test(error): add integration tests for error propagation

Add tests verifying Io error conversion via From and Metadata error source accessibility using thiserror.

* test(error): add property tests for error messages

Add property tests ensuring Config, PathTraversal, and Render error messages preserve their input strings.

* test(error): add unit tests for error enum

Add comprehensive unit tests covering Display, source, From conversion, and Debug output for all error variants.
Change push and pull_request trigger branches from "master" to "*" so CI runs on every branch. This supports the new branching strategy and ensures early feedback for all feature and refactor branches.
* chore: update Cargo.lock for new dependencies

Add entries for chrono, serde, tempfile, tracing, walkdir and their transitive dependencies. Update thiserror and syn versions to reflect new dependency graph.

* feat(fs): add dependencies and dev-dependencies

Add tracing and walkdir as runtime dependencies. Add tempfile as a dev dependency for tests.

* feat(fs): define FileSystem trait and RealFs export

Replace placeholder with a comprehensive FileSystem trait covering file, directory, symlink, and permission operations. Provide default implementations for path safety and fallback copy methods. Export RealFs.

* feat(handler): add handler dependencies

Add librawssg_error, librawssg_fs, chrono, and serde as dependencies. Chrono is configured without default features, enabling serde support.

* feat(handler): expose Document, Metadata, and Processor

Replace placeholder with module declarations for document, metadata, and processor. Re-export the public types.

* feat(fs): implement RealFs for all FileSystem operations

Add a concrete RealFs struct implementing the FileSystem trait. Use std::fs and walkdir to handle I/O, directory traversal, symlinks, permissions, atomic writes, and more.

* test(fs): add comprehensive filesystem tests

Add a test suite covering read/write, directories, copy, rename, atomic writes, symlinks, permissions, and path safety for the RealFs implementation.

* feat(handler): define Document structure

Add Document struct with metadata, body, URL, source path, depth, content type, list flag, and optional child documents.

* feat(handler): define Metadata struct

Add Metadata struct with title, description, author, repo URL, license, date, tags, and draft flag. Derives Serialize, Deserialize, and Default.

* feat(handler): define Processor trait

Add Processor trait with can_process and process methods. The process method accepts FileSystem and paths, returning Result<Option<Document>>.
* chore(handler): update lockfile for new dependencies

Add serde_json and its transitive dependencies to Cargo.lock. This reflects the new serde_json dependency in librawssg_handler and keeps the lockfile in sync with Cargo.toml.

* feat(handler): add serde_json dependency

Add serde_json version 1.0.151 to librawssg_handler dependencies. This crate will be used for storing and manipulating extra metadata as JSON values.

* feat(handler): enhance Document with validation and taxonomies

Add `output_path`, `taxonomies`, and derive `PartialEq`. Make the struct non-exhaustive. Implement a constructor `new` with validation for URL, output_path, source_path, and depth. Add helper methods `relative_url`, `add_taxonomy`, and `depth`.

* refactor(handler): allow multiple crate versions lint

Add `#![allow(clippy::multiple_crate_versions)]` at crate root to suppress warnings about multiple versions of dependencies across the workspace. This keeps clippy output clean without affecting functionality.

* feat(handler): extend Metadata with extra fields and methods

Add `updated: Option<NaiveDate>` and `extra: HashMap<String, serde_json::Value>` fields. Make the struct non-exhaustive. Implement a constructor `new` that validates a non-empty title. Add helper methods `is_draft`, `insert_extra`, and `get_extra`.

* feat(handler): add name and priority to Processor trait

Extend the `Processor` trait with a required `name()` method and a default `priority()` method. These methods allow processors to be identified and ordered during content processing.

* test(handler): add tests for Document

Add comprehensive tests covering Document construction, validation errors, relative_url, add_taxonomy, depth, and default fields.

* test(handler): add tests for Metadata

Add tests for Metadata construction, validation, extra fields, draft flag, serialization, and deserialization from JSON.

* test(handler): add tests for Processor trait

Add tests using a mock Processor to verify name, priority, can_process, and process behavior. Includes a test for error propagation.

* test(handler): add basic reexport availability test

Add a test that ensures reexports of Metadata, Document, and Processor are available. This catches missing or broken public exports.
* chore(lock): update lockfile for config crate deps

Add entries for serde_yaml and its dependencies, plus indexmap and unsafe-libyaml. Update existing entries to reflect new dependency graph.

* feat(config): add dependencies for config crate

Add librawssg_error, serde, serde_json, serde_yaml as dependencies and tempfile as dev-dependency. This enables config parsing, serialization, and testing.

* feat(config): expose config modules and types

Replace placeholder with module declarations for build, config, content_rule, nav, and site. Re-export public types and add crate-level lint allowance.

* chore(handler): specify version for path dependencies

Add version = "1.0.0" to librawssg_error and librawssg_fs path dependencies. This clarifies compatibility requirements and aligns with workspace versioning.

* feat(config): define BuildConfig struct

Add BuildConfig with content_dir, output_dir, templates_dir, static_dir and serde defaults. Implement Default, new, and derive traits for serialization.

* feat(config): implement Config with validation and parsing

Add Config struct with site, build, content_rules, extra. Provide methods for rule management, validation, YAML/JSON conversion. Validation checks site name, rules, patterns, and base_url.

* feat(config): define ContentRule struct

Add ContentRule with name, pattern, template, optional list fields, extra. Derive serde traits and provide a constructor.

* feat(config): define NavItem struct

Add NavItem with label, url, children and serde support. Provide a constructor and Default.

* feat(config): define SiteConfig struct

Add SiteConfig with nav, sidebar, site_name, description, language, base_url, author, repo_url, license, extra. Implement Default and a constructor.

* test(config): add BuildConfig tests

Add tests for default values, new equality, YAML roundtrip, and deserialization with defaults.

* test(config): add Config tests

Add comprehensive tests for Config construction, rule management, validation, YAML/JSON roundtrip, and error cases.

* test(config): add ContentRule tests

Add tests for constructor, default, and serialization roundtrip.

* test(config): add NavItem tests

Add tests for constructor, default, child addition, and serialization roundtrip.

* test(config): add SiteConfig tests

Add tests for constructor, default values, and serialization roundtrip.
* chore(lock): update lockfile for templates crate dependencies

Add dependencies for tera and its transitive crates (chrono-tz, globwalk, pest, slug, etc.) to Cargo.lock. This reflects the new optional tera feature in librawssg_templates and keeps the lockfile in sync with Cargo.toml changes.

* feat(templates): add tera feature and dependencies

Add optional tera feature with default enabled. Add librawssg_error, walkdir, and tera dependencies. Add tempfile as dev-dependency. Update keywords to include tera.

* feat(templates): expose renderer and tera modules

Replace placeholder with module declarations for renderer and optional tera_renderer. Re-export public types and add crate-level lint allowance for multiple crate versions.

* feat(templates): define RenderContext and Renderer traits

Add RenderContext trait with as_any and as_mut_any methods. Add Renderer trait with render method returning Result<String>.

* feat(templates): implement TeraRenderer

Add TeraRenderer struct with methods for adding raw templates, loading from files/directories, enabling autoescape, and rendering. Implement Renderer and RenderContext for tera::Context.

* test(templates): add TeraRenderer integration tests

Add comprehensive tests for TeraRenderer including raw templates, loops, filters, conditions, file loading, recursion, autoescape, inheritance, macros, includes, and mutable access.

* test(templates): add basic trait and reexport tests

Add unit tests verifying Renderer and RenderContext traits can be mocked and reexports are available.
Add librawssg_config, librawssg_handler, librawssg_templates, and tempfile dependencies to compiler crate entry. This reflects new compiler Cargo.toml dependencies and keeps the lockfile synchronized.
Add librawssg_error, librawssg_fs, librawssg_config, librawssg_handler, and librawssg_templates as runtime dependencies. Add tempfile as dev-dependency. This prepares the compiler crate for building the pipeline.
Replace placeholder with module declarations for builder, context, generator, pattern, and pipeline. Re-export PipelineBuilder, ContextBuilder, Generator, Pipeline, and TeraContextBuilder under tera feature.
Add PipelineBuilder struct with config, content/output directories, filesystem, renderer, processors, context builder, and generators. Implement builder methods and `build` method that validates config and constructs a Pipeline.
Add ContextBuilder trait that builds a RenderContext from Config and Document. Implement TeraContextBuilder under the `tera` feature, populating a tera::Context with site and page fields.
Add Generator trait with a generate method that receives a Pipeline reference and returns Result. This allows post-processing generators to be plugged into the pipeline.
Implement match_pattern function and helper functions for matching path segments against glob patterns, including `**` and `*` wildcards. This is used for content type detection.
Add Pipeline struct with config, fs, renderer, processors, context builder, generators, content/output directories. Implement run method that generates to a temporary directory and atomically renames. Implement document processing, rendering, output writing, and static asset copying.
* chore(lock): update lockfile for compiler tera dependency

Add tera to librawssg_compiler dependencies in Cargo.lock. This reflects the new direct dependency and keeps the lockfile consistent with Cargo.toml.

* feat(compiler): add tera dependency

Add tera version 1.20.0 as a direct dependency to librawssg_compiler. This enables TeraContextBuilder without relying on optional feature and simplifies imports.

* refactor(builder): fix path comparisons and imports

Use `as_path() == Path::new("content")` instead of comparing PathBuf directly. Import `librawssg_handler::Processor` and add missing_debug_implementations attribute to PipelineBuilder. Improve code clarity and avoid type mismatches.

* refactor(context): remove feature gate from TeraContextBuilder

Derive Debug, Default, Clone, Copy for TeraContextBuilder and remove cfg(feature = "tera") attributes. Tera is now a required dependency, so the feature gate is no longer necessary.

* feat(compiler): update Generator trait signature

Add `output_base: &Path` parameter to `generate` method. This allows generators to write directly to the output directory during pipeline execution.

* refactor(compiler): remove feature gate and add test import

Remove `#[cfg(feature = "tera")]` from TeraContextBuilder re-export. Add `#[cfg(test)] use tempfile as _;` to suppress unused import warning in test builds.

* refactor(pattern): rewrite glob matching with safer indexing

Replace recursive slice indexing with match on pattern and segment options. Avoid potential panics by using get() and first(). Improve readability and maintainability of the pattern matching logic.

* refactor(pipeline): simplify list doc creation and static copy

Use Document::new and with_list_items to construct list documents instead of manual struct instantiation. Replace repeated path comparisons with let-else block for static directory copying. Add missing_debug_implementations attribute to Pipeline. Reverse content rule iteration to give later rules priority.

* feat(handler): add Serialize derive and with_list_items method

Derive Serialize for Document to support serialization in templates. Add a `with_list_items` builder method to set the list_items field fluently. This improves API ergonomics and enables future serialization.

* test(compiler): add comprehensive full compiler integration tests

Add full_compiler_test.rs covering pipeline generation of single pages, content type rules, list pages, static asset copying, generators, atomic replacement, empty content dir, skipped files, and error cases for missing renderer/context builder/invalid config. Uses MockRenderer and RawHtmlProcessor to test end-to-end behavior.
* chore: update .gitignore for demo output

Add an additional `/dist` entry to ignore the generated demo site output. This prevents accidental commits of build artifacts.

* chore: update lockfile for librawssg and demo crates

Add entries for the new `librawssg` and `librawssg_demo` crates and their workspace dependencies. This keeps the lockfile synchronized with Cargo.toml.

* feat(workspace): add librawssg and librawssg_demo to members

Include the new `librawssg` placeholder crate and the `librawssg_demo` application in the workspace member list. This enables building and testing them alongside existing crates.

* feat(librawssg): add placeholder crate manifest

Create Cargo.toml for the top-level `librawssg` crate. This crate currently serves as a placeholder for future public API re-exports or convenience features.

* feat(librawssg): add placeholder library

Add a minimal lib.rs with a simple `add` function and a test. This bootstraps the top-level crate and allows workspace compilation.

* feat(demo): add demo crate manifest

Create Cargo.toml for `librawssg_demo` application. Declare dependencies on all librawssg workspace crates and set metadata.

* feat(demo): add about page raw content

Add a simple HTML about page that demonstrates how raw content files are processed by the demo pipeline. The content is static and will be rendered into a full page.

* feat(demo): add index page raw content

Add a welcome page with sample HTML. This file is processed by RawFileProcessor and demonstrates generation from a `.raw` source file.

* feat(demo): add demo application entry point

Implement main.rs with a custom RawFileProcessor and pipeline setup. Load Tera templates, configure content rules, and run the pipeline to generate a static site from `src/content`.

* feat(demo): add static stylesheet

Add a basic CSS file that styles the demo site. It is copied verbatim to the output directory by the pipeline's static asset handling.

* feat(demo): add base Tera template

Add a base HTML template that uses Tera placeholders for page title and content. It demonstrates how the compiler populates context values during rendering.
* chore(lock): update Cargo.lock for librawssg facade crate

Update librawssg entry to version 1.0.0 and add dependencies on all workspace crates: compiler, config, error, fs, handler, templates. This reflects the new facade crate's Cargo.toml changes.

* feat(librawssg): turn crate into facade with dependencies

Bump version to 1.0.0 and add path dependencies to all internal workspace crates. Add package metadata including description, license, repository, readme, keywords, and categories. This enables the crate to re-export the entire library.

* feat(librawssg): re-export all workspace crates and types

Replace placeholder `add` function with module re-exports for config, fs, handler, templates, compiler, and error. Re-export common types like Config, Document, PipelineBuilder, TeraRenderer, and Error. Add `#![allow(clippy::multiple_crate_versions)]` to suppress workspace lint warnings.

* docs(librawssg): add README for facade crate

Add a short README describing the facade crate and listing the re-exported building blocks. This improves crate documentation and discoverability.
- Add root README.md with project overview, features, and usage examples
- Create detailed API documentation for each workspace crate:
  - librawssg (facade)
  - librawssg_config
  - librawssg_fs
  - librawssg_handler
  - librawssg_templates
  - librawssg_compiler
  - librawssg_error
  - librawssg_demo
- Include examples, validation rules, and testing details
Add placeholder file for base CSS rules. This file will contain foundational styles shared across the documentation site.
Add placeholder file for content-specific CSS rules. This file will style the main article and text content.
Add placeholder file for footer styling. This file will contain styles for the page footer.
Add placeholder file for layout rules. This file will define the overall page structure and grid.
Add placeholder file for navbar styles. This file will style the top navigation bar.
Add placeholder file for CSS reset rules. This file will normalize browser default styles.
Add placeholder file for responsive design rules. This file will contain media queries and adaptive styles.
Add placeholder file for sidebar styles. This file will style the documentation sidebar.
Add placeholder file for typography rules. This file will define font sizes, line heights, and text styling.
Add placeholder file for CSS custom properties. This file will hold design tokens such as colors and spacing.
Add main stylesheet placeholder that will import all CSS partials. This file will serve as the entry point for styles.
Add placeholder JavaScript entry point. This file will initialize UI components and load modules.
Add placeholder JavaScript module for navbar interactivity. This file will handle mobile menu toggling and active states.
Add placeholder JavaScript module for sidebar behavior. This file will manage collapsible sections and highlight current page.
Add the base HTML template that includes head, navbar, sidebar, content, footer, and scripts partials. This template structures the overall layout of documentation pages.
Add macros for rendering navigation items recursively and generating breadcrumbs. These macros are reused across templates to reduce duplication.
Add footer partial that displays the current year, site name, and license. It uses the now() function for dynamic year and default filter for license.
Add head partial that defines the HTML document head, including meta tags, title, description, and stylesheet inclusion.
Add navbar partial with brand, toggle button for mobile, and navigation links rendered via the nav macro.
Add scripts partial that includes the main JavaScript module file.
Add sidebar partial with a heading and navigation links rendered via the nav macro. This provides the documentation sidebar.
Add stylesheets partial that links the main CSS file.
* feat(docs): add base styles for documentation

Add body, link, strong, hr, table, and button styling. Use CSS variables for colors and transitions. This establishes the foundational look for the documentation site.

* feat(docs): add content and breadcrumb styles

Add styles for markdown body, tables, images, and breadcrumb navigation. This improves readability and layout of article content.

* feat(docs): add footer styles

Add footer background, text color, link styling, and inner layout. The footer appears at the bottom with flexible alignment.

* feat(docs): add layout styles

Add wrapper, container, content, row, and col classes for page structure. Defines max widths and spacing for the main layout.

* feat(docs): add navbar styles

Add sticky navbar with brand, nav links, toggle button, and theme toggle. Styles include hover states and responsive visibility.

* feat(docs): add CSS reset rules

Add modern CSS reset covering box-sizing, margins, typography, forms, and hidden elements. This normalizes browser defaults across the documentation site.

* feat(docs): add responsive styles

Add media queries for mobile navigation and sidebar. Adjust layout to stack vertically and hide/show sidebar with transitions.

* feat(docs): add sidebar styles

Add sidebar width, sticky positioning, and link styling. Include active state, nested list indentation, and close button for mobile.

* feat(docs): add typography styles

Add heading, paragraph, blockquote, code, and preformatted text styles. Define font sizes, weights, and colors for content readability.

* feat(docs): add CSS variables

Define light and dark theme color tokens, fonts, and layout dimensions. Variables are used throughout the documentation styles.

* feat(docs): add main stylesheet imports

Add style.css that imports all CSS partials in the correct order. This is the entry point for documentation styles.

* feat(docs): add main JavaScript entry point

Add main.js that imports and initializes navbar and sidebar modules on DOMContentLoaded.

* feat(docs): add navbar JavaScript module

Add navbar module to toggle mobile menu and manage theme switching with localStorage and prefers-color-scheme.

* feat(docs): add sidebar JavaScript module

Add sidebar module to highlight active link, expand parent lists, and handle open/close behavior for mobile.
* chore(docs): update lockfile for docs crate

Add docs crate entry with dependency on librawssg. Keeps lockfile synchronized with workspace changes.

* feat(workspace): add docs to workspace members

Include the docs application in the workspace member list to enable building and testing documentation generation.

* feat(docs): add librawssg dependency

Add path dependency to librawssg in docs Cargo.toml to use the facade crate for documentation generation.

* feat(docs): update API index links to subdirectory

Change link paths to include `/api/` prefix so they point to the correct generated files under the API section.

* feat(docs): implement documentation site generator

Replace placeholder main with a complete generator using librawssg pipeline. Define RawFileProcessor, configure site navigation/sidebar, load templates, and run pipeline to produce documentation output.

* style(docs): refine base CSS styles

Adjust font size, add focus styles, transitions, and consolidate element styling for better consistency.

* style(docs): update content and breadcrumb styles

Tweak table, image, breadcrumb styles, and typography for improved readability and visual polish.

* style(docs): restyle footer

Change footer background to match page background, add border, adjust padding and typography.

* style(docs): simplify layout styles

Remove unused row/col classes, adjust content padding, and add file header comment.

* style(docs): enhance navbar styling

Add focus states, improve brand and nav link styles, hamburger animation, and theme toggle transitions.

* style(docs): improve responsive behavior

Adjust mobile sidebar width and shadow, nav link flex direction, and content padding for small screens.

* style(docs): refine sidebar styles

Restructure sidebar header, improve link hover/active states, add overlay styles, and close button polish.

* style(docs): update typography styles

Adjust heading margins, code and blockquote styling, and font sizes for better hierarchy.

* style(docs): expand theme variables

Add more color tokens, radius, shadows, overlay, and adjust dark theme values for consistency.

* feat(docs): improve navbar theme and toggle handling

Add function to manage highlight.js theme stylesheets, handle aria-expanded, and initialize theme from localStorage or system preference.

* feat(docs): enhance sidebar behavior

Set aria-expanded on toggle, close sidebar on resize to desktop, and simplify event listener registration.

* feat(docs): update base template

Import macros, add wrapper div, render breadcrumb if present, and use markdown-body class for content.

* style(docs): add newline at end of macros file

Ensure file ends with newline to match formatting conventions.

* feat(docs): use static year in footer

Replace dynamic now() with hardcoded 2026 to avoid dependency on date function.

* feat(docs): add theme initialization script in head

Insert inline script to set data-theme before CSS loads to prevent flash of incorrect theme.

* feat(docs): add theme toggle and aria-expanded

Add theme toggle button with icon and initial aria-expanded=false on navbar toggle button.

* feat(docs): add highlight.js script and initialization

Load highlight.js from CDN and call highlightAll on DOMContentLoaded before main.js module.

* feat(docs): add sidebar close button and overlay

Add header with close button and overlay div for mobile sidebar behavior.

* feat(docs): add highlight.js theme stylesheets

Include light and dark highlight.js themes, with dark theme disabled by default for dynamic switching.

* chore(docs): add .gitignore for dist

Ignore the generated dist directory in docs to prevent build artifacts from being tracked.
@mroczect
mroczect merged commit a6155fe into master Sep 8, 2026
0 of 2 checks passed
@mroczect
mroczect deleted the docs/write-full-docs branch September 8, 2026 18:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant