Releases: patsoffice/aliasman
Release list
v2.2.1
What's New
- Click-to-copy alias — clicking the full alias (e.g.
foo@example.com) in the web UI copies it to the clipboard with a "Copied!" tooltip - Beads issue tracking — added
brusage documentation to CLAUDE.md
Housekeeping
- Closed custom themes epic (aliasman-847) — all subtasks complete
- Bumped all crates from 2.2.0 to 2.2.1
v2.2.0: Theme Support and Custom Branding
Highlights
The web UI now supports configurable color themes and custom branding, allowing you to personalize the look and feel of your Aliasman instance.
Theme Presets
Choose from 5 built-in color themes via the new [web] section in config.toml:
[web]
theme = "purple" # blue (default), green, purple, rose, amberEach preset includes both light and dark mode color palettes that adapt automatically when toggling the theme.
Per-Color Overrides
Fine-tune any preset by overriding individual colors:
[web.colors]
primary = "#6d28d9"
primary_hover = "#5b21b6"
accent = "#8b5cf6"
accent_hover = "#a78bfa"Custom Branding
Drop files into ~/.config/aliasman/branding/ to customize the UI: no config changes needed:
- Logo (
logo.svg,logo.png, orlogo.jpg): replaces the default logo in the navigation bar - Dark-mode logo (
logo-dark.svg,logo-dark.png, orlogo-dark.jpg): shown when dark mode is active - Header background (
header.svg,header.png, orheader.jpg): background image behind the navigation bar - Favicon (
favicon.svg,favicon.ico, orfavicon.png): browser tab icon
When no branding files are provided, built-in default logos and favicon are used.
Backward Compatibility
The [web] section is entirely optional. Existing configurations work without changes as the default blue theme is applied automatically.
What Changed
- New
WebConfigandThemeColorOverridesconfig structs inaliasman-core - New
theme.rsmodule inaliasman-webwith preset definitions, theme resolution, and branding detection - Theme and branding state resolved once at startup (no runtime overhead)
/branding/{*path}route serves user-provided branding files from disk (path-traversal safe)- All hardcoded
blue-*Tailwind classes replaced with CSS-variable-backed semantic classes (bg-primary,text-primary,focus:ring-accent, etc.) across 11 templates - Default
logo.svg,logo-dark.svg, andfavicon.svgembedded in the binary
v2.1.0
What's New
Authentication & Authorization
- Auth module with UserStore trait — SQLite and Postgres implementations with argon2id password hashing, session token management, and permission checking (system-level and per-domain). Optional and backward-compatible; no-auth mode works as before.
- Web authentication with session cookies — Login/logout flow,
RequireAuth/OptionalAuthextractors, username display in nav bar, andUnauthorizederror variant for permission denials. - Per-domain permission checks on web mutations — Create, delete, suspend, and unsuspend actions are enforced via
check_permission()with system-then-domain resolution. Denied requests return HTTP 403. - Web admin UI for user and permission management —
/admin/userspage with HTMX-powered user CRUD, inline permission grant/revoke, superuser guard, and self-deletion prevention. - CLI user management commands —
user create,list,show,delete,reset-password,grant, andrevokesubcommands with--system/--domainscoping and optional--actionsfilter.
Web UI Improvements
- Dark mode toggle — Sun/moon button in the navbar with
localStoragepersistence and OS-preference default. Dark variants applied across all templates with no flash on load. - Suspended alias count — Toolbar now shows "(N suspended)" next to the total count when suspended aliases exist.
Other
- Added beads-rust issue tracking workflow for internal project management.
Assets
aliasman-aarch64-macos.tar.gz— macOS (Apple Silicon)aliasman-x86_64-linux.tar.gz— Linux (x86_64)
v2.0.2
Enhancements
ALIASMAN_CONFIG_DIRenvironment variable — Override the default--config-dirpath via environment variable. Enabled by the clapenvfeature in both CLI and web crates. The Dockerfile now defaults to/configfor containerized deployments.
Assets
aliasman-aarch64-macos.tar.gz— macOS (Apple Silicon)aliasman-x86_64-linux.tar.gz— Linux (x86_64)
v2.0.1
Bug Fixes
- Fix Dockerfile Rust version — Changed
rust:1.87-bookwormtorust:1-bookwormto avoid MSRV conflicts and always use the latest stable Rust toolchain for Docker builds.
Assets
aliasman-aarch64-macos.tar.gz— macOS (Apple Silicon)aliasman-x86_64-linux.tar.gz— Linux (x86_64)
v2.0.0
Aliasman 2.0 — Complete Rewrite in Rust
v2.0.0 is a ground-up rewrite of aliasman from Go to Rust. The original Go CLI has been replaced with an async, workspace-based Rust project offering the same functionality plus a new web frontend, additional storage backends, and a more extensible architecture.
Architecture
Three-crate workspace:
- aliasman-core — async library with
StorageProviderandEmailProvidertraits, enum dispatch, models, and all domain logic - aliasman-cli — Clap-based CLI binary with comfy-table output
- aliasman-web — Axum web server with Askama templates and HTMX-powered UI
Fully async (tokio), thiserror errors in core, anyhow in binaries, TOML config with named multi-system support.
Storage Providers
- SQLite — with schema migration system (
PRAGMA user_version) and sequential versioned migrations - S3 — Rust-native JSON format with index optimization for fast loading; supports AWS credential chain, static credentials, custom endpoints (MinIO, LocalStack), and
force_path_style - PostgreSQL — native
TIMESTAMPTZ/BOOLEANtypes, schema versioning viaaliasman_metatable - Storage conversion —
storage convertcommand to migrate between any providers, with--legacy-sourceflag for reading Go-era S3 format
CLI Commands
alias create,delete,list,edit— full CRUD with dual-write (email provider first, then storage)alias suspend/unsuspend— toggle alias suspension with dual-writealias search— regex filtering across all alias fieldsaudit— compare storage vs email provider, detect discrepancies (storage-only, email-only, address mismatch)config— display resolved configuration--dry-runflag on all 4 mutation commands (create, delete, suspend, unsuspend)- Aliases displayed as
alias@domainviafull_alias()
Web Frontend
- HTMX-powered alias listing with search/filter and system switching
- Full mutation support: create (with random name generator), edit, delete, suspend, unsuspend
- Auto-refresh alias table on mutations via
HX-Triggerevents - OOB swaps keep alias count in sync on partial updates
- Shared Askama templates with Tailwind CSS
CI/CD & Packaging
- GitHub Actions CI (fmt, clippy, test) on push/PR
- Release workflow triggered by version tags — builds CLI artifacts for x86_64 Linux and aarch64 macOS
- Multi-stage Dockerfile (builder + debian-slim runtime) with Docker image pushed to GHCR
Migration from v1.x (Go)
The S3 storage provider supports reading the original Go implementation's metadata-based format via the --legacy-source flag on storage convert. SQLite and PostgreSQL are new backends with no Go-era equivalent.
Assets
aliasman-aarch64-macos.tar.gz— macOS (Apple Silicon)aliasman-x86_64-linux.tar.gz— Linux (x86_64)
v1.0.1: Fixed unit tests, update travis-ci flow, README
- Fixed unit test import - Updated travis-ci to use coveralls for coverage reporting - Updated README with build/coverage badges and describing the files storage provider
v1.0.0: Use Go toolbox, updated docs
- Make use of common code moved to the toolbox package - Updated installation instructions and fixed the root help output
v1.0.0-beta.2: Add cmd sync-from-email and update-description
- Added command to update a storage provider's description - Added command to sync from an email provider to the storage provider - Added storage provider method an update method - Updated docs
v1.0.0-beta.1
Don't have travis-ci clean-up build artifacts