Skip to content

Releases: sanhaji182/lintasan

v0.26.2 — Design System Migration + Error Handling

Choose a tag to compare

@sanhaji182 sanhaji182 released this 30 Jun 08:55

[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

Choose a tag to compare

@sanhaji182 sanhaji182 released this 30 Jun 08:12

[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

Choose a tag to compare

@sanhaji182 sanhaji182 released this 30 Jun 07:58

[0.26.0] — 2026-06-30

Added

  • Connection Pool Management with Multi-Account Load Balancing. Group multiple API keys under a pool_id to 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_id column + 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

Choose a tag to compare

@sanhaji182 sanhaji182 released this 30 Jun 07:49

[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=false and 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.md and docs/qa-test-report.md covering beta-readiness P0+P1 batch and OAuth IDE experimental feature.

Changed

  • Repo renamed from lintasan-golintasan across 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 _ = lastStatusCode replaced 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

Choose a tag to compare

@sanhaji182 sanhaji182 released this 05 Jun 07:52

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

  • handlePluginGenerate is 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_model setting" hint if
      not configured (no fake template returned)
    • 503 if no master key is configured
    • Otherwise: self-call /v1/chat/completions on 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
  • handleCosts reads real data. Previously returned hardcoded
    zeros. Now aggregates request_logs by model for "today" and "this
    month" and computes cost per row via cost.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 sent PUT but the server registered POST. Aligned the
    frontend to POST (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 key
    • TestHandleCosts_* (2 cases) — empty-DB shape, real aggregation
      from seeded request_logs rows
    • TestStripCodeFences, TestSanitizeName, TestRound2 — helpers
  • Suite: 826/826 passing in 44 packages, go vet clean.

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

Choose a tag to compare

@sanhaji182 sanhaji182 released this 05 Jun 06:07

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 covering parseCurlCommand, inferNameFromHost, tokenizeCurl / stripQuotes, and handleCurlImport HTTP error paths. Closes a coverage gap on an endpoint that was active in production with zero tests. Commit 84874cf.

Fixed

  • Proxy response header forwarding — Go's http.Transport auto-decompresses Content-Encoding: gzip and resets Content-Length and Transfer-Encoding on 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 in internal/proxy/proxy.go (chat completions + 2 streaming paths). Commit c030fdd.

Housekeeping

  • 30+ merged feat/* and fix/* branches pruned (lokal + remote).
  • 2 stale unmerged branches removed: feat/provider-sdk-foundation (work already in main via F1+F2 chain) and frontend-t949aa391 (kanban worktree orphan, worktree dir also removed).
  • feat/curl-import-connection dropped (2-ahead branch with noisy 9-commit base); the one substantive fix it contained was re-extracted and landed in main as c030fdd applied to all three call sites.
  • Repo audit state captured in AGENTS.md §12 as 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:118 interactive 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

Choose a tag to compare

@sanhaji182 sanhaji182 released this 05 Jun 05:07

Lintasan v0.24.0 — Versioning Reset

First release of the 0.x.x (pre-1.0) series. The .24 keeps continuity with the prior v2.4.0 work; the v2.4.0 tag 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.x0.x.x. All version strings, README,
    AGENTS.md, dashboard docs page, and CHANGELOG updated.
  • Curl import endpoint: POST /api/connections/import-curl is now
    active in the prod hot path. Lets you paste a curl command and
    get a connection preset back. Implementation in
    internal/server/curl_import.go (354 lines; tests are a known gap
    tracked in AGENT.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 from git + 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.0Setiap Koneksi Punya Jalannya.