diff --git a/README.md b/README.md index c582fe7..8eea3af 100644 --- a/README.md +++ b/README.md @@ -169,7 +169,7 @@ When enabled, completed tasks are automatically appended to your daily note with - [x] Write project proposal | šŸ’¼ Work | ā±ļø 45min / 30min (15min over estimate) | āœ… 14:30 ``` -**Requirements:** The core "Daily Notes" plugin must be enabled in Obsidian settings. Focus Task respects your Daily Notes configuration (folder, date format, and template). +**Requirements:** The core "Daily Notes" plugin must be enabled in Obsidian settings. Immerse respects your Daily Notes configuration (folder, date format, and template). ### Lists Customize your task lists with: @@ -182,7 +182,7 @@ Default lists: Work šŸ’¼, Personal šŸ , Learning šŸ“š ## šŸŽØ Customization ### Adding Custom Lists -1. Go to Settings → Focus Task → Lists +1. Go to Settings → Immerse → Lists 2. Click "+ Add List" 3. Set the name, emoji, and color 4. Click Save diff --git a/main.js b/main.js index 3e3f655..412990e 100644 --- a/main.js +++ b/main.js @@ -914,7 +914,7 @@ var ImmersePlugin = class extends import_obsidian3.Plugin { // ============ Status Bar Timer ============ createStatusBar() { this.statusBarEl = this.addStatusBarItem(); - this.statusBarEl.addClass("focus-task-status-bar"); + this.statusBarEl.addClass("immerse-status-bar"); this.updateStatusBar(); this.statusBarEl.addEventListener("click", () => { this.activateView(); @@ -929,10 +929,10 @@ var ImmersePlugin = class extends import_obsidian3.Plugin { const timeStr = this.formatTime(this.currentTimerSeconds); const icon = this.isTimerRunning ? "\u25B6" : "\u23F8"; this.statusBarEl.setText(`\u26A1 ${icon} ${timeStr} - ${taskName}${task && task.text.length > 20 ? "..." : ""}`); - this.statusBarEl.addClass("focus-task-status-active"); + this.statusBarEl.addClass("immerse-status-active"); } else { this.statusBarEl.setText("\u26A1 Immerse"); - this.statusBarEl.removeClass("focus-task-status-active"); + this.statusBarEl.removeClass("immerse-status-active"); } } // ============ Sounds & Celebrations ============ diff --git a/package-release.mjs b/package-release.mjs index aca867c..1ed44b2 100644 --- a/package-release.mjs +++ b/package-release.mjs @@ -51,7 +51,7 @@ async function packageRelease() { console.log(`\nFiles included:`); FILES_TO_INCLUDE.forEach(file => console.log(` - ${file}`)); console.log(`\nšŸ’” Tip: You can now upload these files from the '${RELEASE_DIR}' directory to your Gitea release.`); - console.log(`šŸ’” Tip: To create a zip, run: cd ${RELEASE_DIR} && zip -r ../focus-task-${manifest.version}.zip *`); + console.log(`šŸ’” Tip: To create a zip, run: cd ${RELEASE_DIR} && zip -r ../immerse-${manifest.version}.zip *`); } catch (error) { console.error('āŒ Error packaging release:', error); diff --git a/src/main.ts b/src/main.ts index fd75067..21eeee1 100644 --- a/src/main.ts +++ b/src/main.ts @@ -9,9 +9,9 @@ import { } from 'obsidian'; import { - FocusTask, - FocusTaskSettings, - FocusTaskData, + ImmerseTask, + ImmerseSettings, + ImmerseData, DEFAULT_SETTINGS, DEFAULT_DATA, VIEW_TYPE_IMMERSE, @@ -26,8 +26,8 @@ import { QuickAddTaskModal } from './modals'; // ============ Main Plugin Class ============ export default class ImmersePlugin extends Plugin { - settings: FocusTaskSettings; - data: FocusTaskData; + settings: ImmerseSettings; + data: ImmerseData; // Timer state timerInterval: number | null = null; @@ -183,7 +183,7 @@ export default class ImmersePlugin extends Plugin { // ============ Task Management ============ - createTask(text: string, estimatedMinutes: number = this.settings.defaultEstimateMinutes, list: string = 'work'): FocusTask { + createTask(text: string, estimatedMinutes: number = this.settings.defaultEstimateMinutes, list: string = 'work'): ImmerseTask { return { id: this.generateId(), text, @@ -201,13 +201,13 @@ export default class ImmersePlugin extends Plugin { return Date.now().toString(36) + Math.random().toString(36).substr(2); } - addTask(task: FocusTask) { + addTask(task: ImmerseTask) { this.data.tasks.push(task); this.saveAllData(); this.refreshView(); } - updateTask(taskId: string, updates: Partial) { + updateTask(taskId: string, updates: Partial) { const task = this.data.tasks.find(t => t.id === taskId); if (task) { Object.assign(task, updates); @@ -578,9 +578,9 @@ export default class ImmersePlugin extends Plugin { createStatusBar() { this.statusBarEl = this.addStatusBarItem(); - this.statusBarEl.addClass('focus-task-status-bar'); + this.statusBarEl.addClass('immerse-status-bar'); this.updateStatusBar(); - + // Click to open panel this.statusBarEl.addEventListener('click', () => { this.activateView(); @@ -595,18 +595,18 @@ export default class ImmersePlugin extends Plugin { const taskName = this.isBreakMode ? 'ā˜• Break' : (task?.text.substring(0, 20) || 'Task'); const timeStr = this.formatTime(this.currentTimerSeconds); const icon = this.isTimerRunning ? 'ā–¶' : 'āø'; - + this.statusBarEl.setText(`⚔ ${icon} ${timeStr} - ${taskName}${task && task.text.length > 20 ? '...' : ''}`); - this.statusBarEl.addClass('focus-task-status-active'); + this.statusBarEl.addClass('immerse-status-active'); } else { this.statusBarEl.setText('⚔ Immerse'); - this.statusBarEl.removeClass('focus-task-status-active'); + this.statusBarEl.removeClass('immerse-status-active'); } } // ============ Sounds & Celebrations ============ - showCelebration(task: FocusTask) { + showCelebration(task: ImmerseTask) { let messages = CELEBRATION_MESSAGES; let extraMessage = ''; @@ -673,7 +673,7 @@ export default class ImmersePlugin extends Plugin { // ============ Daily Note Logging ============ - async logTaskToDailyNote(task: FocusTask) { + async logTaskToDailyNote(task: ImmerseTask) { try { const list = this.settings.lists.find(l => l.id === task.list); @@ -862,15 +862,15 @@ export default class ImmersePlugin extends Plugin { }); } - getTasksByList(listId: string): FocusTask[] { + getTasksByList(listId: string): ImmerseTask[] { return this.data.tasks.filter(t => t.list === listId); } - getPendingTasks(): FocusTask[] { + getPendingTasks(): ImmerseTask[] { return this.data.tasks.filter(t => !t.completed); } - getTodaysTasks(): FocusTask[] { + getTodaysTasks(): ImmerseTask[] { const today = new Date().toDateString(); return this.data.tasks.filter(t => { if (t.scheduledDate === today) return true; diff --git a/src/modals.ts b/src/modals.ts index 58f8eaa..39bbbae 100644 --- a/src/modals.ts +++ b/src/modals.ts @@ -5,7 +5,7 @@ import { Setting, } from 'obsidian'; -import { FocusTask } from './types'; +import { ImmerseTask } from './types'; import ImmersePlugin from './main'; // ============ Quick Add Task Modal ============ @@ -113,9 +113,9 @@ export class QuickAddTaskModal extends Modal { export class EditTaskModal extends Modal { plugin: ImmersePlugin; - task: FocusTask; + task: ImmerseTask; - constructor(app: App, plugin: ImmersePlugin, task: FocusTask) { + constructor(app: App, plugin: ImmersePlugin, task: ImmerseTask) { super(app); this.plugin = plugin; this.task = { ...task }; diff --git a/src/types.ts b/src/types.ts index 09da4ef..d65d103 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,6 +1,6 @@ // ============ Types & Interfaces ============ -export interface FocusTask { +export interface ImmerseTask { id: string; text: string; completed: boolean; @@ -21,7 +21,7 @@ export interface TaskList { icon: string; } -export interface FocusTaskSettings { +export interface ImmerseSettings { pomodoroWorkMinutes: number; pomodoroBreakMinutes: number; longBreakMinutes: number; @@ -36,8 +36,8 @@ export interface FocusTaskSettings { logToDaily: boolean; } -export interface FocusTaskData { - tasks: FocusTask[]; +export interface ImmerseData { + tasks: ImmerseTask[]; completedToday: number; totalFocusMinutesToday: number; streak: number; @@ -45,7 +45,7 @@ export interface FocusTaskData { pomodorosCompleted: number; } -export const DEFAULT_SETTINGS: FocusTaskSettings = { +export const DEFAULT_SETTINGS: ImmerseSettings = { pomodoroWorkMinutes: 25, pomodoroBreakMinutes: 5, longBreakMinutes: 15, @@ -64,7 +64,7 @@ export const DEFAULT_SETTINGS: FocusTaskSettings = { logToDaily: false, }; -export const DEFAULT_DATA: FocusTaskData = { +export const DEFAULT_DATA: ImmerseData = { tasks: [], completedToday: 0, totalFocusMinutesToday: 0, diff --git a/src/view.ts b/src/view.ts index ca2f524..6f45df6 100644 --- a/src/view.ts +++ b/src/view.ts @@ -3,7 +3,7 @@ import { WorkspaceLeaf, } from 'obsidian'; -import { VIEW_TYPE_IMMERSE, FocusTask } from './types'; +import { VIEW_TYPE_IMMERSE, ImmerseTask } from './types'; import { QuickAddTaskModal, EditTaskModal } from './modals'; import ImmersePlugin from './main'; @@ -324,7 +324,7 @@ export class ImmerseView extends ItemView { } } - renderTaskItem(container: Element, task: FocusTask) { + renderTaskItem(container: Element, task: ImmerseTask) { const list = this.plugin.settings.lists.find(l => l.id === task.list); const taskEl = container.createEl('div', {