Skip to content

Bump actions/setup-go from 5 to 6 - #10

Merged
dvcdsys merged 1 commit into
mainfrom
dependabot/github_actions/actions/setup-go-6
Mar 25, 2026
Merged

Bump actions/setup-go from 5 to 6#10
dvcdsys merged 1 commit into
mainfrom
dependabot/github_actions/actions/setup-go-6

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Mar 23, 2026

Copy link
Copy Markdown
Contributor

Bumps actions/setup-go from 5 to 6.

Release notes

Sourced from actions/setup-go's releases.

v6.0.0

What's Changed

Breaking Changes

Make sure your runner is on version v2.327.1 or later to ensure compatibility with this release. See Release Notes

Dependency Upgrades

New Contributors

Full Changelog: actions/setup-go@v5...v6.0.0

v5.6.0

What's Changed

Full Changelog: actions/setup-go@v5...v5.6.0

v5.5.0

What's Changed

Bug fixes:

Dependency updates:

New Contributors

Full Changelog: actions/setup-go@v5...v5.5.0

... (truncated)

Commits

Dependabot compatibility score

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 rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will 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 version will 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 dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

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>
@dependabot @github

dependabot Bot commented on behalf of github Mar 23, 2026

Copy link
Copy Markdown
Contributor Author

Labels

The following labels could not be found: ci, dependencies. Please create them before Dependabot can add them to a pull request.

Please fix the above issues or remove invalid values from dependabot.yml.

@dvcdsys
dvcdsys merged commit a45719a into main Mar 25, 2026
1 check passed
@dvcdsys
dvcdsys deleted the dependabot/github_actions/actions/setup-go-6 branch March 25, 2026 16:21
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>
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>
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).
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