Ansi Do!
A small task manager for the terminal, built with Ansiform.
The name combines ANSI and "do", as in things to do.
Stack
Haskell with Cabal, using Ansiform for the terminal interface. Stack is not used.
Versioning
PVP, single-sourced from the ansido.cabal file.
- Patch: fixes and minor refinements.
- Minor: new user-facing features or screens.
- Major 2: data model breaking changes.
- Major 1: major release milestones.
Goal
ansido is a practical application of Ansiform. It exercises the library in a real program: pages, sections, tables, styles, immediate input, forms, line input and redraw.
Status
The application is functional. It includes:
- Task category creation, selection, editing and deletion.
- Arrow,
j/k and w/s navigation on the category screen, with Enter opening the board.
- A single task table with title, note and status columns, without borders.
- Vertical navigation with arrow keys,
j and k, or w and s.
- A status filter that cycles through all, Todo, Doing and Done.
- A sort that cycles with
o through insertion order, status and title.
- Arrow keys,
Home, End and Delete edit text in the create and edit forms.
Enter to add a task and Space to cycle the selected task status.
e to edit the selected task or category, with the current values pre-filled in the form.
v to view the full note with word wrap, and to return from the details view.
Backspace to go back and Del to delete tasks and categories.
- A help page with the data file path.
- A shared theme for header, footer and menus.
- Plain text persistence with errors as data.
- Linux, macOS and Windows builds, checked by GitHub Actions.
- Release binaries for all three systems on GitHub Releases.
r to redraw and x to exit.
The application always starts on the category screen.
Quick start
cabal update
cabal build all
cabal run ansido
The data file defaults to .ansido/board.tsv in the user home directory. On Unix that is $HOME/.ansido/board.tsv; on Windows it is the profile directory, such as C:\Users\<name>\.ansido\board.tsv. Set ANSIDO_FILE to use another path:
ANSIDO_FILE=./workspace.tsv cabal run ansido
$env:ANSIDO_FILE = ".\workspace.tsv"; cabal run ansido
The application opens on the category screen. Press n to create the first category. Use ↑ and ↓ to highlight a category and Enter to open its board; the digits 1 to 9 open a category directly. On the task table, press Enter to add a task: type the title, press Enter, type the note and press Enter again. Use ↑ and ↓ to select a task, Space to cycle its status, f to filter by status, o to sort the table, e to edit, v to read the full note, Del to delete it, Backspace to go back and ? for the full key reference. The create and edit forms move the cursor with the arrow keys, Home, End and Delete. On the category screen, e renames the highlighted category and Del deletes it together with its tasks. The edit forms open with the current values pre-filled, so only the changed part has to be retyped.
Pre-built binaries for Linux, macOS and Windows are attached to each GitHub release.
Documentation
Design principles
- Immutable state; every action returns a new state.
- Pure core for task transitions and filtering.
- IO only at the edges: input, drawing and persistence.
- Errors as data; no exceptions for invalid input.
- Reusable components for the header, footer, table and task rows.
License
MIT. See LICENSE.