diff --git a/apps/desktop/src/app/chat/sidebar/index.tsx b/apps/desktop/src/app/chat/sidebar/index.tsx
index 19665341f3d..ca38d65908b 100644
--- a/apps/desktop/src/app/chat/sidebar/index.tsx
+++ b/apps/desktop/src/app/chat/sidebar/index.tsx
@@ -1149,7 +1149,8 @@ export function ChatSidebar({
const showSessionSkeletons = sessionsLoading && sortedSessions.length === 0
- const showSessionSections = showSessionSkeletons || sortedSessions.length > 0
+ const showSessionSections =
+ showSessionSkeletons || sortedSessions.length > 0 || projectModel.length > 0
// Each reorderable list reports its OWN new id order; persisting is a direct,
// typed write — no id-prefix sniffing to figure out which level moved.
@@ -1537,7 +1538,7 @@ export function ChatSidebar({
)}
- {contentVisible && !showSessionSections &&
@@ -1618,6 +1619,29 @@ function SidebarSessionSkeletons() {
)
}
+function SidebarBlankState({ onNewProject }: { onNewProject: () => void }) {
+ const { t } = useI18n()
+ const s = t.sidebar
+
+ return (
+
+
+
+
{s.noSessions}
+
+
+
+ )
+}
+
function SidebarPinnedEmptyState() {
const { t } = useI18n()
diff --git a/apps/desktop/src/app/chat/sidebar/project-dialog.tsx b/apps/desktop/src/app/chat/sidebar/project-dialog.tsx
index 16cbb04983d..dcd9f067f43 100644
--- a/apps/desktop/src/app/chat/sidebar/project-dialog.tsx
+++ b/apps/desktop/src/app/chat/sidebar/project-dialog.tsx
@@ -87,21 +87,25 @@ export function ProjectDialog() {
}
const pickFolder = async () => {
- const dir = await pickProjectFolder()
+ try {
+ const dir = await pickProjectFolder()
- if (!dir) {
- return
+ if (!dir) {
+ return
+ }
+
+ const projectId = state?.projectId
+
+ if (mode === 'add-folder' && projectId) {
+ await runSubmit(() => addProjectFolder(projectId, dir))
+
+ return
+ }
+
+ setFolders(prev => (prev.includes(dir) ? prev : [...prev, dir]))
+ } catch (err) {
+ notifyError(err, p.createFailed)
}
-
- const projectId = state?.projectId
-
- if (mode === 'add-folder' && projectId) {
- await runSubmit(() => addProjectFolder(projectId, dir))
-
- return
- }
-
- setFolders(prev => (prev.includes(dir) ? prev : [...prev, dir]))
}
const submit = async () => {
@@ -145,7 +149,10 @@ export function ProjectDialog() {
return (