[{"data":1,"prerenderedAt":1789},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fstacks":3,"docs-nav":1508,"docs-updated":1747,"site-nav-marketing":1757},{"id":4,"title":5,"body":6,"description":1496,"extension":1497,"group":1498,"icon":1499,"meta":1500,"navTitle":1501,"navigation":1502,"order":1503,"path":1504,"seo":1505,"stem":1506,"__hash__":1507},"docs\u002Fdocs\u002Fstacks.md","Stacks & ordered merging",{"type":7,"value":8,"toc":1476},"minimark",[9,18,21,26,29,58,76,89,108,122,126,149,156,231,239,261,271,275,290,344,368,371,377,414,423,437,441,452,753,817,821,837,850,857,862,865,885,894,897,926,941,947,975,1006,1016,1025,1028,1034,1068,1082,1102,1106,1112,1143,1146,1163,1170,1174,1181,1327,1340,1344,1354,1357,1386,1407,1421,1425],[10,11,12,13,17],"p",{},"A ",[14,15,16],"strong",{},"stack"," is a chain of sessions where each one is built on the one below it, and Plexus keeps the whole chain in sync while the agents work, then merges it in order.",[10,19,20],{},"Split a large change into pieces that can each be reviewed on their own: an API session, a UI session on top of it, an end-to-end test session on top of that. Each piece gets its own worktree, its own agent and its own pull request, and each pull request shows only its own changes because it targets the branch of the session below it.",[22,23,25],"h2",{"id":24},"stack-sessions","Stack sessions",[10,27,28],{},"There are two ways to put a session in a stack.",[10,30,31,34,35,38,39,42,43,46,47,50,51,54,55,57],{},[14,32,33],{},"Start a new one on top."," On the session you want to build on, open the ",[14,36,37],{},"⋯"," menu and choose ",[14,40,41],{},"New stacked session…",". The ",[14,44,45],{},"New Session"," dialog opens with ",[14,48,49],{},"Stack on"," set to that session and the base branch locked to its branch: the new session starts from that branch and syncs whenever the session under it moves. Name it and click ",[14,52,53],{},"Create",". You can also pick a session in the ",[14,56,49],{}," field of any New Session dialog.",[10,59,60,63,64,66,67,71,72,75],{},[14,61,62],{},"Stack an existing session."," Open the ",[14,65,37],{}," menu of a session that already exists — one you cut from ",[68,69,70],"code",{},"main"," before you knew it belonged in a stack, say — and choose ",[14,73,74],{},"Stack on…",". Pick the session it should sit on. The picker says what will happen before you choose: the session will sync onto the one you pick, and its pull request will target that session's branch. The session's current parent is listed but can't be picked again, and the picker leaves out anything Plexus can't stack it on: itself, a session already stacked on it, archived sessions, and sessions on the project's main checkout.",[10,77,78,79,82,83,88],{},"Either way the session appears ",[14,80,81],{},"nested under its parent"," in the sidebar, joined to it by a connector line, and its ",[84,85,87],"a",{"href":86},"#the-stack-panel","Stack panel"," opens. A stack can be up to eight sessions deep, and the session underneath has to be started — a stacked session is cut from its branch.",[10,90,91,92,95,96,100,101,104,105,107],{},"Drag a stack by its ",[14,93,94],{},"bottom session"," to reorder it in the sidebar; everything stacked on it moves with it. A stack is drawn inside one list at a time: the project's session list, or a ",[84,97,99],{"href":98},"\u002Fdocs\u002Fsplit-view","split view",". If part of a stack is in a split view and part is not, each part is drawn as a stack of its own, starting from its lowest session, and the sessions stay stacked on one another all the same. To take a session out of its stack, choose ",[14,102,103],{},"Unstack"," in its ",[14,106,37],{}," menu: it stays based on the same branch and simply stops being synced.",[109,110,111],"callout",{},[10,112,113,114,117,118,121],{},"A branch another session is based on is ",[14,115,116],{},"never deleted"," when its own session is removed — not by ",[14,119,120],{},"Delete",", and not by the cleanup that runs after a pull request merges. Plexus tells you which session kept it alive. This protection is free and applies to any session based on another session's branch, stacked or not.",[22,123,125],{"id":124},"the-stack-panel","The Stack panel",[10,127,128,129,132,133,136,137,139,140,144,145,148],{},"A stacked session's context bar carries the ",[14,130,131],{},"Stack pill",": ",[14,134,135],{},"Stack 2 of 3"," says where the session sits. Click it to show or hide the ",[14,138,87],{}," beside the session. The panel opens by itself for a session in a stack or in ",[84,141,143],{"href":142},"#merge-in-order","Merge in order","; for any other session with an open pull request the pill shows its number (",[14,146,147],{},"#129",") and opens the same panel for that one pull request.",[10,150,151,152,155],{},"The panel draws the stack as a ",[14,153,154],{},"map",", top to bottom, with your base branch at the bottom:",[157,158,159,163,175,206,209],"ul",{},[160,161,162],"li",{},"Each layer is numbered from the bottom — layer 1 is the session your stack starts from.",[160,164,165,166,169,170,174],{},"Each layer shows its pull request's number and title (or ",[14,167,168],{},"No pull request yet","), the session's name — click it to open that session — and its ",[84,171,173],{"href":172},"#states","state",".",[160,176,177,178,181,182,185,186,189,190,193,194,197,198,201,202,205],{},"Under that, three facts: the pull request's ",[14,179,180],{},"checks",", its ",[14,183,184],{},"review"," (",[14,187,188],{},"Approved",", ",[14,191,192],{},"Review"," or ",[14,195,196],{},"Changes requested","), and whether the branch is ",[14,199,200],{},"Synced",". A merged layer reads ",[14,203,204],{},"Merged into main"," instead.",[160,207,208],{},"The layer you have open is highlighted.",[160,210,211,212,215,216,218,219,222,223,226,227,174],{},"The header names what you're looking at — ",[14,213,214],{},"Stack"," and how many sessions, ",[14,217,143],{},", or ",[14,220,221],{},"Pull request"," — and shows ",[14,224,225],{},"GitHub stack"," when the pull requests form ",[84,228,230],{"href":229},"#pull-requests-in-a-stack","one stack on GitHub",[10,232,233,234,238],{},"At the foot of the panel is its ",[84,235,237],{"href":236},"#merging","merge button",", with a line that says what it will merge or what it's waiting for. If the layer you have open needs you, a banner above it says why, with the one thing to do about it.",[10,240,241,244,245,248,249,252,253,256,257,174],{},[14,242,243],{},"Move between layers"," with ",[68,246,247],{},"⌥↑"," and ",[68,250,251],{},"⌥↓"," (Alt+↑ and Alt+↓ on Windows and Linux): each opens the session one layer up or down the stack, with its panel. They work even while the agent terminal has focus, and you can rebind them under ",[14,254,255],{},"Settings → Shortcuts"," — see ",[84,258,260],{"href":259},"\u002Fdocs\u002Fshortcuts#stacks","Keyboard shortcuts",[10,262,263,264,267,268,270],{},"In a narrow window the panel opens over the session rather than beside it; press ",[14,265,266],{},"Esc"," or click outside it to close it. In a ",[84,269,99],{"href":98}," each pane has its own panel, and the pill shows for the pane you have focused.",[22,272,274],{"id":273},"sync","Sync",[10,276,277,278,281,282,285,286,289],{},"When the session underneath gets new commits — its agent finishes a turn, you commit in it, or someone pushes to it — every session above it is ",[14,279,280],{},"Behind",". Plexus ",[14,283,284],{},"syncs"," them: it replays each one's own commits on top of the new parent, from the bottom of the stack up. The row reads ",[14,287,288],{},"Syncing"," while it runs and goes quiet when it's done; no notification, because the quiet row is the confirmation.",[157,291,292,302,312,318,333],{},[160,293,294,295,298,299,301],{},"A sync only runs while that session's agent is ",[14,296,297],{},"not working",". If it is, the sync waits for the turn to end, and the row stays ",[14,300,280],{}," until then.",[160,303,304,307,308,174],{},[14,305,306],{},"Uncommitted changes don't stop it."," Plexus syncs around them and leaves your uncommitted files exactly as they are. Only when those edits touch a file the sync must change — or an untracked file sits where the sync would write one — does it change nothing and treat it like a conflict: see ",[84,309,311],{"href":310},"#when-a-sync-conflicts","When a sync conflicts",[160,313,314,315,174],{},"A session in the middle of a rebase or merge is left alone, and reads ",[14,316,317],{},"Needs you: finish the git operation",[160,319,320,321,325,326,329,330,174],{},"A branch you ",[84,322,324],{"href":323},"\u002Fdocs\u002Fsessions","checked out from an existing branch"," is never synced by itself — it may be shared outside Plexus. Its row reads ",[14,327,328],{},"Needs you: sync it yourself",", with ",[14,331,332],{},"Sync now",[160,334,335,336,339,340,343],{},"If the branch was already pushed, Plexus ",[14,337,338],{},"pushes it again"," after syncing, with a lease: if someone else pushed to it in the meantime, the push is refused rather than overwriting their work. The whole branch goes up, so commits on it you hadn't pushed yet are published with it. Turn off ",[14,341,342],{},"Push after syncing"," to keep pushing in your own hands.",[10,345,346,347,350,351,354,355,357,358,360,361,363,364,367],{},"With ",[14,348,349],{},"Sync stacked sessions"," set to ",[14,352,353],{},"Only mark them",", nothing moves by itself: the rows read ",[14,356,280],{},", and ",[14,359,332],{}," in the session's ",[14,362,37],{}," menu syncs it (and everything above it). ",[14,365,366],{},"Off"," stops checking altogether.",[22,369,311],{"id":370},"when-a-sync-conflicts",[10,372,373,374,376],{},"Plexus never leaves a worktree half-rebased. A sync that conflicts is undone first, so the branch is exactly as it was. What happens next depends on ",[14,375,311],{},":",[157,378,379,389,402],{},[160,380,381,384,385,388],{},[14,382,383],{},"Hand it to the session's agent"," (the default): Plexus gives that session's agent the exact command to run and the files that conflicted, in its own terminal, as soon as the agent is idle. The row reads ",[14,386,387],{},"Resolving"," while the agent works. The agent is asked not to push; once it has finished, Plexus records the result and pushes it.",[160,390,391,394,395,329,398,401],{},[14,392,393],{},"Ask me first",": the row reads ",[14,396,397],{},"Needs you: conflict",[14,399,400],{},"Resolve with agent"," — the same hand-off, when you say so.",[160,403,404,394,407,409,410,413],{},[14,405,406],{},"Stop",[14,408,397],{}," with the files, and ",[14,411,412],{},"Open terminal"," to resolve them yourself.",[10,415,416,417,244,420,174],{},"Overlapping uncommitted edits go the same way: the agent is asked to commit or stash its work in progress so the sync can run — or, when nobody is there to ask, the row reads ",[14,418,419],{},"Needs you: overlapping edits",[14,421,422],{},"Ask agent to commit",[10,424,425,426,429,430,432,433,436],{},"Each conflict is handed to the agent ",[14,427,428],{},"once",". If the agent stops without resolving it, the row says ",[14,431,397],{}," rather than asking it again and again. A new commit on either branch counts as a new conflict. The same setting decides what happens when a pull request ",[84,434,435],{"href":236},"being merged"," conflicts with what merged before it.",[22,438,440],{"id":439},"states","States",[10,442,443,444,447,448,451],{},"Every session row, the context bar and the Stack panel show a session's ",[14,445,446],{},"one state"," as a small chip, and every dashboard row shows it in the Session column. A session with nothing to report shows nothing. Amber always means ",[14,449,450],{},"Needs you",", and the chip names the one thing to do; in the context bar the same action is a button.",[453,454,455,477],"table",{},[456,457,458],"thead",{},[459,460,461,465,468,471,474],"tr",{},[462,463,464],"th",{},"Chip",[462,466,467],{},"In full",[462,469,470],{},"Color",[462,472,473],{},"What it means",[462,475,476],{},"What to do",[478,479,480,499,521,537,554,571,592,610,627,647,663,683,699,716,736],"tbody",{},[459,481,482,489,491,493,496],{},[483,484,485],"td",{},[486,487,488],"em",{},"(none)",[483,490],{},[483,492],{},[483,494,495],{},"Synced: up to date with the session under it, and nothing else to report",[483,497,498],{},"—",[459,500,501,505,507,510,519],{},[483,502,503],{},[14,504,280],{},[483,506,280],{},[483,508,509],{},"Gray",[483,511,512,513,515,516,518],{},"The session under it moved; a sync runs by itself (or, with ",[14,514,353],{},", when you choose ",[14,517,332],{},")",[483,520,498],{},[459,522,523,527,529,532,535],{},[483,524,525],{},[14,526,288],{},[483,528,288],{},[483,530,531],{},"Blue",[483,533,534],{},"Plexus is replaying the branch onto the session under it",[483,536,498],{},[459,538,539,544,547,549,552],{},[483,540,541],{},[14,542,543],{},"Waiting",[483,545,546],{},"Waiting for agent",[483,548,531],{},[483,550,551],{},"The sync, or a hand-off, waits for the session's agent to finish its turn",[483,553,498],{},[459,555,556,560,563,566,569],{},[483,557,558],{},[14,559,387],{},[483,561,562],{},"Agent resolving",[483,564,565],{},"Green",[483,567,568],{},"The session's agent is resolving a conflict, or committing its work so the sync can run",[483,570,498],{},[459,572,573,578,580,583,586],{},[483,574,575],{},[14,576,577],{},"Conflict",[483,579,397],{},[483,581,582],{},"Amber",[483,584,585],{},"A sync or a merge conflicted, and nobody is on it",[483,587,588,218,590],{},[14,589,400],{},[14,591,412],{},[459,593,594,599,601,603,606],{},[483,595,596],{},[14,597,598],{},"Overlap",[483,600,419],{},[483,602,582],{},[483,604,605],{},"Uncommitted edits touch files the sync must change; nothing was changed",[483,607,608],{},[14,609,422],{},[459,611,612,617,620,622,625],{},[483,613,614],{},[14,615,616],{},"Checks",[483,618,619],{},"Checks running",[483,621,531],{},[483,623,624],{},"The pull request's checks are running",[483,626,498],{},[459,628,629,634,637,639,642],{},[483,630,631],{},[14,632,633],{},"Checks failed",[483,635,636],{},"Needs you: checks failed",[483,638,582],{},[483,640,641],{},"A check failed; merging stops here until it passes",[483,643,644],{},[14,645,646],{},"Open checks",[459,648,649,653,656,658,661],{},[483,650,651],{},[14,652,192],{},[483,654,655],{},"Needs review",[483,657,531],{},[483,659,660],{},"Waiting for a review, or changes were requested",[483,662,498],{},[459,664,665,670,673,675,678],{},[483,666,667],{},[14,668,669],{},"Ready",[483,671,672],{},"Ready to merge",[483,674,565],{},[483,676,677],{},"Checks passed (or there are none), approved (or no review is required), not a draft",[483,679,680,681],{},"Merge it from the ",[84,682,87],{"href":236},[459,684,685,690,692,694,697],{},[483,686,687],{},[14,688,689],{},"Merging",[483,691,689],{},[483,693,531],{},[483,695,696],{},"Plexus or GitHub is merging it",[483,698,498],{},[459,700,701,706,709,711,714],{},[483,702,703],{},[14,704,705],{},"In queue",[483,707,708],{},"In merge queue",[483,710,531],{},[483,712,713],{},"In GitHub's or Bitbucket's merge queue, waiting for the host to merge it",[483,715,498],{},[459,717,718,723,726,728,731],{},[483,719,720],{},[14,721,722],{},"Add to queue",[483,724,725],{},"Needs you: add to merge queue",[483,727,582],{},[483,729,730],{},"Bitbucket requires its merge queue and doesn't let Plexus add to it",[483,732,733],{},[14,734,735],{},"Open on Bitbucket",[459,737,738,743,745,748,751],{},[483,739,740],{},[14,741,742],{},"Merged",[483,744,742],{},[483,746,747],{},"Purple",[483,749,750],{},"Merged into its base branch",[483,752,498],{},[10,754,755,756,758,759,185,762,218,765,768,769,772,773,776,777,185,780,782,783,185,786,788,789,185,792,776,794,797,798,776,801,185,804,806,807,185,810,812,813,174],{},"A few other stops read ",[14,757,450],{}," too, each with its reason and one action: a pull request that was ",[14,760,761],{},"closed",[14,763,764],{},"Open pull request",[14,766,767],{},"Take it out"," of Merge in order), ",[14,770,771],{},"no pull request"," yet in a merge (",[14,774,775],{},"Create pull request","), a ",[14,778,779],{},"draft",[14,781,764],{},"), a pull request that ",[14,784,785],{},"targets the wrong branch",[14,787,332],{},"), a branch you must ",[14,790,791],{},"sync yourself",[14,793,332],{},[14,795,796],{},"git operation"," still in progress (",[14,799,800],{},"Open Git tab",[14,802,803],{},"sync that failed",[14,805,332],{},"), and a stack whose ",[14,808,809],{},"session underneath is gone",[14,811,103],{},"). See ",[84,814,816],{"href":815},"#when-something-needs-you","When something needs you",[22,818,820],{"id":819},"pull-requests-in-a-stack","Pull requests in a stack",[10,822,823,824,828,829,832,833,836],{},"Open a pull request for a stacked session the ",[84,825,827],{"href":826},"\u002Fdocs\u002Fpull-requests","usual way",": its target branch is already the parent's branch. If the parent has no pull request yet, ",[14,830,831],{},"Create PR"," offers ",[14,834,835],{},"Open pull requests for the whole stack",", which pushes every branch and opens one pull request per session, from the bottom up.",[10,838,839,842,843,846,847,849],{},[14,840,841],{},"On GitHub, a stack becomes a GitHub stack."," With ",[14,844,845],{},"Create stacks on GitHub"," on (the default), Plexus groups a stack's open pull requests — two or more, one on top of the other — into one of GitHub's own stacked pull requests, so GitHub shows the stack and can merge it in one go. The Stack panel's header then reads ",[14,848,225],{},". GitHub's stacks are a straight line, so a stack of yours that branches usually isn't grouped; the list in the descriptions below still covers it. If you stacked pull requests on GitHub yourself and each one belongs to a session in the project, Plexus nests those sessions to match.",[10,851,852,853,856],{},"Each pull request in a stack also gets a short list of the stack at the end of its description, between markers, with the current pull request highlighted — except where GitHub already shows its own stack. Plexus rewrites only that block and never touches the rest of the description. Turn it off with ",[14,854,855],{},"List the stack in pull request descriptions",". Bitbucket has no stacks of its own, so there the list is how a reviewer sees the stack.",[858,859,861],"h3",{"id":860},"when-the-bottom-pull-request-merges","When the bottom pull request merges",[10,863,864],{},"When a session's pull request merges — on GitHub, on Bitbucket or from Plexus — the sessions stacked on it move down a level:",[866,867,868,871,878],"ol",{},[160,869,870],{},"Each one is re-attached to the merged session's own base (usually your main branch), in the sidebar too.",[160,872,873,874,877],{},"Its pull request is ",[14,875,876],{},"retargeted"," to that branch before anything deletes the merged branch, so no pull request is left pointing at a branch that is gone. (Inside a GitHub stack, GitHub does this itself.)",[160,879,880,881,884],{},"It is synced onto the updated base, replaying only its own commits — which is what makes this work after a ",[14,882,883],{},"squash merge",", where the parent's commits reach main under new ids. If GitHub already rebased it, Plexus takes that rather than pushing again.",[10,886,887,888,329,891,893],{},"If a pull request ends up targeting the wrong branch anyway, its row reads ",[14,889,890],{},"Needs you: pull request targets main",[14,892,332],{}," to fix it.",[22,895,689],{"id":896},"merging",[10,898,899,900,902,903,906,907,910,911,914,915,918,919,922,923,925],{},"Merge from the ",[84,901,87],{"href":86},". Its button merges the layer you have open ",[14,904,905],{},"and everything below it",", so it is labelled for where you are: ",[14,908,909],{},"Merge"," on the bottom layer, ",[14,912,913],{},"Merge 2"," on the second, ",[14,916,917],{},"Merge stack"," on the top. ",[14,920,921],{},"Merge up to here"," in a stacked session's ",[14,924,37],{}," menu does the same. For a session that isn't stacked, the button merges its one pull request.",[10,927,928,929,931,932,189,935,189,938,174],{},"The button is enabled once every layer it would merge is ",[14,930,669],{},". Until then it is disabled, and the line under it names what it waits for — ",[486,933,934],{},"Waiting for checks on #128",[486,936,937],{},"Changes requested on #126",[486,939,940],{},"Waiting for #127 to sync",[10,942,943,946],{},[14,944,945],{},"Every merge asks once."," Clicking the button opens a short confirmation on it: which pull requests merge into which branch, and how —",[157,948,949,955,963,969],{},[160,950,951,954],{},[14,952,953],{},"GitHub merges them together, as one stack"," when they form a GitHub stack; otherwise Plexus merges them one at a time, bottom first;",[160,956,957,958,962],{},"whether the branch requires a ",[84,959,961],{"href":960},"#merge-queues","merge queue",";",[160,964,965,966,962],{},"what moves next: ",[486,967,968],{},"Then #128 moves onto main and syncs",[160,970,971,972,174],{},"and the merge method — your repository's default unless you set ",[14,973,974],{},"Merge method",[10,976,977,978,980,981,984,985,987,988,991,992,995,996,218,999,1002,1003],{},"Choose ",[14,979,909],{}," to start, or ",[14,982,983],{},"Cancel",". While it runs, the rows read ",[14,986,689],{},", the panel shows the progress with a ",[14,989,990],{},"Pause"," button, and a ",[14,993,994],{},"progress strip"," in the context bar — ",[486,997,998],{},"GitHub is merging 2",[486,1000,1001],{},"Merging 1 of 3"," — keeps it in view from any session of the project; click it to open the session it's working on. Merged layers stay in the map, in purple, until the merge is done. Then the sessions above them move onto your main branch and sync, and a notification says what merged: ",[486,1004,1005],{},"Merged #126 and #127 — guest-checkout-e2e moved onto main.",[10,1007,1008,1009,1011,1012,1015],{},"Plexus merges with ",[14,1010,974],{}," — by default your repository's own default — and deletes each merged branch on your provider once nothing targets it (turn that off with ",[14,1013,1014],{},"Delete branches after merging","). Nothing already merged is ever undone.",[10,1017,1018,1020,1021,1024],{},[14,1019,990],{}," stops after the current step; the merge button carries on from where it stopped (",[486,1022,1023],{},"Paused. Carries on from #127.","). If you start a second merge while one is running, it starts after the first one finishes. A merge left behind when Plexus quits comes back paused, and its rows keep their states.",[22,1026,143],{"id":1027},"merge-in-order",[10,1029,1030,1031,1033],{},"Pull requests that don't depend on each other can still trip over each other: two that touch the same header merge fine one at a time, but the second conflicts once the first is in. ",[14,1032,143],{}," merges a list of them one after another. When the next one conflicts with your main branch, or the branch requires pull requests to be up to date, Plexus syncs it onto main first.",[866,1035,1036,1045,1061],{},[160,1037,1038,1039,38,1041,1044],{},"On each session, open the ",[14,1040,37],{},[14,1042,1043],{},"Add to Merge in order",". It needs an open pull request, and a session that is part of a stack merges with its stack instead.",[160,1046,1047,1048,1050,1051,1054,1055,248,1058,174],{},"Open any of them: the panel shows the ",[14,1049,143],{}," list, numbered, and the pill reads ",[14,1052,1053],{},"In order 1 of 3",". Drag a row by its handle to reorder it, or focus the handle and use ",[68,1056,1057],{},"↑",[68,1059,1060],{},"↓",[160,1062,1063,1064,1067],{},"Click ",[14,1065,1066],{},"Merge 3"," and confirm.",[10,1069,1070,1071,1074,1075,1077,1078,1081],{},"Plexus merges the first, syncs the next onto main, waits for its checks, merges it, and so on. Merging ",[14,1072,1073],{},"stops on anything that needs you"," and carries on by itself once it's fixed: if a pull request's checks fail, its row turns amber with ",[14,1076,646],{},", the panel says ",[486,1079,1080],{},"Carries on by itself once #130 is fixed",", and the moment the checks pass, Plexus goes on — there is no Retry to find. A notification lists what merged when the list is done.",[10,1083,1084,1087,1088,1090,1091,1093,1094,1098,1099,174],{},[14,1085,1086],{},"Remove from Merge in order"," in the ",[14,1089,37],{}," menu takes a session back out. Pull requests in the list only ever merge when you click its own ",[14,1092,909],{}," button; merging a stack never sweeps them along. On the ",[84,1095,1097],{"href":1096},"\u002Fdocs\u002Fdashboard","dashboards",", each of them is marked with its place in the list — ",[14,1100,1101],{},"1 of 3",[22,1103,1105],{"id":1104},"merge-queues","Merge queues",[10,1107,1108,1109,1111],{},"When a branch requires a ",[14,1110,961],{},", Plexus goes through it and never merges past it. The confirmation says so before you start.",[157,1113,1114,1125],{},[160,1115,1116,1119,1120,1122,1123,174],{},[14,1117,1118],{},"GitHub:"," Plexus adds the pull request to GitHub's merge queue for you. The row reads ",[14,1121,705],{}," while GitHub runs its checks, then ",[14,1124,742],{},[160,1126,1127,1130,1131,1133,1134,1136,1137,1139,1140,1142],{},[14,1128,1129],{},"Bitbucket:"," Bitbucket doesn't let other apps add to its merge queue, so this one click is yours. The row reads ",[14,1132,725],{}," and names the queue (and says if the queue is paused), with ",[14,1135,735],{}," to take you to the pull request. If you aren't looking at that session, a notification says the same. Add it there; Plexus keeps watching, and once Bitbucket reports it queued the row reads ",[14,1138,705],{},", then ",[14,1141,742],{},". For a pull request other sessions are stacked on, Plexus first asks Bitbucket to keep its branch after the merge, so the pull requests above it can be moved onto main before the branch goes.",[22,1144,816],{"id":1145},"when-something-needs-you",[10,1147,1148,1149,1152,1153,1156,1157,1159,1160,1162],{},"Everything that can stop a sync or a merge reads ",[14,1150,1151],{},"Needs you: …"," in amber, with its reason and ",[14,1154,1155],{},"one"," action — the table under ",[84,1158,440],{"href":172}," lists them. There is no Retry button anywhere: fixing the cause is enough. When the checks pass, the conflict is resolved, the pull request is reopened or the agent has finished, Plexus notices and carries on by itself. A merge stopped on a pull request that was ",[14,1161,761],{}," waits until it is reopened or taken out.",[10,1164,1165,1166,1169],{},"The sidebar's ",[14,1167,1168],{},"N need you"," count includes these, counting each session once. You get a notification only when you aren't already looking at that session, or Plexus is in the background — otherwise the amber chip in front of you is the notice.",[22,1171,1173],{"id":1172},"settings","Settings",[10,1175,1176,1177,1180],{},"All of these live under ",[14,1178,1179],{},"Settings → Git ▸ Stacks",", and can be set globally, per workspace or per project (Global → Project).",[453,1182,1183,1196],{},[456,1184,1185],{},[459,1186,1187,1190,1193],{},[462,1188,1189],{},"Setting",[462,1191,1192],{},"Default",[462,1194,1195],{},"What it does",[478,1197,1198,1227,1241,1266,1279,1292,1314],{},[459,1199,1200,1204,1209],{},[483,1201,1202],{},[14,1203,349],{},[483,1205,1206],{},[14,1207,1208],{},"Automatically",[483,1210,1211,1213,1214,1216,1217,1219,1220,1087,1222,1224,1225,367],{},[14,1212,1208],{}," syncs as soon as the session underneath moves; ",[14,1215,353],{}," shows ",[14,1218,280],{}," and waits for ",[14,1221,332],{},[14,1223,37],{}," menu; ",[14,1226,366],{},[459,1228,1229,1233,1238],{},[483,1230,1231],{},[14,1232,342],{},[483,1234,1235],{},[14,1236,1237],{},"On",[483,1239,1240],{},"Pushes a synced branch again (with a lease) when it was already on your remote — the whole branch, including commits you hadn't pushed yet.",[459,1242,1243,1247,1251],{},[483,1244,1245],{},[14,1246,311],{},[483,1248,1249],{},[14,1250,383],{},[483,1252,1253,1254,185,1256,244,1258,1260,1261,1263,1264,174],{},"Or ",[14,1255,393],{},[14,1257,397],{},[14,1259,400],{},"), or ",[14,1262,406],{}," (the files, and it's up to you). Covers conflicts while syncing and while merging. See ",[84,1265,311],{"href":310},[459,1267,1268,1272,1276],{},[483,1269,1270],{},[14,1271,845],{},[483,1273,1274],{},[14,1275,1237],{},[483,1277,1278],{},"Makes a stack's pull requests a native GitHub stack, so GitHub shows the stack and merges it in one go.",[459,1280,1281,1285,1289],{},[483,1282,1283],{},[14,1284,855],{},[483,1286,1287],{},[14,1288,1237],{},[483,1290,1291],{},"The stack list at the end of each pull request's description, skipped where GitHub shows its own stack.",[459,1293,1294,1298,1303],{},[483,1295,1296],{},[14,1297,974],{},[483,1299,1300],{},[14,1301,1302],{},"Use the repository's default",[483,1304,1253,1305,189,1308,193,1311,174],{},[14,1306,1307],{},"Squash and merge",[14,1309,1310],{},"Create a merge commit",[14,1312,1313],{},"Rebase and merge",[459,1315,1316,1320,1324],{},[483,1317,1318],{},[14,1319,1014],{},[483,1321,1322],{},[14,1323,1237],{},[483,1325,1326],{},"Deletes a merged pull request's branch on your remote once nothing targets it.",[10,1328,1329,1330,248,1333,1336,1337,1339],{},"The two layer shortcuts, ",[14,1331,1332],{},"Move to the layer above in the stack",[14,1334,1335],{},"Move to the layer below in the stack",", live under ",[14,1338,255],{}," with every other binding.",[22,1341,1343],{"id":1342},"what-a-plan-gates","What a plan gates",[10,1345,1346,1353],{},[14,1347,1348,1349],{},"Syncing and merging need a ",[84,1350,1352],{"href":1351},"\u002Fdocs\u002Fbilling","plan"," — an individual plan, or a seat on an organization's. Everything runs between your machine and your own GitHub or Bitbucket account; none of it passes through us.",[10,1355,1356],{},"Free on every plan, and without one:",[157,1358,1359,1362,1368,1383],{},[160,1360,1361],{},"the state chips, the Stack pill, and the Stack panel's map with every layer's facts;",[160,1363,1364,248,1366,962],{},[14,1365,103],{},[14,1367,1086],{},[160,1369,1370,1371,189,1373,189,1375,189,1377,189,1379,248,1381,962],{},"the actions that only open something: ",[14,1372,646],{},[14,1374,735],{},[14,1376,764],{},[14,1378,412],{},[14,1380,800],{},[14,1382,767],{},[160,1384,1385],{},"basing a session on another session's branch by hand, opening a pull request against any branch, and the protection that keeps a branch alive while another session is based on it.",[10,1387,1388,1389,1391,1392,1394,1395,1397,1398,189,1400,189,1402,248,1404,1406],{},"With a plan: ",[14,1390,74],{},", the ",[14,1393,49],{}," field in New Session, ",[14,1396,835],{},", every merge button, ",[14,1399,143],{},[14,1401,332],{},[14,1403,400],{},[14,1405,422],{}," — and the automation behind them: syncing, retargeting, GitHub stacks and merging.",[109,1408,1409],{},[10,1410,1411,1412,1414,1415,1417,1418,1420],{},"Without a plan, the paid items are simply missing from the ",[14,1413,37],{}," menu. ",[14,1416,74],{}," opens with a short note about plans where its list would be, and so does the ",[14,1419,49],{}," field in New Session; the Stack panel shows that note once, in place of its merge button. Nothing in the sidebar is ever locked or greyed out, and nothing syncs or merges by itself. Sessions you already stacked stay nested, and keep their states.",[22,1422,1424],{"id":1423},"related","Related",[157,1426,1427,1433,1439,1445,1456,1462,1470],{},[160,1428,1429,1432],{},[84,1430,1431],{"href":323},"Sessions & worktrees"," — the sessions a stack is made of",[160,1434,1435,1438],{},[84,1436,1437],{"href":98},"Split view"," — sessions side by side, and how a stack is drawn across one",[160,1440,1441,1444],{},[84,1442,1443],{"href":826},"Pull requests"," — opening and tracking a single pull request",[160,1446,1447,1451,1452,1455],{},[84,1448,1450],{"href":1449},"\u002Fdocs\u002Fgit","Git"," — ",[14,1453,1454],{},"Rebase onto…"," and the rebase badge for a single session",[160,1457,1458,1461],{},[84,1459,1460],{"href":1096},"Dashboard"," — the state of every session, stacked or not",[160,1463,1464,1451,1466,248,1468],{},[84,1465,260],{"href":259},[68,1467,247],{},[68,1469,251],{},[160,1471,1472,1475],{},[84,1473,1474],{"href":1351},"Plans, seats and billing"," — what a plan unlocks",{"title":1477,"searchDepth":1478,"depth":1478,"links":1479},"",2,[1480,1481,1482,1483,1484,1485,1489,1490,1491,1492,1493,1494,1495],{"id":24,"depth":1478,"text":25},{"id":124,"depth":1478,"text":125},{"id":273,"depth":1478,"text":274},{"id":370,"depth":1478,"text":311},{"id":439,"depth":1478,"text":440},{"id":819,"depth":1478,"text":820,"children":1486},[1487],{"id":860,"depth":1488,"text":861},3,{"id":896,"depth":1478,"text":689},{"id":1027,"depth":1478,"text":143},{"id":1104,"depth":1478,"text":1105},{"id":1145,"depth":1478,"text":816},{"id":1172,"depth":1478,"text":1173},{"id":1342,"depth":1478,"text":1343},{"id":1423,"depth":1478,"text":1424},"Stack Claude Code sessions on each other's branches, keep every branch synced as the stack moves, see the whole stack as a map, and merge a stack — or a list of pull requests — in order, including through GitHub's and Bitbucket's merge queues.","md","Working with sessions","Layers",{},"Stacks & merging",true,27,"\u002Fdocs\u002Fstacks",{"title":5,"description":1496},"docs\u002Fstacks","i2dvATbJsxR4unWNCkkfzboyaCcRI2RbVzJhgcGKiJg",[1509,1516,1522,1527,1533,1540,1546,1551,1558,1565,1570,1577,1584,1591,1597,1603,1607,1608,1612,1616,1622,1630,1637,1643,1650,1658,1665,1670,1676,1683,1689,1695,1701,1708,1715,1722,1729,1734,1740],{"path":1510,"title":1511,"navTitle":1511,"description":1512,"icon":1513,"group":1514,"order":1515},"\u002Fdocs","Introduction","Plexus runs Claude Code sessions in parallel, each in its own git worktree, in one native desktop app with diff review, a git client and hooks built in.","BookOpen","Overview",1,{"path":1517,"title":1518,"navTitle":1519,"description":1520,"icon":1521,"group":1514,"order":1478},"\u002Fdocs\u002Finstall","Installation","Install","Download and install Plexus on macOS (Apple Silicon or Intel), Linux (.deb or AppImage) or Windows, check Claude Code and Git, and get automatic updates.","Download",{"path":1523,"title":1524,"navTitle":1524,"description":1525,"icon":1526,"group":1514,"order":1488},"\u002Fdocs\u002Frequirements","Requirements","What Plexus needs on your machine: the Claude Code CLI and Git, plus optional GitHub or Bitbucket access, notify-send on Linux, and supported platforms.","Check",{"path":1528,"title":1529,"navTitle":1529,"description":1530,"icon":1531,"group":1514,"order":1532},"\u002Fdocs\u002Fgetting-started","Getting started","Your first run of Plexus: add a git repository, create a session in its own worktree, start Claude Code and send your first prompt.","Rocket",4,{"path":1534,"title":1535,"navTitle":1536,"description":1537,"icon":1538,"group":1514,"order":1539},"\u002Fdocs\u002Fconcepts","Core concepts","Concepts","Workspaces, projects and sessions in Plexus — each session usually its own git worktree running Claude Code — and the two status indicators on every row.","Boxes",5,{"path":1541,"title":1542,"navTitle":1542,"description":1543,"icon":1544,"group":1514,"order":1545},"\u002Fdocs\u002Farchitecture","Architecture","How Plexus is built: a Tauri desktop app with a Vue UI and a Rust backend that wraps the Claude Code CLI, runs git natively and keeps your code local.","Package",6,{"path":1096,"title":1460,"navTitle":1460,"description":1547,"icon":1548,"group":1549,"order":1550},"One live table of every Claude Code session across your Plexus workspaces, with activity state, PR status, summary counts, filters and sorting.","LayoutGrid","Working with projects",10,{"path":1552,"title":1553,"navTitle":1554,"description":1555,"icon":1556,"group":1549,"order":1557},"\u002Fdocs\u002Fproject-git","Project Git client","Git GUI","A full git GUI for a project's main checkout: commit graph with branches, tags, stashes and worktrees, pull, push, line staging, compare, blame, history rewrites, undo and conflict resolution.","GitGraph",11,{"path":1559,"title":1560,"navTitle":1561,"description":1562,"icon":1563,"group":1549,"order":1564},"\u002Fdocs\u002Fproject-terminal","Project Terminal","Terminal","Open plain shell terminals in a project's root folder from the project view. They keep running in the background, so a dev server or file watcher stays up.","MonitorDot",12,{"path":323,"title":1431,"navTitle":1566,"description":1567,"icon":1568,"group":1498,"order":1569},"Sessions","Create a Plexus session — one Claude Code agent in its own git worktree, on a new or existing branch — and start, stop, resume, archive or remove it.","Bot",20,{"path":1571,"title":1572,"navTitle":1573,"description":1574,"icon":1575,"group":1498,"order":1576},"\u002Fdocs\u002Fstatus","Status & notifications","Status","What Plexus's status dots and PR colors mean — working, waiting, idle, background work — and the alerts you get when a Claude Code session needs you.","Activity",21,{"path":1578,"title":1579,"navTitle":1580,"description":1581,"icon":1582,"group":1498,"order":1583},"\u002Fdocs\u002Fagent","The Agent tab","Agent","The Agent tab is the Claude Code terminal in every session: send prompts, paste images, compose multi-line input, rewind, and choose the permission mode.","Sparkles",22,{"path":1585,"title":1586,"navTitle":1587,"description":1588,"icon":1589,"group":1498,"order":1590},"\u002Fdocs\u002Fexplorer","Explorer & editor","Explorer","Browse a session's git worktree and edit files in the built-in Monaco editor, with tabs, change markers against the base branch and a Markdown preview.","FileText",23,{"path":1592,"title":1593,"navTitle":192,"description":1594,"icon":1595,"group":1498,"order":1596},"\u002Fdocs\u002Freview","Review & diffs","Review a Claude Code session's changes as a PR-style diff, leave inline comments the agent acts on, run an AI code review and answer PR threads.","GitPullRequestArrow",24,{"path":1449,"title":1598,"navTitle":1599,"description":1600,"icon":1601,"group":1498,"order":1602},"Git workflow","Session Git","The session Git tab lets you stage, commit, stash and push, and rebase, merge or squash a Claude Code session's branch, with AI-drafted commit messages.","GitMerge",25,{"path":826,"title":1443,"navTitle":1443,"description":1604,"icon":1605,"group":1498,"order":1606},"Open a GitHub or Bitbucket pull request from a session's branch, let AI draft the title and description, and track PR and CI status without leaving Plexus.","Github",26,{"path":1504,"title":5,"navTitle":1501,"description":1496,"icon":1499,"group":1498,"order":1503},{"path":1609,"title":1561,"navTitle":1561,"description":1610,"icon":1563,"group":1498,"order":1611},"\u002Fdocs\u002Fterminal","Open plain shell terminals in a session's git worktree with ⌘J: several tabs, copy and paste, drag-and-drop file paths, and your choice of shell.",28,{"path":98,"title":1437,"navTitle":1437,"description":1613,"icon":1614,"group":1498,"order":1615},"Put up to six sessions of one project side by side in a split view: each pane is a full session with its own tabs, and every agent keeps running whether its pane is on screen or not.","Grid2x2",29,{"path":1617,"title":1618,"navTitle":1618,"description":1619,"icon":1620,"group":1498,"order":1621},"\u002Fdocs\u002Fwindows","Multiple windows","Open a session, a project, a single terminal or the dashboard in a window of its own: put an agent on a second monitor and keep the main window for everything else.","AppWindow",30,{"path":1623,"title":1624,"navTitle":1625,"description":1626,"icon":1627,"group":1628,"order":1629},"\u002Fdocs\u002Fhooks","Lifecycle hooks","Hooks","Run your own shell scripts when a session's git worktree is created, when the agent starts, and at teardown — set globally, per project or in the repo.","RefreshCw","Automation",31,{"path":1631,"title":1632,"navTitle":1633,"description":1634,"icon":1635,"group":1628,"order":1636},"\u002Fdocs\u002Fworktrees","Worktrees & env files","Worktrees & env","Where Plexus puts each session's git worktree, how .env and other gitignored files are copied in, and the block of dev server ports every session gets.","FolderGit2",32,{"path":1638,"title":1639,"navTitle":1639,"description":1640,"icon":1641,"group":1628,"order":1642},"\u002Fdocs\u002Fsecrets","Secrets","Plexus keeps secrets in your OS keychain — macOS Keychain, Windows Credential Manager or Linux Secret Service — write-only, and out of every hook it runs.","KeyRound",33,{"path":1644,"title":1645,"navTitle":1646,"description":1647,"icon":1648,"group":1628,"order":1649},"\u002Fdocs\u002Fprompts","Prompt templates","Prompts","Save Claude Code prompts you keep rewriting as templates with fill-in fields — text, choices, files, branches — and run them in a new or a running session.","Copy",34,{"path":1651,"title":1652,"navTitle":1653,"description":1654,"icon":1655,"group":1656,"order":1657},"\u002Fdocs\u002Fconnections","Connecting a git provider","Git providers","Connect GitHub or Bitbucket to Plexus with a one-click browser sign-in, no personal access token, to open pull requests, clone repos and push over https.","PlugZap","Integrations",40,{"path":1659,"title":1660,"navTitle":1661,"description":1662,"icon":1663,"group":1656,"order":1664},"\u002Fdocs\u002Faccount","Your Plexus account","Plexus account","Create a free, optional Plexus account to set up organizations, manage signed-in devices and turn on cross-device sync. The app works the same without one.","UsersRound",41,{"path":1351,"title":1474,"navTitle":1666,"description":1667,"icon":1668,"group":1656,"order":1669},"Billing","What a paid Plexus plan unlocks, individual and per-seat organization plans, buying through Moneybird, invitations, invoices and VAT, and cancelling.","CreditCard",42,{"path":1671,"title":1672,"navTitle":274,"description":1673,"icon":1674,"group":1656,"order":1675},"\u002Fdocs\u002Fsync","Cross-device sync","Sync your Plexus settings, workspaces and projects to every machine you sign in on, after a preview of exactly what would leave this one.","Cloud",43,{"path":1677,"title":1678,"navTitle":1679,"description":1680,"icon":1681,"group":1656,"order":1682},"\u002Fdocs\u002Froles","Roles and permissions","Roles","Control what each member of a Plexus organization may do: five built-in roles, custom roles you copy and edit, and how roles combine. Free, on the web.","ShieldCheck",44,{"path":1684,"title":1685,"navTitle":1685,"description":1686,"icon":1687,"group":1656,"order":1688},"\u002Fdocs\u002Fshared-workspaces","Shared workspaces","Set up a workspace once in a Plexus organization so every member gets the same repositories in their sidebar: join modes, leaving, cloning, and seats.","Building2",45,{"path":1690,"title":1691,"navTitle":1691,"description":1692,"icon":1693,"group":1656,"order":1694},"\u002Fdocs\u002Fmanaged-settings","Managed settings","Let a Plexus organization recommend, enforce or dry-run settings on members' machines: the three levels, locked rows, eligible settings and offline rules.","Lock",46,{"path":1696,"title":1697,"navTitle":1698,"description":1699,"icon":1648,"group":1656,"order":1700},"\u002Fdocs\u002Forg-prompts","Prompts your organization publishes","Organization prompts","Publish Claude Code prompt templates to every member of a Plexus organization as numbered revisions: proposing, publishing, rolling back, limits and seats.",47,{"path":1702,"title":1703,"navTitle":1704,"description":1705,"icon":1706,"group":1656,"order":1707},"\u002Fdocs\u002Fissues","Issues from your tracker","Issues","Read, edit and create a project's GitHub issues inside Plexus with your own GitHub account, and start a Claude Code session that stays linked to an issue. Plnnrly has a page of its own.","CircleDot",48,{"path":1709,"title":1710,"navTitle":1711,"description":1712,"icon":1713,"group":1656,"order":1714},"\u002Fdocs\u002Ftoolchain","The Toolchain","Toolchain","Attach GitHub issues, GitHub Projects boards and Plnnrly projects to a workspace or project as tabs in Plexus, and choose whether a workspace shares each with its projects.","Wrench",49,{"path":1716,"title":1717,"navTitle":1718,"description":1719,"icon":1720,"group":1656,"order":1721},"\u002Fdocs\u002Fboards","Boards from GitHub Projects","Boards","Work a GitHub Projects board inside Plexus: attach it to a workspace or project, switch views, drag cards, open the issue behind a card, start a session.","SquareKanban",50,{"path":1723,"title":1724,"navTitle":1725,"description":1726,"icon":1727,"group":1656,"order":1728},"\u002Fdocs\u002Fplnnrly","Plnnrly work items, boards and sprints","Plnnrly","Connect a Plnnrly organization and work a Plnnrly project inside Plexus: its backlog, board and sprints, every work item editable, and a session started from any of them.","ClipboardList",51,{"path":1730,"title":1173,"navTitle":1173,"description":1731,"icon":1173,"group":1732,"order":1733},"\u002Fdocs\u002Fsettings","Every Plexus setting and its default, and how settings layer from global to workspace, project and session — including organization-enforced values.","Reference",52,{"path":1735,"title":260,"navTitle":1736,"description":1737,"icon":1738,"group":1732,"order":1739},"\u002Fdocs\u002Fshortcuts","Shortcuts","Every Plexus keyboard shortcut — session tabs, terminal and dashboard, ⌘K search, stack layers, the Claude Code prompt, rebase and squash, project Git undo — and how to rebind each.","Keyboard",53,{"path":1741,"title":1742,"navTitle":1743,"description":1744,"icon":1745,"group":1732,"order":1746},"\u002Fdocs\u002Ffeedback","Sending feedback","Feedback","Send a bug report or idea to the Plexus team from inside the app, with an optional screenshot and diagnostic logs you can preview before anything is sent.","SquarePen",54,{"\u002Fdocs\u002Faccount":1748,"\u002Fdocs\u002Fagent":1749,"\u002Fdocs\u002Farchitecture":1749,"\u002Fdocs\u002Fbilling":1748,"\u002Fdocs\u002Fboards":1749,"\u002Fdocs\u002Fconcepts":1750,"\u002Fdocs\u002Fconnections":1751,"\u002Fdocs\u002Fdashboard":1748,"\u002Fdocs\u002Fexplorer":1752,"\u002Fdocs\u002Ffeedback":1750,"\u002Fdocs\u002Fgetting-started":1753,"\u002Fdocs\u002Fgit":1748,"\u002Fdocs\u002Fhooks":1754,"\u002Fdocs":1749,"\u002Fdocs\u002Finstall":1749,"\u002Fdocs\u002Fissues":1750,"\u002Fdocs\u002Fmanaged-settings":1752,"\u002Fdocs\u002Forg-prompts":1752,"\u002Fdocs\u002Fplnnrly":1750,"\u002Fdocs\u002Fproject-git":1751,"\u002Fdocs\u002Fproject-terminal":1755,"\u002Fdocs\u002Fprompts":1754,"\u002Fdocs\u002Fpull-requests":1748,"\u002Fdocs\u002Frequirements":1753,"\u002Fdocs\u002Freview":1752,"\u002Fdocs\u002Froles":1749,"\u002Fdocs\u002Fsecrets":1754,"\u002Fdocs\u002Fsessions":1748,"\u002Fdocs\u002Fsettings":1748,"\u002Fdocs\u002Fshared-workspaces":1752,"\u002Fdocs\u002Fshortcuts":1756,"\u002Fdocs\u002Fsplit-view":1748,"\u002Fdocs\u002Fstacks":1748,"\u002Fdocs\u002Fstatus":1748,"\u002Fdocs\u002Fsync":1748,"\u002Fdocs\u002Fterminal":1755,"\u002Fdocs\u002Ftoolchain":1750,"\u002Fdocs\u002Fwindows":1754,"\u002Fdocs\u002Fworktrees":1754},"2026-10-16","2026-10-06","2026-10-15","2026-10-22","2026-10-09","2026-10-11","2026-10-14","2026-10-13","2026-10-19",{"features":1758,"compare":1776},[1759,1762,1764,1767,1770,1773],{"label":1760,"to":1761},"Sessions & status","\u002Ffeatures\u002Fsessions-and-status",{"label":192,"to":1763},"\u002Ffeatures\u002Freview",{"label":1765,"to":1766},"Worktrees & hooks","\u002Ffeatures\u002Fworktrees-and-hooks",{"label":1768,"to":1769},"Git & issues","\u002Ffeatures\u002Fgit-and-issues",{"label":1771,"to":1772},"Stacks","\u002Ffeatures\u002Fstacks",{"label":1774,"to":1775},"Teams","\u002Ffeatures\u002Fteams",[1777,1780,1783,1786],{"label":1778,"to":1779},"vs Claude Code","\u002Fcompare\u002Fclaude-code",{"label":1781,"to":1782},"vs Claude Squad and Nimbalyst","\u002Fcompare\u002Fclaude-squad-and-nimbalyst",{"label":1784,"to":1785},"vs Conductor","\u002Fcompare\u002Fconductor",{"label":1787,"to":1788},"vs Cursor","\u002Fcompare\u002Fcursor",1792695509670]