TaskDecay v1.0.0 MVP — smart task review & archive Chrome extension

This commit is contained in:
Bun Bun
2026-06-17 06:48:47 +00:00
commit cc9aee68ee
38 changed files with 4710 additions and 0 deletions
+56
View File
@@ -0,0 +1,56 @@
import { DEFAULT_SETTINGS } from './types.js';
const SETTINGS_KEY = 'taskdecay_settings_v1';
const TASKS_KEY = 'taskdecay_tasks_v1';
const SYNC_KEY = 'taskdecay_last_sync_v1';
export async function getSettings() {
const result = await chrome.storage.local.get([SETTINGS_KEY]);
const stored = result[SETTINGS_KEY];
if (!stored)
return JSON.parse(JSON.stringify(DEFAULT_SETTINGS));
const parsed = typeof stored === 'string' ? JSON.parse(stored) : stored;
return { ...DEFAULT_SETTINGS, ...parsed };
}
export async function setSettings(settings) {
await chrome.storage.local.set({ [SETTINGS_KEY]: JSON.stringify(settings) });
}
export async function getStoredTasks() {
const result = await chrome.storage.local.get([TASKS_KEY]);
const stored = result[TASKS_KEY];
if (!stored)
return [];
const parsed = typeof stored === 'string' ? JSON.parse(stored) : stored;
return parsed.map((t) => ({
...t,
createdAt: new Date(t.createdAt),
updatedAt: new Date(t.updatedAt),
completedAt: t.completedAt ? new Date(t.completedAt) : null,
dueDate: t.dueDate ? new Date(t.dueDate) : null,
}));
}
export async function setStoredTasks(tasks) {
await chrome.storage.local.set({ [TASKS_KEY]: JSON.stringify(tasks) });
}
export async function getLastSync() {
const result = await chrome.storage.local.get([SYNC_KEY]);
return result[SYNC_KEY] || null;
}
export async function setLastSync(date) {
await chrome.storage.local.set({ [SYNC_KEY]: date });
}
export async function addDismissedTask(taskId) {
const settings = await getSettings();
if (!settings.dismissedTasks.includes(taskId)) {
settings.dismissedTasks.push(taskId);
await setSettings(settings);
}
}
export async function addArchivedTask(taskId) {
const settings = await getSettings();
if (!settings.archivedTasks.includes(taskId)) {
settings.archivedTasks.push(taskId);
await setSettings(settings);
}
}
export async function clearAllTasks() {
await chrome.storage.local.remove([TASKS_KEY, SYNC_KEY]);
}