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
package/locales/en.json
ADDED
|
@@ -0,0 +1,1499 @@
|
|
|
1
|
+
{
|
|
2
|
+
"meta": {
|
|
3
|
+
"language": "English",
|
|
4
|
+
"code": "en",
|
|
5
|
+
"version": "1.0.0"
|
|
6
|
+
},
|
|
7
|
+
|
|
8
|
+
"common": {
|
|
9
|
+
"success": "✅ Success!",
|
|
10
|
+
"error": "❌ Error:",
|
|
11
|
+
"warning": "⚠️ Warning:",
|
|
12
|
+
"info": "ℹ️ Info:",
|
|
13
|
+
"yes": "Yes",
|
|
14
|
+
"no": "No",
|
|
15
|
+
"cancel": "Cancel",
|
|
16
|
+
"continue": "Continue",
|
|
17
|
+
"done": "Done"
|
|
18
|
+
},
|
|
19
|
+
|
|
20
|
+
"commands": {
|
|
21
|
+
"new": {
|
|
22
|
+
"welcome": "📋 Welcome to Plan Creation Wizard!",
|
|
23
|
+
"intro": "I'll guide you through creating a comprehensive project plan by asking a series of questions. This will take about 5-10 minutes.",
|
|
24
|
+
"whatYouGet": "At the end, I'll generate a detailed PROJECT_PLAN.md file with:\n- Project architecture diagrams\n- Technology stack breakdown\n- Phased implementation tasks\n- Progress tracking system\n- Success criteria",
|
|
25
|
+
"letsStart": "Let's get started!",
|
|
26
|
+
"projectName": "What's your project name?",
|
|
27
|
+
"projectType": "What type of project are you building?",
|
|
28
|
+
"description": "Brief description of what the project does (1-2 sentences)?",
|
|
29
|
+
"targetUsers": "Who will use this project?",
|
|
30
|
+
"frontend": "Which frontend framework?",
|
|
31
|
+
"backend": "Which backend framework?",
|
|
32
|
+
"database": "Which database?",
|
|
33
|
+
"hosting": "Hosting preference?",
|
|
34
|
+
"features": "What are the 3-5 core features?",
|
|
35
|
+
"authentication": "Does it need user authentication?",
|
|
36
|
+
"realtime": "Any real-time/live updates needed?",
|
|
37
|
+
"fileUploads": "Will users upload files?",
|
|
38
|
+
"thirdParty": "Any third-party integrations (payments, email, etc.)?",
|
|
39
|
+
"generating": "Generating your project plan...",
|
|
40
|
+
"success": "✅ Project plan created successfully!",
|
|
41
|
+
"fileCreated": "📄 File: PROJECT_PLAN.md",
|
|
42
|
+
"totalTasks": "📊 Total Tasks: {count}",
|
|
43
|
+
"phases": "🎯 Phases: {count}",
|
|
44
|
+
"nextSteps": "Next steps:",
|
|
45
|
+
"reviewPlan": "1. Review the plan and adjust as needed",
|
|
46
|
+
"getNextTask": "2. Start with: /next (to get the next task)",
|
|
47
|
+
"updateProgress": "3. Update progress: /update T1.1 start",
|
|
48
|
+
"planIncludes": "Your plan includes:",
|
|
49
|
+
"architectureDiagrams": "• Architecture diagrams",
|
|
50
|
+
"techStack": "• Detailed tech stack",
|
|
51
|
+
"tasksCount": "• {count} implementation tasks",
|
|
52
|
+
"progressTracking": "• Progress tracking system",
|
|
53
|
+
"goodLuck": "Good luck with your project! 🚀"
|
|
54
|
+
},
|
|
55
|
+
|
|
56
|
+
"next": {
|
|
57
|
+
"title": "🎯 Recommended Next Task",
|
|
58
|
+
"recommendedTask": "Recommended Next Task:",
|
|
59
|
+
"complexity": "Complexity:",
|
|
60
|
+
"estimated": "Estimated:",
|
|
61
|
+
"phase": "Phase:",
|
|
62
|
+
"dependenciesCompleted": "✅ All dependencies completed",
|
|
63
|
+
"whyThisTask": "🎯 Why this task?",
|
|
64
|
+
"taskDetails": "📝 Task Details:",
|
|
65
|
+
"readyToStart": "Ready to start?",
|
|
66
|
+
"noTasks": "⚠️ No tasks currently available to work on.",
|
|
67
|
+
"projectStatus": "📊 Project Status:",
|
|
68
|
+
"completed": "✅ Completed:",
|
|
69
|
+
"inProgress": "🔄 In Progress:",
|
|
70
|
+
"blocked": "🚫 Blocked:",
|
|
71
|
+
"waitingOnDeps": "⏳ Waiting on Dependencies:",
|
|
72
|
+
"tasksInProgress": "🔄 Tasks In Progress:",
|
|
73
|
+
"blockedTasks": "🚫 Blocked Tasks:",
|
|
74
|
+
"suggestedActions": "💡 Suggested Actions:",
|
|
75
|
+
"completeInProgress": "1. Complete in-progress tasks",
|
|
76
|
+
"resolveBlockers": "2. Resolve blockers on blocked tasks",
|
|
77
|
+
"reviewDependencies": "3. Review dependencies if tasks seem stuck",
|
|
78
|
+
"allComplete": "🎉 Congratulations! All tasks are complete!",
|
|
79
|
+
"projectComplete": "Project Status: COMPLETE ✨",
|
|
80
|
+
"whatsNext": "🎯 What's next?",
|
|
81
|
+
"deploy": "• Deploy to production (if not already)",
|
|
82
|
+
"postMortem": "• Write post-mortem / lessons learned",
|
|
83
|
+
"gatherFeedback": "• Gather user feedback",
|
|
84
|
+
"planNextVersion": "• Plan next version/features",
|
|
85
|
+
"celebrate": "• Celebrate your success! 🎊",
|
|
86
|
+
"greatWork": "Great work on completing this project! 🚀",
|
|
87
|
+
"alternatives": "💡 Alternative Tasks (if this doesn't fit):",
|
|
88
|
+
"assignedTo": "👤 Assigned to:",
|
|
89
|
+
"unassigned": "👤 Unassigned",
|
|
90
|
+
"assignedToYou": "👤 Assigned to you",
|
|
91
|
+
"assignedToOther": "👤 Assigned to {name}",
|
|
92
|
+
"assignedHint": "This task is already assigned. Consider picking an unassigned task.",
|
|
93
|
+
"youAreAssigned": "This task is assigned to you - ready to work on!",
|
|
94
|
+
"manyInProgress": "⚠️ You have {count} tasks in progress.",
|
|
95
|
+
"considerFinishing": "💡 Tip: Consider finishing in-progress tasks before starting new ones:",
|
|
96
|
+
"benefitsOfFinishing": "Benefits of finishing first:",
|
|
97
|
+
"clearProgress": "• Clear sense of progress",
|
|
98
|
+
"unlockTasks": "• Unlock dependent tasks",
|
|
99
|
+
"maintainFocus": "• Maintain focus and momentum",
|
|
100
|
+
"avoidSwitching": "• Avoid context switching",
|
|
101
|
+
"stillWantNew": "Still want to start something new? Here's the recommendation:",
|
|
102
|
+
"github": {
|
|
103
|
+
"branch": "Branch",
|
|
104
|
+
"issue": "Issue",
|
|
105
|
+
"pr": "PR",
|
|
106
|
+
"open": "open",
|
|
107
|
+
"closed": "closed",
|
|
108
|
+
"merged": "merged",
|
|
109
|
+
"approved": "approved",
|
|
110
|
+
"changesRequested": "changes requested",
|
|
111
|
+
"awaitingReview": "awaiting review",
|
|
112
|
+
"noActivity": "GitHub: No activity yet",
|
|
113
|
+
"createBranchHint": "Create a branch",
|
|
114
|
+
"continueWorking": "Continue working:",
|
|
115
|
+
"prAwaitingHint": "PR is awaiting review - finish the review cycle!",
|
|
116
|
+
"checkoutBranch": "Checkout branch:",
|
|
117
|
+
"addressPRComments": "Address PR review comments"
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
|
|
121
|
+
"update": {
|
|
122
|
+
"usage": "Usage: /update <task-id> <action>",
|
|
123
|
+
"actions": "Actions:",
|
|
124
|
+
"startAction": "start - Mark task as in progress (TODO → IN_PROGRESS)",
|
|
125
|
+
"doneAction": "done - Mark task as completed (ANY → DONE)",
|
|
126
|
+
"blockAction": "block - Mark task as blocked (ANY → BLOCKED)",
|
|
127
|
+
"example": "Example: /update T1.1 start",
|
|
128
|
+
"taskStarted": "Task {taskId} started",
|
|
129
|
+
"taskCompleted": "✅ Task {taskId} completed! 🎉",
|
|
130
|
+
"taskBlocked": "🚫 Task {taskId} marked as blocked",
|
|
131
|
+
"progressUpdate": "📊 Progress: {old}% → {new}% (+{delta}%)",
|
|
132
|
+
"overallStatus": "Overall Status:",
|
|
133
|
+
"total": "Total:",
|
|
134
|
+
"done": "✅ Done:",
|
|
135
|
+
"inProgress": "🔄 In Progress:",
|
|
136
|
+
"blocked": "🚫 Blocked:",
|
|
137
|
+
"remaining": "📋 Remaining:",
|
|
138
|
+
"unlockedTasks": "🔓 Unlocked tasks:",
|
|
139
|
+
"taskNotFound": "❌ Error: Task {taskId} not found in PROJECT_PLAN.md",
|
|
140
|
+
"availableTasks": "Available tasks:",
|
|
141
|
+
"checkTasksSection": "Tip: Check the \"Tasks & Implementation Plan\" section for valid task IDs.",
|
|
142
|
+
"planNotFound": "❌ Error: PROJECT_PLAN.md not found in current directory.",
|
|
143
|
+
"runPlanNew": "Please run /new first to create a project plan.",
|
|
144
|
+
"nowWorkingOn": "You're now working on:",
|
|
145
|
+
"whenFinished": "Run /update {taskId} done when finished.",
|
|
146
|
+
"tipDocumentBlocker": "💡 Tip: Document the blocker in the task description:",
|
|
147
|
+
"whatBlocking": "- What is blocking this task?",
|
|
148
|
+
"whatNeeded": "- What needs to happen to unblock it?",
|
|
149
|
+
"whoCanHelp": "- Who can help resolve this?",
|
|
150
|
+
"considerNewTask": "Consider creating a new task to resolve the blocker.",
|
|
151
|
+
"nextSuggestion": "🎯 Next: /next (get recommendation)",
|
|
152
|
+
"autoSyncing": "☁️ Auto-syncing to cloud...",
|
|
153
|
+
"autoSyncSuccess": "☁️ ✅ Synced to cloud",
|
|
154
|
+
"autoSyncFailed": "☁️ ⚠️ Cloud sync failed (local update succeeded)",
|
|
155
|
+
"autoSyncTokenExpired": " Token may be expired. Run /login to re-authenticate.",
|
|
156
|
+
"autoSyncTaskNotFound": " Task not found on cloud. Run /sync push to sync full plan.",
|
|
157
|
+
"autoSyncTryLater": " Try /sync push later to manually sync.",
|
|
158
|
+
"hybridSyncing": "🔄 Syncing with cloud (hybrid mode)...",
|
|
159
|
+
"hybridPulling": " ↓ Pulling cloud state...",
|
|
160
|
+
"hybridPushing": " ↑ Pushing local changes...",
|
|
161
|
+
"hybridNoConflict": " ✓ No conflicts detected",
|
|
162
|
+
"hybridAutoMerge": " ✓ Auto-merged changes",
|
|
163
|
+
"hybridConflict": " ⚠️ Conflict detected!",
|
|
164
|
+
"hybridTaskNew": " → Task is new, pushing...",
|
|
165
|
+
"hybridPullFailed": " ⚠️ Could not fetch cloud state",
|
|
166
|
+
"hybridLocalOnly": " → Changes saved locally only",
|
|
167
|
+
"hybridSyncSuccess": "☁️ ✅ Synced to cloud (hybrid)",
|
|
168
|
+
"hybridPushFailed": "☁️ ⚠️ Push failed",
|
|
169
|
+
"hybridConflictDetected": "⚠️ Sync Conflict Detected!",
|
|
170
|
+
"hybridConflictHint": "💡 To resolve:",
|
|
171
|
+
"hybridLocalSaved": "📝 Local changes saved to PROJECT_PLAN.md",
|
|
172
|
+
"hybridConflictMessage": "Task was modified on cloud. Use /sync to resolve.",
|
|
173
|
+
"hybridOffline": " ⚠️ Network unavailable",
|
|
174
|
+
"hybridQueued": " 📤 Queued for sync when online ({count} pending)",
|
|
175
|
+
"hybridProcessingQueue": "📤 Processing {count} pending changes...",
|
|
176
|
+
"hybridQueueSuccess": " ✓ {count} pending changes synced",
|
|
177
|
+
"hybridQueueFailed": " ⚠️ {count} changes failed to sync",
|
|
178
|
+
"hybridQueueConflicts": " ⚠️ {count} conflicts need resolution",
|
|
179
|
+
"hybridSyncWhenOnline": "💡 Run /sync when back online to push changes",
|
|
180
|
+
"assignedToYou": "👤 This task is assigned to you - ready to work on!",
|
|
181
|
+
"assignedToOther": "⚠️ Task {taskId} is assigned to {name}",
|
|
182
|
+
"assignedToOtherEmail": "({email})",
|
|
183
|
+
"assignedWarning": "This task belongs to another team member. Updating it may cause confusion.",
|
|
184
|
+
"assignedOptions": "Options:",
|
|
185
|
+
"assignedForceHint": "1. Use --force to update anyway: /planUpdate {taskId} {action} --force",
|
|
186
|
+
"assignedUnassignHint": "2. Unassign first: /pfUnassign {taskId}",
|
|
187
|
+
"assignedAskHint": "3. Ask them to update it",
|
|
188
|
+
"assignedWorkloadTip": "💡 Tip: Check /pfWorkload to see team task distribution",
|
|
189
|
+
"assignmentCheckFailed": "⚠️ Could not check task assignment",
|
|
190
|
+
"forceSkipping": "⚡ Force flag detected - skipping assignment check",
|
|
191
|
+
"presenceBroadcasting": "🔄 Broadcasting status to team...",
|
|
192
|
+
"presenceWorkingOn": "🟢 Broadcasting: Working on {taskId} to team members",
|
|
193
|
+
"presenceCompleted": "🟢 Broadcasting: {taskId} completed to team members",
|
|
194
|
+
"presenceBlocked": "🟢 Broadcasting: {taskId} blocked to team members",
|
|
195
|
+
"presenceQueued": "📤 Presence update queued (will broadcast when connected)",
|
|
196
|
+
"presenceFailed": "⚠️ Could not broadcast presence (local update succeeded)"
|
|
197
|
+
},
|
|
198
|
+
|
|
199
|
+
"export": {
|
|
200
|
+
"usage": "Usage: /export <format>",
|
|
201
|
+
"formats": "Supported formats:",
|
|
202
|
+
"githubFormat": "github - Create GitHub Issues with labels",
|
|
203
|
+
"jsonFormat": "json - Export to JSON file",
|
|
204
|
+
"summaryFormat": "summary - Create Markdown summary",
|
|
205
|
+
"csvFormat": "csv - Export as CSV",
|
|
206
|
+
"example": "Example: /export json",
|
|
207
|
+
"invalidFormat": "❌ Invalid format: {format}",
|
|
208
|
+
"creatingIssues": "Creating GitHub Issues...",
|
|
209
|
+
"created": "✅ Created:",
|
|
210
|
+
"exportSummary": "📊 Export Summary:",
|
|
211
|
+
"totalIssues": "• Total Issues Created: {count}",
|
|
212
|
+
"labelsCreated": "🏷️ Labels Created:",
|
|
213
|
+
"viewIssues": "🔗 View all issues:",
|
|
214
|
+
"visitUrl": "Or visit:",
|
|
215
|
+
"writingJson": "Writing JSON export...",
|
|
216
|
+
"exportedTo": "✅ Exported to: {filename}",
|
|
217
|
+
"exportDetails": "📊 Export Details:",
|
|
218
|
+
"project": "• Project: {name}",
|
|
219
|
+
"tasks": "• Tasks: {count} total",
|
|
220
|
+
"phases": "• Phases: {count}",
|
|
221
|
+
"format": "• Format: {format}",
|
|
222
|
+
"useFor": "💡 Use this file for:",
|
|
223
|
+
"customIntegrations": "• Custom integrations",
|
|
224
|
+
"dataAnalysis": "• Data analysis",
|
|
225
|
+
"importingTools": "• Importing into other tools",
|
|
226
|
+
"versionControl": "• Version control tracking",
|
|
227
|
+
"viewFile": "View file: cat {filename}",
|
|
228
|
+
"ghNotFound": "❌ GitHub CLI not found.",
|
|
229
|
+
"ghInstall": "To export to GitHub Issues, install GitHub CLI:",
|
|
230
|
+
"ghUrl": "https://cli.github.com/",
|
|
231
|
+
"ghNotAuth": "❌ GitHub CLI not authenticated.",
|
|
232
|
+
"ghAuthCommand": "Please run: gh auth login"
|
|
233
|
+
},
|
|
234
|
+
|
|
235
|
+
"spec": {
|
|
236
|
+
"welcome": "📄 Technical Specification Analyzer",
|
|
237
|
+
"intro": "I'll analyze your specification document and create a comprehensive project plan.",
|
|
238
|
+
"analyzing": "Analyzing document...",
|
|
239
|
+
"readingFile": "Reading specification file...",
|
|
240
|
+
"fileNotFound": "❌ Error: Specification file not found: {path}",
|
|
241
|
+
"usageHint": "Usage: /spec <path-to-spec-file>",
|
|
242
|
+
"usageExample": "Example: /spec ./TECHNICAL_SPEC.md",
|
|
243
|
+
|
|
244
|
+
"analysisComplete": "📊 Analysis Complete!",
|
|
245
|
+
"foundInfo": "Found Information:",
|
|
246
|
+
"projectName": "📌 Project Name:",
|
|
247
|
+
"projectType": "📁 Project Type:",
|
|
248
|
+
"featuresFound": "✨ Features Found:",
|
|
249
|
+
"techMentioned": "🛠️ Technologies Mentioned:",
|
|
250
|
+
"usersIdentified": "👥 Users/Roles Identified:",
|
|
251
|
+
"constraintsFound": "⚠️ Constraints/Requirements:",
|
|
252
|
+
|
|
253
|
+
"missingInfo": "❓ Need Clarification:",
|
|
254
|
+
"missingTechStack": "Tech stack not fully specified",
|
|
255
|
+
"missingAuth": "Authentication requirements unclear",
|
|
256
|
+
"missingPriority": "Feature priorities not defined",
|
|
257
|
+
"missingDeployment": "Deployment/hosting not specified",
|
|
258
|
+
|
|
259
|
+
"clarifyingQuestions": "I have some clarifying questions based on the specification:",
|
|
260
|
+
"selectTechStack": "Which technologies would you like to use?",
|
|
261
|
+
"selectPriority": "Which features should be in MVP (Phase 1)?",
|
|
262
|
+
"selectAuth": "What authentication method?",
|
|
263
|
+
"selectHosting": "Where will this be deployed?",
|
|
264
|
+
|
|
265
|
+
"generating": "Generating project plan from specification...",
|
|
266
|
+
"success": "✅ Project plan created from specification!",
|
|
267
|
+
"basedOn": "📄 Based on: {filename}",
|
|
268
|
+
"featuresExtracted": "✨ Features extracted: {count}",
|
|
269
|
+
"tasksGenerated": "📋 Tasks generated: {count}",
|
|
270
|
+
"phasesCreated": "🎯 Phases created: {count}",
|
|
271
|
+
|
|
272
|
+
"specIncluded": "Specification analysis included in plan",
|
|
273
|
+
"reviewRecommended": "💡 Review the plan and adjust task details as needed",
|
|
274
|
+
|
|
275
|
+
"planExists": "⚠️ PROJECT_PLAN.md already exists in this directory.",
|
|
276
|
+
"overwriteQuestion": "What would you like to do?",
|
|
277
|
+
"overwriteOption": "Overwrite existing plan",
|
|
278
|
+
"overwriteDesc": "Replace with new plan from specification",
|
|
279
|
+
"keepOption": "Keep existing plan",
|
|
280
|
+
"keepDesc": "Cancel and keep current plan",
|
|
281
|
+
"renameOption": "Save with different name",
|
|
282
|
+
"renameDesc": "Save as PROJECT_PLAN_SPEC.md"
|
|
283
|
+
},
|
|
284
|
+
|
|
285
|
+
"login": {
|
|
286
|
+
"welcome": "🔐 Welcome to PlanFlow Cloud!",
|
|
287
|
+
"tokenPrompt": "Please enter your API token:",
|
|
288
|
+
"tokenHint": "Get your token at: https://planflow.tools/dashboard/settings/tokens",
|
|
289
|
+
"validating": "Validating token...",
|
|
290
|
+
"success": "✅ Successfully logged in to PlanFlow!",
|
|
291
|
+
"invalidToken": "❌ Invalid API token. Please check and try again.",
|
|
292
|
+
"alreadyLoggedIn": "⚠️ You are already logged in as {email}",
|
|
293
|
+
"logoutFirst": "Run /logout first to switch accounts.",
|
|
294
|
+
"user": "User:",
|
|
295
|
+
"email": "Email:",
|
|
296
|
+
"token": "Token:",
|
|
297
|
+
"nowYouCan": "🎉 You can now use:",
|
|
298
|
+
"syncCommand": "• /sync - Sync PROJECT_PLAN.md with cloud",
|
|
299
|
+
"cloudCommand": "• /cloud - Manage cloud projects",
|
|
300
|
+
"statusCommand": "• /status - Check sync status"
|
|
301
|
+
},
|
|
302
|
+
|
|
303
|
+
"logout": {
|
|
304
|
+
"success": "✅ Successfully logged out from PlanFlow.",
|
|
305
|
+
"notLoggedIn": "⚠️ You are not currently logged in.",
|
|
306
|
+
"cleared": "Credentials cleared from {scope} config.",
|
|
307
|
+
"local": "local",
|
|
308
|
+
"global": "global"
|
|
309
|
+
},
|
|
310
|
+
|
|
311
|
+
"whoami": {
|
|
312
|
+
"title": "👤 Current User",
|
|
313
|
+
"name": "Name:",
|
|
314
|
+
"email": "Email:",
|
|
315
|
+
"userId": "User ID:",
|
|
316
|
+
"apiUrl": "API URL:",
|
|
317
|
+
"status": "Status:",
|
|
318
|
+
"connected": "✅ Connected",
|
|
319
|
+
"notConnected": "❌ Not connected",
|
|
320
|
+
"cloudStats": "📊 Cloud Stats:",
|
|
321
|
+
"projects": "Projects:",
|
|
322
|
+
"lastSync": "Last Sync:",
|
|
323
|
+
"notLoggedIn": "❌ Not logged in to PlanFlow.",
|
|
324
|
+
"loginHint": "Run /login to authenticate."
|
|
325
|
+
},
|
|
326
|
+
|
|
327
|
+
"sync": {
|
|
328
|
+
"title": "🔄 Sync",
|
|
329
|
+
"pushing": "Pushing local changes to cloud...",
|
|
330
|
+
"pulling": "Pulling cloud changes to local...",
|
|
331
|
+
"conflict": "⚠️ Conflict detected!",
|
|
332
|
+
"conflictDetails": "Both local and cloud have been modified since last sync.",
|
|
333
|
+
"conflictOptions": "Choose how to resolve:",
|
|
334
|
+
"keepLocal": "Keep local version",
|
|
335
|
+
"keepCloud": "Keep cloud version",
|
|
336
|
+
"success": "✅ Sync completed successfully!",
|
|
337
|
+
"pushSuccess": "✅ Changes pushed to cloud!",
|
|
338
|
+
"pullSuccess": "✅ Changes pulled from cloud!",
|
|
339
|
+
"noChanges": "No changes to sync.",
|
|
340
|
+
"notAuthenticated": "❌ Not authenticated. Run /login first.",
|
|
341
|
+
"notLinked": "❌ Project not linked to cloud. Run /cloud link first.",
|
|
342
|
+
"status": "📊 Sync Status",
|
|
343
|
+
"localFile": "Local:",
|
|
344
|
+
"cloudProject": "Cloud:",
|
|
345
|
+
"syncStatus": "Status:",
|
|
346
|
+
"upToDate": "✅ Up to date",
|
|
347
|
+
"localAhead": "⚠️ Local changes not synced",
|
|
348
|
+
"cloudAhead": "⚠️ Cloud has newer changes",
|
|
349
|
+
"changes": "Changes:",
|
|
350
|
+
"tasksCompleted": "+ {count} tasks completed locally",
|
|
351
|
+
"tasksChanged": "~ {count} task statuses changed",
|
|
352
|
+
"runPush": "Run /sync push to upload changes",
|
|
353
|
+
"runPull": "Run /sync pull to download changes",
|
|
354
|
+
"lastSyncedAt": "Last synced:",
|
|
355
|
+
"never": "Never"
|
|
356
|
+
},
|
|
357
|
+
|
|
358
|
+
"cloud": {
|
|
359
|
+
"title": "☁️ Cloud Projects",
|
|
360
|
+
"listProjects": "☁️ Your Cloud Projects",
|
|
361
|
+
"noProjects": "No cloud projects found.",
|
|
362
|
+
"createFirst": "Create your first project with /cloud new",
|
|
363
|
+
"selectProject": "Select a project to link:",
|
|
364
|
+
"linkSuccess": "✅ Project linked successfully!",
|
|
365
|
+
"linkDetails": "Local PROJECT_PLAN.md is now linked to:",
|
|
366
|
+
"unlinkSuccess": "✅ Project unlinked.",
|
|
367
|
+
"unlinkDetails": "Local project is no longer linked to cloud.",
|
|
368
|
+
"notLinked": "⚠️ No project currently linked.",
|
|
369
|
+
"currentProject": "📍 Current:",
|
|
370
|
+
"commands": "💡 Commands:",
|
|
371
|
+
"linkCommand": "/cloud link <id> - Link local project",
|
|
372
|
+
"unlinkCommand": "/cloud unlink - Unlink current project",
|
|
373
|
+
"newCommand": "/cloud new - Create cloud project",
|
|
374
|
+
"creating": "Creating cloud project...",
|
|
375
|
+
"createSuccess": "✅ Cloud project created!",
|
|
376
|
+
"projectName": "Project:",
|
|
377
|
+
"projectId": "ID:",
|
|
378
|
+
"syncNow": "Run /sync push to upload your plan.",
|
|
379
|
+
"tableId": "ID",
|
|
380
|
+
"tableName": "Name",
|
|
381
|
+
"tableTasks": "Tasks",
|
|
382
|
+
"tableProgress": "Progress",
|
|
383
|
+
"tableUpdated": "Last Updated"
|
|
384
|
+
},
|
|
385
|
+
|
|
386
|
+
"settings": {
|
|
387
|
+
"title": "⚙️ Plan Plugin Settings",
|
|
388
|
+
"currentConfig": "Current Configuration:",
|
|
389
|
+
"language": "🌍 Language:",
|
|
390
|
+
"lastUsed": "📅 Last Used:",
|
|
391
|
+
"availableCommands": "Available Commands:",
|
|
392
|
+
"changeLanguage": "/settings language - Change language",
|
|
393
|
+
"reset": "/settings reset - Reset to defaults",
|
|
394
|
+
"selectLanguage": "Select your preferred language:",
|
|
395
|
+
"languageHeader": "Language",
|
|
396
|
+
"englishOption": "English",
|
|
397
|
+
"englishDesc": "Use English for all plugin interactions",
|
|
398
|
+
"georgianOption": "ქართული (Georgian)",
|
|
399
|
+
"georgianDesc": "გამოიყენე ქართული ყველა ურთიერთქმედებისთვის",
|
|
400
|
+
"russianOption": "Русский (Russian)",
|
|
401
|
+
"russianDesc": "Использовать русский язык",
|
|
402
|
+
"settingsUpdated": "✅ Settings updated!",
|
|
403
|
+
"languageChanged": "Language changed: {from} → {to}",
|
|
404
|
+
"newLanguageUsedFor": "The new language will be used for:",
|
|
405
|
+
"commandOutputs": "• All command outputs",
|
|
406
|
+
"wizardQuestions": "• Wizard questions",
|
|
407
|
+
"generatedPlans": "• Generated PROJECT_PLAN.md files",
|
|
408
|
+
"tryIt": "Try it: /new",
|
|
409
|
+
"projectScope": "Project-specific settings saved",
|
|
410
|
+
"globalScope": "Global settings saved",
|
|
411
|
+
"projectSettingsRemoved": "Project-specific settings removed",
|
|
412
|
+
"nowUsing": "Now using",
|
|
413
|
+
"globalSettingsReset": "Global settings reset to defaults",
|
|
414
|
+
"autoSyncTitle": "Auto-Sync Settings",
|
|
415
|
+
"autoSyncStatus": "Status",
|
|
416
|
+
"autoSyncEnabled": "Enabled",
|
|
417
|
+
"autoSyncDisabled": "Disabled",
|
|
418
|
+
"autoSyncUsage": "Usage",
|
|
419
|
+
"autoSyncEnableHint": "Enable auto-sync",
|
|
420
|
+
"autoSyncDisableHint": "Disable auto-sync",
|
|
421
|
+
"autoSyncDescription": "When enabled, /update commands will automatically sync changes to PlanFlow cloud.",
|
|
422
|
+
"autoSyncNotAuthenticated": "Auto-sync requires authentication.",
|
|
423
|
+
"autoSyncLoginFirst": "Please login first:",
|
|
424
|
+
"autoSyncInvalidValue": "Invalid value. Use 'on' or 'off'.",
|
|
425
|
+
"autoSyncEnabledSuccess": "Auto-sync enabled!",
|
|
426
|
+
"autoSyncNowEnabled": "Changes will now sync automatically after /update commands.",
|
|
427
|
+
"autoSyncWhatHappens": "What happens",
|
|
428
|
+
"autoSyncAutoUpload": "Changes uploaded to cloud automatically",
|
|
429
|
+
"autoSyncDisabledSuccess": "Auto-sync disabled!",
|
|
430
|
+
"autoSyncNowDisabled": "Changes will no longer sync automatically.",
|
|
431
|
+
"autoSyncManualSync": "To sync manually",
|
|
432
|
+
"storageModeTitle": "Storage Mode Settings",
|
|
433
|
+
"storageModeLabel": "Storage Mode:",
|
|
434
|
+
"storageModeLocal": "Local",
|
|
435
|
+
"storageModeCloud": "Cloud",
|
|
436
|
+
"storageModeHybrid": "Hybrid",
|
|
437
|
+
"storageModeLocalDesc": "PROJECT_PLAN.md only, no automatic sync",
|
|
438
|
+
"storageModeCloudDesc": "Cloud is source of truth, local is cache",
|
|
439
|
+
"storageModeHybridDesc": "Both local and cloud with smart merge (recommended)",
|
|
440
|
+
"storageModeChanged": "Storage mode changed: {from} → {to}",
|
|
441
|
+
"storageModeSetTo": "Storage mode set to: {mode}",
|
|
442
|
+
"storageModeUsage": "/settings storage <mode>",
|
|
443
|
+
"storageModeOptions": "Options: local, cloud, hybrid",
|
|
444
|
+
"storageModeInvalidValue": "Invalid storage mode. Use 'local', 'cloud', or 'hybrid'.",
|
|
445
|
+
"storageModeNotAuthenticated": "Storage mode 'cloud' and 'hybrid' require authentication.",
|
|
446
|
+
"storageModeLoginFirst": "Please run /login first to use cloud features.",
|
|
447
|
+
"storageModeCurrently": "Current storage mode:",
|
|
448
|
+
"storageModeLocalBehavior": "• Changes saved to PROJECT_PLAN.md only\n• No automatic cloud sync\n• Use /sync push to manually sync",
|
|
449
|
+
"storageModeCloudBehavior": "• Cloud is authoritative source\n• Local file is a cache\n• All changes sync immediately",
|
|
450
|
+
"storageModeHybridBehavior": "• Both local and cloud kept in sync\n• Smart merge for concurrent changes\n• Works offline, syncs when online",
|
|
451
|
+
"notificationsSubcommand": "View notification settings",
|
|
452
|
+
"backToSettings": "Back to general settings"
|
|
453
|
+
},
|
|
454
|
+
|
|
455
|
+
"assign": {
|
|
456
|
+
"title": "Task Assignment",
|
|
457
|
+
"usage": "Usage:",
|
|
458
|
+
"usageEmail": "Assign to team member by email",
|
|
459
|
+
"usageMe": "Assign to yourself",
|
|
460
|
+
"example": "Examples:",
|
|
461
|
+
"success": "Task assigned!",
|
|
462
|
+
"task": "Task:",
|
|
463
|
+
"assignedTo": "Assigned to:",
|
|
464
|
+
"project": "Project:",
|
|
465
|
+
"selfAssignHint": "Ready to start working? Run:",
|
|
466
|
+
"notifyHint": "They'll be notified of this assignment.",
|
|
467
|
+
"invalidTaskId": "Invalid task ID format.",
|
|
468
|
+
"taskIdExample": "Task ID should be like: T1.1, T2.3, T10.5",
|
|
469
|
+
"invalidEmail": "Invalid email format.",
|
|
470
|
+
"emailExample": "Example: jane@company.com or use 'me'",
|
|
471
|
+
"taskNotFound": "Task not found.",
|
|
472
|
+
"checkTaskId": "Make sure the task exists. Run /pfSyncPush to sync your local tasks.",
|
|
473
|
+
"userNotMember": "User is not a team member.",
|
|
474
|
+
"notMemberHint": "is not part of this project.",
|
|
475
|
+
"inviteFirst": "Invite them first:",
|
|
476
|
+
"noPermission": "You don't have permission to assign tasks.",
|
|
477
|
+
"noPermissionHint": "Only editors and above can assign tasks.",
|
|
478
|
+
"alreadyAssigned": "Task is already assigned.",
|
|
479
|
+
"reassignHint": "To reassign:",
|
|
480
|
+
"tryAgain": "Please check your connection and try again."
|
|
481
|
+
},
|
|
482
|
+
|
|
483
|
+
"myTasks": {
|
|
484
|
+
"title": "My Assigned Tasks",
|
|
485
|
+
"noTasks": "You don't have any assigned tasks.",
|
|
486
|
+
"noTasksHint": "To find tasks to work on:",
|
|
487
|
+
"orAssign": "Or assign yourself a task:",
|
|
488
|
+
"inProgress": "In Progress",
|
|
489
|
+
"blocked": "Blocked",
|
|
490
|
+
"todo": "To Do",
|
|
491
|
+
"done": "Completed",
|
|
492
|
+
"quickActions": "Quick actions:",
|
|
493
|
+
"markDone": "Mark current task as done",
|
|
494
|
+
"startWorking": "Start working on task",
|
|
495
|
+
"invalidStatus": "Invalid status filter.",
|
|
496
|
+
"validStatuses": "Valid statuses: todo, in_progress, done, blocked",
|
|
497
|
+
"tryAgain": "Please check your connection and try again.",
|
|
498
|
+
"filterHint": "Filter by status:",
|
|
499
|
+
"showAllHint": "Include completed tasks:"
|
|
500
|
+
},
|
|
501
|
+
|
|
502
|
+
"workload": {
|
|
503
|
+
"title": "Team Workload",
|
|
504
|
+
"totalTasks": "Total Tasks",
|
|
505
|
+
"tasks": "tasks",
|
|
506
|
+
"task": "task",
|
|
507
|
+
"inProgress": "in progress",
|
|
508
|
+
"unassigned": "Unassigned",
|
|
509
|
+
"summary": "Summary",
|
|
510
|
+
"avgPerMember": "Average per member",
|
|
511
|
+
"unbalancedHint": "Tip: Workload appears unbalanced. Consider redistributing tasks.",
|
|
512
|
+
"unassignedHint": "Tip: Multiple tasks are unassigned. Consider distributing them:",
|
|
513
|
+
"detailedBreakdown": "Detailed Breakdown",
|
|
514
|
+
"unassignedTasks": "Unassigned Tasks",
|
|
515
|
+
"andMore": "and {count} more",
|
|
516
|
+
"onlyYouHint": "You're the only team member.",
|
|
517
|
+
"inviteHint": "To distribute workload, invite team members:",
|
|
518
|
+
"noTasks": "No tasks found in this project.",
|
|
519
|
+
"createTasksHint": "Create tasks with /planNew or sync from local plan.",
|
|
520
|
+
"tryAgain": "Please check your connection and try again."
|
|
521
|
+
},
|
|
522
|
+
|
|
523
|
+
"unassign": {
|
|
524
|
+
"title": "Task Unassignment",
|
|
525
|
+
"usage": "Usage:",
|
|
526
|
+
"usageDesc": "Remove assignment from task",
|
|
527
|
+
"example": "Example:",
|
|
528
|
+
"success": "Assignment removed!",
|
|
529
|
+
"task": "Task:",
|
|
530
|
+
"removedFrom": "Removed from:",
|
|
531
|
+
"project": "Project:",
|
|
532
|
+
"reassignHint": "To reassign this task:",
|
|
533
|
+
"invalidTaskId": "Invalid task ID format.",
|
|
534
|
+
"taskIdExample": "Task ID should be like: T1.1, T2.3, T10.5",
|
|
535
|
+
"taskNotFound": "Task not found.",
|
|
536
|
+
"checkTaskId": "Make sure the task exists. Run /pfSyncPush to sync your local tasks.",
|
|
537
|
+
"notAssigned": "Task has no assignee.",
|
|
538
|
+
"notAssignedHint": "This task is not currently assigned to anyone.",
|
|
539
|
+
"assignHint": "To assign this task:",
|
|
540
|
+
"noPermission": "You don't have permission to unassign tasks.",
|
|
541
|
+
"noPermissionHint": "Only editors and above can modify task assignments.",
|
|
542
|
+
"tryAgain": "Please check your connection and try again."
|
|
543
|
+
},
|
|
544
|
+
|
|
545
|
+
"comments": {
|
|
546
|
+
"title": "Comments",
|
|
547
|
+
"usage": "Usage:",
|
|
548
|
+
"usageDesc": "View comments on task",
|
|
549
|
+
"usageAllDesc": "Include all comments",
|
|
550
|
+
"example": "Example:",
|
|
551
|
+
"count": "{count} comments",
|
|
552
|
+
"noComments": "No comments yet.",
|
|
553
|
+
"addFirst": "Be the first to comment:",
|
|
554
|
+
"addComment": "Add a comment:",
|
|
555
|
+
"invalidTaskId": "Invalid task ID format.",
|
|
556
|
+
"taskIdExample": "Task ID should be like: T1.1, T2.3, T10.5",
|
|
557
|
+
"taskNotFound": "Task not found.",
|
|
558
|
+
"checkTaskId": "Make sure the task exists. Run /pfSyncPush to sync your local tasks.",
|
|
559
|
+
"noPermission": "You don't have permission to view comments.",
|
|
560
|
+
"noPermissionHint": "Only project members can view comments.",
|
|
561
|
+
"tryAgain": "Please check your connection and try again.",
|
|
562
|
+
"justNow": "just now",
|
|
563
|
+
"minutesAgo": "{count} min ago",
|
|
564
|
+
"hoursAgo": "{count} hours ago",
|
|
565
|
+
"daysAgo": "{count} days ago"
|
|
566
|
+
},
|
|
567
|
+
|
|
568
|
+
"comment": {
|
|
569
|
+
"title": "Task Comment",
|
|
570
|
+
"usage": "Usage:",
|
|
571
|
+
"usageDesc": "Add comment to task",
|
|
572
|
+
"example": "Examples:",
|
|
573
|
+
"mentionHint": "Use @email to mention and notify team members",
|
|
574
|
+
"mentionFormats": "Mention formats: @email, @username, or @first.last",
|
|
575
|
+
"success": "Comment added!",
|
|
576
|
+
"task": "Task:",
|
|
577
|
+
"author": "Author:",
|
|
578
|
+
"time": "Time:",
|
|
579
|
+
"notified": "Notified:",
|
|
580
|
+
"notifiedCount": "{count} team member(s) notified",
|
|
581
|
+
"mentionNotifyHint": "They will receive an email notification.",
|
|
582
|
+
"mentionWarning": "Some mentions were not delivered:",
|
|
583
|
+
"mentionResolving": "Resolving @mentions...",
|
|
584
|
+
"mentionResolved": "Mentions resolved: {count} valid, {invalid} invalid",
|
|
585
|
+
"viewAll": "View all comments:",
|
|
586
|
+
"invalidTaskId": "Invalid task ID format.",
|
|
587
|
+
"taskIdExample": "Task ID should be like: T1.1, T2.3, T10.5",
|
|
588
|
+
"emptyComment": "Comment cannot be empty.",
|
|
589
|
+
"commentRequired": "Please provide a comment message.",
|
|
590
|
+
"taskNotFound": "Task not found.",
|
|
591
|
+
"checkTaskId": "Make sure the task exists. Run /pfSyncPush to sync your local tasks.",
|
|
592
|
+
"mentionNotFound": "Some @mentions could not be resolved.",
|
|
593
|
+
"notTeamMember": "is not a team member.",
|
|
594
|
+
"commentAdded": "The comment was added, but they won't be notified.",
|
|
595
|
+
"inviteHint": "Invite team members first: /pfTeamInvite <email>",
|
|
596
|
+
"noPermission": "You don't have permission to comment.",
|
|
597
|
+
"noPermissionHint": "Only editors and above can add comments.",
|
|
598
|
+
"tryAgain": "Please check your connection and try again.",
|
|
599
|
+
"justNow": "just now"
|
|
600
|
+
},
|
|
601
|
+
|
|
602
|
+
"activity": {
|
|
603
|
+
"title": "Recent Activity",
|
|
604
|
+
"taskActivity": "Activity for",
|
|
605
|
+
"usage": "Usage:",
|
|
606
|
+
"usageAll": "Show recent project activity",
|
|
607
|
+
"usageTask": "Show activity for specific task",
|
|
608
|
+
"usageLimit": "Show more entries (default: 10, max: 50)",
|
|
609
|
+
"usageType": "Filter by activity type",
|
|
610
|
+
"types": "Activity types:",
|
|
611
|
+
"example": "Examples:",
|
|
612
|
+
"noActivity": "No recent activity found.",
|
|
613
|
+
"noActivityHint": "Activity will appear when team members:\n • Update task statuses\n • Add comments\n • Assign tasks\n • Join or leave the project",
|
|
614
|
+
"hasMore": "Showing {shown} of {total} activities. View more:",
|
|
615
|
+
"quickActions": "Quick actions:",
|
|
616
|
+
"viewTaskActivity": "View task activity",
|
|
617
|
+
"filterByType": "Filter by type",
|
|
618
|
+
"addComment": "Add a comment:",
|
|
619
|
+
"invalidType": "Invalid activity type.",
|
|
620
|
+
"validTypes": "Valid types: tasks, comments, assignments, team",
|
|
621
|
+
"taskNotFound": "Task not found.",
|
|
622
|
+
"checkTaskId": "Make sure the task exists. Run /pfSyncPush to sync your local tasks.",
|
|
623
|
+
"tryAgain": "Please check your connection and try again.",
|
|
624
|
+
"justNow": "just now",
|
|
625
|
+
"minutesAgo": "{count} min ago",
|
|
626
|
+
"hoursAgo": "{count} hr ago",
|
|
627
|
+
"daysAgo": "{count} days ago",
|
|
628
|
+
"markedDone": "{actor} marked {taskId} as done",
|
|
629
|
+
"startedWorking": "{actor} started working on {taskId}",
|
|
630
|
+
"blocked": "{actor} blocked {taskId}",
|
|
631
|
+
"commented": "{actor} commented on {taskId}",
|
|
632
|
+
"assigned": "{actor} assigned {taskId} to {assignee}",
|
|
633
|
+
"unassigned": "{actor} unassigned {taskId}",
|
|
634
|
+
"joinedProject": "{actor} joined the project",
|
|
635
|
+
"leftProject": "{actor} left the project",
|
|
636
|
+
"roleChanged": "{actor}'s role changed to {role}"
|
|
637
|
+
},
|
|
638
|
+
|
|
639
|
+
"react": {
|
|
640
|
+
"title": "Task Reaction",
|
|
641
|
+
"usage": "Usage:",
|
|
642
|
+
"usageAdd": "Add emoji reaction to task",
|
|
643
|
+
"usageRemove": "Remove your reaction from task",
|
|
644
|
+
"example": "Examples:",
|
|
645
|
+
"success": "Reaction added!",
|
|
646
|
+
"removed": "Reaction removed!",
|
|
647
|
+
"task": "Task:",
|
|
648
|
+
"emoji": "Emoji:",
|
|
649
|
+
"project": "Project:",
|
|
650
|
+
"currentReactions": "Current reactions:",
|
|
651
|
+
"noReactions": "No reactions yet.",
|
|
652
|
+
"addFirst": "Be the first to react!",
|
|
653
|
+
"invalidTaskId": "Invalid task ID format.",
|
|
654
|
+
"taskIdExample": "Task ID should be like: T1.1, T2.3, T10.5",
|
|
655
|
+
"invalidEmoji": "Please provide an emoji to react with.",
|
|
656
|
+
"emojiRequired": "Emoji is required.",
|
|
657
|
+
"taskNotFound": "Task not found.",
|
|
658
|
+
"checkTaskId": "Make sure the task exists. Run /pfSyncPush to sync your local tasks.",
|
|
659
|
+
"alreadyReacted": "You already reacted with this emoji.",
|
|
660
|
+
"notReacted": "You haven't reacted with this emoji.",
|
|
661
|
+
"noPermission": "You don't have permission to react.",
|
|
662
|
+
"noPermissionHint": "Only project members can add reactions.",
|
|
663
|
+
"tryAgain": "Please check your connection and try again.",
|
|
664
|
+
"viewComments": "View comments:"
|
|
665
|
+
},
|
|
666
|
+
|
|
667
|
+
"notifications": {
|
|
668
|
+
"title": "Notifications",
|
|
669
|
+
"usage": "Usage:",
|
|
670
|
+
"usageAll": "Show all notifications",
|
|
671
|
+
"usageUnread": "Show only unread notifications",
|
|
672
|
+
"usageLimit": "Show more entries (default: 10)",
|
|
673
|
+
"usageType": "Filter by notification type",
|
|
674
|
+
"types": "Notification Types:",
|
|
675
|
+
"typeMention": "When someone @mentions you",
|
|
676
|
+
"typeAssignment": "When you're assigned to a task",
|
|
677
|
+
"typeTask": "Task status changes you're watching",
|
|
678
|
+
"typeComment": "New comments on tasks you're involved in",
|
|
679
|
+
"example": "Examples:",
|
|
680
|
+
"unread": "unread",
|
|
681
|
+
"noNotifications": "No notifications.",
|
|
682
|
+
"noNotificationsHint": "You'll be notified when:",
|
|
683
|
+
"notifyMention": "When someone @mentions you in a comment",
|
|
684
|
+
"notifyAssignment": "When you're assigned to a task",
|
|
685
|
+
"notifyTask": "When tasks you're watching are updated",
|
|
686
|
+
"notifyComment": "When someone comments on your tasks",
|
|
687
|
+
"showing": "Showing {shown} of {total} notifications",
|
|
688
|
+
"mentionedYou": "{actor} mentioned you in {taskId}",
|
|
689
|
+
"assignedToYou": "You were assigned to {taskId}",
|
|
690
|
+
"assignedBy": "Assigned by: {actor}",
|
|
691
|
+
"taskCompleted": "{taskId} was completed",
|
|
692
|
+
"taskStarted": "{taskId} was started",
|
|
693
|
+
"taskBlocked": "{taskId} was blocked",
|
|
694
|
+
"completedBy": "Completed by: {actor}",
|
|
695
|
+
"startedBy": "Started by: {actor}",
|
|
696
|
+
"blockedBy": "Blocked by: {actor}",
|
|
697
|
+
"newComment": "New comment on {taskId}",
|
|
698
|
+
"markAllRead": "Mark all as read",
|
|
699
|
+
"markTaskRead": "Mark task notifications read",
|
|
700
|
+
"viewTask": "View task comments",
|
|
701
|
+
"clearSuccess": "Notifications marked as read!",
|
|
702
|
+
"clearedCount": "{count} notifications marked as read",
|
|
703
|
+
"clearTaskSuccess": "Notifications for {taskId} marked as read",
|
|
704
|
+
"nothingToClear": "No unread notifications to clear.",
|
|
705
|
+
"invalidType": "Invalid notification type.",
|
|
706
|
+
"validTypes": "Valid types: mention, assignment, task, comment",
|
|
707
|
+
"networkError": "Could not fetch notifications.",
|
|
708
|
+
"tryAgain": "Please check your connection and try again.",
|
|
709
|
+
"justNow": "just now",
|
|
710
|
+
"minutesAgo": "{count} min ago",
|
|
711
|
+
"hoursAgo": "{count} hours ago",
|
|
712
|
+
"daysAgo": "{count} days ago"
|
|
713
|
+
},
|
|
714
|
+
|
|
715
|
+
"team": {
|
|
716
|
+
"title": "Team Members",
|
|
717
|
+
"project": "Project",
|
|
718
|
+
"workingOn": "Working on",
|
|
719
|
+
"lastSeen": "Last seen",
|
|
720
|
+
"pendingInvites": "Pending Invites",
|
|
721
|
+
"commands": "Commands",
|
|
722
|
+
"inviteHint": "Invite a team member",
|
|
723
|
+
"roleHint": "Change member role",
|
|
724
|
+
"removeHint": "Remove from team",
|
|
725
|
+
"onlyYou": "You're the only team member.",
|
|
726
|
+
"invitePrompt": "To invite collaborators:",
|
|
727
|
+
"noPermission": "You don't have permission to view team members.",
|
|
728
|
+
"projectNotFound": "Project not found on cloud.",
|
|
729
|
+
"networkError": "Network error. Could not fetch team information.",
|
|
730
|
+
"authFailed": "Authentication failed. Your session may have expired.",
|
|
731
|
+
"roles": {
|
|
732
|
+
"owner": "Owner",
|
|
733
|
+
"admin": "Admin",
|
|
734
|
+
"editor": "Editor",
|
|
735
|
+
"viewer": "Viewer"
|
|
736
|
+
},
|
|
737
|
+
"invite": {
|
|
738
|
+
"title": "Team Invite",
|
|
739
|
+
"usage": "Usage:",
|
|
740
|
+
"usageDefault": "Invite with default role (editor)",
|
|
741
|
+
"usageWithRole": "Invite with specific role",
|
|
742
|
+
"availableRoles": "Available roles:",
|
|
743
|
+
"roleAdminDesc": "Full access, can manage team members",
|
|
744
|
+
"roleEditorDesc": "Can edit tasks and plan (default)",
|
|
745
|
+
"roleViewerDesc": "Read-only access",
|
|
746
|
+
"example": "Examples:",
|
|
747
|
+
"success": "Invitation sent!",
|
|
748
|
+
"to": "To:",
|
|
749
|
+
"role": "Role:",
|
|
750
|
+
"project": "Project:",
|
|
751
|
+
"emailSent": "They'll receive an email with instructions to join.",
|
|
752
|
+
"expiresHint": "The invitation expires in 7 days.",
|
|
753
|
+
"invalidEmail": "Invalid email format.",
|
|
754
|
+
"emailExample": "Example: alice@company.com",
|
|
755
|
+
"invalidRole": "Invalid role.",
|
|
756
|
+
"validRoles": "Valid roles",
|
|
757
|
+
"alreadyMember": "User is already a team member.",
|
|
758
|
+
"alreadyMemberHint": "is already part of this project.",
|
|
759
|
+
"alreadyInvited": "Invitation already pending.",
|
|
760
|
+
"pendingInviteHint": "An invitation has already been sent to this email.",
|
|
761
|
+
"noPermission": "You don't have permission to invite team members.",
|
|
762
|
+
"noPermissionHint": "Only project owners and admins can send invitations.",
|
|
763
|
+
"cannotInviteSelf": "You cannot invite yourself.",
|
|
764
|
+
"tryAgain": "Please check your connection and try again."
|
|
765
|
+
},
|
|
766
|
+
"remove": {
|
|
767
|
+
"title": "Remove Team Member",
|
|
768
|
+
"usage": "Usage:",
|
|
769
|
+
"example": "Example:",
|
|
770
|
+
"success": "Member removed from team.",
|
|
771
|
+
"member": "Member:",
|
|
772
|
+
"email": "Email:",
|
|
773
|
+
"role": "Role:",
|
|
774
|
+
"project": "Project:",
|
|
775
|
+
"accessRevoked": "They no longer have access to this project.",
|
|
776
|
+
"invalidEmail": "Invalid email format.",
|
|
777
|
+
"emailExample": "Example: bob@company.com",
|
|
778
|
+
"notFound": "Member not found.",
|
|
779
|
+
"notFoundHint": "is not a member of this project.",
|
|
780
|
+
"viewTeam": "Run /pfTeamList to see current team members.",
|
|
781
|
+
"cannotRemoveSelf": "You cannot remove yourself from the team.",
|
|
782
|
+
"cannotRemoveSelfHint": "To leave a project, ask the project owner to remove you.",
|
|
783
|
+
"cannotRemoveOwner": "Cannot remove the project owner.",
|
|
784
|
+
"cannotRemoveOwnerHint": "Project ownership must be transferred before the owner can be removed.",
|
|
785
|
+
"noPermission": "You don't have permission to remove team members.",
|
|
786
|
+
"noPermissionHint": "Only project owners and admins can remove members.",
|
|
787
|
+
"tryAgain": "Please check your connection and try again."
|
|
788
|
+
},
|
|
789
|
+
"role": {
|
|
790
|
+
"title": "Change Team Member Role",
|
|
791
|
+
"usage": "Usage:",
|
|
792
|
+
"availableRoles": "Available roles:",
|
|
793
|
+
"example": "Examples:",
|
|
794
|
+
"success": "Role updated successfully!",
|
|
795
|
+
"member": "Member:",
|
|
796
|
+
"email": "Email:",
|
|
797
|
+
"changed": "Changed:",
|
|
798
|
+
"project": "Project:",
|
|
799
|
+
"effectiveImmediately": "The new permissions are effective immediately.",
|
|
800
|
+
"invalidEmail": "Invalid email format.",
|
|
801
|
+
"emailExample": "Example: bob@company.com",
|
|
802
|
+
"invalidRole": "Invalid role.",
|
|
803
|
+
"validRoles": "Valid roles",
|
|
804
|
+
"cannotChangeOwnRole": "You cannot change your own role.",
|
|
805
|
+
"cannotChangeOwnRoleHint": "Ask another admin or the project owner to change your role.",
|
|
806
|
+
"cannotChangeOwnerRole": "Cannot change the owner's role.",
|
|
807
|
+
"cannotChangeOwnerRoleHint": "The owner role cannot be changed. Ownership must be transferred instead.",
|
|
808
|
+
"notFound": "Member not found.",
|
|
809
|
+
"notFoundHint": "is not a member of this project.",
|
|
810
|
+
"viewTeam": "Run /pfTeamList to see current team members.",
|
|
811
|
+
"sameRole": "No change needed.",
|
|
812
|
+
"alreadyHasRole": "already has the role:",
|
|
813
|
+
"noPermission": "You don't have permission to change team member roles.",
|
|
814
|
+
"noPermissionHint": "Only project owners and admins can change roles.",
|
|
815
|
+
"tryAgain": "Please check your connection and try again."
|
|
816
|
+
}
|
|
817
|
+
},
|
|
818
|
+
|
|
819
|
+
"notificationSettings": {
|
|
820
|
+
"title": "Notification Settings",
|
|
821
|
+
"channels": "Notification Channels",
|
|
822
|
+
"events": "Event Types",
|
|
823
|
+
"emailEnabled": "Email notifications enabled!",
|
|
824
|
+
"emailDisabled": "Email notifications disabled.",
|
|
825
|
+
"emailDigestEnabled": "Email daily digest enabled!",
|
|
826
|
+
"inappEnabled": "In-app notifications enabled!",
|
|
827
|
+
"inappDisabled": "In-app notifications disabled.",
|
|
828
|
+
"eventEnabled": "Event notifications enabled!",
|
|
829
|
+
"eventDisabled": "Event notifications disabled.",
|
|
830
|
+
"invalidChannel": "Invalid notification channel.",
|
|
831
|
+
"invalidEventType": "Invalid event type.",
|
|
832
|
+
"invalidToggle": "Invalid toggle value.",
|
|
833
|
+
"networkError": "Could not update notification settings.",
|
|
834
|
+
"tryAgain": "Please check your connection and try again.",
|
|
835
|
+
"emailLabel": "Email",
|
|
836
|
+
"inappLabel": "In-app",
|
|
837
|
+
"slackLabel": "Slack",
|
|
838
|
+
"discordLabel": "Discord",
|
|
839
|
+
"modeImmediate": "Immediate",
|
|
840
|
+
"modeDigest": "Daily digest",
|
|
841
|
+
"notConfigured": "Not configured",
|
|
842
|
+
"eventAssigned": "Task assigned to me",
|
|
843
|
+
"eventMention": "Mentioned in comment",
|
|
844
|
+
"eventWatching": "Task I'm watching updated",
|
|
845
|
+
"eventTeam": "All team activity",
|
|
846
|
+
"eventTypes": "Event types",
|
|
847
|
+
"validChannels": "Valid channels",
|
|
848
|
+
"validEvents": "Valid event types",
|
|
849
|
+
"validValues": "Valid values"
|
|
850
|
+
}
|
|
851
|
+
},
|
|
852
|
+
|
|
853
|
+
"wizard": {
|
|
854
|
+
"projectTypes": {
|
|
855
|
+
"fullstack": "Full-Stack Web App",
|
|
856
|
+
"fullstackDesc": "Complete web application with frontend and backend",
|
|
857
|
+
"backend": "Backend API",
|
|
858
|
+
"backendDesc": "REST/GraphQL API server only",
|
|
859
|
+
"frontend": "Frontend SPA",
|
|
860
|
+
"frontendDesc": "Single Page Application (React, Vue, Angular, etc.)",
|
|
861
|
+
"mobile": "Mobile App",
|
|
862
|
+
"mobileDesc": "iOS/Android application",
|
|
863
|
+
"cli": "CLI Tool",
|
|
864
|
+
"cliDesc": "Command-line application",
|
|
865
|
+
"library": "Library/Package",
|
|
866
|
+
"libraryDesc": "Reusable code library"
|
|
867
|
+
}
|
|
868
|
+
},
|
|
869
|
+
|
|
870
|
+
"smartMerge": {
|
|
871
|
+
"conflictTitle": "⚠️ Sync Conflict Detected!",
|
|
872
|
+
"taskLabel": "Task:",
|
|
873
|
+
"localVersion": "LOCAL",
|
|
874
|
+
"cloudVersion": "CLOUD",
|
|
875
|
+
"statusLabel": "Status:",
|
|
876
|
+
"timeLabel": "Time:",
|
|
877
|
+
"authorLabel": "Author:",
|
|
878
|
+
"you": "You",
|
|
879
|
+
"chooseVersion": "Which version to keep?",
|
|
880
|
+
"keepLocal": "Keep local",
|
|
881
|
+
"keepCloud": "Keep cloud",
|
|
882
|
+
"cancel": "Cancel",
|
|
883
|
+
"conflictResolved": "✅ Conflict resolved!",
|
|
884
|
+
"kept": "Kept {version} version",
|
|
885
|
+
"mergeTitle": "Smart Merge Results",
|
|
886
|
+
"autoMerged": "Auto-merged:",
|
|
887
|
+
"conflicts": "Conflicts:",
|
|
888
|
+
"unchanged": "No changes:",
|
|
889
|
+
"newTasks": "New tasks:",
|
|
890
|
+
"resolveHint": "Run /sync resolve to fix conflicts",
|
|
891
|
+
"nothingToMerge": "Nothing to merge - already in sync",
|
|
892
|
+
"mergeComplete": "Merge complete!",
|
|
893
|
+
"tasksPushed": "{count} tasks pushed to cloud",
|
|
894
|
+
"tasksPulled": "{count} tasks pulled from cloud",
|
|
895
|
+
"tasksSkipped": "{count} tasks unchanged"
|
|
896
|
+
},
|
|
897
|
+
|
|
898
|
+
"conflict": {
|
|
899
|
+
"baseVersion": "Base version",
|
|
900
|
+
"syncedAt": "synced",
|
|
901
|
+
"resolveHeader": "Conflict",
|
|
902
|
+
"keepLocalDesc": "Push your local status to cloud, overwriting cloud version",
|
|
903
|
+
"keepCloudDesc": "Pull cloud status to local, overwriting your changes",
|
|
904
|
+
"cancelDesc": "Keep both versions as-is, resolve later",
|
|
905
|
+
"resolvingLocal": "Pushing local version to cloud...",
|
|
906
|
+
"resolvingCloud": "Updating local file with cloud version...",
|
|
907
|
+
"resolveFailed": "❌ Failed to resolve conflict. Please try again.",
|
|
908
|
+
"cancelled": "❌ Conflict resolution cancelled.",
|
|
909
|
+
"noChangesMade": "No changes were made. Both versions remain as-is.",
|
|
910
|
+
"toResolve": "To resolve later:",
|
|
911
|
+
"forceLocalDesc": "Overwrite cloud with local",
|
|
912
|
+
"forceCloudDesc": "Overwrite local with cloud",
|
|
913
|
+
"multipleTitle": "⚠️ Multiple Conflicts Detected!",
|
|
914
|
+
"foundConflicts": "Found {count} task conflicts:",
|
|
915
|
+
"resolveOneByOne": "To resolve:",
|
|
916
|
+
"resolveInteractive": "Resolve each conflict interactively",
|
|
917
|
+
"forceAllLocal": "Keep all local versions",
|
|
918
|
+
"forceAllCloud": "Keep all cloud versions",
|
|
919
|
+
"diffTitle": "📝 Conflict Details",
|
|
920
|
+
"timeline": "Timeline",
|
|
921
|
+
"localBranch": "Local changes",
|
|
922
|
+
"cloudBranch": "Cloud changes",
|
|
923
|
+
"networkError": "❌ Network error during conflict resolution.",
|
|
924
|
+
"localUnchanged": "Your local changes are unchanged.",
|
|
925
|
+
"tryAgainLater": "Try again later:",
|
|
926
|
+
"staleConflict": "⚠️ Conflict data may be stale.",
|
|
927
|
+
"refreshSync": "Refresh sync status:",
|
|
928
|
+
"agoMinutes": "{count} min ago",
|
|
929
|
+
"agoHours": "{count} hr ago",
|
|
930
|
+
"agoDays": "{count} days ago",
|
|
931
|
+
"justNow": "just now"
|
|
932
|
+
},
|
|
933
|
+
|
|
934
|
+
"templates": {
|
|
935
|
+
"sections": {
|
|
936
|
+
"overview": "Overview",
|
|
937
|
+
"problemStatement": "Problem Statement",
|
|
938
|
+
"architecture": "Architecture",
|
|
939
|
+
"techStack": "Tech Stack",
|
|
940
|
+
"projectStructure": "Project Structure",
|
|
941
|
+
"tasks": "Tasks & Implementation Plan",
|
|
942
|
+
"progress": "Progress Tracking",
|
|
943
|
+
"successCriteria": "Success Criteria",
|
|
944
|
+
"technicalNotes": "Technical Decisions & Notes",
|
|
945
|
+
"resources": "Resources & References",
|
|
946
|
+
"risks": "Risk Management",
|
|
947
|
+
"futureEnhancements": "Future Enhancements"
|
|
948
|
+
},
|
|
949
|
+
|
|
950
|
+
"complexity": {
|
|
951
|
+
"low": "Low",
|
|
952
|
+
"medium": "Medium",
|
|
953
|
+
"high": "High"
|
|
954
|
+
},
|
|
955
|
+
|
|
956
|
+
"status": {
|
|
957
|
+
"todo": "TODO",
|
|
958
|
+
"inProgress": "IN_PROGRESS",
|
|
959
|
+
"done": "DONE",
|
|
960
|
+
"blocked": "BLOCKED"
|
|
961
|
+
},
|
|
962
|
+
|
|
963
|
+
"fields": {
|
|
964
|
+
"projectName": "Project Name",
|
|
965
|
+
"description": "Description",
|
|
966
|
+
"targetUsers": "Target Users",
|
|
967
|
+
"projectType": "Project Type",
|
|
968
|
+
"status": "Status",
|
|
969
|
+
"complexity": "Complexity",
|
|
970
|
+
"estimated": "Estimated",
|
|
971
|
+
"dependencies": "Dependencies",
|
|
972
|
+
"phase": "Phase"
|
|
973
|
+
}
|
|
974
|
+
},
|
|
975
|
+
|
|
976
|
+
"ui": {
|
|
977
|
+
"components": {
|
|
978
|
+
"status": {
|
|
979
|
+
"online": "Online",
|
|
980
|
+
"offline": "Offline",
|
|
981
|
+
"complete": "Complete",
|
|
982
|
+
"inProgress": "In Progress",
|
|
983
|
+
"pending": "Pending",
|
|
984
|
+
"blocked": "Blocked",
|
|
985
|
+
"connected": "Connected",
|
|
986
|
+
"disconnected": "Disconnected",
|
|
987
|
+
"synced": "Synced",
|
|
988
|
+
"notSynced": "Not Synced"
|
|
989
|
+
},
|
|
990
|
+
"complexity": {
|
|
991
|
+
"low": "Low",
|
|
992
|
+
"medium": "Medium",
|
|
993
|
+
"high": "High"
|
|
994
|
+
}
|
|
995
|
+
},
|
|
996
|
+
"labels": {
|
|
997
|
+
"loading": "Loading...",
|
|
998
|
+
"syncing": "Syncing...",
|
|
999
|
+
"processing": "Processing...",
|
|
1000
|
+
"saving": "Saving...",
|
|
1001
|
+
"fetching": "Fetching...",
|
|
1002
|
+
"uploading": "Uploading...",
|
|
1003
|
+
"downloading": "Downloading...",
|
|
1004
|
+
"connecting": "Connecting...",
|
|
1005
|
+
"validating": "Validating...",
|
|
1006
|
+
"nextSteps": "Next Steps:",
|
|
1007
|
+
"quickActions": "Quick Actions:",
|
|
1008
|
+
"details": "Details:",
|
|
1009
|
+
"summary": "Summary:",
|
|
1010
|
+
"options": "Options:",
|
|
1011
|
+
"commands": "Commands:",
|
|
1012
|
+
"tips": "Tips:",
|
|
1013
|
+
"progress": "Progress",
|
|
1014
|
+
"status": "Status",
|
|
1015
|
+
"total": "Total",
|
|
1016
|
+
"completed": "Completed",
|
|
1017
|
+
"remaining": "Remaining",
|
|
1018
|
+
"current": "Current"
|
|
1019
|
+
},
|
|
1020
|
+
"time": {
|
|
1021
|
+
"justNow": "just now",
|
|
1022
|
+
"minutesAgo": "{count} min ago",
|
|
1023
|
+
"hoursAgo": "{count} hours ago",
|
|
1024
|
+
"daysAgo": "{count} days ago",
|
|
1025
|
+
"weeksAgo": "{count} weeks ago",
|
|
1026
|
+
"never": "Never"
|
|
1027
|
+
},
|
|
1028
|
+
"cards": {
|
|
1029
|
+
"userInfo": "User Info",
|
|
1030
|
+
"projectStatus": "Project Status",
|
|
1031
|
+
"syncStatus": "Sync Status",
|
|
1032
|
+
"teamMembers": "Team Members",
|
|
1033
|
+
"taskDetails": "Task Details",
|
|
1034
|
+
"settings": "Settings",
|
|
1035
|
+
"cloudProjects": "Cloud Projects",
|
|
1036
|
+
"recentActivity": "Recent Activity",
|
|
1037
|
+
"workload": "Workload"
|
|
1038
|
+
},
|
|
1039
|
+
"alerts": {
|
|
1040
|
+
"success": "SUCCESS",
|
|
1041
|
+
"error": "ERROR",
|
|
1042
|
+
"warning": "WARNING",
|
|
1043
|
+
"info": "INFO",
|
|
1044
|
+
"confirm": "Confirm Action"
|
|
1045
|
+
},
|
|
1046
|
+
"actions": {
|
|
1047
|
+
"confirm": "Confirm",
|
|
1048
|
+
"cancel": "Cancel",
|
|
1049
|
+
"retry": "Retry",
|
|
1050
|
+
"skip": "Skip",
|
|
1051
|
+
"back": "Back",
|
|
1052
|
+
"next": "Next",
|
|
1053
|
+
"finish": "Finish"
|
|
1054
|
+
}
|
|
1055
|
+
},
|
|
1056
|
+
|
|
1057
|
+
"connectionStatus": {
|
|
1058
|
+
"title": "Connection Status",
|
|
1059
|
+
"realtimeConnection": "Real-time Connection",
|
|
1060
|
+
"status": "Status",
|
|
1061
|
+
"connected": "Connected",
|
|
1062
|
+
"lastPing": "Last Ping",
|
|
1063
|
+
"teamOnline": "Team Online",
|
|
1064
|
+
"members": "members",
|
|
1065
|
+
"yourPresence": "Your Presence",
|
|
1066
|
+
"workingOn": "Working on",
|
|
1067
|
+
"since": "Since",
|
|
1068
|
+
"connectionDetails": "Connection Details",
|
|
1069
|
+
"mode": "Mode",
|
|
1070
|
+
"modeWebsocket": "WebSocket (real-time)",
|
|
1071
|
+
"modePolling": "HTTP Polling (fallback)",
|
|
1072
|
+
"server": "Server",
|
|
1073
|
+
"project": "Project",
|
|
1074
|
+
"realtimeActive": "Real-time features active:",
|
|
1075
|
+
"featureBroadcast": "Task updates broadcast to team",
|
|
1076
|
+
"featurePresence": "Presence status visible to teammates",
|
|
1077
|
+
"featureNotifications": "Instant notifications",
|
|
1078
|
+
"offlineQueue": "Offline Queue",
|
|
1079
|
+
"messagesPending": "messages pending",
|
|
1080
|
+
"willSendWhenConnected": "These will be sent when connection is restored.",
|
|
1081
|
+
"toReconnect": "To reconnect:",
|
|
1082
|
+
"runAnyCommand": "Run any cloud command to auto-connect",
|
|
1083
|
+
"whileOffline": "While offline:",
|
|
1084
|
+
"offlineNobroadcast": "Task updates won't be broadcast",
|
|
1085
|
+
"offlineNoTeam": "You won't see team activity live",
|
|
1086
|
+
"offlineQueued": "Changes are queued for sync",
|
|
1087
|
+
"limitedRealtime": "Limited real-time features",
|
|
1088
|
+
"websocketNotInstalled": "WebSocket tools not installed.",
|
|
1089
|
+
"forFullSupport": "For full real-time support, install websocat:",
|
|
1090
|
+
"unableToConnect": "Unable to connect after {count} attempts.",
|
|
1091
|
+
"lastError": "Last Error",
|
|
1092
|
+
"checkNetwork": "Check your network connection and try again.",
|
|
1093
|
+
"noHistory": "No connection history found.",
|
|
1094
|
+
"realtimeNotUsed": "Real-time features haven't been used yet."
|
|
1095
|
+
},
|
|
1096
|
+
|
|
1097
|
+
"skills": {
|
|
1098
|
+
"notificationBadge": {
|
|
1099
|
+
"unreadOne": "unread notification",
|
|
1100
|
+
"unreadMultiple": "unread notifications",
|
|
1101
|
+
"unreadMany": "unread notifications",
|
|
1102
|
+
"unreadWithMentions": "unread notifications including @mentions",
|
|
1103
|
+
"toView": "to view"
|
|
1104
|
+
},
|
|
1105
|
+
"websocket": {
|
|
1106
|
+
"connected": "Connected to PlanFlow",
|
|
1107
|
+
"connecting": "Connecting to real-time server...",
|
|
1108
|
+
"reconnecting": "Reconnecting (attempt {count}/{max})...",
|
|
1109
|
+
"disconnected": "Offline",
|
|
1110
|
+
"failed": "Connection failed",
|
|
1111
|
+
"polling": "Polling mode (WebSocket unavailable)",
|
|
1112
|
+
"workingOn": "Working on {taskId}",
|
|
1113
|
+
"idle": "Idle",
|
|
1114
|
+
"queuedMessages": "{count} messages queued",
|
|
1115
|
+
"processingQueue": "Processing {count} queued messages...",
|
|
1116
|
+
"queueProcessed": "{count} queued messages sent",
|
|
1117
|
+
"queueFailed": "{failed} messages failed to send",
|
|
1118
|
+
"authError": "Authentication failed",
|
|
1119
|
+
"tokenExpired": "Token expired. Run /pfLogin to re-authenticate.",
|
|
1120
|
+
"reconnectHint": "Run /pfReconnect to retry connection.",
|
|
1121
|
+
"teamOnline": "{count} team members online",
|
|
1122
|
+
"taskUpdated": "{taskId} → {status} (by {user})",
|
|
1123
|
+
"presenceUpdate": "{user} is working on {taskId}",
|
|
1124
|
+
"presenceIdle": "{user} is now idle",
|
|
1125
|
+
"newComment": "{user} commented on {taskId}",
|
|
1126
|
+
"notification": "{message}",
|
|
1127
|
+
"offlineMode": "Offline — changes will sync when connected",
|
|
1128
|
+
"connectionStatus": "Connection Status",
|
|
1129
|
+
"lastConnected": "Last connected",
|
|
1130
|
+
"installWebsocat": "For real-time features, install websocat:",
|
|
1131
|
+
"installMac": "brew install websocat",
|
|
1132
|
+
"installLinux": "cargo install websocat",
|
|
1133
|
+
"pollingFallback": "Using polling fallback (30s interval)",
|
|
1134
|
+
"status": {
|
|
1135
|
+
"online": "🟢 Online",
|
|
1136
|
+
"connecting": "🟡 Connecting",
|
|
1137
|
+
"reconnecting": "🟡 Reconnecting",
|
|
1138
|
+
"polling": "🟡 Polling",
|
|
1139
|
+
"offline": "⚪ Offline",
|
|
1140
|
+
"failed": "🔴 Failed"
|
|
1141
|
+
},
|
|
1142
|
+
"events": {
|
|
1143
|
+
"taskStarted": "{user} started working on {taskId}",
|
|
1144
|
+
"taskCompleted": "{user} completed {taskId}",
|
|
1145
|
+
"taskBlocked": "{user} blocked {taskId}",
|
|
1146
|
+
"assigned": "{user} assigned {taskId} to {assignee}",
|
|
1147
|
+
"commented": "{user} commented on {taskId}",
|
|
1148
|
+
"mentioned": "{user} mentioned you in {taskId}",
|
|
1149
|
+
"taskAutocompleted": "🎉 {taskId} auto-completed! PR #{prNumber} merged by {user}"
|
|
1150
|
+
}
|
|
1151
|
+
},
|
|
1152
|
+
"liveUpdates": {
|
|
1153
|
+
"enabled": "Live updates enabled",
|
|
1154
|
+
"disabled": "Live updates disabled",
|
|
1155
|
+
"modeSet": "Display mode set to: {mode}",
|
|
1156
|
+
"muted": "Muted updates from: {user}",
|
|
1157
|
+
"unmuted": "Unmuted: {user}",
|
|
1158
|
+
"focusEnabled": "Focus mode enabled for: {taskId}",
|
|
1159
|
+
"focusDisabled": "Focus mode disabled - showing all updates",
|
|
1160
|
+
"historyCleared": "History cleared",
|
|
1161
|
+
"noHistory": "No events in history",
|
|
1162
|
+
"recentEvents": "Recent Events",
|
|
1163
|
+
"settingsTitle": "Live Updates Settings",
|
|
1164
|
+
"status": "Status",
|
|
1165
|
+
"mode": "Mode",
|
|
1166
|
+
"eventTypes": "Event Types",
|
|
1167
|
+
"presenceUpdates": "Presence updates",
|
|
1168
|
+
"comments": "Comments",
|
|
1169
|
+
"assignments": "Assignments",
|
|
1170
|
+
"notifications": "Notifications",
|
|
1171
|
+
"focusMode": "Focus Mode",
|
|
1172
|
+
"mutedUsers": "Muted Users",
|
|
1173
|
+
"taskCompleted": "{user} completed {taskId}",
|
|
1174
|
+
"taskStarted": "{user} started {taskId}",
|
|
1175
|
+
"taskBlocked": "{user} blocked {taskId}",
|
|
1176
|
+
"taskReset": "{user} reset {taskId}",
|
|
1177
|
+
"commentedOn": "{user} on {taskId}",
|
|
1178
|
+
"assignedTo": "{user} assigned {taskId} to {assignee}",
|
|
1179
|
+
"unassigned": "{user} unassigned {taskId}",
|
|
1180
|
+
"workingOn": "{user} started working on {taskId}",
|
|
1181
|
+
"nowIdle": "{user} is now idle",
|
|
1182
|
+
"justNow": "just now",
|
|
1183
|
+
"minAgo": "{count} min ago",
|
|
1184
|
+
"hrAgo": "{count} hr ago",
|
|
1185
|
+
"daysAgo": "{count} days ago",
|
|
1186
|
+
"taskAutocompleted": "{taskId} completed via PR #{prNumber}",
|
|
1187
|
+
"taskAutocompletedFull": "{taskId} \"{taskName}\" completed when PR #{prNumber} was merged by {mergedBy}",
|
|
1188
|
+
"taskAutocompletedTitle": "Task Auto-Completed",
|
|
1189
|
+
"trigger": "Trigger",
|
|
1190
|
+
"prMerged": "PR #{prNumber} merged",
|
|
1191
|
+
"prUrl": "PR URL",
|
|
1192
|
+
"commands": {
|
|
1193
|
+
"toggle": "Toggle live updates",
|
|
1194
|
+
"setMode": "Set display mode",
|
|
1195
|
+
"focusTask": "Focus on specific task",
|
|
1196
|
+
"viewHistory": "View recent events"
|
|
1197
|
+
}
|
|
1198
|
+
},
|
|
1199
|
+
"offlineQueue": {
|
|
1200
|
+
"title": "Offline Queue Status",
|
|
1201
|
+
"pending": "Pending:",
|
|
1202
|
+
"deadLetter": "Dead Letter:",
|
|
1203
|
+
"events": "events",
|
|
1204
|
+
"event": "event",
|
|
1205
|
+
"byType": "By Type:",
|
|
1206
|
+
"stats": "Stats:",
|
|
1207
|
+
"totalQueued": "Total Queued:",
|
|
1208
|
+
"totalProcessed": "Total Processed:",
|
|
1209
|
+
"totalFailed": "Total Failed:",
|
|
1210
|
+
"totalExpired": "Total Expired:",
|
|
1211
|
+
"avgProcessing": "Avg Processing:",
|
|
1212
|
+
"processing": "Processing offline queue...",
|
|
1213
|
+
"processed": "Processed: {count} events",
|
|
1214
|
+
"failed": "Failed: {count} events",
|
|
1215
|
+
"expired": "Expired: {count} events",
|
|
1216
|
+
"remaining": "Remaining: {count} events",
|
|
1217
|
+
"success": "Queue processed successfully!",
|
|
1218
|
+
"noEvents": "No pending events",
|
|
1219
|
+
"retrying": "Retrying {count} failed events...",
|
|
1220
|
+
"retryMoved": "Moved {count} events back to queue",
|
|
1221
|
+
"clearConfirm": "This will delete all pending events. Are you sure?",
|
|
1222
|
+
"clearPrompt": "Type 'yes' to confirm:",
|
|
1223
|
+
"cleared": "Queue cleared ({count} events removed)",
|
|
1224
|
+
"queuedForSync": "Queued for sync when online ({count} pending)",
|
|
1225
|
+
"couldNotQueue": "Could not queue event",
|
|
1226
|
+
"processHint": "Run /pfQueueProcess to sync pending events",
|
|
1227
|
+
"offlineWillSync": "Offline - events will sync when connected",
|
|
1228
|
+
"eventQueued": "Event queued for later delivery",
|
|
1229
|
+
"queueFull": "Queue is full - oldest events removed",
|
|
1230
|
+
"recovered": "Recovered from corrupted queue",
|
|
1231
|
+
"deadLetterInfo": "{count} events in dead letter queue",
|
|
1232
|
+
"retryHint": "Run /pfQueueRetry to retry failed events",
|
|
1233
|
+
"priority": {
|
|
1234
|
+
"critical": "Critical",
|
|
1235
|
+
"high": "High",
|
|
1236
|
+
"normal": "Normal",
|
|
1237
|
+
"low": "Low"
|
|
1238
|
+
},
|
|
1239
|
+
"eventTypes": {
|
|
1240
|
+
"task_update": "Task Update",
|
|
1241
|
+
"presence": "Presence",
|
|
1242
|
+
"comment": "Comment",
|
|
1243
|
+
"assignment": "Assignment",
|
|
1244
|
+
"reaction": "Reaction"
|
|
1245
|
+
}
|
|
1246
|
+
}
|
|
1247
|
+
},
|
|
1248
|
+
|
|
1249
|
+
"github": {
|
|
1250
|
+
"title": "GitHub Integration",
|
|
1251
|
+
"linkSuccess": "GitHub repository linked successfully!",
|
|
1252
|
+
"unlinkSuccess": "GitHub repository unlinked.",
|
|
1253
|
+
"notLinked": "No GitHub repository linked.",
|
|
1254
|
+
"alreadyLinked": "A GitHub repository is already linked.",
|
|
1255
|
+
"invalidFormat": "Invalid repository format.",
|
|
1256
|
+
"formatHint": "Use format: owner/repo",
|
|
1257
|
+
"repoNotFound": "Repository not found.",
|
|
1258
|
+
"noPermission": "You don't have permission to manage GitHub integrations.",
|
|
1259
|
+
"repoAlreadyLinked": "This repository is linked to another project.",
|
|
1260
|
+
"repository": "Repository:",
|
|
1261
|
+
"url": "URL:",
|
|
1262
|
+
"linkedAt": "Linked:",
|
|
1263
|
+
"connected": "Connected",
|
|
1264
|
+
"notConnected": "Not Connected",
|
|
1265
|
+
"features": "Features",
|
|
1266
|
+
"featureBranch": "Create branches from tasks",
|
|
1267
|
+
"featureIssue": "Create issues from tasks",
|
|
1268
|
+
"featurePR": "Link PRs to tasks",
|
|
1269
|
+
"featureAutoComplete": "Auto-complete tasks on PR merge",
|
|
1270
|
+
"benefits": "Benefits of Linking",
|
|
1271
|
+
"benefitBranch": "Create feature branches directly from tasks",
|
|
1272
|
+
"benefitIssue": "Sync tasks to GitHub Issues",
|
|
1273
|
+
"benefitPR": "Link Pull Requests to tasks",
|
|
1274
|
+
"benefitAuto": "Auto-complete tasks when PRs are merged",
|
|
1275
|
+
"toLink": "To link a repository:",
|
|
1276
|
+
"example": "Example:",
|
|
1277
|
+
"tip": "Tip:",
|
|
1278
|
+
"autoCompleteTip": "When you merge a PR with \"Closes TX.X\" in the description, the task will automatically be marked as complete!",
|
|
1279
|
+
"autoComplete": {
|
|
1280
|
+
"title": "Auto-Complete Settings",
|
|
1281
|
+
"enabled": "Auto-complete is now enabled!",
|
|
1282
|
+
"disabled": "Auto-complete is now disabled.",
|
|
1283
|
+
"description": "Auto-complete tasks when PR with \"Closes TX.X\" is merged",
|
|
1284
|
+
"status": "Auto-complete on PR merge",
|
|
1285
|
+
"statusEnabled": "Enabled",
|
|
1286
|
+
"statusDisabled": "Disabled",
|
|
1287
|
+
"toggle": "Toggle auto-complete",
|
|
1288
|
+
"tip": "When a PR with \"Closes T1.1\" is merged, T1.1 will be marked DONE automatically!",
|
|
1289
|
+
"invalidAction": "Invalid action. Use: autocomplete on|off"
|
|
1290
|
+
},
|
|
1291
|
+
"commands": "Commands:",
|
|
1292
|
+
"branchCommand": "Create branch for task",
|
|
1293
|
+
"issueCommand": "Create GitHub issue",
|
|
1294
|
+
"unlinkCommand": "Disconnect repository",
|
|
1295
|
+
"statusCommand": "View integration status",
|
|
1296
|
+
"confirmUnlink": "Unlink this repository?",
|
|
1297
|
+
"unlinkWarning": "This will disconnect the repository from this project.",
|
|
1298
|
+
"unlinkConfirm": "Yes, unlink",
|
|
1299
|
+
"unlinkCancel": "Cancel",
|
|
1300
|
+
"networkError": "Network error. Could not connect to PlanFlow API.",
|
|
1301
|
+
"tryAgain": "Please check your connection and try again.",
|
|
1302
|
+
"branch": {
|
|
1303
|
+
"title": "Create Branch",
|
|
1304
|
+
"created": "Branch created successfully!",
|
|
1305
|
+
"alreadyExists": "Branch already exists.",
|
|
1306
|
+
"checkedOut": "Checked out to branch.",
|
|
1307
|
+
"taskNotFound": "Task not found.",
|
|
1308
|
+
"invalidTaskId": "Invalid task ID format.",
|
|
1309
|
+
"gitError": "Git operation failed.",
|
|
1310
|
+
"notGitRepo": "Not a git repository.",
|
|
1311
|
+
"uncommittedChanges": "You have uncommitted changes.",
|
|
1312
|
+
"usage": "Usage: /pfGithubBranch <task-id>",
|
|
1313
|
+
"example": "Example: /pfGithubBranch T2.1",
|
|
1314
|
+
"task": "Task:",
|
|
1315
|
+
"branchLabel": "Branch:",
|
|
1316
|
+
"status": "Status:",
|
|
1317
|
+
"whatsNext": "What's Next?",
|
|
1318
|
+
"startWorking": "Start working on the task:",
|
|
1319
|
+
"whenDone": "When done, create a pull request:",
|
|
1320
|
+
"autoCompleteTip": "Include \"Closes TX.X\" in your PR description to auto-complete the task!"
|
|
1321
|
+
},
|
|
1322
|
+
"issue": {
|
|
1323
|
+
"title": "Create GitHub Issue",
|
|
1324
|
+
"created": "GitHub issue created successfully!",
|
|
1325
|
+
"alreadyExists": "An issue already exists for this task.",
|
|
1326
|
+
"taskNotFound": "Task not found.",
|
|
1327
|
+
"invalidTaskId": "Invalid task ID format.",
|
|
1328
|
+
"githubError": "GitHub API error.",
|
|
1329
|
+
"permissionDenied": "Permission denied.",
|
|
1330
|
+
"notLinked": "No GitHub repository linked.",
|
|
1331
|
+
"usage": "Usage: /pfGithubIssue <task-id>",
|
|
1332
|
+
"example": "Example: /pfGithubIssue T2.1",
|
|
1333
|
+
"task": "Task:",
|
|
1334
|
+
"issueLabel": "Issue:",
|
|
1335
|
+
"url": "URL:",
|
|
1336
|
+
"state": "State:",
|
|
1337
|
+
"linked": "Issue linked to task",
|
|
1338
|
+
"whatsNext": "What's Next?",
|
|
1339
|
+
"createBranch": "Create a branch to work on this issue:",
|
|
1340
|
+
"createPr": "When done, create a pull request:",
|
|
1341
|
+
"autoCloseTip": "Include \"Closes #{issue}\" in your PR description to auto-close the issue!",
|
|
1342
|
+
"existingIssue": "Existing Issue",
|
|
1343
|
+
"options": "Options:",
|
|
1344
|
+
"viewExisting": "View the existing issue in browser",
|
|
1345
|
+
"closeFirst": "Close the existing issue first to create a new one"
|
|
1346
|
+
},
|
|
1347
|
+
"pr": {
|
|
1348
|
+
"title": "Create Pull Request",
|
|
1349
|
+
"created": "Pull Request created successfully!",
|
|
1350
|
+
"draftCreated": "Draft Pull Request created!",
|
|
1351
|
+
"alreadyExists": "A Pull Request already exists for this task.",
|
|
1352
|
+
"taskNotFound": "Task not found.",
|
|
1353
|
+
"invalidTaskId": "Invalid task ID format.",
|
|
1354
|
+
"branchNotPushed": "Branch not pushed to remote.",
|
|
1355
|
+
"noCommits": "No commits difference between branches.",
|
|
1356
|
+
"githubError": "GitHub API error.",
|
|
1357
|
+
"permissionDenied": "Permission denied.",
|
|
1358
|
+
"notLinked": "No GitHub repository linked.",
|
|
1359
|
+
"notGitRepo": "Not a git repository.",
|
|
1360
|
+
"onMainBranch": "You're on the main branch.",
|
|
1361
|
+
"uncommittedChanges": "You have uncommitted changes.",
|
|
1362
|
+
"usage": "Usage: /pfGithubPr <task-id>",
|
|
1363
|
+
"example": "Example: /pfGithubPr T2.1",
|
|
1364
|
+
"task": "Task:",
|
|
1365
|
+
"prLabel": "PR:",
|
|
1366
|
+
"branch": "Branch:",
|
|
1367
|
+
"url": "URL:",
|
|
1368
|
+
"state": "State:",
|
|
1369
|
+
"linked": "PR linked to task",
|
|
1370
|
+
"willAutoClose": "Will auto-close issue when merged",
|
|
1371
|
+
"autoCompleteTip": "When the PR is merged, the task will be automatically marked as complete!",
|
|
1372
|
+
"whatsNext": "What's Next?",
|
|
1373
|
+
"requestReviews": "Request reviews from team members",
|
|
1374
|
+
"addressCI": "Address any CI/CD feedback",
|
|
1375
|
+
"mergePR": "When approved, merge the PR",
|
|
1376
|
+
"markReady": "Mark as \"Ready for Review\" when done",
|
|
1377
|
+
"existingPR": "Existing Pull Request",
|
|
1378
|
+
"options": "Options:",
|
|
1379
|
+
"viewExisting": "View the existing PR in browser",
|
|
1380
|
+
"closeFirst": "Close the existing PR to create a new one"
|
|
1381
|
+
}
|
|
1382
|
+
},
|
|
1383
|
+
|
|
1384
|
+
"slack": {
|
|
1385
|
+
"title": "Slack Integration",
|
|
1386
|
+
"status": "Status",
|
|
1387
|
+
"events": "Notification Events",
|
|
1388
|
+
"connected": "Connected",
|
|
1389
|
+
"notConfigured": "Not Configured",
|
|
1390
|
+
"notConfiguredHint": "Slack notifications are not set up for this project.",
|
|
1391
|
+
"howToSetup": "How to Set Up",
|
|
1392
|
+
"setupSuccess": "Slack integration configured successfully!",
|
|
1393
|
+
"willReceive": "You will receive notifications for:",
|
|
1394
|
+
"testSuccess": "Test notification sent!",
|
|
1395
|
+
"testFailed": "Failed to send test notification.",
|
|
1396
|
+
"disableSuccess": "Slack integration disabled.",
|
|
1397
|
+
"invalidUrl": "Invalid Slack webhook URL.",
|
|
1398
|
+
"missingUrl": "Webhook URL is required.",
|
|
1399
|
+
"invalidAction": "Invalid action.",
|
|
1400
|
+
"networkError": "Network error. Could not connect to PlanFlow API.",
|
|
1401
|
+
"tryAgain": "Please check your connection and try again.",
|
|
1402
|
+
"noPermission": "You don't have permission to manage Slack integration.",
|
|
1403
|
+
"noPermissionHint": "Only project owners and admins can configure integrations.",
|
|
1404
|
+
"notConfiguredError": "Slack is not configured.",
|
|
1405
|
+
"webhookLabel": "Webhook",
|
|
1406
|
+
"channelLabel": "Channel",
|
|
1407
|
+
"lastTestLabel": "Last Test",
|
|
1408
|
+
"lastSentLabel": "Last Sent",
|
|
1409
|
+
"configured": "Configured",
|
|
1410
|
+
"eventTaskCompleted": "Task completed",
|
|
1411
|
+
"eventTaskAssigned": "Task assigned",
|
|
1412
|
+
"eventMentions": "@mentions",
|
|
1413
|
+
"eventComments": "New comments",
|
|
1414
|
+
"usage": "Usage:",
|
|
1415
|
+
"usageSetup": "Configure Slack webhook",
|
|
1416
|
+
"usageTest": "Send a test notification",
|
|
1417
|
+
"usageDisable": "Disable Slack notifications",
|
|
1418
|
+
"example": "Example:",
|
|
1419
|
+
"validActions": "Valid actions: setup, test, disable"
|
|
1420
|
+
},
|
|
1421
|
+
|
|
1422
|
+
"discord": {
|
|
1423
|
+
"title": "Discord Integration",
|
|
1424
|
+
"status": "Status",
|
|
1425
|
+
"events": "Notification Events",
|
|
1426
|
+
"connected": "Connected",
|
|
1427
|
+
"notConfigured": "Not Configured",
|
|
1428
|
+
"notConfiguredHint": "Discord notifications are not set up for this project.",
|
|
1429
|
+
"howToSetup": "How to Set Up",
|
|
1430
|
+
"setupSuccess": "Discord integration configured successfully!",
|
|
1431
|
+
"willReceive": "You will receive notifications for:",
|
|
1432
|
+
"testSuccess": "Test notification sent!",
|
|
1433
|
+
"testFailed": "Failed to send test notification.",
|
|
1434
|
+
"disableSuccess": "Discord integration disabled.",
|
|
1435
|
+
"invalidUrl": "Invalid Discord webhook URL.",
|
|
1436
|
+
"missingUrl": "Webhook URL is required.",
|
|
1437
|
+
"invalidAction": "Invalid action.",
|
|
1438
|
+
"networkError": "Network error. Could not connect to PlanFlow API.",
|
|
1439
|
+
"tryAgain": "Please check your connection and try again.",
|
|
1440
|
+
"noPermission": "You don't have permission to manage Discord integration.",
|
|
1441
|
+
"noPermissionHint": "Only project owners and admins can configure integrations.",
|
|
1442
|
+
"notConfiguredError": "Discord is not configured.",
|
|
1443
|
+
"webhookLabel": "Webhook",
|
|
1444
|
+
"serverLabel": "Server",
|
|
1445
|
+
"channelLabel": "Channel",
|
|
1446
|
+
"lastTestLabel": "Last Test",
|
|
1447
|
+
"lastSentLabel": "Last Sent",
|
|
1448
|
+
"configured": "Configured",
|
|
1449
|
+
"eventTaskCompleted": "Task completed",
|
|
1450
|
+
"eventTaskAssigned": "Task assigned",
|
|
1451
|
+
"eventMentions": "@mentions",
|
|
1452
|
+
"eventComments": "New comments",
|
|
1453
|
+
"usage": "Usage:",
|
|
1454
|
+
"usageSetup": "Configure Discord webhook",
|
|
1455
|
+
"usageTest": "Send a test notification",
|
|
1456
|
+
"usageDisable": "Disable Discord notifications",
|
|
1457
|
+
"example": "Example:",
|
|
1458
|
+
"validActions": "Valid actions: setup, test, disable"
|
|
1459
|
+
},
|
|
1460
|
+
|
|
1461
|
+
"testWebhooks": {
|
|
1462
|
+
"title": "Test Webhooks",
|
|
1463
|
+
"testing": "Testing webhooks...",
|
|
1464
|
+
"noIntegrations": "No Integrations Configured",
|
|
1465
|
+
"noIntegrationsHint": "No webhook integrations are configured for this project.",
|
|
1466
|
+
"allPassed": "All Tests Passed!",
|
|
1467
|
+
"someFailed": "Some Tests Failed",
|
|
1468
|
+
"allFailed": "All Tests Failed",
|
|
1469
|
+
"slackPassed": "Slack Test Passed!",
|
|
1470
|
+
"discordPassed": "Discord Test Passed!",
|
|
1471
|
+
"slackFailed": "Slack Test Failed",
|
|
1472
|
+
"discordFailed": "Discord Test Failed",
|
|
1473
|
+
"notConfigured": "Integration Not Configured",
|
|
1474
|
+
"invalidTarget": "Invalid integration target",
|
|
1475
|
+
"networkError": "Network error",
|
|
1476
|
+
"testSuccess": "Test notification sent successfully",
|
|
1477
|
+
"testFailed": "Failed to send test notification",
|
|
1478
|
+
"checkChannels": "Check your channels to verify the messages arrived.",
|
|
1479
|
+
"reconfigure": "Reconfigure integrations:",
|
|
1480
|
+
"possibleIssues": "Possible Issues",
|
|
1481
|
+
"integrationDetails": "Integration Details",
|
|
1482
|
+
"responseTime": "Response Time",
|
|
1483
|
+
"httpCode": "HTTP Code",
|
|
1484
|
+
"lastTest": "Last Test",
|
|
1485
|
+
"totalTime": "Total test time",
|
|
1486
|
+
"allWorking": "All {count} integrations working correctly",
|
|
1487
|
+
"someWorking": "{passed} of {total} integrations working",
|
|
1488
|
+
"noneWorking": "All integrations failed",
|
|
1489
|
+
"availableIntegrations": "Available Integrations",
|
|
1490
|
+
"setUpFirst": "Set up an integration first, then run /pfTestWebhooks",
|
|
1491
|
+
"usage": "Usage:",
|
|
1492
|
+
"usageAll": "Test all configured webhooks",
|
|
1493
|
+
"usageSlack": "Test only Slack",
|
|
1494
|
+
"usageDiscord": "Test only Discord",
|
|
1495
|
+
"usageVerbose": "Show detailed results",
|
|
1496
|
+
"validOptions": "Valid options: all, slack, discord",
|
|
1497
|
+
"testResults": "Test Results"
|
|
1498
|
+
}
|
|
1499
|
+
}
|