Skip to content

Commit

Permalink
feat: full screen compact view, filtering, markdown rendering (#10)
Browse files Browse the repository at this point in the history
- Changes "compact" list density mode to not be limited to 9 items per
page.
- Adds filtering capability to task lists (by manually typing search
query)
- Adds a means for quick filtering (via a list)
- Adds markdown rendering via glamour
  • Loading branch information
dhth authored Jul 23, 2024
1 parent 4a90459 commit 841d078
Show file tree
Hide file tree
Showing 37 changed files with 1,062 additions and 760 deletions.
8 changes: 8 additions & 0 deletions cmd/assets/guide/actions-adding-context.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
As mentioned before, once a task is created, you might want to add context to
it.

You do that by pressing `c`. Go ahead, try it out. Try changing the text, and
then save the file. This context text should get updated accordingly.

Once saved, you can also copy a tasks's context to your system clipboard by
pressing `y`.
13 changes: 13 additions & 0 deletions cmd/assets/guide/actions-adding-tasks.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
Let's get to the crux of omm: **adding** and **prioritizing** tasks. We'll begin
with adding tasks.

You can add a task below the cursor by pressing `a`. Once you get acquainted
with omm, you'll want to have more control on the position of the newly added
task. omm offers the following keymaps for that.

o/a add task below cursor
O add task above cursor
I add task at the top
A add task at the end

Go ahead, create a task, then move to the next guided item.
8 changes: 8 additions & 0 deletions cmd/assets/guide/actions-filtering-tasks.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
You can filter tasks in a list by pressing `/`. Doing this will open up a search
prompt, which will match your query with task prefixes.

Try it out now. You get out of the filtered state by pressing `q/esc/<ctrl+c>`.

Note: You cannot add tasks or move them around in a filtered state. But, you can
move a task to the top of the list (by pressing ``). Doing this will also get
you out of the filtered state.
10 changes: 10 additions & 0 deletions cmd/assets/guide/actions-quick-filtering-via-a-list.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
You can also choose the prefix you want to filter by with the means of a list,
hereby called as the **Quick Filter List**. Press `ctrl+p` to open up a set of
task prefixes contained in the currently active task list. Press `` to
pre-populate the task list's search prompt with your selection.

Try it out now.

Note: Both the **Active Tasks List** and **Archived Tasks List** can be filtered
separately, using either the manual filtering approach or via the **Quick Filter
List**.
11 changes: 11 additions & 0 deletions cmd/assets/guide/actions-updating-task-details.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
Once a task is created, its summary and context can be changed at any point.

You can update a task's summary by pressing `u`.

This will open up the the same prompt you saw when creating a new task, with the
only difference that the task's summary will be pre-filled for you. This can
come in handy when you want to quickly jot down a task for yourself (either by
using the TUI, or by using the CLI (eg. `omm 'a hastily written task
summary'`)), and then come back to it later to refine it more.

Similarly, you can also update a task's context any time (by pressing `c`).
7 changes: 7 additions & 0 deletions cmd/assets/guide/cli-adding-a-task-via-the-cli.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
You can also add a task to omm via its command line interface. For example:

```bash
omm 'prefix: a task summary'
```

This will add an entry to the top of the active tasks list.
12 changes: 12 additions & 0 deletions cmd/assets/guide/cli-importing-several-tasks-via-the-cli.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
You can also import more than one task at a time by using the `import`
subcommand. For example:

```bash
cat << 'EOF' | omm import
orders: order new ACME rocket skates
traps: draw fake tunnel on the canyon wall
tech: assemble ACME jet-propelled pogo stick
EOF
```

omm will expect each line in stdin to hold one task's summary.
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
package cmd
Here's a sample TOML configuration file:

var (
sampleCfg = `db_path = "~/.local/share/omm/omm-w.db"
```toml
db_path = "~/.local/share/omm/omm-w.db"
tl_color = "#b8bb26"
atl_color = "#fabd2f"
title = "work"
list_density = "spacious"
show_context = false
editor = "vi -u NONE"
`
)
```
10 changes: 10 additions & 0 deletions cmd/assets/guide/config-changing-the-defaults.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
omm allows you to change the some of its behavior via configuration, which it
will consider in the order listed below:

- CLI flags (run `omm -h` to see details)
- Environment variables (eg. `$OMM_EDITOR`)
- A TOML configuration file (run `omm -h` to see where this lives; you can
change this via the flag `--config-path`)

omm will consider configuration in the order laid out above, ie, CLI flags will
take the highest priority.
9 changes: 9 additions & 0 deletions cmd/assets/guide/config-flags-env-vars-and-config-file.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
Every flag listed by `omm -h` (except `--config-path`) has an environment
variable counterpart, as well as a TOML config counterpart.

For example:

```text
--show-context -> OMM_SHOW_CONTEXT -> show_context
--editor -> OMM_EDITOR -> editor
```
9 changes: 9 additions & 0 deletions cmd/assets/guide/domain-an-archived-task.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
This is the archived list, meaning it holds tasks that are no longer being
worked on.

omm provides this list both for historical reference, as well as for you to be
able to move an archived task back into the active list.

You can toggle the state of a task using `<ctrl+d>`.

Press `tab/q/esc/<ctrl+c>` to go back to the active list.
14 changes: 14 additions & 0 deletions cmd/assets/guide/domain-task-bookmarks.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
Sometimes you'll add URLs to a task's summary or its context.

Such URLs (eg. https://github.com/dhth/omm, https://tools.dhruvs.space,
https://c.xkcd.com/random/comic) could be placed anywhere in the
summary/context.

omm lets you open these URLs via a single keypress. You can either press `b` to
open up a list of all URLs, and then open one of them by pressing `` or open
all of them by pressing `B`.

Note: If a task has a single URL added to it, pressing `b` will skip showing the
list, and open the URL directly.

Try both approaches now.
11 changes: 11 additions & 0 deletions cmd/assets/guide/domain-task-details.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
The **Task Details** pane is intended for when you want to read all the details
associated with a task in a full screen view.

You can view this pane by pressing `d`. This pane is useful when a task's
context is too long to fit in the context pane.

Whilst in this pane, you can move backwards and forwards in the task list by
pressing `h/←/→/l`. You quit out of this pane by either pressing `d` again, or
`q/esc/<ctrl+c>`.

Try it out. Come back to this entry when you're done.
13 changes: 13 additions & 0 deletions cmd/assets/guide/domain-task-priorities.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
At its core, omm is a dynamic list that maintains a sequence of tasks based on
the priorities you assign them.

And, as we all know, priorities often change. You're probably juggling multiple
tasks on any given day. As such, omm allows you to move tasks around in the
priority order. It has the following keymaps to achieve this:

⏎ move task to the top
J move task one position down
K move task one position up

It's recommended that you move the task that you're currently focussing on to
the top.
9 changes: 9 additions & 0 deletions cmd/assets/guide/domain-task-state.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
A task can be in one of two states: **active** or **archived**.

This list shows active tasks.

To be pedantic about things, only the tasks in the active list are supposed to
be "on your mind". However, there are benefits to having a list of archived
tasks as well.

Press `<tab>` to see the archived list.
10 changes: 10 additions & 0 deletions cmd/assets/guide/domain-tasks.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
omm (**on-my-mind**) is a task manager. You can also think of it as a keyboard
driven to-do list.

As such, tasks are at the core of omm. A task can be anything that you want to
keep track of, ideally something that is concrete and has a clear definition of
done.

Tasks in omm have a one liner summary, and optionally, some context associated
with them (like this paragraph). You can choose to add context to a task when
you want to save details that don't fit in a single line.
7 changes: 7 additions & 0 deletions cmd/assets/guide/guide-and-thats-it.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
That's it for the walkthrough!

I hope omm proves to be a useful tool for your task management needs. If you
find any bugs in it, or have feature requests, feel free to submit them at
https://github.com/dhth/omm/issues.

Happy task managing! 👋
10 changes: 10 additions & 0 deletions cmd/assets/guide/guide-welcome-to-omm.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
Hi there 👋 Thanks for trying out **omm**.

This is a guided walkthrough to get you acquainted with omm's features.

Before we begin, let's get the basics out of the way: you exit omm by pressing
`q/esc/<ctrl+c>`. These keys also move you back menus/panes whilst using omm's
TUI.

Onwards with the walkthrough then! Simply press `j/↓`, and follow the
instructions.
12 changes: 12 additions & 0 deletions cmd/assets/guide/visuals-list-density.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
omm's task lists can be viewed in two density modes: **compact** and
**spacious**.

This is the compact mode. As opposed to this, the spacious mode shows tasks in a
more roomier list, alongside highlighting prefixes (we'll see what that means),
and showing creation timestamps.

omm starts up with spacious mode by default (you can change this, as we'll see
soon). You can toggle between the two modes by pressing `v`. Choose whichever
mode fits your workflow better.

Try it out. Come back to this mode once you're done.
8 changes: 8 additions & 0 deletions cmd/assets/guide/visuals-toggling-context-pane.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
The context pane can be toggled on/off by pressing `C`.

You can choose to display it or not based on your preference. For convenience,
the lists will always highlight tasks that have a context associated with them
by having a **(c)** marker on them.

omm starts up with the context pane hidden by default (you can change this, as
we'll see soon).
4 changes: 2 additions & 2 deletions cmd/db_migrations.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ const (
)

var (
dbDowngradedErr = errors.New(`Looks like you downgraded omm. You should either delete omm's
errDBDowngraded = errors.New(`Looks like you downgraded omm. You should either delete omm's
database file (you will lose data by doing that), or upgrade omm to
the latest version.`)
)
Expand Down Expand Up @@ -67,7 +67,7 @@ Error: %s`,
}

if latestVersionInDB.version > latestDBVersion {
return dbDowngradedErr
return errDBDowngraded
}

if latestVersionInDB.version < latestDBVersion {
Expand Down
Loading

0 comments on commit 841d078

Please sign in to comment.