Add detail view and create/finish time for task - #27
Open
LiuYinCarl wants to merge 23 commits into
Open
Conversation
LiuYinCarl
commented
Jan 19, 2026
- Add Create time and Finsih time for tasks.
- Add Task Detail View which binding to 'v'.
Completed tasks are now hidden in the task list by default. Press `t` to toggle their visibility and immediately refresh the view. 馃挊 Generated with Crush Assisted-by: Crush:deepseek-v4-pro
馃挊 Generated with Crush Assisted-by: Crush:deepseek-v4-pro
馃挊 Generated with Crush Assisted-by: Crush:deepseek-v4-pro
馃挊 Generated with Crush Assisted-by: Crush:deepseek-v4-pro
馃挊 Generated with Crush Assisted-by: Crush:deepseek-v4-pro
馃挊 Generated with Crush Assisted-by: Crush:deepseek-v4-pro
馃挊 Generated with Crush Assisted-by: Crush:deepseek-v4-pro
馃挊 Generated with Crush Assisted-by: Crush:deepseek-v4-pro
馃挊 Generated with Crush Assisted-by: Crush:deepseek-v4-pro
馃挊 Generated with Crush Assisted-by: Crush:deepseek-v4-pro
馃挊 Generated with Crush Assisted-by: Crush:deepseek-v4-pro
- Remove unused `toml` dependency - Fix `get_indicator_done_tasks_color` 50% boundary overlap bug - Move `load_delete_confirm_items` from task.rs to ui.rs - Extract `format_timestamp`/`format_duration` to util.rs - Eliminate clone-write-reload anti-pattern in all CRUD operations - Extract `handle_modal_nav` helper for repeated modal keyboard logic - Remove dead `reload` and `_get_all` methods 馃挊 Generated with Crush Assisted-by: Crush:deepseek-v4-pro
- Add TASK_PRIORITY_NONE constant instead of magic 0 - Widen status and priority list modals to prevent text clipping - Update all priority 0 references to TASK_PRIORITY_NONE 馃挊 Generated with Crush Assisted-by: Crush:deepseek-v4-pro
- AddProject handler selected projects.len() (one past the end), so opening the tasks of a freshly created project panicked with an index out of bounds error; select len() - 1 and skip empty titles - Guard App::next/previous against empty lists (len() - 1 underflow) - Allow overriding the storage dir via BASILK_CONFIG_DIR so tests never touch the real config directory - Add unit tests for util, migration, json, project, task and app navigation, plus proptest-based property/fuzz tests
- Stopwatch (s) bound to the selected task accumulates into time_spent_secs; pomodoro (c) is a global countdown that rings the terminal bell at zero and persists nothing - Per-task estimated_hours (g in task details) with progress shown in the task list, details view, and timer modal - Event loop switches to poll-based ticking for live readouts; timers survive view switches and settle on stop, countdown zero, or quit - New c8f21 JSON migration for the timer fields
The timer modal now shows the readout as 5-row block-art digits instead
of a single text line, and a finished pomodoro rings the bell once and
stays visible ("time's up!") until dismissed with any key instead of
closing automatically.
Press b in the task view to toggle between the classic list and a board with Up Next / On Going / Done swimlanes. Left/right switch lanes, up/down move within a lane; all task keybindings (details, status, priority, timers, ...) work unchanged since the board is a rendering mode of ViewTasks, not a new ViewMode. The board always shows the Done lane and the focus follows a task across lanes when its status changes. Task lines are built by the shared Task::repr_spans helper so the list and board renderings cannot drift apart.
Split App::run's monolithic per-view key handling into dedicated handlers so the loop stays shallow, and break Json::check into focused paths for the current data file and legacy versioned files.
Press m in the project list to open global, project-independent notes. A note is a titled entry whose body is Markdown: Enter opens a full-page rendered preview (pulldown-cmark -> ratatui Text with a style stack), and e switches to a full-page tui-textarea editor (Esc saves and returns to the preview). Notes are stored in the same basilk_data.json wrapper behind #[serde(default)], so pre-notes files load unchanged; the e5a1c migration only bumps the version. Both write paths preserve the other half of the file. Also fix show_items classifying ViewHelp/InfoMigration: opening help over the projects or notes view with an empty project list fell into the tasks branch and panicked in Project::get_current (ratatui clears the list selection when rendering an empty list).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.