Find a file
Tristan Michael ea76f65579 Frameless transparent window with custom title bar
Remove native window decorations and add transparent background with
rounded corners, border, and drop shadow. Add custom close button
(Linux) and minimize/maximize/close (Windows) in the header. Add
programmatic window dragging via mousedown and double-click to maximize.
Install tauri-plugin-os for platform detection. Move sync spinner to
bottom-right corner. Convert drawer layout from vw to cqi units to
support the padding-based shadow approach.
2026-03-30 07:54:17 -07:00
.idea bevy hello world 2025-08-24 05:45:43 -07:00
apps/tauri Frameless transparent window with custom title bar 2026-03-30 07:54:17 -07:00
crates Commit to Tauri GUI: remove Flutter/egui, redesign task UI 2026-03-29 09:49:30 -07:00
docs progress of some kind 2026-03-17 05:49:48 -07:00
.gitignore progress of some kind 2026-03-17 05:49:48 -07:00
Cargo.lock Commit to Tauri GUI: remove Flutter/egui, redesign task UI 2026-03-29 09:49:30 -07:00
Cargo.toml Commit to Tauri GUI: remove Flutter/egui, redesign task UI 2026-03-29 09:49:30 -07:00
CLAUDE.md Animated completed section, updated PLAN.md and CLAUDE.md with current status 2026-03-29 15:56:15 -07:00
PLAN.md Add next items to Phase 3 checklist in PLAN.md 2026-03-29 15:58:11 -07:00
README.md progress of some kind 2026-03-17 05:49:48 -07:00

Bevy Tasks

A local-first, cross-platform tasks application built with Rust. Inspired by Google Tasks, designed for speed and flexibility.

Core Principles

  • Local-First: Your data, your folder, your control
  • Fast: Sub-second startup, instant response
  • Cross-Platform: Single codebase, all platforms
  • Flexible: Multiple workspaces for different contexts

Project Structure

bevy-tasks/
├── Cargo.toml                    # Workspace definition
├── PLAN.md                       # Detailed project plan
├── README.md                     # This file
├── crates/
│   ├── bevy-tasks-core/          # Core library (backend)
│   ├── bevy-tasks-cli/           # CLI frontend
│   └── bevy-tasks-gui/           # GUI frontend (Phase 3+)
└── docs/

Phase 1 Status: Core Library & CLI MVP

Phase 1 implementation is complete with the following features:

Core Library (bevy-tasks-core)

  • Data models (Task, TaskList, AppConfig, WorkspaceConfig)
  • Markdown file I/O with YAML frontmatter
  • Local storage implementation
  • Repository pattern with clean API
  • Multiple workspace support
  • Task ordering and grouping

CLI (bevy-tasks-cli)

  • Workspace management (init, add, list, switch, remove, retarget, migrate)
  • Task list management (create, show, delete)
  • Task operations (add, complete, delete, edit)
  • Group-by-due-date toggle
  • Support for --workspace flag on all commands

Development Setup

Prerequisites

Build

# Clone and build
git clone <repository-url>
cd bevy-tasks
cargo build

# Run tests
cargo test -p bevy-tasks-core

# Run CLI
cargo run -p bevy-tasks-cli -- --help

Quick Start

Initialize your first workspace

# Initialize a new workspace
cargo run -p bevy-tasks-cli -- init ~/Documents/Tasks --name personal

# This creates:
# - A workspace named "personal" at ~/Documents/Tasks
# - A default list called "My Tasks"
# - Sets "personal" as the current workspace

Add and manage tasks

# Add a task
cargo run -p bevy-tasks-cli -- add "Buy groceries"

# Add a task with due date
cargo run -p bevy-tasks-cli -- add "Review PR #123" --list "Work" --due "2025-11-15"

# List all tasks
cargo run -p bevy-tasks-cli -- list show

# Complete a task
cargo run -p bevy-tasks-cli -- complete <task-id>

# Edit a task (opens in $EDITOR)
cargo run -p bevy-tasks-cli -- edit <task-id>

# Delete a task
cargo run -p bevy-tasks-cli -- delete <task-id>

Manage workspaces

# Add another workspace
cargo run -p bevy-tasks-cli -- workspace add shared ~/Dropbox/TeamTasks

# List workspaces
cargo run -p bevy-tasks-cli -- workspace list

# Switch workspace
cargo run -p bevy-tasks-cli -- workspace switch shared

# Use specific workspace for a command
cargo run -p bevy-tasks-cli -- add "Team meeting" --workspace shared

Manage task lists

# Create a new list
cargo run -p bevy-tasks-cli -- list create "Work"

# Show tasks in a specific list
cargo run -p bevy-tasks-cli -- list show --list "Work"

# Delete a list
cargo run -p bevy-tasks-cli -- list delete "Work"

Data Format

Tasks are stored as markdown files with YAML frontmatter (Obsidian-compatible):

---
id: 550e8400-e29b-41d4-a716-446655440000
status: backlog
due: 2025-11-15T14:00:00Z
created: 2025-10-26T10:00:00Z
updated: 2025-10-26T12:30:00Z
---

Task description and notes go here in **markdown** format.

- Can include lists
- Rich formatting
- Links, etc.

File System Structure

~/Documents/Tasks/           # User-selected folder
├── .metadata.json           # Global: list ordering, last opened list
├── My Tasks/                # Task list folder
│   ├── .listdata.json       # List metadata: task order, id, timestamps
│   ├── Buy groceries.md     # Individual task files
│   └── Call dentist.md
└── Work/
    ├── .listdata.json
    ├── Review PRs.md
    └── Team meeting prep.md

Testing

Run the test suite:

# Run all tests
cargo test

# Run tests for specific crate
cargo test -p bevy-tasks-core

# Run tests with output
cargo test -- --nocapture

What's Next?

  • Phase 2: WebDAV sync for cross-device synchronization
  • Phase 3: GUI with egui for desktop platforms
  • Phase 4: Mobile support (iOS & Android)
  • Phase 5: Advanced features and polish
  • Phase 6: Platform-specific integrations
  • Phase 7: Google Tasks importer and unique features

See PLAN.md for detailed roadmap.

License

GNU General Public License v3.0 (GPL-3.0)

This project is free and open-source software.