Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: ericc-ch/copilot-api
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: master
Choose a base ref
...
head repository: godlockin/copilot-api
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: master
Choose a head ref
Checking mergeability… Don’t worry, you can still create the pull request.
  • 17 commits
  • 35 files changed
  • 2 contributors

Commits on Apr 25, 2026

  1. Configuration menu
    Copy the full SHA
    4b0dc74 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    eda5a6a View commit details
    Browse the repository at this point in the history
  3. feat: add model resolution, claude settings, and Responses API support

    - src/lib/models.ts: resolveModel/resolveModelId with snapshot suffix stripping
      (e.g. claude-opus-4-7-{snapshot} -> claude-opus-4.7) and family alias matching
    - src/lib/claude-settings.ts: read env from ~/.claude/settings*.json for
      COPILOT_REASONING_EFFORT overrides
    - src/services/copilot/responses.ts: GitHub Copilot /responses endpoint adapter
      for gpt-5.3-codex / gpt-5.4-mini (uses reasoning.effort, not budget_tokens)
    - routes: thread resolveModel through chat-completions and count-tokens handlers
    - anthropic-types: extend thinking.type with "adaptive" and add reasoning_effort
    godlockin committed Apr 25, 2026
    Configuration menu
    Copy the full SHA
    ce0f0cb View commit details
    Browse the repository at this point in the history
  4. fix: extend network timeouts to survive long subagent workloads

    - main.ts: install global undici Agent with 10min headers/body timeout, 2min
      keep-alive, 30s connect — default 300s headersTimeout was killing >5min
      Copilot upstream responses (DOMException TIMEOUT_ERR)
    - start.ts: pass bun idleTimeout=255 (Bun max) to srvx + reusePort=true so
      keep-alive connections aren't closed under 10s default, which surfaces as
      "socket connection was closed unexpectedly" on the Claude Code side
    godlockin committed Apr 25, 2026
    Configuration menu
    Copy the full SHA
    29dfb09 View commit details
    Browse the repository at this point in the history
  5. fix(opus-4.7): pass thinking.enabled verbatim and cap effort at medium

    Upstream Copilot opus-4.7 only accepts {type: "enabled"} (no "adaptive",
    no "disabled"), and rejects effort levels above "medium". Coerce both
    "enabled" and "adaptive" to "enabled" with optional budget_tokens, and
    downgrade higher efforts to "medium" with a warning so legacy clients
    keep working.
    
    Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
    godlockin and claude committed Apr 25, 2026
    Configuration menu
    Copy the full SHA
    03862da View commit details
    Browse the repository at this point in the history
  6. docs: add CLAUDE.md project guide and claude-copilot.sh launcher

    Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
    godlockin and claude committed Apr 25, 2026
    Configuration menu
    Copy the full SHA
    e6b8ed2 View commit details
    Browse the repository at this point in the history

Commits on Apr 26, 2026

  1. feat(opus-4.7): open effort cap to low/medium/high/xhigh/max

    Probed upstream Copilot directly: opus-4.7 now accepts all effort levels
    (low/medium/high/xhigh/max) without 400, and reasoning_effort shows real
    gradient in completion tokens (low~214 → max~374) on a fixed prompt with
    thinking enabled. Lift the medium cap so high-effort requests reach the
    model instead of being silently downgraded.
    
    Tests updated to reflect the new pass-through behavior.
    
    Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
    godlockin and claude committed Apr 26, 2026
    Configuration menu
    Copy the full SHA
    818ca37 View commit details
    Browse the repository at this point in the history
  2. feat(usage): add local HTML viewer with auto-refresh

    - New /usage/view route serving a self-contained dark-mode dashboard
      rendering quota_snapshots (chat/completions/premium_interactions)
      with progress bars, plan/SKU/reset metadata, and refresh controls.
    - /usage now content-negotiates: text/html → viewer, JSON otherwise,
      preserving API compatibility.
    - Auto-refresh defaults to 30s, with on/off toggle and 10s/30s/60s/5m
      selector; pauses on tab hidden, persists prefs to localStorage,
      honors ?endpoint, ?auto, ?refresh URL params.
    - claude-copilot.sh: add --daemon-start/--daemon-stop subcommands and
      print log path + usage URL after server is ready.
    
    Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
    godlockin and claude committed Apr 26, 2026
    Configuration menu
    Copy the full SHA
    d543f86 View commit details
    Browse the repository at this point in the history
  3. feat: add setup.sh installer, claude-copilot.sh daemon fix, and docs

    - setup.sh: 5-step installer (deps, build, auth, shell config, launchd plist)
    - claude-copilot.sh: --daemon shows local dashboard URL (usage/view)
    - README: quick start section with model tier table and effort support docs
    - .gitignore: add copilot-data/ docker volume exclusion
    - non-stream-translation.ts: use upstream thinking/effort translation with resolveModelId
    
    Co-Authored-By: Claude Sonnet 4 <noreply@anthropic.com>
    godlockin and claude committed Apr 26, 2026
    Configuration menu
    Copy the full SHA
    aa4bdaf View commit details
    Browse the repository at this point in the history
  4. feat: cherry-pick setup.sh installer + claude-copilot.sh daemon impro…

    …vements
    
    Brings in the installer/docs/launcher work from godlockin/master (aa4bdaf)
    while keeping main's adaptive→enabled thinking translation and opened-up
    opus-4.7 effort cap (low/medium/high/xhigh/max) — master had reverted
    non-stream-translation.ts which silently drops the thinking field and
    caused upstream 400s for clients sending thinking.adaptive.
    
    - setup.sh: 5-step installer (deps, build, auth, shell config, launchd plist)
    - claude-copilot.sh: --daemon shows local dashboard URL (usage/view)
    - README: quick start, model tier table, effort support docs
    - .gitignore: add copilot-data/ docker volume exclusion
    - bun.lock: dependency updates from master
    
    Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
    godlockin and claude committed Apr 26, 2026
    Configuration menu
    Copy the full SHA
    8a6b551 View commit details
    Browse the repository at this point in the history
  5. merge main into master: include thinking/effort fixes + usage viewer

    main has all the same setup.sh / claude-copilot.sh / README / .gitignore /
    bun.lock improvements as master's aa4bdaf, plus:
    - adaptive→enabled thinking translation (avoids upstream 400 on opus-4.7)
    - opus-4.7 effort cap opened to low/medium/high/xhigh/max
    - /usage/view local HTML dashboard with auto-refresh
    godlockin committed Apr 26, 2026
    Configuration menu
    Copy the full SHA
    20a3fbe View commit details
    Browse the repository at this point in the history

Commits on Apr 27, 2026

  1. fix(opus-4.7): drop thinking field entirely; rely on output_config.ef…

    …fort
    
    Even after coercing thinking.adaptive→enabled, upstream Copilot still
    returned 400 "Input tag 'adaptive' found using 'type'" — likely because
    the validator scans the overall request body (including conversation
    content) for thinking-shaped strings, which is fragile when chat history
    mentions the word "adaptive".
    
    Effort already conveys reasoning intent (low→max); thinking is redundant
    for this provider. Stop forwarding thinking unconditionally.
    
    Tests: 3 thinking-translation cases updated to expect undefined.
    Probe: thinking.{adaptive,enabled+budget=31999} + reasoning_effort
    {low,medium,high,xhigh,max} all → 200.
    godlockin committed Apr 27, 2026
    Configuration menu
    Copy the full SHA
    29837a3 View commit details
    Browse the repository at this point in the history
  2. fix(opus-4.7): drop thinking field entirely; rely on output_config.ef…

    …fort
    
    Even after coercing thinking.adaptive→enabled, upstream Copilot still
    returned 400 "Input tag 'adaptive' found using 'type'" — likely because
    the validator scans the overall request body (including conversation
    content) for thinking-shaped strings, which is fragile when chat history
    mentions the word "adaptive".
    
    Effort already conveys reasoning intent (low→max); thinking is redundant
    for this provider. Stop forwarding thinking unconditionally.
    
    Tests: 3 thinking-translation cases updated to expect undefined.
    Probe: thinking.{adaptive,enabled+budget=31999} + reasoning_effort
    {low,medium,high,xhigh,max} all → 200.
    godlockin committed Apr 27, 2026
    Configuration menu
    Copy the full SHA
    51d072c View commit details
    Browse the repository at this point in the history

Commits on May 1, 2026

  1. feat: log model name in request lines + add log-watchdog script

    - Add model identifier to request log lines for observability
      e.g. "<-- POST (claude-opus-4.6) /v1/messages"
    - Add log-watchdog.sh for launchd-based runtime log truncation
    - Fix package.json start script to include "start" subcommand
    
    Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
    godlockin and claude committed May 1, 2026
    Configuration menu
    Copy the full SHA
    41e38f3 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    ad97c13 View commit details
    Browse the repository at this point in the history
  3. fix: use launchctl for service start, dynamic log path in watchdog

    - _ensure_service_running + daemon: replace nohup/node fork with launchctl start
      Prevents EADDRINUSE from multiple node processes competing on port 1234
    - log-watchdog.sh: replace hardcoded path with $(cd dirname $0 && pwd)/server.log
      Works from any clone location without modification
    
    Co-Authored-By: Claude Sonnet 4 <noreply@anthropic.com>
    godlockin and claude committed May 1, 2026
    Configuration menu
    Copy the full SHA
    f4fadb1 View commit details
    Browse the repository at this point in the history

Commits on May 4, 2026

  1. chore: remove unused files, add INDEX.md and EKET framework

    - Delete: CLAUDE.md.local-backup, SETUP_COMPLETE.md, package-lock.json,
      .eslintcache, auth.sh, build.sh, test-api.sh, opencode.json, copilot-data/
    - Add: INDEX.md (project index: file tree, API endpoints, functions, models)
    - Add: EKET jira/confluence scaffold (EPIC-001, TASK-1/2/3)
    
    Co-Authored-By: Claude Sonnet 4 <noreply@anthropic.com>
    godlockin and claude committed May 4, 2026
    Configuration menu
    Copy the full SHA
    b3f5927 View commit details
    Browse the repository at this point in the history
Loading