mirror of
https://github.com/devonthesofa/obsidian-note-status.git
synced 2026-07-22 12:30:24 +00:00
feat: wiki
This commit is contained in:
parent
fce5d6e325
commit
20184c8c2f
9 changed files with 423 additions and 738 deletions
|
|
@ -60,16 +60,16 @@ Track the status of your notes with a powerful, customizable status management s
|
|||
- **[[Quick Start Guide|📚 Quick Start Guide]]** - Get running in 5 minutes
|
||||
- **[[User Manual|📖 User Manual]]** - Complete feature documentation
|
||||
- **[[Configuration Guide|⚙️ Configuration Guide]]** - Settings and customization
|
||||
- **[[🚀 Performance Tuning]]** - Optimize for large vaults
|
||||
- **[[Performance Tuning|🚀 Performance Tuning]]** - Optimize for large vaults
|
||||
|
||||
### For Developers
|
||||
|
||||
- **[[Architecture Overview|🏗️ Architecture Overview]]** - Plugin structure and design
|
||||
- **[[🔧 Development Setup]]** - Contributing guide
|
||||
- **[[Development Setup|🔧 Development Setup]]** - Contributing guide
|
||||
|
||||
### Reference
|
||||
|
||||
- **[📝 Frontmatter Format](../../wiki/Frontmatter-Format)** - Technical specification
|
||||
- **[[Frontmatter Format|📝 Frontmatter Format]]** - Technical specification
|
||||
|
||||
## Data Format
|
||||
|
||||
|
|
|
|||
|
|
@ -16,222 +16,8 @@ note-status/
|
|||
└── styles/ # Modular CSS architecture
|
||||
```
|
||||
|
||||
### Design Principles
|
||||
|
||||
1. **Separation of Concerns**: Clear boundaries between UI, business logic, and data
|
||||
2. **Service-Based Architecture**: Core functionality in injectable services
|
||||
3. **Component Modularity**: Reusable UI components with clear interfaces
|
||||
4. **Event-Driven Communication**: Loose coupling via custom events
|
||||
5. **Performance-First**: Optimized for large vaults (40k+ notes tested)
|
||||
|
||||
## Core Services
|
||||
|
||||
### StatusService (`services/status-service.ts`)
|
||||
|
||||
**Purpose**: Central hub for all status-related operations
|
||||
**Key Responsibilities**:
|
||||
|
||||
- Status CRUD operations on files
|
||||
- Template and custom status management
|
||||
- Frontmatter parsing and manipulation
|
||||
- Batch operation handling
|
||||
- Status validation and normalization
|
||||
**Design Patterns**:
|
||||
- **Strategy Pattern**: Different status modification operations (set, add, remove, toggle)
|
||||
- **Observer Pattern**: Dispatches status change events
|
||||
- **Template Method**: Standardized status modification workflow
|
||||
|
||||
### StyleService (`services/style-service.ts`)
|
||||
|
||||
**Purpose**: Dynamic CSS generation and theme management
|
||||
**Key Responsibilities**:
|
||||
|
||||
- Generate CSS rules for custom status colors
|
||||
- Manage theme compatibility
|
||||
- Handle dynamic style updates
|
||||
- CSS injection and cleanup
|
||||
**CSS Generation Pattern**:
|
||||
|
||||
```css
|
||||
.status-{statusName} {
|
||||
color: {statusColor} !important;
|
||||
}
|
||||
```
|
||||
|
||||
## Component Architecture
|
||||
|
||||
### Component Hierarchy
|
||||
|
||||
```
|
||||
StatusDropdown (DropdownManager)
|
||||
├── DropdownUI
|
||||
│ ├── DropdownRender
|
||||
│ ├── DropdownPosition
|
||||
│ └── DropdownEvents
|
||||
├── StatusBar (StatusBarController)
|
||||
│ └── StatusBarView
|
||||
├── StatusPane (StatusPaneViewController)
|
||||
│ └── StatusPaneView
|
||||
└── ToolbarButton
|
||||
```
|
||||
|
||||
### StatusDropdown System
|
||||
|
||||
**Architecture**: Manager → UI → Renderer pattern
|
||||
**DropdownManager** (`components/status-dropdown/dropdown-manager.ts`):
|
||||
|
||||
- High-level dropdown operations
|
||||
- File and status management
|
||||
- Event handling coordination
|
||||
**DropdownUI** (`components/status-dropdown/dropdown-ui.ts`):
|
||||
- Core UI component management
|
||||
- DOM manipulation
|
||||
- Event listener setup/cleanup
|
||||
**DropdownRender** (`components/status-dropdown/dropdown-render.ts`):
|
||||
|
||||
- Pure rendering functions
|
||||
- DOM element creation
|
||||
- Content population
|
||||
|
||||
### StatusBar System
|
||||
|
||||
**Architecture**: Controller → View pattern
|
||||
|
||||
**StatusBarController**:
|
||||
|
||||
- Business logic and state management
|
||||
- Settings updates and re-rendering
|
||||
- Integration with status service
|
||||
|
||||
**StatusBarView**:
|
||||
|
||||
- Pure UI rendering
|
||||
- DOM manipulation
|
||||
- No business logic
|
||||
|
||||
### StatusPane System
|
||||
|
||||
**Architecture**: MVC pattern
|
||||
|
||||
**StatusPaneViewController** (Controller):
|
||||
|
||||
- Obsidian view lifecycle management
|
||||
- User interaction handling
|
||||
- Data fetching and state management
|
||||
|
||||
**StatusPaneView** (View):
|
||||
|
||||
- Pure rendering functions
|
||||
- DOM element creation
|
||||
- No state management
|
||||
|
||||
## Integration Architecture
|
||||
|
||||
### Obsidian API Integration
|
||||
|
||||
#### Workspace Integration (`integrations/workspace/`)
|
||||
|
||||
```typescript
|
||||
class WorkspaceIntegration {
|
||||
registerWorkspaceEvents(): void {
|
||||
this.app.workspace.on("file-open", this.handleFileOpen);
|
||||
this.app.workspace.on(
|
||||
"active-leaf-change",
|
||||
this.handleActiveLeafChange,
|
||||
);
|
||||
this.app.workspace.on("layout-change", this.handleLayoutChange);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Integration Points**:
|
||||
|
||||
- File open events → Status propagation
|
||||
- Active leaf changes → Toolbar updates
|
||||
- Layout changes → UI refresh
|
||||
|
||||
#### File Explorer Integration (`integrations/explorer/`)
|
||||
|
||||
**Challenge**: File explorer uses private Obsidian APIs **Solution**: Defensive programming with fallbacks
|
||||
|
||||
```typescript
|
||||
interface FileExplorerView extends View {
|
||||
fileItems: Record<
|
||||
string,
|
||||
{
|
||||
el?: HTMLElement;
|
||||
file?: TFile;
|
||||
titleEl?: HTMLElement;
|
||||
selfEl?: HTMLElement;
|
||||
}
|
||||
>;
|
||||
}
|
||||
```
|
||||
|
||||
**Performance Optimizations**:
|
||||
|
||||
- Debounced batch updates
|
||||
- DOM mutation batching
|
||||
- Memory-efficient icon management
|
||||
|
||||
#### Metadata Cache Integration (`integrations/metadata-cache/`)
|
||||
|
||||
```typescript
|
||||
class MetadataIntegration {
|
||||
registerMetadataEvents(): void {
|
||||
this.app.metadataCache.on("changed", this.handleMetadataChanged);
|
||||
this.app.metadataCache.on("resolved", this.handleMetadataResolved);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Event Flow**:
|
||||
|
||||
1. File frontmatter changes
|
||||
2. Metadata cache fires 'changed' event
|
||||
3. Plugin updates UI components
|
||||
4. Status change event propagated
|
||||
|
||||
### Event System
|
||||
|
||||
#### Custom Event Architecture
|
||||
|
||||
```typescript
|
||||
// Event dispatch pattern
|
||||
window.dispatchEvent(new CustomEvent('note-status:status-changed', {
|
||||
detail: { statuses: string[], file: string }
|
||||
}));
|
||||
|
||||
// Event listening pattern
|
||||
window.addEventListener('note-status:status-changed', this.boundHandler);
|
||||
```
|
||||
|
||||
**Event Types**:
|
||||
|
||||
- `note-status:status-changed` - Status updates
|
||||
- `note-status:update-pane` - Pane refresh requests
|
||||
- `note-status:settings-changed` - Configuration updates
|
||||
|
||||
#### Event Flow Diagram
|
||||
|
||||
```
|
||||
User Action → Component → Service → Event Dispatch → UI Updates
|
||||
↓ ↓ ↓ ↓ ↓
|
||||
Click Status → Dropdown → StatusService → Custom Event → All Components
|
||||
```
|
||||
|
||||
## Data Flow Architecture
|
||||
|
||||
### State Management
|
||||
|
||||
**Philosophy**: Services as single source of truth, components as views
|
||||
|
||||
```
|
||||
Settings (Plugin) ←→ StatusService ←→ Components
|
||||
↓
|
||||
File System (Frontmatter)
|
||||
```
|
||||
|
||||
### Status Change Flow
|
||||
|
||||
1. **User Interaction** → Component captures intent
|
||||
|
|
@ -240,34 +26,6 @@ Settings (Plugin) ←→ StatusService ←→ Components
|
|||
4. **StatusService** → Dispatches status-changed event
|
||||
5. **All Components** → Update their displays
|
||||
|
||||
### Performance Optimization Strategies
|
||||
|
||||
#### Large Vault Handling
|
||||
|
||||
**Problem**: 40k+ notes can cause UI lag **Solutions**:
|
||||
|
||||
- Pagination in status pane (configurable page size)
|
||||
- Debounced file explorer updates
|
||||
- Optional exclusion of unknown status files
|
||||
- Lazy loading of status groups
|
||||
|
||||
#### Memory Management
|
||||
|
||||
**Strategies**:
|
||||
|
||||
- Event listener cleanup on plugin unload
|
||||
- DOM element cleanup in component destroy methods
|
||||
- Weak references where applicable
|
||||
- Batch DOM updates to prevent layout thrashing
|
||||
|
||||
#### File System Optimization
|
||||
|
||||
**Techniques**:
|
||||
|
||||
- Batch frontmatter updates
|
||||
- Debounced metadata cache operations
|
||||
- Intelligent file filtering before DOM updates
|
||||
|
||||
## CSS Architecture
|
||||
|
||||
### Modular CSS Structure
|
||||
|
|
@ -299,119 +57,9 @@ styles/
|
|||
|
||||
### Build Process
|
||||
|
||||
**Development**: CSS files watched and bundled automatically **Production**: Minified and optimized CSS output **Hot Reload**: CSS changes reflected immediately in development
|
||||
|
||||
## Plugin Lifecycle
|
||||
|
||||
### Initialization Sequence
|
||||
|
||||
```typescript
|
||||
async onload() {
|
||||
await this.loadSettings(); // 1. Load saved configuration
|
||||
this.initializeServices(); // 2. Create service instances
|
||||
this.registerViews(); // 3. Register Obsidian views
|
||||
this.initializeUI(); // 4. Create UI components
|
||||
this.initializeIntegrations(); // 5. Setup integrations
|
||||
this.setupCustomEvents(); // 6. Event system setup
|
||||
}
|
||||
```
|
||||
|
||||
### Cleanup Sequence
|
||||
|
||||
```typescript
|
||||
onunload() {
|
||||
// Event listeners cleanup
|
||||
window.removeEventListener('note-status:status-changed', this.boundHandler);
|
||||
|
||||
// Integration cleanup
|
||||
this.explorerIntegration?.unload();
|
||||
this.workspaceIntegration?.unload();
|
||||
|
||||
// Service cleanup
|
||||
this.styleService?.unload();
|
||||
|
||||
// UI cleanup
|
||||
this.statusBar?.unload();
|
||||
this.statusDropdown?.unload();
|
||||
}
|
||||
```
|
||||
|
||||
## Error Handling Strategy
|
||||
|
||||
### Defensive Programming
|
||||
|
||||
```typescript
|
||||
// File explorer integration with fallbacks
|
||||
try {
|
||||
const fileExplorer = this.findFileExplorerView();
|
||||
if (fileExplorer?.fileItems) {
|
||||
this.updateIcons(fileExplorer);
|
||||
} else {
|
||||
this.scheduleRetry();
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Note Status: Explorer integration failed", error);
|
||||
this.fallbackToBasicMode();
|
||||
}
|
||||
```
|
||||
|
||||
### Error Recovery
|
||||
|
||||
- Graceful degradation when Obsidian APIs change
|
||||
- Automatic retry mechanisms for transient failures
|
||||
- User-visible error messages for critical failures
|
||||
- Comprehensive logging for debugging
|
||||
|
||||
## Extension Points
|
||||
|
||||
### Custom Status Templates
|
||||
|
||||
```typescript
|
||||
interface StatusTemplate {
|
||||
id: string;
|
||||
name: string;
|
||||
description: string;
|
||||
statuses: Status[];
|
||||
}
|
||||
```
|
||||
|
||||
### Plugin API (Future)
|
||||
|
||||
```typescript
|
||||
// Planned extension API
|
||||
interface NoteStatusAPI {
|
||||
registerStatusTemplate(template: StatusTemplate): void;
|
||||
getFileStatuses(file: TFile): string[];
|
||||
setFileStatuses(file: TFile, statuses: string[]): Promise<void>;
|
||||
}
|
||||
```
|
||||
|
||||
### CSS Customization Points
|
||||
|
||||
- Status color overrides
|
||||
- Component layout modifications
|
||||
- Animation customization
|
||||
- Theme integration hooks
|
||||
|
||||
## Testing Strategy
|
||||
|
||||
### Test Categories
|
||||
|
||||
1. **Unit Tests**: Service logic and utilities
|
||||
2. **Integration Tests**: Obsidian API interactions
|
||||
3. **Performance Tests**: Large vault scenarios
|
||||
4. **Manual Tests**: UI interactions and workflows
|
||||
|
||||
### Test Utilities
|
||||
|
||||
```typescript
|
||||
// Mock file creation for testing
|
||||
createMockFile(path: string, frontmatter: any): TFile
|
||||
|
||||
// Status service testing helpers
|
||||
setMockStatuses(file: TFile, statuses: string[]): void
|
||||
assertStatusEquals(file: TFile, expected: string[]): void
|
||||
```
|
||||
**Development**: CSS files watched and bundled automatically
|
||||
**Production**: Minified and optimized CSS output
|
||||
**Hot Reload**: CSS changes reflected immediately in development
|
||||
|
||||
## Security Considerations
|
||||
|
||||
|
|
@ -421,12 +69,6 @@ assertStatusEquals(file: TFile, expected: string[]): void
|
|||
- Status name validation (prevent injection)
|
||||
- File path sanitization
|
||||
|
||||
### Permission Model
|
||||
|
||||
- Read-only access to Obsidian settings
|
||||
- Write access only to note frontmatter
|
||||
- No network requests or external dependencies
|
||||
|
||||
### Privacy
|
||||
|
||||
- All data stored locally in vault
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ Controls which predefined status sets are available.
|
|||
☐ Project management (8 development statuses)
|
||||
```
|
||||
|
||||
**Impact**: Enabled templates add their statuses to dropdown and quick commands.
|
||||
**Impact**: Enabled templates add their statuses to dropdown.
|
||||
|
||||
#### Template Details
|
||||
|
||||
|
|
@ -41,7 +41,7 @@ Controls which predefined status sets are available.
|
|||
|
||||
```
|
||||
📌 todo (#F44336) - Needs attention
|
||||
⚙️ inProgress (#2196F3) - Currently working
|
||||
⚙️ inProgress (#2196F3) - Currently working
|
||||
👀 review (#9C27B0) - Needs review
|
||||
✓ done (#4CAF50) - Completed
|
||||
```
|
||||
|
|
@ -51,7 +51,7 @@ Controls which predefined status sets are available.
|
|||
```
|
||||
🔍 research (#2196F3) - Information gathering
|
||||
📑 outline (#9E9E9E) - Structure planning
|
||||
✏️ draft (#FFC107) - Writing phase
|
||||
✏️ draft (#FFC107) - Writing phase
|
||||
🔬 review (#9C27B0) - Peer review stage
|
||||
📝 revision (#FF5722) - Revisions needed
|
||||
📚 final (#4CAF50) - Final version
|
||||
|
|
@ -61,16 +61,18 @@ Controls which predefined status sets are available.
|
|||
**Project Management** - Development workflow:
|
||||
|
||||
```
|
||||
🗓️ planning (#9E9E9E) - Planning phase
|
||||
📋 backlog (#E0E0E0) - Backlog items
|
||||
🚦 ready (#8BC34A) - Ready to start
|
||||
🗓️ planning (#9E9E9E) - Planning phase
|
||||
📋 backlog (#E0E0E0) - Backlog items
|
||||
🚦 ready (#8BC34A) - Ready to start
|
||||
👨💻 inDevelopment (#2196F3) - Development phase
|
||||
🧪 testing (#9C27B0) - Testing phase
|
||||
👁️ review (#FFC107) - Code review
|
||||
👍 approved (#4CAF50) - Approved
|
||||
🚀 live (#3F51B5) - Production/live
|
||||
🧪 testing (#9C27B0) - Testing phase
|
||||
👁️ review (#FFC107) - Code review
|
||||
👍 approved (#4CAF50) - Approved
|
||||
🚀 live (#3F51B5) - Production/live
|
||||
```
|
||||
|
||||

|
||||
|
||||
### User Interface Settings
|
||||
|
||||
#### Status Bar Configuration
|
||||
|
|
@ -119,11 +121,9 @@ Controls which predefined status sets are available.
|
|||
**When Enabled**:
|
||||
|
||||
- Clicking status toggles it on/off
|
||||
- Notes can have combinations like ["active", "inProgress"]
|
||||
- Notes can have combinations like ("active", "inProgress",....)
|
||||
- Status bar shows all assigned statuses
|
||||
|
||||
**When Disabled**:
|
||||
|
||||
**When Disabled**:
|
||||
- Clicking status replaces current status
|
||||
- Notes have single status only
|
||||
- Simpler workflow for basic usage
|
||||
|
|
@ -141,11 +141,14 @@ Status tag prefix: "obsidian-note-status"
|
|||
```yaml
|
||||
# Default
|
||||
---
|
||||
obsidian-note-status: ["active"]
|
||||
obsidian-note-status:
|
||||
- active
|
||||
---
|
||||
# Custom prefix
|
||||
---
|
||||
project-status: ["inProgress", "testing"]
|
||||
project-status:
|
||||
- inProgress
|
||||
- testing
|
||||
---
|
||||
```
|
||||
|
||||
|
|
@ -190,7 +193,7 @@ Description: [optional tooltip text]
|
|||
|
||||
- Must be unique across all statuses
|
||||
- Case-sensitive
|
||||
- No spaces (use camelCase: `inProgress`)
|
||||
- No spaces
|
||||
- Used in frontmatter and commands
|
||||
|
||||
**Icon Field**:
|
||||
|
|
@ -288,43 +291,6 @@ Ctrl+Shift+S → Change status of current note
|
|||
|
||||
## Advanced Configuration
|
||||
|
||||
### CSS Customization
|
||||
|
||||
#### Status Colors
|
||||
|
||||
Plugin generates CSS variables for each status:
|
||||
|
||||
```css
|
||||
.status-active {
|
||||
color: var(--text-success) !important;
|
||||
}
|
||||
.status-completed {
|
||||
color: var(--text-accent) !important;
|
||||
}
|
||||
```
|
||||
|
||||
#### Custom CSS Overrides
|
||||
|
||||
Add to `snippets/note-status-custom.css`:
|
||||
|
||||
```css
|
||||
/* Larger status icons */
|
||||
.note-status-icon {
|
||||
font-size: 18px !important;
|
||||
}
|
||||
|
||||
/* Custom status colors */
|
||||
.status-urgent {
|
||||
color: #ff0000 !important;
|
||||
font-weight: bold !important;
|
||||
}
|
||||
|
||||
/* Hide status bar completely */
|
||||
.note-status-bar {
|
||||
display: none !important;
|
||||
}
|
||||
```
|
||||
|
||||
### Performance Tuning
|
||||
|
||||
#### Large Vault Settings (5000+ notes)
|
||||
|
|
@ -344,69 +310,16 @@ Items per page: 50 (reduce from default 100)
|
|||
|
||||
### Import/Export Configuration
|
||||
|
||||
WIP
|
||||
|
||||
#### Export Settings
|
||||
|
||||
```javascript
|
||||
// Console command to export settings
|
||||
console.log(
|
||||
JSON.stringify(app.plugins.plugins["note-status"].settings, null, 2),
|
||||
);
|
||||
```
|
||||
WIP
|
||||
|
||||
#### Import Process
|
||||
|
||||
1. **Copy exported JSON**
|
||||
2. **Settings → Note Status → Import button** (if available)
|
||||
3. **Or manually edit `data.json` in plugin folder**
|
||||
WIP
|
||||
|
||||
#### Migration Between Vaults
|
||||
|
||||
```json
|
||||
{
|
||||
"customStatuses": [...],
|
||||
"enabledTemplates": [...],
|
||||
"statusColors": {...},
|
||||
"quickStatusCommands": [...]
|
||||
}
|
||||
```
|
||||
|
||||
### Team/Shared Configuration
|
||||
|
||||
#### Standardized Setup
|
||||
|
||||
```json
|
||||
{
|
||||
"enabledTemplates": ["project"],
|
||||
"useCustomStatusesOnly": false,
|
||||
"strictStatuses": true,
|
||||
"useMultipleStatuses": true,
|
||||
"quickStatusCommands": ["inDevelopment", "review", "approved"]
|
||||
}
|
||||
```
|
||||
|
||||
#### Deployment Strategy
|
||||
|
||||
1. **Configure on template vault**
|
||||
2. **Export settings JSON**
|
||||
3. **Import on team member vaults**
|
||||
4. **Document workflow in team wiki**
|
||||
|
||||
### Troubleshooting Configuration
|
||||
|
||||
#### Settings Not Persisting
|
||||
|
||||
- Check file permissions on `.obsidian` folder
|
||||
- Verify Obsidian has write access
|
||||
- Restart Obsidian after major changes
|
||||
|
||||
#### Performance Issues
|
||||
|
||||
- Disable file explorer icons temporarily
|
||||
- Reduce pagination size
|
||||
- Enable unknown status exclusion
|
||||
|
||||
#### Status Colors Not Showing
|
||||
|
||||
- Check CSS snippet conflicts
|
||||
- Verify color format in custom statuses
|
||||
- Clear Obsidian cache and restart
|
||||
WIP
|
||||
|
|
|
|||
150
wiki/Development Setup.md
Normal file
150
wiki/Development Setup.md
Normal file
|
|
@ -0,0 +1,150 @@
|
|||
# Development Setup
|
||||
|
||||
Get the plugin running locally for development.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Node.js 16+
|
||||
- npm or yarn
|
||||
- Git
|
||||
- Obsidian installed
|
||||
|
||||
## Quick Start
|
||||
|
||||
```bash
|
||||
# Clone and setup
|
||||
git clone https://github.com/devonthesofa/obsidian-note-status.git
|
||||
cd obsidian-note-status
|
||||
npm install
|
||||
|
||||
# Development mode (hot reload)
|
||||
npm run dev
|
||||
|
||||
# Build for production
|
||||
npm run build
|
||||
```
|
||||
|
||||
## Development Workflow
|
||||
|
||||
### 1. Link to Test Vault
|
||||
|
||||
```bash
|
||||
# Symlink to your test vault
|
||||
ln -s /path/to/obsidian-note-status /path/to/vault/.obsidian/plugins/note-status
|
||||
|
||||
# Windows
|
||||
mklink /D "C:\Vault\.obsidian\plugins\note-status" "C:\Dev\obsidian-note-status"
|
||||
```
|
||||
|
||||
### 2. Enable Plugin
|
||||
|
||||
1. Open Obsidian
|
||||
2. Settings → Community plugins → Disable Safe Mode
|
||||
3. Enable "Note Status"
|
||||
|
||||
### 3. Hot Reload
|
||||
|
||||
Development mode watches for changes:
|
||||
|
||||
- TypeScript changes → Auto rebuild
|
||||
- CSS changes → Instant update
|
||||
- Full reload: Ctrl+R in Obsidian
|
||||
|
||||
## Common Development Tasks
|
||||
|
||||
### Add New Status Template
|
||||
|
||||
```typescript
|
||||
// constants/status-templates.ts
|
||||
export const PREDEFINED_TEMPLATES: StatusTemplate[] = [
|
||||
{
|
||||
id: "new-workflow",
|
||||
name: "New Workflow",
|
||||
description: "Description",
|
||||
statuses: [{ name: "status1", icon: "🔥", color: "#FF0000" }],
|
||||
},
|
||||
];
|
||||
```
|
||||
|
||||
### Add New Command
|
||||
|
||||
```typescript
|
||||
// integrations/commands/command-integration.ts
|
||||
this.plugin.addCommand({
|
||||
id: "new-command",
|
||||
name: "New Command",
|
||||
callback: () => {
|
||||
// Implementation
|
||||
},
|
||||
});
|
||||
```
|
||||
|
||||
### Add New Setting
|
||||
|
||||
```typescript
|
||||
// 1. Update interface in models/types.ts
|
||||
export interface NoteStatusSettings {
|
||||
newSetting: boolean;
|
||||
}
|
||||
|
||||
// 2. Add default in constants/defaults.ts
|
||||
export const DEFAULT_SETTINGS: NoteStatusSettings = {
|
||||
newSetting: false,
|
||||
};
|
||||
|
||||
// 3. Add UI in integrations/settings/settings-ui.ts
|
||||
new Setting(containerEl)
|
||||
.setName("New Setting")
|
||||
.addToggle((toggle) =>
|
||||
toggle
|
||||
.setValue(settings.newSetting)
|
||||
.onChange((value) =>
|
||||
this.callbacks.onSettingChange("newSetting", value),
|
||||
),
|
||||
);
|
||||
```
|
||||
|
||||
## Build & Release
|
||||
|
||||
### Production Build
|
||||
|
||||
```bash
|
||||
npm run build
|
||||
# Creates: main.js, manifest.json, styles.css
|
||||
```
|
||||
|
||||
### Version Bump
|
||||
|
||||
```bash
|
||||
npm version patch # or minor/major
|
||||
# Updates: package.json, manifest.json, versions.json
|
||||
```
|
||||
|
||||
### Release Process
|
||||
|
||||
1. Create git tag: `git tag 1.0.13`
|
||||
2. Push tag: `git push origin 1.0.13`
|
||||
3. GitHub Actions creates draft release
|
||||
4. Edit release notes and publish
|
||||
|
||||
### Obsidian DevTools
|
||||
|
||||
- Ctrl+Shift+I → Console
|
||||
- Check for plugin errors
|
||||
- Monitor performance tab
|
||||
|
||||
## Code Style
|
||||
|
||||
- TypeScript strict mode
|
||||
- Use `const` by default
|
||||
- Explicit return types
|
||||
- Handle null/undefined
|
||||
- Clean up in unload()
|
||||
|
||||
## Contributing
|
||||
|
||||
1. Fork repository
|
||||
2. Create feature branch
|
||||
3. Follow existing patterns
|
||||
4. Test with large vault
|
||||
5. Submit PR with description
|
||||
115
wiki/Frontmatter Format.md
Normal file
115
wiki/Frontmatter Format.md
Normal file
|
|
@ -0,0 +1,115 @@
|
|||
# Frontmatter Format
|
||||
|
||||
Technical specification for Note Status metadata storage.
|
||||
|
||||
## Format Overview
|
||||
|
||||
Status metadata is stored in YAML frontmatter using a configurable tag prefix.
|
||||
|
||||
```yaml
|
||||
---
|
||||
obsidian-note-status:
|
||||
- active
|
||||
---
|
||||
```
|
||||
|
||||
## Specification
|
||||
|
||||
### Field Name
|
||||
|
||||
- **Default**: `obsidian-note-status`
|
||||
- **Type**: String or Array
|
||||
- **Configurable**: Yes, via `tagPrefix` setting
|
||||
|
||||
### Value Types
|
||||
|
||||
#### Single Status (Array)
|
||||
|
||||
```yaml
|
||||
---
|
||||
obsidian-note-status:
|
||||
- active
|
||||
---
|
||||
```
|
||||
|
||||
#### Multiple Statuses (Array)
|
||||
|
||||
```yaml
|
||||
---
|
||||
obsidian-note-status:
|
||||
- active
|
||||
- hello
|
||||
- world
|
||||
---
|
||||
```
|
||||
|
||||
## Valid Status Values
|
||||
|
||||
### Default Statuses
|
||||
|
||||
- `unknown` - No status assigned
|
||||
- Template Statuses: Any status defined in enabled templates
|
||||
- Must match exact name (case-sensitive)
|
||||
- Icon and color stored separately
|
||||
- Custom Statuses: User-defined statuses
|
||||
- Any string value allowed
|
||||
- No spaces
|
||||
- Case-sensitive matching
|
||||
|
||||
## Validation
|
||||
|
||||
With `strictStatuses: true`:
|
||||
|
||||
- Only defined statuses allowed
|
||||
- Unknown statuses removed on save
|
||||
- Case-sensitive matching
|
||||
|
||||
## Custom Tag Prefix
|
||||
|
||||
### Configuration
|
||||
|
||||
```javascript
|
||||
settings.tagPrefix = "project-status";
|
||||
```
|
||||
|
||||
### Result
|
||||
|
||||
```yaml
|
||||
---
|
||||
project-status:
|
||||
- inDevelopment
|
||||
- testing
|
||||
---
|
||||
```
|
||||
|
||||
## Integration Examples
|
||||
|
||||
### Dataview Query
|
||||
|
||||
```dataview
|
||||
TABLE obsidian-note-status as Status
|
||||
FROM ""
|
||||
WHERE contains(obsidian-note-status, "active")
|
||||
```
|
||||
|
||||
### Templater
|
||||
|
||||
```yaml
|
||||
---
|
||||
obsidian-note-status: ["<% tp.system.prompt("Status?") %>"]
|
||||
---
|
||||
```
|
||||
|
||||
### QuickAdd
|
||||
|
||||
```yaml
|
||||
---
|
||||
obsidian-note-status: ["{{VALUE:active,onHold,completed}}"]
|
||||
---
|
||||
```
|
||||
|
||||
### Reserved Values
|
||||
|
||||
- `unknown` - System reserved
|
||||
- Empty string - Converted to unknown
|
||||
- `null`/`undefined` - Treated as unknown
|
||||
|
|
@ -6,46 +6,15 @@ Welcome to the comprehensive documentation for the Note Status plugin for Obsidi
|
|||
|
||||
### For Users
|
||||
|
||||
- **[Quick Start Guide](https://claude.ai/chat/Quick-Start-Guide)** - Get up and running in 5 minutes
|
||||
- **[User Manual](https://claude.ai/chat/User-Manual)** - Complete feature documentation
|
||||
- **[Configuration Guide](https://claude.ai/chat/Configuration-Guide)** - Settings and customization
|
||||
- **[Performance Tuning](https://claude.ai/chat/Performance-Tuning)** - Optimize for large vaults
|
||||
- **[Troubleshooting](https://claude.ai/chat/Troubleshooting)** - Common issues and solutions
|
||||
- **[FAQ](https://claude.ai/chat/FAQ)** - Frequently asked questions
|
||||
- **[[Quick Start Guide|📚 Quick Start Guide]]** - Get running in 5 minutes
|
||||
- **[[User Manual|📖 User Manual]]** - Complete feature documentation
|
||||
- **[[Configuration Guide|⚙️ Configuration Guide]]** - Settings and customization
|
||||
- **[[Performance Tuning|🚀 Performance Tuning]]** - Optimize for large vaults
|
||||
|
||||
### For Developers
|
||||
|
||||
- **[Architecture Overview](https://claude.ai/chat/Architecture-Overview)** - Plugin structure and design
|
||||
- **[API Reference](https://claude.ai/chat/API-Reference)** - Core services and interfaces
|
||||
- **[Development Setup](https://claude.ai/chat/Development-Setup)** - Contributing to the project
|
||||
- **[Custom Extensions](https://claude.ai/chat/Custom-Extensions)** - Building on top of the plugin
|
||||
- **[Testing Guide](https://claude.ai/chat/Testing-Guide)** - Testing strategies and tools
|
||||
|
||||
### Reference
|
||||
|
||||
- **[Status Templates](https://claude.ai/chat/Status-Templates)** - Predefined and custom templates
|
||||
- **[CSS Customization](https://claude.ai/chat/CSS-Customization)** - Styling and theming
|
||||
- **[Command Reference](https://claude.ai/chat/Command-Reference)** - All available commands
|
||||
- **[Frontmatter Format](https://claude.ai/chat/Frontmatter-Format)** - Technical specification
|
||||
- **[Migration Guide](https://claude.ai/chat/Migration-Guide)** - Upgrading between versions
|
||||
|
||||
## 🚀 Quick Links
|
||||
|
||||
| Task | Documentation |
|
||||
| ---------------------- | ----------------------------------------------------------------------------- |
|
||||
| Install and setup | [Quick Start Guide](https://claude.ai/chat/Quick-Start-Guide) |
|
||||
| Change note status | [Basic Usage](https://claude.ai/chat/User-Manual#basic-usage) |
|
||||
| Batch update files | [Batch Operations](https://claude.ai/chat/User-Manual#batch-operations) |
|
||||
| Create custom statuses | [Custom Statuses](https://claude.ai/chat/Configuration-Guide#custom-statuses) |
|
||||
| Improve performance | [Performance Tuning](https://claude.ai/chat/Performance-Tuning) |
|
||||
| Plugin not working | [Troubleshooting](https://claude.ai/chat/Troubleshooting) |
|
||||
|
||||
## 🔧 Plugin Information
|
||||
|
||||
- **Current Version**: 1.0.12
|
||||
- **Minimum Obsidian**: 0.15.0
|
||||
- **Repository**: [GitHub](https://github.com/devonthesofa/obsidian-note-status)
|
||||
- **License**: MIT
|
||||
- **[[Architecture Overview|🏗️ Architecture Overview]]** - Plugin structure and design
|
||||
- **[[Development Setup|🔧 Development Setup]]** - Contributing guide
|
||||
|
||||
## 📈 Features Overview
|
||||
|
||||
|
|
@ -95,31 +64,14 @@ Welcome to the comprehensive documentation for the Note Status plugin for Obsidi
|
|||
- Manage video script statuses
|
||||
- Organize creative project stages
|
||||
|
||||
## 🔄 Recent Updates
|
||||
|
||||
### Version 1.0.12
|
||||
|
||||
- Performance improvements for large vaults
|
||||
- Enhanced pagination in status pane
|
||||
- Better error handling and stability
|
||||
|
||||
### Upcoming Features
|
||||
|
||||
- Canvas integration
|
||||
- Graph view status display
|
||||
- Enhanced batch operations modal
|
||||
- Mobile optimization
|
||||
|
||||
## 💡 Getting Help
|
||||
|
||||
1. **Check the [FAQ](https://claude.ai/chat/FAQ)** for common questions
|
||||
2. **Search the [Troubleshooting](https://claude.ai/chat/Troubleshooting)** guide
|
||||
3. **Review [GitHub Issues](https://github.com/devonthesofa/obsidian-note-status/issues)**
|
||||
4. **Create a new issue** with detailed information
|
||||
1. **Review [GitHub Issues](https://github.com/devonthesofa/obsidian-note-status/issues)**
|
||||
2. **Create a new issue** with detailed information
|
||||
|
||||
## 🤝 Contributing
|
||||
|
||||
We welcome contributions! See the [Development Setup](https://claude.ai/chat/Development-Setup) guide to get started.
|
||||
We welcome contributions! See the [[Development Setup]] guide to get started.
|
||||
|
||||
- **Report bugs** via GitHub Issues
|
||||
- **Suggest features** in GitHub Discussions
|
||||
|
|
|
|||
86
wiki/Performance Tuning.md
Normal file
86
wiki/Performance Tuning.md
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
# Performance Tuning
|
||||
|
||||
Optimize Note Status for large vaults (tested up to 40k notes).
|
||||
|
||||
## Quick Wins
|
||||
|
||||
### Essential Settings for 5k+ Notes
|
||||
|
||||
```
|
||||
✅ Exclude unassigned notes from status pane
|
||||
✅ Hide unknown status in file explorer
|
||||
Pagination: 50-100 items per page
|
||||
```
|
||||
|
||||
### Disable Heavy Features
|
||||
|
||||
```
|
||||
☐ Show status icons in file explorer (if slow)
|
||||
☐ Auto-hide status bar (reduces DOM updates)
|
||||
```
|
||||
|
||||
## Minimal Performance Config
|
||||
|
||||
```json
|
||||
{
|
||||
"showStatusIconsInExplorer": false,
|
||||
"excludeUnknownStatus": true,
|
||||
"hideUnknownStatusInExplorer": true,
|
||||
"compactView": true,
|
||||
"enabledTemplates": ["minimal"]
|
||||
}
|
||||
```
|
||||
|
||||
## Troubleshooting Lag
|
||||
|
||||
### Status Pane Slow
|
||||
|
||||
1. Enable compact view
|
||||
2. Close unused status groups
|
||||
|
||||
### File Explorer Sluggish
|
||||
|
||||
1. Disable status icons temporarily
|
||||
2. Restart Obsidian
|
||||
3. Check for conflicting plugins
|
||||
|
||||
### Dropdown Delay
|
||||
|
||||
Normal behavior - uses debouncing. If excessive:
|
||||
|
||||
- Check console for errors
|
||||
- Disable strict validation
|
||||
- Reduce custom statuses count
|
||||
|
||||
## Advanced Optimization
|
||||
|
||||
### Browser DevTools Analysis
|
||||
|
||||
```
|
||||
1. Ctrl+Shift+I → Performance tab
|
||||
2. Record while opening status pane
|
||||
3. Look for:
|
||||
- Long tasks > 50ms
|
||||
- Excessive DOM operations
|
||||
- Memory leaks
|
||||
```
|
||||
|
||||
## Known Limitations
|
||||
|
||||
### File Explorer Integration
|
||||
|
||||
- Uses private Obsidian APIs
|
||||
- May break with updates
|
||||
- Fallback: Disable icons
|
||||
|
||||
### Metadata Cache
|
||||
|
||||
- Triggers on every frontmatter change
|
||||
- Batched with 100ms debounce
|
||||
- Can't be optimized further
|
||||
|
||||
### DOM Mutations
|
||||
|
||||
- File explorer recreates elements
|
||||
- Status pane uses virtual scrolling
|
||||
- Limit: ~10k visible items
|
||||
|
|
@ -14,17 +14,23 @@ Get the Note Status plugin working in under 5 minutes.
|
|||
### Method 2: Manual Installation
|
||||
|
||||
1. Download latest release from [GitHub](https://github.com/devonthesofa/obsidian-note-status/releases)
|
||||
2. Extract to `.obsidian/plugins/note-status/`
|
||||
3. Enable in Community plugins
|
||||
2. Extract the following files into your Obsidian vault under `.obsidian/plugins/note-status/`:
|
||||
- `main.js`
|
||||
- `manifest.json`
|
||||
- `styles.css`
|
||||
3. In Obsidian, go to **Settings → Community plugins** and enable **Note Status**.
|
||||
|
||||
## First Status Assignment
|
||||
|
||||
### Using the Toolbar
|
||||
|
||||
1. Open any note
|
||||
2. Click the `❓` icon in the toolbar
|
||||
2. Click the `❓` icon in the toolbar:
|
||||
- 
|
||||
3. Select a status (e.g., "active")
|
||||
4. Status appears in status bar and file explorer
|
||||
4. Status appears in status bar and file explorer:
|
||||
- 
|
||||
- 
|
||||
|
||||
### Using Commands
|
||||
|
||||
|
|
@ -46,7 +52,6 @@ Access via Settings → Note Status:
|
|||
## Status Templates
|
||||
|
||||
Enable a template for instant statuses:
|
||||
|
||||
**Recommended for beginners: "Minimal workflow"**
|
||||
|
||||
- `todo` 📌
|
||||
|
|
@ -68,16 +73,18 @@ Enable a template for instant statuses:
|
|||
- Click status icon in left sidebar
|
||||
- See all notes grouped by status
|
||||
- Click any note to open
|
||||

|
||||
|
||||
### File Explorer
|
||||
|
||||
- Status icons appear next to file names
|
||||
- Right-click files to change status
|
||||
- Select multiple files for batch updates
|
||||
- Select multiple files for batch updates - 
|
||||

|
||||
|
||||
## Performance Setup (Large Vaults)
|
||||
|
||||
If you have 1000+ notes:
|
||||
If you have 1000+ notes, set the settings:
|
||||
|
||||
```
|
||||
✅ Exclude unassigned notes from status pane
|
||||
|
|
@ -90,7 +97,8 @@ The plugin stores statuses in YAML frontmatter:
|
|||
|
||||
```yaml
|
||||
---
|
||||
obsidian-note-status: ["active"]
|
||||
obsidian-note-status:
|
||||
- active
|
||||
---
|
||||
```
|
||||
|
||||
|
|
@ -98,34 +106,17 @@ Multiple statuses:
|
|||
|
||||
```yaml
|
||||
---
|
||||
obsidian-note-status: ["active", "inProgress"]
|
||||
obsidian-note-status:
|
||||
- idea
|
||||
- HelloWorld
|
||||
---
|
||||
```
|
||||
|
||||
## Next Steps
|
||||
|
||||
- **[User Manual](https://claude.ai/chat/User-Manual)** - Complete feature guide
|
||||
- **[Configuration Guide](https://claude.ai/chat/Configuration-Guide)** - Custom statuses and templates
|
||||
- **[Performance Tuning](https://claude.ai/chat/Performance-Tuning)** - Optimize for your vault size
|
||||
|
||||
## Common First-Time Issues
|
||||
|
||||
### Status not showing
|
||||
|
||||
- Check that Community plugins are enabled
|
||||
- Verify the file has `.md` extension
|
||||
- Look for frontmatter in source mode
|
||||
|
||||
### Performance slow
|
||||
|
||||
- Enable "Exclude unassigned notes" in settings
|
||||
- Disable file explorer icons temporarily
|
||||
|
||||
### Can't find dropdown
|
||||
|
||||
- Look for `❓` icon in toolbar (right side)
|
||||
- Try right-clicking in file explorer
|
||||
- Use Command Palette: "Change status"
|
||||
- **[[User Manual]]** - Complete feature guide
|
||||
- **[[Configuration Guide]]** - Custom statuses and templates
|
||||
- **[[Performance Tuning]]** - Optimize for your vault size
|
||||
|
||||
## Quick Reference
|
||||
|
||||
|
|
|
|||
|
|
@ -17,7 +17,9 @@ Statuses are stored in YAML frontmatter:
|
|||
|
||||
```yaml
|
||||
---
|
||||
obsidian-note-status: ["active", "inProgress"]
|
||||
obsidian-note-status:
|
||||
- idea
|
||||
- HelloWorld
|
||||
---
|
||||
```
|
||||
|
||||
|
|
@ -51,11 +53,15 @@ obsidian-note-status: ["active", "inProgress"]
|
|||
|
||||
### 4. File Explorer Integration
|
||||
|
||||
**Visual**: Status icons next to file names **Interaction**: Right-click for context menu **Multi-select**: Select multiple files for batch operations
|
||||
**Visual**: Status icons next to file names
|
||||
**Interaction**: Right-click for context menu
|
||||
**Multi-select**: Select multiple files for batch operations
|
||||
|
||||
### 5. Status Pane
|
||||
|
||||
**Location**: Left sidebar **Access**: Ribbon icon or Command Palette **Features**:
|
||||
**Location**: Left sidebar
|
||||
**Access**: Ribbon icon or Command Palette
|
||||
**Features**:
|
||||
|
||||
- Notes grouped by status
|
||||
- Search functionality
|
||||
|
|
@ -187,107 +193,7 @@ All commands available via Command Palette:
|
|||
- `Toggle multiple statuses mode` - Enable/disable multi-status
|
||||
- `Search notes by current status` - Global search
|
||||
|
||||
## Configuration Options
|
||||
|
||||
### Display Settings
|
||||
|
||||
- **Show status bar**: Toggle status bar visibility
|
||||
- **Auto-hide status bar**: Hide when status is unknown
|
||||
- **Show status icons in file explorer**: File tree integration
|
||||
- **Hide unknown status in file explorer**: Clean up display
|
||||
- **Default to compact view**: Status pane display mode
|
||||
|
||||
### Performance Settings
|
||||
|
||||
- **Exclude unassigned notes**: Skip unknown status files (recommended for large vaults)
|
||||
- **Items per page**: Pagination size for status groups
|
||||
|
||||
### Behavior Settings
|
||||
|
||||
- **Enable multiple statuses**: Allow multiple statuses per note
|
||||
- **Status tag prefix**: YAML frontmatter key (default: `obsidian-note-status`)
|
||||
- **Strict status validation**: Only allow defined statuses
|
||||
|
||||
## Templates System
|
||||
|
||||
### Predefined Templates
|
||||
|
||||
#### Colorful Workflow
|
||||
|
||||
Complete workflow with descriptive icons:
|
||||
|
||||
- `idea` 💡 - Initial concepts
|
||||
- `draft` 📝 - First draft stage
|
||||
- `inProgress` 🔧 - Active work
|
||||
- `editing` 🖊️ - Review and editing
|
||||
- `pending` ⏳ - Waiting for input
|
||||
- `onHold` ⏸ - Temporarily paused
|
||||
- `needsUpdate` 🔄 - Requires revision
|
||||
- `completed` ✅ - Finished work
|
||||
- `archived` 📦 - Long-term storage
|
||||
|
||||
#### Minimal Workflow
|
||||
|
||||
Essential statuses only:
|
||||
|
||||
- `todo` 📌 - Needs attention
|
||||
- `inProgress` ⚙️ - Currently working
|
||||
- `review` 👀 - Needs review
|
||||
- `done` ✓ - Completed
|
||||
|
||||
#### Academic Research
|
||||
|
||||
Research-focused workflow:
|
||||
|
||||
- `research` 🔍 - Information gathering
|
||||
- `outline` 📑 - Structure planning
|
||||
- `draft` ✏️ - Writing phase
|
||||
- `review` 🔬 - Peer review
|
||||
- `revision` 📝 - Revisions needed
|
||||
- `final` 📚 - Final version
|
||||
- `published` 🎓 - Published work
|
||||
|
||||
#### Project Management
|
||||
|
||||
Development-oriented workflow:
|
||||
|
||||
- `planning` 🗓️ - Planning phase
|
||||
- `backlog` 📋 - Backlog items
|
||||
- `ready` 🚦 - Ready to start
|
||||
- `inDevelopment` 👨💻 - Development phase
|
||||
- `testing` 🧪 - Testing phase
|
||||
- `review` 👁️ - Code review
|
||||
- `approved` 👍 - Approved
|
||||
- `live` 🚀 - Production
|
||||
|
||||
### Custom Statuses
|
||||
|
||||
Create your own statuses:
|
||||
|
||||
1. **Settings → Custom statuses**
|
||||
2. **Click "Add Status"**
|
||||
3. **Configure**:
|
||||
- Name: Unique identifier
|
||||
- Icon: Emoji or symbol
|
||||
- Color: Visual theme color
|
||||
- Description: Tooltip text
|
||||
|
||||
**Validation Rules**:
|
||||
|
||||
- Names must be unique
|
||||
- Icons recommended (fallback: ❓)
|
||||
- Colors use CSS format (#hex, var(), etc.)
|
||||
|
||||
## Search and Organization
|
||||
|
||||
### Status Pane Search
|
||||
|
||||
- **Real-time filtering** by filename
|
||||
- **Case-insensitive** matching
|
||||
- **Preserves grouping** by status
|
||||
- **Clears with X button**
|
||||
|
||||
### Global Search Integration
|
||||
## Global Search Integration
|
||||
|
||||
Use Obsidian's global search with status queries:
|
||||
|
||||
|
|
@ -296,12 +202,6 @@ Use Obsidian's global search with status queries:
|
|||
[obsidian-note-status:"inProgress" OR "review"]
|
||||
```
|
||||
|
||||
### File Organization
|
||||
|
||||
- **Status-based folders**: Manually organize
|
||||
- **Smart collections**: Use search operators
|
||||
- **Tag combinations**: Mix with regular tags
|
||||
|
||||
## Keyboard Shortcuts
|
||||
|
||||
### Default Shortcuts
|
||||
|
|
@ -318,67 +218,3 @@ None assigned by default - customize in Obsidian settings.
|
|||
### Quick Status Commands
|
||||
|
||||
Configure in settings to enable hotkeys for frequently used statuses.
|
||||
|
||||
## Integration Points
|
||||
|
||||
### File System
|
||||
|
||||
- **Frontmatter storage**: Industry standard YAML
|
||||
- **Cross-platform**: Works with any markdown editor
|
||||
- **Git-friendly**: Text-based, version controllable
|
||||
|
||||
### Obsidian Features
|
||||
|
||||
- **Global search**: Status-based queries
|
||||
- **Templates**: Include status in note templates
|
||||
- **Dataview**: Query notes by status
|
||||
- **Graph view**: Future integration planned
|
||||
|
||||
### External Tools
|
||||
|
||||
- **Export capabilities**: JSON configuration export
|
||||
- **Backup strategies**: Include in vault backups
|
||||
- **Migration**: Frontmatter-based for portability
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Common Issues
|
||||
|
||||
#### Status not showing
|
||||
|
||||
1. Verify file has `.md` extension
|
||||
2. Check frontmatter format in source mode
|
||||
3. Ensure plugin is enabled
|
||||
|
||||
#### Performance slow with large vault
|
||||
|
||||
1. Enable "Exclude unassigned notes"
|
||||
2. Reduce pagination size
|
||||
3. Hide unknown status in explorer
|
||||
|
||||
#### Dropdown not appearing
|
||||
|
||||
1. Check for toolbar button (❓ icon)
|
||||
2. Try right-click context menu
|
||||
3. Use Command Palette fallback
|
||||
|
||||
#### Multiple statuses not working
|
||||
|
||||
1. Enable in settings
|
||||
2. Check strict validation setting
|
||||
3. Verify status exists in templates
|
||||
|
||||
### Performance Optimization
|
||||
|
||||
#### Large Vault Tips (5000+ notes)
|
||||
|
||||
- Enable exclusion of unknown status
|
||||
- Use pagination in status pane
|
||||
- Disable explorer icons if needed
|
||||
- Regular cleanup of unused statuses
|
||||
|
||||
#### Memory Management
|
||||
|
||||
- Plugin automatically cleans up
|
||||
- Restart Obsidian if memory grows
|
||||
- Report persistent issues on GitHub
|
||||
|
|
|
|||
Loading…
Reference in a new issue