All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Competitor Import - Migrate secrets from other password managers (#168)
- 1Password CSV export import
- Bitwarden JSON export import
- LastPass CSV export import
- Automatic field mapping (username, password, url, notes)
- Support for
--preserve-caseand--tagoptions
- Folder Organization - Organize secrets into hierarchical folders (#167)
- CLI commands:
folder create,folder list,folder delete,folder rename,folder move,folder info - MCP tools:
folder_list,folder_create,folder_move_secret - Folder customization with icons and colors
- Path-based secret organization (e.g.,
work/aws/api-key)
- CLI commands:
- MCP server version string updated from hardcoded 0.6.0 to match release version (#173)
0.8.7 - 2026-01-22
- Security Dashboard - Analyze vault security health with comprehensive scoring (#169)
- Overall security score (0-100) based on password strength, uniqueness, and expiration
- Duplicate password detection using privacy-preserving HMAC comparison
- Weak password detection with NIST-compliant strength analysis
- CLI commands:
secretctl security,security duplicates,security weak,security expiring
- Dark Mode - Full dark theme support in Desktop app (#169)
- System preference detection with manual override
- Consistent theming across all components
- Keyboard Shortcuts - Quick navigation and actions in Desktop app (#169)
Ctrl+N/Cmd+N: New secretCtrl+S/Cmd+S: SaveCtrl+F/Cmd+F: Focus searchEscape: Cancel/close dialogs
- Shell Completion - Tab completion for all CLI commands (#169)
secretctl completion bashsecretctl completion zshsecretctl completion fishsecretctl completion powershell
- Internationalization (i18n) - Multi-language support (#163)
- Japanese language support for Desktop app and Website
- Browser language auto-detection with English fallback
- Security Dashboard documentation (#170)
- Japanese README with language badges (#164)
- Rewritten README with pain-first messaging (#165)
- Google Search Console verification (#171)
- FUNDING.yml for GitHub Sponsors (#166)
0.8.6 - 2026-01-06
- Desktop App - Input type selector in Add Field dialog (#156)
- "Single Line" option for passwords, API keys, usernames
- "Multi-line" option for SSH keys, certificates, JSON
- Segmented button UI with icons and dynamic help text
- Desktop App - Custom app icon with shield and key design (#154)
- Desktop App - Enhanced color theme with Docker-style accents (#155)
- Sky-500 primary color for header section
- Improved button hover and active states
- Enhanced template card hover effect
- Consolidated research docs into
docs/internal/research/(#153)
0.8.5 - 2026-01-04
- Desktop App - Textarea edit mode now supports password-like masking (#150)
- Uses
-webkit-text-security: discfor consistent UX with single-line inputs - Textarea defaults to visible (for SSH key verification), Input defaults to hidden
- Eye button toggles visibility for both field types
- Uses
- Desktop App - Fixed textarea becoming readonly after typing one character (#149)
- Separated display masking from input blocking logic
- Added regression tests to prevent future issues
- Desktop App - Fixed new SSH secrets not accepting textarea input (#147)
- SSH key template now properly renders textarea for
private_keyfield
- SSH key template now properly renders textarea for
- Testing - Behavior Matrix Tests for automatic UX consistency verification
- Uses
describe.each()pattern to test Input and Textarea with same scenarios - Ensures ADR-005 "Same UX as single-line Input" compliance
- Uses
0.8.4 - 2025-12-31
- Textarea Field Support - Multi-line input for SSH keys, certificates, and other large text values
- New
inputTypefield attribute:"text"(default) or"textarea" - SSH template's
private_keyfield now uses textarea input - Desktop App: Textarea component with proper masking for sensitive fields
- CLI: Multi-line input support when
inputTypeis"textarea"
- New
- Documentation - Multi-Field Secrets section in Desktop Guide, SSH key instructions
0.7.0 - 2025-12-30
-
Multi-Field Secrets (Phase 2.5) - Support for storing multiple key-value pairs in a single secret
- New
Fieldsmap with name, value, and sensitivity settings per field - Database schema migration to v3 with backward compatibility
- Well-known field names:
username,password,url,notes,host,port,database,api_key
- New
-
CLI Multi-Field Support
set --field name=valuefor adding individual fieldsset --template login|database|api|sshfor pre-defined templatesset --binding field=ENV_VARfor environment variable mappingsget --field nameto retrieve a specific fieldget --fieldsto list all field names
-
MCP Multi-Field Tools
secret_listnow includesfield_countfor each secretsecret_list_fieldsto list all field names for a secretsecret_get_fieldto retrieve a specific non-sensitive field valuesecret_get_maskedextended withfieldsmap showing all fields with maskingsecret_run_with_bindingsfor flexible environment variable injection
-
Desktop App Multi-Field UI
- Multi-field editing interface with add/remove field buttons
- Template selection dropdown (Login, Database, API, SSH)
- Sensitive field toggle per field
- Field-level visibility controls
-
Documentation
- Well-known field names reference (
website/docs/reference/field-names.md) - Updated MCP tools documentation with multi-field examples
- Well-known field names reference (
- Sensitive field values are always masked in MCP responses
- Non-sensitive fields can be read via
secret_get_field(e.g., username, host) field_countstored in plaintext for efficient querying (AI-Safe Access compliant)
0.6.0 - 2025-12-24
backupcommand - Create encrypted vault backups (#83)- AES-256-GCM encryption with fresh salt per backup
- HMAC-SHA256 integrity verification
- Optional audit log inclusion (
--with-audit) - Key file support for automation (
--key-file) - Stdout output for piping (
--stdout)
restorecommand - Restore vault from encrypted backup (#83)- Integrity verification (
--verify-only) - Dry run mode (
--dry-run) - Conflict handling: skip, overwrite, error
- Atomic restore prevents partial states
- Integrity verification (
importcommand - Import secrets from .env or JSON files (#91)- Support for
.envand JSON formats - Conflict handling modes:
--skip,--overwrite,--error - Preview mode with
--dry-run - Import summary with counts
- Support for
- E2E test stability - Resolved flaky tests AUDIT-002 and CORE-004 (#93)
- Fixed strict mode violations in audit table header checks
- Fixed custom ConfirmDialog interaction in delete tests
- Improved CI workflow timeout handling
0.5.0 - 2025-12-08
- Audit Log Viewer - Comprehensive audit log viewing in desktop application
- Filter logs by action, source, key, and date range
- Pagination support for large log volumes (20 entries per page)
- Real-time chain integrity verification with visual status
- Export logs to CSV and JSON formats
- Detailed log entry modal with full metadata
- Statistics display (total, success, failure counts)
- Backend API enhancements for audit log search
SearchAuditLogswith filtering and paginationVerifyAuditLogsfor chain integrity verificationGetAuditLogStatsfor summary statistics
0.4.1 - 2025-12-08
- Desktop App Secret CRUD - Full secret management in desktop application
- Create secrets with key, value, URL, tags, and notes
- Read and view secret details with metadata
- Update existing secrets
- Delete secrets with confirmation dialog
- Search and filter secrets by key
- Copy secret values to clipboard with auto-clear feedback
- E2E Test Coverage - All E2E tests enabled and passing
- 6 authentication tests (SEC-001, SEC-002)
- 6 secret CRUD tests (CORE-001 to CORE-006)
- Playwright strict mode violations in E2E tests
- Dialog handling in delete confirmation tests
0.4.0 - 2025-12-06
- Desktop App - Native desktop application built with Wails v2
- Cross-platform support (macOS, Windows, Linux)
- Vault creation with master password validation
- Vault unlock with password authentication
- Secrets list view with metadata display
- Password visibility toggle
- Auto-lock on idle timeout (15 minutes)
- Modern React + TypeScript + Tailwind CSS frontend
- Playwright E2E test framework
- Reorganized project structure with
desktop/directory for Wails app
0.3.0 - 2025-12-05
mcp-servercommand - MCP server for AI coding assistant integrationsecret_list: List secret keys with metadata (no values)secret_exists: Check if a secret exists with metadatasecret_get_masked: Get masked secret value (e.g.,****WXYZ)secret_run: Execute command with secrets as environment variables- Policy-based command allowlisting via
~/.secretctl/mcp-policy.yaml
- AI-Safe Access design: AI agents never receive plaintext secrets
- Default denied commands (env, printenv, set, export) always blocked
- Output sanitization in secret_run prevents secret leakage
- TOCTOU-safe policy file loading with symlink rejection
- Concurrent execution limiting (max 5 secret_run operations)
0.2.0 - 2025-12-03
runcommand - Execute commands with secrets injected as environment variables- Wildcard key patterns (
-k "aws/*") - Output sanitization to prevent secret leakage in stdout/stderr
- Configurable timeout (
--timeout) - Environment variable prefix support (
--env-prefix)
- Wildcard key patterns (
exportcommand - Export secrets to file or stdout.envformat (default)- JSON format (
--format=json) - Key filtering with glob patterns (
-k "db/*")
generatecommand - Generate secure random passwords- Configurable length (
-l, default 24) - Character set options (
--no-symbols,--no-numbers, etc.) - Multiple password generation (
-n)
- Configurable length (
audit exportcommand - Export audit logs- JSON and CSV formats
- Time range filtering (
--since,--until)
audit prunecommand - Delete old audit logs- Dry-run mode (
--dry-run) - Configurable retention (
--older-than)
- Dry-run mode (
- Output sanitization detects and redacts secrets in command output
- Path traversal protection for export file paths
- CSV injection prevention in audit export
0.1.0 - 2025-12-01
- Core vault implementation with AES-256-GCM encryption
- Argon2id key derivation for master password
- SQLite-based secret storage
- HMAC-chained audit logging with tamper detection
- Metadata support (notes, tags, URL, expiration)
- Master password strength validation
- File permission validation (0600/0700)
- CLI commands: init, lock, unlock, set, get, list, delete
- Audit commands: list, verify