You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- UsageBar: treat limit < 0 as "unlimited" (∞ label, neutral bar) instead
of rendering a literal "-1"; call sites pass raw -1 and drop the per-call
workaround.
- OverviewPage + useDashboardCtx: source the deployments count from
GET /api/v1/deployments (api.listDeployments) — deployments are a separate
table, never resource_type==='deploy' rows in /api/v1/resources, so the old
filter was always 0.
- OverviewPage connections tile: drop the connections_in_use numerator the
API never emits; show the aggregate per-tier connection ceiling and skip
-1 (unlimited) when summing so it can't corrupt the denominator.
- ChangelogPage: add factual entries for 2026-05-15 (Pro storage bump +
annual pricing), 2026-05-16 (tier enforcement + billing resilience), and
2026-05-17 (P0/P1 bug-hunt fixes).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- public/llms.txt (synced copy): same upgrade_url->upgrade + pgvector fixes
applied to content/llms.txt (manual sync per CLAUDE.md).
Copy file name to clipboardExpand all lines: public/llms.txt
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -14,7 +14,7 @@ On a prompt like that, the agent should: `POST /db/new` for Postgres, write the
14
14
15
15
## API endpoints
16
16
17
-
All accept `POST` against `https://api.instanode.dev`. No authentication header required for the anonymous tier, but every request body **must** include `name` (see below). Response shape: `{ok, token, connection_url, internal_url, tier, limits, note, upgrade_jwt, upgrade_url}` for db/cache/nosql/queue — where `upgrade_url` is the human-readable claim link (e.g. `https://instanode.dev/start?t=<jwt>`) and `upgrade_jwt` is the raw JWT for programmatic use. `/webhook/new` returns `receive_url` (no internal_url). `/storage/new` adds `endpoint`, `access_key_id`, `secret_access_key`, `prefix` alongside `connection_url`.
17
+
All accept `POST` against `https://api.instanode.dev`. No authentication header required for the anonymous tier, but every request body **must** include `name` (see below). Response shape: `{ok, token, connection_url, internal_url, tier, limits, note, upgrade_jwt, upgrade}` for db/cache/nosql/queue — where `upgrade` is the human-readable claim link (e.g. `https://api.instanode.dev/start?t=<jwt>`) and `upgrade_jwt` is the raw JWT for programmatic use. `/webhook/new` returns `receive_url` (no internal_url). `/storage/new` adds `endpoint`, `access_key_id`, `secret_access_key`, `prefix` alongside `connection_url`.
18
18
19
19
### Required `name` field (all provisioning endpoints)
Pick a descriptive name per resource (e.g. `"prod-db"`, `"sessions-cache"`, `"events-queue"`) so the user can tell resources apart later.
30
30
31
-
- **`POST /db/new`** — Postgres database. Requires `name`. `pgvector` pre-installed (HNSW + IVFFlat indexes work). Returns `connection_url` in the form `postgres://USER:PASS@HOST:PORT/DB`. Use any standard Postgres client / driver.
31
+
- **`POST /db/new`** — Postgres database. Requires `name`. Returns `connection_url` in the form `postgres://USER:PASS@HOST:PORT/DB`. Use any standard Postgres client / driver. (For pgvector / HNSW + IVFFlat similarity search, use the separate `POST /vector/new` endpoint.)
32
32
- **`POST /cache/new`** — Redis. Requires `name`. Per-token ACL'd user + namespaced keyspace. Returns `connection_url` in the form `redis://:PASS@HOST:PORT/DB`.
33
33
- **`POST /nosql/new`** — MongoDB. Requires `name`. Per-token user scoped to a single database. Returns a `mongodb://...` connection URL. The per-token connection budget is documented in the response `limits.connections` field (e.g. anonymous = 2). The underlying shared-tenant pod admits up to 20 simultaneous connections across all tokens, so plan agents to stay well below their per-token allocation under burst.
34
34
- **`POST /queue/new`** — NATS JetStream. Requires `name`. Returns `connection_url` (`nats://pool-<uuid>@host:4222`) with per-account subject isolation baked into the URL. No separate creds file — pass the connection_url directly to any NATS client. Durable streams, request/reply, pub/sub.
Copy file name to clipboardExpand all lines: src/pages/ChangelogPage.tsx
+31Lines changed: 31 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -37,6 +37,37 @@ interface ChangelogEntry {
37
37
* each bullet single-line, no marketing fluff — the audience is a
38
38
* procurement reviewer or an on-call engineer checking what changed. */
39
39
constENTRIES: ChangelogEntry[]=[
40
+
{
41
+
date: '2026-05-17',
42
+
title: 'Bug-hunt remediation — P0/P1 fixes',
43
+
bullets: [
44
+
'Hardened POST /claim against account-takeover: a claim now requires the session it claims into and no longer mints a token for a pre-existing email.',
45
+
'Large deploy tarballs are read in full (io.ReadAll) — fixed a truncation bug where big multipart uploads built on a partly-zero buffer.',
46
+
'Redeploys now re-resolve vault:// env references, so vault-backed apps no longer break on redeploy.',
47
+
'Customer-deploy NetworkPolicy egress now covers the production DOKS pod/service CIDRs (was hardcoded to the dev cluster ranges).',
48
+
],
49
+
},
50
+
{
51
+
date: '2026-05-16',
52
+
title: 'Tier enforcement + billing resilience',
53
+
bullets: [
54
+
'Provisioning responses now redact secret-bearing env values (credential URLs, *_KEY/_SECRET/_TOKEN keys); the dashboard masks them behind a reveal toggle.',
55
+
'Storage-quota enforcement now does a real provisioner-side revoke (Postgres REVOKE CONNECT, Redis ACL disable, Mongo role revoke) with auto-unsuspend when usage drops.',
56
+
'Plan upgrades now elevate deployments and stacks alongside resources and clear their anonymous 24h TTL — a paid app is no longer expired by the lifecycle worker.',
57
+
'Billing reconciler added: a 15-minute poll against Razorpay closes any missed-webhook gap in either direction.',
58
+
'Dedicated Redis is capped at provision time with a per-tier maxmemory; the entitlement reconciler re-applies the cap on tier changes.',
59
+
],
60
+
},
61
+
{
62
+
date: '2026-05-15',
63
+
title: 'Pro storage bump + annual pricing',
64
+
bullets: [
65
+
'Pro-tier storage raised to 10 GB Postgres / 512 MB Redis / 5 GB MongoDB — a material limits increase across all Pro subscriptions.',
66
+
'Annual billing added for Hobby, Hobby Plus, Pro, and Team: same limits as the monthly plans, billed yearly at a discount.',
67
+
'Free, Hobby Plus, and Growth tiers reconciled across the pricing page, billing page, and API documentation so every surface quotes the same numbers.',
68
+
'Default provisioning environment is now "development" — a call that omits `env` lands in the lowest-stakes bucket instead of merging with production state.',
0 commit comments