feat: Notifications page, Sidebar layout fixes, and Achievements enhancements
continuous-integration/drone/push Build is failing

- implemented /notifications page with overdue/upcoming alerts
- Fixed sidebar scrolling in collapsed mode
- Moved notification button to sidebar footer
- Enhanced Achievements page with streak stats and tooltips
- Improved XP history to show task titles
- Added missing translations (en/de)
- Removed top bar header
- Fixed Docker environment routing
This commit is contained in:
2025-12-17 10:06:36 +01:00
parent 7b79015ac2
commit 9819d8db0b
47 changed files with 2309 additions and 1241 deletions
+108 -77
View File
@@ -12,7 +12,15 @@
"upcomingTitle": "Upcoming: {{task}}",
"upcomingBody": "Due in {{time}}",
"overdueTitle": "Overdue: {{task}}",
"overdueBody": "This task is now overdue!"
"overdueBody": "This task is now overdue!",
"settings": {
"title": "Browser Notifications",
"description": "Receive alerts for upcoming and overdue tasks.",
"denied": "Permission denied. Please enable in browser settings.",
"request": "Request Permission"
},
"recent": "Recent Alerts",
"empty": "All caught up! No urgent alerts."
},
"unscheduled": {
"title": "Unscheduled Tasks",
@@ -267,7 +275,9 @@
"publicLeaderboardDesc": "Show my profile on the global leaderboard",
"searchable": "Allow others to find me",
"searchableDesc": "Allow users to search for me to share tasks",
"shareAccess": "Share access to all tasks..."
"shareAccess": "Share access to all tasks...",
"2fa": "Two-Factor Authentication",
"2faDesc": "Secure your account with email-based 2FA"
},
"admin": {
"title": "Admin Settings",
@@ -317,85 +327,85 @@
"deletedDescription": "Your label has been deleted successfully.",
"share": "Share Label"
},
"security": {
"2fa": "Two-Factor Authentication",
"2faDesc": "Secure your account with email-based 2FA"
},
"ai": {
"enableUser": "Enable AI Assistant",
"enableUserDesc": "Allow the AI assistant to help you with tasks and organization."
},
"mcp": {
"title": "MCP Server",
"description": "Configure the Model Context Protocol server.",
"enableLabel": "Enable MCP Server",
"enableDesc": "Turn on the MCP server to expose task data to AI agents.",
"status": "Status",
"running": "Running",
"url": "Server URL",
"apiKey": "API Key",
"noKey": "No API Key configured",
"generate": "Generate New Key",
"instructions": "The MCP server runs on the same port as the application (/api/mcp).",
"portLabel": "Port",
"portDesc": "The port is determined by the main application."
},
"templates": {
"title": "Project Templates",
"description": "Use templates to quickly create projects",
"manageTemplates": "Manage Templates"
},
"mcp": {
"title": "MCP Server Configuration",
"description": "Configure the Model Context Protocol (MCP) server settings.",
"descriptionDetail": "The MCP server runs on the same port as the application (/api/mcp).",
"enableLabel": "Enable MCP Server",
"enableDesc": "Allow external AI tools to connect via MCP protocol.",
"portLabel": "Port (Informational)",
"portDesc": "Currently runs on the main application port. Separate port configuration coming soon.",
"status": "Server Status",
"running": "Active",
"url": "Endpoint URL (SSE)",
"apiKey": "Access Token",
"generate": "Generate Token",
"revoke": "Revoke Token",
"generated": "Access Token generated",
"revoked": "Access Token revoked",
"noKey": "No token active. Generate one to connect.",
"copy": "Copy to Clipboard",
"copied": "Copied!",
"instructions": "Configure your MCP client (e.g. Claude Desktop) with this URL and Token."
},
"ai": {
"title": "AI Configuration",
"description": "Configure the global AI provider for the assistant.",
"provider": "AI Provider",
"apiKey": "API Key",
"model": "Model Name",
"baseUrl": "Base URL",
"systemPrompt": "System Prompt",
"systemPromptPlaceholder": "Define the AI's persona and rules...",
"save": "Save AI Settings",
"saved": "Settings saved",
"error": "Failed to save settings",
"ollama": {
"placeholder": "Optional for Ollama",
"pull": "Pull Model",
"pullPlaceholder": "e.g. llama3",
"fetch": "Fetch Models",
"found": "Found {{count}} models",
"pullSuccess": "Model pulled successfully",
"pullError": "Failed to pull model",
"connectError": "Could not connect to Ollama"
}
},
"routines": {
"title": "Routine Configuration",
"description": "Configure global morning and evening routine schedules.",
"morningLabel": "Morning Routine",
"eveningLabel": "Evening Routine",
"time": "Start Time",
"saved": "Routine settings saved",
"error": "Failed to save settings",
"save": "Save Routines",
"goodMorning": "Good Morning",
"goodEvening": "Good Evening",
"morningSubtitle": "Let's plan your day for success.",
"eveningSubtitle": "Time to reflect and unwind.",
"dayComplete": "Day Complete! Great job."
}
},
"smtp": {
"title": "Email Settings (SMTP)",
"description": "Configure outgoing email server",
"host": "Host",
"port": "Port",
"user": "User",
"password": "Password",
"from": "From Address",
"secure": "Secure (TLS)",
"save": "Save Email Settings",
"saving": "Saving...",
"saveSuccess": "Settings saved successfully"
"apiKey": "Access Token",
"generate": "Generate Token",
"revoke": "Revoke Token",
"generated": "Access Token generated",
"revoked": "Access Token revoked",
"noKey": "No token active. Generate one to connect.",
"copy": "Copy to Clipboard",
"copied": "Copied!",
"instructions": "Configure your MCP client (e.g. Claude Desktop) with this URL and Token."
},
"ai": {
"title": "AI Configuration",
"description": "Configure the global AI provider for the assistant.",
"provider": "AI Provider",
"apiKeyLabel": "API Key",
"model": "Model Name",
"baseUrl": "Base URL",
"systemPrompt": "System Prompt",
"systemPromptPlaceholder": "Define the AI's persona and rules...",
"enableUser": "Enable AI Chat",
"enableUserDesc": "Allow access to the AI chat assistant",
"save": "Save AI Settings",
"saved": "Settings saved",
"error": "Failed to save settings",
"ollama": {
"placeholder": "Optional for Ollama",
"pull": "Pull Model",
"pullPlaceholder": "e.g. llama3",
"fetch": "Fetch Models",
"found": "Found {{count}} models",
"pullSuccess": "Model pulled successfully",
"pullError": "Failed to pull model",
"connectError": "Could not connect to Ollama"
}
},
"routines": {
"title": "Routine Configuration",
"description": "Configure global morning and evening routine schedules.",
"morningLabel": "Morning Routine",
"eveningLabel": "Evening Routine",
"time": "Start Time",
"saved": "Routine settings saved",
"error": "Failed to save settings",
"save": "Save Routines",
"goodMorning": "Good Morning",
"goodEvening": "Good Evening",
"morningSubtitle": "Let's plan your day for success.",
"eveningSubtitle": "Time to reflect and unwind.",
"dayComplete": "Day Complete! Great job."
},
"aiChat": {
"title": "AI Assistant",
"welcome": "How can I help you manage your tasks today?",
"thinking": "Thinking...",
@@ -565,7 +575,17 @@
"grandmaster": "Grandmaster",
"virtuoso": "Virtuoso",
"legend": "Legend",
"mythic": "Mythic"
"mythic": "Mythic",
"titan": "Titan",
"sentinel": "Sentinel",
"vanguard": "Vanguard",
"oracle": "Oracle",
"ascendant": "Ascendant",
"ethereal": "Ethereal",
"celestial": "Celestial",
"divine": "Divine",
"omnipotent": "Omnipotent",
"eternal": "Eternal"
},
"leaderboardPage": {
"title": "Leaderboard",
@@ -599,6 +619,7 @@
"achievements": {
"title": "Achievements",
"subtitle": "Track your progress and goals",
"overview": "Overview",
"rewardsDescription": "Spend your {{xp}} XP on exclusive rewards!",
"addReward": "Add Reward",
"createCustomReward": "Create Custom Reward",
@@ -607,6 +628,8 @@
"rewardCost": "Cost (XP)",
"createRewardBtn": "Create Reward",
"currentStreak": "Current Streak",
"weeklyStreak": "Weekly Streak",
"monthlyStreak": "Monthly Streak",
"days": "{{count}} Days",
"bestStreak": "Best: {{count}} Days",
"xpActivity": "XP Activity",
@@ -653,7 +676,7 @@
"create_subtask": "Subtask Created",
"update_task": "Task Updated",
"complete_task": "Task Completed",
"complete_task_late": "Task Completed (Late)",
"complete_task_late": "Task Completed",
"ai_action": "AI Assistant Used",
"daily_streak": "Daily Streak Bonus",
"daily_clear_bonus": "Daily Clear Bonus",
@@ -675,6 +698,8 @@
"completeTaskLate": "Complete Task (Late)",
"aiAction": "AI Action",
"dailyStreak": "Daily Streak",
"weeklyStreak": "Weekly Streak (7 Days)",
"monthlyStreak": "Monthly Streak (30 Days)",
"streakTooltip": "Log in daily to increase your streak!",
"streakBonus": "Weekly & Monthly bonuses available: 7 days (+300 XP), 30 days (+1000 XP)."
}
@@ -800,6 +825,12 @@
"createAccount": "Create Account",
"registrationDisabled": "Registration is currently disabled.",
"heroTitle": "TaskFlow",
"heroSubtitle": "Master your productivity with AI-driven task management, gamified achievements, and intelligent focus modes."
"heroSubtitle": "Boost productivity with gamified task management and AI assistance.",
"2faVerification": "2FA Verification",
"2faCodeSent": "2FA Code Sent",
"checkEmail": "Please check your email for the verification code.",
"enterCodeSentTo": "Enter the 6-digit code sent to",
"codeExpiresIn10": "Code expires in 10 minutes",
"verify": "Verify"
}
}