@allbluecn/shared 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/package.json +117 -0
  2. package/src/constants/perf.ts +21 -0
  3. package/src/i18n/client.ts +32 -0
  4. package/src/i18n/config.ts +104 -0
  5. package/src/i18n/detect.ts +43 -0
  6. package/src/i18n/locales/en/agents.json +134 -0
  7. package/src/i18n/locales/en/apps.json +6 -0
  8. package/src/i18n/locales/en/auth.json +88 -0
  9. package/src/i18n/locales/en/billing.json +78 -0
  10. package/src/i18n/locales/en/chat.json +194 -0
  11. package/src/i18n/locales/en/common.json +203 -0
  12. package/src/i18n/locales/en/dashboard.json +38 -0
  13. package/src/i18n/locales/en/design.json +70 -0
  14. package/src/i18n/locales/en/desktop.json +35 -0
  15. package/src/i18n/locales/en/display.json +37 -0
  16. package/src/i18n/locales/en/editor.json +304 -0
  17. package/src/i18n/locales/en/enterprise.json +1 -0
  18. package/src/i18n/locales/en/invite.json +11 -0
  19. package/src/i18n/locales/en/knowledge.json +451 -0
  20. package/src/i18n/locales/en/mindmap.json +28 -0
  21. package/src/i18n/locales/en/prd.json +43 -0
  22. package/src/i18n/locales/en/projects.json +133 -0
  23. package/src/i18n/locales/en/settings.json +375 -0
  24. package/src/i18n/locales/en/share.json +20 -0
  25. package/src/i18n/locales/en/story.json +785 -0
  26. package/src/i18n/locales/en/tags.json +42 -0
  27. package/src/i18n/locales/en/workspace.json +90 -0
  28. package/src/i18n/locales/zh/agents.json +134 -0
  29. package/src/i18n/locales/zh/apps.json +6 -0
  30. package/src/i18n/locales/zh/auth.json +88 -0
  31. package/src/i18n/locales/zh/billing.json +78 -0
  32. package/src/i18n/locales/zh/chat.json +194 -0
  33. package/src/i18n/locales/zh/common.json +203 -0
  34. package/src/i18n/locales/zh/dashboard.json +38 -0
  35. package/src/i18n/locales/zh/design.json +70 -0
  36. package/src/i18n/locales/zh/desktop.json +35 -0
  37. package/src/i18n/locales/zh/display.json +37 -0
  38. package/src/i18n/locales/zh/editor.json +304 -0
  39. package/src/i18n/locales/zh/enterprise.json +1 -0
  40. package/src/i18n/locales/zh/invite.json +11 -0
  41. package/src/i18n/locales/zh/knowledge.json +451 -0
  42. package/src/i18n/locales/zh/mindmap.json +28 -0
  43. package/src/i18n/locales/zh/prd.json +43 -0
  44. package/src/i18n/locales/zh/projects.json +133 -0
  45. package/src/i18n/locales/zh/settings.json +375 -0
  46. package/src/i18n/locales/zh/share.json +20 -0
  47. package/src/i18n/locales/zh/story.json +785 -0
  48. package/src/i18n/locales/zh/tags.json +42 -0
  49. package/src/i18n/locales/zh/workspace.json +90 -0
  50. package/src/i18n/server.ts +18 -0
  51. package/src/i18n/types.ts +5 -0
  52. package/src/index.ts +90 -0
  53. package/src/infrastructure/ai/adapter.ts +59 -0
  54. package/src/infrastructure/ai/cli-detector.ts +64 -0
  55. package/src/infrastructure/ip-location.ts +76 -0
  56. package/src/infrastructure/references/engine.ts +104 -0
  57. package/src/infrastructure/ua-parser.ts +107 -0
  58. package/src/interfaces/ai.ts +38 -0
  59. package/src/interfaces/avatar.ts +22 -0
  60. package/src/interfaces/module.ts +60 -0
  61. package/src/interfaces/references.ts +44 -0
  62. package/src/interfaces/transport.ts +26 -0
  63. package/src/lib/annotation-template.ts +33 -0
  64. package/src/lib/comment-utils.ts +47 -0
  65. package/src/lib/datetime.ts +115 -0
  66. package/src/lib/desktop-detect.ts +27 -0
  67. package/src/lib/outline-utils.ts +57 -0
  68. package/src/lib/pacer.ts +96 -0
  69. package/src/lib/prd/stack-layout.ts +53 -0
  70. package/src/lib/prd-tree-utils.ts +94 -0
  71. package/src/lib/prototype-registry.ts +24 -0
  72. package/src/lib/query-client-seam.ts +14 -0
  73. package/src/lib/share-events.ts +78 -0
  74. package/src/lib/sidebar-utils.ts +21 -0
  75. package/src/lib/stores/prd-canvas-store.ts +69 -0
  76. package/src/lib/tag-colors.ts +35 -0
  77. package/src/lib/time-format.ts +50 -0
  78. package/src/modules/ai-providers/constants.ts +79 -0
  79. package/src/modules/ai-providers/index.ts +21 -0
  80. package/src/modules/ai-providers/seed-data.ts +222 -0
  81. package/src/modules/ai-providers/types.ts +95 -0
  82. package/src/modules/billing/feature-registry.ts +63 -0
  83. package/src/modules/billing/plan-features-schema.ts +11 -0
  84. package/src/modules/billing/resource-registry.ts +80 -0
  85. package/src/modules/definitions/plugin.module.ts +38 -0
  86. package/src/modules/definitions/prd.module.ts +45 -0
  87. package/src/modules/definitions/prototype.module.ts +38 -0
  88. package/src/modules/dependencies/index.ts +186 -0
  89. package/src/modules/register-defaults.ts +27 -0
  90. package/src/modules/registry.ts +53 -0
  91. package/src/server-seam.ts +51 -0
  92. package/src/types/outline.ts +26 -0
  93. package/src/types/prd.ts +90 -0
  94. package/src/types/prototype.ts +12 -0
  95. package/src/virtual.d.ts +4 -0
@@ -0,0 +1,785 @@
1
+ {
2
+ "categories": {
3
+ "prd": {
4
+ "label": "PRD",
5
+ "tooltip": "Link PRD",
6
+ "placeholder": "Link PRD documents"
7
+ },
8
+ "ui": {
9
+ "label": "UI",
10
+ "tooltip": "Link UI design",
11
+ "placeholder": "Link UI design files"
12
+ },
13
+ "bug": {
14
+ "label": "BUG",
15
+ "tooltip": "Link bug",
16
+ "placeholder": "Link bug"
17
+ },
18
+ "testCase": {
19
+ "label": "Test Case",
20
+ "tooltip": "Link test cases",
21
+ "placeholder": "Link test cases"
22
+ },
23
+ "acceptance": {
24
+ "label": "Acceptance",
25
+ "tooltip": "Link acceptance criteria",
26
+ "placeholder": "Link acceptance criteria"
27
+ },
28
+ "retro": {
29
+ "label": "Retrospective",
30
+ "tooltip": "Link retrospective",
31
+ "placeholder": "Link retrospective"
32
+ }
33
+ },
34
+ "relations": {
35
+ "dependencyTitle": "Blocking, blocked by, related",
36
+ "dependency": "Dependencies",
37
+ "itemCount": "{{count}} items",
38
+ "uploadAttachment": "Upload attachment",
39
+ "attachment": "Attachments",
40
+ "linksTitle": "External links",
41
+ "links": "Links",
42
+ "knowledgeTitle": "Link PRD and knowledge docs",
43
+ "knowledge": "Knowledge"
44
+ },
45
+ "attachments": {
46
+ "title": "Attachments",
47
+ "add": "Add attachment",
48
+ "uploadTitle": "Upload attachment",
49
+ "clickToSelect": "Click to select a file",
50
+ "cancel": "Cancel",
51
+ "uploading": "Uploading...",
52
+ "upload": "Upload",
53
+ "selectFile": "Please select a file",
54
+ "uploaded": "Attachment uploaded",
55
+ "uploadFailed": "Failed to upload attachment",
56
+ "removed": "Attachment removed",
57
+ "removeFailed": "Failed to remove attachment",
58
+ "empty": "No attachments"
59
+ },
60
+ "hierarchy": {
61
+ "childAdded": "Sub-story added",
62
+ "addChildFailed": "Failed to add sub-story",
63
+ "childRemoved": "Sub-story removed",
64
+ "removeChildFailed": "Failed to remove sub-story",
65
+ "parent": "Parent story",
66
+ "noParent": "No parent story",
67
+ "setParent": "Set parent story",
68
+ "children": "Sub-stories",
69
+ "addChild": "Add sub-story",
70
+ "searchStory": "Search stories...",
71
+ "selectChild": "Select sub-story",
72
+ "noChildren": "No sub-stories"
73
+ },
74
+ "links": {
75
+ "title": "Links",
76
+ "add": "Add",
77
+ "addTitle": "Add link",
78
+ "editTitle": "Edit link",
79
+ "titleOptional": "Title (optional)",
80
+ "titlePlaceholder": "Link title",
81
+ "descOptional": "Description (optional)",
82
+ "descPlaceholder": "Link description",
83
+ "cancel": "Cancel",
84
+ "update": "Update",
85
+ "updated": "Link updated",
86
+ "added": "Link added",
87
+ "saveFailed": "Failed to save link",
88
+ "removed": "Link removed",
89
+ "removeFailed": "Failed to remove link",
90
+ "empty": "No links"
91
+ },
92
+ "relationsTab": {
93
+ "title": "Relations",
94
+ "refresh": "Refresh",
95
+ "refreshing": "Refreshing...",
96
+ "refreshFailed": "Failed to refresh relation data",
97
+ "hierarchy": "Parent/child tree",
98
+ "dependencies": "Dependencies",
99
+ "links": "Links",
100
+ "attachments": "Attachments",
101
+ "knowledge": "Knowledge links"
102
+ },
103
+ "knowledge": {
104
+ "searchPrdFailed": "Failed to search PRDs",
105
+ "searchDocFailed": "Failed to search docs",
106
+ "prdLinked": "PRD linked",
107
+ "linkPrdFailed": "Failed to link PRD",
108
+ "prdUnlinked": "PRD unlinked",
109
+ "unlinkPrdFailed": "Failed to unlink PRD",
110
+ "docLinked": "Document linked",
111
+ "linkDocFailed": "Failed to link document",
112
+ "docUnlinked": "Document unlinked",
113
+ "unlinkDocFailed": "Failed to unlink document",
114
+ "prdTitle": "Link PRD",
115
+ "linkPrd": "Link PRD",
116
+ "searchPrdTitle": "Search and link PRD",
117
+ "searchPrdPlaceholder": "Search PRD titles...",
118
+ "noResults": "No search results",
119
+ "noPrds": "No linked PRDs",
120
+ "docTitle": "Link knowledge documents",
121
+ "linkDoc": "Link document",
122
+ "searchDocTitle": "Search and link knowledge documents",
123
+ "searchDocPlaceholder": "Search document titles...",
124
+ "noDocs": "No linked documents"
125
+ },
126
+ "properties": {
127
+ "title": "Properties",
128
+ "basic": "General",
129
+ "parent": "Parent story",
130
+ "labels": "Labels",
131
+ "iteration": "Iteration"
132
+ },
133
+ "children": {
134
+ "addChild": "Add sub-story",
135
+ "createChild": "Create sub-story",
136
+ "selectChild": "Select sub-story",
137
+ "childStories": "Sub-stories",
138
+ "updateFailed": "Update failed",
139
+ "archiveOnlyDone": "Only stories in 'Done' or 'Cancelled' can be archived",
140
+ "archived": "Archived",
141
+ "archiveFailed": "Failed to archive",
142
+ "unarchived": "Restored from archive",
143
+ "unarchiveFailed": "Failed to restore from archive",
144
+ "deleted": "Deleted",
145
+ "deleteFailed": "Failed to delete",
146
+ "selectStory": "Select {{name}}",
147
+ "crossProject": "Cross-project story",
148
+ "startDate": "Start date",
149
+ "dueDate": "Due date",
150
+ "removeChild": "Remove from children",
151
+ "archive": "Archive",
152
+ "delete": "Delete",
153
+ "unarchive": "Restore",
154
+ "deleteTitle": "Delete Story",
155
+ "deleteDescription": "This cannot be undone. All comments, activity records and related data will be permanently deleted.",
156
+ "removedChild": "Removed from children",
157
+ "removeChildFailed": "Failed to remove from children",
158
+ "bulkArchivedSkipped": "Archived {{archived}} stories, skipped {{skipped}} not in Done/Cancelled",
159
+ "bulkArchived": "Archived {{count}} stories",
160
+ "bulkDeleted": "Deleted {{count}} stories",
161
+ "bulkUpdated": "Updated selected sub-stories",
162
+ "bulkUpdateFailed": "Failed to bulk update"
163
+ },
164
+ "state": {
165
+ "backlog": "Backlog",
166
+ "todo": "To Do",
167
+ "in_progress": "In Progress",
168
+ "done": "Done",
169
+ "cancelled": "Cancelled"
170
+ },
171
+ "priority": {
172
+ "urgent": "Urgent",
173
+ "high": "High",
174
+ "medium": "Medium",
175
+ "low": "Low",
176
+ "none": "None"
177
+ },
178
+ "activity": {
179
+ "created": "Created story",
180
+ "updated": "Updated story",
181
+ "commented": "Commented",
182
+ "state_changed": "Status",
183
+ "priority_changed": "Priority",
184
+ "assignee_changed": "Assignee",
185
+ "name_changed": "Title",
186
+ "description_changed": "Description",
187
+ "startDate_changed": "Start date",
188
+ "targetDate_changed": "Due date",
189
+ "label_changed": "Labels",
190
+ "identifier_changed": "Reset story ID",
191
+ "project_transferred": "Transferred story",
192
+ "parent_changed": "Parent story",
193
+ "parent_removed": "Parent story",
194
+ "verb": {
195
+ "added": "Added",
196
+ "changed": "Changed"
197
+ },
198
+ "changedState": "{{verb}} {{field}} to {{state}}",
199
+ "changedField": "{{verb}} {{field}}",
200
+ "empty": "No activity records",
201
+ "mergedTitle": "Merged {{count}} consecutive operations (within 3 minutes)",
202
+ "merged": "Merged {{count}} times",
203
+ "ai": "AI action",
204
+ "expand": "Expand",
205
+ "collapse": "Collapse"
206
+ },
207
+ "dependency": {
208
+ "blocks": "Blocks",
209
+ "blocked_by": "Blocked by",
210
+ "relates_to": "Related",
211
+ "blocking": "Blocking",
212
+ "relatesTo": "Related",
213
+ "direction": {
214
+ "blocks": "Blocks this story's implementation",
215
+ "blocked_by": "Blocked by this story",
216
+ "relates_to": "Related to"
217
+ }
218
+ },
219
+ "group": {
220
+ "all": "All",
221
+ "unassigned": "Unassigned",
222
+ "unknown_user": "Unknown user",
223
+ "no_labels": "No labels",
224
+ "no_project": "Standalone stories",
225
+ "assignee": "Assignee",
226
+ "createdBy": "Created by",
227
+ "selectAll": "Select all {{label}}",
228
+ "addTo": "Add story to {{label}}",
229
+ "loading": "Loading...",
230
+ "loadMore": "Show more",
231
+ "add": "Add story"
232
+ },
233
+ "filters": {
234
+ "clearAll": "Clear all filters",
235
+ "archiveAll": "Archive all",
236
+ "unassignedAssignee": "Unassigned"
237
+ },
238
+ "filter": {
239
+ "field": {
240
+ "title": "Title",
241
+ "state": "Status",
242
+ "priority": "Priority",
243
+ "assignee": "Assignee",
244
+ "label": "Label",
245
+ "createdDate": "Created date",
246
+ "targetDate": "Due date"
247
+ },
248
+ "operator": {
249
+ "is": "is",
250
+ "is_not": "is not",
251
+ "is_any_of": "is any of",
252
+ "is_not_any_of": "is none of",
253
+ "is_empty": "is empty",
254
+ "is_not_empty": "is not empty",
255
+ "before": "before",
256
+ "after": "after",
257
+ "on_or_before": "on or before",
258
+ "on_or_after": "on or after",
259
+ "between": "between",
260
+ "contains": "contains",
261
+ "not_contains": "does not contain"
262
+ },
263
+ "single": "Single",
264
+ "multi": "Multi",
265
+ "addCondition": "Add condition",
266
+ "allAdded": "All filter conditions added",
267
+ "label": "Filter",
268
+ "clear": "Clear filters",
269
+ "cancel": "Cancel filter",
270
+ "saveAsView": "Save as view",
271
+ "toggleOpen": "Filter by conditions",
272
+ "selectRange": "Select range...",
273
+ "selectDate": "Select date..."
274
+ },
275
+ "table": {
276
+ "empty": "No stories yet. Click 'Add Story' in the top right to create one"
277
+ },
278
+ "display": {
279
+ "displayOptions": "Display options",
280
+ "viewGrouping": "View grouping",
281
+ "group": {
282
+ "state": "Status",
283
+ "priority": "Priority",
284
+ "assignee": "Assignee",
285
+ "labels": "Labels",
286
+ "createdBy": "Created by",
287
+ "project": "Project",
288
+ "none": "No grouping"
289
+ },
290
+ "subGroup": "Sub-group",
291
+ "order": {
292
+ "manual": "Manual",
293
+ "created": "Created time",
294
+ "updated": "Updated time",
295
+ "startDate": "Start date",
296
+ "dueDate": "Due date",
297
+ "priority": "Priority"
298
+ },
299
+ "asc": "Ascending",
300
+ "desc": "Descending",
301
+ "showProperties": "Show properties",
302
+ "extraOptions": "Additional options",
303
+ "showEmptyGroups": "Show empty groups",
304
+ "showSubItems": "Expand sub-stories",
305
+ "pageSize": "Items per page",
306
+ "property": {
307
+ "id": "ID",
308
+ "project": "Project",
309
+ "assignee": "Assignee",
310
+ "startDate": "Start date",
311
+ "dueDate": "Due date",
312
+ "labels": "Labels",
313
+ "priority": "Priority",
314
+ "state": "Status",
315
+ "subCount": "Sub-stories",
316
+ "attachmentCount": "Attachments"
317
+ }
318
+ },
319
+ "view": {
320
+ "default": "Default view",
321
+ "noViews": "No views",
322
+ "common": "Common views",
323
+ "projectViews": "Views of {{name}}",
324
+ "create": "Create view",
325
+ "title": "Views",
326
+ "edit": "Edit",
327
+ "delete": "Delete",
328
+ "deleteTitle": "Delete View",
329
+ "deleteConfirmMsg": "Delete view \"{{name}}\"? This action cannot be undone.",
330
+ "cancel": "Cancel",
331
+ "deleteConfirm": "Delete",
332
+ "createView": "Create New View",
333
+ "editView": "Edit View",
334
+ "saveFailed": "Failed to save",
335
+ "allProjects": "All projects",
336
+ "namePlaceholder": "View name",
337
+ "createNew": "Create new view",
338
+ "update": "Update view",
339
+ "descPlaceholder": "View description",
340
+ "filterConditions": "Filter conditions",
341
+ "saving": "Saving...",
342
+ "save": "Save",
343
+ "icon": {
344
+ "list": "List",
345
+ "flag": "Flag",
346
+ "user": "User",
347
+ "tag": "Tag",
348
+ "calendar": "Calendar",
349
+ "grid": "Grid",
350
+ "kanban": "Kanban",
351
+ "range": "Schedule",
352
+ "branch": "Branch",
353
+ "inbox": "Inbox",
354
+ "star": "Star",
355
+ "bookmark": "Bookmark"
356
+ },
357
+ "layout": {
358
+ "list": "List",
359
+ "board": "Board",
360
+ "calendar": "Calendar",
361
+ "table": "Table",
362
+ "timeline": "Timeline"
363
+ }
364
+ },
365
+ "column": {
366
+ "identifier": "Story ID",
367
+ "title": "Title",
368
+ "state": "Status",
369
+ "priority": "Priority",
370
+ "assignee": "Assignee",
371
+ "startDate": "Start",
372
+ "dueDate": "Due",
373
+ "links": "Links",
374
+ "attachments": "Attachments",
375
+ "pages": "Knowledge",
376
+ "labels": "Labels",
377
+ "createdBy": "Created by"
378
+ },
379
+ "ai": {
380
+ "selectAll": "Select all",
381
+ "itemCount": "{{count}} items"
382
+ },
383
+ "create": {
384
+ "requireTitle": "Please enter a story title",
385
+ "failed": "Failed to create story",
386
+ "title": "Create Story",
387
+ "addDescription": "Click to add description",
388
+ "shortcuts": "⌘+Z Undo · ⌘+Y Redo",
389
+ "startDate": "Start date",
390
+ "dueDate": "Due date",
391
+ "continuous": "Create continuously",
392
+ "cancel": "Cancel",
393
+ "creating": "Creating...",
394
+ "create": "Create"
395
+ },
396
+ "inline": {
397
+ "notSelected": "Not set",
398
+ "assignee": "Assignee",
399
+ "searchMembers": "Search members",
400
+ "noMatchMembers": "No matching members",
401
+ "labels": "Labels",
402
+ "labelCount": "{{count}} labels",
403
+ "noLabels": "No labels",
404
+ "addParent": "Add parent story",
405
+ "selectParent": "Select parent story",
406
+ "titlePlaceholder": "Enter title...",
407
+ "clear": "Clear",
408
+ "dateShort": "{{month}}/{{day}}"
409
+ },
410
+ "loadedAll": "All loaded",
411
+ "select": {
412
+ "defaultTitle": "Select story",
413
+ "loadListFailed": "Failed to load stories",
414
+ "loadMoreFailed": "Failed to load more",
415
+ "selected": "{{count}} stories selected",
416
+ "setSuccess": "Story updated",
417
+ "setFailed": "Update failed",
418
+ "state": "Status",
419
+ "priority": "Priority",
420
+ "allProjects": "All projects",
421
+ "noAvailable": "No available stories",
422
+ "noMatchCurrent": "No stories match the current conditions",
423
+ "loading": "Loading...",
424
+ "selectedCount": "{{count}} selected",
425
+ "pleaseSelect": "Select a story",
426
+ "cancel": "Cancel",
427
+ "confirmWithCount": "Confirm selection ({{count}})",
428
+ "confirm": "Confirm selection"
429
+ },
430
+ "search": {
431
+ "searchStory": "Search stories...",
432
+ "searchFailed": "Search failed",
433
+ "searching": "Searching...",
434
+ "noResults": "No results"
435
+ },
436
+ "peek": {
437
+ "loadFailed": "Failed to load"
438
+ },
439
+ "comment": {
440
+ "failed": "Failed to comment",
441
+ "retry": "Please try again later",
442
+ "placeholder": "Write a comment...",
443
+ "markdownHint": "Markdown supported, ⌘+Enter to send",
444
+ "cancel": "Cancel",
445
+ "sending": "Sending...",
446
+ "send": "Send",
447
+ "editFailed": "Failed to edit",
448
+ "confirmDelete": "Delete this comment?",
449
+ "deleteFailed": "Failed to delete",
450
+ "operationFailed": "Operation failed",
451
+ "edit": "Edit",
452
+ "delete": "Delete",
453
+ "save": "Save",
454
+ "reply": "Reply",
455
+ "collapseReplies": "Collapse replies",
456
+ "viewReplies": "View {{count}} replies"
457
+ },
458
+ "activityTab": {
459
+ "all": "All",
460
+ "activities": "Activities",
461
+ "comments": "Comments ({{count}})",
462
+ "records": "Activity records"
463
+ },
464
+ "reaction": {
465
+ "add": "Add"
466
+ },
467
+ "detail": {
468
+ "operationFailed": "Reaction failed",
469
+ "saveFailed": "Failed to save",
470
+ "startDate": "Start date",
471
+ "dueDate": "Due date",
472
+ "belongsTo": "Belongs to",
473
+ "copied": "Copied {{identifier}}",
474
+ "copyFailed": "Copy failed",
475
+ "clickToCopy": "Click to copy story ID",
476
+ "showLess": "Show less",
477
+ "showMore": "Show more",
478
+ "addReaction": "Add reaction",
479
+ "createdBy": "Created by",
480
+ "createdAt": "Created at",
481
+ "updatedAt": "Updated at"
482
+ },
483
+ "panel": {
484
+ "mode": {
485
+ "sidePeek": "Side panel",
486
+ "modal": "Modal",
487
+ "fullScreen": "Full screen"
488
+ },
489
+ "back": "Back",
490
+ "collapse": "Collapse panel",
491
+ "close": "Close",
492
+ "linkCopied": "Link copied",
493
+ "copyFailed": "Copy failed",
494
+ "archived": "Archived",
495
+ "archiveFailed": "Failed to archive",
496
+ "deleted": "Deleted",
497
+ "fullscreen": "Fullscreen",
498
+ "switchLayout": "Switch layout",
499
+ "previousStory": "Previous story",
500
+ "nextStory": "Next story",
501
+ "copyLink": "Copy link",
502
+ "more": "More actions",
503
+ "archive": "Archive",
504
+ "delete": "Delete",
505
+ "deleteTitle": "Delete Story",
506
+ "deleteDescription": "This cannot be undone. All comments, activity records and related data will be permanently deleted."
507
+ },
508
+ "transfer": {
509
+ "filteredTip": "Filtered {{count}} stories from \"{{project}}\"",
510
+ "doneWithFailures": "Transfer complete: {{success}} succeeded, {{failed}} failed",
511
+ "transferredToProject": "Moved {{count}} stories to the selected project",
512
+ "transferred": "Moved to the selected project",
513
+ "failed": "Transfer failed",
514
+ "asChildDone": "Moved {{count}} stories as sub-stories",
515
+ "transfer": "Transfer story",
516
+ "transferCount": "Transfer {{count}} stories",
517
+ "toProjectCount": "Move {{count}} stories to a project",
518
+ "toProject": "Move story to a project",
519
+ "noProjects": "No available projects",
520
+ "asChild": "Move as sub-story",
521
+ "transferring": "Transferring...",
522
+ "confirm": "Confirm transfer",
523
+ "asChildOfProject": "Move as sub-story of another project"
524
+ },
525
+ "relation": {
526
+ "added": "Dependency added",
527
+ "newTitle": "New dependency story",
528
+ "addFailed": "Failed to add dependency",
529
+ "removeFailed": "Failed to remove dependency",
530
+ "removed": "Dependency removed",
531
+ "none": "None",
532
+ "search": "Search stories",
533
+ "add": "Add dependency"
534
+ },
535
+ "batchPreview": {
536
+ "select": "Select {{name}}",
537
+ "confirmDelete": "Delete {{count}} stories",
538
+ "copied": "Copied to clipboard",
539
+ "invalidConfirm": "Please enter the confirmation text correctly",
540
+ "archiveTitle": "Archive in batch",
541
+ "deleteTitle": "Delete in batch",
542
+ "archiveDesc": "Only stories with status 'Done / Cancelled' will be archived",
543
+ "deleteDesc": "This cannot be undone. Please proceed with caution",
544
+ "confirmArchive": "Confirm archive",
545
+ "confirmDeleteBtn": "Confirm delete",
546
+ "searchPlaceholder": "Search stories by title or ID",
547
+ "noMatch": "No matching stories",
548
+ "noneArchivable": "None of the selected stories can be archived (not Done/Cancelled)",
549
+ "noStories": "No stories",
550
+ "selectAll": "Select all",
551
+ "selectedCount": "{{count}} selected",
552
+ "confirmHint": "Confirmation:",
553
+ "copyHint": "Click to copy the confirmation text",
554
+ "copyAria": "Copy confirmation text",
555
+ "confirmPlaceholder": "Paste the confirmation text here to confirm deletion",
556
+ "cancel": "Cancel",
557
+ "processing": "Processing..."
558
+ },
559
+ "time": {
560
+ "justNow": "Just now",
561
+ "minutesAgo": "{{count}} min ago",
562
+ "hoursAgo": "{{count}} hr ago",
563
+ "daysAgo": "{{count}} days ago"
564
+ },
565
+ "toolbar": {
566
+ "archived": "Archived stories",
567
+ "project": "Project",
568
+ "allProjects": "All projects",
569
+ "createProject": "Create project",
570
+ "total": "{{count}} stories",
571
+ "searchPlaceholder": "Search stories by ID or title",
572
+ "addStory": "Add story",
573
+ "collect": "Collect stories",
574
+ "import": "Import stories",
575
+ "export": "Export stories"
576
+ },
577
+ "listView": {
578
+ "noArchiveable": "No archiveable stories",
579
+ "archiveFailed": "Failed to archive",
580
+ "archiveDoneWithFailures": "Archive complete: {{success}} succeeded, {{failed}} failed",
581
+ "archiveDone": "Archived {{count}} stories",
582
+ "archiveAllTitle": "Archive all?",
583
+ "archiveAllDescription": "Archive the {{count}} stories matching the current filters? They will no longer appear in the current list.",
584
+ "archiving": "Archiving...",
585
+ "confirmArchive": "Confirm archive"
586
+ },
587
+ "list": {
588
+ "createFailed": "Failed to create",
589
+ "movedUp": "Moved up",
590
+ "movedDown": "Moved down",
591
+ "moveFailed": "Move failed",
592
+ "bulkArchivedSkipped": "Archived {{archived}} stories, skipped {{skipped}} not in Done/Cancelled",
593
+ "bulkArchived": "Archived {{count}} stories",
594
+ "archiveFailed": "Failed to archive",
595
+ "bulkDeleted": "Deleted {{count}} stories",
596
+ "deleteFailed": "Failed to delete",
597
+ "bulkUpdated": "Updated selected stories",
598
+ "bulkUpdateFailed": "Failed to bulk update"
599
+ },
600
+ "batchToolbar": {
601
+ "selected": "{{count}} selected",
602
+ "clear": "Clear selection",
603
+ "moveUp": "Move up in group",
604
+ "moveDown": "Move down in group",
605
+ "transfer": "Bulk transfer",
606
+ "archive": "Bulk archive",
607
+ "delete": "Bulk delete",
608
+ "startDate": "Start date",
609
+ "dueDate": "Due date"
610
+ },
611
+ "row": {
612
+ "updateFailed": "Update failed",
613
+ "startDate": "Start date",
614
+ "dueDate": "Due date"
615
+ },
616
+ "inlineCreator": {
617
+ "placeholder": "Enter title... Enter to add, Esc to cancel",
618
+ "startDate": "Start date",
619
+ "dueDate": "Due date",
620
+ "create": "Create",
621
+ "cancel": "Cancel"
622
+ },
623
+ "kanban": {
624
+ "empty": "Empty",
625
+ "noStories": "No stories",
626
+ "orderFailed": "Failed to reorder",
627
+ "groupUpdated": "Group updated",
628
+ "moveFailed": "Move failed"
629
+ },
630
+ "calendar": {
631
+ "weekdays": [
632
+ "Sun",
633
+ "Mon",
634
+ "Tue",
635
+ "Wed",
636
+ "Thu",
637
+ "Fri",
638
+ "Sat"
639
+ ],
640
+ "today": "Today",
641
+ "monthTitle": "{{month}}/{{year}}",
642
+ "month": "Month",
643
+ "week": "Week",
644
+ "unscheduled": "Unscheduled ({{count}})",
645
+ "createNew": "Create {{date}}",
646
+ "more": "more",
647
+ "dayStories": "Stories on {{date}} ({{count}})",
648
+ "dateUpdated": "Start date updated",
649
+ "dateUpdateFailed": "Failed to update date"
650
+ },
651
+ "timeline": {
652
+ "noScheduled": "No scheduled stories",
653
+ "dateUpdated": "Schedule updated",
654
+ "dateUpdateFailed": "Failed to update schedule"
655
+ },
656
+ "storyAi": {
657
+ "actionRegistry": {
658
+ "generate": {
659
+ "label": "Generate",
660
+ "hint": "Generate story from title"
661
+ },
662
+ "expand": {
663
+ "label": "Expand",
664
+ "hint": "Add implementation details and context"
665
+ },
666
+ "polish": {
667
+ "label": "Polish",
668
+ "hint": "Make expression clearer and more professional"
669
+ },
670
+ "split": {
671
+ "label": "Split",
672
+ "hint": "AI split into sub-stories"
673
+ },
674
+ "testCase": {
675
+ "label": "Test Cases",
676
+ "hint": "Generate test cases"
677
+ },
678
+ "acceptance": {
679
+ "label": "Acceptance",
680
+ "hint": "Add acceptance criteria"
681
+ },
682
+ "prototype": {
683
+ "label": "Prototype",
684
+ "hint": "Draw prototype on PRD board"
685
+ },
686
+ "ui": {
687
+ "label": "UI Design",
688
+ "hint": "Draw UI on design board"
689
+ },
690
+ "code": {
691
+ "label": "Code",
692
+ "hint": "Generate code"
693
+ }
694
+ },
695
+ "panel": {
696
+ "needContent": "Please enter content first",
697
+ "needParentStory": "Please select a parent story first",
698
+ "noValidResult": "AI did not generate valid stories, please adjust and retry",
699
+ "generationFailed": "AI generation failed",
700
+ "emptyNames": "Some story names are empty, please fill them in before creating",
701
+ "createdSuccess": "{{count}} stories created",
702
+ "createFailed": "{{count}} stories failed to create",
703
+ "aiNotConfigured": "Please configure AI service in settings first",
704
+ "goToSettings": "Go to settings",
705
+ "createTab": "AI Create",
706
+ "splitTab": "Split",
707
+ "importTab": "Batch Import",
708
+ "inputPlaceholder": "Describe your story, e.g.: implement user login with email/password, forgot password, third-party WeChat login, redirect to dashboard after login...",
709
+ "projectLabel": "Project (optional)",
710
+ "generating": "Generating...",
711
+ "aiGenerate": "AI Generate",
712
+ "parentLabel": "Parent Story",
713
+ "selectedLabel": "Selected: ",
714
+ "searchParent": "Search parent story...",
715
+ "selectParent": "Select the parent story to split",
716
+ "childLabel": "Sub-stories (attached to parent)",
717
+ "independentLabel": "Independent",
718
+ "splitPlaceholder": "Add split requirements (optional), leave empty to auto-split based on parent story",
719
+ "splitting": "Splitting...",
720
+ "aiSplit": "AI Split",
721
+ "pastePlaceholder": "Paste story list, e.g.:\n1. User Login\n2. Forgot Password\n3. Profile Editing",
722
+ "recognizing": "Recognizing...",
723
+ "aiRecognize": "AI Recognize",
724
+ "streaming": "Streaming...",
725
+ "stop": "Stop",
726
+ "create": "Create",
727
+ "itemCount": " stories"
728
+ },
729
+ "split": {
730
+ "noValidResult": "AI did not generate valid stories, please adjust and retry",
731
+ "generationFailed": "AI generation failed",
732
+ "selectAtLeastOne": "Please select at least one valid story",
733
+ "createdSuccess": "Created: {{done}}/{{total}}",
734
+ "failuresDesc": "{{count}} failed, please check and retry",
735
+ "createFailed": "Failed to create, please retry",
736
+ "title": "AI Split Stories",
737
+ "asChildTitle": "Split as sub-stories",
738
+ "asChildBadge": "Attach to parent",
739
+ "parentLabel": "Parent: ",
740
+ "asIndependentTitle": "Split as independent stories",
741
+ "asIndependentDesc": "Not attached to parent, created as standalone stories",
742
+ "extraPromptPlaceholder": "Add split requirements to split more finely and specifically (optional)",
743
+ "totalPrefix": "Total ",
744
+ "totalSuffix": " items",
745
+ "deselectAll": "Deselect All",
746
+ "selectAll": "Select All",
747
+ "splittingMessage": "AI is splitting stories...",
748
+ "clickToSplit": "Click the button below, AI will automatically split stories",
749
+ "stop": "Stop",
750
+ "redo": "Re-split",
751
+ "split": "Split",
752
+ "confirmCreate": "Confirm Create",
753
+ "extraPromptPrefix": "Additional split requirements: "
754
+ },
755
+ "prototype": {
756
+ "inputPlaceholder": "Please enter page description",
757
+ "generationFailed": "Prototype generation failed",
758
+ "copied": "Copied to clipboard",
759
+ "title": "Draw Prototype",
760
+ "description": "Describe the page you want, AI will auto-generate prototype component layout",
761
+ "example": "e.g.: a user list page with search bar, filter dropdown, data table (name/email/status/actions) and pagination",
762
+ "generating": "Generating...",
763
+ "generate": "Generate Prototype",
764
+ "componentLib": "(component library)"
765
+ },
766
+ "toolbar": {
767
+ "underDevelopment": "This feature is under development, stay tuned",
768
+ "model": "Model",
769
+ "noModels": "No models available, please configure AI service in settings first",
770
+ "stop": "Stop",
771
+ "replace": "Replace",
772
+ "discard": "Discard",
773
+ "currentStory": "Current Story"
774
+ },
775
+ "more": {
776
+ "selectModel": "Select Model",
777
+ "title": "More",
778
+ "noModels": "No models available, please configure AI service in settings first"
779
+ },
780
+ "streamText": {
781
+ "generationFailed": "AI generation failed",
782
+ "descriptionTooLong": "Description exceeds 20000 character limit, please shorten and retry"
783
+ }
784
+ }
785
+ }