-
Notifications
You must be signed in to change notification settings - Fork 32
Expand file tree
/
Copy pathTutorialStep.cs
More file actions
227 lines (223 loc) · 9.35 KB
/
TutorialStep.cs
File metadata and controls
227 lines (223 loc) · 9.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
namespace PolyPilot.Models;
public enum StepAction
{
None,
Navigate
}
public class TutorialStep
{
public string Id { get; set; } = "";
public string Title { get; set; } = "";
public string Description { get; set; } = "";
public StepAction Action { get; set; } = StepAction.None;
public string? NavigateTo { get; set; }
}
public class TutorialChapter
{
public string Id { get; set; } = "";
public string Title { get; set; } = "";
public string Description { get; set; } = "";
public List<TutorialStep> Steps { get; set; } = new();
}
public static class TutorialContent
{
public static List<TutorialChapter> Chapters { get; } = new()
{
new TutorialChapter
{
Id = "getting-started",
Title = "Getting Started",
Description = "Learn the basics of PolyPilot and how to connect to Copilot.",
Steps = new()
{
new TutorialStep
{
Id = "welcome",
Title = "Welcome to PolyPilot",
Description = "PolyPilot is a native GUI for managing multiple GitHub Copilot CLI sessions. Let's take a quick tour of the key features."
},
new TutorialStep
{
Id = "connection-status",
Title = "Connection Status",
Description = "The indicator in the sidebar shows whether you're connected to the Copilot backend. It displays the current connection mode (Persistent, Embedded, Remote, or Demo)."
},
new TutorialStep
{
Id = "settings-nav",
Title = "Settings",
Description = "Click the gear icon in the sidebar header to open Settings, where you can choose your connection mode, configure remote access, and more."
}
}
},
new TutorialChapter
{
Id = "sessions",
Title = "Sessions",
Description = "Create and manage Copilot chat sessions.",
Steps = new()
{
new TutorialStep
{
Id = "new-session",
Title = "Create a Session",
Description = "Use the session form at the top of the sidebar to create a new Copilot session. You can optionally set a name, choose a model, and pick a working directory."
},
new TutorialStep
{
Id = "send-prompt",
Title = "Send a Prompt",
Description = "Type your message in the input area at the bottom and press Enter (or click the send button) to send a prompt to Copilot.",
Action = StepAction.Navigate,
NavigateTo = "/"
},
new TutorialStep
{
Id = "response-area",
Title = "View Responses",
Description = "Copilot's responses stream in real-time. You'll see a status indicator showing the current phase: Sending, Thinking, Working (with tool call counts)."
}
}
},
new TutorialChapter
{
Id = "groups",
Title = "Groups & Organization",
Description = "Organize your sessions into groups for better workflow management.",
Steps = new()
{
new TutorialStep
{
Id = "create-group",
Title = "Create a Group",
Description = "Use the toolbar buttons below the session form to create a new group, add a multi-agent team, or add a repository. Groups help you organize sessions by project or task.",
Action = StepAction.Navigate,
NavigateTo = "/"
},
new TutorialStep
{
Id = "sort-sessions",
Title = "Sort Sessions",
Description = "Use the sort dropdown in the sidebar toolbar to order sessions by last activity, creation date, name, or manually drag them."
}
}
},
new TutorialChapter
{
Id = "model-selection",
Title = "Model Selection",
Description = "Choose which AI model to use for each session.",
Steps = new()
{
new TutorialStep
{
Id = "model-picker",
Title = "Choose a Model",
Description = "The model selector lets you pick which AI model to use. Click '+ New Session' to expand the form and see the model dropdown. Models are set at session creation time.",
Action = StepAction.Navigate,
NavigateTo = "/"
},
new TutorialStep
{
Id = "model-per-session",
Title = "Model Per Session",
Description = "Each session is tied to its model. To switch models, create a new session with the desired model selected."
}
}
},
new TutorialChapter
{
Id = "multi-agent",
Title = "Multi-Agent Presets",
Description = "Use pre-configured agent teams for specialized workflows.",
Steps = new()
{
new TutorialStep
{
Id = "preset-picker",
Title = "Agent Presets",
Description = "Presets let you spin up a team of specialized agents. Look for the multi-agent button in the sidebar toolbar -- it shows built-in presets, your saved presets, and repo-level Squad teams."
},
new TutorialStep
{
Id = "squad-integration",
Title = "Squad Integration",
Description = "If your repository has a .squad/ directory, PolyPilot automatically discovers team definitions and shows them as presets in the 'From Repo' section."
}
}
},
new TutorialChapter
{
Id = "remote-mode",
Title = "Remote Mode",
Description = "Connect to PolyPilot from mobile devices.",
Steps = new()
{
new TutorialStep
{
Id = "remote-settings",
Title = "Remote Connection",
Description = "Remote mode lets you connect from mobile devices to a desktop PolyPilot instance. Configure it in Settings under the Connection section.",
Action = StepAction.Navigate,
NavigateTo = "/settings"
},
new TutorialStep
{
Id = "devtunnel-qr",
Title = "DevTunnel & QR Code",
Description = "Use DevTunnel to expose your session over the internet, then scan the QR code from the mobile app for easy setup."
}
}
},
new TutorialChapter
{
Id = "repos",
Title = "Repository Management",
Description = "Set working directories and manage repo contexts.",
Steps = new()
{
new TutorialStep
{
Id = "repo-picker",
Title = "Working Directory",
Description = "Each session can have a working directory. When creating a session, click the folder icon to pick a repository or directory for Copilot to work in.",
Action = StepAction.Navigate,
NavigateTo = "/"
},
new TutorialStep
{
Id = "repo-context",
Title = "Repo Context",
Description = "The working directory determines which files Copilot can see and modify. Sessions in different directories have different file contexts."
}
}
},
new TutorialChapter
{
Id = "shortcuts",
Title = "Keyboard Shortcuts",
Description = "Speed up your workflow with keyboard shortcuts.",
Steps = new()
{
new TutorialStep
{
Id = "session-shortcuts",
Title = "Session Navigation",
Description = "Use Cmd+1-9 to quickly switch between sessions. Press Cmd+E to focus the session search. Use Up/Down arrows to cycle through your prompt history."
},
new TutorialStep
{
Id = "input-shortcuts",
Title = "Input Shortcuts",
Description = "Press Tab to accept Copilot's suggestion. Press Esc to cancel. Use Cmd+/Cmd- to adjust font size. Press Ctrl+C to abort a running request."
},
new TutorialStep
{
Id = "info-popover",
Title = "Quick Reference",
Description = "You can always find the full shortcut list in Settings by clicking the info icon in the top right corner."
}
}
}
};
}