Skip to content

release: v0.3.1-beta.1#163

Merged
ajianaz merged 7 commits into
mainfrom
develop
Jul 9, 2026
Merged

release: v0.3.1-beta.1#163
ajianaz merged 7 commits into
mainfrom
develop

Conversation

@ajianaz

@ajianaz ajianaz commented Jul 9, 2026

Copy link
Copy Markdown
Collaborator

Merge develop → main for the v0.3.1-beta.1 patch pre-release.

See CHANGELOG.md ([0.3.1-beta.1] section) and #162.

After merge, tag v0.3.1-beta.1 on main to trigger the release build (marked as prerelease).

ajianaz added 7 commits July 9, 2026 02:09
Memories/Dashboard scroll fix + drop document namespace entirely with a uteke 0.7.0 version gate (documents are global since #614). Adds version detection (uteke --version), cached in AppState, gated per-doc-command, with an update-required banner + Update button in DocumentsView. Non-doc features keep working on older uteke. Also syncs package-lock to 0.3.0. All gates green: fmt/clippy(--all-targets)/13 tests/svelte-check/build.
* refactor(rooms): remove Participants tab (#155)

The Participants tab was unreliable: uteke-serve /room/stats returns a
participant COUNT but not the participant_namespaces list, so the tab
fell back to deriving agents from the 50 most-recent room memories and
undercounted (sidebar showed N, tab showed 1). Rather than depend on an
upstream uteke-serve change, drop the tab entirely — simpler UX.

Removed: Participant interface, loadParticipants/getParticipants, the
participants $effect, roomStatsData/participantsLoading state, the tab
button + content, and the participant CSS. The sidebar room-card still
shows the authoritative server participant_count ("N agents").

Closes #155

* refactor(rooms): also drop sidebar participant count (#155)

With the Participants tab gone, the room-card "N agents" count had no
drill-down behind it. Remove it (and the now-unused participant_count
field on UtekeRoom) for consistency.
Load all docs once and build the parent→children tree client-side so the
full hierarchy is visible upfront (Obsidian/Outline-like), instead of only
roots with lazy-expanded children. Folders now render with Folder/FolderOpen
icons distinct from leaf FileText, show a child-count badge, and use guide
lines + deeper indent for clearer nesting. Expanded-by-default.

Refs #156
…#159)

* fix(docs): default doc_list limit to 1000

uteke-serve /doc/list defaults limit to 5 (shared memory pagination
default). The doc tree fetches the full flat list client-side to build
the hierarchy, so omitting limit silently capped it at 5 docs.

Side effect: parent folders whose children fell outside the first 5
results had an empty childrenCache, so isFolder evaluated false and no
expand/collapse chevron rendered — the tree could not be toggled.

Default to 1000 in the Tauri command so the installed uteke 0.7.0
works without waiting for the upstream default fix (uteke #634).

* fix(docs): require uteke >= 0.7.1 for documents

Bump MIN_UTEKE_FOR_DOCS from 0.7.0 to 0.7.1.

Symptom: deleting a document failed with "uteke error: server returned
400 Bad Request". Root cause: uteke 0.7.0 has no /doc/delete route —
document delete/move landed in 0.7.1. The old gate (0.7.0) let Corin
run against an incomplete server and surface a confusing 400.

Raising the gate to 0.7.1 makes require_uteke_version reject 0.7.0 up
front with a clear message, and the Documents view renders its upgrade
banner so the user runs uteke upgrade (0.7.1 is released) and gets the
full doc feature set.

Comments referencing the old 0.7.0 floor updated across lib/commands/
uteke_client. Added a docs_gate_requires_0_7_1 test.

* fix(docs): remote-aware uteke version gating

The documents version gate read AppState::uteke_version, which is the
LOCAL 'uteke --version' CLI output. When Corin connects to a remote
uteke-serve (https/host URL), the local CLI version is irrelevant —
the server may be older or newer — yet the gate compared against the
CLI and falsely told remote users to 'run uteke upgrade'.

Now:
- Track AppState::uteke_remote (set from is_remote_url at startup).
- resolve_uteke_version() probes the remote server's self-reported
  version via GET /health (uteke >= health-version patch) and falls
  back to the cached CLI version for local servers.
- require_uteke_version / uteke_version_status treat a remote server
  with an UNKNOWN version leniently (allow through, no upgrade banner)
  — remote servers are user-managed and surface real errors directly.
  Local servers keep the strict gate.
- uteke_self_update skips the local CLI upgrade for remote servers and
  just re-probes the server version.

Depends on upstream /health version field (uteke #636) for precise
remote detection; without it, remote-unknown is handled leniently so
remote users are no longer blocked.
Parent folders in the document tree could not be expanded/collapsed.

Root cause: a Svelte 5 reactivity bug. expandedIds is a $state Set and
the tree snippet reads it via {@const expanded = expandedIds.has(id)}.
The toggle handlers mutated the Set in place (expandedIds.add/delete)
and then reassigned the SAME reference (expandedIds = expandedIds). In
Svelte 5 this does NOT re-run {@const} reads, so the {#if expanded}
block never updated — clicks changed the Set but the UI stayed put.

Fix: use immutable updates everywhere expandedIds/childrenCache change
— build a new Set/Map and reassign the new reference. This reliably
triggers Svelte 5 to re-render the snippet.

Sites updated:
- toggleNode, expandPathToDoc, selectDoc (expandedIds)
- loadChildren (childrenCache)

Added a regression test (TreeRepro.svelte + set-reactivity.test) that
fails with the old in-place pattern and passes with the immutable one.
Document breadcrumbs were display-only (truncated UUID segments).
Now each ancestor crumb is clickable and navigates to that parent doc.

- Build a flat id→DocEntry lookup (docById) in loadRootDocs from the
  already-loaded full doc list — no extra network requests.
- getBreadcrumb() resolves selectedDoc.path (materialized ancestor UUID
  chain) to real DocEntry[] via docById.
- Each crumb renders the ancestor title and calls selectDoc(ancestor)
  on click. 'Documents' root crumb still clears the selection.
Patch pre-release of the document-tree fixes and UX improvements.

- bump package.json / tauri.conf.json / Cargo.toml → 0.3.1-beta.1
  (also aligns Cargo.toml, which was stuck at 0.2.0)
- CHANGELOG entry
- release.yml: mark hyphenated tags as GitHub prereleases
@github-actions

github-actions Bot commented Jul 9, 2026

Copy link
Copy Markdown

🔍 Cora AI Code Review

⚠️ Review could not complete. Cora produced an empty result. Check the workflow logs for errors.


Review powered by cora-cli · BYOK · MIT

@ajianaz ajianaz merged commit 3e01be3 into main Jul 9, 2026
15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant