Changelog

0.9.108

2026-02-12

  • Fix dark mode contrast for alerts, badges, and admin pages
  • Persist data protection keys in E2E/testing environments when possible, falling back to ephemeral keys only if the keys directory is not writable

0.9.107

2026-02-11

  • Fix reverse proxy forwarded headers not being applied when Caddy runs on a Docker bridge network
  • Fix security stamp validation being completely bypassed during cookie authentication
  • Reduce security stamp revalidation frequency to 24 hours to prevent unnecessary sign-outs
  • Set data protection key lifetime to 180 days for more predictable key rotation
  • Improve authentication and cookie diagnostics logging

0.9.106

2026-02-11

  • Add dark mode styling to all remaining UI components and pages

0.9.105

2026-02-11

  • Add dark mode with Light/Dark/System theme toggle to the server UI
  • Default notification email to account email when left blank and notifications are enabled
  • Improve container path resolution reliability during builds (uses cgroup in addition to HOSTNAME)
  • Add validation for project settings updates

0.9.104

2026-02-11

  • Add logo branding to the server login page and layout
  • Rename “Ando CI” to “Ando Server” throughout the interface

0.9.103

2026-02-11

  • Add real-time project list refresh via SignalR when builds are queued
  • Add manual profile override option in project settings for cases where auto-detection is stale
  • Scan branch filter branches (not just default branch) for profile detection
  • Add inline secret value update in project settings with password manager suppression
  • Add version badge sync to ando docs command (automatically updates version badges before running Claude)
  • Show app version and attribution in the layout footer

0.9.102

2026-02-11

  • Fix authentication redirects and cookie handling when running behind a reverse proxy

0.9.101

2026-02-11

  • Simplify the project list layout
  • Improve Git.PushTags() to push only new tags that don’t already exist on the remote, avoiding unnecessary pushes and potential conflicts

0.9.100

2026-02-11

  • Enhance build failure emails with build logs and metadata
  • Only run post-hooks for release and ship commands when the command succeeds (exit code 0)
  • Improve Ctrl+C handling: first press requests graceful cancellation, second press forces immediate exit

0.9.99

2026-02-11

  • Add deployment status indicators and sorting to the project list page
  • Improve release asset resolution for Docker-in-Docker build environments

0.9.98

2026-02-11

  • Fix login redirect to use HTTP 303 See Other, preventing form resubmission on page refresh
  • Add global flash messages for login success feedback

0.9.97

2026-02-10

  • Add build log connection status indicator showing SignalR/polling state
  • Add SignalR retry with automatic reconnection when WebSockets are blocked
  • Detect GITHUB_TOKEN requirement for GitHub.PushImage() and Docker.Build() with WithPush() targeting ghcr.io
  • Add auth and SignalR diagnostics logging for troubleshooting session issues

0.9.96

2026-02-10

  • Internal improvements

0.9.95

2026-02-10

  • Add ship command for running the release workflow without publishing
  • Fix remember-me defaulting and extend session idle timeout

0.9.94

2026-02-10

  • Fix login and registration forms resubmitting when refreshing the page

0.9.91

2026-02-10

  • Automatically resolve GitHub App identity via API instead of manual configuration

0.9.90

2026-02-09

  • Persist login sessions so users stay signed in across server restarts
  • Default to remember-me login for a smoother authentication experience
  • Add session status endpoint for improved client connectivity
  • Improve project and script handling in the server

0.9.80

2026-02-07

  • Automatically install Docker CLI in build containers when Docker-in-Docker mode is enabled

0.9.79

2026-02-07

  • Automatically resolve host paths from container bind mounts during builds

0.9.78

2026-02-07

  • Fix build commands running in the wrong directory inside containers

0.9.77

2026-02-07

  • Fix API token authentication not being evaluated correctly

0.9.76

2026-02-07

  • Add personal API token management for programmatic access to the server

0.9.75

2026-02-07

  • Install Ando CLI from NuGet in build containers for improved reliability
  • Fix URL generation in the server

0.9.74

2026-02-07

  • Improve email delivery failure logging

0.9.73

2026-02-07

  • Fix file permissions across build scripts and documentation

0.9.72

2026-02-06

  • Fix email sender address validation and improve email service reliability

0.9.71

2026-02-06

  • Fix email service registration for improved reliability
  • Normalize file permissions across the project

0.9.70

2026-02-06

  • Redirect to dashboard after registration instead of showing a separate success page

0.9.69

2026-02-06

  • Improve Docker availability checks with specific error messages

0.9.68

2026-02-06

  • Switch email delivery to Resend for improved reliability
  • Improve authentication error handling

0.9.66

2026-02-03

  • Add option to bypass rootless Docker validation for TrueNAS deployments

0.9.65

2026-02-03

  • Add ASCII art startup banner with version info to server

0.9.64

2026-02-01

  • Improve documentation for atomic Docker build and push operations

0.9.63

2026-01-31

  • Add exit code to post-hook context for release command

0.9.62

2026-01-31

  • Add dedicated hooks documentation page

0.9.61

2026-01-31

  • Simplify email service configuration in Ando.Server
  • Internal improvements

0.9.60

2026-01-30

  • Add proper database migrations for Ando.Server instead of auto-creating schema
  • Add TrueNAS deployment documentation for self-hosted installations

0.9.59

2026-01-29

  • Add API documentation links to the LLM reference
  • Internal improvements

0.9.58

2026-01-29

  • Add DocFX operations for generating API documentation
  • Internal improvements and test coverage enhancements

0.9.57

2026-01-29

  • Simplify Docker operations by consolidating Build and Buildx into a single Build operation
  • Add source code links to operation documentation on the website

0.9.56

2026-01-28

  • Improve container registry operations to extract owner from image tags directly

0.9.55

2026-01-28

  • Improve documentation generation to analyze recent commits for better context

0.9.54

2026-01-28

  • Add support for building multi-architecture Docker images

0.9.53

2026-01-28

  • Improve reliability of global tool update after publishing releases

0.9.52

2026-01-28

  • Add comprehensive tests for CLI commands

0.9.51

2026-01-28

  • Improve build performance by persisting caches inside containers instead of mounting from host

0.9.50

2026-01-28

  • Fix validation for unknown CLI commands
  • Improve post-release tool update to use specific version

0.9.49

2026-01-28

  • Add AI-powered automatic changelog updates during version bumps
  • Add permission checks for AI-assisted operations

0.9.48

2026-01-28

  • Skip version bump during release when there are no changes since the last tag

0.9.47

2026-01-28

  • Fix error output capture when commands fail, showing helpful error messages instead of empty output
  • Improve timeout handling to gracefully stop long-running commands

0.9.46

2026-01-26

  • Add automatic DIND (Docker-in-Docker) mode inheritance so child builds no longer prompt separately when the parent build already enabled DIND

0.9.45

2026-01-26

  • Add automatic Docker-in-Docker mode inheritance for nested builds, so child builds no longer prompt for DIND confirmation when the parent build already enabled it

0.9.44

2026-01-26

  • Add recursive scanning of child builds when detecting Docker-in-Docker requirements
  • Add profile support for child builds, allowing different build configurations
  • Add readEnv config option to control environment variable loading and new hook recipes

0.9.43

2026-01-26

  • Improve hook configuration to support path operations on the root directory

0.9.42

2026-01-26

  • Internal improvements to post-release script cleanup handling

0.9.41

2026-01-26

  • Add automatic detection when Docker-in-Docker mode is needed, with an interactive prompt to enable it
  • Add automatic update of the global tool after publishing a new release

0.9.40

2026-01-26

  • Add option to automatically add .env.ando to .gitignore when initializing a project

0.9.39

2026-01-26

  • Version bump

0.9.38

2026-01-26

  • Add new ando docs command to open documentation in the browser
  • Update website tagline and improve documentation

0.9.37

2026-01-26

  • Add real-time output streaming for shell operations in build scripts
  • Add new ando docs command for AI-assisted documentation updates
  • Fix Docker-in-Docker container recreation and build verification

0.9.36

2026-01-26

  • Add documentation for the release command
  • Fix incorrect GitHub authentication instructions

0.9.35

2026-01-24

  • Add automatic confirmation option for version bumping to enable non-interactive workflows

0.9.34

2026-01-23

  • Add GitHub link badge to the documentation website landing page

0.9.33

2026-01-23

  • Add AI-powered changelog generation that creates user-friendly release notes from commit messages

0.9.32

2026-01-23

  • feat(bump): auto-generate changelog from git commits since last tag

0.9.31

2026-01-23

  • Version bump

0.9.30

2026-01-23

  • Version bump

0.9.29

2026-01-23

  • Version bump

0.9.28

2026-01-23

  • Version bump

Installation

Install or update ANDO using the .NET CLI:

# Install
dotnet tool install -g ando

# Update to latest
dotnet tool update -g ando

# Check version
ando --version

0.9.27

2026-01-23

Improvements:

  • Improved reliability of GitHub OAuth scope checking
    • Fixed environment variable handling when checking keyring token scopes
    • Uses bash subprocess for more reliable token isolation during scope verification

0.9.26

2026-01-23

Improvements:

  • Added OAuth scope validation for GitHub.PushImage() operations
    • Now checks for write:packages scope before attempting to push to ghcr.io
    • Provides clear error message with re-authentication instructions if scope is missing
    • Run gh auth login --scopes write:packages to fix scope issues

0.9.25

2026-01-23

Maintenance:

  • Improved version bump script with GitHub authentication check
  • No user-facing changes in this release

0.9.24

2026-01-23

Maintenance:

  • Version bump for release infrastructure improvements
  • No user-facing changes in this release

0.9.23

2026-01-22

New Features:

  • Enhanced GitHub.CreateRelease() with optional file uploads
    • Use WithFiles() to attach release assets (e.g., binaries, archives)
    • Supports path#name syntax to rename files (e.g., "dist/app#app-linux-x64")
    • Files are uploaded as release assets alongside the release creation

Example:

GitHub.CreateRelease(o => o
    .WithTag("v1.0.0")
    .WithGeneratedNotes()
    .WithFiles(
        "dist/linux-x64/app#app-linux-x64",
        "dist/win-x64/app.exe#app-win-x64.exe"
    ));

0.9.22

2026-01-22

Maintenance:

  • Reverted SDK version and target framework to .NET 9 (9.0.200 SDK, net9.0 target framework)
    • An attempted upgrade to .NET 10 was reverted to maintain compatibility and stability
    • The project continues to use .NET 9 exclusively as per the documented requirements

0.9.21

2026-01-22

New Features:

  • Added --version / -v CLI command to display the installed ANDO version
    • Usage: ando --version or ando -v

Improvements:

  • Enhanced Playwright.Install() to automatically install system dependencies
    • Now runs npx playwright install --with-deps instead of just npx playwright install
    • Automatically installs required system packages (libgtk, libasound, etc.) on Linux
    • Improves reliability when running E2E tests in Docker containers
  • Improved Docker-in-Docker (--dind) support on Linux
    • Added host.docker.internal hostname mapping for containers
    • Containers can now reach services on the host via host.docker.internal
    • Useful for E2E tests that need to connect to locally running servers
  • Updated all examples to include Ando.CopyArtifactsToHost() for copying build outputs to host

0.9.20

2026-01-22

New Features:

  • Added Docker.IsAvailable() method to check if Docker CLI and daemon are accessible
    • Returns true if Docker is available, false otherwise
    • Executes immediately (not registered as a step) for conditional logic in build scripts

Improvements:

  • Enhanced E2E testing support with Docker-in-Docker mode
    • Build scripts can now detect Docker availability and conditionally run E2E tests
    • Updated main build script to use Docker.IsAvailable() for cleaner E2E test gating
    • Improved documentation for running E2E tests with ando --dind flag

Documentation:

  • Updated Playwright E2E testing recipe with Docker-in-Docker best practices
  • Clarified E2E test requirements in build script comments

0.9.19

2026-01-22

New Features:

  • Added Playwright E2E testing to the main build script with automatic local/server detection
    • Tests run automatically on local builds where Docker is available
    • Tests are skipped on Ando.Server (nested Docker) by default
    • Use -p e2e profile to force E2E tests in any environment

Documentation:

  • Added new Recipes section to the documentation website
    • New recipe: “Running Playwright E2E Tests” with automatic local/server detection
  • Updated llms.txt with links to new recipe documentation
  • Added .NET Version section to CLAUDE.md documenting the .NET 9 requirement

0.9.18

2026-01-22

Improvements:

  • Added support for Resend-compatible email providers with configurable base URL in Ando.Server
    • Configure Email__BaseUrl to use alternative email providers like Loops or self-hosted Resend instances
    • Default base URL remains https://api.resend.com for standard Resend usage

0.9.17

2026-01-22

Improvements:

  • Enhanced ProjectRef to read version directly from .csproj files
    • Access project version via project.Version property in build scripts
    • Example: Log.Info($"Building {project.Name} version {project.Version}");
    • Version is lazily loaded and cached for performance
    • Returns “0.0.0” if no Version element is found

0.9.16

2026-01-22

Improvements:

  • Expanded tilde (~) to home directory for GITHUB_PEM_PATH in server-install.sh

0.9.15

2026-01-22

Improvements:

  • Refactored GitHub PEM handling in server-install.sh for improved flexibility
    • Added option to paste PEM content directly (recommended for curl | bash installations)
    • Added option to use a file already uploaded to the server
    • Retained local file path option for compatibility

0.9.14

2026-01-22

Bug Fixes:

  • Fixed input handling in server-install.sh to read from /dev/tty for better compatibility with piped installations

0.9.13

2026-01-22

New Features:

  • Added Docker.Install() to install Docker CLI in the container for Docker-in-Docker builds

Improvements:

  • Git commands now always run on the host (not in the container), fixing issues with git operations in containerized builds
  • Added WithSkipIfExists() option to Git.Tag() to gracefully handle existing tags instead of failing
  • Improved Nuget.Push() duplicate handling - now properly detects and reports when a package version already exists
  • Updated GitHub CLI token extraction to support newer gh CLI versions

0.9.12

2026-01-21

Maintenance:

  • Removed .env.ando files from git tracking to prevent accidental commits of local environment configuration
  • Added .env.ando pattern to .gitignore

0.9.11

2026-01-21

Maintenance:

  • Fixed file permissions on multiple source and documentation files

0.9.5

2026-01-17

Build Profiles:

  • New DefineProfile() for conditional build steps
  • Activate via CLI: ando -p release or ando -p push,release
  • Validates profiles before execution - typos are caught early
  • Profiles are passed to nested builds automatically

New Providers:

  • Git - Tag(), Push(), PushTags(), Add(), Commit()
  • GitHub - CreatePr(), CreateRelease(), PushImage() (ghcr.io)
  • Docker - Build() with support for build args and platforms

GitHub Authentication:

  • Uses GITHUB_TOKEN env var (CI-friendly)
  • Falls back to extracting token from gh auth login config
  • Token passed to containers automatically

0.9.4

2026-01-17

Auto-Install SDK/Runtime:

  • Dotnet operations now automatically install .NET SDK if not present
  • Npm operations now automatically install Node.js if not present
  • Version is fetched dynamically from official APIs (.NET releases, Node.js releases)
  • Cached per-build to avoid repeated API calls
  • Dotnet.SdkInstall() and Node.Install() disable auto-install for explicit version control

0.9.3

2026-01-16

First public release.

Providers:

  • Ando - Core operations (Log, Artifacts, Context)
  • Dotnet - Build, test, publish .NET projects (includes SdkInstall)
  • Ef - Entity Framework Core migrations
  • Npm - npm install, ci, run, build, test
  • Node - Install Node.js in containers
  • NuGet - Pack and push NuGet packages
  • Azure - Azure CLI authentication and subscription management
  • Bicep - Deploy Azure infrastructure with Bicep templates
  • AppService - Deploy to Azure App Service with slot swapping
  • Functions - Deploy to Azure Functions
  • Cloudflare - Deploy to Cloudflare Pages