🦤 DodoToGoDodoToGo is an interactive, day-drillable visual task board for GitHub Copilot and VS Code. It combines natural-language task management with a visual weekly board, persistent state, dependency tracking, and optional parallel-agent workflows. Overview
InstallationDownload
Copilot integrationDodoToGo registers the Visual weekly boardOpen DodoToGo from the Activity Bar or run DodoToGo: Open Full Screen from the Command Palette. The sidebar and full-screen views share the same task state. Getting StartedYou do not need Azure DevOps, the Azure CLI, or any Microsoft-internal tooling to use DodoToGo. A first-run setup wizard walks through the essentials and skips anything that is not applicable to your machine.
The bundled local MCP server registers You can replay the wizard any time via DodoToGo: Run Setup from the Command Palette. UsageCopilot chatInteract with the board using natural language. DodoToGo maps requests to its MCP tools and persists each validated change.
Canvas interactions
Day navigation
FeaturesStatus workflow
Tasks waiting on dependencies or external work can be marked Status color reference
Feature summary
State Persistence
The storage root is resolved in this order: the Worktree boundariesRead-only operations outside the assigned task worktree are permitted for task context with available, authorized tools: reading files, searching code, and inspecting Git history (for example, Crossing the worktree boundary alone does not require additional approval for read-only inspection. Existing access restrictions, content exclusions, security controls, and independent approval requirements still apply. If access is denied, do not bypass the restriction or retry through another tool. When a task worktree is assigned, keep task files and outputs inside it. Do not create, modify, or delete task files outside it, or mutate another checkout's repository state for this task. Builds, tests, installs, formatters, output redirection, and Git mutations are not covered by this read-only allowance; inspect their side effects and keep task writes scoped to the assigned worktree and branch. Existing authorization for task-scoped Git operations, such as staging and committing, is unchanged even when Git manages metadata in shared storage outside the worktree. This does not authorize direct edits to shared Git metadata or configuration, or changes to another task's branch or checkout. Separately requested workflows retain only their existing, explicitly authorized output locations and approval gates; the read-only allowance authorizes none of their writes. Without an assigned task worktree, retain existing filesystem and workflow boundaries; do not infer a new write location. Never read or write DodoToGo board state files directly; use Copy a task IDRight-click a task and choose Copy, or focus its card and press Shift+F10 then Enter. Only that task's exact ID is copied, even when multiple tasks are selected. Completed, blocked, and other-machine tasks can also be copied without changing their data or ownership. Task ID copied appears after the clipboard write succeeds. Paste into your CLI input normally; Copy does not send keystrokes or submit commands. Clipboard permission errors are shown on the board. A timeout means the copy could not be confirmed, not that the clipboard was necessarily unchanged. The standalone canvas needs a secure browser context and clipboard permission. For terminals, use Copy, then paste. This feature does not add terminal drag-and-drop support; existing task-ID drag payloads are unchanged. See [the implementation plan and verification matrix](https://github.com/ahsi-microsoft/Dodo-ToGo-V2/blob/HEAD/<design/Improve Drag and Drop Features Plan.md>) for the current evidence and remaining native checks. Cloud Sync (multi-machine via OneDrive)Cloud Sync is opt-in. Sync runs entirely through your own OneDrive account and
folder — DodoToGo operates no sync backend of its own and never receives your
task data. Enable DodoToGo uses a one-owner-machine model: a task owned by another machine is read-only until ownership is released or the lease expires. Use Filter in the board header to control task visibility. Every view has two labeled sections, separated by a line, containing the buckets from the other two views. Choices are OR within each section, AND between sections: a task must match one included bucket in each section. Clearing Status or Priority hides every task; clearing selectable Machine options leaves this machine included, subject to the other section's filters. Click an enabled checkbox, label, or count to toggle it without closing the dropdown. Filters do not change task fields or ownership. Ownership leases default to 48 hours; use the Filter choices are shared by dimension across navigation and reloads. Each view uses the other two dimensions:
Status includes all seven buckets: Completed, Blocked, In Progress, Planned, Planning, Promised, and New. It uses the same canonical status grouping as the Status renderer; a derived blocked badge does not move a task out of its actual status bucket. Priority includes P0-P3. Machine lists each known individual machine, including empty and offline machines, plus Un-Owned. Ownership recovery and Ownership unavailable appear when relevant; neither missing metadata nor recovery is inferred to mean Un-Owned or a confirmed owner. There is no aggregate Other Machines checkbox. Completed tasks obey selected machine filters just like unfinished tasks. The current machine's exact machine/enrollment identity is labeled This Machine and permanently checked, disabled, and greyed out. The section order is Select all, This Machine, Un-Owned, then the other machines. Older saved exclusions cannot hide this local machine, but Status and Priority filters can still hide its tasks. Another enrollment of the same machine is not local. No local row is invented without an actual roster or task-ownership entry and a matching current identity. Fresh preferences exclude Completed and Blocked wherever a Status section exists, and include all other statuses, priorities, and machines. Changing Status choices in Priority also updates Machine; changing Priority choices in Status also updates Machine; changing Machine choices in Priority also updates Status. Navigation does not save or switch filter profiles. Machine choices are stored by stable machine/enrollment identity, so renaming a machine or changing its presence does not reset them. Shared preferences persist under The current view's own bucket dimension is not filtered, and its saved choices are retained rather than cleared. Controls and shortcuts cannot change unavailable dimensions. Collapsible buckets persist separately from filter choices. Machine collapse choices use stable machine/enrollment identity, and collapsed headers remain available as guarded ownership drop targets. A task can still be hidden by either of the other dimensions. The Filter funnel icon sits after New Task, before the view toggle. Each section has its own Select all checkbox directly below its heading, followed by This Machine when present, then its selectable bucket rows; there is no top-level Select all. It toggles only that section's selectable options, leaving the pinned local machine and the other section unchanged. Checked and mixed states count only selectable options; if there are none, Select all is unchecked and disabled. Each bucket shows its deduplicated matching task count for the selected day before any filtering, including completed tasks in machine counts. Counts stay unchanged when a filter hides tasks. Filter changes apply immediately. If a preference cannot be saved, a warning remains until all outstanding choices are saved; later filter changes retry them. Dependency notices do not erase that warning and clear when host updates or navigation make them obsolete. Filter shortcuts are ignored while a dialog is open, and queued dependency focus resumes only after dialogs close. Known limitations: OneDrive sync can take seconds to minutes, concurrency protection is best-effort while files are still syncing, and auto-detection is Windows-first. Machine viewWith Cloud Sync enabled, Machine replaces List in both VS Code and standalone canvas. A saved List selection, or disabling sync while Machine is selected, returns to Priority. Upgrade and restart all participating VS Code, canvas, and MCP runtimes, then finish the explicit Machine setup checklist. Each enrolled machine has a labeled, consistently colored bucket, including machines without tasks. Un-Owned contains tasks without an active owner; ambiguous ownership appears separately as read-only Ownership recovery. Current day and status/visibility filters still apply. Dragging into a bucket, or using the keyboard ownership control, requests assignment, transfer, or release without changing day, status, priority, or order. Offline destinations offer Wait, Force now, or Cancel. Requests stay pending until confirmed; a cancellation request is not a completed cancellation. Machine view filters by Priority and Status, not by its own machine buckets. Those choices are shared with the same filter dimensions in Priority and Status views. Bucket headers identify owners without repeating machine tags on every card. Right-click a card (or press Shift+F10) for Change owner; the card and empty-board context menus also expose Ownership requests and recovery for follow-up controls and errors. Ownership changes never start, stop, or migrate agents. Confirm running-agent and auto-pickup risks when prompted. After migration, use Machine controls for targeted handoffs; legacy ownership requests are quarantined, while ordinary queued task edits remain supported. For a data-preserving rollback, set Model Configurations
Architecture
Optional: Microsoft-internal toolingThese capabilities require Microsoft-internal accounts or tooling and are not part of the normal getting-started path. They stay hidden or disabled on non-Microsoft machines.
If you are on a non-Microsoft machine and want to be sure these paths stay out
of the way, set TroubleshootingIf setup does not look right, DodoToGo writes a diagnostic log to the DodoToGo output channel: View → Output, then pick DodoToGo from the dropdown. It records the environment verdict (and the signals that produced it), the filtered integration list, which AI CLI was resolved, and the cloud-sync decision. Absolute filesystem paths are redacted by default so the log is safe to share. Common non-Microsoft setup situations, all expected:
To re-run the wizard, use DodoToGo: Run Setup from the Command Palette. Development
Configuration
|

