1. 09 Apr, 2026 19 commits
    • Your Name's avatar
      Bump version to 0.99.15 · cd3769d8
      Your Name authored
      Fix Kilo OAuth2 500 errors with retry logic:
      - Root cause: Vercel edge node cdg1 returning 500 errors
      - Added retry logic with exponential backoff (3 attempts)
      - Logs Vercel edge node ID to track which node handles request
      - Retries automatically route to different edge nodes
      - Delays: 1s, 2s, 4s between retries
      cd3769d8
    • Your Name's avatar
      Bump version to 0.99.14 · f884822b
      Your Name authored
      Add detailed request/response logging for Kilo OAuth2:
      - Log exact request URL, headers, and body
      - Log httpx version being used
      - Log complete response status, headers, and body
      - This will help diagnose the 500 error difference between local and remote
      f884822b
    • Your Name's avatar
      Bump version to 0.99.13 · 5b70ef31
      Your Name authored
      Add explicit headers to Kilo OAuth2 device auth request:
      - Added Content-Length: 0 header
      - Added User-Agent header
      - Attempting to fix 500 error on remote servers
      5b70ef31
    • Your Name's avatar
      Bump version to 0.99.12 · adc12b41
      Your Name authored
      Fix Kilo OAuth2 device auth for remote servers:
      - Changed from data={} to explicit content=b'' with Content-Type header
      - This ensures proper form-urlencoded POST request format
      - Fixes 500 error when calling from remote servers behind nginx
      adc12b41
    • Your Name's avatar
      Add favicon to PyPI package · 7c82fca3
      Your Name authored
      7c82fca3
    • Your Name's avatar
      Bump version to 0.99.11 · c802cbea
      Your Name authored
      - Added version number to debug startup message
      - Fixed Kilo OAuth2 device auth endpoint (form encoding)
      - Fixed dashboard save endpoints (rotations/autoselect)
      - Fixed analytics page template syntax error
      - Fixed Kilo provider model prefetch at startup
      - Added favicon to PyPI package
      c802cbea
    • Your Name's avatar
      Bump version to 0.99.10 · 5e8dc9ad
      Your Name authored
      Fixes:
      - Kilo OAuth2 device auth endpoint now uses form encoding instead of JSON
      - Final fix for Kilo device auth 500 Internal Server Error
      5e8dc9ad
    • Your Name's avatar
      Bump version to 0.99.9 · d1ca98a2
      Your Name authored
      Fixes:
      - Kilo OAuth2 device auth initiation 500 error (missing empty json payload)
      - Kilo provider model prefetch at startup for OAuth2 credentials
      - Rotations save endpoint 500 error
      - Autoselect save endpoint config shadowing bug
      - Analytics page Jinja2 TemplateSyntaxError
      d1ca98a2
    • Your Name's avatar
      Bump version to 0.99.8 · b52224b8
      Your Name authored
      Fixes:
      - Kilo provider model prefetch at startup for OAuth2 credentials
      - Rotations save endpoint 500 error (form parameter mismatch, config shadowing)
      - Autoselect save endpoint config shadowing bug
      - Analytics page Jinja2 TemplateSyntaxError (missing closing parenthesis)
      - FormData JSON serialization in validation error handler
      b52224b8
    • Your Name's avatar
      v0.99.7 - Fixed undefined provider_key variable bug in OAuth2 handlers, fixed... · cb80847f
      Your Name authored
      v0.99.7 - Fixed undefined provider_key variable bug in OAuth2 handlers, fixed config shadowing bug in rotations save handler
      cb80847f
    • Your Name's avatar
      Fix OAuth2 provider model auto-population · 1c0f7090
      Your Name authored
      - Remove automatic model detection during provider save operations
      - OAuth2 providers now only show models when 'Get Models from Provider' is clicked
      - Users have full control over when models are fetched and saved
      - Bump version to 0.99.6
      1c0f7090
    • Your Name's avatar
      Version 0.99.5: Fix JavaScript syntax errors in templates · 483edf5b
      Your Name authored
      - Fixed malformed url_for() calls with extra quotes in providers.html
      - Corrected uploadCodexFile function JavaScript syntax
      - Fixed remaining hardcoded OAuth2 URLs
      - All JavaScript template syntax errors resolved
      - Updated version in setup.py, pyproject.toml, aisbf/__init__.py, and PYPI.md
      - Added changelog entry for 0.99.5
      483edf5b
    • Your Name's avatar
      Fix JavaScript syntax errors in providers.html template · 2fa6c455
      Your Name authored
      - Fixed malformed url_for() calls in uploadCodexFile function (extra quotes)
      - Fixed hardcoded /dashboard/claude/auth/complete URL to use url_for()
      - All JavaScript syntax errors resolved for proper template rendering
      2fa6c455
    • Your Name's avatar
      Version 0.99.4: Fix OAuth2 proxy-awareness for reverse proxy deployments · 2aa9d96d
      Your Name authored
      - Fixed OAuth2 authentication endpoints not respecting reverse proxy subpaths
      - Updated all OAuth2 JavaScript fetch calls to use url_for() instead of hardcoded /dashboard/ paths
      - Fixed Claude, Kilo, Codex, and Qwen OAuth2 authentication flows for reverse proxy deployments
      - Fixed file upload endpoints, rate limits data endpoint, user management endpoints, and autoselect save endpoint
      - OAuth2 authentication buttons now work correctly behind nginx reverse proxy with /aisbf/ location
      - Updated version in setup.py, pyproject.toml, aisbf/__init__.py, and PYPI.md
      - Added changelog entry for 0.99.4
      2aa9d96d
    • Your Name's avatar
      Version 0.99.3: Fix template download links and Jinja2 syntax errors · 8b94a935
      Your Name authored
      - Fixed malformed Jinja2 template syntax in user_providers.html causing download link issues
      - Corrected URL generation for authentication file download links
      - Fixed extension download link in providers.html template
      - All template syntax errors resolved for proper dashboard rendering
      - Updated version in setup.py, pyproject.toml, aisbf/__init__.py, and PYPI.md
      - Added changelog entry for 0.99.3
      8b94a935
    • Your Name's avatar
      Bump version to 0.99.2 · 36192a0f
      Your Name authored
      - Fixed Jinja2 template syntax errors in dashboard templates
      - Updated version in pyproject.toml, setup.py, and aisbf/__init__.py
      - Updated PYPI.md and CHANGELOG.md with new version
      36192a0f
    • Your Name's avatar
      Fix malformed Jinja2 template syntax caused by previous sed replacement · c8d67301
      Your Name authored
      - Corrected nested template tags in dashboard templates
      - All fetch() calls and URL generations now use proper url_for syntax
      - Templates should render correctly now
      c8d67301
    • Your Name's avatar
      Fix reverse proxy URL generation and bump version to 0.99.1 · a320f5af
      Your Name authored
      - Fix login redirect after authentication not respecting proxy subpaths
      - Modified url_for function to return relative URLs when behind reverse proxy
      - Updated login form action and template URLs to use url_for
      - Fixed JavaScript fetch calls in providers and rotations templates
      - Bumped version to 0.99.1 in all configuration files
      - Updated CHANGELOG.md and PYPI.md with new version
      a320f5af
    • Your Name's avatar
      feat: Add Qwen OAuth2 provider support (v0.99.0) · 328cb8bf
      Your Name authored
      - Implemented complete OAuth2 Device Authorization Grant with PKCE (S256)
      - Added aisbf/auth/qwen.py for OAuth2 authentication
      - Added aisbf/providers/qwen.py for OpenAI-compatible DashScope API
      - Cross-process token synchronization with file locking
      - Automatic token refresh with 30-second expiry buffer
      - Optional API key mode (bypass OAuth2)
      - Dashboard integration ready
      - Free tier: 1,000 requests/day, 60 requests/minute
      - Available models: qwen-plus, qwen-turbo, qwen-max, coder-model
      - Updated documentation in AI.PROMPT, README.md, and CHANGELOG.md
      - Version bumped to 0.99.0
      328cb8bf
  2. 04 Apr, 2026 7 commits
    • Your Name's avatar
    • Your Name's avatar
    • Your Name's avatar
      v0.9.9: User-based configuration routing for providers, rotations,... · faf1ac4b
      Your Name authored
      v0.9.9: User-based configuration routing for providers, rotations, autoselects, and OAuth2 credentials
      
      - Config admin (from aisbf.json, user_id=None) saves configurations to JSON files
      - Database users save configurations to the database (user_providers, user_rotations, user_autoselects tables)
      - Dashboard endpoints check user type and route accordingly
      - File upload endpoint supports both config admin (files) and database users (database)
      - MCP server tools accept user_id parameter and route to appropriate storage
      - OAuth2 credential handling already implemented this pattern (Claude, Kilo, Codex)
      - Updated CHANGELOG.md, setup.py, and pyproject.toml
      faf1ac4b
    • Your Name's avatar
    • Your Name's avatar
      Fix aisbf.sh to respect server.host from aisbf.json config · 5699cf7c
      Your Name authored
      - Added find_config_file() to check config locations in correct order
      - Added get_host() to read server.host from config (defaults to 127.0.0.1)
      - Fixed get_port() to read from server.port instead of top-level port
      - Updated start_server() and start_daemon() to use config-based host
      - Updated CHANGELOG.md with the fix
      5699cf7c
    • Your Name's avatar
      fix: Split Codex OAuth2 device flow into non-blocking start/poll pattern · e2243ed6
      Your Name authored
      - Changed authenticate_with_device_flow() to request_device_code_flow() + poll_device_code_completion()
      - /dashboard/codex/auth/start now returns immediately with verification URI and user code
      - /dashboard/codex/auth/poll checks for completion status
      - Fixed poll_device_code_token to raise exception for 403/404 (pending state)
      - Dashboard JavaScript opens popup window with verification URI immediately
      e2243ed6
    • Your Name's avatar
      feat: Add Codex provider with OAuth2 Device Authorization Grant support (v0.9.8) · 4bba04b4
      Your Name authored
      - New codex provider type using OpenAI-compatible protocol
      - OAuth2 authentication via Device Authorization Grant flow
      - Provider handler in aisbf/providers/codex.py
      - OAuth2 handler in aisbf/auth/codex.py
      - Dashboard integration with authentication UI
      - Token refresh with automatic retry
      - API key exchange from ID token
      - Updated version to 0.9.8 in setup.py and pyproject.toml
      - Updated CHANGELOG.md, README.md, PYPI.md with Codex documentation
      - Added codex provider configuration to config/providers.json
      4bba04b4
  3. 03 Apr, 2026 12 commits
    • Your Name's avatar
      Release 0.9.7 · 1491d963
      Your Name authored
      1491d963
    • Your Name's avatar
      Release 0.9.6 · 3458d0f7
      Your Name authored
      3458d0f7
    • Your Name's avatar
      Version 0.9.5 - Add Snake game easter egg · ccc498ee
      Your Name authored
      ccc498ee
    • Your Name's avatar
      Add Snake game easter egg to dashboard · 891c4dc4
      Your Name authored
      - Trigger: Press ArrowUp, ArrowDown, ArrowUp in sequence within 10 seconds
      - Opens a Snake game in a popup window
      - Classic Snake gameplay with difficulty selection
      - Retro arcade-style with Press Start 2P font
      891c4dc4
    • Your Name's avatar
      Version 0.9.4 - Fix setup.py data_files and update documentation · 865238f7
      Your Name authored
      - Fixed ImportError: count_messages_tokens missing by correcting setup.py data_files structure
      - Split data_files into separate entries to preserve subdirectory structure (aisbf/, aisbf/providers/, aisbf/providers/kiro/, aisbf/auth/)
      - Added 6 missing dashboard templates (user_index.html, user_providers.html, etc.)
      - Removed install_requires from setup.py (dependencies managed via venv)
      - Updated aisbf.sh to only install requirements on first venv creation
      - Added Kiro-cli and Kilocode OAuth2 provider support documentation
      - Removed duplicate entries in documentation (Token Usage Analytics, Claude OAuth2)
      - Provider module refactoring documentation updates
      - Version bumped to 0.9.4
      865238f7
    • Your Name's avatar
      Finished refactory · 72969cb2
      Your Name authored
      72969cb2
    • Your Name's avatar
      Completed refactoring of the providers module · 72d001fa
      Your Name authored
      72d001fa
    • Your Name's avatar
      Start refactoring · d1079827
      Your Name authored
      d1079827
    • Your Name's avatar
      Now all providers type works correctly · 61ecc606
      Your Name authored
      61ecc606
    • Your Name's avatar
      Update Oauth2 · fc8036ad
      Your Name authored
      fc8036ad
    • Your Name's avatar
      Add proxy support for OAuth2 Chrome extension · b5766115
      Your Name authored
      b5766115
    • Your Name's avatar
      Release v0.9.2: Documentation updates and version bump · fbb49301
      Your Name authored
      - Updated README.md with comprehensive documentation for new features:
        * User-Specific API Endpoints with Bearer token authentication
        * Adaptive Rate Limiting with learning from 429 responses
        * Model Metadata Extraction with automatic pricing/rate limit detection
        * Enhanced Analytics Filtering by provider/model/rotation
        * Updated Web Dashboard feature list
      
      - Updated DOCUMENTATION.md with detailed sections:
        * Adaptive Rate Limiting configuration and benefits
        * Model Metadata Extraction features and dashboard integration
      
      - Updated CHANGELOG.md:
        * Moved Unreleased section to version 0.9.2 (2026-04-03)
        * Added comprehensive list of new features and changes
      
      - Version bump to 0.9.2:
        * Updated pyproject.toml version
        * Updated aisbf/__init__.py version
      
      This release focuses on improving documentation coverage for recently
      added features including user-specific API endpoints, adaptive rate
      limiting, model metadata extraction, and analytics filtering.
      fbb49301
  4. 01 Apr, 2026 2 commits
    • Your Name's avatar
      fix: Use SDK auth_token parameter with OAuth2 token (not API key) · 252d45e4
      Your Name authored
      Your theory was correct! Claude Code uses the Anthropic SDK with the
      authToken parameter (not apiKey) for OAuth2 authentication.
      
      From vendors/claude/src/services/api/client.ts lines 300-315:
          const clientConfig = {
            apiKey: isClaudeAISubscriber() ? null : apiKey || getAnthropicApiKey(),
            authToken: isClaudeAISubscriber()
              ? getClaudeAIOAuthTokens()?.accessToken
              : undefined,
          }
          return new Anthropic(clientConfig)
      
      Changes:
      - providers.py: Use auth_token=access_token (not api_key) for SDK client
      - claude_auth.py: Remove create_api_key() and get_api_key() methods
        (not needed - OAuth2 token is used directly with SDK auth_token)
      
      The create_api_key endpoint is only for creating API keys for use in
      other contexts (CI/CD, IDEs), not for the main CLI.
      252d45e4
    • Your Name's avatar
      fix: Use API key from OAuth2 token exchange instead of raw OAuth2 token · 9bb2c090
      Your Name authored
      Claude Code doesn't use the OAuth2 access token directly for API requests.
      Instead, it exchanges the OAuth2 token for an API key via:
        POST https://api.anthropic.com/api/oauth/claude_cli/create_api_key
        Authorization: Bearer {oauth_access_token}
      
      This returns a 'raw_key' which is the actual API key used for API requests.
      
      Changes:
      - claude_auth.py: Add create_api_key() and get_api_key() methods
        - create_api_key(): Exchanges OAuth2 token for API key
        - get_api_key(): Gets stored API key or creates one if needed
      - providers.py: Update _get_sdk_client() to use API key instead of OAuth2 token
      
      This matches the Claude Code flow in vendors/claude/src/services/oauth/client.ts
      9bb2c090