Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

## Unreleased

### Fixes

- Install OpenClaw crawler apps from the current Homebrew tap instead of legacy formulas that lag released versions.

## v0.3.0 - 2026-06-09

### Changes
Expand Down
4 changes: 0 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,13 +64,9 @@ script places it on PATH as `crawlbar`.
## Install

```sh
brew install vincentkoc/tap/crawlbar
# or
brew install openclaw/tap/crawlbar
```

The release also publishes the same formula to the OpenClaw Homebrew tap.

## Config

Main config lives at:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,6 @@ public extension BuiltInCrawlApps {
.init(id: "discord", title: "Discord Access", optionIDs: ["discord_token"]),
.init(id: "ai", title: "Embeddings", optionIDs: ["openai_api_key", "embedding_model"]),
],
install: .init(method: .homebrew, package: "vincentkoc/tap/discrawl"))
install: .init(method: .homebrew, package: "openclaw/tap/discrawl"))
.withSuggestion(Self.appSuggest("Discord", ["com.hnc.Discord"]))
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,6 @@ public extension BuiltInCrawlApps {
.init(id: "github", title: "GitHub Access", optionIDs: ["github_token"]),
.init(id: "ai", title: "Embeddings", optionIDs: ["openai_api_key", "embedding_model"]),
],
install: .init(method: .homebrew, package: "vincentkoc/tap/gitcrawl"))
install: .init(method: .homebrew, package: "openclaw/tap/gitcrawl"))
.withSuggestion(Self.alwaysSuggest("GitHub"))
}
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,6 @@ public extension BuiltInCrawlApps {
.init(id: "granola", title: "Granola", optionIDs: ["granola_profile", "preferred_source", "allow_private_api", "allow_desktop_cache"]),
.init(id: "sync", title: "Sync", optionIDs: ["sync_limit"]),
],
install: .init(method: .homebrew, package: "vincentkoc/tap/graincrawl"))
install: .init(method: .homebrew, package: "openclaw/tap/graincrawl"))
.withSuggestion(Self.appSuggest("Granola", ["com.granola.app"]))
}
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,6 @@ public extension BuiltInCrawlApps {
.init(id: "notion", title: "Notion Access", optionIDs: ["notion_token"]),
.init(id: "ai", title: "Embeddings", optionIDs: ["openai_api_key", "embedding_model"]),
],
install: .init(method: .homebrew, package: "vincentkoc/tap/notcrawl"))
install: .init(method: .homebrew, package: "openclaw/tap/notcrawl"))
.withSuggestion(Self.appSuggest("Notion", ["notion.id"]))
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,6 @@ public extension BuiltInCrawlApps {
.init(id: "slack", title: "Slack Access", optionIDs: ["slack_token"]),
.init(id: "ai", title: "Embeddings", optionIDs: ["openai_api_key", "embedding_model"]),
],
install: .init(method: .homebrew, package: "vincentkoc/tap/slacrawl"))
install: .init(method: .homebrew, package: "openclaw/tap/slacrawl"))
.withSuggestion(Self.appSuggest("Slack", ["com.tinyspeck.slackmacgap"]))
}
11 changes: 10 additions & 1 deletion Sources/CrawlBarSelfTest/SelfTestConfig.swift
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,16 @@ extension CrawlBarSelfTest {
try Self.expect(secretStatusManifest.needsSecretsForStatus, "external secret status can opt into keychain reads")
try Self.expect(BuiltInCrawlApps.slacrawl.privacy.containsPrivateMessages, "Slack privacy metadata flags local messages")
try Self.expect(BuiltInCrawlApps.notcrawl.privacy.localOnlyScopes.contains("workspace pages"), "Notion privacy metadata flags workspace pages")
try Self.expect(BuiltInCrawlApps.slacrawl.install?.package == "vincentkoc/tap/slacrawl", "built-in install metadata exists")
let openClawTapApps = [
BuiltInCrawlApps.gitcrawl,
BuiltInCrawlApps.slacrawl,
BuiltInCrawlApps.discrawl,
BuiltInCrawlApps.notcrawl,
BuiltInCrawlApps.graincrawl,
]
try Self.expect(
openClawTapApps.allSatisfy { $0.install?.package.hasPrefix("openclaw/tap/") == true },
"OpenClaw crawlers install from the current tap")
try Self.expect(BuiltInCrawlApps.gogcli.availability == .available, "Google manifest is available")
try Self.expect(BuiltInCrawlApps.gogcli.binary.name == "gog", "Google manifest uses the installed gog binary")
try Self.expect(BuiltInCrawlApps.gogcli.commands["status"] == ["auth", "list", "--check", "--json", "--no-input"], "Google status is wired")
Expand Down