fix(routine): resolove routine blocker logic bug and white screen
continuous-integration/drone/push Build is passing

feat(gamification): add streak bonuses, tooltip, and improved history details

fix(ep): resolve double counting ep bug

ui: update app icon and translations
This commit is contained in:
2025-12-15 23:17:59 +01:00
parent 9736864425
commit 7b79015ac2
17 changed files with 884 additions and 299 deletions
+5 -1
View File
@@ -14,11 +14,14 @@ export const users = pgTable("users", {
level: integer("level").notNull().default(1),
currentStreak: integer("current_streak").notNull().default(0),
lastTaskDate: timestamp("last_task_date"),
showOnLeaderboard: boolean("show_on_leaderboard").notNull().default(false), // Privacy setting
lastActive: timestamp("last_active"), // Track daily activity for streaks
showOnLeaderboard: boolean("show_on_leaderboard").default(true).notNull(), // Privacy setting
isSearchable: boolean("is_searchable").notNull().default(false), // Privacy setting
apiKey: text("api_key"), // For MCP Server access
aiEnabled: boolean("ai_enabled").notNull().default(true), // Feature flag per user
routineConfig: json("routine_config").$type<{ morningTime: string, eveningTime: string, enabled: boolean }>().default({ morningTime: "09:00", eveningTime: "17:00", enabled: true }),
lastMorningRoutine: timestamp("last_morning_routine"),
lastEveningRoutine: timestamp("last_evening_routine"),
});
export const systemSettings = pgTable("system_settings", {
@@ -172,6 +175,7 @@ export const xpEvents = pgTable("xp_events", {
amount: integer("amount").notNull(),
source: text("source").notNull(), // 'task_completion', 'daily_streak', 'bonus'
taskId: varchar("task_id"),
details: json("details"), // For snapshotting task title etc.
createdAt: timestamp("created_at").defaultNow(),
});