Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
204 commits
Select commit Hold shift + click to select a range
2f606c8
init
chrskerr Feb 21, 2024
0f53e23
added main.js
chrskerr Feb 21, 2024
06ff07a
fixed git ignore
chrskerr Feb 21, 2024
3940e81
tightened up styles and column logic
chrskerr Feb 21, 2024
710c913
implemented drag and drop, content editing, improved styling
chrskerr Feb 21, 2024
ff63bc2
drag and drop bugs
chrskerr Feb 21, 2024
43bb9a2
added markdown support, made the editor much cleaner, and tidied styles
chrskerr Feb 22, 2024
ed63e4b
added owner and soonish column
chrskerr Feb 22, 2024
8dac0ba
allow to set users through settings
chrskerr Feb 23, 2024
63744c7
add dblclick handler
chrskerr Feb 23, 2024
bc9207a
shift enter line break in tasks
chrskerr Feb 23, 2024
28fb49d
added columns setting
chrskerr Feb 23, 2024
8bf06e4
bump version
chrskerr Feb 23, 2024
f5753f4
updated version
chrskerr Feb 23, 2024
29d7ca3
bump version
chrskerr Feb 23, 2024
c7e35d6
added add_new button and keyboard interactions
chrskerr Feb 24, 2024
76276c1
added task delete, and fixed up UI interactions
chrskerr Feb 28, 2024
9754fd1
fixed a tag click
chrskerr Feb 29, 2024
63ffe4d
added tag dropdowns and updated filter component
chrskerr Mar 4, 2024
f678cde
added editor view kanban and started building settings
chrskerr May 27, 2024
4f634d9
big update to per-note view
chrskerr Jun 1, 2024
8001c2b
added ability to make new kanban, and filter by scope
chrskerr Jun 3, 2024
bdb1270
add release workflow tag
chrskerr Jun 3, 2024
545e254
Delete main.css
chrskerr Jun 3, 2024
649aa77
Update README.md
kate-hobbs Jun 3, 2024
ae88ed8
Update README.md
kate-hobbs Jun 3, 2024
dec9fe3
Update README.md
kate-hobbs Jun 3, 2024
5e32661
updated manifest
chrskerr Jun 3, 2024
620fceb
Merge branch 'master' of https://github.com/chrskerr/obsidian-project…
chrskerr Jun 3, 2024
f378db1
Create LICENSE
chrskerr Jun 3, 2024
d55e42f
Update manifest.json
chrskerr Jun 3, 2024
963c058
Update manifest.json
chrskerr Jun 20, 2024
808225d
improved task content parsing
chrskerr Jul 1, 2024
e5467da
fixed version number
chrskerr Jul 1, 2024
820fac2
add task content filtering
chrskerr Jul 9, 2024
eb5da8c
bump package
chrskerr Jul 9, 2024
74a956e
added showFilepath seting
chrskerr Jul 10, 2024
07f832c
updated to support block links
chrskerr Jul 10, 2024
d3d7e95
package bump
chrskerr Jul 10, 2024
438105e
gac allow non-latin tags & columns
chrskerr Aug 31, 2024
ddb0c72
few more tests
chrskerr Aug 31, 2024
064b3ac
Added setting & functionality for tags in footers.
source-toad Jul 18, 2024
5a8c1d9
Fixed tag deletion bug/conflict
source-toad Jul 19, 2024
5c662f1
update version, few tweaks
chrskerr Sep 1, 2024
b765198
revert fallback consolidate tags behaviour
chrskerr Sep 1, 2024
51f2569
fix tests
chrskerr Sep 1, 2024
5e7e13a
Update README.md
chrskerr Dec 19, 2024
e8fd6f6
update package lock
Mar-vo Jan 15, 2025
21316a1
Add toggle for uncategorized section showing
Mar-vo Jan 16, 2025
1bf4472
Make uncategorized visibility into a three option dropdown
Mar-vo Jan 16, 2025
6d3f337
Make Done column flexible via setting as well
Mar-vo Jan 16, 2025
55d632a
reset package lock
Mar-vo Jan 16, 2025
69885df
Adjust version to 1.2.8 in package lock
Mar-vo Jan 16, 2025
3470d28
Validate VisibilityOption using safeParse
Mar-vo Jan 16, 2025
0133986
add zod validation to scope options
Mar-vo Jan 16, 2025
4491080
fully implement enum types in settings.ts
Mar-vo Jan 16, 2025
9255410
Reorder options in dropdown to be consistent
Mar-vo Jan 16, 2025
7a49c73
Properly use type enums in components
Mar-vo Jan 16, 2025
3094b8c
Update README.md
chrskerr Jan 18, 2025
0393208
Merge pull request #38 from Mar-vo/master
Mar-vo Jan 21, 2025
41ca134
feat: preserve task indentation during parsing and serialization
ErikaRS Jun 6, 2025
bfd16ab
chore: remove AGENT.md from tracking
ErikaRS Jun 6, 2025
93d1935
refactor: extract DEFAULT_DONE_STATUS_MARKERS constant and add compre…
ErikaRS Jun 23, 2025
db6f30f
Bump the npm_and_yarn group across 1 directory with 5 updates
dependabot[bot] Aug 7, 2025
49e8f50
Merge pull request #45 from ErikaRS/dependabot/npm_and_yarn/npm_and_y…
ErikaRS Aug 7, 2025
5581312
Potential fix for code scanning alert no. 1: Workflow does not contai…
ErikaRS Aug 7, 2025
9a40148
Merge pull request #46 from ErikaRS/alert-autofix-1
ErikaRS Aug 7, 2025
81d3dd5
docs: update README with recent feature documentation
ErikaRS Aug 10, 2025
15c8896
docs: remove unmaintained warning from README
ErikaRS Aug 10, 2025
4539f18
chore: update package-lock.json with dependency version bumps
ErikaRS Aug 10, 2025
0a71c70
docs: add link to official Obsidian plugin development guide
ErikaRS Aug 10, 2025
26e24d3
chore: bump version to 1.2.9
ErikaRS Aug 10, 2025
62d4207
docs: update repository URLs from chrskerr to ErikaRS
ErikaRS Aug 10, 2025
1601cb4
Make the author value in manifest.json consistent with community list
claremacrae Aug 13, 2025
5054867
docs: Add documentation for colored column functionality
ErikaRS Aug 17, 2025
7774185
Add functionality for color columns.
ErikaRS Aug 17, 2025
88b858e
Fix task parsing to exclude Obsidian backlinks
ErikaRS Aug 31, 2025
7809e0e
Add AGENTS.md to .gitignore
ErikaRS Aug 31, 2025
071a871
Add test for markdown links and rename obsidian test group
ErikaRS Sep 1, 2025
d8856cf
Fix archive preserving custom done markers
ErikaRS Sep 1, 2025
efb0c27
chore: bump version to 1.2.10
ErikaRS Sep 1, 2025
922c7fc
feat: Add ignored status markers for non-task filtering
ErikaRS Sep 1, 2025
4143cac
Merge pull request #48 from claremacrae/patch-1
ErikaRS Sep 1, 2025
9cb33a2
chore: bump version to 1.2.11
ErikaRS Sep 1, 2025
11c4389
Add maintainability improvement opportunities analysis
ErikaRS Sep 1, 2025
66f201a
Add architecture section to README
ErikaRS Sep 1, 2025
b269643
chore: bump version to 1.2.12
Oct 15, 2025
ef6d9a7
Merge pull request #59 from ErikaRS/fix/perpetual-update-button-issue-57
ErikaRS Oct 15, 2025
7b00d64
Add .beads/ to gitignore
Oct 21, 2025
2459ce7
Support * and + list markers for tasks
Oct 21, 2025
46c39d8
Fix dependabot alerts by upgrading vite to 7.0.8
Oct 21, 2025
fe12e97
Wrap file-menu event listener in registerEvent (ref #56)
Oct 21, 2025
912e5ce
Add saved filters feature design
Oct 21, 2025
3a4c873
Refactor saved filters to use alphabetical ordering
Oct 21, 2025
163dc44
Organize planning artifacts with naming convention
Oct 21, 2025
99a67b6
Add unified saved filters UI for content and tag filters
Oct 21, 2025
1bebe7d
Phase 3: Add active filter state tracking and 'Using saved' indicator
Oct 21, 2025
4eb05ba
Improve saved filters UI: stable layout and inline active indicator
Oct 22, 2025
8adb4c7
Update design doc to reflect implemented UI changes
Oct 22, 2025
8cd2091
feat: Phase 4 - Implement filter persistence on reload
Oct 22, 2025
c5945e0
docs: Add commit references to completed phases in design doc
Oct 22, 2025
d9ca308
docs: Convert commit references to GitHub links
Oct 22, 2025
d206fda
feat: Implement Phase 5 - Delete saved filters with confirmation modal
Oct 22, 2025
00e0fe5
docs: Update Phase 5 implementation reference
Oct 22, 2025
28c03e5
feat: Phase 6 polish - inline buttons, spacing, transitions, and acce…
Oct 22, 2025
c7ee8b9
docs: Update Phase 6 plan with completion status and commit reference
Oct 22, 2025
c6e78b0
docs: Mark saved filters design as complete and update filename
Oct 22, 2025
1a3f7c3
docs: Update README with saved filters and list marker features
Oct 22, 2025
8147036
docs: Add saved filters screenshot to README
Oct 22, 2025
788adc4
docs: add file filter design plan and mark filter save design as comp…
Oct 22, 2025
67f37e6
feat: add basic file filter (Phase 1)
Oct 22, 2025
eb3bbc8
docs: update file filter plan with Phase 1 commit reference
Oct 22, 2025
34608c7
Add autocomplete support for file filter (Phase 2)
Oct 23, 2025
5b6230d
Add persistence for file filter (Phase 3)
Oct 23, 2025
37ef385
Update plan: Mark Phase 3 (Persistence) as complete
Oct 23, 2025
59d5272
Implement Phase 4: Save & Load file filters
Oct 23, 2025
f71ba4e
Update plan: Mark Phase 4 (Save & Load Filters) as complete
Oct 23, 2025
a29d530
Fix UI jumpiness: Always show 'Saved filters' section
Oct 23, 2025
f516709
Fix file filter styling to match content and tag filters
Oct 23, 2025
044f803
Complete file filter feature and rename Add buttons to Save
Oct 23, 2025
e430041
Refactor planning artifacts: rename plans/ to specs/ and update namin…
Oct 23, 2025
de63982
Track AGENTS.md in version control and add PR message guidelines
Oct 23, 2025
fd976fc
Convert filters to vertical panel layout
Oct 23, 2025
c4080fd
docs: clarify AI attribution required on all commits
Oct 23, 2025
5ce6283
docs: mark Phase 2 complete in SPEC_0003
Oct 23, 2025
45683b0
docs: update Phase 3 plan for vertical sidebar layout
Oct 23, 2025
45e1407
docs: simplify Phase 3 to match overall UI quality
Oct 23, 2025
e202239
feat: add filter UI polish with ghost-style Clear buttons and focus s…
Oct 23, 2025
e0aff17
feat: persist filter section expanded/collapsed state
Oct 23, 2025
887a3d0
feat: add resizable sidebar with improved UX
Oct 23, 2025
f889e66
docs: add commit references to implementation phases in SPEC_0003
Oct 23, 2025
4be8e7a
feat: add deselect functionality for saved filters
Oct 23, 2025
5391e98
fix: standardize Save/Clear button styling across all filter types
Oct 23, 2025
8cb25cd
docs: mark filter styling improvements spec as complete
Oct 23, 2025
eb1a603
docs: update README with filters sidebar and file filtering
Oct 23, 2025
6ca2d8d
chore: bump version to 1.2.13
Oct 23, 2025
02d83ae
chore: sync package-lock.json version to 1.2.13
Oct 23, 2025
7f3fba2
refactor: replace Showdown with Obsidian MarkdownRenderer
Oct 28, 2025
62cfc58
fix: register hover-link source for wiki-link previews
Oct 28, 2025
b9b4b50
chore: bump version to 1.2.14
Oct 28, 2025
df322b4
fix: show tag filter even when no tags exist
Oct 28, 2025
a9c70ec
fix: update display status when marking task as done via drag-and-drop
ErikaRS Nov 8, 2025
eaab8ab
chore: bump version to 1.2.15
ErikaRS Nov 8, 2025
342b0ab
docs: add release planning with thematic issue groupings
ErikaRS Nov 10, 2025
7cb00f9
docs: update RELEASES.md with all 28 open issues
ErikaRS Nov 10, 2025
663c967
fix: restore filter state on app reload for all filter types
Nov 13, 2025
59fca0c
chore: bump version to 1.2.16
Nov 13, 2025
1577bcc
docs: add task interaction controls design spec
Nov 14, 2025
1c3cb40
feat: restructure task card with quick actions bar (Phase 1)
Nov 14, 2025
e44fb6e
docs: update SPEC_0004 with Phase 1 commit reference
Nov 14, 2025
2d40c23
feat: add quick move to done with toggle functionality
Nov 14, 2025
0aa56a0
docs: update SPEC_0004 with Phase 2 completion details
Nov 14, 2025
ad3e145
feat: add go-to-file navigation from task card footer
Nov 14, 2025
ffe4c27
docs: update SPEC_0004 with Phase 3 completion
Nov 14, 2025
4ce1456
docs: update SPEC_0004 with mode-toggle design pattern
Nov 14, 2025
10be9dc
feat: implement selection mode toggle for columns
Nov 14, 2025
430546a
docs: update SPEC_0004 with Phase 4 completion
Nov 14, 2025
45917b6
docs: update SPEC_0004 with refined toggle design
Nov 14, 2025
d30d916
refactor: update mode toggle to flat design with left alignment
Nov 14, 2025
5aa37c9
docs: update SPEC_0004 to segmented control design
Nov 14, 2025
782e1bd
feat: implement segmented control for mode toggle
Nov 14, 2025
dae4e5a
refactor: make segmented control more subtle and unobtrusive
Nov 14, 2025
0dcedc8
refactor: make segmented control smaller and more subordinate
Nov 14, 2025
9b5b2ae
refactor: unify segmented control styling and toggle behavior
Nov 14, 2025
12ed068
docs: update SPEC_0004 Phase 4 with all implementation commits
Nov 14, 2025
98c5202
refactor: use outline-only segmented control container
Nov 14, 2025
c03400f
refactor: transparent segmented control matching task card style
Nov 14, 2025
b5fa2dd
feat: add sliding animation to segmented control
Nov 14, 2025
7464c5e
revert: remove sliding animation from segmented control
Nov 14, 2025
a26c55e
feat: segmented control adapts to column color
Nov 14, 2025
d552b85
fix: use color-mix for proper transparent background
Nov 14, 2025
f65fab8
fix: mix column color with white for lighter background
Nov 14, 2025
9a5547a
refactor: unify segmented control styling - no borders, lighter shades
Nov 14, 2025
807cbfb
fix: improve contrast and text color on segmented control
Nov 14, 2025
89dfeb8
refactor: match default toggle styling to colored columns pattern
Nov 14, 2025
a5ff8ea
docs: update SPEC_0004 Phase 4 with complete implementation history
Nov 14, 2025
b920673
feat: implement task selection in selection mode (Phase 5)
ErikaRS Nov 15, 2025
5e1c70e
docs: add commit reference for Phase 5
ErikaRS Nov 15, 2025
4d31db4
feat: add bulk action menu for selected tasks
ErikaRS Nov 15, 2025
0b36af1
docs: update spec with phase 6 commit reference
ErikaRS Nov 15, 2025
6ed5314
feat: add accessibility improvements and compact UI layout
ErikaRS Nov 15, 2025
5088d92
docs: mark SPEC_0004 as complete
ErikaRS Nov 15, 2025
b777a68
chore: bump version to 1.3.0
ErikaRS Nov 15, 2025
26a803b
docs: update README for task selection and bulk operations features
ErikaRS Nov 15, 2025
d83aa32
chore(deps-dev): bump js-yaml
dependabot[bot] Nov 18, 2025
d8b2d81
Merge pull request #68 from ErikaRS/dependabot/npm_and_yarn/npm_and_y…
ErikaRS Nov 18, 2025
52049c6
docs: update AGENTS.md with testing and process guidelines
ErikaRS Nov 19, 2025
a10ca09
chore: bump version to 1.3.1
ErikaRS Nov 19, 2025
2c2a6f2
fix: ensure long file names wrap on task cards
ErikaRS Nov 21, 2025
d237cdc
fix: ensure newly created tasks are editable
ErikaRS Nov 21, 2025
b411841
fix: support nested tags and preserve column tag casing
ErikaRS Nov 21, 2025
9fea76c
chore: bump version to 1.3.2
ErikaRS Nov 23, 2025
2b8d9ce
chore: bump version to 1.3.3
ErikaRS Nov 23, 2025
9dd7e56
docs: restructure AGENTS.md into domain-specific READMEs
ErikaRS Nov 23, 2025
fa7b96b
Fix: handle column names with spaces/invalid characters in tags
ErikaRS Nov 24, 2025
f49ce71
chore: bump version to 1.3.4
ErikaRS Nov 24, 2025
522f1b9
docs: add product spec for column width and flow direction
claude Jan 2, 2026
21a636d
docs: correct column width/direction spec based on verification
claude Jan 2, 2026
0cf2757
Merge pull request #82 from ErikaRS/claude/column-width-direction-spe…
ErikaRS Jan 5, 2026
4c4ad44
feat: implement Phase 1 - column width configuration
claude Jan 5, 2026
f2ecc60
chore: add deployment script for manual testing
ErikaRS Jan 5, 2026
b072b51
Merge remote-tracking branch 'origin/main' into claude/column-width-d…
ErikaRS Jan 5, 2026
eb85ba1
test: add comprehensive columnWidth validation tests
ErikaRS Jan 5, 2026
a8c79c5
docs: mark Phase 1 (column width) as complete in SPEC_0005
ErikaRS Jan 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: Release Obsidian plugin

on:
push:
tags:
- "*"

permissions:
contents: write

jobs:
build:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3

- name: Use Node.js
uses: actions/setup-node@v3
with:
node-version: "18.x"

- name: Build plugin
run: |
npm install
npm run build

- name: Create release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
tag="${GITHUB_REF#refs/tags/}"

gh release create "$tag" \
--title="$tag" \
--draft \
main.js manifest.json styles.css
53 changes: 31 additions & 22 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,22 +1,31 @@
# vscode
.vscode

# Intellij
*.iml
.idea

# npm
node_modules

# Don't include the compiled main.js file in the repo.
# They should be uploaded to GitHub releases instead.
main.js

# Exclude sourcemaps
*.map

# obsidian
data.json

# Exclude macOS Finder (System Explorer) View States
.DS_Store
# vscode
.vscode

# Intellij
*.iml
.idea

# npm
node_modules

# Don't include the compiled main.js file in the repo.
# They should be uploaded to GitHub releases instead.
main.js

# Exclude sourcemaps
*.map

# obsidian
data.json

# Exclude macOS Finder (System Explorer) View States
.DS_Store

# tmp directory
tmp/

# temporary planning artifacts
tmp_specs/

# beads
.beads/
14 changes: 14 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# AI Agent Guidelines

## 📚 Onboarding
At the start of each session, read:
1. `README.md` - High-level project overview
2. `README.architecture.md` - Project structure and architecture
3. `README.process.md` - Commit standards and release workflows
4. `README.development.md` - Build commands and testing
5. `README.planning.md` - Spec creation and planning standards

## ✅ Quality Gates
When writing code, you must not finish until all of these succeed:
1. `npm run build` (Runs TypeCheck + Build)
2. `npm test` (Runs Vitest)
1 change: 1 addition & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
See AGENTS.md for instructions.
21 changes: 21 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2024 Chris Kerr

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
133 changes: 133 additions & 0 deletions MAINTAINABILITY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
# Maintainability Improvement Opportunities

This document outlines code maintainability improvements identified during codebase analysis. These changes should be considered for future development iterations to enhance code quality, reduce technical debt, and improve developer experience.

## Code Organization & Architecture

### 1. Extract Configuration Management
- **Issue**: Configuration logic is scattered across multiple files (`settings_store.ts`, `text_view.ts`, `store.ts`)
- **Improvement**: Create a centralized configuration service/class with validation
- **Impact**: Easier to maintain settings, clearer separation of concerns

### 2. Reduce Coupling Between UI and Business Logic
- **Issue**:
- `KanbanView` class has too many responsibilities (view logic, settings, task management)
- `Task` constructor has 7 parameters, some optional
- **Improvement**: Consider dependency injection or builder pattern for Task creation
- **Impact**: Better testability, clearer responsibilities

### 3. Improve File Structure
- **Issue**:
- Tasks store contains complex initialization logic that could be extracted
- Mixed concerns in single files (validation, constants, and business logic in `task.ts`)
- **Improvement**: Separate concerns into focused modules
- **Impact**: Easier navigation, better code organization

## Error Handling & Robustness

### 4. Add Comprehensive Error Handling
- **Issue**: File operations in `store.ts` lack error handling (vault.read operations)
- **Improvement**: Add try-catch blocks and graceful degradation for parsing failures
- **Impact**: Better user experience, fewer crashes

### 5. Improve Async Operations
- **Issue**: Multiple unhandled promises in `store.ts` (lines 76-78, 99-101)
- **Improvement**: Proper promise handling and error boundaries for file system operations
- **Impact**: Prevent silent failures, better debugging

## Code Quality & Maintainability

### 6. Reduce Code Duplication
- **Issue**:
- Settings retrieval pattern repeated 3 times in `store.ts` (lines 56-59, 85-88, 109-112)
- Similar validation logic in `task.ts` could be consolidated
- **Improvement**: Extract common patterns into reusable functions
- **Impact**: DRY principle, easier maintenance

### 7. Improve Type Safety
- **Issue**:
- Brand types like `TaskString` and `DoneStatusMarkers` could have runtime validation
- Magic strings like "archived" should be constants
- **Improvement**: Add runtime type guards and extract constants
- **Impact**: Fewer runtime errors, better IntelliSense

### 8. Extract Complex Logic
- **Issue**:
- Task constructor is 60+ lines with complex parsing logic
- Tag processing logic could be its own service
- **Improvement**: Break down large functions, create specialized services
- **Impact**: Better readability, easier testing

## Testing & Documentation

### 9. Expand Test Coverage
- **Issue**: Only 3 test files for 15 TypeScript files (~20% coverage by file count)
- **Missing**: Tests for `store.ts`, `actions.ts`, settings functionality, integration tests
- **Improvement**: Add comprehensive unit and integration tests
- **Impact**: Catch regressions, safer refactoring

### 10. Add Documentation
- **Issue**:
- Complex regex patterns lack explanation
- No JSDoc for public APIs
- Missing README sections on architecture/contributing
- **Improvement**: Add comprehensive documentation
- **Impact**: Easier onboarding, better maintainability

## Performance & Scalability

### 11. Optimize File Processing
- **Issue**:
- No debouncing for rapid file changes beyond task updates
- Large files could cause performance issues without streaming
- **Improvement**: Add proper debouncing and streaming for large files
- **Impact**: Better performance with large vaults

### 12. Memory Management
- **Issue**:
- Maps in `store.ts` grow indefinitely without cleanup
- Event listeners not properly cleaned up on plugin disable
- **Improvement**: Implement proper cleanup strategies
- **Impact**: Prevent memory leaks

## Modern Development Practices

### 13. Add Linting Rules
- **Issue**: ESLint config is basic, missing rules for complexity, naming conventions
- **Improvement**:
- Add complexity rules, naming conventions
- Add Prettier for formatting
- Import/export organization rules
- **Impact**: Consistent code style, catch potential issues

### 14. Improve Build Process
- **Issue**:
- No pre-commit hooks
- Missing bundle analysis
- No automated testing in CI
- **Improvement**: Add comprehensive development tooling
- **Impact**: Catch issues early, better development workflow

## Priority Recommendations

### High Priority
1. **Error Handling** (#4, #5) - Critical for stability
2. **Code Duplication** (#6) - Easy wins with immediate impact
3. **Test Coverage** (#9) - Essential for safe refactoring

### Medium Priority
4. **Configuration Management** (#1) - Foundation for other improvements
5. **Type Safety** (#7) - Improves developer experience
6. **Documentation** (#10) - Helps with team collaboration

### Low Priority
7. **File Structure** (#3, #8) - Can be done incrementally
8. **Performance** (#11, #12) - Address when scaling issues arise
9. **Development Tooling** (#13, #14) - Nice to have improvements

## Implementation Notes

- These improvements should be tackled incrementally
- Consider creating feature branches for each major improvement area
- Some changes may require coordination with pending work from other contributors
- Test coverage should be expanded before major refactoring efforts
63 changes: 63 additions & 0 deletions README.architecture.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# Architecture Guide

## Project Structure
- `src/entry.ts` - Plugin entry point
- `src/ui/` - Svelte UI components and views
- `src/ui/tasks/` - Task model, store, and actions
- `src/parsing/` - Parsing utilities (tags, kebab case)
- `src/ui/settings/` - Settings store and configuration
- `specs/` - Design documents (tracked in git)
- `tmp_specs/` - Temporary planning artifacts (gitignored)

## System Architecture

This plugin follows a modular architecture with clear separation between parsing, UI, and business logic layers.

### Core Components

**Plugin Entry** (`src/entry.ts`)
- Main plugin class extending Obsidian's Plugin
- Handles view registration and file menu integration
- Manages plugin lifecycle and workspace events

**View Layer** (`src/ui/`)
- `text_view.ts`: Main view controller extending TextFileView
- `main.svelte`: Primary Svelte component for the kanban interface
- Component-based UI with reactive stores for state management

**Task Management** (`src/ui/tasks/`)
- `task.ts`: Core Task model with parsing and serialization
- `store.ts`: Reactive task store with file system integration
- `actions.ts`: Task manipulation operations (move, archive, delete)

**Parsing Layer** (`src/parsing/`)
- `kebab/`: String normalization utilities for consistent naming
- `tags/`: Tag extraction and processing from task content

**Configuration** (`src/ui/settings/`)
- Settings store with reactive updates
- Column management and color configuration
- Scope and filtering preferences

### Data Flow

```
Obsidian Files → File System Events → Task Parsing → Reactive Stores → Svelte UI
↓ ↑
Task Actions ← User Interactions ← UI Components
```

**File Monitoring**: The plugin watches for file changes using Obsidian's vault events and automatically updates the task store when markdown files are modified.

**Task Parsing**: Raw markdown content is parsed using regex patterns to identify task strings, extract metadata (tags, status, indentation), and create Task objects.

**State Management**: Svelte stores provide reactive state management, automatically updating the UI when tasks or settings change.

**Bidirectional Sync**: Changes made in the kanban UI are serialized back to the original markdown files, maintaining consistency between the kanban view and file content.

### Key Design Patterns

- **Observer Pattern**: File system events trigger task store updates
- **Brand Types**: Type-safe string validation for markers and identifiers
- **Reactive Stores**: Svelte-based state management for UI consistency
- **Command Pattern**: Task actions encapsulate operations for undo/redo support
41 changes: 41 additions & 0 deletions README.development.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Development Guide

## Tech Stack
- **Language**: TypeScript (strict mode)
- **UI Framework**: Svelte 4
- **Build Tool**: ESBuild
- **Testing**: Vitest
- **Plugin Framework**: Obsidian API
- **Package Manager**: npm

## Build & Development Commands

**Development**
```bash
npm run dev
```
Starts ESBuild in watch mode for live development. Built files go to root directory.

**Build (Production)**
```bash
npm run build
```
Runs TypeScript type checking (`tsc -noEmit -skipLibCheck`) then builds optimized bundle with ESBuild. Always run this before releasing to catch type errors.

**Test**
```bash
npm test
```
Runs the Vitest test suite. Tests are located in `src/` alongside source files.

**Version Bump**
```bash
npm run version
```
Automated script that updates version in manifest.json and versions.json, then stages the files for commit.

## Testing
Run tests before every commit. Only commit if tests pass. Never disable tests
to get them to pass. Only modifiy tests to get them to pass if you are SURE
the failure is expected due to the PR. Otherwise, fix the non-test code or
check with the human operator.
Loading