Skip to content

Akhil/unify tool sidebar - #320

Merged
itsmeakhil merged 13 commits into
release-v0.1.16from
akhil/unify-tool-sidebar
Aug 24, 2026
Merged

Akhil/unify tool sidebar#320
itsmeakhil merged 13 commits into
release-v0.1.16from
akhil/unify-tool-sidebar

Conversation

@itsmeakhil

Copy link
Copy Markdown
Collaborator

No description provided.

itsmeakhiland others added 13 commits August 24, 2026 17:55
…redicate
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H3GuKxASDXLwFCLA7o3GGH
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H3GuKxASDXLwFCLA7o3GGH
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H3GuKxASDXLwFCLA7o3GGH
…abindex
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H3GuKxASDXLwFCLA7o3GGH
… the icon rail
Collapsing used to unmount the panel, which discarded the body's search text,
expanded tree groups and scroll position every time. It also made a rail
impossible: entries are published by hooks inside the body, and an unmounted
body cannot publish. Hide with display:none instead, mirroring how TabContent
keeps inactive tool tabs alive.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H3GuKxASDXLwFCLA7o3GGH
…d rail
password-manager, api-keys, to-do and environment-manager gain a populated rail
with no edits of their own — the facets are already declared as filter items.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H3GuKxASDXLwFCLA7o3GGH
…the rail
notes and snippet-manager publish pinned items, api-client its collections,
data-explorer and s3-drive their connections, bookmarks and secure-files their
root folders.
Also fixes secure-files' folder tree calling panel.close() unconditionally on
select, which collapsed the whole sidebar on every folder pick on desktop —
every other sidebar guards that with isOverlay.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H3GuKxASDXLwFCLA7o3GGH
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H3GuKxASDXLwFCLA7o3GGH
…ollapse
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H3GuKxASDXLwFCLA7o3GGH
… NUL byte
The "overview showing, nothing selected" sentinel was a literal NUL inside a
string literal in the source. Same value, but the byte made the whole file
binary to grep, ripgrep and diff, which then skip it without saying so.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H3GuKxASDXLwFCLA7o3GGH
…tives
Shipped unused. They give the next per-tool sidebar migration somewhere to land
without that migration also having to design the pieces.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H3GuKxASDXLwFCLA7o3GGH
The hero greeted off `useAuth().user.displayName`, which is a hardcoded null —
that identity object is deliberately name-free, and the editable profile name
lives in local preferences behind `useAppUser` (as top-bar and mobile-nav
already read it). So the greeting never named anyone, however the profile was
filled in.
Reads the profile name instead, via a `greetingFirstName` helper that is unit
tested. The now-unused `user` prop is dropped from DashboardHero.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H3GuKxASDXLwFCLA7o3GGH
The vault gate sat in page.tsx, which is this layout's children — so a locked
vault swapped the editor for the placeholder while the sidebar column kept
rendering a note tree, a search field and a New note button, all backed by a
vault with no key loaded.
Gate in the layout instead, above NotesProvider so the provider does not mount
and fail to load notes it cannot decrypt. password-manager, api-keys,
environment-manager, secure-files and snippet-manager already gate before the
component that owns their ToolSidebarLayout; notes differed only because its
layout is a separate route-level wrapper.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H3GuKxASDXLwFCLA7o3GGH
@vercel

vercelBot commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentActionsUpdated (UTC)
mydevtools-techReadyReadyPreviewAug 24, 2026 3:21pm

@itsmeakhil
itsmeakhil changed the base branch from main to release-v0.1.16August 24, 2026 15:21
@github-actions

Copy link
Copy Markdown

ThreatCrush Security Scan

1 finding(s)

MEDIUM: 1

SeverityRuleLocation
MEDIUMjs-unsafe-yaml-loadapps/desktop-ui/src/lib/import/insomnia.ts:290

Snippets are redacted; ThreatCrush never prints matched credential material.

@itsmeakhil
itsmeakhil merged commit afc100a into release-v0.1.16Aug 24, 2026
6 checks passed
NishanthNixx added a commit that referenced this pull request Aug 25, 2026
Settings split into tabs, unified tool sidebar (#320-#323), the Phase 6
security batch, and the notes fix that keeps the sidebar hidden until the
vault is unlocked.
Sign up for freeto 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

@itsmeakhil