feat(compat): uteke compatibility gate + namespace management UI - #306
Merged
Merged
Conversation
- compat.ts: serverVersion() via docs.versionStatus() (60s cache),\n has(feature)/gatedFeatures() semver compare, _resetCompatCache test hook\n- Map: graphEdgeWrite + namespaceMove + namespaceManage all >= 0.16.1\n (#1182 graph FK fix, #1183 namespace management - merged in uteke\n develop, unreleased)\n- 5 unit tests (91 total green), tsc clean\n\nPart of #289, epic ref.
- NamespaceManager.svelte in Settings > Workspace: table with\n active/deprecated breakdown (falls back to total on old servers),\n rename/merge dialog (atomic update; existing target = merge),\n delete with explicit strategy (refuse / merge into / deprecate)\n- All actions disabled with honest "needs uteke >= 0.16.1" tooltip when\n the compat gate reports an older server (default ns protected)\n- compat.ts (#289) drives the gate via docs.versionStatus()\n\nAPI contract verified live against uteke develop build (sandbox):\nPUT /memory {namespace}; POST /namespaces/rename -> {from,to,moved,\ntarget_existed}; /namespaces/delete {strategy} -> {affected};\nwith_counts breakdown {active, deprecated}. Merge round-trip: moved 2.\n\nLocal gates: tsc clean, 91/91 tests, build green, journey 0 failures.\n\nPart of #297, epic #289. Requires uteke >= 0.16.1 (management), 0.16.0+ (table).
🔍 Cora AI Code Review✅ No issues found. Code looks good! Review powered by cora-code · BYOK · MIT |
…gatedFeatures null semantics - Rename button now guarded for the protected default workspace too\n (server-side rename moves ALL memories out of )\n- rename/delete go through docs.namespaceRename/namespaceDelete ipc\n (transport-aware) instead of raw fetch to /api/*\n- gatedFeatures(): null when server unknown — callers can't claim support\n- Verified: tsc clean, 91/91 tests, build green, journey 0 failures\n\nAddresses 3 code-scanning alerts on this PR.
| const enriched: NamespaceRow[] = []; | ||
| for (const name of raw) { | ||
| try { | ||
| const s = await memoryApi.stats(name); |
#306 scan alert) - docs.namespacesBreakdown(): single GET /namespaces?with_counts=true\n (active/deprecated fields present on 0.16.1+; older servers return\n totals only and the UI falls back gracefully)\n- load() no longer issues N serial stats calls\n\n91/91 tests, tsc clean, build green, journey gate 0 failures.
5 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Two slices on one branch (shared compat foundation):
compat.ts(Redesign compatibility gate — min uteke version map + runtime feature detection (epic) #289) — uteke server compatibility gate:serverVersion()(viadocs.versionStatus(), 60s cache),has(feature)/gatedFeatures()semver compare,_resetCompatCache()test hook. Compatibility map:graphEdgeWrite/namespaceMove/namespaceManageall ≥ 0.16.1 (uteke #1182 graph FK fix, #1183 namespace management — merged in uteke develop, not yet released).NamespaceManager (Namespace UX: switcher + filter chips + read-only management table (gated actions) #297) — Settings → Workspace:
{from,to,moved,target_existed})moved: 2, target_existed: true), breakdown fields, delete strategy all verified through the app's own/apiproxyWhy
Namespaces are a derived column (no CRUD pre-0.16.1). UI ships now but stays honest about capability: disabled + upgrade hint instead of fake buttons (#289 contract). Fixes the "wrong namespace" mistake class with one-click move/merge.
Testing
{failures: []}exit 0Requires uteke: 0.16.0+ (table) / ≥ 0.16.1 (management actions, from #1183). Refs: #297, #289