Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 50ef40d2e0 | |||
| b3aa1f2992 | |||
| e1484b1723 |
6
.gitignore
vendored
6
.gitignore
vendored
@@ -1,7 +1,8 @@
|
||||
# Build output
|
||||
# Build output (main.js is tracked for easy installation)
|
||||
*.js.map
|
||||
release/
|
||||
*.zip
|
||||
immerse-*.zip
|
||||
|
||||
# npm
|
||||
node_modules/
|
||||
@@ -22,6 +23,7 @@ data.json
|
||||
# Development/Documentation (not for distribution)
|
||||
RELEASE-GUIDE.md
|
||||
ROADMAP.md
|
||||
ROADMAP_*.md
|
||||
deploy-test.bat
|
||||
.claude/
|
||||
RELEASE_NOTES_v1.1.0.md
|
||||
RELEASE_NOTES_*.md
|
||||
|
||||
@@ -1,166 +0,0 @@
|
||||
# Immerse v1.1.0 Release Notes
|
||||
|
||||
Release Date: November 24, 2024
|
||||
|
||||
## 🎉 What's New
|
||||
|
||||
### 📈 Reporting & Analytics System
|
||||
A complete analytics dashboard to track your productivity over time!
|
||||
|
||||
**Features:**
|
||||
- **Key Metrics Dashboard**: View tasks completed, tasks per day, hours per day, minutes per task, and current day streak
|
||||
- **Visual Charts**: Beautiful pie chart showing distribution of tasks, hours, and pomodoros
|
||||
- **Time by List Analysis**: See exactly how much time you spend on different task categories
|
||||
- **Productivity Insights**: Discover your most productive hour, day, and month
|
||||
- **Daily Breakdown**: Visual bar charts showing the last 10 days of activity with tasks, hours, and pomodoros
|
||||
- **Flexible Filtering**: Quick filters (Today, Last 7/30/90 days) plus custom date range selection
|
||||
- **Report View**: Dedicated view accessible via "📊 Reports" button
|
||||
|
||||
### 🗓️ Task Scheduling & Reminders
|
||||
Never miss a deadline with the new scheduling system!
|
||||
|
||||
**Features:**
|
||||
- **Schedule Tasks**: Set specific date and time when tasks are due
|
||||
- **Smart Reminders**: Choose notification timing (5, 10, 15, 30, or 60 minutes before due time)
|
||||
- **Visual Indicators**:
|
||||
- Blue 📅 badge shows scheduled date/time
|
||||
- Red ⚠️ pulsing "OVERDUE" badge for past-due tasks
|
||||
- Red left border highlight on overdue tasks
|
||||
- **Background Monitoring**: Automatic checks every 30 seconds for upcoming/overdue tasks
|
||||
- **Startup Alerts**: Get notified when opening Obsidian if tasks are overdue
|
||||
- **Sound Notifications**: Optional audio alerts for reminders (respects sound settings)
|
||||
- **Duplicate Prevention**: Smart tracking ensures you don't get reminded multiple times
|
||||
|
||||
### 📱 Mobile Optimization
|
||||
Full responsive design for excellent mobile experience!
|
||||
|
||||
**Improvements:**
|
||||
- **Responsive Layouts**: All UI elements adapt to mobile screen sizes
|
||||
- **Touch-Friendly**:
|
||||
- Minimum 44px tap targets (Apple's recommended size)
|
||||
- Larger checkboxes (28px on mobile)
|
||||
- Larger action buttons
|
||||
- **Optimized Views**:
|
||||
- Pie charts scale down appropriately (220px on tablets, 180px on phones)
|
||||
- Stats grid adapts (2 columns on tablets, 1 column on small phones)
|
||||
- Daily breakdown bars stack vertically on mobile
|
||||
- Modal buttons become full-width and stack
|
||||
- **Always Visible Actions**: Task action buttons always visible on mobile (no hover needed)
|
||||
- **Adaptive Typography**: Font sizes scale appropriately for readability
|
||||
|
||||
## 🔧 Technical Improvements
|
||||
|
||||
### Performance
|
||||
- Efficient report generation with on-demand calculation
|
||||
- Optimized reminder checks with 30-second intervals
|
||||
- Smart caching to prevent duplicate notifications
|
||||
|
||||
### Code Structure
|
||||
- New `reportView.ts` file for analytics view
|
||||
- Enhanced type definitions for scheduling and reporting
|
||||
- Improved data tracking for historical statistics
|
||||
- Better separation of concerns
|
||||
|
||||
### Compatibility
|
||||
- Fully compatible with Obsidian desktop and mobile
|
||||
- Works with both light and dark themes
|
||||
- Respects user's sound and notification preferences
|
||||
|
||||
## 📊 Statistics Tracked
|
||||
|
||||
The plugin now tracks comprehensive statistics including:
|
||||
- Total tasks completed
|
||||
- Total time spent (all-time and daily)
|
||||
- Total pomodoros completed
|
||||
- Tasks per day average
|
||||
- Hours per day average
|
||||
- Minutes per task average
|
||||
- Current day streak
|
||||
- Most productive hour/day/month
|
||||
- Time breakdown by task list
|
||||
|
||||
## 🎨 UI/UX Enhancements
|
||||
|
||||
- New "📊 Reports" button in main view header
|
||||
- Modern, clean report interface with gradient accents
|
||||
- Color-coded progress bars using list colors
|
||||
- Hover effects and animations for better interactivity
|
||||
- Responsive filter controls
|
||||
- Improved date picker styling and alignment
|
||||
|
||||
## 🐛 Bug Fixes
|
||||
|
||||
- Fixed pie chart rendering issues (now uses proper color values)
|
||||
- Improved gradient calculation for proper segment display
|
||||
- Better normalization of metrics (using time-based calculations)
|
||||
- Fixed date input alignment in report filters
|
||||
|
||||
## ⚙️ Settings Updates
|
||||
|
||||
### New Settings:
|
||||
- **Enable Reminders**: Toggle reminder notifications on/off
|
||||
- **Default Reminder Minutes**: Set default reminder time for new scheduled tasks (default: 30 minutes)
|
||||
|
||||
### Updated Settings:
|
||||
All existing settings remain compatible with no migration required.
|
||||
|
||||
## 📱 Mobile Testing Recommendations
|
||||
|
||||
To ensure the best experience on mobile:
|
||||
|
||||
1. **Test on actual device**: Install Obsidian mobile and test the plugin
|
||||
2. **Browser DevTools**: Use Chrome/Edge DevTools device emulation
|
||||
3. **Responsive breakpoints**:
|
||||
- Desktop: >768px
|
||||
- Tablet: ≤768px
|
||||
- Phone: ≤480px
|
||||
|
||||
## 🔄 Upgrade Instructions
|
||||
|
||||
### From v1.0.x:
|
||||
|
||||
1. **Backup your data** (optional but recommended):
|
||||
- Your tasks and settings are in `.obsidian/plugins/immerse/data.json`
|
||||
- Make a copy before updating
|
||||
|
||||
2. **Update files**:
|
||||
- Copy `main.js`, `manifest.json`, and `styles.css` to your vault
|
||||
- **DO NOT replace `data.json`** - this contains your tasks!
|
||||
|
||||
3. **Reload Obsidian**:
|
||||
- Press Ctrl/Cmd+R to reload
|
||||
- Or restart Obsidian
|
||||
|
||||
4. **Verify**:
|
||||
- Check that your tasks are still there
|
||||
- Click "📊 Reports" to see your new analytics
|
||||
- Try scheduling a task with a reminder
|
||||
|
||||
## 🚀 What's Next (v1.2.0)
|
||||
|
||||
Future enhancements we're considering:
|
||||
- Calendar view integration
|
||||
- Export reports (PDF/CSV)
|
||||
- More chart types and visualizations
|
||||
- Task templates
|
||||
- Recurring tasks
|
||||
- Advanced filtering options
|
||||
|
||||
## 💡 Feedback
|
||||
|
||||
Found a bug or have a feature request?
|
||||
- Open an issue: [https://git.cribdev.com/crib/immerse/issues](https://git.cribdev.com/crib/immerse/issues)
|
||||
- Join the discussion in the repository
|
||||
|
||||
## 🙏 Credits
|
||||
|
||||
Special thanks to:
|
||||
- [Blitzit](https://www.blitzit.app/) for continued inspiration
|
||||
- The Obsidian community for feedback and support
|
||||
- Claude.ai for development assistance
|
||||
|
||||
---
|
||||
|
||||
**Enjoy v1.1.0!** ⚡
|
||||
|
||||
Made with ❤️ for the Obsidian community
|
||||
8
main.js
8
main.js
@@ -1287,7 +1287,7 @@ var ImmersePlugin = class extends import_obsidian4.Plugin {
|
||||
const task = this.data.tasks.find((t) => t.id === taskId);
|
||||
if (!task)
|
||||
return;
|
||||
this.stopTimer();
|
||||
this.stopTimer(true);
|
||||
this.activeTaskId = taskId;
|
||||
task.isActive = true;
|
||||
this.isBreakMode = false;
|
||||
@@ -1325,7 +1325,7 @@ var ImmersePlugin = class extends import_obsidian4.Plugin {
|
||||
const task = this.data.tasks.find((t) => t.id === taskId);
|
||||
if (!task)
|
||||
return;
|
||||
this.stopTimer();
|
||||
this.stopTimer(true);
|
||||
this.activeTaskId = taskId;
|
||||
task.isActive = true;
|
||||
this.isBreakMode = false;
|
||||
@@ -1446,7 +1446,7 @@ var ImmersePlugin = class extends import_obsidian4.Plugin {
|
||||
this.updateStatusBar();
|
||||
this.refreshView();
|
||||
}
|
||||
stopTimer() {
|
||||
stopTimer(preserveActualTime = false) {
|
||||
if (this.timerInterval) {
|
||||
window.clearInterval(this.timerInterval);
|
||||
this.timerInterval = null;
|
||||
@@ -1455,9 +1455,11 @@ var ImmersePlugin = class extends import_obsidian4.Plugin {
|
||||
const task = this.data.tasks.find((t) => t.id === this.activeTaskId);
|
||||
if (task) {
|
||||
task.isActive = false;
|
||||
if (!preserveActualTime) {
|
||||
task.actualMinutes = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
this.isTimerRunning = false;
|
||||
this.activeTaskId = null;
|
||||
this.secondsWorkedOnCurrentTask = 0;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"id": "immerse",
|
||||
"name": "Immerse",
|
||||
"version": "1.1.0",
|
||||
"version": "1.1.1",
|
||||
"minAppVersion": "0.15.0",
|
||||
"description": "A Blitzit-inspired task management and focus timer plugin. Plan your day, track time with Pomodoro technique, and crush your tasks with satisfying checkoffs.",
|
||||
"author": "Crib",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "immerse",
|
||||
"version": "1.1.0",
|
||||
"version": "1.1.1",
|
||||
"description": "A Blitzit-inspired task management and focus timer plugin for Obsidian",
|
||||
"main": "main.js",
|
||||
"scripts": {
|
||||
|
||||
13
src/main.ts
13
src/main.ts
@@ -544,8 +544,8 @@ export default class ImmersePlugin extends Plugin {
|
||||
const task = this.data.tasks.find(t => t.id === taskId);
|
||||
if (!task) return;
|
||||
|
||||
// Stop any existing timer
|
||||
this.stopTimer();
|
||||
// Stop any existing timer, preserving actual time
|
||||
this.stopTimer(true);
|
||||
|
||||
// Set active task
|
||||
this.activeTaskId = taskId;
|
||||
@@ -606,7 +606,7 @@ export default class ImmersePlugin extends Plugin {
|
||||
const task = this.data.tasks.find(t => t.id === taskId);
|
||||
if (!task) return;
|
||||
|
||||
this.stopTimer();
|
||||
this.stopTimer(true);
|
||||
this.activeTaskId = taskId;
|
||||
task.isActive = true;
|
||||
this.isBreakMode = false;
|
||||
@@ -796,7 +796,7 @@ export default class ImmersePlugin extends Plugin {
|
||||
this.refreshView();
|
||||
}
|
||||
|
||||
stopTimer() {
|
||||
stopTimer(preserveActualTime: boolean = false) {
|
||||
if (this.timerInterval) {
|
||||
window.clearInterval(this.timerInterval);
|
||||
this.timerInterval = null;
|
||||
@@ -806,11 +806,12 @@ export default class ImmersePlugin extends Plugin {
|
||||
const task = this.data.tasks.find(t => t.id === this.activeTaskId);
|
||||
if (task) {
|
||||
task.isActive = false;
|
||||
// Reset actual time when manually stopping (not after a break)
|
||||
// This allows starting fresh next time
|
||||
// Only reset actual time when manually stopping (not when resuming after break)
|
||||
if (!preserveActualTime) {
|
||||
task.actualMinutes = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.isTimerRunning = false;
|
||||
this.activeTaskId = null;
|
||||
|
||||
Reference in New Issue
Block a user