Skip to content

Add detail view and create/finish time for task - #27

Open
LiuYinCarl wants to merge 23 commits into
GabAlpha:masterfrom
LiuYinCarl:master
Open

Add detail view and create/finish time for task#27
LiuYinCarl wants to merge 23 commits into
GabAlpha:masterfrom
LiuYinCarl:master

Conversation

@LiuYinCarl

Copy link
Copy Markdown
  1. Add Create time and Finsih time for tasks.
  2. Add Task Detail View which binding to 'v'.
image

LiuYinCarl and others added 23 commits January 19, 2026 22:07
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).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant