Skip to content

improve macOS cask resolution - #66

Merged
iamr8 merged 13 commits into
mainfrom
develop
Sep 11, 2026
Merged

iamr8 merged 13 commits into
mainfrom
develop

Conversation

@iamr8

@iamr8 iamr8 commented Sep 11, 2026

Copy link
Copy Markdown
Owner

No description provided.

dependabot Bot and others added 13 commits August 24, 2026 03:09
---
updated-dependencies:
- dependency-name: TUnit
  dependency-version: 1.65.51
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
---
updated-dependencies:
- dependency-name: TUnit
  dependency-version: 1.66.16
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
The Homebrew-cask fallback derived the cask token from the display name.
Many apps have a display name that does not map to their cask token, so the
latest version never resolved and they showed as unchecked:
- "Code" -> "code" (real cask: visual-studio-code)
- "JetBrains Rider" -> "jetbrains-rider" (real cask: rider)

Try token candidates from the bundle folder name first, then the display
name. The existing artifact / bundle-id verification runs per candidate, so a
wrong-token match (e.g. "Gemini" -> the unrelated "Gemini 2" cask) is still
rejected.
When a derived token does not equal the real cask token, match the derived
tokens against the local Homebrew cask-name list (segment-aware, ranked,
capped) and verify each candidate by artifact. This resolves apps whose cask
token has a vendor prefix or a suffix no name derives:
- Gemini -> google-gemini
- GitHub Copilot -> github-copilot-app

Pre-release channel variants (foo-beta, *-insiders, ...) are skipped: they may
share the stable app's bundle id and would otherwise be misreported as its
update. The name list is read from Homebrew's local cache, so the fallback is a
no-op when Homebrew is absent.
- cs/linq/missed-where (#1172): build the fuzzy base list with Where/Select
  instead of a filtering foreach.
- cs/useless-cast-to-self (#1170, #1169): exclude build output (obj/, bin/)
  from CodeQL. Those alerts are in source-generated code we do not author.

The catch-all in ScanOrchestrator (#1171) is left as-is by design: a single
scanner's failure must be logged and contained, not crash discovery
(OperationCanceledException is rethrown separately).
The publish/ directory held a committed AOT binary and its dSYM (11.6M),
accidentally added in the initial commit. Nothing depends on the tracked
copy: it is the ephemeral output of the README's `dotnet publish -o publish`
command, and publish.sh writes to dist/. Remove it and ignore publish/ and
dist/ so build output is never re-committed.
@iamr8
iamr8 merged commit 50b923f into main Sep 11, 2026
19 checks passed
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