Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: ktsu-dev/TextFilter
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v1.5.54
Choose a base ref
...
head repository: ktsu-dev/TextFilter
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v1.7.0
Choose a head ref
  • 11 commits
  • 8 files changed
  • 5 contributors

Commits on Sep 22, 2026

  1. Bump the ktsu group with 11 updates

    Bumps ktsu.Extensions from 1.6.15 to 1.6.16
    Bumps ktsu.FuzzySearch from 1.3.7 to 1.3.9
    Bumps ktsu.Sdk from 2.30.1 to 2.31.0
    Bumps ktsu.Sdk.Android from 2.30.1 to 2.31.0
    Bumps ktsu.Sdk.App from 2.30.1 to 2.31.0
    Bumps ktsu.Sdk.ConsoleApp from 2.30.1 to 2.31.0
    Bumps ktsu.Sdk.iOS from 2.30.1 to 2.31.0
    Bumps ktsu.Sdk.Linux from 2.30.1 to 2.31.0
    Bumps ktsu.Sdk.macOS from 2.30.1 to 2.31.0
    Bumps ktsu.Sdk.Tool from 2.30.1 to 2.31.0
    Bumps ktsu.Sdk.Windows from 2.30.1 to 2.31.0
    
    ---
    updated-dependencies:
    - dependency-name: ktsu.Extensions
      dependency-version: 1.6.16
      dependency-type: direct:production
      update-type: version-update:semver-patch
      dependency-group: ktsu
    - dependency-name: ktsu.FuzzySearch
      dependency-version: 1.3.9
      dependency-type: direct:production
      update-type: version-update:semver-patch
      dependency-group: ktsu
    - dependency-name: ktsu.Sdk
      dependency-version: 2.31.0
      dependency-type: direct:production
      update-type: version-update:semver-minor
      dependency-group: ktsu
    - dependency-name: ktsu.Sdk.Android
      dependency-version: 2.31.0
      dependency-type: direct:production
      update-type: version-update:semver-minor
      dependency-group: ktsu
    - dependency-name: ktsu.Sdk.App
      dependency-version: 2.31.0
      dependency-type: direct:production
      update-type: version-update:semver-minor
      dependency-group: ktsu
    - dependency-name: ktsu.Sdk.ConsoleApp
      dependency-version: 2.31.0
      dependency-type: direct:production
      update-type: version-update:semver-minor
      dependency-group: ktsu
    - dependency-name: ktsu.Sdk.iOS
      dependency-version: 2.31.0
      dependency-type: direct:production
      update-type: version-update:semver-minor
      dependency-group: ktsu
    - dependency-name: ktsu.Sdk.Linux
      dependency-version: 2.31.0
      dependency-type: direct:production
      update-type: version-update:semver-minor
      dependency-group: ktsu
    - dependency-name: ktsu.Sdk.macOS
      dependency-version: 2.31.0
      dependency-type: direct:production
      update-type: version-update:semver-minor
      dependency-group: ktsu
    - dependency-name: ktsu.Sdk.Tool
      dependency-version: 2.31.0
      dependency-type: direct:production
      update-type: version-update:semver-minor
      dependency-group: ktsu
    - dependency-name: ktsu.Sdk.Windows
      dependency-version: 2.31.0
      dependency-type: direct:production
      update-type: version-update:semver-minor
      dependency-group: ktsu
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    dependabot[bot] authored Sep 22, 2026
    Configuration menu
    Copy the full SHA
    9ae27fd View commit details
    Browse the repository at this point in the history
  2. Merge pull request #94 from ktsu-dev/dependabot/nuget/ktsu-657a677a51

    Bump the ktsu group with 11 updates
    github-actions[bot] authored Sep 22, 2026
    Configuration menu
    Copy the full SHA
    142948e View commit details
    Browse the repository at this point in the history
  3. Match required glob tokens by any word under ByWordAll

    DoesMatchGlob picked AllTokensMatchGlobFilter for required tokens
    whenever the match option was not ByWordAny, so a "+world" token asked
    whether *every* word in the text matched the glob "world" rather than
    whether "world" appeared among them. Any multi-word text failed, making
    +token filters unusable under ByWordAll.
    
    Required tokens now always use AnyTokenMatchesGlobFilter, matching the
    excluded-token branch a few lines above, which asks the same question and
    never varied by match option.
    
    Fixes #95
    
    Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01UscjStBJdW3uHm5NR289DX
    claude committed Sep 22, 2026
    Configuration menu
    Copy the full SHA
    08b7e5e View commit details
    Browse the repository at this point in the history
  4. [bot][skip ci] Update Metadata

    Github Actions
    Github Actions committed Sep 22, 2026
    Configuration menu
    Copy the full SHA
    ddb65d4 View commit details
    Browse the repository at this point in the history
  5. Let a caller ask for case-insensitive matching [minor]

    Glob and regex matching were case sensitive at every TextFilterMatchOptions
    value, with no way to ask for anything else, even though DotNet.Glob supports
    case-insensitivity perfectly well and the wrapper simply never passed the
    option through.
    
    Adds TextFilterCaseSensitivity, defaulting to CaseSensitive so no existing
    behaviour changes. Glob routes it to GlobOptions.Evaluation.CaseInsensitive
    and regex to RegexOptions.IgnoreCase. Both caches are keyed by pattern text,
    so the sensitivity is folded into the key; without that, whichever variant
    was compiled first would decide the answer for the other.
    
    Fuzzy matching does not take the setting and is documented as always case
    insensitive, which is what it already was.
    
    Fixes #97
    
    Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01VECND7h5BXVvufyf9jbpwT
    claude committed Sep 22, 2026
    Configuration menu
    Copy the full SHA
    7b59874 View commit details
    Browse the repository at this point in the history
  6. Bound regex evaluation with a match timeout [patch]

    SonarCloud S6444 on the previous commit: the Regex constructed from the
    caller-supplied filter had no timeout, so a pattern with catastrophic
    backtracking runs unbounded on the calling thread. The line is pre-existing
    but this branch rewrote it, which is fair enough - it is a real ReDoS on a
    public entry point that takes arbitrary pattern text.
    
    Passes a one-second match timeout, and catches RegexMatchTimeoutException at
    the match site rather than letting the new throw path reach callers: filtering
    is a predicate, and a list that throws mid-keystroke on a pathological pattern
    is a worse contract than one that returns nothing for it. That mirrors how an
    invalid pattern already degrades.
    
    Also switches the one new CollectionAssert.AreEqual to Assert.AreSequenceEqual
    for MSTEST0068.
    
    Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01VECND7h5BXVvufyf9jbpwT
    claude committed Sep 22, 2026
    Configuration menu
    Copy the full SHA
    b249339 View commit details
    Browse the repository at this point in the history

Commits on Sep 23, 2026

  1. Configuration menu
    Copy the full SHA
    7d2191b View commit details
    Browse the repository at this point in the history
  2. [bot][skip ci] Update Metadata

    Github Actions
    Github Actions committed Sep 23, 2026
    Configuration menu
    Copy the full SHA
    23ffda0 View commit details
    Browse the repository at this point in the history
  3. Merge main into the case-insensitive matching branch

    PR #96 landed after this branch was cut and rewrote the same
    requiredMatchFunc selection in DoesMatchGlob that the method-group-to-
    lambda change here touches, leaving the PR conflicted.
    
    Resolved as the PR described: keep #96's always-Any choice for required
    tokens, and retain the captured caseSensitivity argument so the required
    call site still honours the sensitivity.
    
    Both sides' tests survive the resolution: 84 pass, 0 fail (this branch's
    79 plus #96's 5). Restoring this branch's side of the hunk fails 2 of
    #96's ByWordAll required-token tests, which is what pins the choice.
    Release build clean across all five TFMs, 0 warnings.
    
    Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_017wK8pxTxpgg3R2m3siPY3Y
    claude committed Sep 23, 2026
    Configuration menu
    Copy the full SHA
    2bbf375 View commit details
    Browse the repository at this point in the history
  4. Merge pull request #98 from ktsu-dev/claude/textfilter-97-case-insens…

    …itive-matching
    
    Let a caller ask for case-insensitive matching [minor]
    matt-edmondson authored Sep 23, 2026
    Configuration menu
    Copy the full SHA
    bc44574 View commit details
    Browse the repository at this point in the history
  5. [bot][skip ci] Update Metadata

    Github Actions
    Github Actions committed Sep 23, 2026
    Configuration menu
    Copy the full SHA
    71ae749 View commit details
    Browse the repository at this point in the history
Loading