Tools API - Complete Changelog
This document tracks all changes, updates, and improvements made to the Tornevall Networks Tools API platform.
2026-02-13
Major Features
DNS API & Zone Management System
- ✅ New DNS Zone discovery system (reads from
/etc/named/zones-master)
- ✅ Subdirectory-based zone detection (each directory = a zone)
- ✅ RESTful API endpoints for zone listing and retrieval
- ✅ Multi-authentication support: Session, API Key, IP Whitelist
- ✅ Admin panel for DNS zone management (
/admin/dns)
- ✅ User-facing DNS Editor (
/dns/editor)
- ✅ Grid-based beautiful UI for zone listings
API Key Authentication System
- ✅ Custom API Key Guard for authentication
- ✅ Support for API keys in Authorization header (Bearer token)
- ✅ Support for X-API-Key header
- ✅ Support for query parameter (
?api_key=)
- ✅ Global API keys return all zones (admin access)
- ✅ User-specific keys with permission filtering
- ✅ Auto-generate secret keys in admin panel
IP Whitelist Management
- ✅
/api/dns/zones accessible via whitelisted IPs without auth
- ✅ Admin panel for managing IP whitelist (
/admin/security/api-ip-whitelist)
- ✅ Support for single IPs (192.168.1.1) and CIDR ranges (192.168.0.0/24)
- ✅ Per-endpoint restrictions (optional)
- ✅ Active/inactive toggle without deletion
- ✅ Error messages show the requestor's IP address
API Key Generator & Key Management
- ✅ Random key generator tool in admin panel (32, 64, 128 chars + UUID)
- ✅ Auto-generate secret keys with one-click button
- ✅ Show/Hide toggle for secret keys
- ✅ Copy-to-clipboard functionality for all key types
Documentation & User Guides
- ✅ Updated DNS API documentation with auth methods
- ✅ Usage examples for API Key, session, and IP whitelist
- ✅ Admin guides for zone management and token creation
PHP 7.x Compatibility
- Fixed OpenAiController to work with PHP 7.x
- Converted PHP 8.0+ constructor property promotion to traditional constructor syntax
- Converted nullsafe operator (
?->) to PHP 7.x compatible null check
- All code now compatible with PHP 7.4+
User Registration Tracking
- Added
reg_from column to users table to track registration source IP
- Records
REMOTE_ADDR during registration for security auditing
- Uses
127.0.0.1 for local/internal registrations
- Migration:
2026_02_11_200000_add_reg_from_to_users_table
SSL Verification Configurable
- Added
DISABLE_SSL_VERIFY environment variable to control SSL certificate verification
- When set to
true, skips SSL certificate verification for all HTTPS requests
- Applies to all calls to OpenAI API and Cloudflare Turnstile
- Useful for local development environments (WAMP on Windows, etc.) where CA certificates may not be properly configured
- NOT recommended for production environments
- Configured in
.env: DISABLE_SSL_VERIFY=true or DISABLE_SSL_VERIFY=false
- Default:
false (SSL verification enabled)
Dashboard Sync with Services
- Added missing services to dashboard: API Keys (admin), My API Keys (user), MCU Timeline Editor, Access Bans
- Updated "no permissions" check to include all available services
- Consistent service availability between dashboard and services page
- Better visual organization with proper card styling
OpenAI Test Fix
- Fixed null profile error when testing OpenAI without selecting a prompt profile
- Now creates minimal temporary profile for ad-hoc testing
- Allows testing with just model + input without requiring saved profile
- Error handling improved with clearer messages
User Registration Tracking
- Added
reg_from field to users table to track registration IP address
- Stored as REMOTE_ADDR during registration (127.0.0.1 for local/test environments)
- Helps identify suspicious registration patterns
- Useful for security auditing and abuse prevention
Turnstile Bypass for Admins
- Admins (is_admin=1) can now bypass Turnstile CAPTCHA on login
- Simplifies development and emergency access scenarios
- Non-admin users still require CAPTCHA verification when enabled
- SSL verification disabled in local/dev environments for easier testing
Security & Access Control
Cloudflare Turnstile CAPTCHA Integration
- Added Turnstile service for bot protection on login and registration forms
- Automatic detection of global
cloudflare_turnstile API key
- If enabled (global key exists), CAPTCHA widget appears on auth forms
- If disabled or key missing, forms work normally without CAPTCHA
- Site key (public_key) and secret key (secret_key) stored in api_keys table
- Server-side token verification against Cloudflare API
- Failed verification blocks login/registration with clear error message
- Seamless integration - no frontend changes needed beyond widget rendering
Admin Warnings System
- Automatic detection of new admin accounts on every web request
- Alerts sent via Slack webhook (TOOLSAPI_SLACK in .env)
- Email notifications to configured address (ADMINWARN_MAIL or thorne@tornevall.net)
- Throttling mechanism: alerts only sent once per configurable interval (default 3600 seconds)
- Acknowledgement system: admins can "ack" new admins to stop repeated alerts
- Un-acked admins are treated as non-admin for safety until acknowledged
- Admin warning panel in dashboard (/admin/warnings) shows all unacknowledged admins
- Quick "Acknowledge" button to mark admins as legitimate
- Protects against unauthorized privilege escalation
Access Bans Management
- New admin panel for IP and email banning (/access-bans)
- Ban email addresses to block registration and login
- Ban IP ranges in CIDR format (e.g., 192.168.1.0/24) to block entire subnets
- Bans checked on registration and login
- Clear error messages for blocked users
- Admin-only access (requires admin permissions)
- Bulk delete support for managing large ban lists
- Integrated with user management panel
User Management Enhancements
- Pagination support for large user lists (10 per page default)
- Bulk delete functionality moved below table for better UX
- "Select current page" and "Select ALL non-admin users" checkboxes
- Bulk delete never affects admin accounts or your own account
- Clear visual indicators for admin status (green badge)
- Permission badges for easy permission overview
- Enhanced table layout with better spacing and readability
API Keys Management Improvements
- Paginated API keys listing for better performance with many keys
- Secret keys masked by default (shown as ••••••••••••)
- Full public key display in collapsible "Show full" section
- Edit panel moved outside table to prevent layout issues
- Clear instructions for Cloudflare Turnstile setup
- Global/user-specific key indicators
- Support for empty public_key (optional field)
OpenAI Admin UI Improvements
Prompt Profile Made Optional in Test Form
- Test prompt form no longer requires selecting a prompt profile
- Added "(none - test directly)" option as default in profile dropdown
- When no profile is selected, test runs with config defaults only
- System/developer instructions only applied when profile is explicitly chosen
- Allows quick testing of raw prompts without profile overhead
- Controller updated to handle nullable profile_id
- Model dropdown now shows config default_model when no profile selected: "(use profile default or gpt-4o-mini)"
- Max output tokens shows config default in placeholder
Model Selection Dropdowns
- Replaced all model input fields with dropdown selects
- Predefined list of common OpenAI models:
- GPT-4o (latest, multimodal)
- GPT-4o mini (fast, cost-effective)
- GPT-4 Turbo (vision, functions)
- GPT-4 (standard)
- GPT-3.5 Turbo variants
- o1 Preview and o1 Mini (reasoning models)
- Consistent dropdowns in:
- Test prompt section (model override)
- Config default model setting
- Add profile form
- Edit profile forms in table
- Prevents typos and ensures valid model names
- Clear labels: "(use config default)" or "(use profile default)"
Enhanced Input/Textarea Usability
- Increased textarea height for test prompt input (rows=6) for better visibility
- Made system_instructions and developer_instructions textareas taller (rows=6)
- Set explicit full width (100%) on all textareas for consistent layout
- Improved editing experience when managing prompt profiles
- Better visual consistency across all form sections
Dashboard & Services Integration
- Confirmed OpenAI Engine card is present in both Dashboard (/) and Services (/services)
- Permission check uses
openai.manage to control visibility
- Accessible only to users with proper admin permissions
- Consistent styling with other administrative features
- Direct navigation link to OpenAI configuration page
2026-02-10 (Late Night Update Part 2)
Dashboard & Services Synchronization
Unified Dashboard Experience
- Synchronized home dashboard (
/) with services page content
- Dashboard now shows all public services (RSS Feed Subscription, MCU Timeline, Documentation)
- Authenticated users see personalized administrative features based on their permissions
- Permission-based service cards (User Management, Firewall, RSS Config, API Keys, MCU Editor)
- Grid-based responsive layout for optimal viewing on all devices
- Improved visual hierarchy with consistent card styling
Enhanced Service Discovery
- Public services displayed prominently to all visitors
- Administrative services section visible only to authenticated users
- Permission checks ensure users only see features they have access to
- Direct navigation from dashboard cards to respective services
- Consistent styling between dashboard and services page
MCU Timeline Editor UI Improvements
Table Layout Optimization
- Removed fixed minimum width constraint for full-width responsive table
- Clickable ID column with blue color and bold styling for easy navigation
- Clickable title rows - click anywhere on title to edit entry
- Improved visual hierarchy with better spacing and hover states
- Maintains all filtering, pagination, and management features
2026-02-10 (Late Night Update)
MCU Timeline Editor
Complete Administrative System for Marvel Cinematic Universe Database
- Created comprehensive MCU timeline editor with full CRUD operations
- Added MCU database connection configuration using env variables
- Implemented permission-based access control (requires "mcu" permission)
- Timeline entry management with filtering by category, phase, and deleted status
- Pagination support (default 30 entries per page, max 100)
- Phase and category organization for all MCU content
Timeline Features
- Complete entry editing with all database fields:
- Basic info: Title, Extra Title, Category, Collection
- Timeline data: MCU Time, Premiere Date, Digital Release, Sort Order
- TV/Series info: TV Show flag, Animated flag, Season, Episode
- External links: IMDB ID, IMDB Episode ID, Distribution, Label Type
- Content: Keywords, Links (JSON), Content Information
- Edit history tracking with column-level change logging
- Soft delete and restore functionality
- Real-time updated timestamp on changes
Category Management
- Full CRUD for MCU categories
- Phase organization (MCU Phase 1, 2, 3, 4, 5, etc.)
- Custom background colors for visual categorization
- Sort order control
- Inline editing in table view
Collection Management
- Create and manage MCU collections (Avengers, Spider-Man, etc.)
- Assign entries to collections for grouping
- Simple collection naming system
Technical Implementation
- McuEditorController with dedicated database connection
- Separate views for index, edit, categories, and collections
- Fieldset organization for better UX
- History display (last 50 edits per entry)
- Permission middleware integration
- Added "MCU Editor" link to navbar (visible with permission)
- Services page integration with administrative section
Database Integration
- Connection to separate MCU database via env config
- Tables: timeline, category, collections, edithistory
- Automatic edit history logging on all changes
- Support for IMDB cache data and episode information
2026-02-10
UI/UX Improvements (Late Evening Update)
Form Input Dark Mode Styling
- Added proper dark mode styling for all form inputs (input, select, textarea)
- Form fields now have dark background with white text in dark mode
- Input background:
#0f172a (dark mode) / #ffffff (light mode)
- Focus state background:
#1e293b (dark mode) / #ffffff (light mode)
- Added smooth transitions for background and border colors
- Special styling for table inputs (RSS editor, Firewall editor, etc.)
- Form inputs now clearly visible with proper contrast in both themes
- Border color adapts to theme using CSS variables
- Labels use proper text color variables for visibility
UI/UX Improvements (Evening Update)
Theme Toggle in Admin Interface
- Added theme toggle button next to logout button in navbar
- Theme switch now available on all authenticated pages (not just welcome page)
- Toggle shows "☀️ Light" in dark mode and "🌙 Dark" in light mode
- Positioned right of logout button for easy access
Services Page Text Contrast Fix
- Fixed hardcoded dark colors (
#2c3e50, #666) in Services page
- All text now uses CSS variables (
var(--text-color))
- Proper contrast in both light and dark modes
- Service cards, titles, and descriptions properly visible in dark mode
- Administrative Features section text now readable
RSS Feed Listing Improvements
- Made ID column more prominent and clickable (font-size: 1.1rem, bold, blue)
- Title column also clickable now
- Improved table padding and spacing
- Better visual hierarchy with colors and font weights
- URLs truncated if too long (50 chars max with ellipsis)
- Site type displayed as styled badge
- "Last Scanned" column cleaned up (em dash for empty)
Navigation & User Experience
Simplified Dashboard Navigation
- Removed Users, Firewall, and RSS from navbar (already available in Services section)
- Login now redirects to
/ (home/dashboard) for all users
- Dashboard serves as unified control panel showing all available tools
- Cleaner navbar with only essential links (Home, Services, Contact, Documentation)
Dark Mode Support
- Session-based theme switching (light/dark)
- Toggle button on welcome page for theme switching
- NEW: Theme toggle now available in admin navbar (next to logout)
- CSS variables for all colors (dynamic theming)
- Smooth transitions between themes
- Dark theme colors:
- Page background:
#0f172a
- Card background:
#1e293b
- Text color:
#e2e8f0
- Input background:
#0f172a
- Input focus background:
#1e293b
- Border color:
#334155
- Light theme retains original color scheme
Theme Controller
- New
ThemeController for handling theme toggle
- Route:
POST /theme/toggle
- Session-stored theme preference persists across pages
2026-02-09
Authentication & Authorization
Permission System Implementation
- Implemented role-based access control using Spatie Laravel Permission package
- Created four core permissions:
users, firewall, rss, docs
- Added middleware-based permission checking on all protected routes
- Admin users (
is_admin = 1) bypass all permission checks
- Permission assignment interface in user editor
- "Add/Remove permission" functionality for granular control
User Management Improvements
- Admin checkbox for quick administrator promotion
- Permission management UI in user edit form
- Display of assigned permissions per user
- Session-based authentication with remember-me functionality
User Interface & Design
Unified Navigation System
- Created single navbar component (
partials/navbar.blade.php) used across all pages
- Fixed navbar positioning (sticky to top, no white space)
- Consistent dark blue gradient theme (
#2c3e50 to #34495e)
- Dynamic navbar content based on authentication state
- Permission-aware menu items (only show what user can access)
- "Tornevall Networks" branding for guests, "Tools API Admin" for authenticated users
Layout Consistency
- Removed white space gaps at top of all pages
- Standardized container spacing and padding
- Grid-based layout for services and contact pages
- Responsive design with mobile support
- Consistent card styling across platform
Page Updates
- Welcome page redesigned with hero section
- Services page with grid layout showcasing all tools
- Contact page now uses grid layout (was centered card)
- Login/Register pages with consistent navbar
- All admin pages use unified navbar
Documentation System
Markdown Documentation Engine
- Implemented Laravel-based Markdown documentation system
- CommonMark parser with syntax highlighting support
- Automatic table of contents generation from H2/H3 headers
- Support for code blocks, tables, lists, and links
- File-based routing:
/docs/{page} renders docs/{page}.md
Multilingual Support
- Swedish translations at
/docs/sv/{page}
- Language switcher in documentation
- Parallel English/Swedish documentation structure
Documentation Pages Created
- RSS Watch user guide (
rsswatch.md)
- MCU Timeline API guide (
mcu-api.md)
- Complete changelog (this file)
- All guides available in both English and Swedish
Documentation Navigation
- Added "Documentation" link to main navbar
- Documentation accessible from services page
- Footer links to documentation
- Breadcrumb navigation within docs
Database & Performance
RSS Database Optimizations
- Added
real_url column to urls table for URL aliasing
- Composite indexes on
urls table for scraper queries:
idx_urls_list on (deleted, protected, lastscrape)
idx_urls_scrape on (protected, deleted, noscrape, lastscrape)
idx_urls_lastrequest on (lastrequestfrom)
- Index on
inbound table for processing pipeline:
idx_fetch on (handled, processlock, registered, incomingidx)
idx_cleanup on (handled, registered)
- Content table indexes for feed generation:
idx_content_urlid_pub_ins on (urlid, pubdate, inserted)
idx_content_link_title_desc on (link, title, description)
idx_content_hash on (content_hash)
idx_content_link_hash on (link, content_hash)
Query Optimization
- Replaced N+1 entry count queries with single batched GROUP BY query
- Reduced feed listing from ~100+ queries to 2 queries
- Improved feed generation performance with optimized indexes
Migration System
- Laravel migrations for all database changes
- Version-controlled schema updates
- Rollback support for all migrations
Online Statistics
Session Tracking
- Real-time online user statistics
- Guest vs authenticated user tracking
- Session count display in footer
- Database-backed session storage for persistence
2026-02-08
RSS Feed System - Major Overhaul
History Tracking System
- Added
content_hash column (SHA1) to content table
- Automatic hash generation on insert:
SHA1(title|description|content)
- Full version tracking for all feed entries
- Duplicate prevention based on content hash
- Historical version storage with timestamps
Web Feed Viewer (/feed)
- Public RSS feed browser interface
- Feed listing with entry counts and last update times
- Individual feed view with pagination
- Per-entry view with direct links
- History mode toggle (
?history=1)
- Customizable posts per page (
?per_page=N)
- History limit control (
?history_limit=N)
Diff Visualization
- Side-by-side old vs new comparison
- Highlighted inline diffs with color coding:
- Green background for additions
- Red background for deletions
- Per-field diffs (title, description, content separate)
- GitHub/Bitbucket-style diff rendering
- Collapsible "Old vs New" sections
Edited Posts Search (/feed/{id}/edited)
- Find posts edited N times or more
- Filter by minimum change count
- Shows only entries with multiple versions
- Useful for tracking frequently-updated content
- Direct links to full post with history
URL Redirection
/out/{contentid} endpoint for safe external links
- Prevents referrer leakage
- Uses
real_url if available, falls back to url
- 302 redirect to actual content URL
API Enhancements
- JSON output mode (
?as=json) for all feeds
- History data in API responses
- Diff data available via API
- Feed metadata in responses
User Management
User Editor
- CRUD interface for user management
- Email, name, password fields
- Admin flag checkbox
- Permission assignment UI
- User listing with edit/delete actions
- Protected against self-deletion for logged-in user
Authentication Flow
- Login page with email/password
- Register page for new users
- Password hashing with bcrypt
- Session persistence with "Remember Me"
- Logout with CSRF protection
Firewall Management
Firewall Rule Editor (/firewall)
- Web interface for managing firewall rules
- Support for 9 firewall tables:
manualRules: Custom iptables rules
masquerades: NAT masquerading rules
trustFull: Fully trusted hosts
trustHost: Trusted hosts (limited ports)
trustInternal: Internal network hosts
trustNat: NAT forwarding rules
trustNet: Trusted networks
trustOther: Other trusted entities
trustPorts: Open ports configuration
- CRUD operations per table
- Delete via soft-delete (
deleted = 1)
- Edit existing rules inline
- Separate database connection to firewall DB
Database Configuration
- Environment-based firewall DB connection
- Supports remote firewall database
- Independent from main Tools DB
RSS Editor (/rss)
URL Management Interface
- List all RSS feed sources
- Add new feed URLs
- Edit existing feeds:
- URL and title
- Read interval (seconds between scrapes)
- Site type (rss, wp, json, html)
- Real URL for redirects
- UTF-8 flag
- Protected flag
- Category
- Delete feeds (soft delete)
- Shows entry count per feed
WordPress Integration
sitetype=wp for WordPress feeds
- Auto-converts
/feed to /wp-json/wp/v2/posts
- Fetches full content via WP REST API
- Better excerpt and content handling
2026-02-06
Session Management
Database Sessions
- Migrated from file-based to database sessions
sessions table with user_id, IP, user agent tracking
- Cross-domain session support
- Session persistence across deployments
- Better session debugging and monitoring
Session Configuration
- Dynamic session domain based on request host
- Cookie security settings
- Session lifetime management
- CSRF protection on all forms
Trusted IP System
IP Whitelist
trusted_ips table for IP-based access control
- Description field for IP documentation
- CIDR notation support planned
- Used for bypassing certain auth requirements
DNS Zone Permissions (Prepared)
Database Schema
dns_zone_permissions table created
- Links users to specific DNS zones
- Prepared for future DNS editor implementation
- Admin bypass for full access
Admin User Seeding
Default Administrator
- Created seeder for default admin user
- Email:
thorne@tornevall.net
- Password:
admin (should be changed on first login)
is_admin flag set to 1
- Auto-created on fresh installations
2026-02-05
Content Deduplication
Hash-Based Duplicate Detection
- SHA1 hash of title + description + content
content_hash column added to content table
- Prevents exact duplicate entries
- Allows tracking of content changes
Purge Duplicates API (/api/rss/purge)
- Identifies duplicate entries by hash
- Dry-run mode shows what would be deleted
- Confirmation mode (
?confirm=1) performs deletion
- Keeps newest entry, deletes older duplicates
- Returns statistics on purged entries
Database Indexing
- Added index on
content_hash for fast duplicate lookup
- Composite index on
link + content_hash
- Speeds up duplicate detection queries
Scraper Improvements
WordPress REST API Support
- Detects WordPress sites from
/feed URLs
- Converts to WP JSON API endpoints
- Fetches full post content and metadata
- Better handling of WordPress-specific fields
- Supports custom post types
Feed Processing Pipeline
- Process locking prevents concurrent processing
processlock flag in inbound table
- Automatic lock release after processing
- Handles JSON, XML, and HTML feeds
Error Handling
- Exceptions logged to
/tmp/canQueryExceptions.log
- Debug logging for failed content extraction
- Graceful handling of malformed feeds
2026-02-05 (Earlier)
Index Optimization
URLs Table
idx_urls_list: Fast feed listing
idx_urls_scrape: Optimized scraper queries
idx_urls_lastrequest: Prevent duplicate scraping
Inbound Table
idx_fetch: Find unprocessed entries quickly
idx_cleanup: Clean up old processed entries
idx_lock: Process locking efficiency
Content Table
idx_content_urlid_pub_ins: Feed generation sorted by publish date
idx_content_link_title_desc: Duplicate detection
idx_content_urlid: Join optimization
UTF-8 Handling
Encoding Fixes
- Auto-detection of encoding issues
- Conversion from ISO-8859-1 and Windows-1252
- BOM removal from content
- Character encoding validation
- Fallback to iconv for problematic strings
Pre-2026-02-05 (Foundation)
RSS Feed System
Core Architecture
- Three-table design:
urls, inbound, content
- URLs table: Feed source configuration
- Inbound table: Raw scraper data staging
- Content table: Normalized, processed entries
Feed Sources
- Support for standard RSS/Atom feeds (Laminas Feed Reader)
- JSON feeds with custom rulesets
- HTML scraping with XPath selectors
- Configurable read intervals per feed
Feed Generation
- Atom feed output (
/api/rss/feed/{site})
- JSON output mode
- Feed listing endpoint
- Agent status endpoint
- Entry counting and statistics
Scraper System
- Remote scraper bots fetch feed data
- POST data to
/api/rss/data
- Background processing via
/api/rss/update
- Automatic feed metadata updates
- Request deduplication by IP hash
Access Control
- Protected feeds with hostname restrictions
- Public vs protected feed separation
- Host-based access lists (comma-separated)
- Wrong host detection and blocking
MCU Timeline API
Core Features
- Complete Marvel Cinematic Universe timeline
- Chronological ordering of all content
- Phase-based organization (Phases 1-5)
- Category filtering: Movies, TV Shows, One-Shots, Web Series
- Collection support: Infinity Saga, Multiverse Saga
IMDB Integration
- Automatic IMDB data fetching
- Rating and vote count display
- IMDB links for all content
- Fallback when IMDB unavailable
API Endpoints
/api/mcu/timeline: Full timeline
/api/mcu/phase/{phase}: Filter by phase
/api/mcu/find/{keyword}: Search by title
/api/mcu/imdb/{imdbid}: Lookup by IMDB ID
- RSS feed support
Filtering
- By category (movie, series, oneshot, web)
- By distributor (Disney+, Netflix, Hulu, etc.)
- By phase or multiple phases
- By collection/saga
Initial Platform Setup
Laravel Framework
- Laravel 8.x base installation
- Dingo API for API routing
- Custom exception handling
- CORS support for API access
- Rate limiting (9000 req/min)
Database Design
- MySQL/MariaDB support
- Environment-based configuration
- Support for multiple database connections
- Migration system for version control
External Dependencies
- Laminas Feed Reader for RSS/Atom
- TorneLIB for network operations
- CommonMark for Markdown parsing
- Spatie Permissions for RBAC
Future Planned Features
DNS Management System
- Zone editor with SOA management
- DNSSEC support
- Dynamic DNS updates via rndc
- Zone templates
- User-level zone permissions
Enhanced RSS Features
- Webhook notifications on content changes
- RSS feed creation from arbitrary sources
- Content filtering and transformation
- Advanced search with full-text indexing
API Improvements
- GraphQL endpoint
- WebSocket support for real-time updates
- API key management
- Request analytics and usage statistics
Security Enhancements
- Two-factor authentication
- API key rotation
- Audit logging for all admin actions
- IP-based rate limiting per user
Maintained by: Tornevall Networks
Last Updated: 2026-02-09
Version: 1.0.0