Skip to content

Releases: patsoffice/aliasman

v2.2.1

Choose a tag to compare

@patsoffice patsoffice released this 30 Mar 03:08
4439dc9

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 br usage 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

Choose a tag to compare

@github-actions github-actions released this 22 Mar 16:52
62fbf3f

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, amber

Each 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, or logo.jpg): replaces the default logo in the navigation bar
  • Dark-mode logo (logo-dark.svg, logo-dark.png, or logo-dark.jpg): shown when dark mode is active
  • Header background (header.svg, header.png, or header.jpg): background image behind the navigation bar
  • Favicon (favicon.svg, favicon.ico, or favicon.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 WebConfig and ThemeColorOverrides config structs in aliasman-core
  • New theme.rs module in aliasman-web with 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, and favicon.svg embedded in the binary

v2.1.0

Choose a tag to compare

@patsoffice patsoffice released this 22 Mar 02:19
ef5868b

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/OptionalAuth extractors, username display in nav bar, and Unauthorized error 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/users page with HTMX-powered user CRUD, inline permission grant/revoke, superuser guard, and self-deletion prevention.
  • CLI user management commandsuser create, list, show, delete, reset-password, grant, and revoke subcommands with --system/--domain scoping and optional --actions filter.

Web UI Improvements

  • Dark mode toggle — Sun/moon button in the navbar with localStorage persistence 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

Choose a tag to compare

@patsoffice patsoffice released this 19 Mar 04:59
531a62a

Enhancements

  • ALIASMAN_CONFIG_DIR environment variable — Override the default --config-dir path via environment variable. Enabled by the clap env feature in both CLI and web crates. The Dockerfile now defaults to /config for containerized deployments.

Assets

  • aliasman-aarch64-macos.tar.gz — macOS (Apple Silicon)
  • aliasman-x86_64-linux.tar.gz — Linux (x86_64)

v2.0.1

Choose a tag to compare

@patsoffice patsoffice released this 15 Mar 20:47
93210f8

Bug Fixes

  • Fix Dockerfile Rust version — Changed rust:1.87-bookworm to rust:1-bookworm to 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

Choose a tag to compare

@patsoffice patsoffice released this 15 Mar 20:42
2dced25

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 StorageProvider and EmailProvider traits, 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/BOOLEAN types, schema versioning via aliasman_meta table
  • Storage conversionstorage convert command to migrate between any providers, with --legacy-source flag 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-write
  • alias search — regex filtering across all alias fields
  • audit — compare storage vs email provider, detect discrepancies (storage-only, email-only, address mismatch)
  • config — display resolved configuration
  • --dry-run flag on all 4 mutation commands (create, delete, suspend, unsuspend)
  • Aliases displayed as alias@domain via full_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-Trigger events
  • 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

Choose a tag to compare

@patsoffice patsoffice released this 04 May 16:01
- 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

Choose a tag to compare

@patsoffice patsoffice released this 03 May 01:34
- 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

Choose a tag to compare

@patsoffice patsoffice released this 06 Apr 02:48
- 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

Choose a tag to compare

@patsoffice patsoffice released this 01 Apr 12:31
Don't have travis-ci clean-up build artifacts