2024-07-09 14:56:08 +00:00
|
|
|
# mostr
|
|
|
|
|
|
|
|
A nested task chat, powered by nostr!
|
|
|
|
|
|
|
|
## Quickstart
|
|
|
|
|
2024-07-29 11:20:49 +00:00
|
|
|
First, start a nostr relay, such as
|
|
|
|
- https://github.com/coracle-social/bucket for local development
|
2024-07-29 19:56:30 +00:00
|
|
|
- https://github.com/rnostr/rnostr for production use
|
|
|
|
|
|
|
|
Run development build with:
|
2024-07-09 14:56:08 +00:00
|
|
|
|
2024-07-29 11:20:49 +00:00
|
|
|
cargo run
|
|
|
|
|
2024-07-29 19:56:30 +00:00
|
|
|
Creating a test task:
|
|
|
|
`nostril --envelope --content "test task" --kind 1621 | websocat ws://localhost:4736`
|
|
|
|
|
|
|
|
Install latest build:
|
|
|
|
|
|
|
|
cargo install --path . --offline
|
2024-07-13 13:00:42 +00:00
|
|
|
|
2024-07-24 22:02:26 +00:00
|
|
|
## 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
|
|
|
|
|
2024-07-25 19:40:35 +00:00
|
|
|
### Command Syntax
|
|
|
|
|
2024-07-29 10:37:05 +00:00
|
|
|
`TASK` creation syntax: `NAME: TAG1 TAG2 ...`
|
2024-07-24 22:02:26 +00:00
|
|
|
|
|
|
|
- `TASK` - create task
|
|
|
|
- `.` - clear filters and reload
|
2024-07-29 10:37:05 +00:00
|
|
|
- `.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)
|
2024-07-24 22:02:26 +00:00
|
|
|
|
|
|
|
Dots can be repeated to move to parent tasks
|
|
|
|
|
|
|
|
- `:[IND][COL]` - add / remove property column COL to IND or end
|
2024-07-25 07:50:53 +00:00
|
|
|
- `>[TEXT]` - Complete active task and move to parent, with optional state description
|
|
|
|
- `<[TEXT]` - Close active task and move to parent, with optional state description
|
2024-07-29 08:15:13 +00:00
|
|
|
- `|TEXT` - Set state for current task from text (also aliased to `/` for now)
|
2024-07-26 08:07:47 +00:00
|
|
|
- `-TEXT` - add text note (comment / description)
|
2024-07-25 07:50:53 +00:00
|
|
|
|
2024-07-29 08:15:13 +00:00
|
|
|
Property Filters:
|
|
|
|
|
|
|
|
- `#TAG` - filter by tag
|
2024-07-29 11:20:49 +00:00
|
|
|
- `?STATE` - filter by state (type or description) - plain `?` to reset
|
2024-07-29 08:15:13 +00:00
|
|
|
|
2024-07-25 07:50:53 +00:00
|
|
|
State descriptions can be used for example for Kanban columns.
|
2024-07-29 11:20:49 +00:00
|
|
|
An active tag or state filter will also set that attribute for newly created tasks.
|
2024-07-24 22:02:26 +00:00
|
|
|
|
2024-07-25 19:51:12 +00:00
|
|
|
### Available Columns
|
2024-07-24 22:02:26 +00:00
|
|
|
|
|
|
|
- `id`
|
|
|
|
- `parentid`
|
|
|
|
- `name`
|
|
|
|
- `state`
|
2024-07-29 11:20:49 +00:00
|
|
|
- `hashtags`
|
2024-07-30 06:09:54 +00:00
|
|
|
- `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
|
2024-07-24 22:02:26 +00:00
|
|
|
- `path` - name including parent tasks
|
|
|
|
- `rpath` - name including parent tasks up to active task
|
2024-07-30 14:11:43 +00:00
|
|
|
- `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
|
2024-07-24 22:02:26 +00:00
|
|
|
|
2024-07-30 06:09:54 +00:00
|
|
|
For debugging: `props`, `alltags`, `descriptions`
|
|
|
|
|
2024-07-30 14:11:43 +00:00
|
|
|
TBI: Combined formatting and recursion specifiers -
|
|
|
|
for example progress count/percentage and recursive or not.
|
|
|
|
Subtask progress immediate/all/leafs.
|
2024-07-24 22:02:26 +00:00
|
|
|
|
2024-07-13 13:00:42 +00:00
|
|
|
## Plans
|
|
|
|
|
2024-07-29 11:20:49 +00:00
|
|
|
- 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)
|
2024-07-29 19:56:30 +00:00
|
|
|
- Offline caching
|
|
|
|
- Web Interface, Messenger integrations
|
2024-07-29 11:20:49 +00:00
|
|
|
- Relay: filter out task state updates within few seconds, also on client side
|