Skip to content

feat: metadata-enhanced repo search and double-click to open in browser#80

Merged
steipete merged 8 commits into
steipete:mainfrom
udiedrichsen:main
Jun 13, 2026
Merged

feat: metadata-enhanced repo search and double-click to open in browser#80
steipete merged 8 commits into
steipete:mainfrom
udiedrichsen:main

Conversation

@udiedrichsen

@udiedrichsen udiedrichsen commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Summary

Enhances repository discovery in Settings with metadata-aware search and consistent browser opening.

Changes

  • Fetches and stores repository description, primary language, and topics.
  • Uses metadata for repository autocomplete scoring and Settings table filtering.
  • Shows language and description details in repository suggestions.
  • Opens a repository through the configured GitHub or GitHub Enterprise host when the table primary action is invoked from any non-control row cell.
  • Keeps the Visibility control independently interactive.
  • Adds focused metadata filtering, mapping, scoring, and URL validation coverage.
  • Updates repository browser documentation and credits @udiedrichsen in the changelog.

Verification

  • pnpm check (SwiftFormat, SwiftLint, 607 tests across 102 suites)
  • pnpm build
  • pnpm restart
  • Exact packaged app: searching swift returned metadata matches including openclaw/Peekaboo, whose repository name does not contain the query.
  • Double-clicking the Stars cell opened https://github.com/openclaw/Peekaboo in the existing browser profile.
  • The Visibility menu remained independently interactive.
  • Structured autoreview: no actionable findings.
  • Public Model Identifier Gate: PASS.

Risk

Low. The change extends existing REST models and search paths, uses the existing host-aware URL builder, and adds regression coverage around the new behavior.

- Add description, language, topics fields to RepoItem JSON decoding
- Add same fields to Repository model with sensible defaults
- Map through Repository.from(item:) factory
- Extend RepoAutocompleteScoring to match against topics (exact/prefix/substring),
  language (exact/prefix/substring), and description (substring/subsequence)
  with graduated weights so topic matches provide strong signals
- Show description + language badge in the autocomplete dropdown UI
- Add 7 new tests covering topic, language, description matching and
  fallback behavior
- Add application/vnd.github.mercy-preview+json Accept header to
  userReposSorted, userReposPaginated, and searchRepositories so GitHub
  returns topics in the response
- Thread headers parameter through fetchAllPages to authorizedGet
- Show description + language badge in the Add Repo window (previously
  the UI only showed the old fullName/issue-count layout)
- Extract reusable Badge view for the Add Repo window

Previously topics were always empty because GitHub requires the
mercy-preview media type, and the Add Repo window didn't display
any metadata fields, making the metadata-enhanced scoring invisible
to users of that UI.
…, topics

The large 'Search repositories' table search (RepoBrowserRow.matches)
was only searching fullName, owner, name, and labels — it missed the
recently-added metadata fields (description, language, topics) that were
only used in the 'Add Rule' autocomplete scoring. Now the table search
also finds repos by their description text, programming language, and
GitHub topics.

- Added description, language, topics to RepoBrowserRow
- Populated from Repository in RepoBrowserRows.make()
- manualRow gets defaults (nil, nil, [])
- matches() now searches the combined haystack including these fields
Double-clicking any row in the Settings → Repositories table now opens
the GitHub URL in the default browser. Uses the existing
RepoWebURLBuilder (which supports GHE hosts) and NSWorkspace.shared.open.

- Added import AppKit, webURLBuilder, and openInGitHub helper
- Added .onTapGesture(count: 2) on the Repository table column cell
- Added .help tooltip hinting at the double-click action
@clawsweeper

clawsweeper Bot commented Jun 12, 2026

Copy link
Copy Markdown

Codex review: needs maintainer review before merge. Reviewed June 13, 2026, 5:42 AM ET / 09:42 UTC.

Summary
The PR threads repository description, language, and topics through REST models into autocomplete and Settings filtering, displays that metadata in suggestions, and adds host-aware repository row open actions with docs and tests.

Reproducibility: not applicable. as a bug reproduction: this is a feature PR. The changed behavior is verified through Settings repository metadata search and the table primary action, with maintainer exact-head proof on f4b9e53.

Review metrics: 2 noteworthy metrics.

  • Patch surface: 17 files, +287/-32. The feature spans REST fetching, core models, scoring, Settings UI, docs, and tests, so cross-layer consistency matters before merge.
  • Maintainer validation: pnpm check, pnpm build, pnpm restart on f4b9e53. Exact-head validation plus live UI/browser proof materially reduces review uncertainty for this Settings behavior.

Merge readiness
Overall: 🦞 diamond lobster
Proof: 🦞 diamond lobster ✨ media proof bonus
Patch quality: 🦞 diamond lobster
Result: ready for maintainer review.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Next step before merge

  • No automated repair lane is needed because there are no actionable findings; the remaining work is normal maintainer merge and CI gating.

Security
Cleared: No concrete security or supply-chain issue was found; the diff adds no dependencies, workflows, secret handling, or broader permissions, and repository URLs stay on the configured GitHub host.

Review details

Best possible solution:

Land the PR after normal exact-head CI and maintainer merge gates, preserving the shared Repository metadata path and centralized RepoWebURLBuilder row action.

Do we have a high-confidence way to reproduce the issue?

Not applicable as a bug reproduction: this is a feature PR. The changed behavior is verified through Settings repository metadata search and the table primary action, with maintainer exact-head proof on f4b9e53.

Is this the best way to solve the issue?

Yes. Reusing Repository, RepoAutocompleteScoring, RepoBrowserRows, and RepoWebURLBuilder is the narrow maintainable path, and the maintainer fixup moved opening to the table primary action plus context menu.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against 393f19eec877.

Label changes

Label changes:

  • add proof: 📸 screenshot: Contributor real behavior proof includes screenshot evidence. The maintainer supplied exact-head live verification and a screenshot showing the filtered Settings table and opened GitHub repository page after the change.

Label justifications:

  • P3: This is a low-risk Settings usability feature with localized metadata search and row-opening behavior.
  • rating: 🦞 diamond lobster: Overall readiness is 🦞 diamond lobster; proof is 🦞 diamond lobster and patch quality is 🦞 diamond lobster.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (screenshot): The maintainer supplied exact-head live verification and a screenshot showing the filtered Settings table and opened GitHub repository page after the change.
  • proof: sufficient: Contributor real behavior proof is sufficient. The maintainer supplied exact-head live verification and a screenshot showing the filtered Settings table and opened GitHub repository page after the change.
  • proof: 📸 screenshot: Contributor real behavior proof includes screenshot evidence. The maintainer supplied exact-head live verification and a screenshot showing the filtered Settings table and opened GitHub repository page after the change.
Evidence reviewed

What I checked:

  • Current main lacks metadata filtering: Current main's repository browser filter haystack only includes fullName, owner, name, visibility, fork/archive/manual labels, so description, language, and topics are not already searchable on main. (Sources/RepoBar/Settings/RepoBrowserRows.swift:63, 393f19eec877)
  • PR adds metadata filtering: The PR head adds description, language, and topics to RepoBrowserRow and includes those fields in the Settings filter haystack. (Sources/RepoBar/Settings/RepoBrowserRows.swift:66, f4b9e5330071)
  • PR adds row-level open action: The PR head adds an Open in GitHub context menu item and a Table primaryAction that uses the same host-aware open helper while leaving the Visibility menu as its own control. (Sources/RepoBar/Settings/RepoSettingsView.swift:124, f4b9e5330071)
  • REST/model plumbing is present: The PR head requests repository topics on user repo and search calls, decodes description/language/topics, and maps them into Repository. (Sources/RepoBarCore/API/GitHubRestAPI.swift:40, f4b9e5330071)
  • Focused regression tests are included: The PR adds coverage for metadata row matching, autocomplete scoring, Repository factory mapping, and host-aware repository URL validation. (Tests/RepoBarTests/RepoBrowserRowsTests.swift:135, f4b9e5330071)
  • Maintainer proof and validation: A repository owner comment on exact head f4b9e53 reports pnpm check with 607 tests across 102 suites, pnpm build, pnpm restart, metadata filtering for swift, double-click opening the expected GitHub URL, and Visibility remaining interactive; the attached screenshot was inspected and shows the filtered Settings table beside the opened repository page. (f4b9e5330071)

Likely related people:

  • steipete: Current-main blame/log tie the repository settings table, browser filtering, autocomplete scoring, REST API, and URL builder surfaces to the 0.8.2 import by Peter Steinberger; PR comments and commits also show steipete made the final row-action and validation fixups on the branch. (role: feature introducer and recent reviewer/fixup author; confidence: high; commits: 5244d0634ff4, eb01b81efa9a, f4b9e5330071; files: Sources/RepoBar/Settings/RepoSettingsView.swift, Sources/RepoBar/Settings/RepoBrowserRows.swift, Sources/RepoBarCore/Support/RepoAutocompleteScoring.swift)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

How this review workflow works
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. P3 Low-risk cleanup, docs, polish, ergonomics, or speculative feature. labels Jun 12, 2026
@steipete

Copy link
Copy Markdown
Owner

Maintainer fixups and verification on exact head c9304a2:

  • Replaced the Repository-column-only gesture with the table's row-level primary action while preserving the Visibility control.
  • Added the same host-aware action to the row context menu.
  • Hardened repository URL validation and added focused coverage.
  • Added metadata filtering/factory regression tests and completed changelog/docs attribution.
  • pnpm check: SwiftFormat clean, SwiftLint clean, 607 tests across 102 suites passed.
  • Structured autoreview: no accepted or actionable findings.
  • Live app proof: searching swift filtered the 300-repository browser to metadata matches.
  • Live browser proof: double-clicking the first filtered row opened the expected repository URL on the configured GitHub host.

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jun 13, 2026

Copy link
Copy Markdown

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@clawsweeper clawsweeper Bot added proof: sufficient Contributor real behavior proof is sufficient. rating: 🦞 diamond lobster Very strong PR readiness with only minor maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. and removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Jun 13, 2026
@steipete

Copy link
Copy Markdown
Owner

Maintainer verification on exact head f4b9e53:

  • pnpm check: SwiftFormat clean, SwiftLint clean, 607 tests across 102 suites passed.
  • pnpm build: passed.
  • pnpm restart: exact packaged app launched from the RepoBar checkout.
  • Searching swift returned 7 of 57 loaded repositories, including openclaw/Peekaboo, whose repository name does not contain the query.
  • Double-clicking the Stars cell for that row opened https://github.com/openclaw/Peekaboo; GitHub showed the matching 4,697-star repository and swift topic.
  • The Visibility control remained independently interactive.
  • Structured autoreview: no actionable findings.
  • Public Model Identifier Gate: PASS.

Risk: low. Recommendation: land after exact-head CI is green.

@clawsweeper re-review
pr80-final-ui-proof

@clawsweeper

clawsweeper Bot commented Jun 13, 2026

Copy link
Copy Markdown

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@clawsweeper clawsweeper Bot added the proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. label Jun 13, 2026
@udiedrichsen

Copy link
Copy Markdown
Contributor Author

I cool to see how you work on PRs. Very impressive!

Thx for your amazing tools.

I use Peekaboo (I made also a PR for that and it was merged), summarize and of course repobar (I have 450 repo's).

@steipete

Copy link
Copy Markdown
Owner

Final maintainer verification on 2c25c96, updated onto current main:

  • repository search covers name, description, language, and topics
  • double-click opens the repository on the configured GitHub host
  • malformed repository full names are rejected before URL construction
  • unrelated dependency-ignore and placeholder API changes removed from the PR
  • pnpm check: 622 tests in 104 suites passed
  • exact-branch autoreview: no accepted/actionable findings
  • live repository browser verified with filtered results and double-click navigation

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jun 13, 2026

Copy link
Copy Markdown

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@steipete steipete merged commit d1a201e into steipete:main Jun 13, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

P3 Low-risk cleanup, docs, polish, ergonomics, or speculative feature. proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. proof: sufficient Contributor real behavior proof is sufficient. rating: 🦞 diamond lobster Very strong PR readiness with only minor maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants