feat(ui): context panel enhancements — resizable panels, drag-and-drop todo ordering, and persistent sizes (#1269)

* fix: remove max-h-80 cap on quick notes textarea so resized height is respected

* feat: add drag & drop reordering to project todo items

* feat: make todo panel resizable with density-aware sizing

* feat: open plan import file picker at project root

* feat: persist quick notes and todo panel sizes across sessions

* refactor(ui): scale content height with padding in projectnotestodopanel

* Update packages/ui/src/components/session/ProjectNotesTodoPanel.tsx

Signed-off-by: Erman HAVUÇ <ermanhavuc@gmail.com>

* fix(ui): harden context panel resizing and import

---------

Signed-off-by: Erman HAVUÇ <ermanhavuc@gmail.com>
Co-authored-by: Bohdan Triapitsyn <artmore@protonmail.com>
This commit is contained in:
Erman HAVUÇ
2026-05-17 23:26:26 +03:00
committed by GitHub
co-authored by Bohdan Triapitsyn
parent 631905764e
commit 6369cf76a7
12 changed files with 377 additions and 82 deletions
+2 -1
View File
@@ -369,7 +369,7 @@ export const requestDirectoryAccess = async (
};
export const requestFileAccess = async (
options?: { filters?: Array<{ name: string; extensions: string[] }> }
options?: { filters?: Array<{ name: string; extensions: string[] }>; defaultPath?: string }
): Promise<{ success: boolean; path?: string; error?: string }> => {
if (isTauriShell() && isDesktopLocalOriginActive()) {
try {
@@ -379,6 +379,7 @@ export const requestFileAccess = async (
multiple: false,
title: 'Select File',
...(options?.filters ? { filters: options.filters } : {}),
...(options?.defaultPath ? { defaultPath: options.defaultPath } : {}),
});
if (!selected || typeof selected !== 'string') {
return { success: false, error: 'File selection cancelled' };
+2
View File
@@ -1034,6 +1034,8 @@ export const dict = {
'rightSidebar.contextNotesTodo.todo.actions.expand': 'Expand todo "{text}"',
'rightSidebar.contextNotesTodo.todo.actions.delete': 'Delete "{text}"',
'rightSidebar.contextNotesTodo.todo.actions.send': 'Send "{text}"',
'rightSidebar.contextNotesTodo.todo.actions.reorder': 'Reorder "{text}"',
'rightSidebar.contextNotesTodo.todo.resizeAria': 'Resize todo list',
'rightSidebar.contextNotesTodo.todo.sendMenu.currentSession': 'Send to current session',
'rightSidebar.contextNotesTodo.todo.sendMenu.newSession': 'Send to new session',
'rightSidebar.contextNotesTodo.todo.sendMenu.newWorktreeSession': 'Send to new worktree session',
+2
View File
@@ -1000,6 +1000,8 @@ export const dict: Record<I18nKey, string> = {
"rightSidebar.contextNotesTodo.todo.actions.expand": "Expandir tarea pendiente \"{text}\"",
"rightSidebar.contextNotesTodo.todo.actions.delete": "Eliminar \"{text}\"",
"rightSidebar.contextNotesTodo.todo.actions.send": "Enviar \"{text}\"",
"rightSidebar.contextNotesTodo.todo.actions.reorder": "Reordenar \"{text}\"",
"rightSidebar.contextNotesTodo.todo.resizeAria": "Redimensionar lista de tareas",
"rightSidebar.contextNotesTodo.todo.sendMenu.currentSession": "Enviar a la sesión actual",
"rightSidebar.contextNotesTodo.todo.sendMenu.newSession": "Enviar a una nueva sesión",
"rightSidebar.contextNotesTodo.todo.sendMenu.newWorktreeSession": "Enviar a una nueva sesión de worktree",
+2
View File
@@ -1037,6 +1037,8 @@ export const dict: Record<I18nKey, string> = {
'rightSidebar.contextNotesTodo.todo.actions.expand': '펼치기 todo "{text}"',
'rightSidebar.contextNotesTodo.todo.actions.delete': '"{text}" 삭제',
'rightSidebar.contextNotesTodo.todo.actions.send': '보내기 "{text}"',
'rightSidebar.contextNotesTodo.todo.actions.reorder': '재정렬 "{text}"',
'rightSidebar.contextNotesTodo.todo.resizeAria': '할 일 목록 크기 조정',
'rightSidebar.contextNotesTodo.todo.sendMenu.currentSession': '현재 세션으로 보내기',
'rightSidebar.contextNotesTodo.todo.sendMenu.newSession': '새 세션으로 보내기',
'rightSidebar.contextNotesTodo.todo.sendMenu.newWorktreeSession': '새 워크트리 세션으로 보내기',
+2
View File
@@ -1930,6 +1930,8 @@ export const dict: Record<I18nKey, string> = {
'rightSidebar.contextNotesTodo.todo.actions.expand': 'Rozwiń zadanie „{text}”',
'rightSidebar.contextNotesTodo.todo.actions.markComplete': 'Oznacz „{text}” jako ukończone',
'rightSidebar.contextNotesTodo.todo.actions.send': 'Wyślij „{text}”',
'rightSidebar.contextNotesTodo.todo.actions.reorder': 'Zmień kolejność "{text}"',
'rightSidebar.contextNotesTodo.todo.resizeAria': 'Zmień rozmiar listy zadań',
'rightSidebar.contextNotesTodo.todo.addAria': 'Dodaj zadanie',
'rightSidebar.contextNotesTodo.todo.clearCompleted': 'Wyczyść ukończone',
'rightSidebar.contextNotesTodo.todo.empty': 'Brak zadań. Dodaj krótką checklistę dla tego projektu.',
@@ -1000,6 +1000,8 @@ export const dict: Record<I18nKey, string> = {
"rightSidebar.contextNotesTodo.todo.actions.expand": "Expandir tarefa pendente \"{text}\"",
"rightSidebar.contextNotesTodo.todo.actions.delete": "Excluir \"{text}\"",
"rightSidebar.contextNotesTodo.todo.actions.send": "Enviar \"{text}\"",
"rightSidebar.contextNotesTodo.todo.actions.reorder": "Reordenar \"{text}\"",
"rightSidebar.contextNotesTodo.todo.resizeAria": "Redimensionar lista de tarefas",
"rightSidebar.contextNotesTodo.todo.sendMenu.currentSession": "Enviar à sessão atual",
"rightSidebar.contextNotesTodo.todo.sendMenu.newSession": "Enviar a uma nova sessão",
"rightSidebar.contextNotesTodo.todo.sendMenu.newWorktreeSession": "Enviar a uma nova sessão de worktree",
+2
View File
@@ -1000,6 +1000,8 @@ export const dict: Record<I18nKey, string> = {
"rightSidebar.contextNotesTodo.todo.actions.expand": "Розгорнути завдання \"{text}\"",
"rightSidebar.contextNotesTodo.todo.actions.delete": "Видалити \"{text}\"",
"rightSidebar.contextNotesTodo.todo.actions.send": "Надіслати \"{text}\"",
"rightSidebar.contextNotesTodo.todo.actions.reorder": "Змінити порядок \"{text}\"",
"rightSidebar.contextNotesTodo.todo.resizeAria": "Змінити розмір списку завдань",
"rightSidebar.contextNotesTodo.todo.sendMenu.currentSession": "Надіслати до поточної сесії",
"rightSidebar.contextNotesTodo.todo.sendMenu.newSession": "Надіслати до нової сесії",
"rightSidebar.contextNotesTodo.todo.sendMenu.newWorktreeSession": "Надіслати до нової сесії в worktree",
@@ -1000,6 +1000,8 @@ export const dict: Record<I18nKey, string> = {
'rightSidebar.contextNotesTodo.todo.actions.expand': '展开待办“{text}”',
'rightSidebar.contextNotesTodo.todo.actions.delete': '删除“{text}”',
'rightSidebar.contextNotesTodo.todo.actions.send': '发送“{text}”',
'rightSidebar.contextNotesTodo.todo.actions.reorder': '重新排序"{text}"',
'rightSidebar.contextNotesTodo.todo.resizeAria': '调整待办列表大小',
'rightSidebar.contextNotesTodo.todo.sendMenu.currentSession': '发送到当前会话',
'rightSidebar.contextNotesTodo.todo.sendMenu.newSession': '发送到新会话',
'rightSidebar.contextNotesTodo.todo.sendMenu.newWorktreeSession': '发送到新 worktree 会话',