summaryrefslogtreecommitdiff
path: root/README.md
blob: 97f36a85f6cf3b810e837538e118eaee8a2c9f1f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# rafta.nvim

A rafta task client for your favourite editor

## Concept & Ideas

### Design

I love how [oil.nvim] works. The way you edit files feels very vim-like. My
goal is to achieve something very similar with tasks taken from rafta instead
of files. Here's my idea of how it should look (minus the pretty colors):

```
 An unkpecified task                                            󰈙 󰓹4    
 An very long task about very important ongoing stuff             󰓹2
 An incomplete task                                             󰈙 󰓹1   
 Another incomplete task                                        󰈙 󰓹10    
 Guess what, this task ain't done                                 󱈠       
 An incomplete task again                                       󰈙 󰓹2    
 A completed task
 A blocked task, bummer




*** You are offlline, will update next timee rafta.nvim is opened online ***
```

- **Status Column**:
  -  Undefined
  -  Ongoing
  -  Pending/Todo
  -  Done
  -  Blocked
- **Tags Column** (how many labels are attached to a given tag):
  - 󰓹 1+ tags
  - 󱈠 0 tags
- **Other columns**:
  -  Recurrence is enabled for that task
  -  A Planned/Scheduled date is set for that task
  -  A Deadline exists for that task
  - 󰈙 The task has a description (markdown file)
- **Color defines priority**
  - 0 (undefined): `#f2f1f0`
  - 1 (Highest):   `#D84141`
  - 2 (Very High): `#D75D47`
  - 3 (High):      `#DCA056`
  - 4 (Medium):    `#52C782`
  - 5 (Low):       `#52A2C7`
  - 6 (Lowest):    `#665FC4`

To help the user know if the current task has schedules, deadlines, etc... The
current line should be highlighted differently (since the columns are accross
the screen).

### Usage

I don't want to force commands onto users, so I'll provide lua function which
they can configure how they please:

**Opening the rafta client** (could be used to LazyLoad):
- `open()`
- `open_tab()`
- `open_split()`
- `open_vsplit()`

**Managing Tasks**:
- `set_priority()`
- `sort(pattern string)` I have yet to figure out a spec for this
- `filter(pattern string)` I have yet to figure out a spec for this
- `set_labels()` (edit each label on a separate row in a floating window)
- `set_schedule()` (nvim input window[^1])
- `set_deadline()` (nvim input window[^1])
- `set_scheduled()` (nvim input window)
- `view_description()` opens a `.md` file in a new buffer (default: Enter key)
- `toggle_view_deadlines(show boolean)` (nil arg is a true toggle)
- `toggle_view_schedules(show boolean)`
- `toggle_view_priority(show boolean)` Shows priority number (default: hidden)

- Tasks titles are just edited via insert mode
- Saving the buffer uploads changed tasks (Same goes for descriptions)
- If when coming back online, there is a conflict, a vimdiff could be opened
  where each version is represented in a toml-like file (easier to diff for
  humans than json). Sections which have no content are ommited (but all
  sections alway have the same order for easy diffs)

```
[Title]
This is the task title

[Scheduled]
2015-08-21,19:20

[Tags]

Work
ThatOneProject
TeamBuilding

[Description]

# Just append the markdown file here...
```


[^1]: Maybe also offer a datetimepicker floating window also?