feat(server): organize environments — tags, search, and group-by - #78
Open
louisreingold wants to merge 1 commit into
Open
feat(server): organize environments — tags, search, and group-by#78louisreingold wants to merge 1 commit into
louisreingold wants to merge 1 commit into
Conversation
The env list had become a wall of ~47 rows with no way to find anything. This adds lightweight organization without touching anything canonical (name/dir/compose project stay immutable): - Registry records gain a `tags` array (normalizeTags in ops.js: lowercased, whitespace-collapsed, deduped, max 20 x 32 chars), exposed in publicView as `tags` ([] when unset — no migration needed). - PATCH /environments/:id now takes `displayName` and/or `tags`, each optional and independently applied (full-replacement semantics for tags; [] clears). 400 when neither is present. - New MCP tool set_environment_tags (same normalize path), documented in AGENT_USAGE.md next to the PATCH row. - UI sidebar: a search box (matches name, displayName, preset, and tags; a leading # is stripped so "#demo" == "demo"), a group-by selector (flat / by preset / by tag — persisted in localStorage) with sticky collapsible group headers, and most-recently-used sort (an env's recency = its newest session lastActivityAt, falling back to createdAt). Under "by tag" an env appears under each of its tags; untagged envs land in an "untagged" bucket at the end. - Env rows render clickable #tag chips (click = filter by that tag); the rename modal gains a comma-separated tags field and now does rename + tag in one PATCH. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012wAFFJfN1MJvRqL9YyU3Zw
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.
Fixes the "wall of stopped environments" problem: ~47 envs with no way to find, group, or label anything.
What's new
Tags — each env can carry short labels (
demo,repro,client-x, …). Stored on the registry record, normalized server-side (lowercase, deduped, max 20 × 32 chars). No migration: old records just read as[].One metadata PATCH —
PATCH /environments/:idnow acceptsdisplayNameand/ortags, each optional, only present fields touched. Tags are full-replacement ([]clears). The rename modal became "Rename & tag" and submits both in one call.MCP — new
set_environment_tagstool (same normalize path as HTTP), so agents can label envs they create. Documented in AGENT_USAGE.md.Sidebar —
#demo≡demo.untaggedbucket at the end.#tagchips — click one to filter the list by it.Notes
🤖 Generated with Claude Code
https://claude.ai/code/session_012wAFFJfN1MJvRqL9YyU3Zw