Skip to content

Hide the sidebar update control unless an update is available - #10

Draft
felipeorlando wants to merge 27 commits into
mainfrom
issue-8-sidebar-update
Draft

felipeorlando wants to merge 27 commits into
mainfrom
issue-8-sidebar-update

Conversation

@felipeorlando

Copy link
Copy Markdown
Owner

Closes #8

The automatic update probe moves from SidebarUpdate up into SidebarUpdateFooter, so the footer owns the snapshot and can decide whether anything is worth rendering. New exported predicate isSidebarUpdateActionable(snapshot) returns true only for available and downloading; the footer returns null otherwise, so the wrapper padding disappears too. SidebarUpdate is now presentational — the dead "Check for updates" / "Checking…" labels, the RefreshCw icon and the runUpdateFlow import are gone. A failed probe lands on idle, so it stays silent.

Settings and app-menu manual checks keep their own snapshots and runUpdateFlow(true, …), untouched. UpdateRailCard and the post-install "What's new" card are unaffected.

Judgement call to review

The Settings block was p-2 pt-0, relying on the footer above for its top gap. With the footer now able to vanish, Settings would sit flush against the scrolling session list. Spacing moved onto the Settings block (p-2) and the footer became p-2 pb-0, in both Sidebar.tsx and ProjectRail.tsx.

Verification

npm run check:web — exit 0, 128 files / 1328 tests. tsc --noEmit clean. 5 new tests in src/chrome/SidebarUpdate.test.ts.

Not run in the app — layout of the collapsed footer is unverified visually.

@coderabbitai

coderabbitai Bot commented Sep 8, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

Comment @coderabbitai help to get the list of available commands.

hardbeat920 and others added 26 commits September 8, 2026 06:22
- Add image storage, validation, and project-specific overrides
- Add appearance controls for visibility and session scope
- Add background dialog, project menu entry, and coverage tests
- Clear multi-select when pointer lands outside session cards
- Reset selection state when closing context menu
- Track context-menu selections to distinguish them from other interactions
- Sync global chat background path changes across session panes
- Add regression tests for arcade visibility
* Add a shortcut to archive the focused conversation

* Check archive eligibility before consuming the shortcut

* Simplify archive routing and remove added test dependencies

* Restore focused archive shortcut tests without new dependencies
- Support image drag-and-drop into notes with secure asset storage and rendering
- Toggle native window translucency based on light/dark appearance
- Vertical bar with dock-style magnification on hover
- Hover preview shows prompt and first two lines of reply
- Keyboard navigation with arrow/tab keys
- Simplified state management and interaction model
Layered backdrop blur carries scrolled content into the title bar
- Preserve dark-mode content tint
- Use a translucent base color in light mode
- Add light-theme composer box shadows and send button states
- Mark send buttons with a shared styling hook
- Add shared IME detection for modern and WebKit keyboard events
- Prevent composer actions from firing during text composition
- Cover IME and ordinary keyboard behavior with tests
- Delete the layered blur overlay and related scroll-state synchronization
- Lower the hide breakpoint from 62rem to 58rem
- Position and scale the background image consistently across split conversation panes
- Compare staged changes against HEAD and unstaged changes against the index
- Preserve selected diff kind and support partially staged files
- Add coverage for diff loading, focus, statuses, and snapshots
- Organize changed files by directory in collapsible tree view
- Add "Open All Changes" button to review all changes at once
- Persist view preference (list/tree) in localStorage
…920#125)

`git_grep` appended each `include` token straight onto the `git grep`
argument list with no `--` separator, so a token starting with `-` was
parsed as an option rather than a pathspec. `git grep` has flags that
spawn a process (`-O` / `--open-files-in-pager`), which made the search
panel's "files to include" field able to run an arbitrary command with
the user's privileges.

Add `--` after the pattern so everything that follows is unambiguously a
pathspec. This closes the whole option-injection category structurally
rather than rejecting specific flag names — the short `-O<cmd>` spelling
executes too, and a name-based filter would miss flags git adds later.

Verified non-regressing: ordinary globs, `:(exclude)` tokens, and an
empty pathspec list all behave the same with `--` in place.


Claude-Session: https://claude.ai/code/session_01NDamTDovK8dArJULC8b5VH

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The busy flag only flips after installPendingUpdate awaits readAppVersion,
so a second click could start another install. Guard with a ref cleared
in finally, and cover two clicks during that delay.

Co-authored-by: Felipe Orlando <fobsouza@gmail.com>
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.

Hide the sidebar update control unless an update is available

6 participants