doing 2.1.12 → 2.1.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. checksums.yaml +4 -4
  2. data/.irbrc +1 -0
  3. data/.yardoc/checksums +16 -14
  4. data/.yardoc/object_types +0 -0
  5. data/.yardoc/objects/root.dat +0 -0
  6. data/CHANGELOG.md +67 -0
  7. data/Gemfile.lock +9 -2
  8. data/README.md +56 -19
  9. data/bin/doing +317 -113
  10. data/docs/doc/Array.html +117 -3
  11. data/docs/doc/BooleanTermParser/Clause.html +1 -1
  12. data/docs/doc/BooleanTermParser/Operator.html +1 -1
  13. data/docs/doc/BooleanTermParser/Query.html +1 -1
  14. data/docs/doc/BooleanTermParser/QueryParser.html +1 -1
  15. data/docs/doc/BooleanTermParser/QueryTransformer.html +1 -1
  16. data/docs/doc/BooleanTermParser.html +1 -1
  17. data/docs/doc/Doing/Color.html +1 -1
  18. data/docs/doc/Doing/Completion.html +1 -1
  19. data/docs/doc/Doing/Configuration.html +7 -4
  20. data/docs/doc/Doing/Errors/DoingNoTraceError.html +1 -1
  21. data/docs/doc/Doing/Errors/DoingRuntimeError.html +1 -1
  22. data/docs/doc/Doing/Errors/DoingStandardError.html +1 -1
  23. data/docs/doc/Doing/Errors/EmptyInput.html +1 -1
  24. data/docs/doc/Doing/Errors/NoResults.html +1 -1
  25. data/docs/doc/Doing/Errors/PluginException.html +1 -1
  26. data/docs/doc/Doing/Errors/UserCancelled.html +1 -1
  27. data/docs/doc/Doing/Errors/WrongCommand.html +1 -1
  28. data/docs/doc/Doing/Errors.html +1 -1
  29. data/docs/doc/Doing/Hooks.html +1 -1
  30. data/docs/doc/Doing/Item.html +337 -14
  31. data/docs/doc/Doing/Items.html +66 -2
  32. data/docs/doc/Doing/LogAdapter.html +1 -1
  33. data/docs/doc/Doing/Note.html +2 -2
  34. data/docs/doc/Doing/Pager.html +1 -1
  35. data/docs/doc/Doing/Plugins.html +1 -1
  36. data/docs/doc/Doing/Prompt.html +103 -1
  37. data/docs/doc/Doing/Section.html +1 -1
  38. data/docs/doc/Doing/TemplateString.html +2 -2
  39. data/docs/doc/Doing/Util/Backup.html +84 -1
  40. data/docs/doc/Doing/Util.html +1 -1
  41. data/docs/doc/Doing/WWID.html +214 -35
  42. data/docs/doc/Doing.html +3 -3
  43. data/docs/doc/GLI/Commands/MarkdownDocumentListener.html +1 -1
  44. data/docs/doc/GLI/Commands.html +1 -1
  45. data/docs/doc/GLI.html +1 -1
  46. data/docs/doc/Hash.html +1 -1
  47. data/docs/doc/Numeric.html +279 -0
  48. data/docs/doc/PhraseParser/Operator.html +1 -1
  49. data/docs/doc/PhraseParser/PhraseClause.html +1 -1
  50. data/docs/doc/PhraseParser/Query.html +1 -1
  51. data/docs/doc/PhraseParser/QueryParser.html +1 -1
  52. data/docs/doc/PhraseParser/QueryTransformer.html +1 -1
  53. data/docs/doc/PhraseParser/TermClause.html +1 -1
  54. data/docs/doc/PhraseParser.html +1 -1
  55. data/docs/doc/Status.html +1 -1
  56. data/docs/doc/String.html +881 -138
  57. data/docs/doc/Symbol.html +1 -1
  58. data/docs/doc/Time.html +1 -1
  59. data/docs/doc/_index.html +14 -9
  60. data/docs/doc/class_list.html +1 -1
  61. data/docs/doc/file.README.html +41 -15
  62. data/docs/doc/index.html +41 -15
  63. data/docs/doc/method_list.html +408 -256
  64. data/docs/doc/top-level-namespace.html +2 -2
  65. data/docs/index.md +56 -19
  66. data/doing.gemspec +2 -0
  67. data/doing.rdoc +257 -48
  68. data/example_plugin.rb +2 -4
  69. data/lib/completion/_doing.zsh +31 -27
  70. data/lib/completion/doing.bash +50 -39
  71. data/lib/completion/doing.fish +37 -7
  72. data/lib/doing/array_chronify.rb +57 -0
  73. data/lib/doing/configuration.rb +4 -1
  74. data/lib/doing/item.rb +176 -0
  75. data/lib/doing/log_adapter.rb +1 -1
  76. data/lib/doing/numeric_chronify.rb +40 -0
  77. data/lib/doing/plugins/export/dayone_export.rb +1 -1
  78. data/lib/doing/plugins/export/json_export.rb +2 -2
  79. data/lib/doing/plugins/export/template_export.rb +47 -90
  80. data/lib/doing/plugins/import/calendar_import.rb +13 -1
  81. data/lib/doing/plugins/import/doing_import.rb +12 -1
  82. data/lib/doing/plugins/import/timing_import.rb +13 -1
  83. data/lib/doing/prompt.rb +54 -1
  84. data/lib/doing/string.rb +97 -33
  85. data/lib/doing/string_chronify.rb +112 -14
  86. data/lib/doing/template_string.rb +1 -1
  87. data/lib/doing/time.rb +6 -6
  88. data/lib/doing/util_backup.rb +1 -1
  89. data/lib/doing/version.rb +1 -1
  90. data/lib/doing/wwid.rb +128 -103
  91. data/lib/doing.rb +36 -31
  92. data/lib/examples/plugins/say_export.rb +1 -4
  93. metadata +46 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7f9b0909f6932a364f723a8f58d8f2c0c77dc8d1d3c94e8821aa547bf86782d3
4
- data.tar.gz: 648866be90f3bf9fab15917030816cbd69487b118adc52359e4bdac25c20fee3
3
+ metadata.gz: 401f509f952c1f59117bd72b97a7539ee2aa011a876b24ddeacc6b535f7d0021
4
+ data.tar.gz: afa5d5ca709bf06ef3c686ca5f6af48b75c6dbd09445c36a4de6c78f793ee879
5
5
  SHA512:
6
- metadata.gz: 0af6520dd4912f0add0bc72c3b9b95d41515abac898a9f42c5f61bccef1634d462746b727b1498455dbe360435a6d63492cd9b83ca7654268ad76fda22bed73e
7
- data.tar.gz: 7b831fa4e1b95ec65841bb1e6358b3bf1daef6208f185bc1d9b819d375365725eb76bba258f999927664bbfe77615718408a8d09ca9190de1f825055f518ca8a
6
+ metadata.gz: 6b2fa35dd2651785705b36a8ae12aca8e806476c2309b3e580ae06b87f75b0a0ac317389ac0fd21c28bca52a9c623b9c3892556c483230cf8603fd2eb7fdaf5a
7
+ data.tar.gz: 100407094cbcda4a0f24350ab84d5b923f367cee8913942e107f5bea177e6133be09819d1d1f408d8dd3ace35eff22446108d6bb377fb6f6149f2057566fbd8a
data/.irbrc ADDED
@@ -0,0 +1 @@
1
+ require_relative 'lib/doing'
data/.yardoc/checksums CHANGED
@@ -1,28 +1,30 @@
1
1
  lib/doing/hash.rb c2960de9603dcf90be85ce423d9430de27f4f893
2
- lib/doing/item.rb fcf106fb43a1a979d5213c8ac47161d9f6d8635f
2
+ lib/doing/item.rb 017fe4de05ccfd8bab912e744f9dac9e52819b00
3
3
  lib/doing/note.rb bbadd9e34e6dc43a2af1110a5107f46c39d2547f
4
- lib/doing/time.rb 4411af636082d3abf6f6402a7d6c9038d96a9ead
4
+ lib/doing/time.rb 60183c3c31532ffea1440c766de0f90042e0fd10
5
5
  lib/doing/util.rb 33ad79455893213a0f2993edec0e158526657f09
6
- lib/doing/wwid.rb bca76421c6d5f85fd6ff19063a79189b2accf255
6
+ lib/doing/wwid.rb ee8ab91af8d34f1fe9c9ec6e6c96e5e4e648a9b0
7
7
  lib/doing/array.rb a17004c4811d239932254f9ed94a6eb10456c8e8
8
- lib/doing/hooks.rb 00feacdbf24dc67951c49ca8c1ca9a568441920e
9
- lib/doing/items.rb 0860a0ac7269f59de994ae900c980e49359dc8d5
10
- lib/doing/pager.rb 230c10dea5e9c68b5709a0f4cb088c76970965e4
8
+ lib/doing/hooks.rb acf6e0615ccf1949f84915c979297845242c1205
9
+ lib/doing/items.rb 8cda7caaef10645893267262f5eee681e35046ce
10
+ lib/doing/pager.rb b58e478b0cb8d400ddb97988ba741e3a127b53c3
11
11
  lib/doing/colors.rb 9a628d48c821313c502deedc5b61a046a2bf79ef
12
12
  lib/doing/errors.rb af07e482a5389924edc2337749c81cda501098f0
13
- lib/doing/prompt.rb a78b6f4488fe58b5653ce541a88d24559661459c
14
- lib/doing/string.rb 7cbe3e0bd136c52f7b12d4d6133afe20fe204be2
13
+ lib/doing/prompt.rb d320de9f309a9069725b9e90e19bae808839c06b
14
+ lib/doing/string.rb f5cf48e2e700a038aa9edaafdee3066ba117e851
15
15
  lib/doing/symbol.rb 309799458a1bc715c2707307c9a62ab26086275e
16
16
  lib/doing/section.rb 206e119cf818f1e76798753e611180fe77bc299a
17
- lib/doing/version.rb 08de25ee059d2e8eae4b3e1b3dac66e0d48461e6
17
+ lib/doing/version.rb 2bdd1caf85f391c64be4f792fe24f8ca017ebc54
18
18
  lib/doing/cli_status.rb dbedd454c4cbbd0fed9ef30120f6ec85d18b9356
19
19
  lib/doing/completion.rb c658e7dc7898fb022a21b2bd77bedb958ca3b067
20
- lib/doing/log_adapter.rb 6cf0c9a405d17449643e54d35a04897b1da44eaf
21
- lib/doing/util_backup.rb 4441a22bdc81e7bba2eb259c522ef819d1b99616
22
- lib/doing/configuration.rb a9aad93aac92f4c5edcde3440654d9e836238364
20
+ lib/doing/log_adapter.rb 267dc637bc9ea445dd07edb8b5dbbe374ff80b2b
21
+ lib/doing/util_backup.rb c13f71072581b1f0d2269853611ba09273261bf9
22
+ lib/doing/configuration.rb 61c415e033c99355f5589e799344d60db42bd900
23
23
  lib/doing/phrase_parser.rb 8f1789d7cf8326d8cc231b4a21505a93f8de20d2
24
+ lib/doing/array_chronify.rb 5852b38643aef2e7e796aaf19b2c052a52ee5e2b
24
25
  lib/doing/plugin_manager.rb cb16a82c3182ef7008359670ab96ff6b39270ccc
25
- lib/doing/string_chronify.rb ccbb08389d2139c7121203f8585864e3026d1526
26
- lib/doing/template_string.rb 6dfb28b922059189b072e6d9fe1fcba8aad6c6fe
26
+ lib/doing/string_chronify.rb 62635041c94482927fb661ac0caa2eb9bdd1c17c
27
+ lib/doing/template_string.rb 5f6ef0495082339f2aa1b085ac4c1bdbfeb25be5
28
+ lib/doing/numeric_chronify.rb bedeff62a95f8a8ff116e1bf0cc1d9eb2707a900
27
29
  lib/doing/boolean_term_parser.rb 075977892ac5c6e3435cb8877d8b8b68eb1962e3
28
30
  lib/doing/markdown_document_listener.rb 45485f225068a34951ec818a345f642323e5ba35
data/.yardoc/object_types CHANGED
Binary file
Binary file
data/CHANGELOG.md CHANGED
@@ -1,3 +1,70 @@
1
+ ### 2.1.16
2
+
3
+ 2022-01-18 02:45
4
+
5
+ #### NEW
6
+
7
+ - `doing done --from "3pm to 3:15pm"` to set start and end times with natural language string
8
+
9
+ #### IMPROVED
10
+
11
+ - Running `doing tag` without arguments takes command line input
12
+ - If `doing now` or `doing later` are run without arguments, interactively request necessary information (you can still use --editor to edit in your preferred editor)
13
+ - Tab completion for tags when entering at prompt
14
+ - Use readline when requesting input text, better editing features
15
+ - `doing done --at` no longer overrides `--back`
16
+
17
+ #### FIXED
18
+
19
+ - `doing select` -> output formatted empty output
20
+ - Sort items by date when using `doing select --editor` (was loading in selection order instead)
21
+ - Ruby 2.7 error in template output (.empty? on FalseClass)
22
+ - Don't add empty entry when cancelling --editor
23
+ - Batch editing bugs
24
+
25
+ ### 2.1.15
26
+
27
+ 2022-01-17 07:25
28
+
29
+ #### NEW
30
+
31
+ - When completing an entry, if the elapsed time would be greater than a (configurable) amount, doing will now ask for confirmation and allow you to enter a new duration before setting the @done date
32
+
33
+ #### IMPROVED
34
+
35
+ - When entering intervals, you can now use 1h30m in addition to 1.5h or 90m
36
+ - Date expansion works in more circumstances
37
+ - You can include date tags with natural language values when adding tags via `doing select`
38
+
39
+ #### FIXED
40
+
41
+ - Tags containing values with spaces no longer cause errors
42
+
43
+ ### 2.1.14
44
+
45
+ #### NEW
46
+
47
+ - All commands that accept --note now accept --ask, which requests input via readline after creating the note. Multiple lines are allowed, hit return twice to end editing. Works alongside --note and --editor
48
+
49
+ #### IMPROVED
50
+
51
+ - Implement --search and --from filtering for import plugins
52
+ - UTC format date strings in select menus for consistency (was relative date formatting)
53
+ - Don't populate the fzf search with --search, it's already filtered. Separated --query from --search if you do want to populate the query string in addition to --search filtering
54
+ - When showing relative dates, don't include the year if the date is the previous year but a later month than the current month (less than a year old)
55
+ - When using --editor while adding an entry, include any note specified on the command line or via --ask for further editing
56
+
57
+ ### 2.1.13
58
+
59
+ #### NEW
60
+
61
+ - --val flag for all display commands, allows tag value queries. Tag values are contained in parenthesis after the tag, e.g. @progress(50). Queries look like `--val "done < two weeks ago"`, "project *= oracle" or "progress >= 50". Wildcards allowed in value, comparators can be <, >, <=, >=, ==, *= (contains), ^= (begins with), $= (ends with). Numeric and date comparisons are detected automatically. Text comparisons are case insensitive. --val can be used multiple times in a command and you can use --bool to specify AND, OR, or NOT (default AND)
62
+ - `doing tag` now accepts a `--value` flag to define a value for a single tag, e.g. @tag(value)
63
+
64
+ #### FIXED
65
+
66
+ - `doing last --editor` errors
67
+
1
68
  ### 2.1.12
2
69
 
3
70
  #### NEW
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- doing (2.1.11)
4
+ doing (2.1.16)
5
5
  chronic (~> 0.10, >= 0.10.2)
6
6
  deep_merge (~> 1.2, >= 1.2.1)
7
7
  gli (~> 2.19, >= 2.19.2)
@@ -12,6 +12,8 @@ PATH
12
12
  tty-link (~> 0.1, >= 0.1.1)
13
13
  tty-markdown (~> 0.7, >= 0.7.0)
14
14
  tty-progressbar (~> 0.18, >= 0.18.2)
15
+ tty-reader (~> 0.9, >= 0.9.0)
16
+ tty-screen (~> 0.8, >= 0.8.1)
15
17
  tty-which (~> 0.5, >= 0.5.0)
16
18
 
17
19
  GEM
@@ -65,7 +67,7 @@ GEM
65
67
  cucumber-core (~> 8.0, >= 8.0.1)
66
68
  cucumber-cucumber-expressions (~> 10.3, >= 10.3.0)
67
69
  cucumber-messages (~> 13.0, >= 13.0.1)
68
- deep_merge (1.2.1)
70
+ deep_merge (1.2.2)
69
71
  diff-lcs (1.4.4)
70
72
  ffi (1.15.4)
71
73
  github-markup (4.0.0)
@@ -131,6 +133,10 @@ GEM
131
133
  tty-cursor (~> 0.7)
132
134
  tty-screen (~> 0.8)
133
135
  unicode-display_width (>= 1.6, < 3.0)
136
+ tty-reader (0.9.0)
137
+ tty-cursor (~> 0.7)
138
+ tty-screen (~> 0.8)
139
+ wisper (~> 2.0)
134
140
  tty-screen (0.8.1)
135
141
  tty-spinner (0.9.3)
136
142
  tty-cursor (~> 0.7)
@@ -139,6 +145,7 @@ GEM
139
145
  concurrent-ruby (~> 1.0)
140
146
  unicode-display_width (2.1.0)
141
147
  unicode_utils (1.4.0)
148
+ wisper (2.0.1)
142
149
  yard (0.9.26)
143
150
  zeitwerk (2.5.1)
144
151
 
data/README.md CHANGED
@@ -1,55 +1,92 @@
1
1
  # doing
2
2
 
3
- **A command line tool for remembering what you were doing and tracking what you've done.**
3
+ **A command line tool for remembering what you were doing and tracking what
4
+ you've done.**
4
5
 
5
- _If you're one of the rare people like me who find this useful, feel free to [buy me some coffee](http://brettterpstra.com/donate/)._
6
+ _If you're one of the rare people like me who find this useful, feel free to
7
+ [buy me some coffee][donate]._
6
8
 
7
9
  <!--README-->
8
10
 
9
- The current version of `doing` is <!--VER-->2.1.11<!--END VER-->.
11
+ The current version of `doing` is <!--VER-->2.1.15<!--END VER-->.
10
12
 
11
- Find all of the documentation in the [doing wiki](https://github.com/ttscoff/doing/wiki).
13
+ Find all of the documentation in the [doing wiki][wiki].
12
14
 
13
- See [what's new in Doing 2.0](https://brettterpstra.com/2021/11/20/doing-2-dot-0/).
15
+ See [what's new in Doing 2.0][doing 2].
14
16
 
15
- Check out some craziness with Doing in the [iTerm status bar](https://brettterpstra.com/2021/10/15/see-what-youre-doing-in-the-iterm-status-bar/) and the [Mac Touch Bar/menu bar](https://brettterpstra.com/2021/07/21/crazy-bettertouchtool-touch-bar-simulator/).
17
+ Check out some craziness with Doing in the [iTerm status bar][status bar] and
18
+ the [Mac Touch Bar/menu bar][touch bar].
16
19
 
17
20
  ## What and why
18
21
 
19
- `doing` is a basic CLI for adding and listing "what was I doing" reminders in a [TaskPaper-formatted](https://www.taskpaper.com) text file. It allows for multiple sections/categories and flexible output formatting.
22
+ `doing` is a basic CLI for adding and listing "what was I doing" reminders in a
23
+ [TaskPaper-formatted](https://www.taskpaper.com) text file. It allows for
24
+ multiple sections/categories and flexible output formatting.
20
25
 
21
- While I'm working, I have hourly reminders to record what I'm working on, and I try to remember to punch in quick notes if I'm unexpectedly called away from a project. I can do this just by typing `doing now tracking down the CG bug`.
26
+ While I'm working, I have hourly reminders to record what I'm working on, and I
27
+ try to remember to punch in quick notes if I'm unexpectedly called away from a
28
+ project. I can do this just by typing `doing now tracking down the CG bug`.
22
29
 
23
- If there's something I want to look at later but doesn't need to be added to a task list or tracker, I can type `doing later check out the pinboard bookmarks from macdrifter`. When I get back to my computer --- or just need a refresher after a distraction --- I can type `doing last` to see what the last thing on my plate was. I can also type `doing recent` (or just `doing`) to get a list of the last few entries. `doing today` gives me everything since midnight for the current day, making it easy to see what I've accomplished over a sleepless night.
30
+ If there's something I want to look at later but doesn't need to be added to a
31
+ task list or tracker, I can type `doing later check out the pinboard bookmarks
32
+ from macdrifter`. When I get back to my computer --- or just need a refresher
33
+ after a distraction --- I can type `doing last` to see what the last thing on
34
+ my plate was. I can also type `doing recent` (or just `doing`) to get a list of
35
+ the last few entries. `doing today` gives me everything since midnight for the
36
+ current day, making it easy to see what I've accomplished over a sleepless
37
+ night.
24
38
 
25
- Doing has over 30 commands for tracking your status, recording your time, and analyzing the results.
39
+ Doing has over 30 commands for tracking your status, recording your time, and
40
+ analyzing the results.
26
41
 
27
- See [the wiki](https://github.com/ttscoff/doing/wiki) for installation and usage instructions.
42
+ See [the wiki][wiki] for installation and usage instructions.
28
43
 
29
44
  ## Launchbar/Alfred
30
45
 
31
- The LaunchBar action requires that `doing` be available in `/usr/local/bin/doing`. If it's not (because you're using RVM or similar), you'll need to symlink it there. Running the action with Return will show the latest 9 items from Currently, along with any time intervals recorded, and includes a submenu of Timers for each tag.
46
+ The LaunchBar action requires that `doing` be available in
47
+ `/usr/local/bin/doing`. If it's not (because you're using RVM or similar),
48
+ you'll need to symlink it there. Running the action with Return will show the
49
+ latest 9 items from Currently, along with any time intervals recorded, and
50
+ includes a submenu of Timers for each tag.
32
51
 
33
- Pressing Spacebar and typing allows you to add a new entry to currently. You an also trigger a custom show command by typing "show [section/tag]" and hitting return. Include any command line flags at the end of the string, and if you add text in parenthesis, it will be processed as a note on the entry.
52
+ Pressing Spacebar and typing allows you to add a new entry to currently. You an
53
+ also trigger a custom show command by typing "show [section/tag]" and hitting
54
+ return. Include any command line flags at the end of the string, and if you add
55
+ text in parenthesis, it will be processed as a note on the entry.
34
56
 
35
- Point of interest, the LaunchBar Action makes use of the `-o json` flag for outputting JSON to the action's script for parsing.
57
+ Point of interest, the LaunchBar Action makes use of the `-o json` flag for
58
+ outputting JSON to the action's script for parsing.
36
59
 
37
60
  <!--GITHUB-->
38
61
 
39
- See the [doing project on BrettTerpstra.com](https://brettterpstra.com/projects/doing/) for the download.
62
+ See the [doing project on BrettTerpstra.com][bt doing] for the download.
40
63
 
41
64
  <!--END GITHUB-->
42
65
  <!--JEKYLL
43
66
  {% download 117 %}
44
67
  -->
45
68
 
46
- Evan Lovely has [created an Alfred workflow as well](http://www.evanlovely.com/blog/technology/alfred-for-terpstras-doing/).
69
+ Evan Lovely has created an [Alfred workflow][] as well.
47
70
 
48
71
  ## Contributing
49
72
 
50
- If you [create a plugin](https://github.com/ttscoff/doing/wiki/Creating-Plugins), custom command, or hook you can share, please [let me know](https://brettterpstra.com/contact/). If I get a few plugin contributions, I'll set up a second repository for them.
51
-
52
- Feel free to fork [the repository](https://github.com/ttscoff/doing/) on GitHub and make pull requests with changes. Please target the `develop` branch with pull requests.
73
+ If you [create a plugin][], custom command, or hook you can share, please
74
+ [let me know][contact]. If I get a few plugin contributions, I'll set up a
75
+ second repository for them.
76
+
77
+ Feel free to fork [the repository][github] on GitHub and make pull requests
78
+ with changes. Please target the `develop` branch with pull requests.
79
+
80
+ [bt doing]: https://brettterpstra.com/projects/doing/
81
+ [donate]: http://brettterpstra.com/donate/
82
+ [github]: https://github.com/ttscoff/doing/
83
+ [wiki]: https://github.com/ttscoff/doing/wiki
84
+ [doing 2]: https://brettterpstra.com/2021/11/20/doing-2-dot-0/
85
+ [status bar]: https://brettterpstra.com/2021/10/15/see-what-youre-doing-in-the-iterm-status-bar/
86
+ [touch bar]: https://brettterpstra.com/2021/07/21/crazy-bettertouchtool-touch-bar-simulator/
87
+ [create a plugin]: https://github.com/ttscoff/doing/wiki/Creating-Plugins
88
+ [contact]: https://brettterpstra.com/contact/
89
+ [alfred workflow]: http://www.evanlovely.com/blog/technology/alfred-for-terpstras-doing/
53
90
 
54
91
  <!--END README-->
55
92