Recurring Task Archiver
pendingby Shahryar Sahebekhtiari (WASP-Outis)
A powerful plugin for automatically managing recurring tasks.
🔄 Recurring Task Archiver for Obsidian
Automate your recurring tasks and keep your vault clean
English
✨ Features
- 🔁 Automatic Recurrence: Automatically create next task instance when completing recurring tasks
- 📦 Smart Archiving: Archive completed tasks in organized dated folders
- 🔍 Fuzzy Matching: Tolerant of typos in recurrence rules (e.g., "weakly" → "weekly")
- 🌐 Bilingual Support: Full support for English and Persian (Farsi)
- ⚙️ Highly Customizable:
- Custom field names
- Flexible date formats
- Configurable archive paths
- Editable recurrence rules
- 🛡️ Safe & Reliable:
- Race condition protection
- Data validation
- Error handling with detailed notifications
- 🎯 Flexible Scheduling:
- Daily, Weekly, Monthly, Yearly
- Custom intervals (e.g., every 2 weeks, every 4 months)
- Easy to add your own rules
📦 Installation
Method 1: From Obsidian Community Plugins (Recommended)
- Open Obsidian Settings
- Navigate to Community Plugins
- Click Browse and search for "Recurring Task Archiver"
- Click Install then Enable
Method 2: Manual Installation
- Download the latest release from GitHub Releases
- Extract
main.js,manifest.json, andstyles.cssto:<your-vault>/.obsidian/plugins/recurring-task-archiver/ - Reload Obsidian
- Enable the plugin in Settings → Community Plugins
🚀 Quick Start Guide
Step 1: Setup Your Task Template
Create a template file (e.g., Templates/Task.md):
---
completed: false
archived: false
due: 2025-01-15
recurrence: Weekly
created: 2025-01-08
---
# Task Title
## 🎯 Goal
- Your main objective here
## ✅ Subtasks
- [ ] First subtask
- [ ] Second subtask
## 📝 Notes
Your notes here...
Step 2: Create Your First Recurring Task
- Use your template to create a task
- Fill in the details:
completed: Set tofalseinitiallydue: Set the due date (format:YYYY-MM-DD)recurrence: Choose from:None(هیچ)Daily(هر روز)Weekly(هر هفته)Every 2 Weeks(هر 2 هفته)Monthly(هر ماه)Every 4 Months(هر 4 ماه)Yearly(هر سال)
Example:
---
completed: false
archived: false
due: 2025-01-15
recurrence: Weekly
created: 2025-01-08
---
# 📅 Weekly Review
## 🎯 Goal
- Review past week and plan next week
## ✅ Subtasks
- [ ] Review calendar
- [ ] Check completed tasks
- [ ] Plan next week priorities
Step 3: Complete the Task
When you finish the task:
- Change
completed: falsetocompleted: true - Save the file
- A modal will appear asking:
- "✅ Yes, Recur & Archive": Creates next instance and archives current
- "📦 No, Just Archive": Only archives without creating next instance
- "❌ Cancel": Do nothing
What happens automatically:
- ✅ New task created for next week (2025-01-22)
- 📦 Current task marked as
archived: true - 📁 Current task moved to
Archive/Tasks/2025/01/ - 🔄 Subtasks in new task are unchecked (if enabled in settings)
⚙️ Configuration
Navigate to Settings → Recurring Task Archiver to customize:
🌐 Language
- Switch between English and فارسی
🔄 Recurrence Rules
Edit or create custom recurrence rules:
- Amount: Number of units to add
- Unit: day, week, month, or year
- Enable/Disable: Toggle rules on/off
Example: Create "Every 3 Days" rule:
- Amount:
3 - Unit:
day(s)
📁 File Paths
- Template File Path: Your task template location
- Default:
Templates/Task.md
- Default:
- Archive Folder Path: Where completed tasks go
- Default:
Archive/Tasks
- Default:
- Use Dated Folders: Organize by date (recommended)
- Creates:
Archive/Tasks/2025/01/
- Creates:
- Date Format for Folders: Customize folder structure
- Default:
YYYY/MM - Options:
YYYY,YYYY-MM,YYYY/MM/DD, etc.
- Default:
⚡ Behavior
- Confirm Before Recurring: Show confirmation modal
- ✅ Recommended for safety
- Copy Subtasks: Copy checkboxes to new task
- All subtasks will be unchecked in new task
🛠️ Advanced Settings
- Date Format: Format for due dates
- Default:
YYYY-MM-DD - Supports:
DD/MM/YYYY,MM-DD-YYYY, etc.
- Default:
- Debounce Delay: Delay before processing (ms)
- Default:
1000(1 second) - Prevents multiple triggers on quick saves
- Default:
- Max Concurrent Processing: Simultaneous task limit
- Default:
3 - Range: 1-10
- Default:
📝 Frontmatter Field Names
Customize field names to match your workflow:
- Completed Field: Default
completed - Archived Field: Default
archived - Due Date Field: Default
due - Recurrence Field: Default
recurrence - Created Field: Default
created
Example with custom fields:
---
status: done # instead of completed
isArchived: false # instead of archived
deadline: 2025-01-15 # instead of due
repeat: Weekly # instead of recurrence
dateCreated: 2025-01-08 # instead of created
---
Then in settings, set:
- Completed Field →
status - Archived Field →
isArchived - Due Date Field →
deadline - etc.
🎯 Use Cases & Examples
1️⃣ Daily Habits
---
completed: false
recurrence: Daily
due: 2025-01-15
---
# 💪 Morning Exercise
- [ ] 10 push-ups
- [ ] 5 minutes meditation
2️⃣ Weekly Reviews
---
completed: false
recurrence: Weekly
due: 2025-01-17
---
# 📊 Weekly Review
- [ ] Review accomplishments
- [ ] Plan next week
- [ ] Update goals
3️⃣ Monthly Bills
---
completed: false
recurrence: Monthly
due: 2025-01-30
---
# 💰 Pay Rent
- [ ] Transfer money
- [ ] Save receipt
4️⃣ Quarterly Reports
---
completed: false
recurrence: Every 4 Months
due: 2025-04-01
---
# 📈 Quarterly Business Review
- [ ] Analyze metrics
- [ ] Write report
- [ ] Present findings
🔌 Recommended Companion Plugins
This plugin works standalone, but pairs well with:
- Metadata Menu: Visual interface for editing frontmatter
- Makes changing
completedfield easier - Dropdown menus for recurrence selection
- Makes changing
- Templater: Advanced template system
- Dynamic date insertion
- Auto-fill fields
- Dataview: Query and display tasks
- Create task dashboards
- Track completion rates
- Calendar: Visual calendar view
- See due dates at a glance
- Tasks: Advanced task management
- Filter by recurrence
- Group by due date
Note: This plugin does NOT require any other plugins to function!
🐛 Troubleshooting
Issue: Plugin doesn't trigger after marking task complete
Solution:
- Enable Debug Logging in settings
- Check Developer Console (
Ctrl+Shift+IorCmd+Option+I) - Look for errors
- Ensure:
- Field name matches settings (case-sensitive)
completedis set totrue(boolean, not string)recurrencefield has valid value
Issue: Wrong date format in new task
Solution:
- Check Date Format in Advanced Settings
- Ensure it matches your preferred format
- Plugin supports multiple formats automatically:
YYYY-MM-DD(default)DD/MM/YYYYMM-DD-YYYY- etc.
Issue: Tasks not archiving to correct folder
Solution:
- Check Archive Folder Path in settings
- Verify path exists or plugin will create it
- Check Use Dated Folders toggle
- Verify Date Format for Folders matches your preference
Issue: Recurrence rule not recognized
Solution:
- Plugin uses fuzzy matching
- Handles typos: "weakly" → "weekly"
- Accepts English and Persian labels
- Case-insensitive
- If still not working:
- Check spelling in frontmatter
- Verify rule is enabled in settings
- Try exact match:
Daily,Weekly, etc.
Issue: Multiple task copies created
Solution:
- Increase Debounce Delay in Advanced Settings
- Default: 1000ms (1 second)
- Try: 2000ms or higher if issue persists
🔐 Privacy & Data
- ✅ 100% Local: All processing happens on your device
- ✅ No Cloud: No data sent to external servers
- ✅ No Tracking: No analytics or telemetry
- ✅ Open Source: Code is fully auditable
🤝 Contributing
Contributions are welcome! Here's how:
- Fork the repository
- Create your feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
Development Setup
# Clone the repository
git clone https://github.com/WASP-Outis/recurring-task-archiver.git
cd recurring-task-archiver
# Install dependencies
npm install
# Start development build (watches for changes)
npm run dev
# Build for production
npm run build
📝 Changelog
Version 1.0.0 (2025-01-15)
- 🎉 Initial release
- ✅ Automatic task recurrence
- 📦 Smart archiving with dated folders
- 🔍 Fuzzy matching for recurrence rules
- 🌐 Bilingual support (English/Persian)
- ⚙️ Fully customizable settings
- 🛡️ Race condition protection
- 🎯 Flexible date format support
📄 License
MIT License - see LICENSE file for details
👨💻 Author
Shahryar Sahebekhtiari
- GitHub: @WASP-Outis
- Email: Sh1380se@gmail.com
⭐ Support
If you find this plugin useful:
- ⭐ Star this repository
- 🐛 Report bugs via Issues
- 💡 Suggest features
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.