Bump actions/setup-go from 5 to 6 - #10
Merged
Merged
Conversation
Bumps [actions/setup-go](https://github.com/actions/setup-go) from 5 to 6. - [Release notes](https://github.com/actions/setup-go/releases) - [Commits](actions/setup-go@v5...v6) --- updated-dependencies: - dependency-name: actions/setup-go dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
Contributor
Author
LabelsThe following labels could not be found: Please fix the above issues or remove invalid values from |
dvcdsys
added a commit
that referenced
this pull request
Apr 27, 2026
…s inside Changes the unit of search output from "chunk" to "file". Inspired by how grep groups hits per file but with AST-aware match boundaries and embedding-driven ranking. Old wire shape: a flat list of chunks. A file with three matching chunks ate three slots out of the user's --limit budget, scattered across the result list, often with the file appearing at positions #3 and #10 simultaneously. New wire shape: results: [ { file_path, language, best_score, matches: [ { start_line, end_line, score, content, chunk_type, symbol_name, nested_hits }, ... ] } ] total: <distinct files> Ranking: * Files ordered by best_score (the highest match score in the group) descending. * Inside each file, matches ordered by start_line ascending — natural reading order top-to-bottom. * No per-file cap on matches. The only intra-file filter is min_score. A file with 50 matches above threshold shows all 50. Window loop now targets distinct files, not chunks: factor 2..16, stops when len(file_groups) >= limit, when the vector store returns fewer rows than asked, or when the cap is hit. mergeOverlappingHits still runs FIRST (collapses nested H1⊋H2⊋H3 etc. into one match with nested_hits inside), then groupByFile lifts the survivors into file-grouped output. So a markdown file with three nested sections still produces ONE match (not one file with three), and a Go file with class+method overlap still produces a clean class match with the method as a nested hit. CLI render redesigned around the new shape: 1. /path/to/file.go [best 0.85] 4 matches · go -- [0.85] lines 61-195 (function run) ```go ... ``` + 1 more match inside: · [0.50] line 80 (function init) -- [0.42] lines 250-280 (type Server) ```go ... ``` Tests: * groupByFile: sort-by-best-score, sort-matches-by-line, preserves nested_hits, empty input. * TestSemanticSearch_NestedMarkdownMerge updated for the new shape — still asserts the H1 absorbs the two H2 sub-sections (now visible as group.Matches[0].NestedHits). * CLI search_test fixture updated to new wire shape. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
dvcdsys
added a commit
that referenced
this pull request
Apr 28, 2026
…s inside Changes the unit of search output from "chunk" to "file". Inspired by how grep groups hits per file but with AST-aware match boundaries and embedding-driven ranking. Old wire shape: a flat list of chunks. A file with three matching chunks ate three slots out of the user's --limit budget, scattered across the result list, often with the file appearing at positions #3 and #10 simultaneously. New wire shape: results: [ { file_path, language, best_score, matches: [ { start_line, end_line, score, content, chunk_type, symbol_name, nested_hits }, ... ] } ] total: <distinct files> Ranking: * Files ordered by best_score (the highest match score in the group) descending. * Inside each file, matches ordered by start_line ascending — natural reading order top-to-bottom. * No per-file cap on matches. The only intra-file filter is min_score. A file with 50 matches above threshold shows all 50. Window loop now targets distinct files, not chunks: factor 2..16, stops when len(file_groups) >= limit, when the vector store returns fewer rows than asked, or when the cap is hit. mergeOverlappingHits still runs FIRST (collapses nested H1⊋H2⊋H3 etc. into one match with nested_hits inside), then groupByFile lifts the survivors into file-grouped output. So a markdown file with three nested sections still produces ONE match (not one file with three), and a Go file with class+method overlap still produces a clean class match with the method as a nested hit. CLI render redesigned around the new shape: 1. /path/to/file.go [best 0.85] 4 matches · go -- [0.85] lines 61-195 (function run) ```go ... ``` + 1 more match inside: · [0.50] line 80 (function init) -- [0.42] lines 250-280 (type Server) ```go ... ``` Tests: * groupByFile: sort-by-best-score, sort-matches-by-line, preserves nested_hits, empty input. * TestSemanticSearch_NestedMarkdownMerge updated for the new shape — still asserts the H1 absorbs the two H2 sub-sections (now visible as group.Matches[0].NestedHits). * CLI search_test fixture updated to new wire shape. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
dvcdsys
added a commit
that referenced
this pull request
May 12, 2026
…s inside Changes the unit of search output from "chunk" to "file". Inspired by how grep groups hits per file but with AST-aware match boundaries and embedding-driven ranking. Old wire shape: a flat list of chunks. A file with three matching chunks ate three slots out of the user's --limit budget, scattered across the result list, often with the file appearing at positions #3 and #10 simultaneously. New wire shape: results: [ { file_path, language, best_score, matches: [ { start_line, end_line, score, content, chunk_type, symbol_name, nested_hits }, ... ] } ] total: <distinct files> Ranking: * Files ordered by best_score (the highest match score in the group) descending. * Inside each file, matches ordered by start_line ascending — natural reading order top-to-bottom. * No per-file cap on matches. The only intra-file filter is min_score. A file with 50 matches above threshold shows all 50. Window loop now targets distinct files, not chunks: factor 2..16, stops when len(file_groups) >= limit, when the vector store returns fewer rows than asked, or when the cap is hit. mergeOverlappingHits still runs FIRST (collapses nested H1⊋H2⊋H3 etc. into one match with nested_hits inside), then groupByFile lifts the survivors into file-grouped output. So a markdown file with three nested sections still produces ONE match (not one file with three), and a Go file with class+method overlap still produces a clean class match with the method as a nested hit. CLI render redesigned around the new shape: 1. /path/to/file.go [best 0.85] 4 matches · go -- [0.85] lines 61-195 (function run) ```go ... ``` + 1 more match inside: · [0.50] line 80 (function init) -- [0.42] lines 250-280 (type Server) ```go ... ``` Tests: * groupByFile: sort-by-best-score, sort-matches-by-line, preserves nested_hits, empty input. * TestSemanticSearch_NestedMarkdownMerge updated for the new shape — still asserts the H1 absorbs the two H2 sub-sections (now visible as group.Matches[0].NestedHits). * CLI search_test fixture updated to new wire shape. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
dvcdsys
added a commit
that referenced
this pull request
May 12, 2026
…s inside Changes the unit of search output from "chunk" to "file". Inspired by how grep groups hits per file but with AST-aware match boundaries and embedding-driven ranking. Old wire shape: a flat list of chunks. A file with three matching chunks ate three slots out of the user's --limit budget, scattered across the result list, often with the file appearing at positions #3 and #10 simultaneously. New wire shape: results: [ { file_path, language, best_score, matches: [ { start_line, end_line, score, content, chunk_type, symbol_name, nested_hits }, ... ] } ] total: <distinct files> Ranking: * Files ordered by best_score (the highest match score in the group) descending. * Inside each file, matches ordered by start_line ascending — natural reading order top-to-bottom. * No per-file cap on matches. The only intra-file filter is min_score. A file with 50 matches above threshold shows all 50. Window loop now targets distinct files, not chunks: factor 2..16, stops when len(file_groups) >= limit, when the vector store returns fewer rows than asked, or when the cap is hit. mergeOverlappingHits still runs FIRST (collapses nested H1⊋H2⊋H3 etc. into one match with nested_hits inside), then groupByFile lifts the survivors into file-grouped output. So a markdown file with three nested sections still produces ONE match (not one file with three), and a Go file with class+method overlap still produces a clean class match with the method as a nested hit. CLI render redesigned around the new shape: 1. /path/to/file.go [best 0.85] 4 matches · go -- [0.85] lines 61-195 (function run) ```go ... ``` + 1 more match inside: · [0.50] line 80 (function init) -- [0.42] lines 250-280 (type Server) ```go ... ``` Tests: * groupByFile: sort-by-best-score, sort-matches-by-line, preserves nested_hits, empty input. * TestSemanticSearch_NestedMarkdownMerge updated for the new shape — still asserts the H1 absorbs the two H2 sub-sections (now visible as group.Matches[0].NestedHits). * CLI search_test fixture updated to new wire shape. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
dvcdsys
added a commit
that referenced
this pull request
May 14, 2026
After the workspace_repos → git_repos + workspace_projects split,
docs and stale comments still referenced concepts that no longer
exist.
- workspaces.md + doc/WORKSPACES.md: rewrite lifecycle, REST API
reference, webhook URL examples, and clone-dir paths to use
projects.path_hash, /git-repos, /workspaces/{id}/projects, and
/projects/{hash}/reindex.
- Both skills/cix-workspace/SKILL.md and
plugins/cix/skills/cix-workspace/SKILL.md: replace
/workspaces/{id}/repos/{repo_id}/reindex with
/projects/{hash}/reindex. New plugins/cix/scripts/sync-skills.sh
keeps the duplicate copies byte-identical going forward.
- Code comments updated across config.go, callgraph.go,
repocloner.go, githubapi.go, workspaces.go, and
AddExistingProjectDialog.tsx to point at gitrepos /
workspace_projects / projects.path_hash instead of the dead
workspacerepos.* names.
Resolves Fix #8, #9, #10, #19.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
dvcdsys
added a commit
that referenced
this pull request
May 14, 2026
After the workspace_repos → git_repos + workspace_projects split,
docs and stale comments still referenced concepts that no longer
exist.
- workspaces.md + doc/WORKSPACES.md: rewrite lifecycle, REST API
reference, webhook URL examples, and clone-dir paths to use
projects.path_hash, /git-repos, /workspaces/{id}/projects, and
/projects/{hash}/reindex.
- Both skills/cix-workspace/SKILL.md and
plugins/cix/skills/cix-workspace/SKILL.md: replace
/workspaces/{id}/repos/{repo_id}/reindex with
/projects/{hash}/reindex. New plugins/cix/scripts/sync-skills.sh
keeps the duplicate copies byte-identical going forward.
- Code comments updated across config.go, callgraph.go,
repocloner.go, githubapi.go, workspaces.go, and
AddExistingProjectDialog.tsx to point at gitrepos /
workspace_projects / projects.path_hash instead of the dead
workspacerepos.* names.
Resolves Fix #8, #9, #10, #19.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
6 tasks
dvcdsys
added a commit
that referenced
this pull request
May 22, 2026
…ct identity
Introduce a per-user authorization model so a shared cix-server can serve
agents of many users safely, and fix local-project identity collisions across
machines.
Authorization (server + dashboard):
- Roles renamed viewer -> user; two-tier RBAC (admin, user).
- Projects/workspaces gain owner_user_id; external projects (git_repos peer)
are ownerless and admin-administered.
- New view_groups + membership + project/workspace share tables. Members of a
group get read/search on external projects and workspaces shared to it.
- Access enforced in handlers (requireProjectAccess/Ownership,
requireWorkspaceVisible/Ownership, mustBeAdmin): list filtering, owner-on
create, admin-only git-repos/github-tokens/groups, owner-or-admin mutations.
- New endpoints: groups CRUD + members, project/workspace shares,
PUT /projects/{hash}/owner; /auth/me returns the caller's groups.
- Dashboard: View Groups admin module, share-to-group cards, reassign-owner,
role-aware control hiding.
Per-machine project identity:
- Local project key is namespaced local:{machine_id}:{path}; path_hash derives
from it so the same path on different machines/users no longer collides.
display_path holds the real path; machine_id/machine_label added.
- CLI generates ~/.cix/machine_id, sends it on create, and computes the
matching hash (client.EncodeProjectPath); server is the formula authority.
Migrations #10 (auth) and #11 (machine identity): existing users -> admin,
local projects + workspaces -> first active admin, external stay ownerless;
display_path backfilled. Breaking — announce in release notes; re-init local
projects. Coordinated CLI<->server bump.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
dvcdsys
added a commit
that referenced
this pull request
May 25, 2026
The owner_user_id column is correctly populated in SQLite by migration #10 (local projects → first active admin; workspaces → creator), and the OpenAPI schema already declares the field on both Project and Workspace — but the conversion functions never wrote it to the wire. Result: GET /api/v1/projects and GET /api/v1/workspaces returned every row with owner_user_id absent, so the dashboard had no way to render "owned by X" vs "external" indicators (and the recent direct-access audit could only classify projects by the absence of the field, not by its real value). Two one-liners: - projectToOpenAPI in server.go now copies p.OwnerUserID → out.OwnerUserId (both *string; nil means ownerless == external). - workspacePayload gains OwnerUserID *string and workspaceToPayload copies it through. The struct shape now matches openapi.Workspace field-for-field, as the doc comment already claimed. No schema or generated-code changes needed — both schemas already had the property declared. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
dvcdsys
added a commit
that referenced
this pull request
May 25, 2026
The owner_user_id column is correctly populated in SQLite by migration #10 (local projects → first active admin; workspaces → creator), and the OpenAPI schema already declares the field on both Project and Workspace — but the conversion functions never wrote it to the wire. Result: GET /api/v1/projects and GET /api/v1/workspaces returned every row with owner_user_id absent, so the dashboard had no way to render "owned by X" vs "external" indicators (and the recent direct-access audit could only classify projects by the absence of the field, not by its real value). Two one-liners: - projectToOpenAPI in server.go now copies p.OwnerUserID → out.OwnerUserId (both *string; nil means ownerless == external). - workspacePayload gains OwnerUserID *string and workspaceToPayload copies it through. The struct shape now matches openapi.Workspace field-for-field, as the doc comment already claimed. No schema or generated-code changes needed — both schemas already had the property declared. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Merged
6 tasks
dvcdsys
added a commit
that referenced
this pull request
May 25, 2026
…, polling Audit found a handful of post-release drift in README.md that we missed in the v0.6.0 PR. None of it changes user behaviour; the docs just stopped describing the actual product: Role naming - Users page: "admin / viewer" → "admin / user". The 'viewer' role was removed in migration #10; default for new users is 'user'. Removed feature gates - CIX_WORKSPACES_ENABLED — workspaces are always-on since c530d65. Admin-only surfaces that the table marked as "everyone" - GitHub Tokens page is admin-only (every handler asserts mustBeAdmin). New v0.6.0 surfaces added to the Dashboard table - Groups (admin) — view-group membership. - Managed Tunnels (admin) — Cloudflare / ngrok config + status. New "What you get" bullets - Ownership + view-group sharing model. - Managed Tunnels (Cloudflare + ngrok) for webhook ingress behind NAT. - Git polling sync as a webhook alternative. New short "Authorization model" subsection (the README only described the authentication layer; the access matrix was implicit). CLI Workspaces command examples - `cix workspace "<name>" show` → describe (no `show` alias exists). - Added `repos` verb. Env-var table additions (and one removal) - + CIX_SECRET_KEY / _KEYFILE (PAT encryption, auto-keyfile fallback). - + CIX_REPOS_DIR (workspace clone dir; legacy CIX_WORKSPACES_DATA_DIR alias). - + CIX_PUBLIC_URL (webhook origin; trumped by live tunnel). - + CIX_LOG_LEVEL. - + CIX_DEFAULT_POLL_INTERVAL (polling sync cadence). - + CIX_TUNNEL_BIN_MANAGED (auto-install Cloudflare/ngrok agent). - - CIX_WORKSPACES_ENABLED (gate removed).
6 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.
Bumps actions/setup-go from 5 to 6.
Release notes
Sourced from actions/setup-go's releases.
... (truncated)
Commits
4b73464Fix golang download url to go.dev (#469)a5f9b05Update default Go module caching to use go.mod (#705)7a3fe6cBump qs from 6.14.0 to 6.14.1 (#703)b9adafdBump actions/checkout from 5 to 6 (#686)d73f6bcREADME.md: correct to actions/checkout@v6 (#683)ae252eeBump@actions/cacheto v5 (#695)bf7446aBump js-yaml from 3.14.1 to 3.14.2 (#682)02aadfeFix Node.js version in action.yml (#691)4aaadf4Example for restore-only cache in documentation (#696)4dc6199Bump semver and@types/semver(#652)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)