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.
- package/LICENSE +21 -0
- package/README.md +93 -0
- package/bin/cli.js +169 -0
- package/bin/postinstall.js +87 -0
- package/commands/pfActivity/SKILL.md +725 -0
- package/commands/pfAssign/SKILL.md +623 -0
- package/commands/pfCloudLink/SKILL.md +192 -0
- package/commands/pfCloudList/SKILL.md +222 -0
- package/commands/pfCloudNew/SKILL.md +187 -0
- package/commands/pfCloudUnlink/SKILL.md +152 -0
- package/commands/pfComment/SKILL.md +227 -0
- package/commands/pfComments/SKILL.md +159 -0
- package/commands/pfConnectionStatus/SKILL.md +433 -0
- package/commands/pfDiscord/SKILL.md +740 -0
- package/commands/pfGithubBranch/SKILL.md +672 -0
- package/commands/pfGithubIssue/SKILL.md +963 -0
- package/commands/pfGithubLink/SKILL.md +859 -0
- package/commands/pfGithubPr/SKILL.md +1335 -0
- package/commands/pfGithubUnlink/SKILL.md +401 -0
- package/commands/pfLive/SKILL.md +185 -0
- package/commands/pfLogin/SKILL.md +249 -0
- package/commands/pfLogout/SKILL.md +155 -0
- package/commands/pfMyTasks/SKILL.md +198 -0
- package/commands/pfNotificationSettings/SKILL.md +619 -0
- package/commands/pfNotifications/SKILL.md +420 -0
- package/commands/pfNotificationsClear/SKILL.md +421 -0
- package/commands/pfReact/SKILL.md +232 -0
- package/commands/pfSlack/SKILL.md +659 -0
- package/commands/pfSyncPull/SKILL.md +210 -0
- package/commands/pfSyncPush/SKILL.md +299 -0
- package/commands/pfSyncStatus/SKILL.md +212 -0
- package/commands/pfTeamInvite/SKILL.md +161 -0
- package/commands/pfTeamList/SKILL.md +253 -0
- package/commands/pfTeamRemove/SKILL.md +115 -0
- package/commands/pfTeamRole/SKILL.md +160 -0
- package/commands/pfTestWebhooks/SKILL.md +722 -0
- package/commands/pfUnassign/SKILL.md +134 -0
- package/commands/pfWhoami/SKILL.md +258 -0
- package/commands/pfWorkload/SKILL.md +219 -0
- package/commands/planExportCsv/SKILL.md +106 -0
- package/commands/planExportGithub/SKILL.md +222 -0
- package/commands/planExportJson/SKILL.md +159 -0
- package/commands/planExportSummary/SKILL.md +158 -0
- package/commands/planNew/SKILL.md +641 -0
- package/commands/planNext/SKILL.md +1200 -0
- package/commands/planSettingsAutoSync/SKILL.md +199 -0
- package/commands/planSettingsLanguage/SKILL.md +201 -0
- package/commands/planSettingsReset/SKILL.md +237 -0
- package/commands/planSettingsShow/SKILL.md +482 -0
- package/commands/planSpec/SKILL.md +929 -0
- package/commands/planUpdate/SKILL.md +2518 -0
- package/commands/team/SKILL.md +740 -0
- package/locales/en.json +1499 -0
- package/locales/ka.json +1499 -0
- package/package.json +48 -0
- package/templates/PROJECT_PLAN.template.md +157 -0
- package/templates/backend-api.template.md +562 -0
- package/templates/frontend-spa.template.md +610 -0
- package/templates/fullstack.template.md +397 -0
- package/templates/ka/backend-api.template.md +562 -0
- package/templates/ka/frontend-spa.template.md +610 -0
- package/templates/ka/fullstack.template.md +397 -0
- package/templates/sections/architecture.md +21 -0
- package/templates/sections/overview.md +15 -0
- package/templates/sections/tasks.md +22 -0
- 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
|
+
```
|