• v0.0.3 eabc6b0930

    ric released this 2025-11-29 00:14:38 +00:00 | 47 commits to main since this release

    Release v0.0.3 - Custom Domain Support

    This release adds full custom domain support with a scalable, registration-based approach.

    Key Features

    Custom Domain Support

    • Users can specify custom domains in .pages file
    • Registration-based activation (visit pages URL to activate)
    • Automatic SSL certificate provisioning via Traefik
    • Cache-only lookups for infinite scalability

    Performance

    • Infinite scalability: Performance independent of user/repository count
    • Fast all requests: <5ms response time with cache-only lookups
    • Efficient caching: Only active custom domains consume cache space

    Configuration

    • enableCustomDomains (bool, default: true) - Enable/disable custom domains
    • customDomainCacheTTL (int, default: 600) - Cache TTL in seconds

    How Custom Domains Work

    1. Add custom_domain: www.example.com to repository's .pages file
    2. Visit https://username.pages.domain.com/repository to activate
    3. Configure DNS (A or CNAME record) pointing to Traefik server
    4. Access site at https://www.example.com

    What's Changed

    Added

    • registerCustomDomain method for automatic domain registration
    • resolveCustomDomain method with cache-only lookup
    • parseCustomDomainPath method for custom domain URL parsing
    • Comprehensive test suite in custom_domain_test.go
    • CUSTOM_DOMAINS.md technical documentation
    • Configuration options: enableCustomDomains, customDomainCacheTTL

    Changed

    • ServeHTTP automatically registers custom domains when serving pages
    • Custom domains require activation via pages URL visit
    • Enhanced Traefik router examples with priority-based routing

    Improved

    • Test coverage: 78.2% (up from 74.9%)
    • Simplified architecture: Registration-based approach
    • Better UX: Clear activation steps and helpful error messages

    Installation

    experimental:
      plugins:
        pages-server:
          moduleName: code.squarecows.com/SquareCows/pages-server
          version: v0.0.3
    

    Documentation

    Full Changelog: https://code.squarecows.com/SquareCows/pages-server/compare/v0.0.2...v0.0.3

    Downloads
  • v0.0.2 fbf9d7a6cb

    ric released this 2025-11-27 22:57:48 +00:00 | 48 commits to main since this release

    Version 0.0.2 Release

    This release adds GPLv3 licensing and simplifies the plugin architecture by removing external dependencies and letting Traefik handle what it does best.

    🎉 Added

    • GPLv3 License with full compliance
      • Complete GPLv3 license text in LICENSE file
      • License headers on all Go source files
      • License headers on YAML configuration files
      • Copyright (C) 2025 SquareCows

    🗑️ Removed

    • Cloudflare DNS management - Users now manually configure DNS with any DNS provider

      • Removed cloudflareAPIKey and cloudflareZoneID configuration
      • Removed cloudflare_dns.go and cloudflare_dns_test.go
      • More flexible: works with any DNS provider (Cloudflare, Route53, etc.)
    • Let's Encrypt certificate management - Traefik handles all SSL certificates

      • Removed letsEncryptEndpoint and letsEncryptEmail configuration
      • Removed cert_manager.go and cert_manager_test.go
      • Clearer separation: plugin serves files, Traefik manages SSL

    🔧 Changed

    • Simplified configuration - Only 2 required parameters:
      • pagesDomain - Base domain for pages
      • forgejoHost - Forgejo instance URL
    • Updated module path from github.com/SquareCows/pages-server to code.squarecows.com/SquareCows/pages-server
    • Custom domains require manual DNS A/CNAME record creation

    📈 Improved

    • Test coverage increased from 56.3% to 74.9%
    • Reduced codebase by 741 lines
    • Clearer architecture - plugin focuses on serving static files
    • More flexible DNS - works with any DNS provider

    📚 Documentation

    All documentation updated to reflect new architecture and DNS approach.

    Downloads