Skip to content

Bump github.com/fsnotify/fsnotify from 1.7.0 to 1.9.0 in /cli - #3

Closed
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/go_modules/cli/github.com/fsnotify/fsnotify-1.9.0
Closed

Bump github.com/fsnotify/fsnotify from 1.7.0 to 1.9.0 in /cli#3
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/go_modules/cli/github.com/fsnotify/fsnotify-1.9.0

Conversation

@dependabot

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

Copy link
Copy Markdown
Contributor

Bumps github.com/fsnotify/fsnotify from 1.7.0 to 1.9.0.

Release notes

Sourced from github.com/fsnotify/fsnotify's releases.

v1.9.0

Changes and fixes

  • all: make BufferedWatcher buffered again (#657)

  • inotify: fix race when adding/removing watches while a watched path is being deleted (#678, #686)

  • inotify: don't send empty event if a watched path is unmounted (#655)

  • inotify: don't register duplicate watches when watching both a symlink and its target; previously that would get "half-added" and removing the second would panic (#679)

  • kqueue: fix watching relative symlinks (#681)

  • kqueue: correctly mark pre-existing entries when watching a link to a dir on kqueue (#682)

  • illumos: don't send error if changed file is deleted while processing the event (#678)

#657: fsnotify/fsnotify#657 #678: fsnotify/fsnotify#678 #686: fsnotify/fsnotify#686 #655: fsnotify/fsnotify#655 #681: fsnotify/fsnotify#681 #679: fsnotify/fsnotify#679 #682: fsnotify/fsnotify#682

v1.8.0

Additions

  • all: add FSNOTIFY_DEBUG to print debug logs to stderr (#619)

Changes and fixes

  • windows: fix behaviour of WatchList() to be consistent with other platforms (#610)

  • kqueue: ignore events with Ident=0 (#590)

  • kqueue: set O_CLOEXEC to prevent passing file descriptors to children (#617)

  • kqueue: emit events as "/path/dir/file" instead of "path/link/file" when watching a symlink (#625)

  • inotify: don't send event for IN_DELETE_SELF when also watching the parent (#620)

  • inotify: fix panic when calling Remove() in a goroutine (#650)

  • fen: allow watching subdirectories of watched directories (#621)

Changelog

Sourced from github.com/fsnotify/fsnotify's changelog.

1.9.0 2024-04-04

Changes and fixes

  • all: make BufferedWatcher buffered again (#657)

  • inotify: fix race when adding/removing watches while a watched path is being deleted (#678, #686)

  • inotify: don't send empty event if a watched path is unmounted (#655)

  • inotify: don't register duplicate watches when watching both a symlink and its target; previously that would get "half-added" and removing the second would panic (#679)

  • kqueue: fix watching relative symlinks (#681)

  • kqueue: correctly mark pre-existing entries when watching a link to a dir on kqueue (#682)

  • illumos: don't send error if changed file is deleted while processing the event (#678)

#657: fsnotify/fsnotify#657 #678: fsnotify/fsnotify#678 #686: fsnotify/fsnotify#686 #655: fsnotify/fsnotify#655 #681: fsnotify/fsnotify#681 #679: fsnotify/fsnotify#679 #682: fsnotify/fsnotify#682

1.8.0 2024-10-31

Additions

  • all: add FSNOTIFY_DEBUG to print debug logs to stderr (#619)

Changes and fixes

  • windows: fix behaviour of WatchList() to be consistent with other platforms (#610)

  • kqueue: ignore events with Ident=0 (#590)

  • kqueue: set O_CLOEXEC to prevent passing file descriptors to children (#617)

  • kqueue: emit events as "/path/dir/file" instead of "path/link/file" when watching a symlink (#625)

... (truncated)

Commits
  • ae0e792 Release 1.9.0
  • 644fbb6 Add test to ensure Add()/Remove() works when not reading events
  • e7ec5f7 Fix staticcheck in CI
  • d321760 Update changelog
  • dbe0717 Remove AIX/AHFS from README
  • 2d897ca Simplify inotify backend locking
  • 868a000 Test gccgo in CI
  • 8f6d48b Move some shared code to a shared struct
  • e48b91a Add timeout-minutes in GitHub actions
  • c9507a5 Correctly mark pre-existing entries when watching a link to a dir on kqueue
  • Additional commits viewable in compare view

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)

@dependabot @github

dependabot Bot commented on behalf of github Mar 17, 2026

Copy link
Copy Markdown
Contributor Author

Labels

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

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

Bumps [github.com/fsnotify/fsnotify](https://github.com/fsnotify/fsnotify) from 1.7.0 to 1.9.0.
- [Release notes](https://github.com/fsnotify/fsnotify/releases)
- [Changelog](https://github.com/fsnotify/fsnotify/blob/main/CHANGELOG.md)
- [Commits](fsnotify/fsnotify@v1.7.0...v1.9.0)

---
updated-dependencies:
- dependency-name: github.com/fsnotify/fsnotify
  dependency-version: 1.9.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot
dependabot Bot force-pushed the dependabot/go_modules/cli/github.com/fsnotify/fsnotify-1.9.0 branch from 0abc8d0 to e6005bc Compare March 22, 2026 14:44
@dvcdsys

dvcdsys commented Mar 23, 2026

Copy link
Copy Markdown
Owner

Closing: fsnotify 1.9.0 is already included in the viper 1.21.0 upgrade (PR #1). Merging separately would create a conflict.

@dvcdsys dvcdsys closed this Mar 23, 2026
@dependabot @github

dependabot Bot commented on behalf of github Mar 23, 2026

Copy link
Copy Markdown
Contributor Author

OK, I won't notify you again about this release, but will get in touch when a new version is available. If you'd rather skip all updates until the next major or minor version, let me know by commenting @dependabot ignore this major version or @dependabot ignore this minor version. You can also ignore all major, minor, or patch releases for a dependency by adding an ignore condition with the desired update_types to your config file.

If you change your mind, just re-open this PR and I'll resolve any conflicts on it.

@dependabot
dependabot Bot deleted the dependabot/go_modules/cli/github.com/fsnotify/fsnotify-1.9.0 branch March 23, 2026 10:20
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 12, 2026
…dule

Previous backoff streak retried indefinitely with delay capped at 30m,
which meant a permanent GitHub outage produced ~48 polls per day per
server. Now a streak gives up after MaxBackoffAttempts (default 5) and
the next attempt is anchored to streakStart + Interval — i.e. the
regular 6h grid resumes from the FIRST attempt of the failed streak,
not from "now".

Worst case progression with defaults (Interval=6h, Initial=1m, Max=30m):
  attempt #1 fails              T = 0
  attempt #2 fails  (wait ~1m)  T = +1m
  attempt #3 fails  (wait ~2m)  T = +3m
  attempt #4 fails  (wait ~4m)  T = +7m
  attempt #5 fails  (wait ~8m)  T = +15m  → exhaust
  attempt #6 fires             T = T0 + 6h  (anchor)

Successful poll mid-streak resets attempt counter and wait reverts to
Interval. The "anchor from first attempt" choice keeps the long-term
schedule on its grid even when a streak ate up to ~30m of it; an
absurdly long streak (rare; needs Interval < BackoffMax × N) collapses
the wait to 0 and fires immediately, which is the only sensible
behaviour when we already overshot.

  - MaxBackoffAttempts surfaced on Config (default 5).
  - TestRunStreakExhaustedAnchorsToInterval covers the exhaust path:
    3 fails → anchored sleep → #4 fires near streakStart+Interval.
  - Existing TestRunBacksOffOnFailureThenResets unchanged (recovers
    after 2 fails, well below the cap).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
dvcdsys added a commit that referenced this pull request May 14, 2026
Two related migration-safety fixes:

1. migrateSplitWorkspaceRepos used to commit the DB tx first and
   then rename clone dirs — a kill -9 in that window left old
   {workspace_repos.id} dirs orphaned and forced a re-clone. Now
   the rename runs BEFORE the transaction and an error aborts the
   migration (leaves workspace_repos in place so the next run
   retries). Counters for renamed / skipped_missing_source /
   skipped_target_exists / failed are logged on completion.

2. Add schema_migrations(version, name, applied_at). Open() reads
   MAX(version) and skips already-applied migrations. Existing
   prod DBs bootstrap by detecting which legacy tables are present.

3. Migration test suite expanded with subtests covering partial
   rename, pre-existing target, missing source dir, duplicate
   project_path rows, and idempotent re-runs.

Resolves Fix #3, #7, #14.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
dvcdsys added a commit that referenced this pull request May 14, 2026
Two related migration-safety fixes:

1. migrateSplitWorkspaceRepos used to commit the DB tx first and
   then rename clone dirs — a kill -9 in that window left old
   {workspace_repos.id} dirs orphaned and forced a re-clone. Now
   the rename runs BEFORE the transaction and an error aborts the
   migration (leaves workspace_repos in place so the next run
   retries). Counters for renamed / skipped_missing_source /
   skipped_target_exists / failed are logged on completion.

2. Add schema_migrations(version, name, applied_at). Open() reads
   MAX(version) and skips already-applied migrations. Existing
   prod DBs bootstrap by detecting which legacy tables are present.

3. Migration test suite expanded with subtests covering partial
   rename, pre-existing target, missing source dir, duplicate
   project_path rows, and idempotent re-runs.

Resolves Fix #3, #7, #14.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
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