Features & Capabilities
Modern Point of Presence management platform for global amateur radio networking
What You Can Do
Connect Globally
Multiple Points of Presence worldwide:
- Choose your preferred region
- Distributed edge locations
- North America, Europe, and beyond
- Low-latency connections
- Geographic redundancy
Create Network Tunnels
Set up WireGuard tunnels in minutes:
- Point-and-click tunnel creation
- Automatic key generation
- QR codes for mobile devices
- Ready-to-use configuration files
- Connect from anywhere globally
Get Public IP Addresses
Request and manage IP allocations:
- IPv4 address blocks
- Subnet allocation (/29 to /25)
- Instant approval for small allocations
- Public, routable IP addresses
- Bring Your Own IP (BYOIP) support
Easy Configuration Export
Download configs for your platform:
- One-click config generation
- Many platform formats supported
- Copy-paste ready configurations
- DHCP server configs included for additionally Routed IP's
- BGP routing configurations
Technical Features
Multi-Platform WireGuard Support
Generate configurations for 9+ platforms:
- EdgeRouter (Ubiquiti)
- MikroTik RouterOS
- OpenWrt
- pfSense/OPNsense
- Linux (systemd-networkd)
- Linux Network Namespaces
- macOS
- Docker containers
- Mobile (QR codes for iOS/Android)
Advanced Routing
Sophisticated routing capabilities:
- BGP dynamic routing with ASN management
- Static route configuration
- Subnet allocation management
- IPv4 and IPv6 dual-stack support
Security & Access Control
Enterprise-grade security features:
- Role-based access control (Admin, Operator, User)
- WireGuard key regeneration
- Email verification and password resets
- OIDC/OAuth integration support
- CSRF protection
- Audit event logging
User Management
Comprehensive user administration:
- User quotas and resource limits
- Self-service network requests
- Request approval workflows
- Auto-approval for qualifying requests
- API key management for automation
- Timezone-aware displays
Infrastructure Organization
Hierarchical resource management:
- Node groups for logical organization
- Nodes (physical/virtual servers)
- Interfaces (WireGuard, Loopback, Interconnect)
- Network allocation and subnetting
- ASN assignment and tracking
Automation & Integration
Built for automation:
- RESTful API (v1 and legacy)
- Email notifications with templates
- Automated configuration generation
- DHCP server configurations for Additionally routed prefixes
- Self-installing setup scripts
Changelog
-
Fix
Order request comments chronologically
- 2026-04-22
The comments relationship had no order_by clause so SQLAlchemy returned comments in UUID primary-key order, which is effectively random. Sort by created_at so the conversation reads oldest-first (newest comment closest to the Add Comment box).
-
Fix
Show request owner's username as plain text for ticket handlers
- 2026-04-22
The request header linked the username to the admin user view, which ticket handlers can't access. Wrap the link in a role check so only administrators and superadmins see the clickable link; ticket handlers see plain text instead of a link that 404s.
-
New
Add tunnels section to user resources card and turn summary badges into collapse toggles
- 2026-04-22
Tunnels show each tunnel's status and attached networks (direct addresses vs. subnets routed via static or BGP, with the ASN highlighted). Summary badges are now the collapse toggles for the detail tables, with a rotating chevron to signal state.
-
Fix
Surface timezone notifications where the dropdown can't cover them
- 2026-04-20
Swap the top-right toast for the top-center Bootstrap alert pattern already used elsewhere in the app so the success/error notification is not hidden behind the timezone select's own dropdown.
-
Fix
Save profile timezone immediately when the select changes
- 2026-04-20
The profile form's timezone select had no change handler, so picking a different timezone did nothing until the form was submitted (and there is no dedicated save button for it). Wire the existing TimezoneManager.changeTimezone() into a change listener on #timezone so the new value is POSTed to /account/api/timezone as soon as the user picks an option, matching the "save on change" behaviour intended by the API endpoint.
-
Fix
Exclude user sub-allocations from network counting
- 2026-04-15
Route all quota and resource counting through User.resource_count so consumers never special-case network vs other kinds, and apply the same filter to the Networks list header, dashboard stats, admin user menu counts, request creation handlers, and the quota_impact macro so users and handlers see a consistent allocation count everywhere.
-
New
Show user resources on admin request view
- 2026-04-15
Add a "User Resources" card to the request view page summarising the requester's existing networks, ASNs, tunnels, and pending requests with quota-aware badges, so administrators and ticket handlers can see what the requester already has before approving. Adds Network.is_top_level and User.top_level_networks/resource_count so the card excludes sub-allocations the user carved out of their own top-level allocations from both counts and the displayed list.
-
New
Add download button for tunnel configuration files
- 2026-04-15
Add a Download button next to Copy to Clipboard on the tunnel view page so users can save text configs directly as files.
-
New
Add version management, pyproject.toml, and changelog automation
- 2026-04-09
- Add VERSION file (semver, manual bump) as single source of truth - Add pyproject.toml with full PEP 621 metadata, simplify setup.py to shim - Move CHANGELOG_DATA.txt install from /etc/ to /usr/share/pop-controld/ - Use absolute path in features.py for reliable changelog reading - Update generate_changelog.py: group by month+author with branch creator attribution - Update debian/control with proper Maintainer/Uploaders format - Update debian/rules to read version from VERSION file - Add MANIFEST.in to include VERSION in sdist builds - Add .git check in Makefile before running changelog generation
- New Make Terms of Service URL configurable via admin config - 2026-04-02
- New Add Terms of Service link to footer - 2026-04-01
- Enhancement Add alembic.ini for database migrations - 2026-04-01
- New Add status to dynamic routing - 2026-03-21
-
New
add per-user rate limiting for request creation endpoints
- 2026-01-23
- Add LIMIT_REQUEST_CREATION constant (10 per hour, configurable) - Add get_current_user_id() for per-user rate limiting (fairer for shared IPs) - Apply rate limiting to UI routes: network_allocate, network_existing, asn - Apply rate limiting to API routes: request_asn, request_network_existing, request_network_allocation
- Fix correct config import in limiter.py - 2026-01-23
-
New
add rate limiting to authentication endpoints
- 2026-01-13
Add Flask-Limiter with Redis backend to protect auth endpoints from brute force and credential stuffing attacks.
- New add security response headers - 2026-01-14
- Fix remove traceback printing from API error handler - 2026-01-14
- Fix use allow list for dynamic query parameter filtering - 2026-01-13
- New add audit logging for authentication events - 2026-01-14
- Fix add CSRF token to timezone API call - 2026-01-13
- Fix use session for API key token instead of URL - 2026-01-13
- Fix add null check in api_load_user - 2026-01-13
- Fix add @login_required to /delete route - 2026-01-13
- Fix validate redirect URL after login - 2026-01-13
- New use gunicorn in dev script for HUP reload support - 2026-01-07
- Documentation add comprehensive README with development guide - 2026-01-06
-
Fix
MR !41 feedback - IPv6 /128 allocation and skip_ssl_verification config
- 2026-01-06
- Fixed IPv6 allocation back to /128 (was incorrectly changed to /64) - Added skip_ssl_verification config option for OIDC - SSL verification only skipped when BOTH debug=True AND skip_ssl_verification=True - Set debug=False in example config (production default)
- Fix set debug=False as secure default - 2026-01-07
- Fix clipboard copy for input elements (use .value property) - 2026-01-07
- Fix use data-clipboard-selector for Redirect URI copy button - 2026-01-07
- Fix use appconfigbool for debug check in User Maintenance visibility - 2026-01-07
- Fix remove US-first region sorting bias - 2026-01-07
-
Fix
use config-based SSL verification for OIDC discovery
- 2026-01-06
Replace automatic SSL fallback with explicit config option. SSL verification only skipped when BOTH debug=True AND skip_ssl_verification=True in [auth.oidc] section.
- Enhancement Update changelog for December 2025 - 2025-12-18
-
Uncategorized
chore(packaging): Simplify dependencies and add graceful reload
- 2025-12-18
- Simplify debian package dependencies (remove -dev packages) - Add ExecReload to systemd service for graceful worker reload - Use HUP signal to reload without dropping connections
-
New
feat(server): Improve error handling and debug mode support
- 2025-12-18
Backend improvements for better development experience and error handling:
-
New
feat(ui): Improve tunnel and ASN form templates
- 2025-12-18
Enhancements to model forms and list views:
-
New
feat(ui): Improve navigation and base template structure
- 2025-12-18
UI/UX improvements across the application:
-
New
feat(ui): Improve tunnel request interface with collapsible regions
- 2025-12-18
Enhances the tunnel request page with better UX for selecting nodes:
-
New
Add user maintenance tools for data cleanup
- 2025-12-18
Adds superadmin-only maintenance tools for handling data integrity issues:
-
New
feat(auth): Improve OIDC discovery and registration flow
- 2025-12-18
Enhances OIDC integration with better error handling and user experience:
-
New
feat(node): Add transport_ip field for WireGuard interconnect endpoints
- 2025-12-18
Adds a transport_ip field to nodes for specifying the public/WAN IP address used for WireGuard interconnect endpoints, separate from access_ips.
-
Documentation
update help documentation IP addresses and configuration examples
- 2025-12-02
Updated WireGuard configuration examples in help documentation: - Changed IP addresses from 192.168.x.x to 44.190.40.x (AMPRNet addressing) - Updated Endpoint to use 203.0.113.1 (RFC 5737 documentation IP) - Changed AllowedIPs default to 0.0.0.0/0 (route all traffic) - Added HTML table formatting for aligned inline comments - Fixed text: "network administrator" → "tunnel configuration" - Removed non-existent macOS .pkg installation method
- Fix restore correct oidc_secrets.json format with web wrapper - 2025-11-19
- Enhancement regenerate changelog with updated commit hashes - 2025-11-19
- Enhancement add changelog data tracking file - 2025-11-17
- Documentation add admin user approval guide to help section - 2025-11-17
- Fix set ASN properties before adding to session to avoid warnings - 2025-11-17
-
New
add debug routes and blueprint registry for development
- 2025-11-17
- Add blueprint registry for automatic route discovery - Add debug UI showing all registered routes - Provide development tools for route inspection
- New add support email configuration option - 2025-11-17
-
Refactor
improve UI route handlers and setup template
- 2025-11-17
- Enhance common UI utilities - Update account and help route handlers - Improve tools functionality - Refine setup template layout
-
Fix
update frontend JavaScript modules
- 2025-11-17
- Fix loading indicator behavior - Update password validation display
-
New
enhance server core functionality and template globals
- 2025-11-17
- Add get_asn template global function - Include sub-allocations in networks_by_owner - Improve query ordering for network hierarchy - Add site_name and other utility functions - Enhance API model and route handling
-
Refactor
update navigation and layout partials
- 2025-11-17
- Improve sidebar organization - Update footer and navbar styling - Enhance password requirements display - Add email verification warning partial
-
Refactor
improve various templates and UI consistency
- 2025-11-17
- Update base template and dashboard layouts - Enhance user guide documentation - Improve ASN and user list displays - Use dynamic site naming throughout templates - Fix minor styling and formatting issues
-
Fix
ensure client modified_at timestamp updates and improve forms
- 2025-11-17
- Explicitly update modified_at when client is updated - Add validation for empty tunnel names - Improve client add/edit form layouts - Add routing configuration partial
-
New
improve tunnel interface templates
- 2025-11-17
- Display location information (region/datacenter) in tunnel list - Show full public keys instead of truncated versions - Use dynamic site name instead of hardcoded values - Simplify tunnel forms and improve layouts
-
Fix
resolve ASN approval session warning and improve request UI
- 2025-11-17
- Fix session warning by adding ASN to session before setting properties - Display request name instead of ID in titles - Improve prefix notation formatting - Add audit event display for approved requests - Show ownership indicator for user's own requests
- New improve network allocation interface and add hierarchy depth tracking - 2025-11-17
- New enhance landing page with typewriter effect and improved styling - 2025-11-17
-
New
add audit event API and enhance admin configuration
- 2025-11-17
- Add audit event schema and API endpoints - Add support email configuration option - Improve admin configuration interface
- New enhance topology visualization with improved network details - 2025-11-17
-
New
add database rollback command to admin CLI
- 2025-11-17
- Add db-rollback command with target revision support - Include confirmation prompt for safety - Support rolling back to specific revisions or steps
-
New
implement modular user approval workflow
- 2025-11-17
- Add approval status fields to User model (pending/approved/rejected) - Create approval_required decorator for route protection - Add admin interface for managing pending users - Implement email notifications for approval/rejection - Add pending approval page for users awaiting approval - Configure approval requirement via users.require_approval setting - Support both OIDC and local authentication workflows
- Fix add oidc_secrets.json template for debian packaging - 2025-11-17
-
Fix
merge migration heads by chaining add_user_approval after add_callsign_001
- 2025-11-17
This migration merges two divergent migration branches: - Branch 1: ... -> c6d42a1091c0 -> ... -> add_callsign_001 - Branch 2: ... -> add_user_approval (now chained after add_callsign_001)
- Enhancement remove unused universal_search_content.html template - 2025-11-12
- New add BYOIP info card partial for network selection page - 2025-11-12
- New improve sidebar organization and update features page - 2025-11-12
- New add validation warnings for missing dependencies in node and node group forms - 2025-11-12
- New add public key and tunnel IP columns to list view and improve form layouts - 2025-11-12
- New modernize request forms with card-based layouts and improved styling - 2025-11-12
- New add network utilization display and validation to interface creation - 2025-11-12
- Fix explicitly delete client routing to ensure proper cascade cleanup - 2025-11-12
- New add --force flag to bypass password validation in CLI user creation - 2025-11-12
-
Fix
remove duplicate request blueprint that filtered to only pending requests
- 2025-11-12
- Remove duplicate blueprint registration that filtered requests by status == new - Fix issue where users could only see pending requests in their list - Users now see full request history including approved and rejected requests - Add add_context_func to interface blueprint for consistency
-
Fix
resolve BYOIP AttributeError and improve page styling
- 2025-11-12
Fix AttributeError when accessing enable_byoip config and enhance the BYOIP request page to match the polished design of other request forms.
-
Refactor
standardize list pages with universal search component
- 2025-11-12
Migrate all list pages from universal_search_content.html to universal_search.html for consistent search and filtering across the application.
-
New
add create-user command to admin CLI
- 2025-11-06
- Add create-user command to create new user accounts via CLI - Support username, email, password options - Support auto-password generation - Support verified and enabled flags
-
New
improve navigation and login redirect flow
- 2025-11-06
- Move Home link from sidebar to footer as "Landing Page" - Remove Home link from sidebar navigation for authenticated users - Redirect users to tunnel list after successful login - Landing page always accessible via footer link
-
Fix
resolve ESLint errors in frontend JavaScript
- 2025-11-06
- Remove unused variables in timezone.js - Replace jQuery tooltip initialization with Bootstrap 5 native API - Add bootstrap global declarations to resolve undefined references - Export utility functions for potential future use
-
New
make email notification checkbox more prominent on tunnel creation
- 2025-11-05
- Changed to larger toggle switch style - Added primary blue border and background tint - Increased label font size and weight - Made label and checkbox clickable with cursor pointer - More visually prominent to catch user attention
-
Fix
show My Infrastructure section only for operators
- 2025-11-05
- Removed check for owned infrastructure - Only users with operator role can see the section - Ensures proper role-based access control
- Fix add missing steal action handling in admin request view - 2025-11-05
- Enhancement update configuration defaults - 2025-11-05
-
Enhancement
enhance Debian packaging configuration
- 2025-11-05
- Added redis-server as package dependency - Include CHANGELOG_DATA.txt in package installation - Fixed config file ownership for pop-controld user - Added pop-controld-worker service support - Added pop-controld-worker systemd service file
- Enhancement add request import to API module - 2025-11-05
-
Refactor
update OIDC configuration management
- 2025-11-05
- Streamlined OIDC config file handling - Improved JSON configuration updates
-
Enhancement
add debug logging for OIDC profile data
- 2025-11-05
- Log full OIDC profile only when debug mode enabled - Added audit logging import for future enhancements
-
New
expand features page with detailed capability cards
- 2025-11-05
- Added "What You Can Do" section with feature cards - Detailed descriptions of global connectivity options - Secure tunnel creation workflow highlights - Public IP address allocation information
-
Refactor
improve sidebar layout with CSS variables
- 2025-11-05
- Added CSS variable for sidebar width consistency - Fixed sidebar height to full viewport - Updated content wrapper margin calculations
-
Fix
improve clipboard copy functionality
- 2025-11-05
- Prevent double-initialization of clipboard buttons - Add no-debounce class to prevent form submission interference - Fix selector string concatenation in tunnel view - Add error handling for empty or missing content
-
New
add IP address lookup documentation to user guide
- 2025-11-05
- Added new section with /myip endpoint usage examples - Included curl commands and jq filtering examples
-
New
add /myip API endpoint for IP address lookup
- 2025-11-05
- Returns JSON with client's IP address - No authentication required - Handles proxy headers and strips IPv4-mapped IPv6 prefix
-
New
display user IP address in footer
- 2025-11-05
- Added client_ip() template global that handles proxy headers - Strips IPv4-mapped IPv6 prefix for cleaner display
- Fix correct callsign field alignment in user profile - 2025-11-05
-
Fix
Add missing fallbacks for config sections to prevent crashes
- 2025-11-03
- Add fallback for auth.oidc scopes config - Add fallbacks for all email section configs (from, host, port, starttls, username, password, signature) - Prevents NoSectionError when email section is missing from config.ini - Ensures admin configuration page loads even with minimal config
-
Fix
Add fallback for missing OIDC config section
- 2025-11-03
- Fix ConfigParser NoSectionError when auth.oidc section doesn't exist - Add fallback=None to config.get() call to handle missing sections gracefully - Prevents 500 error on /admin/configuration page when OIDC not configured
-
Enhancement
Add default placeholder configuration values
- 2025-11-03
- Populate example config with sensible defaults and placeholders - Uncomment required sections to prevent config getter crashes - Standardize comment style to use # instead of ;
-
Fix
Update ARDC URL and add null check for node group
- 2025-11-03
- Change setup.py URL from ardc.org to ardc.net - Add null check for node.group in audit log to prevent AttributeError
-
New
Add OIDC external ID management for users
- 2025-11-03
- Add confirmation modal when changing user OIDC external ID - Restrict external ID field to superadmin role - Add user_form partial with OIDC external ID field - Create reusable OIDC change confirmation modal template - Add JavaScript handler to prevent accidental changes
-
New
Add OIDC auto-configuration with endpoint discovery
- 2025-11-03
- Add discover_oidc_endpoints() to auto-discover OAuth endpoints - Auto-generate redirect URI from base URL - Update OIDC JSON config file with client credentials - Read and display OIDC credentials in admin UI - Improved admin configuration template with client ID/secret fields - Add copy button for redirect URI - Better sectioned layout for OIDC settings
-
New
Improve database constraint error messages
- 2025-11-03
- Parse constraint names from PostgreSQL errors - Display specific field names in conflict messages - Provide more helpful user-facing error messages
-
New
Add OIDC session cookie configuration and error handling
- 2025-11-03
- Configure session cookies for OIDC OAuth redirects - Allow insecure cookies in debug mode for development - Add OAuth error handler with user-friendly messages - Handle email verification and access denied errors
-
Refactor
Clean up frontend JavaScript code
- 2025-11-03
- Remove unused variable in clipboard.js - Add global Set declaration for debounce.js linting - Fix regex escaping in password-validation.js - Simplify Object.entries usage in table-sort.js
- Build Add --platform linux/amd64 to dpkg target for cross-platform builds - 2025-11-03
-
Uncategorized
Add callsign field with OIDC sync support
- 2025-10-31
- Add callsign column to users table via migration - Update User model with callsign field - Sync callsign from OIDC profile during authentication - Add callsign field to user edit form and view page - Handle callsign in user controller for form submissions - Improve OIDC sync to allow login on username/email conflicts - Log sync conflicts and show warning instead of blocking login
-
Uncategorized
Add IPv6 support to subnet calculator
- 2025-10-31
- Implement full IPv6 CIDR calculations with 128-bit BigInt math - Add IPv6 subnet planning and splitting functionality - Update subnet modal to display IPv6-specific information - Support IPv6 address compression and expansion - Handle both IPv4 and IPv6 on same interface
-
New
Implement tunnel save confirmation modal and improve key regeneration workflow
- 2025-10-30
- Add save confirmation modal to review changes before tunnel save/update - Change key regeneration to populate form fields instead of direct save - Store regenerated private keys in session to display once after save - Replace network multi-select with checkbox interface for better UX - Extend search/filter to support grid view cards in addition to tables - Move action buttons below tunnel name in view page - Add success alerts when keys are regenerated to remind user to save
-
Enhancement
update development tools and configuration
- 2025-10-30
- Enhance changelog generation script with improved formatting - Update HTTPS development server script with better configuration - Update configurations README with latest documentation
-
New
modernize UI templates and enhance account management
- 2025-10-30
- Add API key management interface with create/edit/view capabilities - Enhance account settings page with improved layout - Modernize base template with updated navigation and styling - Improve dashboard with better information hierarchy - Add comprehensive user guide documentation - Enhance landing page and error pages with better UX - Update sidebar navigation with cleaner structure - Improve request templates with better form layouts - Streamline menu templates across all model types - Add features page with capability overview - Update footer with improved styling
-
New
improve controllers, models, and schema handling
- 2025-10-30
- Add enhanced ASN and client controller functionality - Improve notification controller with better error handling - Enhance request controller with additional validation - Update interface schema with improved field handling - Add better model validation for ASN and client objects - Update cleanup CLI command with improved logic
-
New
enhance model view and list templates with improved layouts
- 2025-10-30
- Modernize view pages with card-based layouts and better information hierarchy - Improve list templates with enhanced styling and better data presentation - Add consistent formatting across all model types - Enhance audit event display with better formatting - Improve tunnel, node, client, ASN, network, and user view pages - Add better visual separation and readability to all list views
-
New
add frontend JavaScript modules for enhanced interactivity
- 2025-10-30
- Add searchable-owner.js for dynamic owner search and selection - Add table-filter.js for client-side table filtering - Update common.js with shared utility functions - Improve user experience with live search and filtering capabilities
-
New
enhance form UX with auto-naming and owner selection
- 2025-10-30
- Add auto-naming support for ASN and network forms - Calculate next index based on existing resources and pending requests - Fix null/None handling in next index calculation - Improve searchable owner select partial with better styling - Add helper text to form fields for better user guidance - Ensure auto-naming works for both user and admin flows
-
New
enhance admin interface with new tools and settings
- 2025-10-30
- Add data integrity scanner for database health checks (superadmin only) - Add Redis configuration options to settings page - Add API keys enable/disable toggle to settings - Add configurable TTL settings for email queue (result and failure) - Restrict configuration page to superadmin role only - Add admin tools UI module for specialized administrative functions - Display queue TTL information in email queue status page
-
Refactor
replace individual delete pages with shared modal
- 2025-10-30
- Add reusable delete_modal.html partial for all delete confirmations - Remove individual delete.html templates from all model directories - Simplifies deletion UX with consistent modal-based confirmation - Reduces code duplication across 8 model types
-
New
add superadmin role and improve audit logging
- 2025-10-30
- Add SUPERADMIN role to User model with elevated privileges - First admin user created via CLI automatically gets SUPERADMIN role - Subsequent admins get ADMINISTRATOR role only - Add system user support for audit events (replaces None user) - Update CLI commands to use system user for audit logging - Add migrations for superadmin role and audit event username preservation - Display superadmin status in admin list command
-
New
Modernize request forms with card layouts and enhanced UX
- 2025-10-24
Updated tunnel and ASN request forms to match the modern design of network request forms, improving visual consistency and user experience.
-
New
add BIRDC BGP configuration generation
- 2025-10-24
- Create birdc.py module for generating BIRD BGP configurations - Support IPv4 and IPv6 BGP sessions over WireGuard tunnels - Include import/export filters with BGP path validation - Configure next hop settings for advertised networks - Add admin toggle to enable/disable BIRDC config display - Integrate BIRDC config generation into tunnel config output - Display complete copy-pasteable BIRDC config for BGP tunnels - Fix IPv4Interface/IPv6Interface string conversion in config generation
-
New
redesign network allocation page with improved UX
- 2025-10-24
- Convert to card-based layout with visual hierarchy - Add "Selected Network Pool" card showing chosen network - Add "Network Request Details" form card - Style request button with blue gradient - Add comprehensive subnet sizing guidance panel - Explain /29 as recommended starting point - Highlight ability to request more IPs later - Include subnet calculation examples - Improve responsive layout with wider info panel - Add icons throughout for better visual navigation
-
New
improve form UX with auto-naming and styled helper text
- 2025-10-24
- Add reusable calculate_next_index() helper for consistent auto-naming - Implement auto-naming for tunnels (Tunnel 1, Tunnel 2, etc.) - Implement auto-naming for networks (Network 1, Network 2, etc.) - Implement auto-naming for ASN requests (ASN Request 1, etc.) - Style helper text in blue (text-primary) for better visibility - Move regenerate keys button into WireGuard form card - Add modal confirmation for preshared key regeneration - Add ASN requirement warning for BGP routing
-
New
Reorganize sidebar navigation and improve template UI
- 2025-10-23
- Reorganize sidebar: Move 'My Resources' to top for all users - Add visual separator (light blue line) before admin sections - Reorder admin sections: Ticket Management first, then Infrastructure, then Administration - Add fa-fw class to all sidebar icons for consistent text alignment - Fix admin_exists naming conflict in setup (renamed to has_admin) - Move 'Initial Configuration' section to only show when no admin exists - Improve template consistency across all views - Update styles for better visual hierarchy
-
New
Improve navigation and development experience
- 2025-10-24
Enhanced sidebar navigation and developer tooling: - Collapsed sidebar sections by default for cleaner initial state - Added Email Queue link to admin navigation - Implemented debug-only cache-busting for faster development - Improved sidebar scrollbar visibility with better styling - Added iOS-specific touch feedback improvements
-
New
Improve audit performance and permission handling
- 2025-10-24
Optimized database queries and enhanced permission feedback: - Added user_map to prevent N+1 queries when displaying audit events - Pre-fetch all users in a single query for audit event displays - Improved role_required decorator to handle list arguments - Added flash message when users lack permissions
-
New
Improve dashboard and request UX
- 2025-10-24
Enhanced user interface for better usability and information display: - Improved button layout and spacing on dashboard - Added client count column to user list with sortable badges - Auto-populate ASN request names with sequential numbering - Calculate next ASN index based on existing ASNs and pending requests
-
New
Preserve user information when users are deleted
- 2025-10-24
When a user who handled requests is deleted, preserve their username for audit trail purposes. Changed handler relationship to SET NULL on delete and added handler_username field to store the username.
-
New
Add current_year template global function
- 2025-10-24
Added a template global function to provide the current year for use in copyright notices and other date-related displays throughout the application.
-
Performance
Optimize base template performance and UX
- 2025-10-24
Improved page load performance and user experience with several frontend optimizations.
-
New
Add successful emails view to queue dashboard
- 2025-10-24
Enhanced email queue monitoring to show all email statuses including successful deliveries, not just failed emails.
-
New
Add asynchronous email queue with Redis and RQ worker
- 2025-10-24
Converted email sending from synchronous SMTP to asynchronous background processing using Redis Queue (RQ). This prevents email sending delays from blocking web requests and improves application responsiveness.
-
Enhancement
Remove unused bpython dependency
- 2025-10-24
bpython was listed as a dependency but not actually used. The CLI shell uses Python's standard code.interact() instead due to compatibility issues with bpython 0.24.
-
New
implement cache-busting and improve loading indicators
- 2025-10-24
Frontend caching and UX improvements: - Added timestamp-based cache-busting for JavaScript bundles - Disabled static asset caching during development for easier testing - Re-enabled page loading indicators with simplified logic - Removed no-loading class checks to reduce complexity - Added no-debounce class to user dropdown to remove Loading indicator
-
New
add database indexes for audit events and fix migration chain
- 2025-10-24
Added performance indexes and resolved migration dependency issues: - Created indexes on audit_events.created_at and audit_events.user_id for faster queries - Fixed migration chain to create proper linear history without branches - Updated c6d42a1091c0 to depend on 99be6ab1d477 for correct migration order
-
New
improve audit events UI and fix N+1 query performance
- 2025-10-24
Enhanced the audit events list with clickable rows and optimized database queries: - Removed actions column and made entire table rows clickable for better UX - Added visual feedback with blue text and pointer cursor on hover - Fixed N+1 query problem by pre-fetching all users in a single batch query - Reduced database queries from 100+ to just 2 for improved page load performance
-
Fix
improve tunnel edit page header visibility and remove test latency button
- 2025-10-23
- Removed gradient background from tunnel edit page header for better readability - Changed header text from white to default color for consistency with other pages - Moved menu include inside container for proper layout - Removed Test Latency button from sidebar (feature code is on separate branch)
-
New
strip whitespace from all user form inputs across application
- 2025-10-23
- Authentication: Strip username during login and password reset lookup - User management: Strip username and email during registration and profile updates - Resource names: Strip whitespace from network, ASN, tunnel, node, node group, and interface names - Updated nullable_string() utility to automatically strip all string inputs - Prevents data inconsistencies and authentication issues from accidental spaces - Maintains 'fail loudly' principle - only strips if value exists and is a string
-
New
enhance request confirmation messages with requested resource details
- 2025-10-23
- Network allocation requests now show name and prefix length in confirmation - Network requests (BYOIP) now show name and network in confirmation - ASN requests now show ASN number (if provided) or 'ASN allocation' with name - Users get clear feedback about exactly what they requested
-
New
improve UI visibility for tabs and sidebar scrollbar
- 2025-10-23
- Enhanced tab navigation styling with darker backgrounds and better contrast - Made inactive tabs more visible with #f8f9fa background and #495057 text - Added hover effects with primary color highlighting - Implemented custom scrollbar styling for sidebar with darker, more visible thumb - Added smooth transitions and hover states for better user experience
-
Fix
Clean up frontend imports and update dev tools to localhost
- 2025-10-23
- Remove broken ping.js import from common.js (file no longer exists) - Re-enable loading.js to provide page navigation feedback - Update development tools to use localhost instead of 44.33.7.8: - generate_dev_ssl.sh: SSL cert now for localhost - register_user.py: Default base URL changed to localhost - run_dev_https.sh: Flask now runs on localhost
-
New
Add clipboard copy functionality for config snippets
- 2025-10-23
- Add clipboard.js module with copy-to-clipboard functionality - Add copy button support with visual feedback - Update common.js to include clipboard utilities - Enables easy copying of WireGuard configs, API keys, and other text snippets
-
New
Reorganize sidebar navigation and improve template UI
- 2025-10-23
- Reorganize sidebar: Move 'My Resources' to top for all users - Add visual separator (light blue line) before admin sections - Reorder admin sections: Ticket Management first, then Infrastructure, then Administration - Add fa-fw class to all sidebar icons for consistent text alignment - Fix admin_exists naming conflict in setup (renamed to has_admin) - Move 'Initial Configuration' section to only show when no admin exists - Improve template consistency across all views - Update styles for better visual hierarchy
-
New
Add MTU configuration support to models and controllers
- 2025-10-23
- Add MTU parameter handling in client.py config generation (9 instances) - Update interface, node, and network models for MTU support - Add MTU configuration to controllers for interfaces and nodes - Update interface add/edit template with rand_id parameter fix - Enhance configuration templates for proper MTU handling
-
New
Add MTU configuration support across all platform configs
- 2025-10-23
- Add MTU parameter support to Docker, EdgeRouter, Linux, Linux Namespace, macOS, MikroTik, OpenWRT, pfSense, and wg-quick configurations - Ensures consistent MTU handling across all supported platforms - Improves network performance and compatibility
-
Fix
Allow sessions for browser-based API calls in ping endpoint
- 2025-10-16
The CustomSessionInterface was disabling sessions for all API routes, which caused 500 errors on endpoints like /api/v1/nodes/ping-info that use @login_required. Browser-based API calls need session auth, while API key requests should disable sessions.
-
Fix
Add missing AsnRequest export to models/__init__.py
- 2025-10-15
Added AsnRequest to the models module exports that was missing after merge.
-
Refactor
Improve tunnel view template and add filter utilities
- 2025-10-15
Enhanced tunnel view with details_card macro and added filter utilities.
-
New
Add CLI commands, topology views, developer tools, and reusable templates
- 2025-10-15
Added comprehensive new functionality including admin CLI, topology visualization, developer tools, and reusable template components.
-
Enhancement
Update configuration and ignore files
- 2025-10-15
Updated development configuration and gitignore patterns.
-
New
Enhance email verification and improve routing
- 2025-10-15
Improved email verification template, user management, and routing logic for better functionality and user experience.
-
New
Add password strength indicator and improve account forms
- 2025-10-15
Enhanced password reset and account creation forms with real-time password strength validation and improved user experience.
-
New
Add pending request visibility and simplify landing page
- 2025-10-15
Enhanced dashboard to show pending resource requests alongside existing resources, and streamlined the landing page for better user experience.
-
Refactor
Simplify and improve model view templates
- 2025-10-15
Streamlined model view templates for better maintainability and consistency.
-
New
Improve UI styling and sidebar navigation
- 2025-10-15
Enhanced sidebar navigation and overall UI styling for better user experience.
-
Performance
Eliminate FOUC and improve page load performance
- 2025-10-15
Implemented comprehensive solution to prevent Flash of Unstyled Content (FOUC) and significantly improve perceived page load performance.
-
New
Add features page with dynamic changelog support
- 2025-10-08
Add features showcase page: - Public features page at /features (no login required) - Comprehensive feature showcase across 6 categories - Dynamic changelog parser that reads from CHANGELOG_DATA.txt - Organized by month with expandable accordion - Color-coded badges for different change types (New, Fix, Enhancement, etc.) - Support for multi-line commit descriptions - Link from homepage to features page - Separated features logic into dedicated features.py module
-
New
Add frontend utilities and enhancements
- 2025-10-08
Add JavaScript utilities: - Debounce function for input throttling - Loading state management - Table sorting functionality - Timezone display utilities - Tooltip utilities for improved UX - Debounce styling
-
New
Add dashboard, help system, and UI navigation components
- 2025-10-08
Add new UI components: - Dashboard with user overview and quick actions - Tunnel and network summaries - Recent activity display - Help system with user guides and setup documentation - Universal header with user menu and notifications - Sidebar navigation for authenticated users - Universal search functionality across resources - Flash message system for user feedback - Layout templates for consistent design - Request list view improvements - Landing page base template for public pages
-
New
Improve setup page and admin creation workflow
- 2025-10-08
Enhance administrator account creation: - Setup page accessible without login for initial admin creation - After first admin, requires admin login to create additional admins - Link in admin configuration page to create additional admins - Clear status indicators for database, admin, email, security - Next steps guide for new installations - Password confirmation validation - Card-based UI with icons and status badges - Integration with existing authentication system - Redirect flow based on admin existence
-
Refactor
Convert relative imports to absolute and apply code formatting
- 2025-10-08
- Convert all relative imports to absolute imports throughout codebase - Apply Black code formatting (4-space indentation, double quotes) - Update all Python files in controllers, models, server, migrations - Update all Jinja2 templates with formatting improvements - No functional changes, only code style improvements
-
Enhancement
Revert network allocation subnet display
- 2025-10-08
Reverted temporary change to show usable IPs in subnet dropdown
-
New
Add user roles and timezone migrations
- 2025-10-08
- Add user and ticket_handler roles to User model - Add timezone column to users table for time display preferences
-
New
Integrate configuration modules and add routing networks support
- 2025-10-08
Update WireGuardClient.config() to: - Use new modular configuration generators - Pass routing networks to all platform configs - Conditionally generate configs based on admin settings - Support all 9 platform configurations
-
New
Add platform configuration toggles to admin settings
- 2025-10-08
Add enable/disable controls for WireGuard configuration platforms: - Toggles for EdgeRouter, MikroTik, OpenWrt, pfSense, Linux, macOS, Docker - Settings stored in config.ini under [wireguard_clients] - All platforms default to enabled - Allows testing/disabling individual platform configs
-
New
Add WireGuard tunnel key regeneration feature
- 2025-10-08
Add ability to regenerate WireGuard keypairs for existing tunnels: - New 'Regenerate Keys' button on tunnel edit page - Generates new private/public key pair - Displays new private key with download options - Shows updated configurations (wg-quick, EdgeRouter, etc.) - Logs regeneration action in audit events - Enhanced template with download button for bash scripts
-
New
Add multi-platform WireGuard configuration generators
- 2025-10-08
Add configuration modules for multiple router and OS platforms: - EdgeRouter: CLI config with routing, DHCP, firewall, MSS clamping - MikroTik: RouterOS commands with bridge, routing table, DHCP - OpenWrt: UCI commands with firewall and DHCP - pfSense/OPNsense: WebGUI step-by-step instructions - Linux: systemd-networkd configuration - Linux-Namespace: Self-installing script for namespace-based routing - macOS: WireGuard app configuration - Docker: docker-compose and docker run configurations - wg-quick: Moved to dedicated module for consistency
- License License AGPL_V3 - 2025-09-08
- Refactor Move handler handling to controllers - 2025-09-01
- New Add commenting capabilities on requests - 2025-09-01
- New Add admin commenting capabilities - 2025-09-01
- New Add ticket handling indcators - 2025-09-01
- New Models for request handling + discussion - 2025-09-01
- Fix Resolve a typo in the new tunnel email - 2025-08-08
- Fix Send emails on tunnel creation when requested (Resolves #28) - 2025-08-08
-
Fix
Resolve issues when creating a single-stack interface
- 2025-07-19
Resolves an error that would occur when there are no IPv4 or IPv6 interface networks
-
New
Add autoapproval for network allocation requests
- 2025-07-19
Resolves #19
-
New
Add autoapproval support for private ASNs
- 2025-07-19
Resolves #18
-
Fix
Sort available interfaces alphabetically on the request screen.
- 2025-07-19
Resolves #22
- Fix Remove random kind output on interface add/edit screen - 2025-07-19
- Fix Enforce unique Wireguard ports on a node - 2025-07-16
-
Fix
Resolve issues with model blueprint generator when calling create/update functions
- 2025-07-16
Introduced by !18
-
Fix
Resolve server error when an interface is out of IP allocations.
- 2025-07-16
Resolves #26
- Fix Correctly pass the database session to the `delete_user` call - 2025-07-15
- Fix Resolve exception when creating a new account - 2025-07-12
- New Update APIv1 for updates related to auditing - 2025-07-12
- New Add audit logs for delete events - 2025-07-12
-
New
Implement audit event logging
- 2025-07-10
Will log events (add/update/delete) that take place within the system.
-
Fix
Set button type for the generate PSK feature
- 2025-07-10
Reoslves an issue where pressing enter on the form results in a new PSK being generated
- Enhancement Update default config file examples - 2025-05-30
- Fix Resolve error on network add screen - 2025-05-30
-
Fix
Ensure account-related routes are correct
- 2025-05-29
This includes registering the OIDC routes with the /account prefix
- Fix Add CSRF token to request handling form - 2025-05-26
- Fix Resolve error when loading a tunnel with static routing - 2025-05-22
- Fix Do not quote extra gunicorn args - 2025-05-21
- Enhancement Add pyproject.toml to avoid warning during build - 2025-05-21
- New Switch to Gunicorn - 2025-05-21
-
New
Add API keys
- 2025-05-11
Resolves #4
- Fix Disable CSRF on all children API blueprints - 2025-05-11
-
New
Add Preshared Key generation
- 2025-05-11
Resolves #7
-
New
Show node ASN when BGP routing is enabled
- 2025-05-11
Resolves #5
- Refactor Cleanup custom session interface - 2025-05-11
- Fix Import correct package for CSRF - 2025-05-11
-
New
Disable session authentication for API endpoints
- 2025-05-11
This will protect against CSRF attacks
- New Add CSRF protection (#8) - 2025-05-11
- Fix Ensure the migrate script is included in the build - 2025-05-09
- New Add `migrate` command to the help script - 2025-05-09
- Fix Resolve error on Python 3.11 (`in` not supported on StrEnum) - 2025-05-09
- New Migrate user tunnel quotas - 2025-05-07
- Fix Display the correct quotas on the user view screen - 2025-05-07
- New Show and manage resource quotas - 2025-05-07
- New Add resource quotas - 2025-05-07
-
Fix
Properly validate altcha challenge on POST requests
- 2025-04-21
Also properly format 400 error pages
-
New
Show selected networks and ASNs on tunnel screen
- 2025-04-20
Allows the user to edit their tunnel without removing admnin-selected ASN or networks
- New Add /api/v1/admin/users endpoint - 2025-04-20
-
New
List all available ASNs on administrative client routing screens
- 2025-04-16
This matches the behaviour of the routed network selection list.
- Refactor Clean up code and ensure consistency between UI and API - 2025-04-14
-
Enhancement
Update build process
- 2025-03-02
- Added new makefile functions - Generate the frontend assets during the build process
- New Store migration ids in a separate field - 2025-02-11
- Fix Resolve error when email has no attachments - 2025-02-26
-
New
Improve client management
- 2025-02-12
- Improve user interface - Add support for sending email after tunnel creation - Allow admins to have the system generate a client's private key
- New Add migration from legacy dashboard - 2025-01-19
- Fix Show access_ips on node group view page - 2025-01-19
- Fix Pre-select active routed networks when editing a client - 2025-01-19
- Enhancement Admin UI fixes - 2025-01-19
- New Admin UI improvements - 2025-01-19
- New Ensure that an OIDC user's email is verified - 2025-01-18
- New Add OIDC support - 2024-11-02
- New Debian build + bug fixes - 2024-10-29
- New Add node token generation - 2024-10-20
- New Add password reset - 2024-10-20
- New Allow users to delete their own networks and asns - 2024-10-20
- New Load private ASN range from configuration - 2024-10-20
- New Email notifications on request creation, approval and rejection - 2024-10-20
- Fix Do not delete parent networks when requests are deleted - 2024-10-20
- New User account management - 2024-10-20
- New Email notifications - 2024-10-20
- New Add configuration + sample client configuration - 2024-10-19
- New Add Altcha validation - 2024-10-14
- New Add user registration - 2024-10-14
-
New
Add node inteconnection
- 2024-10-11
Implement interconnection between nodes.
- New Support legacy status update API - 2024-09-27
- Fix Fix page titles on client interface - 2024-09-02
- New Add user interface for managing client routing - 2024-09-02
- New Add client routing backend support - 2024-09-01
- Fix Fix tunnel creation for non-admin - 2024-08-22
- New Display SQL errors during approval - 2024-08-22
- New Add user network and asn requesting - 2024-08-22
- Fix Fix bugs - 2024-08-18
- Fix Fix rendering with empty access_ips - 2024-05-12
- New Tunnel management - 2024-05-12
- New Work on client frontend - 2024-04-28
- New Add interface for enabled field - 2024-04-21
- New Add fields missing from legacy Dashboard and work on the legacy Node APIs - 2024-04-21
-
New
Implement legacy node API
- 2024-04-20
Provide compatibility with the existing popd until a new architecture is decided.
- New Do not delete an ASN still referenced by a node group - 2024-04-20
- New Add ASN endpoint - 2024-04-20
- New Add client delete - 2024-04-20
- Refactor Move user controller functions into their own file - 2024-04-20
- New Add API endpoints - 2024-04-20
- Fix Hide access ips column on small screen on node list - 2024-04-17
- New Update table styling - 2024-04-17
- Fix Handle null node access ips on node group view - 2024-04-17
- Fix Handle null node access ips on node list - 2024-04-17
- Fix Handle null node access ips - 2024-04-17
- Fix Typo on loopback interface settings - 2024-04-17
- New Client resource management - 2024-04-16
-
New
New resource buttons
- 2024-04-14
Apply consistent wording
- New Select prefix sizes when creating interfaces - 2024-04-14
- New Begin implementation of adding interfaces - 2024-04-14
- New Interface updating/deleting - 2024-04-12
- New Node management - 2024-04-11
- New Work on node form components - 2024-04-10
- New Add node group management - 2024-04-10
- New Add subnetwork allocation - 2024-04-08
- New Network management - 2024-04-08
- New Add node group - 2024-04-07
- New Route organization - 2024-04-07
- New Being flask restructure - 2024-04-07
- New Data structures and UI work - 2024-04-06
- New Data structure implementation - 2024-04-05
- New Work on data structures - 2024-04-05
- New Initial commit - 2024-04-04