Omniscio documentation
Browse all documentation
  1. Getting Started13
  2. Sessions & Agents115
  3. Inbox & Notifications59
  4. Projects & Tasks95
  5. Automation & Scheduling75
  6. Knowledge & Memory26
  7. AI Features60
  8. Integrations100
  9. Plugins & Marketplace33
  10. Cloud & Teams56
  11. Settings & Customization58
  12. Account & Billing28
  13. Troubleshooting84
  14. CLI & API Reference22
  15. Legal & Policies4
  16. Uncategorised22

Reorder projects

You control the order of the projects sidebar yourself: drag rows up and down, group them under collapsible dividers, pin the most important ones to a fixed top section, and collapse groups you do not want to see right now. The order is remembered per account and survives restarts, and ungrouped projects and dividers share one top-level sequence.

What it is

The projects sidebar shows your projects in a single ordered list. You control that order: drag rows up and down, group them under collapsible dividers (group headers — sometimes searched for as "groups" or "group projects"), pin the most important ones to a fixed top section, and collapse groups you don't want to see right now. The order is per-account and persists across restarts because it lives in SQLite (projects.display_order and project_dividers.display_order). One important detail: ungrouped projects and dividers share the same display-order sequence at the top level — a divider is just another sortable row that happens to contain projects underneath it. That's why dragging an ungrouped project past a divider header reliably "lifts" it above the whole group.

Where to find it

All of it happens in the projects sidebar down the left-hand side of the app, and none of it needs a settings screen. Drag rows there to reorder them; the + icon at the top of that sidebar creates a group; a group header’s ⋯ menu adds a project to it or renames it, and clicking its chevron collapses or expands the group.

How it behaves

How to use it

  1. Drag a project row. Long-press a project row in the sidebar (about 200ms), then drag it. A drop indicator (a thin horizontal line) shows where the row will land. Release on top of another project to swap places, or drop between two rows to insert there. Inside a divider, dropping reorders within that group; outside any divider, you reorder among the ungrouped projects. (Long-press exists so a quick click still selects the project.)
  2. Drag a project onto a divider header. Drop a project on top of a divider's name to move it into that group at the bottom. The project keeps its name, color, sessions, etc. — only its divider_id and rank change. Prefer not to drag? A project's Edit Project dialog has a Group dropdown that moves it between groups (and can create a new group inline), applied on Save.
  3. Drag a project out of a divider. Drop it onto the empty space above the first divider (or onto another row outside any divider) and it becomes ungrouped — divider_id is cleared, and the project lands among the top-level rows.
  4. Drag a whole divider. Long-press the divider header (the row with the chevron and the group name) and drag it to a new position. The projects inside follow the header — they don't get re-ranked relative to the divider, just the divider moves up or down among other top-level rows. You cannot nest a divider inside another divider.
  5. Create a divider. Click the + icon at the top of the projects sidebar and pick New Group (the list-icon entry next to Add Project). A small text dialog asks for a divider name. Enter one and submit. The new divider appears at the top of the list (or at the position implied by your current scroll, depending on the build); existing projects are not affected.
  6. Add a project to a divider. Right-click a divider header (or click its MoreVertical (…) icon) and pick Add Project. The standard Add Project dialog opens with that divider already chosen in the Group dropdown — you can submit straight through and the new project lands inside the group at the bottom. This is faster than opening the dialog from the sidebar header's + menu and picking the group manually. See add-a-project.md for the rest of the dialog (name, color, Quick Create vs Browse vs GitHub).
  7. Rename a divider. Click the MoreVertical (…) icon on the right side of a divider header and choose Rename. The header turns into an inline text input — type the new name and press Enter (or click away to cancel). You can also edit dividers via the Edit Project dialog of any project that lives in the divider, but the inline rename on the header itself is faster.
  8. Collapse / expand a group. Click the chevron at the left of a divider header (or click the header row itself, away from the menu trigger). Collapsed groups hide their projects from the list — the count badge on the divider shows how many are tucked inside. The expanded/collapsed state is per-divider and remembered across restarts.
  9. Delete a divider. Right-click menu on the header → Delete, or the MoreVertical menu → Delete. A confirm dialog asks before proceeding. Deleting a divider does not delete its projects — they become ungrouped and re-appear at the top level. There's no auto-recreate; if you want the group back, make a new divider with the same name and drag the projects back in.
  10. Pin to top. Right-click any project → Pin to Top. Pinned items render in a separate fixed section above the regular list (above all dividers and ungrouped rows). The pinned section has its own internal drag order — you can reorder any pinned item (solo projects, parent groups like "AI Tools", and pinned divider groups) by dragging — but it's a one-zone block: pinned rows can't be dragged into a divider without unpinning first. Right-click → Unpin sends the row back to its previous position in the unpinned list (preserving the row's display_order).
  11. Reset. There is no built-in "Restore default order" button. If your order is messed up, manually drag rows back, or open the SQLite database at <userData>/mission-control.db and renumber display_order by hand (see the SQLite logs and debugging page for the path).

Note: dividers are global to the account — every project either lives in a divider or is "ungrouped." There are no per-window or per-workspace divider sets. Fresh installs seed an Omniscio divider at the top holding the built-in virtual projects (Skills, Recipes, Cron Jobs, Quick Replies, Automations, AI Coaching, Settings, etc. — see projects-sidebar.md for the full list). You can rename the Omniscio divider freely (it keeps an internal system_tag marker so the rename doesn't break lookups), and you can also delete it — its children just become ungrouped, and Omniscio will not resurrect the divider on the next launch.

For agents

How it works

The sidebar layout is built in ProjectsSidebar.tsx. The two helpers buildTopLevelSlots() and buildRenderItems() interleave ungrouped projects and dividers into a single ordered list using each row's displayOrder. Drag-and-drop is wired through three independent useDragReorder() instances (useDragReorder.ts) — one for the pinned section, one for the top-level mixed list (ungrouped projects + dividers), and one for inside each divider. Each instance handles its own drop zone and writes back to a different IPC channel: pinned drag → SIDEBAR_REORDER (covers mixed item types — solo projects, parent groups, and divider groups share the pinned section's displayOrder namespace), top-level drag → SIDEBAR_REORDER (the unified one), divider-internal drag → PROJECT_REORDER scoped to that divider. The dedicated handler handleDividerExternalDrop() covers the cross-zone case (project dragged onto a divider header) and calls IPC.PROJECT_MOVE_TO_DIVIDER to update divider_id first, then SIDEBAR_REORDER to fix the position.

The IPC channels are declared in ipc-channels.ts: PROJECT_REORDER, PROJECT_MOVE_TO_DIVIDER, PROJECT_PIN, PROJECT_UNPIN, SIDEBAR_REORDER, plus the divider CRUD set (DIVIDER_CREATE, DIVIDER_UPDATE, DIVIDER_DELETE, DIVIDER_REORDER, DIVIDER_LIST). The handlers in project-handlers.ts and divider-handlers.ts validate input and delegate to the underlying SQL: reorderProjects(), reorderSidebar(), moveProjectToDivider(), and pinProject() in queries-projects/projects.ts. reorderSidebar() is the interesting one — it walks an array of { id, kind: 'project' | 'divider' } and writes index back to either the projects or project_dividers table inside a single transaction, giving the two tables a unified sequence at the top level. That unification is what migration v63 enables — it renumbered legacy data so projects and dividers no longer collide on display_order. buildTopLevelSlots() includes a fallback for pre-migration data (offsets dividers after all ungrouped projects when collisions are detected) so old databases still render correctly.

listProjects() in queries-projects.ts orders rows by is_pinned DESC, display_order ASC — that's why pinned rows always render at the top of the list regardless of their underlying display_order. Pinning doesn't move a row's display_order; it just flips is_pinned. So an unpin restores the row to its original numeric position automatically. Divider deletion uses ON DELETE SET NULL on the projects.divider_id foreign key (set up in database.ts migrations), which is what makes a deleted divider's children land back among the ungrouped rows instead of getting orphaned. Toggle (collapse/expand) and rename go through DIVIDER_UPDATE, which writes to project_dividers.is_collapsed and name respectively. The renderer's divider-store.ts holds the divider list and refetches on the DIVIDERS_CHANGED push event emitted after any mutation.

Related

  • projects-sidebar.md — overview of the sidebar layout and the special Omniscio built-ins divider that holds Skills, Recipes, Cron Jobs, etc.
  • add-a-project.md — adding a project (drops in either at the top of the ungrouped list or at the bottom of a divider you picked in the dialog)
  • edit-a-project.md — pin/unpin, change a project's color/icon (the right-click menu owns most ordering shortcuts)
  • delete-a-project.md — removing a project altogether (different from un-grouping; soft-delete with undo)

Last verified 2026-09-23