-
Notifications
You must be signed in to change notification settings - Fork 42
Permalink
Choose a base ref
{{ refName }}
default
Choose a head ref
{{ refName }}
default
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: itsmylife44/cliproxyapi-dashboard
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: dashboard-v0.1.77
Could not load branches
Nothing to show
Loading
Could not load tags
Nothing to show
{{ refName }}
default
Loading
...
head repository: itsmylife44/cliproxyapi-dashboard
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: dashboard-v0.1.78
Could not load branches
Nothing to show
Loading
Could not load tags
Nothing to show
{{ refName }}
default
Loading
- 5 commits
- 50 files changed
- 3 contributors
Commits on Apr 17, 2026
-
Configuration menu - View commit details
-
Copy full SHA for 47f4404 - Browse repository at this point
Copy the full SHA 47f4404View commit details
Commits on Apr 19, 2026
-
chore(ts): enable noUncheckedIndexedAccess and fix resulting regressi…
…ons (#201) Cherry-pick of #200 onto `main` (that PR targeted `fix/issue-197-local-providers`, now merged). ## What this does Enables `noUncheckedIndexedAccess: true` in `dashboard/tsconfig.json` and fixes every resulting error by narrowing at the point of access — no casts, no suppressions, no weakened types. ## Commits 1. **`chore(ts): enable noUncheckedIndexedAccess and fix 142 resulting errors`** — flag on, 36 source files narrowed, 4 test files use `expect(x).toBeDefined()` + `!` 2. **`fix(review): restore behavior regressions from noUncheckedIndexedAccess pass`** — three issues the reviewer caught on the first round: - `lib/auth/session.ts`: restored `!Number.isFinite(v) \|\| v <= 0` fallback in `parseExpiry` - `api/containers/list/route.ts`: switched `return Errors.internal` back to `continue + warn` (one bad line no longer 500s the whole list) - `api/custom-providers/fetch-models/route.ts`: flipped SSRF guard `return false` → `return true` so the fail-direction is closed 3. **`fix(review): make updateOAuthAliasEntry exhaustive over keyof OAuthModelAliasEntry`** — replaced trailing `else` (which hardcoded `_id`) with a `switch` + `never` default; adding a new field is now a compile error at the call site. ## Verification (on `main`) | Gate | Result | |---|---| | `tsc --noEmit` | 0 errors | | `eslint` | 0 warnings/errors | | `vitest run` | 190/190 passed, 21 files | | `next build` | Compiled successfully | ## Contract audit - 0 new `any`, `as any`, `as unknown as`, `@ts-ignore`, `@ts-expect-error` - 0 new non-null assertions outside test fixtures (all `!` sites follow `expect(x).toBeDefined()` in `__tests__/*.test.ts`) ## Not included (intentional) `exactOptionalPropertyTypes`, `noPropertyAccessFromIndexSignature`, `noImplicitOverride`, `noFallthroughCasesInSwitch` — each its own cutover; bundling would turn one reviewable change into an unreviewable one. <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Medium Risk** > Touches many dashboard API/UI code paths to add defensive checks required by `noUncheckedIndexedAccess`, with a few subtle behavior changes (e.g., container listing now skips malformed `docker ps` lines and SSRF guard fails closed on unparseable IPv6-mapped addresses). Overall risk is moderate due to broad surface area, but changes are largely null/undefined handling and type narrowing. > > **Overview** > Enables TypeScript `noUncheckedIndexedAccess` in `dashboard/tsconfig.json` and updates API routes, UI components, and config generators to **narrow/guard all index-based access** (array destructuring, regex groups, map entries) to avoid implicit `undefined`. > > Includes a few targeted behavior hardenings: container APIs now return `notFound` when a container name lacks `CONTAINER_CONFIG`, container listing logs-and-skips malformed `docker ps` output instead of failing the whole request, and the custom-provider SSRF checks treat unparseable IPv6-mapped addresses as private (*fail closed*). Tests were adjusted to assert presence before non-null assertions. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit e265117. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY --> --------- Co-authored-by: itsmylife44 <itsmylife44@users.noreply.github.com>
Configuration menu - View commit details
-
Copy full SHA for 65d5702 - Browse repository at this point
Copy the full SHA 65d5702View commit details
Commits on Apr 20, 2026
-
fix(install): support Ubuntu/Debian derivatives (Zorin, Mint, Pop!_OS…
…, etc.) Detect distro family via ID_LIKE so Ubuntu/Debian-based distributions are routed to the correct Docker apt repo instead of being rejected outright. - Read ID_LIKE from /etc/os-release and match space-padded against ubuntu/debian tokens. - Prefer UBUNTU_CODENAME / DEBIAN_CODENAME over VERSION_CODENAME so derivatives resolve to an upstream suite (e.g. Zorin -> noble, Mint -> jammy). - Validate the resolved codename against the suites Docker actually publishes; reject rolling or non-upstream codenames (e.g. Kali kali-rolling) up front with a clear message instead of failing later at apt-get update. - Update docs/INSTALLATION.md to note derivative auto-detection. Fixes #202
Configuration menu - View commit details
-
Copy full SHA for c3f19f0 - Browse repository at this point
Copy the full SHA c3f19f0View commit details -
Align OAuth providers with upstream CLIProxyAPIPlus
Remove dead providers (qwen, codebuddy) and add Kilo (device flow) and GitLab (OAuth app + PAT modes). Verified against upstream main branch internal/api/server.go. - Add kilo-auth-url and gitlab-auth-url to non-admin OAuth allowlist; also permit POST on gitlab-auth-url for PAT submission. - Proxy route now accepts OAuth-shape POST for gitlab-auth-url and translates to upstream GET internally so client_secret never appears in browser URLs, Referer, or access logs. - Add GitLab pre-connect modal with OAuth and PAT modes; preserve entered fields on bootstrap failure, close secondary modal, surface error inline. - handleOAuthConnect returns {ok, errorMessage} for callers that need to react to bootstrap outcome. - OAUTH_PROVIDER constants, PROVIDER_MATCH_ALIASES, CALLBACK_PATHS, PROVIDERS_WITH_CALLBACK, migration aliases all updated in lockstep. - Add 18 i18n keys for GitLab flow (en + de, parity verified).Configuration menu - View commit details
-
Copy full SHA for 90c0d7b - Browse repository at this point
Copy the full SHA 90c0d7bView commit details -
chore(main): release dashboard 0.1.78 (#203)
🤖 I have created a release *beep* *boop* --- ## [0.1.78](dashboard-v0.1.77...dashboard-v0.1.78) (2026-04-20) ### Bug Fixes * **install:** support Ubuntu/Debian derivatives (Zorin, Mint, Pop!_OS, etc.) ([c3f19f0](c3f19f0)), closes [#202](#202) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Configuration menu - View commit details
-
Copy full SHA for d3fa8d4 - Browse repository at this point
Copy the full SHA d3fa8d4View commit details
Loading
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff dashboard-v0.1.77...dashboard-v0.1.78