Commit Graph
43 Commits
Author SHA1 Message Date
structix c520847146 Add date picker and task improvements 2026-09-10 14:08:54 +02:00
Ignacio Perez cd00f19c4c Updated version and screenshot 2026-01-05 19:23:58 -03:00
Ignacio Perez 0beb4f0921 Fix task reload edge cases, selection behavior, and minor UX issues
- Only count projects and tags from pending tasks
- Stop reselecting tasks after sync to avoid unexpected page jumps
- Make delete flow resilient when task no longer exists after deletion
- Relax modifier detection for delete confirmation
- Improve date parsing consistency and validation message
- Add Recurring status to task detail modal
- Show "-" when task has no working ID
- Guard against out-of-bounds pagination slices
- Prevent division by zero when computing page index
2026-01-05 11:37:48 -03:00
Ignacio Perez 0adcb9e512 feat: enhance input component and task modal UX
- Text selection & clipboard: Add full text selection support with Ctrl+A/C/X/V operations, visual highlight, and proper cursor positioning
- Multiple annotations: Fix annotation creation to properly append multiple entries instead of overwriting
- Navigation improvements: Improve annotation list navigation to cycle between items and input field
- UI layout fixes: Add flex wrapping to tag displays to handle long lists gracefully
- Focus management: Fix focus retention when switching between edit/view modes in task modal
- Tag suggestions: Prevent auto-acceptance of suggestions on Enter, allowing custom tag input
2026-01-04 19:45:27 -03:00
Ignacio Perez 540627db75 fix(modal): keep focus in annotations section when moving up from first
item
2026-01-04 18:38:04 -03:00
Ignacio Perez 2d694ee016 Fix annotation editing to use denotate+annotate instead of modifying in plac 2026-01-04 16:48:06 -03:00
Ignacio Perez ccc32a8867 fix: Fix panic when select priority 2026-01-04 16:31:34 -03:00
Ignacio Perez 3f0262c50a fix(modal): status and priority dropdowns save selection on mouse click
Fixed an issue where selecting a status or priority option with the
mouse did not save the value in edit mode. Added on_select handlers to
both dropdowns to update the form state immediately when clicked.
2026-01-04 12:12:23 -03:00
Ignacio Perez 71dc852131 Updated README.md 2026-01-04 11:43:43 -03:00
Ignacio Perez 1c4110caa9 feat: add task creation, deletion, and modal focus restoration
Implemented task creation flow with keyboard shortcut (c) and UI button. Added task deletion with confirmation dialog,
accessible via Delete key or per-row delete button. Fixed modal close behavior to restore
focus and reselect the appropriate task (created task for new tasks, original task for view/edit).
Enhanced tag and project autocomplete with hierarchical project suggestions and tag filtering
2026-01-04 11:29:26 -03:00
Ignacio Perez eabe07d489 feat: add edit-mode commands and refactor modal UI
Introduces modal edit navigation commands and a dedicated keymap context, supports opening tasks directly in edit mode,
and reorganizes the task detail modal into reusable components with sectioned render/state helpers to reduce duplication.
2026-01-04 07:13:01 -03:00
Ignacio Perez 00cfc3ff4d feat(modal): add edit mode with anchored dropdowns and keyboard workflow
- Add TaskDetailModal edit mode with form validation, tags + annotations editing, and SaveEdits event
- Anchor dropdown/suggestion menus using deferred/anchored overlay to avoid clipping
- Add modal-specific keymap contexts (ModalInput/ModalDropdown) for Esc/Ctrl+Enter/Tab navigation
- Refresh modal project suggestions from tasks; improve project child filtering boundary match
- Small UI polish (toast styling, layout spacing) and update shortcuts docs
2026-01-02 10:38:25 -03:00
Ignacio Perez 7cf431d761 feat: Add global toasts and annotation copy feedback
Create a reusable ToastHost/ToastGlobal rendered as an overlay, and use
it to show a toast after copying an annotation. Adjust modal backdrop
click handling so toasts don’t close the modal, add a simple color mix
helper for toast styling, and remove the unused task table priority
color helper.
2025-12-31 14:59:51 -03:00
Ignacio Perez 37760cda74 feat: Add Annotations to Task Modal 2025-12-31 14:01:26 -03:00
Ignacio Perez 455f05cd4f feat: Document keymap flow and update shortcuts
Add a new keymap doc that explains contexts, focus scope, command routing, event flow, and how to add bindings.
Update keyboard shortcuts to match current modal and search input bindings
2025-12-31 07:37:52 -03:00
Ignacio Perez 125456e50a refactor: task detail modal into its own component
Move task detail modal logic from App into a dedicated TaskDetailModal
component. The modal now manages its own state (open/closed, loading,
error states) and handles its own focus and scroll. App delegates modal
operations to the component and reacts to its events.
2025-12-30 21:16:12 -03:00
Ignacio Perez f0ffa033b0 fix: Sync sidebar selection on click
Update sidebar click handlers to set the keyboard selection and scroll position so mouse actions stay in sync with the highlight.
2025-12-30 12:11:57 -03:00
Ignacio Perez 1693655e47 feat: Add reusable modal and task detail view
Split the task detail modal into its own view and add a generic modal
frame, plus new models and service mapping for task details. Update app layout,
keymaps, and sidebar focus events to support the modal and keyboard flow, with small
UI tweaks like wrapping and scroll handling.
2025-12-30 11:57:28 -03:00
Ignacio Perez 87ecec7f67 bump version 2025-12-28 21:54:55 -03:00
Ignacio Perez 9f574c74a4 feat: Removed useless logs in release 2025-12-28 21:51:23 -03:00
Ignacio Perez ab7c3ce770 feat: Add keyboard shortcuts documentation 2025-12-28 21:41:14 -03:00
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