Release v1.0.9: Rename plugin from Focus Task to Immerse

This commit is contained in:
2025-11-23 19:56:06 +01:00
parent 364935af66
commit 331a2b41df
10 changed files with 328 additions and 327 deletions

192
main.js
View File

@@ -24,7 +24,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
// src/main.ts
var main_exports = {};
__export(main_exports, {
default: () => FocusTaskPlugin
default: () => ImmersePlugin
});
module.exports = __toCommonJS(main_exports);
var import_obsidian3 = require("obsidian");
@@ -56,7 +56,7 @@ var DEFAULT_DATA = {
lastActiveDate: "",
pomodorosCompleted: 0
};
var VIEW_TYPE_FOCUS_TASK = "focus-task-view";
var VIEW_TYPE_IMMERSE = "immerse-view";
var CELEBRATION_MESSAGES = [
{ emoji: "\u{1F4A5}", message: "Crushed it!" },
{ emoji: "\u{1F525}", message: "On fire!" },
@@ -98,7 +98,7 @@ var QuickAddTaskModal = class extends import_obsidian.Modal {
}
onOpen() {
const { contentEl } = this;
contentEl.addClass("focus-task-modal");
contentEl.addClass("immerse-modal");
contentEl.createEl("h2", { text: "\u26A1 Add New Task" });
new import_obsidian.Setting(contentEl).setName("Task").addText((text) => {
text.setPlaceholder("What do you need to do?").onChange((value) => this.taskText = value);
@@ -137,10 +137,10 @@ var QuickAddTaskModal = class extends import_obsidian.Modal {
dropdown.setValue(this.selectedList);
dropdown.onChange((value) => this.selectedList = value);
});
const buttonContainer = contentEl.createEl("div", { cls: "focus-task-modal-buttons" });
const cancelBtn = buttonContainer.createEl("button", { text: "Cancel", cls: "focus-task-btn" });
const buttonContainer = contentEl.createEl("div", { cls: "immerse-modal-buttons" });
const cancelBtn = buttonContainer.createEl("button", { text: "Cancel", cls: "immerse-btn" });
cancelBtn.addEventListener("click", () => this.close());
const addBtn = buttonContainer.createEl("button", { text: "Add Task", cls: "focus-task-btn focus-task-btn-primary" });
const addBtn = buttonContainer.createEl("button", { text: "Add Task", cls: "immerse-btn immerse-btn-primary" });
addBtn.addEventListener("click", () => this.submitTask());
}
submitTask() {
@@ -166,7 +166,7 @@ var EditTaskModal = class extends import_obsidian.Modal {
}
onOpen() {
const { contentEl } = this;
contentEl.addClass("focus-task-modal");
contentEl.addClass("immerse-modal");
contentEl.createEl("h2", { text: "\u270F\uFE0F Edit Task" });
new import_obsidian.Setting(contentEl).setName("Task").addText((text) => text.setValue(this.task.text).onChange((value) => this.task.text = value));
new import_obsidian.Setting(contentEl).setName("Estimated Time").addDropdown((dropdown) => {
@@ -204,10 +204,10 @@ var EditTaskModal = class extends import_obsidian.Modal {
if (this.task.actualMinutes > 0) {
new import_obsidian.Setting(contentEl).setName("Time Tracked").setDesc(`You've worked on this task for ${this.plugin.formatTimeHuman(this.task.actualMinutes)}`);
}
const buttonContainer = contentEl.createEl("div", { cls: "focus-task-modal-buttons" });
const cancelBtn = buttonContainer.createEl("button", { text: "Cancel", cls: "focus-task-btn" });
const buttonContainer = contentEl.createEl("div", { cls: "immerse-modal-buttons" });
const cancelBtn = buttonContainer.createEl("button", { text: "Cancel", cls: "immerse-btn" });
cancelBtn.addEventListener("click", () => this.close());
const saveBtn = buttonContainer.createEl("button", { text: "Save", cls: "focus-task-btn focus-task-btn-primary" });
const saveBtn = buttonContainer.createEl("button", { text: "Save", cls: "immerse-btn immerse-btn-primary" });
saveBtn.addEventListener("click", () => {
this.plugin.updateTask(this.task.id, this.task);
new import_obsidian.Notice("\u2705 Task updated!");
@@ -221,7 +221,7 @@ var EditTaskModal = class extends import_obsidian.Modal {
};
// src/view.ts
var FocusTaskView = class extends import_obsidian2.ItemView {
var ImmerseView = class extends import_obsidian2.ItemView {
constructor(leaf, plugin) {
super(leaf);
this.currentFilter = "all";
@@ -233,10 +233,10 @@ var FocusTaskView = class extends import_obsidian2.ItemView {
this.plugin = plugin;
}
getViewType() {
return VIEW_TYPE_FOCUS_TASK;
return VIEW_TYPE_IMMERSE;
}
getDisplayText() {
return "Focus Task";
return "Immerse";
}
getIcon() {
return "zap";
@@ -270,7 +270,7 @@ var FocusTaskView = class extends import_obsidian2.ItemView {
refresh() {
const container = this.containerEl.children[1];
container.empty();
container.addClass("focus-task-container");
container.addClass("immerse-container");
this.timerTimeEl = null;
this.progressBarEl = null;
this.actualTimeEl = null;
@@ -281,14 +281,14 @@ var FocusTaskView = class extends import_obsidian2.ItemView {
this.renderTaskList(container);
}
renderHeader(container) {
const header = container.createEl("div", { cls: "focus-task-header" });
const titleSection = header.createEl("div", { cls: "focus-task-title-section" });
titleSection.createEl("h2", { text: "\u26A1 Focus Task", cls: "focus-task-title" });
const header = container.createEl("div", { cls: "immerse-header" });
const titleSection = header.createEl("div", { cls: "immerse-title-section" });
titleSection.createEl("h2", { text: "\u26A1 Immerse", cls: "immerse-title" });
const today = new Date();
const dateStr = today.toLocaleDateString("en-US", { weekday: "long", month: "short", day: "numeric" });
titleSection.createEl("div", { text: dateStr, cls: "focus-task-date" });
const actions = header.createEl("div", { cls: "focus-task-header-actions" });
const addBtn = actions.createEl("button", { cls: "focus-task-btn focus-task-btn-primary" });
titleSection.createEl("div", { text: dateStr, cls: "immerse-date" });
const actions = header.createEl("div", { cls: "immerse-header-actions" });
const addBtn = actions.createEl("button", { cls: "immerse-btn immerse-btn-primary" });
addBtn.innerHTML = "+ Add Task";
addBtn.addEventListener("click", () => {
new QuickAddTaskModal(this.app, this.plugin).open();
@@ -296,7 +296,7 @@ var FocusTaskView = class extends import_obsidian2.ItemView {
}
renderStatsBar(container) {
const stats = this.plugin.getStats();
const statsBar = container.createEl("div", { cls: "focus-task-stats-bar" });
const statsBar = container.createEl("div", { cls: "immerse-stats-bar" });
const statItems = [
{ label: "Pending", value: stats.pendingCount.toString(), icon: "\u{1F4CB}" },
{ label: "Done Today", value: stats.completedToday.toString(), icon: "\u2705" },
@@ -304,35 +304,35 @@ var FocusTaskView = class extends import_obsidian2.ItemView {
{ label: "Streak", value: `${stats.streak} days`, icon: "\u{1F525}" }
];
statItems.forEach((stat) => {
const item = statsBar.createEl("div", { cls: "focus-task-stat-item" });
item.createEl("div", { cls: "focus-task-stat-icon", text: stat.icon });
item.createEl("div", { cls: "focus-task-stat-value", text: stat.value });
item.createEl("div", { cls: "focus-task-stat-label", text: stat.label });
const item = statsBar.createEl("div", { cls: "immerse-stat-item" });
item.createEl("div", { cls: "immerse-stat-icon", text: stat.icon });
item.createEl("div", { cls: "immerse-stat-value", text: stat.value });
item.createEl("div", { cls: "immerse-stat-label", text: stat.label });
});
}
renderActiveTask(container) {
const activeSection = container.createEl("div", { cls: "focus-task-active-section" });
const activeSection = container.createEl("div", { cls: "immerse-active-section" });
if (this.plugin.activeTaskId) {
const task = this.plugin.data.tasks.find((t) => t.id === this.plugin.activeTaskId);
if (task) {
activeSection.addClass("focus-task-has-active");
const activeCard = activeSection.createEl("div", { cls: "focus-task-active-card" });
activeSection.addClass("immerse-has-active");
const activeCard = activeSection.createEl("div", { cls: "immerse-active-card" });
if (this.plugin.isBreakMode) {
activeCard.addClass("focus-task-break-card");
activeCard.addClass("immerse-break-card");
const breakLabel = this.plugin.currentTimerSeconds > 0 ? "\u2615 BREAK TIME" : "\u2728 BREAK COMPLETE";
activeCard.createEl("div", { cls: "focus-task-active-label", text: breakLabel });
activeCard.createEl("div", { cls: "immerse-active-label", text: breakLabel });
} else {
const workLabel = this.plugin.currentTimerSeconds > 0 ? "\u{1F3AF} FOCUSING ON" : "\u{1F345} POMODORO COMPLETE";
activeCard.createEl("div", { cls: "focus-task-active-label", text: workLabel });
activeCard.createEl("div", { cls: "immerse-active-label", text: workLabel });
}
activeCard.createEl("div", { cls: "focus-task-active-task-name", text: task.text });
const timerDisplay = activeCard.createEl("div", { cls: "focus-task-timer-display" });
activeCard.createEl("div", { cls: "immerse-active-task-name", text: task.text });
const timerDisplay = activeCard.createEl("div", { cls: "immerse-timer-display" });
this.timerTimeEl = timerDisplay.createEl("span", {
cls: "focus-task-timer-time",
cls: "immerse-timer-time",
text: this.plugin.formatTime(this.plugin.currentTimerSeconds)
});
const progressWrap = activeCard.createEl("div", { cls: "focus-task-progress-wrap" });
this.progressBarEl = progressWrap.createEl("div", { cls: "focus-task-progress-bar" });
const progressWrap = activeCard.createEl("div", { cls: "immerse-progress-wrap" });
this.progressBarEl = progressWrap.createEl("div", { cls: "immerse-progress-bar" });
let progressPercent = 0;
if (this.plugin.isBreakMode) {
const breakDuration = this.plugin.pomodoroCount % this.plugin.settings.longBreakInterval === 0 ? this.plugin.settings.longBreakMinutes * 60 : this.plugin.settings.pomodoroBreakMinutes * 60;
@@ -343,38 +343,38 @@ var FocusTaskView = class extends import_obsidian2.ItemView {
}
this.progressBarEl.style.width = `${Math.min(Math.max(progressPercent, 0), 100)}%`;
if (progressPercent >= 100)
this.progressBarEl.addClass("focus-task-overtime");
this.progressBarEl.addClass("immerse-overtime");
if (!this.plugin.isBreakMode) {
const timeInfo = activeCard.createEl("div", { cls: "focus-task-time-info" });
const timeInfo = activeCard.createEl("div", { cls: "immerse-time-info" });
timeInfo.createEl("span", { text: `Est: ${this.plugin.formatTimeHuman(task.estimatedMinutes)}` });
this.actualTimeEl = timeInfo.createEl("span", { text: `Actual: ${this.plugin.formatTimeHuman(task.actualMinutes)}` });
}
const controls = activeCard.createEl("div", { cls: "focus-task-active-controls" });
const controls = activeCard.createEl("div", { cls: "immerse-active-controls" });
if (this.plugin.isBreakMode) {
if (this.plugin.currentTimerSeconds > 0) {
this.pauseBtnEl = controls.createEl("button", { cls: "focus-task-btn focus-task-btn-secondary" });
this.pauseBtnEl = controls.createEl("button", { cls: "immerse-btn immerse-btn-secondary" });
this.pauseBtnEl.innerHTML = this.plugin.isTimerRunning ? "\u23F8 Pause" : "\u25B6 Resume";
this.pauseBtnEl.addEventListener("click", () => this.plugin.toggleTimer());
const skipBreakBtn = controls.createEl("button", { cls: "focus-task-btn focus-task-btn-primary" });
const skipBreakBtn = controls.createEl("button", { cls: "immerse-btn immerse-btn-primary" });
skipBreakBtn.innerHTML = "\u23ED Skip Break";
skipBreakBtn.addEventListener("click", () => {
this.plugin.isBreakMode = false;
this.plugin.startPomodoro(task.id);
});
const stopBtn = controls.createEl("button", { cls: "focus-task-btn focus-task-btn-danger" });
const stopBtn = controls.createEl("button", { cls: "immerse-btn immerse-btn-danger" });
stopBtn.innerHTML = "\u2715 Stop";
stopBtn.addEventListener("click", () => {
this.plugin.isBreakMode = false;
this.plugin.stopTimer();
});
} else {
const resumeWorkBtn = controls.createEl("button", { cls: "focus-task-btn focus-task-btn-success" });
const resumeWorkBtn = controls.createEl("button", { cls: "immerse-btn immerse-btn-success" });
resumeWorkBtn.innerHTML = "\u25B6 Resume Work";
resumeWorkBtn.addEventListener("click", () => {
this.plugin.isBreakMode = false;
this.plugin.startPomodoro(task.id);
});
const stopBtn = controls.createEl("button", { cls: "focus-task-btn focus-task-btn-danger" });
const stopBtn = controls.createEl("button", { cls: "immerse-btn immerse-btn-danger" });
stopBtn.innerHTML = "\u2715 Stop";
stopBtn.addEventListener("click", () => {
this.plugin.isBreakMode = false;
@@ -383,41 +383,41 @@ var FocusTaskView = class extends import_obsidian2.ItemView {
}
} else {
if (this.plugin.currentTimerSeconds > 0) {
this.pauseBtnEl = controls.createEl("button", { cls: "focus-task-btn focus-task-btn-secondary" });
this.pauseBtnEl = controls.createEl("button", { cls: "immerse-btn immerse-btn-secondary" });
this.pauseBtnEl.innerHTML = this.plugin.isTimerRunning ? "\u23F8 Pause" : "\u25B6 Resume";
this.pauseBtnEl.addEventListener("click", () => this.plugin.toggleTimer());
const completeBtn = controls.createEl("button", { cls: "focus-task-btn focus-task-btn-success" });
const completeBtn = controls.createEl("button", { cls: "immerse-btn immerse-btn-success" });
completeBtn.innerHTML = "\u2713 Complete";
completeBtn.addEventListener("click", () => this.plugin.completeTask(task.id));
const stopBtn = controls.createEl("button", { cls: "focus-task-btn focus-task-btn-danger" });
const stopBtn = controls.createEl("button", { cls: "immerse-btn immerse-btn-danger" });
stopBtn.innerHTML = "\u2715 Stop";
stopBtn.addEventListener("click", () => this.plugin.stopTimer());
} else {
const startBreakBtn = controls.createEl("button", { cls: "focus-task-btn focus-task-btn-secondary" });
const startBreakBtn = controls.createEl("button", { cls: "immerse-btn immerse-btn-secondary" });
startBreakBtn.innerHTML = "\u2615 Start Break";
startBreakBtn.addEventListener("click", () => this.plugin.startBreak());
const continueBtn = controls.createEl("button", { cls: "focus-task-btn focus-task-btn-primary" });
const continueBtn = controls.createEl("button", { cls: "immerse-btn immerse-btn-primary" });
continueBtn.innerHTML = "\u25B6 Continue Working";
continueBtn.addEventListener("click", () => this.plugin.startPomodoro(task.id));
const completeBtn = controls.createEl("button", { cls: "focus-task-btn focus-task-btn-success" });
const completeBtn = controls.createEl("button", { cls: "immerse-btn immerse-btn-success" });
completeBtn.innerHTML = "\u2713 Complete";
completeBtn.addEventListener("click", () => this.plugin.completeTask(task.id));
const stopBtn = controls.createEl("button", { cls: "focus-task-btn focus-task-btn-danger" });
const stopBtn = controls.createEl("button", { cls: "immerse-btn immerse-btn-danger" });
stopBtn.innerHTML = "\u2715 Stop";
stopBtn.addEventListener("click", () => this.plugin.stopTimer());
}
}
}
} else {
const startPrompt = activeSection.createEl("div", { cls: "focus-task-start-prompt" });
startPrompt.createEl("div", { cls: "focus-task-prompt-icon", text: "\u26A1" });
startPrompt.createEl("div", { cls: "focus-task-prompt-text", text: "Ready to focus?" });
startPrompt.createEl("div", { cls: "focus-task-prompt-hint", text: "Click \u25B6 on a task to start a Pomodoro session" });
const startPrompt = activeSection.createEl("div", { cls: "immerse-start-prompt" });
startPrompt.createEl("div", { cls: "immerse-prompt-icon", text: "\u26A1" });
startPrompt.createEl("div", { cls: "immerse-prompt-text", text: "Ready to focus?" });
startPrompt.createEl("div", { cls: "immerse-prompt-hint", text: "Click \u25B6 on a task to start a Pomodoro session" });
}
}
renderTaskList(container) {
const listSection = container.createEl("div", { cls: "focus-task-list-section" });
const filters = listSection.createEl("div", { cls: "focus-task-filters" });
const listSection = container.createEl("div", { cls: "immerse-list-section" });
const filters = listSection.createEl("div", { cls: "immerse-filters" });
const filterOptions = [
{ id: "all", label: "All Tasks" },
{ id: "today", label: "Today" },
@@ -426,7 +426,7 @@ var FocusTaskView = class extends import_obsidian2.ItemView {
];
filterOptions.forEach((opt) => {
const btn = filters.createEl("button", {
cls: `focus-task-filter-btn ${this.currentFilter === opt.id ? "active" : ""}`,
cls: `immerse-filter-btn ${this.currentFilter === opt.id ? "active" : ""}`,
text: opt.label
});
btn.addEventListener("click", () => {
@@ -434,7 +434,7 @@ var FocusTaskView = class extends import_obsidian2.ItemView {
this.refresh();
});
});
const taskList = listSection.createEl("div", { cls: "focus-task-task-list" });
const taskList = listSection.createEl("div", { cls: "immerse-task-list" });
let tasks = this.plugin.data.tasks;
if (this.currentFilter === "today") {
tasks = this.plugin.getTodaysTasks();
@@ -449,10 +449,10 @@ var FocusTaskView = class extends import_obsidian2.ItemView {
return b.createdAt - a.createdAt;
});
if (tasks.length === 0) {
const emptyState = taskList.createEl("div", { cls: "focus-task-empty-state" });
emptyState.createEl("div", { cls: "focus-task-empty-icon", text: "\u{1F4DD}" });
emptyState.createEl("div", { cls: "focus-task-empty-text", text: "No tasks yet" });
emptyState.createEl("div", { cls: "focus-task-empty-hint", text: "Add a task to get started!" });
const emptyState = taskList.createEl("div", { cls: "immerse-empty-state" });
emptyState.createEl("div", { cls: "immerse-empty-icon", text: "\u{1F4DD}" });
emptyState.createEl("div", { cls: "immerse-empty-text", text: "No tasks yet" });
emptyState.createEl("div", { cls: "immerse-empty-hint", text: "Add a task to get started!" });
} else {
tasks.forEach((task) => this.renderTaskItem(taskList, task));
}
@@ -460,9 +460,9 @@ var FocusTaskView = class extends import_obsidian2.ItemView {
renderTaskItem(container, task) {
const list = this.plugin.settings.lists.find((l) => l.id === task.list);
const taskEl = container.createEl("div", {
cls: `focus-task-task-item ${task.completed ? "completed" : ""} ${task.isActive ? "active" : ""}`
cls: `immerse-task-item ${task.completed ? "completed" : ""} ${task.isActive ? "active" : ""}`
});
const checkbox = taskEl.createEl("div", { cls: "focus-task-checkbox" });
const checkbox = taskEl.createEl("div", { cls: "immerse-checkbox" });
checkbox.innerHTML = task.completed ? "\u2713" : "";
checkbox.style.borderColor = (list == null ? void 0 : list.color) || "#6366f1";
if (task.completed) {
@@ -475,48 +475,48 @@ var FocusTaskView = class extends import_obsidian2.ItemView {
this.plugin.completeTask(task.id);
}
});
const content = taskEl.createEl("div", { cls: "focus-task-task-content" });
const taskHeader = content.createEl("div", { cls: "focus-task-task-header" });
taskHeader.createEl("span", { cls: "focus-task-task-text", text: task.text });
const content = taskEl.createEl("div", { cls: "immerse-task-content" });
const taskHeader = content.createEl("div", { cls: "immerse-task-header" });
taskHeader.createEl("span", { cls: "immerse-task-text", text: task.text });
if (list) {
const listBadge = taskHeader.createEl("span", {
cls: "focus-task-list-badge",
cls: "immerse-list-badge",
text: `${list.icon} ${list.name}`
});
listBadge.style.backgroundColor = list.color + "20";
listBadge.style.color = list.color;
}
const taskMeta = content.createEl("div", { cls: "focus-task-task-meta" });
const taskMeta = content.createEl("div", { cls: "immerse-task-meta" });
taskMeta.createEl("span", { text: `Est: ${this.plugin.formatTimeHuman(task.estimatedMinutes)}` });
if (task.actualMinutes > 0) {
const actualSpan = taskMeta.createEl("span");
actualSpan.setText(`Actual: ${this.plugin.formatTimeHuman(task.actualMinutes)}`);
if (task.actualMinutes > task.estimatedMinutes) {
actualSpan.addClass("focus-task-overtime-text");
actualSpan.addClass("immerse-overtime-text");
}
}
const actions = taskEl.createEl("div", { cls: "focus-task-task-actions" });
const actions = taskEl.createEl("div", { cls: "immerse-task-actions" });
if (!task.completed) {
const startBtn = actions.createEl("button", { cls: "focus-task-task-btn", attr: { "aria-label": "Start Pomodoro" } });
const startBtn = actions.createEl("button", { cls: "immerse-task-btn", attr: { "aria-label": "Start Pomodoro" } });
startBtn.innerHTML = "\u25B6";
startBtn.addEventListener("click", (e) => {
e.stopPropagation();
this.plugin.startPomodoro(task.id);
});
const stopwatchBtn = actions.createEl("button", { cls: "focus-task-task-btn", attr: { "aria-label": "Start Stopwatch" } });
const stopwatchBtn = actions.createEl("button", { cls: "immerse-task-btn", attr: { "aria-label": "Start Stopwatch" } });
stopwatchBtn.innerHTML = "\u23F1";
stopwatchBtn.addEventListener("click", (e) => {
e.stopPropagation();
this.plugin.startTimer(task.id);
});
}
const editBtn = actions.createEl("button", { cls: "focus-task-task-btn", attr: { "aria-label": "Edit" } });
const editBtn = actions.createEl("button", { cls: "immerse-task-btn", attr: { "aria-label": "Edit" } });
editBtn.innerHTML = "\u270F\uFE0F";
editBtn.addEventListener("click", (e) => {
e.stopPropagation();
new EditTaskModal(this.app, this.plugin, task).open();
});
const deleteBtn = actions.createEl("button", { cls: "focus-task-task-btn focus-task-delete-btn", attr: { "aria-label": "Delete" } });
const deleteBtn = actions.createEl("button", { cls: "immerse-task-btn immerse-delete-btn", attr: { "aria-label": "Delete" } });
deleteBtn.innerHTML = "\u{1F5D1}";
deleteBtn.addEventListener("click", (e) => {
e.stopPropagation();
@@ -526,7 +526,7 @@ var FocusTaskView = class extends import_obsidian2.ItemView {
};
// src/main.ts
var FocusTaskPlugin = class extends import_obsidian3.Plugin {
var ImmersePlugin = class extends import_obsidian3.Plugin {
constructor() {
super(...arguments);
// Timer state
@@ -554,15 +554,15 @@ var FocusTaskPlugin = class extends import_obsidian3.Plugin {
}
});
this.registerView(
VIEW_TYPE_FOCUS_TASK,
(leaf) => new FocusTaskView(leaf, this)
VIEW_TYPE_IMMERSE,
(leaf) => new ImmerseView(leaf, this)
);
this.addRibbonIcon("zap", "Open Focus Task", () => {
this.addRibbonIcon("zap", "Open Immerse", () => {
this.activateView();
});
this.addCommand({
id: "open-focus-task",
name: "Open Focus Task Panel",
id: "open-immerse",
name: "Open Immerse Panel",
callback: () => this.activateView()
});
this.addCommand({
@@ -585,7 +585,7 @@ var FocusTaskPlugin = class extends import_obsidian3.Plugin {
name: "Complete Current Task",
callback: () => this.completeActiveTask()
});
this.addSettingTab(new FocusTaskSettingTab(this.app, this));
this.addSettingTab(new ImmerseSettingTab(this.app, this));
this.createStatusBar();
}
onunload() {
@@ -627,13 +627,13 @@ var FocusTaskPlugin = class extends import_obsidian3.Plugin {
async activateView() {
const { workspace } = this.app;
let leaf = null;
const leaves = workspace.getLeavesOfType(VIEW_TYPE_FOCUS_TASK);
const leaves = workspace.getLeavesOfType(VIEW_TYPE_IMMERSE);
if (leaves.length > 0) {
leaf = leaves[0];
} else {
leaf = workspace.getRightLeaf(false);
if (leaf) {
await leaf.setViewState({ type: VIEW_TYPE_FOCUS_TASK, active: true });
await leaf.setViewState({ type: VIEW_TYPE_IMMERSE, active: true });
}
}
if (leaf) {
@@ -931,7 +931,7 @@ var FocusTaskPlugin = class extends import_obsidian3.Plugin {
this.statusBarEl.setText(`\u26A1 ${icon} ${timeStr} - ${taskName}${task && task.text.length > 20 ? "..." : ""}`);
this.statusBarEl.addClass("focus-task-status-active");
} else {
this.statusBarEl.setText("\u26A1 Focus Task");
this.statusBarEl.setText("\u26A1 Immerse");
this.statusBarEl.removeClass("focus-task-status-active");
}
}
@@ -1109,18 +1109,18 @@ var FocusTaskPlugin = class extends import_obsidian3.Plugin {
return mins > 0 ? `${hours}hr ${mins}min` : `${hours}hr`;
}
refreshView() {
const leaves = this.app.workspace.getLeavesOfType(VIEW_TYPE_FOCUS_TASK);
const leaves = this.app.workspace.getLeavesOfType(VIEW_TYPE_IMMERSE);
leaves.forEach((leaf) => {
if (leaf.view instanceof FocusTaskView) {
if (leaf.view instanceof ImmerseView) {
leaf.view.refresh();
}
});
}
// Light refresh - only updates timer display without rebuilding DOM
updateTimerDisplay() {
const leaves = this.app.workspace.getLeavesOfType(VIEW_TYPE_FOCUS_TASK);
const leaves = this.app.workspace.getLeavesOfType(VIEW_TYPE_IMMERSE);
leaves.forEach((leaf) => {
if (leaf.view instanceof FocusTaskView) {
if (leaf.view instanceof ImmerseView) {
leaf.view.updateTimerDisplay();
}
});
@@ -1157,7 +1157,7 @@ var FocusTaskPlugin = class extends import_obsidian3.Plugin {
};
}
};
var FocusTaskSettingTab = class extends import_obsidian3.PluginSettingTab {
var ImmerseSettingTab = class extends import_obsidian3.PluginSettingTab {
constructor(app, plugin) {
super(app, plugin);
this.plugin = plugin;
@@ -1165,7 +1165,7 @@ var FocusTaskSettingTab = class extends import_obsidian3.PluginSettingTab {
display() {
const { containerEl } = this;
containerEl.empty();
containerEl.createEl("h1", { text: "\u26A1 Focus Task Settings" });
containerEl.createEl("h1", { text: "\u26A1 Immerse Settings" });
containerEl.createEl("h2", { text: "\u{1F345} Pomodoro Timer" });
new import_obsidian3.Setting(containerEl).setName("Work Duration").setDesc("Length of each work session in minutes").addSlider((slider) => slider.setLimits(5, 60, 5).setValue(this.plugin.settings.pomodoroWorkMinutes).setDynamicTooltip().onChange(async (value) => {
this.plugin.settings.pomodoroWorkMinutes = value;
@@ -1243,14 +1243,14 @@ var FocusTaskSettingTab = class extends import_obsidian3.PluginSettingTab {
this.display();
}));
containerEl.createEl("h2", { text: "\u{1F4D6} About" });
const aboutDiv = containerEl.createDiv({ cls: "focus-task-about" });
const aboutDiv = containerEl.createDiv({ cls: "immerse-about" });
aboutDiv.innerHTML = `
<p><strong>Focus Task</strong> is heavily inspired by <a href="https://www.blitzit.app/">Blitzit</a>,
<p><strong>Immerse</strong> is heavily inspired by <a href="https://www.blitzit.app/">Blitzit</a>,
a fantastic productivity app that combines task management with focused time tracking.</p>
<p>This plugin brings similar functionality directly into Obsidian, allowing you to manage tasks,
<p>This plugin brings similar functionality directly into Obsidian, allowing you to manage tasks,
use the Pomodoro technique, and track your productivity without leaving your notes.</p>
<p>
<a href="https://git.cribdev.com/crib/focus-task">Source Code</a>
<a href="https://git.cribdev.com/crib/immerse">Source Code</a>
</p>
`;
}