Take your HalpTask productivity to the highest level! This guide details advanced Vim shortcuts, subtree hoisting hacks, dynamic tag mechanics, configuration fine-tuning, and terminal shell integration.
HalpTask is built around authentic Vim navigation and manipulation concepts.
Navigation Subtree Editing Folding & Focus
────────── ─────────────── ───────────────
j / k : Down/Up oo : New below zc / zo : Close/Open fold
h / l : Parent/Child oc : New child (subtask) za : Toggle fold
gg : Jump Top dd : Delete subtree zM / zR : Close/Open all
G : Jump Bottom J/K: Move down/up ff : Hoist / Zoom view
gi : Jump to ID u/Ctrl+r: Undo/Redo <space>gi: Jump to ID
gior<space> g i: Jump directly to any task or bullet item by its permanent#IDnumber!oovsoc:oocreates a sibling bullet directly below;occreates a child subtask underneath current selection.i/a/e: Enter insert mode at the current node text.c: Clear the node text entirely and instantly enter insert mode.J/K: Shift items up or down among their siblings without losing subtree structure.Tab/Shift+Tab: Demote (indent) or promote (unindent) items across hierarchical levels.u/Ctrl+r: Full undo/redo stack for all structural changes, node deletions, and status toggles.
HalpTask features two distinct ways to interact with tasks:
In Normal mode, pressing single t performs an instant status cycle:
•(Bullet) ➔[ ](Todo)[ ](Todo) ➔[~](In Progress)[~](In Progress) ➔[x](Done)[x](Done) ➔•(Bullet)
Tip
Power Tip: Tap t rapidly while moving with j/k to update task statuses across your list without opening any menus!
When you need direct, non-cycling status assignment:
<space> t d: Mark Done ([x]) instantly.<space> t p: Mark In Progress ([~]) instantly.<space> t s: Mark Todo ([ ]) instantly.<space> t a: Open Tag Manager (🏷️).<space> n/N: Open / Edit Task Markdown Note (📝).<space> t D/D: Open Set / Edit Due Date prompt (⏰).<space> a g/A: Open Agenda & Schedule View modal (📅).
HalpTask transforms nested task outliners into actionable daily agendas:
- Inline Scheduling: While typing in insert mode, type
due:tomorrow,due:+3d,due:friday,due:2026-08-25, or@due(...)to automatically attach a deadline. - Urgency Badges: Tasks render ANSI-styled badges:
- 🔴
[Overdue: 2d](Bold Red alert for overdue incomplete tasks) - 🟡
[Due Today](Amber warning for tasks due today) - 🔵
[Due: Tomorrow]/[Due: Fri](Cyan subtle info) - 🏁
[Due: Aug 25](Muted completed)
- 🔴
- Agenda View Modal (
Aor<space> a g): Displays a full-screen schedule grouped into Overdue, Today, This Week, Upcoming, and Completed.- Press
j/kto navigate,t/x/Spaceto cycle status,Dto change due dates,/to filter, andEnterto jump directly to that task in your tree outliner!
- Press
Attach detailed Markdown context to any task item.
- Press
Nor<space> nto open the Note modal. - Supports rich Markdown formatting (headings
#, lists-, quotes>, code blocks```). - Write internal task links in flexible formats:
#123,[Label](#123),[Label](123),task:123. - Press
Tab/Shift+Tabto cycle between links in View mode. - Press
Enteron a focused link to instantly close the note and navigate to that task in your tree view!
When working inside deep task trees with hundreds of items, extraneous sections can cause visual distraction.
- Press
ffon any parent node to Hoist / Zoom into that node. - The screen zooms in, making the focused node the temporary root of your viewport!
- Press
ffagain to un-hoist and return to full document view.
Keep your workplace tidy with completed task management shortcuts:
fc(Toggle Completed Filter): Hides or shows all[x]completed tasks from your view without deleting them. Perfect for focusing strictly on active work!da(Delete All Completed): Permanently purges all[x]completed tasks from the current document.
For tasks you have finished but want to retain long-term history for audit or retrieval:
<space> a a(Archive Selected Item): Moves the selected node (and its entire subtree) out of your active file into compressed archive storage (archive.dat).<space> a c(Archive Completed Tasks): Sweeps all[x]completed tasks across the document and archives them automatically.<space> a v/<space> a r(Archive Browser Modal): Launches the interactive Archive View modal to filter, view subtree details, restore entries back into your active tree (r), or permanently delete (d).
Note
Archive storage uses Gzip compression to save disk space and automatically inherits your file AES-256-GCM encryption passphrase! Schema updates in future versions automatically migrate archived items upon restoration.
HalpTask features a sophisticated tag hierarchy system:
- Direct Tags: Created with
Tor<space> t aand stored in plain text as#tagname. - Inherited Tags: Dynamically derived from ancestor nodes. Subtasks automatically display
[↖🔥 urgent]. - Subtask Reparenting Behavior:
- When you press
Tabto demote a task under a tagged parent, it instantly inherits the parent's tags. - When you press
Shift+Tabto promote a subtask out of a tagged parent, the inherited parent tags are automatically removed, preserving only direct tags.
- When you press
HalpTask includes a first-class headless CLI pipeline (halptask add and halptask list) that eliminates context-switching friction.
Capture thoughts, bug reports, and action items directly from terminal sessions without opening the TUI:
# Capture with tags and due date
halptask add "Fix Redis connection timeout in worker #ops due:tomorrow"
# Flag modifiers
halptask add "Draft sprint review" --tag urgent --tag meeting
halptask add "Deploy hotfix" --top
halptask add "System architecture note" --bulletlist --today includes active tasks due today, overdue, or in progress, and excludes completed tasks. list --all --json includes completed tasks. --count summarizes the entire file (overdue overlaps todo/in-progress); do not combine it with --json. Piped output is free of ANSI formatting.
Capture defaults to tasks; --task and --bullet cannot be combined. To supply a Markdown status prefix, use halptask add --tag ops -- "- [~] Investigate timeout". Use --inbox Work to target a different root section. Both due:tomorrow and @due(2026-09-15) are supported.
Display your live pending and in-progress task counts directly in your tmux status bar:
# Update status every 60 seconds
set -g status-interval 60
# Add halptask count to right status
set -g status-right "#(halptask list --count) | %H:%M %d-%b"For Wayland / Hyprland / Sway status bars:
For X11 / i3 / bspwm status bars:
[module/halptask]
type = custom/script
exec = halptask list --count
interval = 60
click-left = kitty -e halptask &
format-prefix = " "# Work-specific tasks
alias ht="halptask"
alias hta="halptask add"
alias htl="halptask list --today"
alias htp="halptask -f ~/projects/main.pb"
alias htv="HALPTASK_PASSPHRASE=\"secret\" halptask -f ~/.config/halptask/vault.pb"Keep HalpTask permanently open alongside your code editor inside Tmux:
# In Tmux session:
tmux split-window -h -p 35 "halptask -f .tasks.pb"HalpTask provides two seamless ways to tune settings:
- Press
<space> c cto launch the interactive modal. - Navigate settings with
j/kor↑/↓. - Press
SpaceorEnterto toggle booleans (e.g.auto_save,show_which_key). - Press
tto cycle visual color themes (default,tokyonight,catppuccin,dracula,nord). - Settings persist instantly to disk!
Press <space> c e to launch your system $EDITOR (Neovim, Vim, Nano) directly on ~/.config/halptask/config.yaml. When you save and exit your editor, HalpTask automatically reloads the updated configuration without restarting!

