ansido: A terminal task manager built with Ansiform.

[ library, mit, program, user-interfaces ] [ Propose Tags ] [ Report a vulnerability ]

A small task manager for the terminal. It keeps categories and tasks in a plain text file and draws a single task table with title, note and status using the Ansiform formatting library.


[Skip to Readme]

Flags

Manual Flags

NameDescriptionDefault
werror

Treat GHC warnings as errors in development and CI.

Disabled

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 1.0.0
Change log CHANGELOG.md
Dependencies ansido, ansiform (>=1.0 && <1.1), base (>=4.16 && <5), directory (>=1.3 && <1.4), filepath (>=1.4 && <1.6) [details]
Tested with ghc ==9.2.8 || ==9.14.1
License MIT
Copyright 2026 Tunai Raiol
Author Tunai Raiol
Maintainer Tralen <dev@tralen.cc>
Uploaded by tralen at 2026-10-25T12:52:38Z
Category User Interfaces
Home page https://github.com/Tralen/ansido#readme
Bug tracker https://github.com/Tralen/ansido/issues
Source repo head: git clone https://github.com/Tralen/ansido
Distributions
Executables ansido
Downloads 0 total (0 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]

Readme for ansido-1.0.0

[back to package description]

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

  • Architecture: layers, module responsibilities and the pure/IO boundary.
  • Domain: entities, invariants, transitions and errors.
  • Persistence: file format, validation and atomic saving.
  • Interface: screens, keys, layout, theming and input.
  • Development: build, tests, versioning and contribution rules.
  • Ansiform form initial values: editable pre-filled form fields and how ansido uses them.

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.