feat: add mobile project editor with worktree reorder and delete

Replace the up/down arrows in the mobile project reorder list (drag already
covers reordering) with an edit button that opens a dedicated project editor
surface: rename, pick icon and color, and discover a favicon (no upload).

The editor lists the project's worktrees with drag-to-reorder (persisted per
project, like project order) and a delete button that opens a mobile
confirmation built on the shared worktree primitives — archiving attached
sessions and optionally removing the local/remote branch.
This commit is contained in:
Bohdan Triapitsyn
2026-06-02 16:10:20 +03:00
parent 51682dc7af
commit 79d68ba583
12 changed files with 822 additions and 34 deletions
+13
View File
@@ -67,6 +67,19 @@ export const dict: Record<I18nKey, string> = {
"mobile.sessions.confirmRemoveProject": "Видалити",
"mobile.sessions.confirmRemoveProjectAria": "Підтвердити видалення {label}",
"mobile.sessions.toast.projectRemoved": "Видалено {label}",
"mobile.sessions.editProjectAria": "Редагувати {label}",
"mobile.projectEdit.worktreesTitle": "Ворктрі",
"mobile.projectEdit.worktreesEmpty": "У цьому проєкті ще немає ворктрі.",
"mobile.projectEdit.reorderHint": "Перетягніть, щоб змінити порядок ворктрі.",
"mobile.projectEdit.dragWorktreeAria": "Перетягнути {label} для зміни порядку",
"mobile.projectEdit.deleteWorktreeAria": "Видалити ворктрі {label}",
"mobile.projectEdit.deleteWorktreeTitle": "Видалити ворктрі",
"mobile.projectEdit.deleteWorktreeConfirmButton": "Видалити",
"mobile.projectEdit.deleteWorktreeConfirm": "Видалити ворктрі «{name}»? Цю дію не можна скасувати.",
"mobile.projectEdit.deleteWorktreeDirty": "У цьому ворктрі є незакомічені зміни, які буде втрачено.",
"mobile.projectEdit.deleteWorktreeArchiveNote": "Прикріплені сесії ({count}) буде заархівовано.",
"mobile.projectEdit.deleteLocalBranch": "Також видалити локальну гілку",
"mobile.projectEdit.deleteRemoteBranch": "Також видалити віддалену гілку",
"mobile.sessions.showMore": "Показати ще {count}",
"mobile.sessions.search.section.sessions": "Сесії",
"mobile.sessions.search.section.archived": "Архів",