What's New
This release introduces a comprehensive web UI dashboard for job monitoring and management, secure authentication, and support for alternative template delimiters.
Major Features
Web UI Dashboard
- Real-time job monitoring with auto-refresh every 5 seconds using HTMX
- Manual job execution directly from the UI with run button for each job
- Job status filtering - filter by All, Running, Success, Failed, or Idle states
- Multiple view modes - switch between card and list layouts
- Theme support - Light, Dark, and Auto themes with persistent preferences
- Job sorting options - sort by name, schedule, or status
- SQLite persistence for job execution history across restarts
- Responsive design optimized for mobile and desktop
Authentication & Security
- Secure login system with bcrypt password hashing
- CSRF protection on all state-changing operations
- Brute-force protection with rate limiting (10 attempts per IP per minute)
- Configurable session TTL (default 24 hours)
- HTTPOnly secure cookies for session management
Alternative Template Delimiters
- Support for [[ ]] delimiters instead of {{ }} to avoid conflicts with application templates
- Enable with --alt-template flag or CRONN_ALT_TEMPLATE environment variable
- Full compatibility with all existing date/time templates
Improvements
- Fixed web parser reuse and SQLite locking issues
- Improved view toggle to maintain grid layout without page refresh
- Enhanced mobile responsive design
- Added comprehensive test coverage (87.8% for web package)
- Updated goreleaser to v2.11.2 for Go 1.24 support
Statistics
- 13 major commits since v1.2.0
- New packages: web UI, persistence, authentication, enums
- Added comprehensive documentation for web UI patterns and architecture
Usage Examples
Running with Web UI
# Basic web UI with default settings
cronn -f crontab --web.enabled
# With custom port and authentication
cronn -f crontab --web.enabled --web.address=:8080 --web.password-hash='$2a$10$...'
# With custom session TTL
cronn -f crontab --web.enabled --web.login-ttl=48hUsing Alternative Templates
# Enable alternative template delimiters
cronn -f crontab --alt-template
# In crontab/YAML with alternative delimiters
echo '[[.YYYY]]-[[.MM]]-[[.DD]]/report.log' | cronn --alt-templateFull Changelog
- e57a1cd Add alternative template delimiter support (#47)
- 5edaa90 docs: update web dashboard documentation with complete feature list
- 2fe9fbb feat(web): add configurable login session TTL
- 2a1c57d fix(web): improve view toggle to maintain grid layout without page refresh
- 554c122 fix(web): restore view toggle button icon update on click
- 44d7ddb feat: add brute-force protection to login endpoint (#46)
- f9f53d5 feat(web): implement secure authentication system with CSRF protection (#45)
- 6c2062b fix: minor web UI improvements from review feedback
- bfc1bcf fix: resolve web parser reuse and SQLite locking issues (#44)
- 2e96853 feat(web): add job filter by status and refactor template rendering (#43)
- 661d968 feat: add manual run button for jobs in web UI (#42)
- 105025a feat: add web UI dashboard for job monitoring (#41)
- 0333361 fix: update goreleaser to v2.11.2 for Go 1.24 support
Docker Image
docker pull umputun/cronn:v1.3.0Thanks
Thanks to all contributors and users who provided feedback and bug reports!