Sidebar polish: search copy, dividers, project reorder, fix DnD#8568
Conversation
- Change search placeholder to "Search conversations" in sidebar and session history (EN + ES locales) - Remove horizontal dividers between nav/projects/recents sections, increase section header padding for visual separation - Add drag-and-drop project reordering in sidebar with reorderProjects store method and localStorage persistence - Auto-expand project when a chat is dropped into it - Fix HTML5 drag-and-drop in Tauri by setting dragDropEnabled to false; native macOS drag handler was intercepting internal drag events after dragstart, preventing dragover/drop from reaching JavaScript Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The previous e.target !== e.currentTarget check always returned true because drags originate on child elements inside ProjectSection, so project reorder data was never set. Now checks whether text/x-session-id is already present in the dataTransfer (set by chat row dragStart) to distinguish chat drags from project reorder drags. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 1dd82e8c6b
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
When fromIndex < toIndex, removing the source item shifts all subsequent indices down by one. Adjust insertAt accordingly so the project lands before the drop target, matching the visual indicator position. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add a Tauri command that writes updated order values to each project's project.json file. The frontend calls it after every reorder so the order survives app restart (list_projects sorts by the order field). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8023fca105
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
ChatView sorts projects by .order, so stale order fields after a sidebar drag would show the old sequence until fetchProjects reloads. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d67083c692
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| return state; | ||
| const [moved] = projects.splice(fromIndex, 1); | ||
| // When dragging down, removing the source shifts the target index | ||
| const insertAt = fromIndex < toIndex ? toIndex - 1 : toIndex; |
There was a problem hiding this comment.
Allow dropping a project after the last row
The new reorder index calculation always inserts before the hovered target, but the UI only exposes targets on existing project rows. That means there is no drop target representing the end of the list, so users cannot directly move a project to the bottom (for example, dragging A onto last row D in [A,B,C,D] results in [B,C,A,D], not [B,C,D,A]). Add an explicit end-of-list drop zone or special-case last-row drops to support placing items at the end.
Useful? React with 👍 / 👎.
| }); | ||
| const projects = get().projects; | ||
| persistProjects(projects); | ||
| void apiReorderProjects(projects.map((p, i) => [p.id, i])); |
There was a problem hiding this comment.
Handle backend reorder failures instead of dropping promise
This dispatches the persistence call with void and no error handling, so any reorder_projects failure (e.g., write failure or project disappearing during the loop) is silently ignored while Zustand/localStorage keep the optimistic order. That leaves the session showing one order until restart, then reverting from disk without feedback. Make this action async (or attach a catch) so failures can be surfaced and state can be retried/reconciled.
Useful? React with 👍 / 👎.
…l-placeholder * origin/main: (64 commits) fix: expand tool calls by default when Response Style is Detailed (aaif-goose#8478) fix: create logs dir before writing llm request log (aaif-goose#8522) fix: enable token usage tracking and configurable stream timeout for Ollama provider (aaif-goose#8493) fix tauri-plugin-dialog version constraint to match other plugins (aaif-goose#8542) call goose serve from tauri frontend via goose-acp client (aaif-goose#8549) failed the script when bundle:default fails and cleanup "alpha" (aaif-goose#8580) pass globally unique conversation identifier as sessionId in databricks api call (aaif-goose#8576) fix: use sqlx chrono decode for thread timestamps instead of manual parsing (aaif-goose#8575) docs: remove stale gemini-acp references (aaif-goose#8572) show individual untracked files in git changes widget (aaif-goose#8574) fix: update publishing flow to include new sdk dir (aaif-goose#8573) fix: remove double border on content in chat (aaif-goose#8545) chore(goose2): `just goose2 <command>` with the addition of `just goose2 kill` (aaif-goose#8570) Lifei/oltp data (aaif-goose#8458) Sidebar polish: search copy, dividers, project reorder, fix DnD (aaif-goose#8568) remove the workflow_dispatch check (aaif-goose#8563) fix: one more rename (aaif-goose#8562) fix(desktop): accept self-signed certs from configured external goosed host (aaif-goose#8400) alexhancock/npm-bumps (aaif-goose#8557) Remove npm publish from release for now (aaif-goose#8558) ...
Summary
pt-2→pt-4) for cleaner visual separationreorderProjectsstore method with localStorage persistencedragDropEnabled: falseintauri.conf.json— macOS native drag handler was intercepting internal drag events afterdragstart, preventingdragover/dropfrom reaching JavaScript. File attachment drops from Finder still work via HTML5 DnD fallback inuseAttachmentDropTargetTest plan
🤖 Generated with Claude Code