Files
PROJECT-CONTORL/frontend/public/locales/en/common.json
beabigegg 55f85d0d3c feat: implement soft delete, task editing fixes, and UI improvements
Backend:
- Add soft delete for spaces and projects (is_active flag)
- Add status_id and assignee_id to TaskUpdate schema
- Fix task PATCH endpoint to update status and assignee
- Add validation for assignee_id and status_id in task updates
- Fix health service to count tasks with "Blocked" status as blockers
- Filter out deleted spaces/projects from health dashboard
- Add workload cache invalidation on assignee changes

Frontend:
- Add delete confirmation dialogs for spaces and projects
- Fix UserSelect to display selected user name (valueName prop)
- Fix task detail modal to refresh data after save
- Enforce 2-level subtask depth limit in UI
- Fix timezone bug in date formatting (use local timezone)
- Convert NotificationBell from Tailwind to inline styles
- Add i18n translations for health, workload, settings pages
- Add parent_task_id to Task interface across components

OpenSpec:
- Archive add-delete-capability change

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-10 01:32:13 +08:00

112 lines
3.0 KiB
JSON

{
"buttons": {
"save": "Save",
"cancel": "Cancel",
"delete": "Delete",
"edit": "Edit",
"create": "Create",
"close": "Close",
"confirm": "Confirm",
"back": "Back",
"next": "Next",
"previous": "Previous",
"submit": "Submit",
"reset": "Reset",
"search": "Search",
"filter": "Filter",
"export": "Export",
"import": "Import",
"refresh": "Refresh",
"add": "Add",
"remove": "Remove",
"view": "View",
"download": "Download",
"upload": "Upload"
},
"labels": {
"loading": "Loading...",
"noData": "No data",
"required": "Required",
"optional": "Optional",
"all": "All",
"none": "None",
"yes": "Yes",
"no": "No",
"active": "Active",
"inactive": "Inactive",
"enabled": "Enabled",
"disabled": "Disabled",
"actions": "Actions",
"details": "Details",
"description": "Description",
"name": "Name",
"title": "Title",
"status": "Status",
"type": "Type",
"date": "Date",
"time": "Time",
"createdAt": "Created at",
"updatedAt": "Updated at",
"createdBy": "Created by",
"assignee": "Assignee",
"selectAssignee": "Select assignee...",
"searchUsers": "Search users...",
"noUsersFound": "No users found",
"typeToSearch": "Type to search users",
"task": "Task"
},
"messages": {
"success": "Operation successful",
"error": "Operation failed",
"confirmDelete": "Are you sure you want to delete? This action cannot be undone.",
"unsavedChanges": "You have unsaved changes. Are you sure you want to leave?",
"networkError": "Network error. Please try again later.",
"sessionExpired": "Session expired. Please log in again.",
"permissionDenied": "You do not have permission to perform this action.",
"notFound": "The requested resource was not found."
},
"validation": {
"required": "This field is required",
"email": "Please enter a valid email address",
"minLength": "Minimum {{min}} characters required",
"maxLength": "Maximum {{max}} characters allowed",
"invalidFormat": "Invalid format"
},
"nav": {
"dashboard": "Dashboard",
"spaces": "Spaces",
"projects": "Projects",
"tasks": "Tasks",
"workload": "Workload",
"health": "Project Health",
"audit": "Audit Log",
"settings": "Settings",
"logout": "Logout"
},
"language": {
"switch": "Switch language",
"zhTW": "繁體中文",
"en": "English"
},
"notifications": {
"title": "Notifications",
"markAllRead": "Mark all as read",
"noNotifications": "No notifications",
"empty": "No notifications",
"viewAll": "View all",
"refresh": "Refresh",
"time": {
"justNow": "Just now",
"minutesAgo": "{{count}}m ago",
"hoursAgo": "{{count}}h ago",
"daysAgo": "{{count}}d ago"
}
},
"pagination": {
"page": "Page {{page}}",
"of": "of {{total}}",
"showing": "Showing {{from}}-{{to}} of {{total}}",
"itemsPerPage": "Items per page"
}
}