1. 17 Apr, 2026 35 commits
    • Your Name's avatar
      v0.99.32 - Fix OAuth authentication UI and restore full functionality · 7fdaca09
      Your Name authored
      - Fixed duplicate authentication area in providers dashboard
      - Restored full OAuth authentication with popup windows for all providers
      - Added missing JavaScript authentication functions (authenticateClaude, authenticateQwen, authenticateCodex, authenticateKilo)
      - Added missing backend endpoint /dashboard/providers/{provider_name}/auth/check
      - Fixed import errors and attribute access for OAuth provider configs
      - Fixed credential structure access for each OAuth provider type
      - Fixed polling status responses (approved -> completed)
      - Added human-readable expiration time formatting (days, hours, minutes, seconds)
      - All OAuth flows now work with proper popup windows, polling, and status updates
      7fdaca09
    • Your Name's avatar
      Update version 0.99.31 · e7663cb5
      Your Name authored
      e7663cb5
    • Your Name's avatar
      fix: restore dashboard functionality and add response cache page · 0a61873a
      Your Name authored
      - Restore Rate Limits and Response Cache links in analytics page for admin users
      - Add detailed Optimization Savings section with token and cost breakdown
      - Fix JavaScript syntax error in rate limits page
      - Add response cache dashboard page with statistics and management
      - Update setup.py to include new response cache template
      0a61873a
    • Your Name's avatar
    • Your Name's avatar
      feat: add savings estimation to analytics dashboard · 75ee3b84
      Your Name authored
      - Add Estimated Savings card showing money saved from cache hits
      - Fetch cache statistics via AJAX and calculate savings
      - Display savings prominently in Cost Overview section
      - Assumes average cost of $0.002 per cached request
      75ee3b84
    • Your Name's avatar
      feat: add navigation links and response cache page to analytics dashboard · 99d1cd6c
      Your Name authored
      - Add quick links navigation to Analytics, Response Cache, and Rate Limits pages
      - Create response_cache.html template with cache statistics and management
      - Add /dashboard/response-cache route to display cache page (not just JSON)
      - Fix rate_limits URL in navigation (use /dashboard/rate-limits)
      - All three pages now have consistent navigation between them
      99d1cd6c
    • Your Name's avatar
      fix: move updateUsers function to global scope to fix bulk operations · a656cec9
      Your Name authored
      - Move updateUsers and getUrlParams functions outside DOMContentLoaded
      - Add attachEventListeners function to reattach event handlers after AJAX updates
      - Fixes 'updateUsers is not defined' error when performing bulk operations
      a656cec9
    • Your Name's avatar
      fix: add missing status_filter and role_filter parameters to dashboard users route · c16ccbf5
      Your Name authored
      - Add status_filter and role_filter query parameters with validation
      - Pass filter parameters to database method
      - Include filter values in template context for UI persistence
      c16ccbf5
    • Your Name's avatar
      fix: add missing search controls, filter dropdowns, and bulk action helper functions · 8b65f56e
      Your Name authored
      - Add back search controls with filter dropdowns (status/role) that were accidentally removed
      - Add missing bulk action helper functions: updateBulkActionsVisibility, updateSelectAllState, clearSelection, performBulkAction
      - Ensure bulk selection and bulk operations work correctly
      8b65f56e
    • Your Name's avatar
      Add backend bulk operations API for user management · f54c15df
      Your Name authored
      - Implement POST /dashboard/users/bulk route for bulk operations
      - Support enable, disable, delete, and tier change actions
      - Add input validation for action and user_ids parameters
      - Include error handling and appropriate JSON responses
      - Log errors for debugging purposes
      f54c15df
    • Your Name's avatar
    • Your Name's avatar
      feat: add status/role filter dropdowns and bulk selection UI · 4cb5844f
      Your Name authored
      - Add status filter (active/inactive) and role filter (admin/user) dropdowns
      - Add select all checkbox and individual user checkboxes
      - Add bulk action bar with tier change, enable/disable, delete buttons
      - Include selection counter and clear selection button
      4cb5844f
    • Your Name's avatar
      feat: add status and role filtering to get_users_paginated method · 829c0e37
      Your Name authored
      - Add status_filter parameter (active/inactive)
      - Add role_filter parameter (admin/user)
      - Combine filters with existing search functionality
      - Update both main query and count query
      829c0e37
    • Your Name's avatar
      Add user management enhancement phase 2 plan · 30e4719b
      Your Name authored
      - Advanced filtering by user status (active/inactive) and role (admin/user)
      - Bulk selection with checkboxes and select all functionality
      - Bulk operations: enable, disable, delete, change tier
      - Confirmation dialogs for destructive actions
      - Selection counter and clear selection
      - Combined filtering with existing search/sorting/pagination
      30e4719b
    • Your Name's avatar
      test: verify complete user management enhancement functionality · 79e801da
      Your Name authored
      - Pagination works correctly across page sizes
      - Search filters users by username, email, display name
      - Sorting works for all columns in both directions
      - URL state maintained for bookmarking
      - Edge cases handled gracefully
      
      All 30+ test cases passed successfully.
      79e801da
    • Your Name's avatar
      feat: add AJAX functionality for search, sorting, and pagination · 5fbd21e1
      Your Name authored
      - Debounced search input with clear functionality
      - Clickable sortable headers with direction indicators
      - Pagination controls with previous/next buttons and page size selector
      - URL state management for bookmarking
      - Loading states and error handling
      5fbd21e1
    • Your Name's avatar
      feat: add search input and sortable headers to users template · 0a970415
      Your Name authored
      - Add search input field with current search value
      - Make username, created_at, last_login headers sortable with indicators
      - Add pagination controls with page size selector
      - Include 'showing X-Y of Z' counter
      0a970415
    • Your Name's avatar
      feat: update /dashboard/users route for pagination and filtering · aa85681b
      Your Name authored
      - Add query parameters: page, limit, search, order_by, direction
      - Use new get_users_paginated database method
      - Calculate pagination metadata (total pages, current range)
      - Pass filters and pagination data to template
      aa85681b
    • Your Name's avatar
      feat: add get_users_paginated method to database layer · 8c0fdd1f
      Your Name authored
      - Support pagination with LIMIT/OFFSET
      - Case-insensitive search across username, email, display_name
      - Sorting by username, last_login, created_at, tier_name
      - Return both users list and total count for pagination
      8c0fdd1f
    • Your Name's avatar
      Add user management enhancement implementation plan · 52c2bd65
      Your Name authored
      - Database layer: get_users_paginated method with search and sorting
      - API layer: /dashboard/users route with query parameters
      - Frontend: Search input, sortable headers, pagination controls
      - JavaScript: AJAX updates with URL state management
      - Testing: Complete functionality verification
      
      Plan structured as 5 bite-sized tasks with TDD approach.
      52c2bd65
    • Your Name's avatar
      Add user management page enhancement design document · af76c07e
      Your Name authored
      - Pagination with customizable page sizes (10, 25, 50, 100)
      - Search by username, email, display name (case-insensitive)
      - Multi-column sorting (username, last login, signup date, tier)
      - URL state management for bookmarking
      - AJAX-based updates for smooth UX
      - Comprehensive error handling and performance considerations
      af76c07e
    • Your Name's avatar
      Analytics system · fe8b625a
      Your Name authored
      fe8b625a
    • Your Name's avatar
      fix: initialize providers list on page load · 823291c7
      Your Name authored
      - Moved JavaScript to {% block extra_js %} at end of body for proper DOM timing
      - Added renderProvidersList() call to populate providers on page load
      - Added debug console.log statements for troubleshooting
      - Moved CSS styles to {% block content %} to keep them in head section
      
      The providers page was empty because renderProvidersList() was never called.
      Now it executes after DOM is ready and populates all 23 providers.
      823291c7
    • Your Name's avatar
      a2aaca0c
    • Your Name's avatar
      e48a89f5
    • Your Name's avatar
      feat: add subscription-based provider and custom pricing configuration · ae1fb479
      Your Name authored
      - Added is_subscription, price_per_million_prompt, and price_per_million_completion fields to Provider model
      - Updated analytics to check provider config for subscription status and custom pricing
      - Subscription providers have $0 cost but usage is still tracked
      - Added _get_provider_pricing() method to get provider-specific pricing
      - Updated provider configuration UI with pricing section:
        - Checkbox for subscription-based provider (free)
        - Input fields for custom prompt/completion token pricing
        - Pricing fields hidden when subscription is checked
      - Falls back to default pricing if not configured
      - Allows admins and users to configure per-provider pricing
      ae1fb479
    • Your Name's avatar
      4fc0240b
    • Your Name's avatar
      fix: use actual token usage from Kiro API instead of hardcoded 0 · 17870cbf
      Your Name authored
      - Added usage tracking to AwsEventStreamParser
      - Parser now stores usage_credits and context_usage_percentage
      - Added get_usage() method to retrieve usage data
      - Updated handler to pass usage data to response builder
      - Non-streaming: Uses actual usage_credits as total_tokens
      - Streaming: Includes usage_credits in final chunk
      - Falls back to 0 if Kiro API doesn't provide usage data
      - Prevents over-estimation when Kiro returns 0 tokens
      17870cbf
    • Your Name's avatar
      1a3511ca
    • Your Name's avatar
      fix: only insert default tier if account_tiers table is completely empty · 0dbd07db
      Your Name authored
      - Changed from checking 'is_default = 1' to checking total record count
      - Default tier now only inserted if table has 0 records
      - Prevents inserting default tier when user has custom tiers
      - Improved logging to show tier count and skip reason
      0dbd07db
    • Your Name's avatar
      docs: add comprehensive session summary · 37cf6349
      Your Name authored
      37cf6349
    • Your Name's avatar
      fix: improve migration logging to clarify data preservation · 66565a94
      Your Name authored
      - Changed log message from 'Default payment system data inserted' to 'Default payment system data checked (existing records preserved)'
      - Added comments explaining INSERT OR IGNORE behavior
      - Clarifies that existing records are never overwritten
      - Uses INSERT OR IGNORE/INSERT IGNORE which only inserts if record doesn't exist based on UNIQUE constraints
      66565a94
    • Your Name's avatar
      docs: add analytics fix documentation · c4aa7ff6
      Your Name authored
      c4aa7ff6
    • Your Name's avatar
      fix: add comprehensive analytics recording for all request types · f2fe4c17
      Your Name authored
      - Added analytics recording for failed rotation requests
      - Added analytics recording for failed autoselect requests
      - Added analytics recording for streaming requests (success and failure)
      - Added analytics recording for authentication failures
      - Now tracks ALL requests: direct provider, rotation, autoselect, streaming
      - Ensures complete analytics data for dashboard visibility
      f2fe4c17
    • Your Name's avatar
      fix: add account_tiers and admin_settings tables to payment migrations · 11330e9b
      Your Name authored
      - Fixed lost account tiers after server restart
      - Fixed lost payment gateway configurations on MySQL
      - Added _create_account_tiers_table() method to create tiers table
      - Added admin_settings table to _create_config_tables()
      - Added default free tier insertion if none exists
      - Both fixes use CREATE TABLE IF NOT EXISTS to preserve existing data
      - Resolves issues introduced in commits f997a0fb and 0052431f
      11330e9b
  2. 16 Apr, 2026 5 commits
    • Your Name's avatar
      Update pyproject.toml to version 0.99.28 · ee9c9c2b
      Your Name authored
      ee9c9c2b
    • Your Name's avatar
      Bump version to 0.99.28 · 34a0d4e6
      Your Name authored
      All fixes verified and packaged:
      - Admin settings page os context fix
      - Consolidation settings UPSERT persistence
      - Prominent top-center notification alerts
      - Live crypto prices for BTC, ETH, USDT, USDC
      - ENCRYPTION_KEY management UI
      - All templates and code correctly packaged
      34a0d4e6
    • Your Name's avatar
      Improve notification visibility with prominent top-center alerts · 455e310e
      Your Name authored
      - Changed from small bottom-right toast to large top-center alert
      - Added gradient backgrounds (green for success, red for error, orange for warning)
      - Added large icons (check circle, exclamation circle, warning triangle)
      - Centered at top of page with 400-600px width
      - Smooth slide-down animation on appear, slide-up on dismiss
      - Auto-dismisses after 4 seconds
      - Much more noticeable for important actions like saving settings
      455e310e
    • Your Name's avatar
      Fix template error: add os to settings save response context · 8e689156
      Your Name authored
      - Added 'os': os to dashboard_settings_save template context
      - Fixes jinja2.exceptions.UndefinedError: 'os' is undefined
      - Template needs os.environ to get USER for tor hidden service path
      - GET endpoint already had it, POST endpoint was missing it
      8e689156
    • Your Name's avatar
      Use UPSERT for consolidation settings to handle missing records · e780ad68
      Your Name authored
      - Changed UPDATE to INSERT...ON DUPLICATE KEY UPDATE (MySQL)
      - Changed UPDATE to INSERT...ON CONFLICT DO UPDATE (SQLite)
      - Ensures records are created if they don't exist yet
      - Fixes issue where UPDATE fails silently on missing records
      - Handles both database types correctly
      e780ad68