Releases: sanhaji182/lintasan
Release list
v0.26.2 — Design System Migration + Error Handling
[0.26.2] — 2026-06-30
Fixed
- MCP + Translator pages migrated to design system — no more hardcoded dark theme
- Discover page: undefined CSS variable + hardcoded hex colors fixed
- Dashboard: scoped :global(.grid) media query
- Error handling standardized across 7 pages — user-visible errors with retry
- Keys page: toast notifications for create/delete
Changed
app.css: --color-bg-hover variable + .data-table classes- Spinner/EmptyState: accessibility (role, aria-label, sr-only)
v0.26.1 — Savings Redesign + Pool Tests
[0.26.1] — 2026-06-30
Changed
- Savings page redesign: migrated from hardcoded dark-theme Tailwind to design system CSS variables — 4-column summary grid, breakdown cards with icons, proper table styling.
Tests
- 5 new connection pool CRUD tests (create, multi-pool, patch, delete, empty state).
Housekeeping
.gitignore: coverage reports, dev utility commands, dist-bin.
v0.26.0 — Connection Pool Management
[0.26.0] — 2026-06-30
Added
- Connection Pool Management with Multi-Account Load Balancing. Group multiple API keys under a
pool_idto distribute requests across accounts, avoiding per-key rate limits. Pool health stats (success rate, availability, rate-limited count) visible in dashboard. GET /api/connections/pools— new endpoint returning pool health stats augmented with runtime LB data.- Pool-aware proxy routing: per-request API key rotation, pool deduplication in route resolution, success/failure tracking per account.
- DB migration:
pool_idcolumn + index on connections table.
Changed
- Connections page UX: collapsible OAuth IDE + Presets sections, 4-column summary grid, pool health cards with availability indicators.
Tests
- All 44 packages PASS (937+ tests).
v0.25.0 — IDE OAuth + QA Documentation
[0.25.0] — 2026-06-23
Added
- Experimental IDE OAuth (off by default). A new
/api/oauth/ide/*subsystem that lets AI coding agents (Claude Code, Codex CLI, Copilot, Cursor, Cline, Kilocode, Antigravity, xAI) authenticate via OAuth 2.0 PKCE or device flow — no manual API key management. Gated behind--oauth-ide-enable=falseand admin-only dashboard controls. - 8-provider OAuth IDE catalog (
internal/oauthide/): Claude (PKCE), Codex (PKCE), GitHub Copilot (device flow), Cursor (device flow), Cline (PKCE), Kilocode (PKCE), Antigravity (PKCE), xAI (PKCE+device flow). - 9-router port: the IDE OAuth layer reuses the 9router routing substrate, inheriting its multi-provider connection management infrastructure.
- Dashboard OAuth IDE page (
/dashboard/oauth-ide): status card per IDE, self-service toggle, credentials display, connection health check. - QA documentation:
docs/qa-test-plan.mdanddocs/qa-test-report.mdcovering beta-readiness P0+P1 batch and OAuth IDE experimental feature.
Changed
- Repo renamed from
lintasan-go→lintasanacross all docs, badges, and remote URLs. - README badges updated: version → v0.25.0, test count → 900+
- AGENTS.md reconciled to reflect the repo rename.
Tests
- 3 new test files for OAuth IDE
- Suite: 43/43 packages PASS, go vet clean, 900+ tests
Bug Fixes (from P1 audit)
- All
rows.Scan()errors now checked (was silently swallowed — data corruption risk) - Dead
_ = lastStatusCodereplaced with real status propagation to client - Hardcoded stubs (requestVolume, tokensCompressed, prompt-routing) replaced with real data or honest 503s
- Rate limit config moved to Config struct, JWT secret error handling fixed
- 18 new bugfix tests, 106 total handler tests pass
v0.24.2 — beta-stabilization patch
What's in v0.24.2
A focused patch that closes the remaining beta-readiness audit findings
on top of v0.24.1. All changes are backward-compatible.
Fixed
handlePluginGenerateis no longer a stub. The "AI Generate" tab
in the Plugins page used to return a hardcoded template regardless of
the prompt, which was misleading. New behavior:- 400 if the request is missing
prompt - 503 with a clear "set
plugin_generator_modelsetting" hint if
not configured (no fake template returned) - 503 if no master key is configured
- Otherwise: self-call
/v1/chat/completionson localhost with the
master key, pass the prompt + a system prompt that anchors the
output to a single JavaScript plugin module, parse the response,
strip accidental markdown fences, return the code
- 400 if the request is missing
handleCostsreads real data. Previously returned hardcoded
zeros. Now aggregatesrequest_logsby model for "today" and "this
month" and computes cost per row viacost.NewCalculator()with the
built-in pricing table. Returns the full shape (totals, by-model
breakdown sorted by cost desc, request counts, input/output token
counts).- Frontend/backend method mismatch on
/api/load-balancer. The
routing page sentPUTbut the server registeredPOST. Aligned the
frontend toPOST(1-line change).
Changed
- AGENTS.md §11 quick reference. Removed the stale
admin/admin123
login example (the password is randomly generated on first start and
forced to rotate). Replaced with a recovery-flow comment block.
Tests
- 10 new unit tests in
internal/server/handlers_beta_p0_test.go:TestHandlePluginGenerate_*(5 cases) — bad JSON, empty prompt, no
model, test mode (port=0), no master keyTestHandleCosts_*(2 cases) — empty-DB shape, real aggregation
from seededrequest_logsrowsTestStripCodeFences,TestSanitizeName,TestRound2— helpers
- Suite: 826/826 passing in 44 packages,
go vetclean.
Audit correction note
The beta-readiness audit (v0.24.1) reported "16+ frontend calls hit
non-existent routes" as a Critical issue. This was a false
positive: the audit only grepped server.go and handlers_parity.go,
missing handlers_rest.go where all 16 routes were already wired in
commit 777a553. The routes work correctly with a valid token. The
audit also missed why the routes LOOKED missing during unauthenticated
probing: the auth middleware runs before the mux matches, so missing-
route and unauthenticated both return 401, which masked the difference.
The audit's "load-balancer 401" was a real finding and is fixed in
9551304. Full correction note in AGENTS.md §12.
Installation
Download lintasan-linux-amd64 below, place on $PATH, and run:
```bash
chmod +x lintasan-linux-amd64
sudo mv lintasan-linux-amd64 /usr/local/bin/lintasan
lintasan start
```
Dashboard on :20180, API on /api/* and /v1/*.
Full Changelog
See CHANGELOG.md
and AGENTS.md §12.
v0.24.1 — patch release
What's in v0.24.1
A small, focused patch on top of v0.24.0's versioning reset.
Added
- Test coverage for
internal/server/curl_import.go— 28 unit tests coveringparseCurlCommand,inferNameFromHost,tokenizeCurl/stripQuotes, andhandleCurlImportHTTP error paths. Closes a coverage gap on an endpoint that was active in production with zero tests. Commit84874cf.
Fixed
- Proxy response header forwarding — Go's
http.Transportauto-decompressesContent-Encoding: gzipand resetsContent-LengthandTransfer-Encodingon read. The proxy was forwarding the upstream's stale values, causing empty bodies at the client. Now stripping those two headers at all three forwarding sites ininternal/proxy/proxy.go(chat completions + 2 streaming paths). Commitc030fdd.
Housekeeping
- 30+ merged
feat/*andfix/*branches pruned (lokal + remote). - 2 stale unmerged branches removed:
feat/provider-sdk-foundation(work already in main via F1+F2 chain) andfrontend-t949aa391(kanban worktree orphan, worktree dir also removed). feat/curl-import-connectiondropped (2-ahead branch with noisy 9-commit base); the one substantive fix it contained was re-extracted and landed in main asc030fddapplied to all three call sites.- Repo audit state captured in
AGENTS.md §12as authoritative snapshot for future sessions.
Stats
- Tests: 788 → 816 passing in 44 packages, 0 regressions.
- Diff vs v0.24.0: 2 code commits (1 test, 1 fix) + 1 docs commit.
- Binary:
lintasan-linux-amd64(24.6 MB, statically linked, single binary with embedded SPA).
Intentionally preserved branches
feat/codex-m0-skeleton— Shape-1 (Codex Responses ingress), orthogonal to Shape-2 lifecycle. Fork fresh worktree to continue M5.gh-pages— GitHub Pages static landing. Per project convention.
Deferred
cmd/lintasan/main.go:118interactive setup wizard (low-priority).- Codex M5 live validation (env:
OPENAI_API_KEY). - Cohort-A ACP per-provider live validation loop.
Installation
Download lintasan-linux-amd64 below, place on $PATH, and run:
```bash
chmod +x lintasan-linux-amd64
sudo mv lintasan-linux-amd64 /usr/local/bin/lintasan
lintasan start
```
Dashboard on :20180, API on /api/* and /v1/*.
Full Changelog
See CHANGELOG.md and AGENTS.md §12 for the complete audit state.
v0.24.0 — Versioning Reset
Lintasan v0.24.0 — Versioning Reset
First release of the 0.x.x (pre-1.0) series. The
.24keeps continuity with the priorv2.4.0work; thev2.4.0tag remains in git history as a reference point.
Why the reset
Lintasan is still in active development. The prior 2.x numbering gave the
wrong impression of API stability. The 0.x.x range is the honest semver
signal — API and config formats are not yet frozen. See CHANGELOG.md for
the full rationale and the upgrade notes.
What's in this release
This is the first release of the new series and bundles everything that
landed on main through the version reset. Highlights:
- Versioning scheme:
2.x.x→0.x.x. All version strings, README,
AGENTS.md, dashboard docs page, and CHANGELOG updated. - Curl import endpoint:
POST /api/connections/import-curlis now
active in the prod hot path. Lets you paste acurlcommand and
get a connection preset back. Implementation in
internal/server/curl_import.go(354 lines; tests are a known gap
tracked inAGENT.md§9). - Experimental Ecosystem (ACP Shape-2) is now compiled into the
binary, still membrane-gated and dormant. Nothing auto-activates.
Includes: substrate G1–G6, Generic ACP Provider Framework, Codex
onboarding, Codex wire-remediation, Cohort-A readiness (Claude / Gemini
/ Copilot descriptors). - AGENT.md reconciled to reflect the new prod state. All numbers
verified fromgit+ runtime, not memory.
Verify
sha256sum lintasan-linux-amd64
# (matches the value printed by `go version -m ./lintasan | grep vcs.revision`)
./lintasan --version
# lintasan version 0.24.0
curl localhost:20180/health
# {"status":"ok","version":"v0.24.0",...}Build from source
The single binary embeds the SvelteKit dashboard via go:embed — you
need Node 20+ (to build the frontend) and Go 1.22+ to compile.
The make build target orchestrates the full pipeline. See
AGENTS.md §3 for the deploy recipe.
What about the 2.x releases?
All 12 prior 2.x GitHub releases (v2.1.0 → v2.4.0) have been removed
from this Releases page to keep the changelog focused on the current
series. The git tags remain in place as historical anchors — clone the
repo and git checkout v2.4.0 (or any 2.x tag) to inspect the old
state.
Full changelog
See CHANGELOG.md for the complete history.
🇮🇩 Lintasan v0.24.0 — Setiap Koneksi Punya Jalannya.