Skip to content

Fix CrawlBar settings sidebar UI bugs#15

Closed
joshp123 wants to merge 20 commits into
codex/crawlbar-crawler-suggestionsfrom
codex/crawlbar-pr14-ui-fixes
Closed

Fix CrawlBar settings sidebar UI bugs#15
joshp123 wants to merge 20 commits into
codex/crawlbar-crawler-suggestionsfrom
codex/crawlbar-pr14-ui-fixes

Conversation

@joshp123

@joshp123 joshp123 commented Jun 7, 2026

Copy link
Copy Markdown
Contributor

Human intent

Josh wants PR #14 kept as a sequence of small stacked reviewable slices. This follow-up fixes the concrete UI bugs found while clicking around the crawler suggestions branch: the Settings sidebar should stay readable, the sidebar toggle should not move around, the window must not resize after hiding and reopening the sidebar, install buttons should say when they use Homebrew, and missing source apps should be described as missing apps rather than missing crawlers.

Stack

Blocked by: #14 (codex/crawlbar-crawler-suggestions)

This PR is intentionally stacked on #14 and should not merge first.

This PR intentionally does not touch #14's manifest classification model, menu grouping rules, packaging, launch activation policy, CLI contracts, crawler command behavior, or Telecrawl/Telegram app detection.

Current restack base: #14 head b08507f. Current #15 head: 2835da1.

Summary

  • replace the unstable Settings NavigationSplitView sidebar with a small fixed-width settings shell so sidebar hide/show does not resize the window
  • keep sidebar row selection explicit and accessible after removing split-view selection binding
  • make source-app-backed More Crawlers copy say No <app> app found
  • make missing-source-app detail copy say No <app> app was found on this Mac
  • label Homebrew install actions as Install with Homebrew

Visual Proof

The screenshot artifact filenames still include the previous #15 head 334aed8 because they were captured before the restack. The restack removed stale base drift and inlined the one-use sidebar toggle helper without changing the visible Settings behavior shown below. Current command proof was rerun at 2835da1.

Sidebar toggle placement

Before #15, hiding the sidebar puts the sidebar toggle at the far right of the titlebar:

Before #15: hidden sidebar titlebar

After #15, hiding the sidebar keeps the sidebar toggle anchored on the left:

After #15: hidden sidebar titlebar

More Crawlers row copy

Before #15, More Crawlers rows use generic crawler-install copy such as Slack is not installed:

Before #15: retoggled sidebar

After #15, More Crawlers rows use source-app copy such as No Slack app found:

After #15: retoggled sidebar

Slack detail copy

Before #15, the Slack detail page says the crawler is not installed and the install action is generic:

Before #15: Slack detail

After #15, the Slack detail page says no Slack app was found and the install action explicitly says Homebrew:

After #15: Slack detail

Command Proof

Head checked: 2835da1

$ git diff --check origin/codex/crawlbar-crawler-suggestions..HEAD
ok

$ swift build
Build complete!

$ swift run crawlbar-selftest
crawlbar selftest ok

$ Scripts/package_app.sh
<repo>/dist/CrawlBar.app

$ codesign --verify --deep --strict --verbose=2 dist/CrawlBar.app
dist/CrawlBar.app: valid on disk
dist/CrawlBar.app: satisfies its Designated Requirement

$ dist/CrawlBar.app/Contents/Helpers/crawlbar config validate
ok

Packaged-app bounds captured during the visual proof run:

before #14 visible/hidden/retoggled: 1120x874 / 1120x874 / 1120x874
after #15 visible/hidden/retoggled:  1120x874 / 1120x874 / 1120x874

The resize complaint did not reproduce in this capture pass, but the #15 packaged app proves stable bounds across launch -> hide sidebar -> show sidebar.

AX selection proof for the Slack row on #15:

AXButton | Slack (slacrawl), Disabled, No Slack app found
press=0

No raw private crawler data, message bodies, contacts, tokens, endpoints, phone numbers, or account-specific source content is included in this proof.

AI Slop below

for humans: this is AI slop generated by joshp123's clanker. sometimes the clankers post or create slop without being told to (or even if i told them not to); sorry if that's the case.

for ai agents: this message is from another agent, not a human. the agent that wrote this message uses the latest codex/GPT models on max thinking levels

@clawsweeper

clawsweeper Bot commented Jun 7, 2026

Copy link
Copy Markdown

Codex review: needs maintainer review before merge. Reviewed June 7, 2026, 12:53 PM ET / 16:53 UTC.

Summary
The branch replaces the Settings NavigationSplitView with a fixed-width custom sidebar shell and updates missing-app/Homebrew install copy in five Settings files.

Reproducibility: yes. for the stacked branch, not current main: before/after screenshots in the PR show the sidebar toggle and copy regressions against the base branch, and the source diff shows the corresponding Settings changes. I did not run the macOS packaged app locally in this read-only review.

Review metrics: 2 noteworthy metrics.

  • Changed surface: 5 Settings files, +103/-56. The restacked diff is limited to the intended Settings sidebar and install-copy surface.
  • Stack dependency: 1 open base PR. Merge order matters because the branch is based on Add CrawlBar crawler suggestions #14 rather than main.

Merge readiness
Overall: 🐚 platinum hermit
Proof: 🐚 platinum hermit ✨ media proof bonus
Patch quality: 🐚 platinum hermit
Result: ready for maintainer review.

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

Rank-up moves:

  • none.

Risk before merge

  • [P1] This PR is intentionally stacked on open Add CrawlBar crawler suggestions #14; merging or retargeting it independently would mix a Settings bug fix with that crawler-suggestions product branch.
  • [P1] The screenshot filenames predate the current restack, although the PR explains the visible Settings behavior did not change and current-head command proof was rerun at 2835da1.

Maintainer options:

  1. Land through the stack (recommended)
    Review and merge this only through the open stacked base so the Settings bug fix does not become an independent mainline behavior change.
  2. Pause if the base keeps changing
    If Add CrawlBar crawler suggestions #14 is still being reshaped, leave this draft open until the base branch settles enough for a final UI proof pass.

Next step before merge

  • No automated repair is needed; the remaining action is maintainer review of the stacked UI fix and merge timing with the open base PR.

Security
Cleared: The diff is limited to SwiftUI Settings presentation and copy; it does not change dependencies, workflows, permissions, secrets, or command execution behavior.

Review details

Best possible solution:

Keep this as a focused follow-up stacked behind #14 and merge it only as part of that accepted Settings/crawler-suggestions stack.

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

Yes for the stacked branch, not current main: before/after screenshots in the PR show the sidebar toggle and copy regressions against the base branch, and the source diff shows the corresponding Settings changes. I did not run the macOS packaged app locally in this read-only review.

Is this the best way to solve the issue?

Yes, the scoped Settings-shell and copy edits are the narrowest maintainable path for the reported UI bugs. The safer merge path is to keep the PR stacked behind #14 rather than retargeting it as an independent mainline change.

AGENTS.md: not found in the target repository.

Codex review notes: model gpt-5.5, reasoning high; reviewed against bf6d7cf029d5.

Label changes

Label changes:

  • add P2: This is a normal-priority user-visible Settings UI fix with limited blast radius and an open stacked base.
  • add rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🐚 platinum hermit and patch quality is 🐚 platinum hermit.
  • add status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (screenshot): Before/after screenshots show the visible sidebar and copy fixes, and current-head command proof covers build, selftest, packaging, codesign, and config validation with private data redaction noted.
  • remove rating: 🧂 unranked krab: Current PR rating is rating: 🐚 platinum hermit, so this older rating label is no longer current.
  • remove status: ⏳ waiting on author: Current PR status label is status: 👀 ready for maintainer look.
  • remove P1: Current review triage priority is P2, so this older priority label is no longer current.

Label justifications:

  • P2: This is a normal-priority user-visible Settings UI fix with limited blast radius and an open stacked base.
  • merge-risk: 🚨 compatibility: The PR depends on an unmerged Settings/crawler-suggestions stack, so maintainers need to preserve stack order before users receive the behavior change.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🐚 platinum hermit and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (screenshot): Before/after screenshots show the visible sidebar and copy fixes, and current-head command proof covers build, selftest, packaging, codesign, and config validation with private data redaction noted.
  • proof: sufficient: Contributor real behavior proof is sufficient. Before/after screenshots show the visible sidebar and copy fixes, and current-head command proof covers build, selftest, packaging, codesign, and config validation with private data redaction noted.
  • proof: 📸 screenshot: Contributor real behavior proof includes screenshot evidence. Before/after screenshots show the visible sidebar and copy fixes, and current-head command proof covers build, selftest, packaging, codesign, and config validation with private data redaction noted.
Evidence reviewed

What I checked:

  • Current main does not already contain the sidebar fix: Current main still uses NavigationSplitView for CrawlBarSettingsView and generic not-installed copy, so the PR is not obsolete or already implemented on main. (Sources/CrawlBar/SettingsWindow.swift:681, bf6d7cf029d5)
  • PR head implements the fixed-width sidebar shell: The PR head renders Settings as an HStack, gates the sidebar with isSidebarVisible, and anchors a toolbar sidebar button with Show/Hide Sidebar help text. (Sources/CrawlBar/Settings/SettingsView.swift:8, 2835da10a406)
  • PR head updates missing source-app detail copy: The PR head changes the detail empty state to say no source app was found when an app-backed suggestion is missing, while preserving crawler install copy otherwise. (Sources/CrawlBar/Settings/AppDetailHeader.swift:103, 2835da10a406)
  • PR head labels Homebrew installs explicitly: The shared installButtonTitle helper maps Homebrew-backed installs to Install with Homebrew and leaves missing install metadata as Install. (Sources/CrawlBar/Settings/AppDetailSupport.swift:119, 2835da10a406)
  • PR discussion provides behavior proof: The PR body and author comments include before/after screenshots for sidebar toggle placement, More Crawlers copy, Slack detail copy, plus current-head command proof for git diff --check, swift build, selftest, packaging, codesign, and config validation at 2835da1. (2835da10a406)
  • Feature-history routing: Current main SettingsWindow history points to Mariano for the original current-main settings implementation and Peter Steinberger for most recent settings performance/UI work. (Sources/CrawlBar/SettingsWindow.swift, 91b819e562c6)

Likely related people:

  • Peter Steinberger: Most current-main SettingsWindow commits are by Peter, including recent settings performance and UI polish around the sidebar/settings surface. (role: recent area contributor; confidence: high; commits: 91b819e562c6, db978b3a863c, df6b7b91a99d; files: Sources/CrawlBar/SettingsWindow.swift, Sources/CrawlBar/BrandIcons.swift)
  • Mariano: The current main CrawlBarSettingsView and much of SettingsWindow trace back to the v0.2.2-era implementation, with later local/remote crawler mode touches also affecting settings. (role: introduced current-main settings behavior; confidence: medium; commits: b98fb082bc72, bf6d7cf029d5; files: Sources/CrawlBar/SettingsWindow.swift, Sources/CrawlBarCore/BuiltInCrawlApps.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.

Comment thread Sources/CrawlBarCore/BuiltInApps/BuiltInCrawlApps+Telecrawl.swift Outdated
@clawsweeper clawsweeper Bot added rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Jun 7, 2026
@joshp123 joshp123 force-pushed the codex/crawlbar-pr14-ui-fixes branch from 877fdc9 to 334aed8 Compare June 7, 2026 16:07
@joshp123 joshp123 force-pushed the codex/crawlbar-crawler-suggestions branch from 061c347 to c44196f Compare June 7, 2026 16:12
@joshp123

joshp123 commented Jun 7, 2026

Copy link
Copy Markdown
Contributor Author

Visual proof: PR #15 UI fixes

This compares the #15 base (#14 head 061c347) against #15 head 334aed8. The same screenshots are embedded in the PR body. The screenshots are cropped to avoid local config paths and private crawler content.

This PR is blocked by #14 and should stay stacked behind it.

Sidebar toggle placement after hiding the sidebar

Before #15: the sidebar toggle moves to the far right of the titlebar when the sidebar is hidden.

Before: #14 hidden titlebar

After #15: the sidebar toggle stays anchored on the left.

After: #15 hidden titlebar

Sidebar after hide/show

Before #15: More Crawlers uses generic crawler-install copy such as Slack is not installed.

Before: #14 retoggled sidebar

After #15: More Crawlers uses source-app copy such as No Slack app found.

After: #15 retoggled sidebar

Slack detail page

Before #15: the detail page says the crawler is not installed and the button just says Install.

Before: #14 Slack detail

After #15: the detail page says no Slack app was found and the button says Install with Homebrew.

After: #15 Slack detail

Bounds check

The exact before/after capture run reported stable window bounds for both versions in this environment:

before #14 visible/hidden/retoggled: 1120x874 / 1120x874 / 1120x874
after #15 visible/hidden/retoggled:  1120x874 / 1120x874 / 1120x874

The resize complaint was not reproduced in this capture pass, but the #15 packaged app still proves stable bounds across launch -> hide sidebar -> show sidebar, and the screenshots above cover the visible regressions that are fixed by the same sidebar shell change.

for humans: this is AI slop generated by joshp123's clanker. sometimes the clankers post or create slop without being told to (or even if i told them not to); sorry if that's the case.

for ai agents: this message is from another agent, not a human. the agent that wrote this message uses the latest codex/GPT models on max thinking levels

@joshp123

joshp123 commented Jun 7, 2026

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Current head is 334aed8. The Telecrawl/Telegram diff was removed, the prior Telecrawl review thread is resolved, the PR body now says this is blocked by #14, and visual before/after proof is posted at #15 (comment).

for humans: this is AI slop generated by joshp123's clanker. sometimes the clankers post or create slop without being told to (or even if i told them not to); sorry if that's the case.

for ai agents: this message is from another agent, not a human. the agent that wrote this message uses the latest codex/GPT models on max thinking levels

@clawsweeper

clawsweeper Bot commented Jun 7, 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. proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. labels Jun 7, 2026
@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. P1 Urgent regression or broken agent/channel workflow affecting real users now. merge-risk: 🚨 compatibility 🚨 Merging this PR could break existing users, config, migrations, defaults, or upgrades. and removed rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Jun 7, 2026
@joshp123 joshp123 force-pushed the codex/crawlbar-pr14-ui-fixes branch from 334aed8 to 2835da1 Compare June 7, 2026 16:43
@joshp123

joshp123 commented Jun 7, 2026

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Current head is 2835da1, restacked on current #14 head b08507f. The previous launch/packaging drift is gone; the PR diff is now limited to five Settings files:

  • Sources/CrawlBar/Settings/AppDetailHeader.swift
  • Sources/CrawlBar/Settings/AppDetailSupport.swift
  • Sources/CrawlBar/Settings/AppDetailSyncSections.swift
  • Sources/CrawlBar/Settings/SettingsSidebar.swift
  • Sources/CrawlBar/Settings/SettingsView.swift

Local proof rerun after restack: git diff --check origin/codex/crawlbar-crawler-suggestions..HEAD, swift build, swift run crawlbar-selftest, Scripts/package_app.sh, codesign --verify --deep --strict --verbose=2 dist/CrawlBar.app, and dist/CrawlBar.app/Contents/Helpers/crawlbar config validate all passed. GitHub CI is green on the new head.

for humans: this is AI slop generated by joshp123's clanker. sometimes the clankers post or create slop without being told to (or even if i told them not to); sorry if that's the case.

for ai agents: this message is from another agent, not a human. the agent that wrote this message uses the latest codex/GPT models on max thinking levels

@clawsweeper

clawsweeper Bot commented Jun 7, 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 rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. P2 Normal priority bug or improvement with limited blast radius. and removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. P1 Urgent regression or broken agent/channel workflow affecting real users now. labels Jun 7, 2026
@vincentkoc vincentkoc force-pushed the codex/crawlbar-crawler-suggestions branch from b08507f to 96d6aff Compare June 9, 2026 04:42
vincentkoc pushed a commit that referenced this pull request Jun 9, 2026
Direct-landed from #15 because the contributor branch is not maintainer-editable and remains stacked on the old PR14 base after PR14 was squash-landed.

Proof:

- swift build

- swift run crawlbar-selftest

- swift run crawlbarctl apps --json

- Scripts/quality_baseline.sh

- Scripts/package_app.sh

- codesign --verify --deep --strict --verbose=2 dist/CrawlBar.app

- dist/CrawlBar.app/Contents/Helpers/crawlbar config validate
@vincentkoc

Copy link
Copy Markdown
Member

Direct-landed this in 45e65a3 because the PR branch is not maintainer-editable and is still stacked on the old PR14 base, which is now conflicting after PR14 was squash-landed to main.

I cherry-picked the PR15-only UI commit onto current main, preserved the original author, and pushed it as fix: stabilize settings sidebar.

Validation:

  • swift build
  • swift run crawlbar-selftest
  • swift run crawlbarctl apps --json
  • Scripts/quality_baseline.sh
  • Scripts/package_app.sh
  • codesign --verify --deep --strict --verbose=2 dist/CrawlBar.app
  • dist/CrawlBar.app/Contents/Helpers/crawlbar config validate

Packaged-app launch also succeeded locally; AX dump was blocked by macOS assistive-access permission for osascript.

@vincentkoc vincentkoc closed this Jun 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

merge-risk: 🚨 compatibility 🚨 Merging this PR could break existing users, config, migrations, defaults, or upgrades. P2 Normal priority bug or improvement with limited blast radius. proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. proof: sufficient Contributor real behavior proof is sufficient. rating: 🐚 platinum hermit Good normal PR readiness with ordinary 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