Go to file
xeruf 3652f0d39f refactor: state-kind conversion 2024-07-30 20:25:27 +03:00
src refactor: state-kind conversion 2024-07-30 20:25:27 +03:00
.gitignore feat(main): dynamically specify relays 2024-07-26 12:58:20 +03:00
Cargo.lock feat: nicely format current task information 2024-07-30 09:00:39 +03:00
Cargo.toml feat: nicely format current task information 2024-07-30 09:00:39 +03:00
README.md feat: implement recursive task progress and subtask completion count 2024-07-30 17:11:43 +03:00

README.md

mostr

A nested task chat, powered by nostr!

Quickstart

First, start a nostr relay, such as

Run development build with:

cargo run

Creating a test task: nostril --envelope --content "test task" --kind 1621 | websocat ws://localhost:4736

Install latest build:

cargo install --path . --offline

Principles

  • active task is tracked automatically
  • progress through subdivision rather than guessing
  • TBI: show/hide closed/done tasks

Recommendation: Flat hierarchy, using tags for filtering (TBI)

Reference

Command Syntax

TASK creation syntax: NAME: TAG1 TAG2 ...

  • TASK - create task
  • . - clear filters and reload
  • .TASK
    • select task by id
    • match by task name prefix: if one or more tasks match, filter / activate (tries case-sensitive then case-insensitive)
    • no match: create & activate task
  • .2 - set view depth to 2, which can be substituted for any number (how many subtask levels to show, default 1)

Dots can be repeated to move to parent tasks

  • :[IND][COL] - add / remove property column COL to IND or end
  • >[TEXT] - Complete active task and move to parent, with optional state description
  • <[TEXT] - Close active task and move to parent, with optional state description
  • |TEXT - Set state for current task from text (also aliased to / for now)
  • -TEXT - add text note (comment / description)

Property Filters:

  • #TAG - filter by tag
  • ?STATE - filter by state (type or description) - plain ? to reset

State descriptions can be used for example for Kanban columns. An active tag or state filter will also set that attribute for newly created tasks.

Available Columns

  • id
  • parentid
  • name
  • state
  • hashtags
  • tags - values of all nostr tags associated with the event, except event tags
  • desc - last note on the task
  • description - accumulated notes on the task
  • path - name including parent tasks
  • rpath - name including parent tasks up to active task
  • time - time tracked on this task
  • rtime - time tracked on this tasks and all recursive subtasks
  • progress - recursive subtask completion in percent
  • subtasks - how many direct subtasks are complete

For debugging: props, alltags, descriptions

TBI: Combined formatting and recursion specifiers - for example progress count/percentage and recursive or not. Subtask progress immediate/all/leafs.

Plans

  • Relay Selection, fetch most recent tasks first
  • parse Hashtag tags from task name
  • Personal time tracking
  • Unified Filter object -> include sub
  • Time tracking: Active not as task state, ability to postpone task and add planned timestamps (calendar entry)
  • TUI - Clear terminal?
  • Expiry (no need to fetch potential years of history)
  • Offline caching
  • Web Interface, Messenger integrations
  • Relay: filter out task state updates within few seconds, also on client side