planflow-plugin 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +93 -0
  3. package/bin/cli.js +169 -0
  4. package/bin/postinstall.js +87 -0
  5. package/commands/pfActivity/SKILL.md +725 -0
  6. package/commands/pfAssign/SKILL.md +623 -0
  7. package/commands/pfCloudLink/SKILL.md +192 -0
  8. package/commands/pfCloudList/SKILL.md +222 -0
  9. package/commands/pfCloudNew/SKILL.md +187 -0
  10. package/commands/pfCloudUnlink/SKILL.md +152 -0
  11. package/commands/pfComment/SKILL.md +227 -0
  12. package/commands/pfComments/SKILL.md +159 -0
  13. package/commands/pfConnectionStatus/SKILL.md +433 -0
  14. package/commands/pfDiscord/SKILL.md +740 -0
  15. package/commands/pfGithubBranch/SKILL.md +672 -0
  16. package/commands/pfGithubIssue/SKILL.md +963 -0
  17. package/commands/pfGithubLink/SKILL.md +859 -0
  18. package/commands/pfGithubPr/SKILL.md +1335 -0
  19. package/commands/pfGithubUnlink/SKILL.md +401 -0
  20. package/commands/pfLive/SKILL.md +185 -0
  21. package/commands/pfLogin/SKILL.md +249 -0
  22. package/commands/pfLogout/SKILL.md +155 -0
  23. package/commands/pfMyTasks/SKILL.md +198 -0
  24. package/commands/pfNotificationSettings/SKILL.md +619 -0
  25. package/commands/pfNotifications/SKILL.md +420 -0
  26. package/commands/pfNotificationsClear/SKILL.md +421 -0
  27. package/commands/pfReact/SKILL.md +232 -0
  28. package/commands/pfSlack/SKILL.md +659 -0
  29. package/commands/pfSyncPull/SKILL.md +210 -0
  30. package/commands/pfSyncPush/SKILL.md +299 -0
  31. package/commands/pfSyncStatus/SKILL.md +212 -0
  32. package/commands/pfTeamInvite/SKILL.md +161 -0
  33. package/commands/pfTeamList/SKILL.md +253 -0
  34. package/commands/pfTeamRemove/SKILL.md +115 -0
  35. package/commands/pfTeamRole/SKILL.md +160 -0
  36. package/commands/pfTestWebhooks/SKILL.md +722 -0
  37. package/commands/pfUnassign/SKILL.md +134 -0
  38. package/commands/pfWhoami/SKILL.md +258 -0
  39. package/commands/pfWorkload/SKILL.md +219 -0
  40. package/commands/planExportCsv/SKILL.md +106 -0
  41. package/commands/planExportGithub/SKILL.md +222 -0
  42. package/commands/planExportJson/SKILL.md +159 -0
  43. package/commands/planExportSummary/SKILL.md +158 -0
  44. package/commands/planNew/SKILL.md +641 -0
  45. package/commands/planNext/SKILL.md +1200 -0
  46. package/commands/planSettingsAutoSync/SKILL.md +199 -0
  47. package/commands/planSettingsLanguage/SKILL.md +201 -0
  48. package/commands/planSettingsReset/SKILL.md +237 -0
  49. package/commands/planSettingsShow/SKILL.md +482 -0
  50. package/commands/planSpec/SKILL.md +929 -0
  51. package/commands/planUpdate/SKILL.md +2518 -0
  52. package/commands/team/SKILL.md +740 -0
  53. package/locales/en.json +1499 -0
  54. package/locales/ka.json +1499 -0
  55. package/package.json +48 -0
  56. package/templates/PROJECT_PLAN.template.md +157 -0
  57. package/templates/backend-api.template.md +562 -0
  58. package/templates/frontend-spa.template.md +610 -0
  59. package/templates/fullstack.template.md +397 -0
  60. package/templates/ka/backend-api.template.md +562 -0
  61. package/templates/ka/frontend-spa.template.md +610 -0
  62. package/templates/ka/fullstack.template.md +397 -0
  63. package/templates/sections/architecture.md +21 -0
  64. package/templates/sections/overview.md +15 -0
  65. package/templates/sections/tasks.md +22 -0
  66. package/templates/sections/tech-stack.md +19 -0
@@ -0,0 +1,482 @@
1
+ ---
2
+ name: planSettingsShow
3
+ description: Display current plugin configuration
4
+ ---
5
+
6
+ # Plan Settings Show
7
+
8
+ Display current plugin configuration including language, cloud status, auto-sync settings, and notification preferences with modern dashboard cards.
9
+
10
+ ## Usage
11
+
12
+ ```bash
13
+ /planSettingsShow # Show general settings
14
+ /planSettingsShow notifications # Show notification settings
15
+ ```
16
+
17
+ ## Step 0: Load Configuration
18
+
19
+ ```javascript
20
+ function getConfig() {
21
+ const localConfigPath = "./.plan-config.json"
22
+ if (fileExists(localConfigPath)) {
23
+ try {
24
+ const config = JSON.parse(readFile(localConfigPath))
25
+ config._source = "local"
26
+ return config
27
+ } catch {}
28
+ }
29
+
30
+ const globalConfigPath = expandPath("~/.config/claude/plan-plugin-config.json")
31
+ if (fileExists(globalConfigPath)) {
32
+ try {
33
+ const config = JSON.parse(readFile(globalConfigPath))
34
+ config._source = "global"
35
+ return config
36
+ } catch {}
37
+ }
38
+
39
+ return { "language": "en", "_source": "default" }
40
+ }
41
+
42
+ const config = getConfig()
43
+ const language = config.language || "en"
44
+ const cloudConfig = config.cloud || {}
45
+ const isAuthenticated = !!cloudConfig.apiToken
46
+ const autoSync = cloudConfig.autoSync || false
47
+ const storageMode = cloudConfig.storageMode || "local"
48
+
49
+ // Also load both configs for display
50
+ const localConfig = fileExists("./.plan-config.json")
51
+ ? JSON.parse(readFile("./.plan-config.json")) : null
52
+ const globalConfig = fileExists(expandPath("~/.config/claude/plan-plugin-config.json"))
53
+ ? JSON.parse(readFile(expandPath("~/.config/claude/plan-plugin-config.json"))) : null
54
+
55
+ const t = JSON.parse(readFile(`locales/${language}.json`))
56
+
57
+ // Parse arguments
58
+ const args = commandArgs ? commandArgs.trim().toLowerCase() : ""
59
+ const subCommand = args.split(/\s+/)[0] || null // "notifications" or null
60
+ ```
61
+
62
+ ## Step 0.5: Handle Sub-Commands
63
+
64
+ If `subCommand === "notifications"`, go to **Step 2: Notification Settings**.
65
+
66
+ Otherwise, proceed to **Step 1: Display General Settings**.
67
+
68
+ ## Step 1: Display Settings Dashboard Card
69
+
70
+ ```javascript
71
+ const languageNames = {
72
+ "en": "English",
73
+ "ka": "ქართული (Georgian)",
74
+ "ru": "Русский (Russian)"
75
+ }
76
+
77
+ const currentLanguageName = languageNames[config.language] || "English"
78
+ ```
79
+
80
+ **Output Format:**
81
+
82
+ ```
83
+ ╭──────────────────────────────────────────────────────────────────────────────╮
84
+ │ ⚙️ {t.commands.settings.title} │
85
+ ├──────────────────────────────────────────────────────────────────────────────┤
86
+ │ │
87
+ │ ── Active Configuration ──────────────────────────────────────────────── │
88
+ │ │
89
+ │ 🌍 Language: {currentLanguageName} │
90
+ │ Source: {config._source} │
91
+ │ │
92
+ │ ── Cloud Status ──────────────────────────────────────────────────────── │
93
+ │ │
94
+ │ ╭────────────────╮ │
95
+ │ │ ✓ Connected │ {cloudConfig.userEmail} │
96
+ │ ╰────────────────╯ │
97
+ │ │
98
+ │ 📁 Linked Project: {cloudConfig.projectId || "None"} │
99
+ │ 🔄 Auto-sync: {autoSync ? "Enabled" : "Disabled"} │
100
+ │ 💾 Storage Mode: {storageMode} │
101
+ │ │
102
+ │ ── Config Files ──────────────────────────────────────────────────────── │
103
+ │ │
104
+ │ 📁 Local: ./.plan-config.json {localConfig ? "✓" : "✕"} │
105
+ │ 🌐 Global: ~/.config/claude/... {globalConfig ? "✓" : "✕"} │
106
+ │ │
107
+ ├──────────────────────────────────────────────────────────────────────────────┤
108
+ │ │
109
+ │ 💡 {t.ui.labels.commands} │
110
+ │ • /planSettingsShow notifications View notification settings │
111
+ │ • /planSettingsLanguage Change language │
112
+ │ • /planSettingsAutoSync Manage auto-sync │
113
+ │ • /planSettingsReset Reset to defaults │
114
+ │ │
115
+ ╰──────────────────────────────────────────────────────────────────────────────╯
116
+ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
117
+ ```
118
+
119
+ **Example Output (English - Connected):**
120
+
121
+ ```
122
+ ╭──────────────────────────────────────────────────────────────────────────────╮
123
+ │ ⚙️ Plan Plugin Settings │
124
+ ├──────────────────────────────────────────────────────────────────────────────┤
125
+ │ │
126
+ │ ── Active Configuration ──────────────────────────────────────────────── │
127
+ │ │
128
+ │ 🌍 Language: English │
129
+ │ Source: global │
130
+ │ │
131
+ │ ── Cloud Status ──────────────────────────────────────────────────────── │
132
+ │ │
133
+ │ ╭────────────────╮ │
134
+ │ │ ✓ Connected │ user@example.com │
135
+ │ ╰────────────────╯ │
136
+ │ │
137
+ │ 📁 Linked Project: proj-abc123 │
138
+ │ 🔄 Auto-sync: Enabled │
139
+ │ 💾 Storage Mode: hybrid │
140
+ │ │
141
+ │ ── Config Files ──────────────────────────────────────────────────────── │
142
+ │ │
143
+ │ 📁 Local: ./.plan-config.json ✓ │
144
+ │ 🌐 Global: ~/.config/claude/... ✓ │
145
+ │ │
146
+ ├──────────────────────────────────────────────────────────────────────────────┤
147
+ │ │
148
+ │ 💡 Commands: │
149
+ │ • /planSettingsShow notifications View notification settings │
150
+ │ • /planSettingsLanguage Change language │
151
+ │ • /planSettingsAutoSync Manage auto-sync │
152
+ │ • /planSettingsReset Reset to defaults │
153
+ │ │
154
+ ╰──────────────────────────────────────────────────────────────────────────────╯
155
+ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
156
+ ```
157
+
158
+ **Example Output (English - Not Connected):**
159
+
160
+ ```
161
+ ╭──────────────────────────────────────────────────────────────────────────────╮
162
+ │ ⚙️ Plan Plugin Settings │
163
+ ├──────────────────────────────────────────────────────────────────────────────┤
164
+ │ │
165
+ │ ── Active Configuration ──────────────────────────────────────────────── │
166
+ │ │
167
+ │ 🌍 Language: English │
168
+ │ Source: default │
169
+ │ │
170
+ │ ── Cloud Status ──────────────────────────────────────────────────────── │
171
+ │ │
172
+ │ ╭──────────────────╮ │
173
+ │ │ ✕ Not Connected │ │
174
+ │ ╰──────────────────╯ │
175
+ │ │
176
+ │ Run /pfLogin to connect to PlanFlow Cloud. │
177
+ │ │
178
+ │ ── Config Files ──────────────────────────────────────────────────────── │
179
+ │ │
180
+ │ 📁 Local: ./.plan-config.json ✕ │
181
+ │ 🌐 Global: ~/.config/claude/... ✕ │
182
+ │ │
183
+ ├──────────────────────────────────────────────────────────────────────────────┤
184
+ │ │
185
+ │ 💡 Commands: │
186
+ │ • /planSettingsLanguage Change language │
187
+ │ • /pfLogin Connect to cloud │
188
+ │ • /planSettingsReset Reset to defaults │
189
+ │ │
190
+ ╰──────────────────────────────────────────────────────────────────────────────╯
191
+ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
192
+ ```
193
+
194
+ **Example Output (Georgian):**
195
+
196
+ ```
197
+ ╭──────────────────────────────────────────────────────────────────────────────╮
198
+ │ ⚙️ Plan Plugin-ის პარამეტრები │
199
+ ├──────────────────────────────────────────────────────────────────────────────┤
200
+ │ │
201
+ │ ── აქტიური კონფიგურაცია ──────────────────────────────────────────────── │
202
+ │ │
203
+ │ 🌍 ენა: ქართული (Georgian) │
204
+ │ წყარო: global │
205
+ │ │
206
+ │ ── Cloud სტატუსი ─────────────────────────────────────────────────────── │
207
+ │ │
208
+ │ ╭─────────────────────╮ │
209
+ │ │ ✓ დაკავშირებულია │ user@example.com │
210
+ │ ╰─────────────────────╯ │
211
+ │ │
212
+ │ 📁 დაკავშირებული პროექტი: proj-abc123 │
213
+ │ 🔄 ავტო-სინქრონიზაცია: ჩართულია │
214
+ │ 💾 შენახვის რეჟიმი: ჰიბრიდული │
215
+ │ │
216
+ │ ── კონფიგურაციის ფაილები ─────────────────────────────────────────────── │
217
+ │ │
218
+ │ 📁 ლოკალური: ./.plan-config.json ✓ │
219
+ │ 🌐 გლობალური: ~/.config/claude/... ✓ │
220
+ │ │
221
+ ├──────────────────────────────────────────────────────────────────────────────┤
222
+ │ │
223
+ │ 💡 ბრძანებები: │
224
+ │ • /planSettingsShow notifications შეტყობინებების პარამეტრები │
225
+ │ • /planSettingsLanguage ენის შეცვლა │
226
+ │ • /planSettingsAutoSync ავტო-სინქრონიზაციის მართვა │
227
+ │ • /planSettingsReset საწყის მნიშვნელობებზე დაბრუნება │
228
+ │ │
229
+ ╰──────────────────────────────────────────────────────────────────────────────╯
230
+ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
231
+ ```
232
+
233
+ ## Error Handling
234
+
235
+ **If config corrupted:**
236
+
237
+ ```
238
+ ╭──────────────────────────────────────────────────────────────────────────────╮
239
+ │ ⚠️ WARNING │
240
+ ├──────────────────────────────────────────────────────────────────────────────┤
241
+ │ │
242
+ │ Config file was corrupted, using defaults. │
243
+ │ │
244
+ │ 💡 Next Steps: │
245
+ │ • /planSettingsReset Reset and fix config │
246
+ │ │
247
+ ╰──────────────────────────────────────────────────────────────────────────────╯
248
+ ```
249
+
250
+ ---
251
+
252
+ ## Step 2: Notification Settings (Sub-Command)
253
+
254
+ When user runs `/planSettingsShow notifications`, display and manage notification preferences.
255
+
256
+ ### Check Authentication
257
+
258
+ If not authenticated, show error:
259
+
260
+ ```
261
+ ╭──────────────────────────────────────────────────────────────────────────────╮
262
+ │ ❌ ERROR │
263
+ ├──────────────────────────────────────────────────────────────────────────────┤
264
+ │ │
265
+ │ {t.commands.sync.notAuthenticated} │
266
+ │ │
267
+ │ Notification settings require a cloud connection. │
268
+ │ │
269
+ │ 💡 Run /pfLogin to authenticate first. │
270
+ │ │
271
+ ╰──────────────────────────────────────────────────────────────────────────────╯
272
+ ```
273
+
274
+ If no project linked, show error:
275
+
276
+ ```
277
+ ╭──────────────────────────────────────────────────────────────────────────────╮
278
+ │ ❌ ERROR │
279
+ ├──────────────────────────────────────────────────────────────────────────────┤
280
+ │ │
281
+ │ {t.commands.sync.notLinked} │
282
+ │ │
283
+ │ 💡 Run /pfCloudLink to link a project first. │
284
+ │ │
285
+ ╰──────────────────────────────────────────────────────────────────────────────╯
286
+ ```
287
+
288
+ ### Fetch Notification Settings from API
289
+
290
+ **API Endpoint:** `GET /users/me/notification-settings`
291
+
292
+ **Bash Implementation:**
293
+
294
+ ```bash
295
+ API_URL="https://api.planflow.tools"
296
+ TOKEN="$API_TOKEN"
297
+ PROJECT_ID="$PROJECT_ID"
298
+
299
+ # Fetch current notification settings
300
+ RESPONSE=$(curl -s -w "\n%{http_code}" \
301
+ --connect-timeout 5 \
302
+ --max-time 10 \
303
+ -X GET \
304
+ -H "Accept: application/json" \
305
+ -H "Authorization: Bearer $TOKEN" \
306
+ "${API_URL}/users/me/notification-settings?projectId=${PROJECT_ID}")
307
+
308
+ HTTP_CODE=$(echo "$RESPONSE" | tail -n1)
309
+ BODY=$(echo "$RESPONSE" | sed '$d')
310
+
311
+ if [ "$HTTP_CODE" -ge 200 ] && [ "$HTTP_CODE" -lt 300 ]; then
312
+ echo "$BODY"
313
+ else
314
+ echo "Error: HTTP $HTTP_CODE"
315
+ fi
316
+ ```
317
+
318
+ **Expected Response:**
319
+
320
+ ```json
321
+ {
322
+ "success": true,
323
+ "data": {
324
+ "settings": {
325
+ "channels": {
326
+ "email": { "enabled": true, "mode": "digest" },
327
+ "inapp": { "enabled": true },
328
+ "slack": { "enabled": false, "webhookConfigured": false },
329
+ "discord": { "enabled": false, "webhookConfigured": false }
330
+ },
331
+ "events": {
332
+ "assigned": true,
333
+ "mention": true,
334
+ "watching": true,
335
+ "team": false
336
+ }
337
+ }
338
+ }
339
+ }
340
+ ```
341
+
342
+ ### Display Notification Settings Dashboard
343
+
344
+ **Output Format:**
345
+
346
+ ```
347
+ ╭──────────────────────────────────────────────────────────────────────────────╮
348
+ │ 🔔 {t.commands.notificationSettings.title} │
349
+ ├──────────────────────────────────────────────────────────────────────────────┤
350
+ │ │
351
+ │ 📁 Project: {projectName} │
352
+ │ │
353
+ │ ── {t.commands.notificationSettings.channels} ──────────────────────────── │
354
+ │ │
355
+ │ 📧 {t.commands.notificationSettings.emailLabel}: │
356
+ │ {email.enabled ? "✅ Enabled" : "❌ Disabled"} │
357
+ │ Mode: {email.mode === "digest" ? t.commands.notificationSettings.modeDigest : t.commands.notificationSettings.modeImmediate}
358
+ │ │
359
+ │ 🔔 {t.commands.notificationSettings.inappLabel}: │
360
+ │ {inapp.enabled ? "✅ Enabled" : "❌ Disabled"} │
361
+ │ │
362
+ │ 💬 {t.commands.notificationSettings.slackLabel}: │
363
+ │ {slack.webhookConfigured ? (slack.enabled ? "✅ Enabled" : "❌ Disabled") : t.commands.notificationSettings.notConfigured}
364
+ │ │
365
+ │ 🎮 {t.commands.notificationSettings.discordLabel}: │
366
+ │ {discord.webhookConfigured ? (discord.enabled ? "✅ Enabled" : "❌ Disabled") : t.commands.notificationSettings.notConfigured}
367
+ │ │
368
+ │ ── {t.commands.notificationSettings.events} ────────────────────────────── │
369
+ │ │
370
+ │ {events.assigned ? "[✓]" : "[ ]"} {t.commands.notificationSettings.eventAssigned}
371
+ │ {events.mention ? "[✓]" : "[ ]"} {t.commands.notificationSettings.eventMention}
372
+ │ {events.watching ? "[✓]" : "[ ]"} {t.commands.notificationSettings.eventWatching}
373
+ │ {events.team ? "[✓]" : "[ ]"} {t.commands.notificationSettings.eventTeam}
374
+ │ │
375
+ ├──────────────────────────────────────────────────────────────────────────────┤
376
+ │ │
377
+ │ 💡 {t.ui.labels.commands} │
378
+ │ • /pfNotificationSettings email on|off|digest │
379
+ │ • /pfNotificationSettings inapp on|off │
380
+ │ • /pfNotificationSettings event <type> on|off │
381
+ │ │
382
+ │ {t.commands.notificationSettings.eventTypes}: assigned, mention, watching, team
383
+ │ │
384
+ │ 🔙 /planSettingsShow Back to general settings │
385
+ │ │
386
+ ╰──────────────────────────────────────────────────────────────────────────────╯
387
+ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
388
+ ```
389
+
390
+ **Example Output (English):**
391
+
392
+ ```
393
+ ╭──────────────────────────────────────────────────────────────────────────────╮
394
+ │ 🔔 Notification Settings │
395
+ ├──────────────────────────────────────────────────────────────────────────────┤
396
+ │ │
397
+ │ 📁 Project: Plan Flow Plugin │
398
+ │ │
399
+ │ ── Notification Channels ───────────────────────────────────────────────── │
400
+ │ │
401
+ │ 📧 Email: ✅ Enabled (Daily digest) │
402
+ │ 🔔 In-app: ✅ Enabled │
403
+ │ 💬 Slack: ✅ Enabled │
404
+ │ 🎮 Discord: ❌ Disabled │
405
+ │ │
406
+ │ ── Event Types ─────────────────────────────────────────────────────────── │
407
+ │ │
408
+ │ [✓] Task assigned to me │
409
+ │ [✓] Mentioned in comment │
410
+ │ [✓] Task I'm watching updated │
411
+ │ [ ] All team activity │
412
+ │ │
413
+ ├──────────────────────────────────────────────────────────────────────────────┤
414
+ │ │
415
+ │ 💡 Commands: │
416
+ │ • /pfNotificationSettings email on|off|digest │
417
+ │ • /pfNotificationSettings inapp on|off │
418
+ │ • /pfNotificationSettings event <type> on|off │
419
+ │ │
420
+ │ Event types: assigned, mention, watching, team │
421
+ │ │
422
+ │ 🔙 /planSettingsShow Back to general settings │
423
+ │ │
424
+ ╰──────────────────────────────────────────────────────────────────────────────╯
425
+ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
426
+ ```
427
+
428
+ **Example Output (Georgian):**
429
+
430
+ ```
431
+ ╭──────────────────────────────────────────────────────────────────────────────╮
432
+ │ 🔔 შეტყობინებების პარამეტრები │
433
+ ├──────────────────────────────────────────────────────────────────────────────┤
434
+ │ │
435
+ │ 📁 პროექტი: Plan Flow Plugin │
436
+ │ │
437
+ │ ── შეტყობინებების არხები ───────────────────────────────────────────────── │
438
+ │ │
439
+ │ 📧 ელ-ფოსტა: ✅ ჩართულია (ყოველდღიური შეჯამება) │
440
+ │ 🔔 აპლიკაციაში: ✅ ჩართულია │
441
+ │ 💬 Slack: ✅ ჩართულია │
442
+ │ 🎮 Discord: ❌ გამორთულია │
443
+ │ │
444
+ │ ── მოვლენების ტიპები ───────────────────────────────────────────────────── │
445
+ │ │
446
+ │ [✓] ამოცანის მინიჭება │
447
+ │ [✓] კომენტარში მოხსენიება │
448
+ │ [✓] თვალყურისდევნებული ამოცანის განახლება │
449
+ │ [ ] გუნდის ყველა აქტივობა │
450
+ │ │
451
+ ├──────────────────────────────────────────────────────────────────────────────┤
452
+ │ │
453
+ │ 💡 ბრძანებები: │
454
+ │ • /pfNotificationSettings email on|off|digest │
455
+ │ • /pfNotificationSettings inapp on|off │
456
+ │ • /pfNotificationSettings event <type> on|off │
457
+ │ │
458
+ │ მოვლენების ტიპები: assigned, mention, watching, team │
459
+ │ │
460
+ │ 🔙 /planSettingsShow ზოგადი პარამეტრებზე დაბრუნება │
461
+ │ │
462
+ ╰──────────────────────────────────────────────────────────────────────────────╯
463
+ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
464
+ ```
465
+
466
+ ### Error Handling for Notification Settings
467
+
468
+ **Network error:**
469
+
470
+ ```
471
+ ╭──────────────────────────────────────────────────────────────────────────────╮
472
+ │ ❌ ERROR │
473
+ ├──────────────────────────────────────────────────────────────────────────────┤
474
+ │ │
475
+ │ {t.commands.notificationSettings.networkError} │
476
+ │ │
477
+ │ Could not fetch notification settings. │
478
+ │ │
479
+ │ {t.commands.notificationSettings.tryAgain} │
480
+ │ │
481
+ ╰──────────────────────────────────────────────────────────────────────────────╯
482
+ ```