summaryrefslogtreecommitdiffstats
path: root/TODO.md
blob: 6b15dbdbdd96f6bdc2b1c515e315f35a9e93dbce (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
# TODO

## TUI considerations
Going with cursive because it is way more flexible than tui-rs.
**Important note** Tables are not currently allowed in stackexchange... so the
benefit of incorporating termimad features will not be felt. But, this is
changing [soon](https://meta.stackexchange.com/q/348746).

### v0.2.0

#### Cursive interface for viewing questions and answers
5. Init with smaller layout if terminal size smaller?
3. maybe cli `--auto-resize` option
3. make the default colors.toml file have a banging RGB > Hex > Defaults fallback
6. Small text at bottom with '?' to bring up key mapping dialog
7. Clean up! remove dupe between ListView and MdView by making a common trait
8. Possibly make `--arrow_keys_focus` option to toggle the arrow key consumption
9. Maybe **ESC** cycles layout in the opposite direction? And stops at
   BothColumns?
10. Allow cycling through `~/.config/so/colors/*.toml` themes (or just hardcoded
    themes in `tui::themes`) with keybinding
11. Small tray at the bottom with "notifications", e.g. "GitHub Theme loaded!"

#### other
1. Use [par_iter](https://github.com/rayon-rs/rayon) for text preprocess & parsing?

### v0.2.1
1. Add `lucky: bool` to config, but
2. add --lucky and --no-lucky conflicting flags to cli
3. If --lucky, async get 1 result while getting limit results
4. Display with [space] to see more, any other key to exit.
1. maybe <query> is optional, and leaving blank starts up TUI?

### v0.2.2
1. Site can be multiple
2. do tokio async on SE api
3. add warning to README about throttling on excessive requests

### v0.3.0
1. Duckduck go search ftw, e.g.
```
(site:stackoverflow.com OR site:unix.stackexchange.com) what is linux
```
etc.

### resources for later
0. [Intro to async rust](http://jamesmcm.github.io/blog/2020/05/06/a-practical-introduction-to-async-programming-in-rust/)
1. Async API calls [tokio](https://stackoverflow.com/a/57770687)
2. Parallel calls against multiple sites [vid](https://www.youtube.com/watch?v=O-LagKc0MPA)
0. OR JUST THREADS [see here](https://rust-lang.github.io/async-book/01_getting_started/02_why_async.html)
3. [config mgmt](https://github.com/rust-cli/confy) or just use directories
5. Add sort option, e.g. relevance|votes|date
6. Google stuff [scraping with reqwest](https://rust-lang-nursery.github.io/rust-cookbook/web/scraping.html))
8. Keep track of quota in a data file, inform user when getting close?
7. App Distribution
   [cross-platform binaries via travis](https://github.com/rustwasm/wasm-pack/blob/51e6351c28fbd40745719e6d4a7bf26dadd30c85/.travis.yml#L74-L91)
   also see lobster script in this [repo](https://git.sr.ht/~wezm/lobsters).
9. Great tui-rs [example app](https://github.com/SoptikHa2/desed/blob/master/src/ui/tui.rs)
10 nah look at [termimad example](https://github.com/Canop/whalespotter)