diff --git a/README.md b/README.md index c96a5fa..2c64b42 100644 --- a/README.md +++ b/README.md @@ -162,27 +162,21 @@ Considering to use Calendar: https://github.com/nostr-protocol/nips/blob/master/ ## Plans +- Handle event sending rejections (e.g. permissions) - Local Database Cache, Negentropy Reconciliation -> Offline Use! -- Scheduling - Remove status filter when moving up? - Task markdown support? - colored -- Time tracking: Ability to postpone task and add planned timestamps (calendar entry) +- Calendar Events - make future time-tracking editable -> parametrised replaceable events - Speedup: Offline caching & Expiry (no need to fetch potential years of history) + Fetch most recent tasks first + Relay: compress tracked time for old tasks, filter closed tasks + Relay: filter out task status updates within few seconds, also on client side -### Fixes - -- Handle event sending rejections (e.g. permissions) -- Recursive filter handling - -### Command +### Commands - Open Command characters: `_^\=$%~'"`, `{}[]` - Remove colon from task creation syntax -- reassign undo to `&` and use `@` for people ### Conceptual @@ -212,7 +206,7 @@ Suggestions welcome! - n8n node - Caldav Feed: Scheduled (planning) / Tracked (events, timetracking) with args for how far back/forward -## Exemplary Workflows +## Exemplary Workflows - User Stories - Freelancer - Family Chore Management @@ -223,6 +217,29 @@ Suggestions welcome! + Schedule for multiple people - Tracking Daily Routines / Habits +### Freelancer + +For a Freelancer, mostr can help structure work times +across different projects +because it can connect to multiple clients, +using their mental state effectively (Mind Management not Time Management). +It also enables transparency for clients +by sharing the tracked time - +but alternatively the freelancer +can track times on their own auxiliary relay +without problems. + +### Family + +With a mobile client implemented, +mostr can track shopping lists and other chores for a family, +and provide them context-dependently - +allowing you to batch shopping and activities without mental effort. + +### Project Team + +sharing, assigning, stand-ups, communication + ### Contexts A context is a custom set of filters such as status, tags, assignee diff --git a/src/tasks.rs b/src/tasks.rs index d203c8a..d4172d2 100644 --- a/src/tasks.rs +++ b/src/tasks.rs @@ -52,7 +52,7 @@ pub(crate) struct TasksRelay { tasks: TaskMap, /// History of active tasks by PubKey history: HashMap>, - /// Index of found users with metadata + /// Index of known users with metadata users: HashMap, /// Own pinned tasks bookmarks: Vec, @@ -62,15 +62,15 @@ pub(crate) struct TasksRelay { /// The task properties sorted by sorting: VecDeque, - /// A filtered view of the current tasks - /// Would like this to be Task references but that doesn't work - /// unless I start meddling with Rc everywhere. + /// A filtered view of the current tasks. + /// Would like this to be Task references + /// but that doesn't work unless I start meddling with Rc everywhere. view: Vec, depth: usize, /// Currently active tags tags: BTreeSet, - /// Tags filtered out + /// Tags filtered out from view tags_excluded: BTreeSet, /// Current active state state: StateFilter, @@ -993,10 +993,10 @@ impl TasksRelay { t.props.insert(event.clone()); }); if !found { - if event.kind.as_u16() == 1 { + if event.kind == Kind::TextNote { self.add_task(event); } else { - return Some(event) + return Some(event); } } None