Commit Graph
22 Commits
Author SHA1 Message Date
Ignacio Perez 893e382d7f feat: Add complete keyboard navigation system
Implemented a full keyboard navigation system with directional commands (C-h/j/k/l) for moving between views,
vim-style navigation (j/k for rows, h/l for columns), and TAB cycling.
Added table header navigation mode where users can move between columns and change sort order with keyboard shortcuts.
The navigation follows visual position: left sidebar, table, and filter bar can all be reached with directional keys.

Created a keymap system with context-aware bindings that resolve commands based on
current focus (Table, TableHeaders, FilterBar, Sidebar).
Commands are dispatched through a centralized handler that manages focus transitions and view state.
Added helper methods to cycle through column headers with proper wrapping.

Auto-select first task on load when tasks exist, and set initial window focus so keyboard shortcuts
work immediately without requiring a mouse click.
2025-12-28 20:48:19 -03:00
Ignacio Perez 785e8ee932 Changed project version. From v0.1.1 to v0.1.2 2025-12-28 12:16:45 -03:00
Ignacio Perez 1b4a7e0ac3 Changed project version. From v0.1.0 to v0.1.1 2025-12-28 12:13:48 -03:00
Ignacio Perez 02b88f4326 refactor: Improve error handling and remove code duplication
Extract duplicate UI update logic from reload_tasks and handle_sync into a shared update_ui_from_tasks method.
Add error notifications to StatusBar so users can see when task loading fails instead of silently showing an empty list.
Fix sidebar to only show pending tasks, filtering out deleted and completed ones.

Move magic numbers to constants in ui.rs (sidebar width, table column widths, date format) to make layout adjustments easier.
Standardize all date formatting to ISO 8601 (YYYY-MM-DD) for consistency across the app.
2025-12-28 12:06:49 -03:00
Ignacio Perez ae5309c716 Updated README.md 2025-12-27 21:14:55 -03:00
Ignacio Perez 4cd01954ef feat & fix: Add status bar with sync button and fix filter bugs
Added a status bar at the bottom with a sync button that updates the task list from the local database.
The button shows different states (idle, syncing, success, error) with colors and icons, and displays status messages.
Fixed the layout shift bug when clearing filters by giving dropdowns a minimum width.
Also fixed sidebar counts not updating when filters change - now the sidebar shows correct project and tag counts based on filtered tasks.

Extracted reusable button and dropdown styles to keep the UI consistent across components.
2025-12-27 20:58:22 -03:00
Ignacio Perez 95b1d62b1c feat: Add README.md 2025-12-27 19:01:37 -03:00
Ignacio Perez 58f4f2bfd0 feat: Add card-based layout with theme tokens
Add a card-based UI layout with consistent spacing and visual hierarchy.
The main content and sidebar are now wrapped in styled cards with gaps
between them. New theme tokens (card, raised, hover, divider,
disabled_fg) provide semantic colors for different surface levels and
states.

Create ui.rs module with helper functions (card_style, divider_h,
section_header, priority_badge) to keep styling consistent across views.
2025-12-27 18:44:45 -03:00
Ignacio Perez 3ce8886fc9 feat: Switch to ayu theme 2025-12-27 16:01:02 -03:00
Ignacio Perez 29a23017f2 feat: Refine filters and dropdown UI for task table
Update task table filters and dropdowns, including due-date options, layout tweaks, and style polish.
Keep panel style refinement intact so layout stays stable.
2025-12-27 16:00:38 -03:00
Ignacio Perez 45d1036fa7 feat: Add sidebar filtering and fix layout issues
Connect sidebar project/tag clicks to filter the task table.
App now observes FilterState changes and triggers task reload.
Removed redundant observer from TaskTable since App handles it.

Fix Panel component that was overwriting its own styles, breaking flex layouts.
Sidebar sections now split space equally and scroll properly.
2025-12-27 13:05:21 -03:00
Ignacio Perez d132e51da2 feat: Add TaskTable with sorting and pagination
Add a new TaskTable component that displays tasks in a sortable, paginated table.
Columns include ID, Description, Project, Due, Priority, and Status.
Clicking column headers sorts the data (toggles between ascending and descending).
Priority and status are color-coded based on theme colors.

Update Panel component to accept an ID and simplify child rendering.
Add warning, info, and priority colors (high/medium/low) to Theme.
Add Into<usize> and Into<String> implementations for TaskPriority and TaskStatus to support sorting and display.
2025-12-27 12:40:49 -03:00
Ignacio Perez 3c10f8fdb8 feat: Add Styled trait support to UI components
Added style support to Label, Panel, List, and Modal components by
implementing the gpui::Styled trait. This allows applying styles
directly to components without wrapping them in divs. Updated sidebar to
use Label component directly with styles instead of nested divs.
2025-12-26 12:37:32 -03:00
Ignacio Perez c4ab603176 refactor: Remove excessive logging from app initialization 2025-12-26 10:42:23 -03:00
Ignacio Perez 8bfb0467fb feat: Integrate TaskWarrior with config reading and optimized data
loading

- Read data.location from ~/.config/task/taskrc (supports
  TASKDATA/TASKRC env vars)
- Add get_overview() method to fetch tasks, projects, tags in one call
  (3→1 requests)
- Replace mock data with real TaskWarrior data
- Add logging with env_logger
- Improve tag logging output
2025-12-25 16:28:29 -03:00
Ignacio Perez 33769a4686 feat: Add TaskWarrior integration with TaskChampion
- Error handling with TaskError enum and TaskResult<T> alias
- Data models: Task, TaskPriority, TaskStatus, TaskAnnotation
- Advanced filtering: TaskFilter with hierarchical projects, tags
  (AND/OR), priority, due dates, and search
- TaskService: Full CRUD, tags, projects, annotations, dependencies,
  sync
2025-12-25 15:47:38 -03:00
Ignacio Perez 9ba1191c47 feat: Add empty StatusBar component
- Create StatusBar component with 30px fixed height
- Position at bottom of app layout with proper flex column structure
- Add placeholders for vim mode (left) and sync status (right)
- Reorganize App layout to accommodate status bar below main content
2025-12-25 12:16:12 -03:00
Ignacio Perez 7842b16ccf feat: Implement hierarchical sidebar with projects and tags
Add complete sidebar implementation with:
- ProjectTree model using arena allocator for hierarchical projects
- FilterState model for global filter state management
- Sidebar view with independent scrollable sections
- Project tree with expand/collapse functionality
- Tag selection with toggle support
- Observable filter state shared across components
2025-12-25 10:55:58 -03:00
Ignacio Perez b4e0d17391 Add MIT and Apache-2.0 dual licensing 2025-12-24 19:39:35 -03:00
Ignacio Perez 7c1824dcf7 feat: Add GPUI component library
Add core UI components for TaskWarrior GUI application:

Components:
- Input: Text input with autocomplete suggestions, keyboard navigation
- Button: Multiple variants (Primary, Secondary, Ghost, Danger, Success,
  Text)
- DropdownButton: Compound button with dropdown menu
- Icon: SVG icons with customizable sizes
- Label: Simple text display
- Panel: Container with optional title
- List: List container
- Modal: Modal dialog
- Divider: Visual separator

Infrastructure:
- Theme system with dark/light modes (Catppuccin colors)
- App module with window management
2025-12-24 19:21:04 -03:00
Ignacio Perez 8490fb03f5 feat: New dependencies
- Chrono
- Dirs
- Serde and Serde json
- taskchapion
- uuid
2025-12-24 19:18:47 -03:00
Ignacio Perez cf9f8f633f Init project 2025-12-24 07:42:22 -03:00