Commit Graph

178 Commits

Author SHA1 Message Date
ops
efce4b2e1d tower 0.60.11 / tower-ui 0.61.6 — wildcard cert badge on Server Detail 2026-04-29 23:39:42 +03:00
ops
77331e5e70 tower 0.60.10 — pass cluster.name helm param (per-cluster differentiator SAN) 2026-04-29 23:27:39 +03:00
ops
a912284226 tower 0.60.9 — apply cloudflare-api-token Secret to odoosky-system 2026-04-29 23:06:56 +03:00
ops
76d1ab036d tower 0.60.8 — Argo App: SkipDryRunOnMissingResource + retry limit 10 (CRD-ordering) 2026-04-29 22:32:04 +03:00
ops
7b2fadd132 tower-ui 0.61.5 — Connect drawer: no auto-close on success, manual Done button 2026-04-29 22:25:37 +03:00
ops
78bc427201 tower 0.60.7 — set source.path=. on per-cluster platform Application 2026-04-29 22:20:46 +03:00
ops
36c4d32d51 tower 0.60.6 — rewrite kubeconfig server URL before applying secrets (URL-token Connect) 2026-04-29 22:15:32 +03:00
ops
333850d994 tower 0.60.5 — bootstrap.sh: poll for node before kubectl wait (fixes kubectl --all race on fresh k3s) 2026-04-29 22:09:47 +03:00
ops
9aa2466d8d tower 0.60.4 / tower-ui 0.61.4 — disconnect resilient to dead customer cluster 2026-04-29 21:53:00 +03:00
ops
b498e79dad tower-ui 0.61.3 — consolidate S3 settings UX (5 buttons → 2) 2026-04-29 21:37:30 +03:00
Claude
5dfdd7faa0 tower 0.60.3 — register POST /api/tenants/{id}/settings/s3-buckets/provision
Backend rebuild for the route I added in 0.60.2 + ui:0.61.2 cycle —
forgot to rebuild Go binary alongside the chart bump. 0.60.2 binary
didn't carry the handler, hence the 404 on Provision now click.
2026-04-29 21:26:29 +03:00
Claude
d8404ef309 tower-ui 0.61.2 — Provision now button for S3 buckets
POST /api/tenants/{id}/settings/s3-buckets/provision uses stored
creds to HeadBucket+MakeBucket the three derived buckets idempotently,
then persists their names to YAML. Surfaces in Settings → Backups
panel as 'Provision now' button next to the bucket list. Lets the
operator create buckets without rotating keys.
2026-04-29 21:21:49 +03:00
Claude
12250b43dd tower 0.60.2 — Test endpoint derives bucket names from slug
handleTestS3Credentials no longer requires bucket names in YAML —
testTenantS3Buckets derives from slug, same as Save's auto-create.
Test stored creds now works whether the buckets have been created
yet or not. Per-bucket result still surfaces 404 vs 403 vs other.
2026-04-29 21:15:48 +03:00
Claude
3b9d942725 tower 0.60.1 / tower-ui 0.61.1 — auto-create + auto-name S3 buckets
Tenant pastes endpoint + region + access keys. Tower auto-derives
3 bucket names from slug (<slug>-backups, -templates, -audit) and
HeadBucket+MakeBucket each at credential-save time. UI removes the
3 bucket-name inputs entirely; shows what will be created instead.

Removes the 'go to MEGA dashboard, click new bucket × 3' toil.
One credential save = three buckets ready.
2026-04-29 21:09:03 +03:00
Claude
b89c084ebd tower 0.60.0 / tower-ui 0.61.0 — Phase F.1: three buckets per tenant
Data model: PlatformTenant.S3 = { Endpoint, Region, Buckets: { Backups, Templates, Audit } }
Vault: legacy v3/data/s3{,-templates,-audit} paths wiped (decision in
docs/decisions/0001 path is bring-your-own only; per-tenant only).
UI: 3 bucket fields (Backups / Templates / Audit), single endpoint +
region + credential pair. Test does HeadBucket on each configured
bucket and reports per-bucket pass/fail.

Note: writers (audit/templates/backups handlers) still read from old
paths. Phase F.2 (next) sweeps the ~30 call sites onto a tenant-scoped
s3Factory. Tower compiles + serves API; backups+audit+templates writes
are non-functional until F.2 lands. v3 has no customers, so the
breakage window is tolerable per memory feedback_v3_disposable_no_customers.
2026-04-29 20:58:26 +03:00
Claude
4922dd6e9c fix: restore backend image.repository (clobbered by chart bump again) 2026-04-29 20:37:11 +03:00
Claude
742adfff92 tower 0.59.2 — bring-your-own only: drop platform-Vault rung from CF resolver
Per docs/decisions/0001-platform-fallback-deferred.md, instance DNS
automation no longer silently falls back to v3/platform/cloudflare-token.
Tenants without a configured CF token get a clear error at instance
create instead of pretending to work via shared infrastructure.
The platform Vault entry stays seeded for future revival.
2026-04-29 20:36:46 +03:00
Claude
86b545cf40 fix: restore image.repository keys clobbered by chart bump 2026-04-29 20:02:59 +03:00
Claude
f230056e51 tower 0.59.1 / tower-ui 0.60.0 — partial settings updates + per-card Save
Backend: UpdateTenantSettingsReq → pointer fields. Each card saves
only its own keys without clobbering the other card.

Frontend:
- 'Save Domain & DNS' button inside the Domain & DNS card
- 'Save Backups target' button inside the S3 card
- Wildcard host hidden behind 'Advanced — customize wildcard host'
  disclosure. Default is shown as read-only display under Domain so
  the operator sees what URLs their instances will land at.
- Removed the global Save settings button (each card now self-saves)
2026-04-29 19:58:21 +03:00
Claude
7b62631489 tower-ui 0.59.1 — wildcard host: value-based custom detection
Replace event-based 'touched' flag with computed isCustomWildcard.
Empty wildcard or wildcard==derived → 'auto-derived', auto-fills
on domain change. Different from derived → 'custom', sticks.
Fixes the empty-after-delete trap that kept touched=true forever.
2026-04-29 19:44:38 +03:00
Claude
082feb1e58 tower 0.59.0 — Live DNS records panel + wildcard auto-derive
- new GET /api/tenants/{id}/dns/records endpoint lists A+CNAME records
  in the tenant's CF zone matching the wildcard pattern (read-only)
- TenantSettingsTab.vue: 'Live DNS records' panel with refresh button
- wildcard host auto-derives from domain (visible value, not placeholder)
- placeholder text now generic *.tenants.example.com
2026-04-29 19:33:11 +03:00
Claude
6f926cb3df tower-ui 0.58.2 — wildcard host auto-derives from domain
Placeholder text (*.tenants.acme-erp.com) was prescriptive and
indistinguishable from the saved value. Now wildcard auto-derives
from the domain field as a real value (visible, savable, editable).
'reset to default' button surfaces when user customises.
2026-04-29 18:45:16 +03:00
Claude
ea54300706 tower-ui 0.58.1 — sidebar 'Tenant' link for tenant owners
Tenant owners had no nav link to their own tenant settings page.
Adds a 'Tenant' workspace link visible to authenticated members
of any tenant. Super-admins still use /admin/tenants list (which
shows all tenants and lets them switch).
2026-04-29 18:19:48 +03:00
Claude
cfdffc9804 tower 0.58.2 — sync platform-store reload after commits
Fixes signup race: verify→/me 401 because activate ran async-reload
and lost the race with the very next /me call. Sync reload eliminates
the window. ~50ms slower per write, much cleaner.
2026-04-29 18:13:15 +03:00
Claude
6fd12d477b tower 0.58.1 — fix signup race: issue OTP without snap-reload gate 2026-04-29 18:08:42 +03:00
Claude
81841e542b tower 0.58.0 — Phase D: landing + signup + tenantless onboarding
- public POST /api/auth/signup + magic-link verify activates pending users
- POST /api/me/tenants — tenantless self-tenant creation
- /me.tenantless flag drives /welcome routing
- resolveEffectiveTenant picks user's primary tenant when JWT drifts
- new LandingView, SignupView, WelcomeView (lazy-loaded)
- LoginView simplified to magic-link only
2026-04-29 17:25:29 +03:00
Claude
2d9d7a52ed tower 0.57.10 — Phase C: per-tenant Cloudflare DNS lifecycle 2026-04-29 16:55:55 +03:00
Claude
902abb6254 tower 0.57.9 / tower-ui 0.57.11
- relax last-owner guard for super-admin in RemoveMember
- add DELETE /api/users/{id} + admin Users delete button (cascade memberships + grants)
2026-04-29 16:47:49 +03:00
pro-777
ede480f9eb tower: 0.57.7→0.57.8 / tower-ui: 0.57.9→0.57.10 (Delete tenant + capacity graceful) 2026-04-29 15:57:38 +03:00
pro-777
0877602eba tower: 0.57.6→0.57.7 / tower-ui: 0.57.8→0.57.9 (B4: Argo health badge on Server card) 2026-04-29 15:42:14 +03:00
pro-777
fe7e2cb093 tower: 0.57.5 → 0.57.6 (B3: trim bootstrap.sh + share prepareCluster) 2026-04-29 15:33:46 +03:00
pro-777
319da7d043 tower: 0.57.4 → 0.57.5 (B2: SubmitConnect orchestrates per-tenant prepare) 2026-04-29 15:24:59 +03:00
pro-777
1a53cd74be tower-ui: 0.57.7 → 0.57.8 (Tenant Settings tab) 2026-04-29 15:02:10 +03:00
pro-777
797832cd61 tower: 0.57.3 → 0.57.4 (per-tenant settings API) 2026-04-29 14:30:15 +03:00
pro-777
1834c5a944 tower: 0.57.2 → 0.57.3 (Connect trailer: IPv4 + check Tower status) 2026-04-29 14:05:44 +03:00
pro-777
00147789b1 ingress: route /connect and /teardown to backend (customer-facing token endpoints) 2026-04-29 13:57:51 +03:00
pro-777
1344f2638c tower: 0.57.1→0.57.2 / tower-ui: 0.57.6→0.57.7 (Disconnect cluster-loop + UX) 2026-04-29 13:45:17 +03:00
pro-777
87ab9655b0 tower-ui: 0.57.5 → 0.57.6 (api.ts authFetch fix for 401s) 2026-04-29 11:46:06 +03:00
pro-777
4709f97420 tower-ui: 0.57.4 → 0.57.5 (merge /activity + /admin/audit) 2026-04-29 11:20:28 +03:00
pro-777
ebcc715434 tower-ui: 0.57.2 → 0.57.4 (useReshape + useMfaEnrollment composables) 2026-04-29 11:14:46 +03:00
pro-777
70a6ce990d tower-ui: 0.57.0 → 0.57.2 (useInstance composable refactor) 2026-04-29 11:07:12 +03:00
4ff3315bc2 ship: tower 0.57.0 -> 0.57.1 (ServeMux pattern conflict fix)
0.57.0 had a Go ServeMux ambiguity between /api/servers/{name}/capacity and /api/servers/connect-token/{token}. Moved the new endpoints to /api/connect-tokens/* to break the wildcard collision.
2026-04-29 07:55:04 +00:00
5e5b4c464c ship: tower + tower-ui 0.56.x -> 0.57.0 (multi-auth Connect)
Adds SSH-key + token-installer auth methods to Connect Server (188d). Three-tab drawer; one-time URL primitive shared with Teardown (188e). All previous behavior preserved — password tab is the default.
2026-04-29 07:49:30 +00:00
a532004ce9 ship: tower 0.56.0 -> 0.56.1 (substrate version surfacing fix)
The original 0.56.0 backend image had a stripped-binary ldflag quirk that left the substrate endpoint reporting tower=dev. b25ffbe switches to TOWER_VERSION env (chart-injected from image tag) — this bump rolls the pod onto the new image so the env-var path takes effect.

Frontend stays at 0.56.0 — nothing changed there.
2026-04-29 07:37:45 +00:00
340622f113 chart: inject TOWER_VERSION env from image tag
Lets the substrate endpoint surface the running tag without depending on Go ldflag tricks. Single source of truth: bumping the chart tag automatically bumps what the UI displays.
2026-04-29 07:30:12 +00:00
34c2b84081 ship: tower + tower-ui 0.55.0 -> 0.56.0
Bumps both image tags to 0.56.0 — the cumulative release of:
- argocd doAuth refactor + 4 tests
- instance lifecycle service extraction (179a/b/c) + 13 tests
- server lifecycle service (188a/b/c/e) + Disconnect + Teardown + 19 tests
- capability gates on lifecycle endpoints (197)
- tenant_filter + lockout primitive tests (180)
- tenant column + filter on Backups + Activity (172)
- Tenant Detail cockpit (173)

Backend tests 1 -> 58. Charter compliance pass.
2026-04-29 07:22:59 +00:00
OdooSky Bot
298cc07f3f Tower v3 0.55.0 — self-service profile (name, password, MFA, recovery, memberships, activity) 2026-04-28 21:37:19 +00:00
OdooSky Bot
d1c158ae88 Tower v3 0.54.1 — fleet-scale admin: tenant switcher pill + list/cards toggle + filters 2026-04-28 21:26:20 +00:00
OdooSky Bot
a8c3524b24 Tower v3 0.54.0 — admin panel: tenants, members, users 2026-04-28 21:22:44 +00:00
OdooSky Bot
b42160c391 Tower v3 0.53.2 — Phase H+ smtp2go magic-link delivery 2026-04-28 21:15:22 +00:00