-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTutorial.html
More file actions
588 lines (431 loc) · 34.2 KB
/
Copy pathTutorial.html
File metadata and controls
588 lines (431 loc) · 34.2 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
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
# Soar — Project Management
**Soar** is a lightweight project management system.
**Perfect for**: Small to mid-sized teams who want project management without complex setup or external infrastructure.
--
## Quick Start
- **Create a project**: On **Project Board**, click **New Project**, fill **Project Title**, optional **Due Date**, **Status**, **Color Scheme**, and optional **Description**, then click **Create Project**.
- **Create a task**: Inside a project column, click **+ Add Task** (not “New Task”), fill the **Add Task** modal, select at least one user under **Assigned To**, then click **Create Task**.
- **Update a task quickly**: Use the status pill/dropdown on a task card to choose `Not Started`, `Upcoming`, `Review`, `In Progress`, `Ongoing`, `On Hold`, `Cancelled`, `Closeout`, or `Complete`.
- **Open details**: Click a project title to open **Project Details**. Click a task card to open **Task Details**.
- **Comment on tasks**: Click the speech-bubble icon on a task card to open **Comments**, type in **Write a comment...**, optionally use `@` mentions, then click **Post Comment**.
- **Create an agenda**: Go to **Meeting Agendas**, click **New Agenda**. The editor opens with no sessions. Click **New Session**, choose blank or copy from previous, add headers/items/tasks, optionally click **Share**, then click **Save Session**.
- **Customize**: Open the user menu at the lower-left, then use **Profile**, **Settings**, or **Dark Mode**.
---
## SOAR Tutorial
### Main Layout
SOAR has a left sidebar, a top header, a main work area, a lower-left user menu, and a lower-right chat bubble.
#### Left sidebar tabs
- **Project Board**: The default work board. Shows project columns and task cards.
- **Supervisor Tools**: Only available to users who have direct reports. Shows selected direct reports' assigned work.
- **Calendar**: Month view of project due dates and task due dates, with an optional multi-month scroll view.
- **Past Assignments**: Completed tasks assigned to the current user.
- **Meeting Agendas**: Agenda cards under **My Agendas** and **Shared With Me**.
#### Top header actions
- On **Project Board**, the header has a **Hide/Show Projects** button (to hide or reveal individual project columns per user) and a **New Project** red button.
- On **Meeting Agendas**, the primary red button is **New Agenda**.
- On **Supervisor Tools**, the header has a team-member selector whose default text is **Select team members**.
- On **Calendar**, the header has previous-month and next-month arrow buttons (month view only), a **Today** button, the current month label (month view only), a **Month / Multi-month** toggle, and a **Hide/Show Projects** button (to hide or reveal whole projects on the calendar, per user).
- The **To-Do** button (checklist icon) is always visible in the header on every tab. Click it to open or close the **To-Do List** sidebar on the right side of the screen.
#### Lower-left user menu
Click your name/avatar at the bottom of the sidebar to open:
- **Profile**: Opens **My Profile**.
- **Settings**: Opens **Settings**.
- **Dark Mode**: Toggles dark mode. The menu displays `On` or `Off`.
#### Lower-right SOAR Assistant
- Click the red circular message button to open **SOAR Assistant**.
- Type in the **Ask a question...** box and submit with the paper-plane button.
- The chat window can be repositioned by dragging its header bar.
- The assistant sends up to 10 recent messages of history plus a small current-page context (active tab and whether the user has direct reports) to `askGeminiAssistant()`.
- Assistant responses are rendered as formatted markdown.
- A privacy disclaimer is displayed at the bottom of the chat: messages are processed by the Gemini API, data may be used to train Google's AI models, and users should not share private or sensitive information.
- The assistant needs Script Property `GEMINI_API_KEY`; otherwise, it responds with a configuration error.
- **Reporting a bug via chat**: If you describe a software problem or bug in the chat, the assistant will first try to help troubleshoot. If the issue can't be resolved, it will ask: "Would you like me to log this as a support ticket?" Reply "yes" (or any confirmation) to have it logged automatically. The assistant will confirm once the ticket is created — no form to fill out. The ticket is stored in the `Issues` sheet and a GitHub issue is opened immediately for the development team.
### Project Board: Everyday Task and Project Work
The **Project Board** displays each visible project as a column. Within each column, task cards are sorted by priority and due date.
#### Visibility on Project Board
By default, a user sees:
- projects directly assigned to them,
- projects containing open tasks assigned to them,
- projects they created, and
- **Public Projects** they are shared on (see [Public Projects and Task Claiming](#public-projects-and-task-claiming)).
Completed tasks are not shown on the main **Project Board** after they are complete; they appear in **Past Assignments** for assigned users.
Users can control which projects appear on their board using the **Hide/Show Projects** button in the top header (to the left of **New Project**). Clicking it opens a dropdown listing every visible project with a checkbox. Unchecking a project hides its column from your board; checking it makes it visible again. Hidden projects still appear on the **Calendar**, since calendar visibility is controlled separately by its own **Hide/Show Projects** setting (see [Calendar](#calendar)). This setting is saved privately per user and does not affect anyone else's board.
#### Project columns
Each project column shows:
- a colored dot using the project's **Color Scheme**;
- the project title as a clickable button that opens **Project Details**;
- the project due date (when set), color-coded: yellow if due within 7 days, orange if due within 1 day, red if overdue;
- the number of visible tasks in that project;
- draggable task cards;
- a dashed **+ Add Task** button at the bottom.
Projects can be reordered by dragging the project header area. Only the project creator can reorder their own project column. The new order is saved privately per user and does not affect anyone else's view.
#### Task cards
Each task card shows:
- status dropdown/pill with title **Update task status**;
- subtask count indicator (list-check icon and number) next to the status pill, shown only when the task has subtasks;
- a duplicate (copy icon) button that creates an independent copy of the task;
- speech-bubble comments button with the number of unresolved comments;
- task title;
- assignee avatars or initials;
- priority icon/label when priority is set;
- due date when set, color-coded: yellow if due within 7 days, orange if due within 1 day, red if overdue (gray for completed tasks).
Task cards can be dragged between project columns. Only the task creator can drag a task. Moving a task to a different project additionally requires the user to be the creator of both the source and target project. When hovering over a project you are not authorized to drop into, a red "Not authorized to move here" banner appears. Authorized targets show a blue "Move to: [Project]" banner. Task ordering is saved privately per user and does not affect other users' views. Press **Cmd/Ctrl+Z** to undo the last cross-project task move. Moving an unclaimed task out of a Public Project automatically assigns the moving creator to it, since only they are permitted to move it out in the first place.
Hover a task card and press **Cmd/Ctrl+C** to copy it, then press **Cmd/Ctrl+V** to paste a duplicate. The same shortcut works while **Task Details** is open, copying/pasting the task currently shown in the modal. Both shortcuts are ignored while typing in a text field.
### Creating a Project
1. Go to **Project Board**.
2. Click **New Project** in the top header.
3. The **New Project** modal opens.
4. Complete fields:
- **Project Title**: required; placeholder **Enter project title**.
- **Due Date**: optional date picker.
- **Status**: `Not Started`, `In Progress`, `Completed`, or `Delayed`.
- **Color Scheme**: `SUU Red (Default)`, `Sunset Orange`, `Amber Gold`, `Emerald Green`, `Ocean Teal`, `Sky Blue`, `Deep Indigo`, `Soft Violet`, `Rose Pink`, or `Pearl White`.
- **Description**: optional; placeholder **Describe the project**.
- **Public Project**: optional toggle. When on, a share picker (type a name or email) lets you pick which users the project is shared with. See [Public Projects and Task Claiming](#public-projects-and-task-claiming).
5. Click **Create Project**. To exit without saving, click **Cancel** or the **X** icon.
What SOAR records:
- `Project_ID` generated as `P-00000001`, etc.
- `Project_Title`, `Description`, `Status`, `Created_Date`, `Due_Date`, `Creator_ID`, `Color_Scheme`, and `Is_Public`.
- An assignment row assigning the project to the creator.
- One `Project_Shares` row per shared user, when **Public Project** is on.
### Editing or Deleting a Project
1. On **Project Board**, click a project title.
2. The **Project Details** modal opens.
3. Click **Edit Project**.
4. Edit fields:
- **Project Title**
- **Date Due**
- **Status**
- **Color Scheme**
- **Created By** (display-only)
- **Description**
- **Public Project**: toggle plus share picker, same as at creation.
5. Click **Save Changes**.
Other buttons:
- **Delete Project**: Deletes the project row, tasks in that project, assignment rows for those deleted tasks, and any `Project_Shares` rows for the project. Only the project creator can delete a project; non-creators see an error toast if they attempt it.
- **Cancel**: Cancels edit mode.
- **Close**: Closes the modal when not editing.
Turning **Public Project** off is blocked with an error if the project still has unclaimed tasks — assign or claim them first, then try again.
### Creating a Task
1. On **Project Board**, find the target project column.
2. Click **+ Add Task** at the bottom of that project column.
3. The **Add Task** modal opens and shows `Project: {Project_Title}` below the heading.
4. Complete fields:
- **Task Title**: required; placeholder **Enter task title**.
- **Due Date**: optional date picker.
- **Priority**: optional button selection: `High`, `Medium`, or `Low`.
- **Repeats**: optional button selection: `None`, `Daily`, `Weekly`, `Monthly`, or `Yearly`. Choosing anything but `None` reveals an **Every** interval number (e.g. every 2 weeks) and an optional **Ends on** date, and requires a due date.
- **Assigned To**: required by backend validation; opens a checkbox dropdown of assignable users. Not shown for tasks created in a **Public Project** — those tasks always start unclaimed (see [Public Projects and Task Claiming](#public-projects-and-task-claiming)).
- **Description**: optional; placeholder **Describe the task**.
- **Subtasks**: optional; type into **Type a subtask and press enter...** and press Enter or click **Add**.
5. Click **Create Task**. To exit without saving, click **Cancel** or the **X** icon.
Important behavior:
- New tasks always start with status `Not Started`.
- The current user may assign tasks only to themselves and users in their reporting tree (direct and indirect reports). Existing assignees can remain during edits even if they are outside the current assignable set.
- At least one assignee is required when creating or updating a task in a private project. Tasks in a **Public Project** are the exception — they can have zero assignees (unclaimed) and only ever get an assignee via claiming, never via direct assignment.
- Creating a task can send **Task assignments** notifications to selected assignees, depending on each recipient's settings. Claiming a task does not send a notification.
### Public Projects and Task Claiming
A project can be marked **Public** when it is created or edited, with a list of specific users it is shared with.
- **Visibility**: any user shared on a public project can see the project and its **unclaimed** tasks (tasks with no assignee) on the **Project Board**. The project creator can always see every task in a public project, claimed or not.
- **Claiming**: a shared user clicks **Claim** on an unclaimed task to become its sole assignee. Once claimed, the task is hidden from every other shared user — only the claimer and the project creator can still see it.
- **Unclaiming**: the claimer, or the project creator, can click **Unclaim Task** in **Task Details** to remove the assignee and return the task to the shared pool for everyone.
- **No direct assignment**: unlike private-project tasks, public-project tasks never go through the **Assigned To** picker — claiming is the only way a task gets an assignee.
- **Toggling back to private**: blocked while any task in the project is still unclaimed.
This is a visibility convenience, not an access-control boundary — anyone with access to the underlying data could still see it; SOAR simply doesn't show it in the interface.
### Task Details: Editing, Completing, Deleting
Click a task card to open **Task Details**.
Controls and fields:
- **Edit Task**: enables editing.
- **Task Name**: task title.
- **Description**
- **Subtasks**: checkboxes (always clickable to toggle complete/incomplete), editable titles in edit mode, drag handles in edit mode, and delete controls.
- **Task Status**: `Not Started`, `Upcoming`, `Review`, `In Progress`, `Ongoing`, `On Hold`, `Cancelled`, `Closeout`, or `Complete`.
- **Associated Project**: project dropdown available while editing.
- **Priority**: dropdown with `None`, `High`, `Medium`, `Low`.
- **Repeats**: dropdown with `None`, `Daily`, `Weekly`, `Monthly`, `Yearly`. Choosing anything but `None` reveals an **Every** interval number and an optional **Ends on** date, and requires a due date. Setting it back to `None` turns recurrence off.
- **Date Created**: display-only.
- **Date Due**: editable date picker in edit mode.
- **Completed By** and **Completed At**: only visible and populated when the task status is `Complete`.
- **Assigned To**: assignee dropdown plus selected assignee rows. For a task in a **Public Project**, this is replaced by an "Unclaimed" note until someone claims it — there is no direct-assign picker for these tasks.
Footer buttons:
- **Complete Task**: sets the task status to `Complete`, records `Completed_By`, and records `Completed_At`.
- **Complete**: displayed in the same button position when the task is already complete.
- **Delete Task**: deletes the task and related assignments. Only the task creator can delete a task; non-creators see an error toast if they attempt it.
- **Duplicate Task**: creates an independent copy of the task, including its assignees and subtasks.
- **Claim Task**: shown only for an unclaimed task in a **Public Project** when you are shared on the project (or are its creator); makes you the task's sole assignee.
- **Unclaim Task**: shown only when you are the current assignee of a claimed task in a **Public Project** (or are the project creator); removes the assignee and returns the task to the shared pool.
- **Save Changes**: saves edits.
- **Cancel**: cancels edit mode.
- **Close**: closes the modal when not editing.
Completed-task behavior:
- Completed tasks assigned to you appear in **Past Assignments**.
- Completed tasks with due dates in the past can be purged by `purgeCompletedTasksPastDue()`; this depends on the daily time-driven trigger for `runDailyTriggers()` being configured in the Apps Script project, so ask your SOAR administrator if old completed tasks aren't being cleared.
- Assignees and the task creator can receive task-completion notifications, excluding whoever completed the task.
### Subtasks
Subtasks belong to tasks and have their own IDs (`S-00000001`, etc.).
In **Add Task**:
- Use the **Subtasks** input with placeholder **Type a subtask and press enter...**.
- Press Enter or click **Add** to stage a subtask before clicking **Create Task**.
In **Task Details**:
- Click **Edit Task** to edit subtask titles, add new subtasks, delete subtasks, or drag to reorder subtasks.
- A subtask checkbox toggles status between `Incomplete` and `Complete`.
### Recurring Tasks
Any task can be set to repeat using the **Repeats** field in **Add Task** or **Task Details**: `None`, `Daily`, `Weekly`, `Monthly`, or `Yearly`, with a custom **Every** interval (e.g. every 2 weeks) and an optional **Ends on** date. A due date is required to enable recurrence.
How it actually advances:
- Generation is due-date based, not completion based. Once a recurring task's due date arrives, SOAR automatically creates the next occurrence: due date advanced by the interval, status reset to `Not Started`, and assignees and subtasks copied over (subtasks reset to incomplete).
- The original task's **Repeats** setting is cleared once it spawns its successor, so it won't create duplicates — only the newest occurrence in the series keeps recurring.
- If an **Ends on** date is set and the next occurrence would fall after it, the series stops instead of creating a new task.
- This depends on the daily time-driven trigger for `runDailyTriggers()` (which calls `processRecurringTasks()`) being configured in the Apps Script project; ask your SOAR administrator if recurring tasks aren't advancing.
### Comments and Mentions
Comments are currently task comments. Despite legacy data-model support for `Topic_Type`, the active UI/backend flow validates comments against tasks and writes `Topic_Type = Task`.
How to comment:
1. On a task card, click the speech-bubble comments icon.
2. The **Comments** modal opens.
3. Type in **Write a comment...**.
4. Type `@` to show mention suggestions. Suggestions use handles derived from each user's email local-part, or a sanitized display-name fallback.
5. Click **Post Comment**.
Comment controls:
- **Resolve**: marks the comment resolved; resolved comments no longer appear in the active comments list.
- **Delete**: permanently deletes the comment row.
Comments also display read-only inside the **Task Details** modal, between the **Description** and **Subtasks** sections, showing each comment's author, timestamp, and content (newest first, unresolved only). An **Add Comment** button there opens the same **Comments** modal used from the task card to post a new comment.
Mention behavior:
- Mentions are recognized with handles like `@first.last` or `@jane`, not display names with spaces.
- Mention notifications use the **Comments and mentions** notification preference.
### Supervisor Tools
**Supervisor Tools** is visible only if the current user has direct reports in the `Users` sheet (`Manager_ID` points to the current user's `User_ID`).
How it works:
1. Click **Supervisor Tools** in the sidebar.
2. Use the header selector, default text **Select team members**.
3. Check one or more direct reports.
4. SOAR shows open tasks assigned to selected users and projects containing those tasks.
Notes:
- The selector lists direct reports, not the full indirect reporting tree.
- The board itself can still show tasks in project columns, and the **+ Add Task** button remains visible.
### Calendar
The **Calendar** tab supports two view modes, toggled via the **Month / Multi-month** segmented control in the header. The selected mode is remembered across sessions.
**Month view** (default): displays a single month grid.
Header controls:
- left arrow: previous month;
- **Today**: return to the current month;
- month label: current displayed month and year;
- right arrow: next month.
**Multi-month view**: a continuous-scroll view spanning 16 months (3 months before the current month through 12 months ahead). Each month is displayed as its own grid block with a month-and-year label. The current month is marked with a **Current** badge.
Header controls:
- **Today**: smoothly scrolls back to the current month.
Users can control which projects appear on the calendar using the **Hide/Show Projects** button in the top header. Clicking it opens a dropdown listing every visible project with a checkbox. Unchecking a project hides its due-date entry and all of its tasks' due-date entries from the calendar; checking it restores them. This only hides whole projects — individual tasks cannot be hidden separately. This setting is saved privately per user, is completely independent of the **Hide/Show Projects** setting on the **Project Board** (a project can be hidden on one view and shown on the other), and does not affect anyone else's calendar.
Calendar entries (both views):
- Project due dates appear as **Project Due:** entries with a folder icon.
- Task due dates appear as task-title entries.
- Drag and drop both task entries and project-due entries onto another day cell to immediately update their due dates. Only the project creator can drag their own tasks and projects. In multi-month view, the page auto-scrolls while dragging near the top or bottom edge.
- While dragging, the hovered day cell shows a "Move [type] to [date]" tooltip so you can confirm the target before dropping.
- Press **Cmd/Ctrl+Z** to undo the last calendar date change.
- Click a project-due entry to open **Project Details**.
- Click a task entry to open **Task Details**.
### Past Assignments
The **Past Assignments** tab shows completed tasks assigned to the current user.
- If there are none, SOAR displays **No past assignments yet.** and **Completed tasks will appear here automatically.**
- Each completed task card shows task title, project title, a `Completed` badge, due date, and **Delete Permanently** (task creator only).
- Click a card to open **Task Details**.
- Click **Delete Permanently** to delete the completed task and related assignments. Only the task creator sees this button.
### Meeting Agendas
The **Meeting Agendas** tab has two sections:
- **My Agendas**: agendas created by the current user.
- **Shared With Me**: agendas shared with the current user.
Agenda cards display:
- Section count badge (from the latest session).
- Title.
- Description (if set).
- Creator and shared-user avatars.
- Latest session date (or "No sessions yet" if no sessions exist).
Each agenda is a recurring **template**. Every time the team meets, the agenda creator adds a new **session** — a date-stamped instance containing the actual content for that meeting. Past sessions are read-only and browsable.
Creating an agenda and first session:
1. Go to **Meeting Agendas**.
2. Click **New Agenda**. The **New Meeting Agenda** modal opens.
3. Enter a **Title** (required) and optional **Description**, then click **Create Agenda**.
4. SOAR creates the agenda and opens the editor. No sessions exist yet.
6. Click **New Session** (visible to the agenda creator) and choose **Blank** or **Copy from previous session**.
7. The session navigation bar shows "New Session · [date input]". Set the date.
8. Click **+ Add Header** to create a section.
9. Inside a section:
- click **+ Text Item** to add a free-text agenda item;
- use **+ Link Task** dropdown to embed a task from a visible project;
- linked task cards display the task title, status badge, assignee avatars, priority, and due date;
- click **View** on a linked task (visible on hover) to open **Task Details**.
10. Drag agenda items to reorder them within sections.
11. Click **Save Session**.
Navigating sessions:
- The session navigation bar shows **Session N of M · [date]**.
- Click **← Older** to view earlier sessions.
- Click **Newer →** to return to more recent sessions.
- Only the latest session is editable; all past sessions are read-only (shown with a lock notice).
Managing sessions:
- **New Session** button (owner only): creates a new session blank or copied from the previous one. The date defaults to today.
- **Delete Session** button (creator only): deletes the currently viewed session, including the last remaining one. Only the agenda creator can delete sessions; non-creators do not see this button.
- Deleting an agenda deletes all its sessions.
Sharing an agenda:
1. In the agenda editor, click **Share**.
2. The **Share Agenda** pop-up opens.
3. Use **Add people (Type name or email)...** to search users.
4. Click a suggestion to add access.
5. The creator appears as `{Name} (You)` and cannot be removed from their own agenda.
6. Click the **X** beside a shared user to **Remove access**.
7. Click **Save Session** to persist content and sharing changes.
Sharing behavior:
- Sharing rows are stored in the `Sharing` tab.
- New shares can trigger **Agenda shares** email notifications.
- Shared agendas appear in the recipient's **Shared With Me** section.
### Profile, Settings, and Dark Mode
#### My Profile
Open the lower-left user menu and click **Profile**.
- The modal title is **My Profile**.
- It shows avatar/profile image, **Name**, and **Email**.
- **Email** is always read-only and reflects the signed-in Google account. It cannot be changed.
- Click **Edit Profile** to edit the display name.
- Click **Save Changes** to persist the display name and refresh profile-photo URL if needed.
- Click **Cancel** while editing, or **Close** when not editing.
#### Settings
Open the lower-left user menu and click **Settings**.
**Font Size** controls:
- **Decrease** button reduces font scale by 5%.
- Range slider supports 85% to 130% in 5% increments.
- **Increase** button increases font scale by 5%.
- Label shows the percent and a friendly label such as `Smaller`, `Default`, or `Larger`.
**Notifications** toggles:
- **Task assignments**
- **Task completion** (notifies assignees and the task creator when a task is completed, excluding whoever completed it)
- **Comments and mentions**
- **Due-date reminders**
- **Weekly digest**
- **Agenda shares**
- **Support ticket follow-up**
Footer buttons:
- **Cancel** closes without saving the modal state.
- **Save Settings** persists notification and font-size settings.
#### Dark Mode
- Open the lower-left user menu.
- Click **Dark Mode** to toggle between light and dark UI.
- The current menu status displays `On` or `Off`.
- Dark mode is a local UI state in the current browser session; user settings persistence is used for font size and notifications.
---
## Features
### Project Management
✅ **Create & Track Projects**
- Required title plus optional description and due date.
- Status options: `Not Started`, `In Progress`, `Completed`, `Delayed`.
- Project color schemes: `suu_red` (default), `sunset_orange`, `amber_gold`, `emerald_green`, `ocean_teal`, `sky_blue`, `deep_indigo`, `soft_violet`, `rose_pink`, `pearl_white` — 10 curated options.
- Auto-populated creation date and creator tracking.
- Project creator is automatically assigned to the project.
- Project columns can be reordered on the board.
- Optional **Public Project** toggle with a share picker; shared users can claim unassigned tasks, and claiming hides a task from everyone but the claimer and the creator.
✅ **Organize Work with Tasks**
- Create tasks inside projects with the **+ Add Task** button.
- Task status options: `Not Started`, `Upcoming`, `Review`, `In Progress`, `Ongoing`, `On Hold`, `Cancelled`, `Closeout`, `Complete`.
- New tasks always begin as `Not Started`.
- Set optional priority: `High`, `Medium`, `Low`, or no priority.
- Due date management with visual indicators and due-tomorrow emphasis.
- Multiple assignees per task; at least one assignee is required by backend validation.
- Task cards can be dragged between projects.
- Auto-track completion timestamp and completing user when marked `Complete`.
✅ **Subtasks**
- Add subtasks while creating a task or later from **Task Details**.
- Toggle each subtask between `Incomplete` and `Complete`.
- Edit, delete, and reorder subtasks in task edit mode.
✅ **Recurring Tasks**
- Set **Repeats** to `Daily`, `Weekly`, `Monthly`, or `Yearly`, plus a custom interval and optional end date.
- Due-date based generation: the next occurrence is created automatically once the current due date arrives, independent of completion.
- Requires the daily time-driven trigger for `runDailyTriggers()` (which calls `processRecurringTasks()`).
### Personal To-Do List
✅ **To-Do List**
- Open from the **To-Do** button in the top header (visible on all tabs); appears as a panel on the right side of the screen.
- Add plain text items from the input field at the bottom of the panel; press Enter or the **+** button.
- Add linked items from any detail view:
- In **Project Details**, click **Add to To-Do** (visible when not editing) to link the project.
- In **Task Details**, click **Add to To-Do** (visible when not editing) to link the task.
- In **Task Details**, hover a subtask row and click the checklist icon to link the subtask.
- Linked items are bidirectional: completing a linked item in the To-Do list updates the original entity's status, and vice versa (status changes on the board are reflected in the To-Do list the next time it syncs).
- Checking off a linked project sets its status to **Completed**; unchecking sets it to **Not Started**.
- Checking off a linked task sets its status to **Complete**; unchecking sets it to **Not Started**.
- Checking off a linked subtask sets its status to **Complete**; unchecking sets it to **Incomplete**.
- Buttons change to **In To-Do** (green) once an item is already in the list.
- Remove individual items with the trash icon (hover the row to reveal it).
- Clear the entire list with the reset icon in the sidebar header; a confirmation dialog appears first.
- Completed items remain in the list with a strikethrough until removed or reset.
- The To-Do list is stored per user in Script Properties and persists across sessions.
### Meeting Agendas
✅ **Recurring Agenda Sessions**
- Create agendas from **Meeting Agendas** with **New Agenda**.
- Each agenda is a recurring template; add a new **session** each time the team meets.
- The latest session date and section count appear on agenda cards.
- Navigate past sessions with **← Older** / **Newer →** controls; past sessions are read-only.
- Agenda creators can create new sessions (blank or copied from the previous session), delete sessions, delete the agenda, and edit the current session. Only the creator can perform these destructive actions; non-creators see an error toast if they attempt them.
- Organize session content with headers; add free-text items with **+ Text Item**; embed task references with **+ Link Task**.
- Open linked tasks using **View**.
✅ **Secure Sharing**
- Share agendas with specific SOAR users through **Share** → **Share Agenda**.
- Recipients see agendas in **Shared With Me**.
- Opt-in email notifications are sent when a new agenda is shared.
### Collaboration
✅ **Task Comments & Mentions**
- Add comments to task cards.
- Type `@` to select mention suggestions.
- Resolve comments to hide them from the active list.
- Delete comments permanently.
- View comment timestamps and authorship.
- Comments also display read-only inside the Task Details modal, with an Add Comment button that opens the full Comments modal.
✅ **Smart Notifications**
1. **Task assignments**: users can be notified when assigned to a task.
2. **Comments and mentions**: users can be notified when mentioned in task comments.
3. **Task completion**: assignees and the task creator can be notified when a task is completed, excluding whoever completed it.
4. **Due-date reminders**: users can be alerted for open tasks due today or tomorrow. Depends on the daily time-driven trigger for `runDailyTriggers()` being configured; ask your SOAR administrator if reminders aren't arriving.
5. **Weekly digest**: weekly summary of open assigned tasks. Depends on the weekly time-driven trigger for `runWeeklyTriggers()` being configured.
6. **Agenda shares**: users can be notified when a teammate shares a meeting agenda.
7. **Support ticket follow-up**: users can be notified by email when a support ticket they logged has been resolved by the development team. Depends on the daily time-driven trigger for `runDailyTriggers()` (which calls `syncDailyGitHubStatus()`) being configured.
8. **Account-created manager notice**: a manager can be notified when a report creates an account.
### User Management
✅ **Team Hierarchy**
- Onboard users with email, display name, and optional manager.
- Manager relationships use `Manager_ID`.
- Task assignment permissions allow self and reporting-tree users.
- Supervisor Tools visibility depends on direct reports.
✅ **User Profiles**
- Sync profile photos from Google account when possible.
- View email and edit display name in **My Profile**. The active backend identifies the user by signed-in Google email and does not persist profile email changes.
- Manage notification preferences per user.
### Accessibility & Personalization
✅ **Dark/Light Mode**
- Toggle from the lower-left user menu using **Dark Mode**.
- Displays current state as `On` or `Off`.
✅ **Font Scaling**
- Adjust font size from 85% to 130% in 5% increments.
- Use **Decrease**, slider, or **Increase** in **Settings**.
✅ **Notification Control**
- Toggle each notification type in **Settings**.
- Stored per user by email in Script Properties.
### Views & Navigation
✅ **Project Board**
- Visual project columns with task cards.
- Drag-and-drop project reorder and task move.
- Status dropdown on each task card.
- Color-coded project card styling.
- Assignee avatars on task cards.
- Comment button and unresolved-comment count.
✅ **Supervisor Tools**
- Select direct reports and view their open assigned tasks grouped by project.
✅ **Calendar**
- Month view (default) and multi-month scroll view for project due dates and task due dates.
- Toggle between views with the Month / Multi-month control; preference is saved per browser.
- Click entries to open details.
✅ **Past Assignments**
- Completed assigned tasks.
- Permanent deletion for completed tasks.
✅ **Detail Modals**
- **Task Details**: full task editing, subtask management, assignee picker, completion, deletion, read-only comment list with an Add Comment shortcut.
- **Project Details**: project fields, creator display, color scheme, edit/delete actions.
- **Add Task**: task creation form.
- **New Project**: project creation form.
- **Comments**: task comment form and active comment list.
- **My Profile**: account profile viewer/editor. The UI shows **Name** and **Email**; the current backend persists the name and profile-photo refresh, but does not change the login email.
- **Settings**: font size and notification preferences.
✅ **SOAR Assistant**
- Optional Gemini-backed chat assistant in the bottom-right corner.
- Uses `Tutorial.html` plus current tab/direct-report context.