feat: enhance audit logging, add MCP settings, and production docker setup
continuous-integration/drone/push Build is passing

- Implemented comprehensive audit logging for Tasks, Users, Settings, Goals, Labels, AI Chat, and Rewards.
- Added Admin UI for MCP Server settings and Audit Logs.
- Created docker-compose-production.yml with Traefik configuration.
- Fixed backend bugs (missing storage methods, route closure).
- Added Audit Logging Guidelines.
This commit is contained in:
2025-12-15 15:53:31 +01:00
parent fdf321cde9
commit d1736c5991
35 changed files with 5165 additions and 499 deletions
+67 -6
View File
@@ -3,6 +3,23 @@
"title": "TaskFlow",
"backToTasks": "Back to Tasks"
},
"notifications": {
"title": "Notifications",
"enableBrowser": "Enable Browser Notifications",
"description": "Get alerted about upcoming and overdue tasks.",
"enabledTitle": "Notifications Enabled",
"enabledBody": "You will now receive alerts for your tasks.",
"upcomingTitle": "Upcoming: {{task}}",
"upcomingBody": "Due in {{time}}",
"overdueTitle": "Overdue: {{task}}",
"overdueBody": "This task is now overdue!"
},
"unscheduled": {
"title": "Unscheduled Tasks",
"empty": "No unscheduled tasks!",
"schedule": "Schedule",
"tab": "Unscheduled"
},
"navigation": {
"tasks": "Tasks",
"focus": "Focus",
@@ -73,7 +90,10 @@
"cancel": "Cancel",
"smartInputActive": "Smart Input Active",
"energy": "Energy",
"minutesPlaceholder": "Minutes (optional)"
"minutesPlaceholder": "Minutes (optional)",
"duration": "Duration",
"durationNone": "None",
"startDate": "Start Date"
},
"taskDetails": {
"title": "Task Details",
@@ -107,6 +127,11 @@
"notesTab": "Notes",
"timeTab": "Time Tracking",
"editTask": "Edit Task",
"subtasksTab": "Subtasks",
"subtasks": "Subtasks",
"newSubtaskPlaceholder": "New subtask title...",
"createSubtask": "Add Subtask",
"noSubtasks": "No subtasks yet",
"titleLabel": "Title",
"titlePlaceholder": "Task title",
"taskNotes": "Task Notes",
@@ -117,7 +142,21 @@
"addTimeEntry": "Add Time Entry",
"clock": "Clock",
"manual": "Manual",
"previouslyTrackedTime": "Previously tracked time"
"previouslyTrackedTime": "Previously tracked time",
"startDate": "Start Date",
"estimatedDuration": "Estimated Duration",
"subtaskOf": "Subtask of:",
"hierarchyRestriction": "Subtasks cannot have their own subtasks. This is a strict 1-level hierarchy.",
"blockedBy": "Blocked By",
"autoSchedule": "Auto-Schedule",
"pickDate": "Pick a date",
"scheduling": "Scheduling...",
"scheduledFor": "Scheduled for {{date}}",
"scheduleFail": "Scheduling failed: {{error}}",
"durationUnits": {
"m": "m",
"h": "h"
}
},
"taskCard": {
"play": "Start timer",
@@ -428,10 +467,15 @@
},
"ranks": {
"novice": "Novice",
"builder": "Builder",
"planner": "Planner",
"architect": "Architect",
"master": "Master"
"apprentice": "Apprentice",
"journeyman": "Journeyman",
"artisan": "Artisan",
"expert": "Expert",
"master": "Master",
"grandmaster": "Grandmaster",
"virtuoso": "Virtuoso",
"legend": "Legend",
"mythic": "Mythic"
},
"leaderboardPage": {
"title": "Leaderboard",
@@ -519,6 +563,23 @@
"daily_streak": "Daily Streak Bonus",
"daily_clear_bonus": "Daily Clear Bonus",
"goal_completed": "Goal Completed"
},
"rules": {
"title": "Gamification Rules",
"xpSystem": "XP System",
"levelRequirements": "Level Requirements",
"actions": "Actions & Rewards",
"level": "Level {{level}}",
"xp": "{{xp}} XP",
"action": "Action",
"points": "Points",
"createTask": "Create Task",
"createSubtask": "Create Subtask",
"updateTask": "Update Task",
"completeTask": "Complete Task (On Time)",
"completeTaskLate": "Complete Task (Late)",
"aiAction": "Use AI Feature",
"dailyStreak": "Daily Streak Bonus"
}
},
"rewards": {