whatnext 2.0__tar.gz

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 (96) hide show
  1. whatnext-2.0/.flake8 +3 -0
  2. whatnext-2.0/.github/dependabot.yml +11 -0
  3. whatnext-2.0/.github/workflows/publish.yml +95 -0
  4. whatnext-2.0/.github/workflows/tests.yml +33 -0
  5. whatnext-2.0/.gitignore +4 -0
  6. whatnext-2.0/.whatnext +7 -0
  7. whatnext-2.0/CHANGELOG.md +117 -0
  8. whatnext-2.0/LICENCE +21 -0
  9. whatnext-2.0/LICENSE +1 -0
  10. whatnext-2.0/Makefile +18 -0
  11. whatnext-2.0/PKG-INFO +91 -0
  12. whatnext-2.0/README.md +67 -0
  13. whatnext-2.0/archive/done/tasks.md +5 -0
  14. whatnext-2.0/docs/annotations.md +17 -0
  15. whatnext-2.0/docs/basics.md +48 -0
  16. whatnext-2.0/docs/deadlines.md +44 -0
  17. whatnext-2.0/docs/deferring.md +42 -0
  18. whatnext-2.0/docs/exclusions.md +36 -0
  19. whatnext-2.0/docs/index.md +73 -0
  20. whatnext-2.0/docs/installation.md +7 -0
  21. whatnext-2.0/docs/next.md +65 -0
  22. whatnext-2.0/docs/prioritisation.md +43 -0
  23. whatnext-2.0/docs/usage.md +259 -0
  24. whatnext-2.0/example/archived/projects/tangerine.md +15 -0
  25. whatnext-2.0/example/projects/curtain.md +24 -0
  26. whatnext-2.0/example/projects/harvest.md +19 -0
  27. whatnext-2.0/example/projects/obelisk.md +21 -0
  28. whatnext-2.0/example/projects/tinsel.md +10 -0
  29. whatnext-2.0/example/tasks.md +5 -0
  30. whatnext-2.0/example/template.md +7 -0
  31. whatnext-2.0/pyproject.toml +65 -0
  32. whatnext-2.0/scripts/update-usage-examples.py +115 -0
  33. whatnext-2.0/tasks/deferring.md +4 -0
  34. whatnext-2.0/tasks/documentation.md +6 -0
  35. whatnext-2.0/tasks/next.md +9 -0
  36. whatnext-2.0/tasks/test_refactor.md +133 -0
  37. whatnext-2.0/tasks/version_0.1.md +9 -0
  38. whatnext-2.0/tasks/version_0.2.md +9 -0
  39. whatnext-2.0/tasks/version_0.3.md +12 -0
  40. whatnext-2.0/tasks/version_0.4.md +9 -0
  41. whatnext-2.0/tasks/version_0.5.md +8 -0
  42. whatnext-2.0/tasks/version_1.0.md +9 -0
  43. whatnext-2.0/tasks/version_1.1.md +6 -0
  44. whatnext-2.0/tasks/version_1.2.md +5 -0
  45. whatnext-2.0/tasks/version_1.3.md +10 -0
  46. whatnext-2.0/tasks.md +17 -0
  47. whatnext-2.0/tests/colour.bats +60 -0
  48. whatnext-2.0/tests/config/.whatnext +3 -0
  49. whatnext-2.0/tests/config/.whatnext.alt +3 -0
  50. whatnext-2.0/tests/config/apples.md +4 -0
  51. whatnext-2.0/tests/config/oranges.md +4 -0
  52. whatnext-2.0/tests/config-external +1 -0
  53. whatnext-2.0/tests/config.bats +84 -0
  54. whatnext-2.0/tests/deadline.bats +189 -0
  55. whatnext-2.0/tests/deferring/bare-after.md +1 -0
  56. whatnext-2.0/tests/deferring/circular-a.md +1 -0
  57. whatnext-2.0/tests/deferring/circular-b.md +1 -0
  58. whatnext-2.0/tests/deferring/deferred.md +1 -0
  59. whatnext-2.0/tests/deferring/duplicate-warnings.md +7 -0
  60. whatnext-2.0/tests/deferring/missing-dep.md +1 -0
  61. whatnext-2.0/tests/deferring/regular.md +1 -0
  62. whatnext-2.0/tests/deferring.bats +108 -0
  63. whatnext-2.0/tests/edit.bats +84 -0
  64. whatnext-2.0/tests/headerless.md +1 -0
  65. whatnext-2.0/tests/housekeeping.bats +42 -0
  66. whatnext-2.0/tests/invalid.md +1 -0
  67. whatnext-2.0/tests/list.bats +664 -0
  68. whatnext-2.0/tests/matching.bats +539 -0
  69. whatnext-2.0/tests/next/alternate.md +3 -0
  70. whatnext-2.0/tests/next/append-after.md +5 -0
  71. whatnext-2.0/tests/next/append.md +3 -0
  72. whatnext-2.0/tests/next/empty.md +4 -0
  73. whatnext-2.0/tests/next/insert.md +27 -0
  74. whatnext-2.0/tests/next/projects/alpha/tasks/things.md +3 -0
  75. whatnext-2.0/tests/next/projects/alpha/tasks.md +3 -0
  76. whatnext-2.0/tests/next/projects/beta/things.md +3 -0
  77. whatnext-2.0/tests/next/something.txt +1 -0
  78. whatnext-2.0/tests/next/tasks.md +3 -0
  79. whatnext-2.0/tests/next.bats +578 -0
  80. whatnext-2.0/tests/notnext.bats +34 -0
  81. whatnext-2.0/tests/summary.bats +368 -0
  82. whatnext-2.0/tests/test_defer.py +607 -0
  83. whatnext-2.0/tests/test_edit.py +51 -0
  84. whatnext-2.0/tests/test_file.py +878 -0
  85. whatnext-2.0/tests/test_limit.py +120 -0
  86. whatnext-2.0/tests/test_output.py +150 -0
  87. whatnext-2.0/tests/test_summary.py +97 -0
  88. whatnext-2.0/tests/test_task.py +148 -0
  89. whatnext-2.0/tests/usage.bats +83 -0
  90. whatnext-2.0/tests/version.bats +9 -0
  91. whatnext-2.0/whatnext/__init__.py +0 -0
  92. whatnext-2.0/whatnext/guide.txt +76 -0
  93. whatnext-2.0/whatnext/models.py +622 -0
  94. whatnext-2.0/whatnext/next.py +199 -0
  95. whatnext-2.0/whatnext/summary.py +257 -0
  96. whatnext-2.0/whatnext/whatnext.py +589 -0
whatnext-2.0/.flake8 ADDED
@@ -0,0 +1,3 @@
1
+ [flake8]
2
+ max-line-length = 88
3
+ extend-ignore = E131
@@ -0,0 +1,11 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: "pip"
4
+ directory: "/"
5
+ schedule:
6
+ interval: "weekly"
7
+
8
+ - package-ecosystem: "github-actions"
9
+ directory: "/"
10
+ schedule:
11
+ interval: "weekly"
@@ -0,0 +1,95 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - 'v*'
7
+
8
+ jobs:
9
+ test:
10
+ runs-on: ubuntu-latest
11
+
12
+ steps:
13
+ - uses: actions/checkout@v6
14
+
15
+ - name: Set up Python
16
+ uses: actions/setup-python@v6
17
+ with:
18
+ python-version: '3.12'
19
+
20
+ - name: Install whatnext
21
+ run: pip install .[test]
22
+
23
+ - name: Install testing dependencies
24
+ run: |
25
+ sudo apt-get update
26
+ sudo apt-get install -y bats ripgrep
27
+
28
+ - name: Run tests
29
+ run: make test
30
+
31
+ publish:
32
+ runs-on: ubuntu-latest
33
+ needs: test
34
+ permissions:
35
+ id-token: write
36
+
37
+ steps:
38
+ - uses: actions/checkout@v6
39
+
40
+ - name: Set up Python
41
+ uses: actions/setup-python@v6
42
+ with:
43
+ python-version: '3.12'
44
+
45
+ - name: Install build tools
46
+ run: pip install build
47
+
48
+ - name: Build package
49
+ run: python -m build
50
+
51
+ - name: Publish to PyPI
52
+ uses: pypa/gh-action-pypi-publish@release/v1
53
+
54
+ release:
55
+ runs-on: ubuntu-latest
56
+ needs: publish
57
+ permissions:
58
+ contents: write
59
+
60
+ steps:
61
+ - uses: actions/checkout@v6
62
+
63
+ - name: Get version from tag
64
+ id: version
65
+ run: echo "version=${GITHUB_REF#refs/tags/v}" >> "$GITHUB_OUTPUT"
66
+
67
+ - name: Extract changelog for version
68
+ id: changelog
69
+ run: |
70
+ version="${{ steps.version.outputs.version }}"
71
+ changelog=$(awk -v ver="$version" '
72
+ /^## \[/ {
73
+ if (found) exit
74
+ if ($0 ~ "\\[v" ver "\\]") found=1
75
+ next
76
+ }
77
+ found { print }
78
+ ' CHANGELOG.md)
79
+ {
80
+ echo "notes<<EOF"
81
+ echo "$changelog"
82
+ echo "EOF"
83
+ } >> "$GITHUB_OUTPUT"
84
+
85
+ - name: Create GitHub release
86
+ env:
87
+ GH_TOKEN: ${{ github.token }}
88
+ NOTES: ${{ steps.changelog.outputs.notes }}
89
+ run: |
90
+ version="${{ steps.version.outputs.version }}"
91
+ pypi_link="https://pypi.org/project/whatnext/${version}/"
92
+ full_notes=$(printf '%s\n\n---\n[pypi release](%s)' "$NOTES" "$pypi_link")
93
+ gh release create "${{ github.ref_name }}" \
94
+ --title "whatnext ${version}" \
95
+ --notes "$full_notes"
@@ -0,0 +1,33 @@
1
+ name: Tests
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ matrix:
14
+ python-version: ['3.10', '3.11', '3.12']
15
+
16
+ steps:
17
+ - uses: actions/checkout@v6
18
+
19
+ - name: Set up Python
20
+ uses: actions/setup-python@v6
21
+ with:
22
+ python-version: ${{ matrix.python-version }}
23
+
24
+ - name: Install whatnext
25
+ run: pip install .[test]
26
+
27
+ - name: Install testing dependencies
28
+ run: |
29
+ sudo apt-get update
30
+ sudo apt-get install -y bats ripgrep
31
+
32
+ - name: Run tests
33
+ run: make test
@@ -0,0 +1,4 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ *.egg-info/
4
+ build/
whatnext-2.0/.whatnext ADDED
@@ -0,0 +1,7 @@
1
+ # not considered in any summaries
2
+ ignore = [
3
+ 'README.md',
4
+ 'example/*',
5
+ 'tests/*',
6
+ 'docs/*',
7
+ ]
@@ -0,0 +1,117 @@
1
+ # Changelog
2
+
3
+
4
+ ## [v2.0] - 2026-01-28
5
+
6
+ **Breaking change:** `whatnext` now ignores tasks and headers within
7
+ quoting elements -- blockquotes, code fences, and indented text.
8
+
9
+ **Fixes:**
10
+ - bug in relative summaries was reusing characters for different states
11
+
12
+
13
+ ## [v1.4] - 2026-01-27
14
+
15
+ `next` now shows a diff of the change made to the task file.
16
+
17
+ Prefer `tasks.md` in the current directory to `~/tasks.md`.
18
+
19
+ **Fixes:**
20
+ - Bare `@after` waiting for all incomplete tasks, including those with
21
+ `@after file.md` dependencies.
22
+ - `next` rejecting task text containing flag-like arguments (e.g. `-e`).
23
+ - `next -a` inserting after the last task instead of at the end of the file.
24
+
25
+
26
+ ## [v1.3.2] - 2026-01-11
27
+
28
+ Fixed repeated warnings when a file has a missing `@after` dependency.
29
+
30
+ Added `--ignore-after` flag to show all outstanding tasks regardless of
31
+ `@after` constraints.
32
+
33
+
34
+ ## [v1.3.1] - 2026-01-10
35
+
36
+ Fixed file-level `@after` being ignored when the file has no headings.
37
+
38
+
39
+ ## [v1.3] - 2026-01-09
40
+
41
+ Added `next` command to quickly add tasks from the command line.
42
+
43
+ Files can self-exclude from results using `@notnext`.
44
+
45
+
46
+ ## [v1.2] - 2026-01-08
47
+
48
+ Files, sections, or individual tasks can be deferred using `@after` to hide
49
+ them until other tasks are complete.
50
+
51
+ Added `--guide` to show a short Markdown formatting reference, separating
52
+ it out of the `--help` usage.
53
+
54
+
55
+ ## [v1.1] - 2025-12-04
56
+
57
+ Fixed relative summaries to include all tasks, not just some.
58
+
59
+ Removed slashes from summary columns for cleaner output.
60
+
61
+ Added `-e`/`--edit` flag to open task files in your editor at the line number
62
+ of the first matching task.
63
+
64
+
65
+ ## [v1.0] - 2025-12-02
66
+
67
+ Output is now colour-coded by default, override with `--color/--no-color`
68
+ or by setting `WHATNEXT_COLOR`.
69
+
70
+ Focused task selection:
71
+
72
+ - `whatnext 5` will show the five highest status tasks.
73
+ - `whatnext 5r` will show five randomly selected tasks.
74
+
75
+ Annotations, including a ` ```whatnext ` fenced block allows notes that appear
76
+ in context in the output.
77
+
78
+ Include totals in summaries.
79
+
80
+
81
+ ## [v0.5] - 2025-12-01
82
+
83
+ Tasks can have deadlines using the `@YYYY-MM-DD/4w` syntax. As the deadline
84
+ approaches, the task's priority automatically shifts to `imminent` (two weeks
85
+ before by default). Once past the deadline, the priority becomes `overdue`.
86
+
87
+
88
+ ## [v0.4] - 2025-12-01
89
+
90
+ Individual tasks and sections of tasks can be marked with emphasis to denote
91
+ \_medium\_ priority or as \*\*high\*\* priority. They will be displayed at the
92
+ top of the output, each priority in separate blocks.
93
+
94
+
95
+ ## [v0.3] — 2025-11-29
96
+
97
+ Adding more states to the roster, tasks can be marked as open (unstarted),
98
+ in progress, cancelled, blocked, and completed.
99
+
100
+ Tasks can be filtered by any of these states when showing tasks or summaries.
101
+
102
+
103
+ ## [v0.2] — 2025-11-28
104
+
105
+ Filtering tasks by text/header can be helpful. And as useful as it
106
+ can be to use `--dir` to specify the base dir, sometimes you just
107
+ want to do it quicker, so you can also specify a dir or file as
108
+ an argument to restrict searching just to that.
109
+
110
+ Arguments can be mixed and matched freely. Multiple search terms
111
+ are additive not exclusive.
112
+
113
+
114
+ ## [v0.1] — 2025-11-28
115
+
116
+ First version, very basic. Lists tasks found in Markdown files in a
117
+ given directory. Can produce summaries.
whatnext-2.0/LICENCE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Mark Norman Francis
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
whatnext-2.0/LICENSE ADDED
@@ -0,0 +1 @@
1
+ LICENCE
whatnext-2.0/Makefile ADDED
@@ -0,0 +1,18 @@
1
+ ifndef CI
2
+ ifndef VIRTUAL_ENV
3
+ $(error Development has to happen inside venv, whatnext is also installed globally.)
4
+ endif
5
+ endif
6
+
7
+ .PHONY: test flake8 pytest bats
8
+
9
+ test: flake8 pytest bats
10
+
11
+ flake8:
12
+ flake8 whatnext tests
13
+
14
+ pytest: flake8
15
+ pytest tests/
16
+
17
+ bats:
18
+ bats tests/*.bats
whatnext-2.0/PKG-INFO ADDED
@@ -0,0 +1,91 @@
1
+ Metadata-Version: 2.4
2
+ Name: whatnext
3
+ Version: 2.0
4
+ Summary: A lister of tasks found in Markdown files
5
+ Project-URL: Homepage, https://github.com/norm/whatnext
6
+ Project-URL: Repository, https://github.com/norm/whatnext
7
+ Project-URL: Documentation, https://github.com/norm/whatnext
8
+ Author: Mark Norman Francis
9
+ License-Expression: MIT
10
+ License-File: LICENCE
11
+ License-File: LICENSE
12
+ Keywords: cli,markdown,tasks,todo
13
+ Classifier: Development Status :: 3 - Alpha
14
+ Classifier: Programming Language :: Python :: 3.10
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Requires-Python: >=3.10
18
+ Requires-Dist: termcolor
19
+ Requires-Dist: toml
20
+ Provides-Extra: test
21
+ Requires-Dist: flake8; extra == 'test'
22
+ Requires-Dist: pytest; extra == 'test'
23
+ Description-Content-Type: text/markdown
24
+
25
+ # What next?
26
+
27
+ I like to keep tasks in Markdown files. That way they can be interspersed
28
+ within instructions, serving as reminders, FIXMEs, and other todos.
29
+
30
+ All the features for enhancing your task lists are discussed in detail in
31
+ [the documentation](https://github.com/norm/whatnext/blob/main/docs/index.md).
32
+
33
+ Document your tasks using an expanded version of the original
34
+ [GitHub task list notation][sn]:
35
+
36
+ ```markdown
37
+ - [ ] open, this task is outstanding
38
+ - [/] in progress, this task is partially complete
39
+ - [X] complete, this task has been finished
40
+ - [#] cancelled, this task has been scratched
41
+ - [<] blocked, this task needs more input
42
+
43
+ - [ ] _an important task_
44
+
45
+ # **Make apple pie from scratch**
46
+ - [ ] invent the universe
47
+
48
+ # Things for later
49
+
50
+ - [ ] get NYE fireworks tickets @2025-12-31
51
+ - [ ] but in the end it doesn't even matter @after
52
+ ```
53
+
54
+ Then install `whatnext`:
55
+
56
+ ```bash
57
+ pip install whatnext
58
+ ```
59
+
60
+ Now run it and it'll tell you what's next, sorting by priority and state:
61
+
62
+ ```bash
63
+ (computer)% whatnext
64
+ README.md:
65
+ # What next? / HIGH
66
+ - [ ] a lot more important
67
+
68
+ README.md:
69
+ # What next? / MEDIUM
70
+ - [ ] a little more important
71
+
72
+ README.md:
73
+ # What next? / IMMINENT 6d
74
+ - [ ] get NYE fireworks tickets
75
+
76
+ README.md:
77
+ # What next?
78
+ - [/] in progress, this task is partially complete
79
+ - [ ] open, this task is outstanding
80
+ - [<] blocked, this task needs more input
81
+ ```
82
+
83
+ Also provided, `next` to add tasks to files.
84
+
85
+ ```bash
86
+ # by default, adds to $HOME/tasks.md
87
+ (computer)% next Add more features to whatnext
88
+ Updated tasks.md
89
+ ```
90
+
91
+ [sn]: https://blog.github.com/2013-01-09-task-lists-in-gfm-issues-pulls-comments/
whatnext-2.0/README.md ADDED
@@ -0,0 +1,67 @@
1
+ # What next?
2
+
3
+ I like to keep tasks in Markdown files. That way they can be interspersed
4
+ within instructions, serving as reminders, FIXMEs, and other todos.
5
+
6
+ All the features for enhancing your task lists are discussed in detail in
7
+ [the documentation](docs/index.md).
8
+
9
+ Document your tasks using an expanded version of the original
10
+ [GitHub task list notation][sn]:
11
+
12
+ ```markdown
13
+ - [ ] open, this task is outstanding
14
+ - [/] in progress, this task is partially complete
15
+ - [X] complete, this task has been finished
16
+ - [#] cancelled, this task has been scratched
17
+ - [<] blocked, this task needs more input
18
+
19
+ - [ ] _an important task_
20
+
21
+ # **Make apple pie from scratch**
22
+ - [ ] invent the universe
23
+
24
+ # Things for later
25
+
26
+ - [ ] get NYE fireworks tickets @2025-12-31
27
+ - [ ] but in the end it doesn't even matter @after
28
+ ```
29
+
30
+ Then install `whatnext`:
31
+
32
+ ```bash
33
+ pip install whatnext
34
+ ```
35
+
36
+ Now run it and it'll tell you what's next, sorting by priority and state:
37
+
38
+ ```bash
39
+ (computer)% whatnext
40
+ README.md:
41
+ # What next? / HIGH
42
+ - [ ] a lot more important
43
+
44
+ README.md:
45
+ # What next? / MEDIUM
46
+ - [ ] a little more important
47
+
48
+ README.md:
49
+ # What next? / IMMINENT 6d
50
+ - [ ] get NYE fireworks tickets
51
+
52
+ README.md:
53
+ # What next?
54
+ - [/] in progress, this task is partially complete
55
+ - [ ] open, this task is outstanding
56
+ - [<] blocked, this task needs more input
57
+ ```
58
+
59
+ Also provided, `next` to add tasks to files.
60
+
61
+ ```bash
62
+ # by default, adds to $HOME/tasks.md
63
+ (computer)% next Add more features to whatnext
64
+ Updated tasks.md
65
+ ```
66
+
67
+ [sn]: https://blog.github.com/2013-01-09-task-lists-in-gfm-issues-pulls-comments/
@@ -0,0 +1,5 @@
1
+ # Some old stuff
2
+
3
+ - [X] Do the first thing
4
+ - [X] Do the second thing
5
+ - [x] do the last thing all lowercase
@@ -0,0 +1,17 @@
1
+ # Annotations
2
+
3
+ If you need any explanatory text to appear in the output along with the
4
+ task(s), add a named fence block to the file:
5
+
6
+ ````markdown
7
+ # Project Anvil
8
+
9
+ ```whatnext
10
+ Let the anvils ring!
11
+ ```
12
+
13
+ - [ ] introduce ourselves
14
+ - [ ] inherit throne
15
+ ````
16
+
17
+ Other named and unnamed fence blocks are ignored.
@@ -0,0 +1,48 @@
1
+ # Indicating the state of a task
2
+
3
+ Tasks have states, which are indicated as such:
4
+
5
+ ```markdown
6
+ - [ ] open, this task is outstanding
7
+ - [/] in progress, this task is partially complete
8
+ - [X] complete, this task has been finished
9
+ - [#] cancelled, this task has been scratched
10
+ - [<] blocked, this task needs more input
11
+
12
+ - [@] no idea what this means
13
+ ```
14
+
15
+ By default, `whatnext` lists open, in progress, and blocked tasks. In progress
16
+ tasks are shown first, blocked tasks are shown last. Completed and cancelled
17
+ tasks are not listed unless `--all` is used.
18
+
19
+ Headers are used in grouping tasks. The second-level header that comes next
20
+ shows these tasks are a part of the main header. This does not indicate
21
+ a lower priority, only grouping.
22
+
23
+ An unknown state marker will generate a warning, but they can be suppressed
24
+ if you are using other states for a purpose.
25
+
26
+
27
+ ## Multiline tasks and indentation
28
+
29
+ Tasks can be indented, and their text can continue across lines:
30
+
31
+ ```markdown
32
+ - [ ] Lorem ipsum dolor sit amet,
33
+ consectetur adipisicing elit,
34
+ sed do eiusmod tempor incididunt
35
+ ut labore et dolore magna aliqua.
36
+ ```
37
+
38
+ The output of `whatnext` will wrap text to the terminal width, and does not
39
+ consider spacing of individual words or line wrapping semantically important.
40
+
41
+ Indentation of individual tasks is ignored, but the continuation has
42
+ to be indented to match, unlike in this task which is detected as
43
+ "Ut enim ad minim veniam," only:
44
+
45
+ ```markdown
46
+ - [ ] Ut enim ad minim veniam,
47
+ quis nostrud exercitation ullamco laboris
48
+ ```
@@ -0,0 +1,44 @@
1
+ # Deadlines
2
+
3
+ Tasks can be marked as needing to be done by a certain date:
4
+
5
+ ```markdown
6
+ # version 0.5
7
+ - [ ] complete and release @2025-12-05
8
+ ```
9
+
10
+ This task has not been given a priority, so would appear in the bulk of the
11
+ task list. That is, until two weeks before the date mentioned, at which point
12
+ it will be given a priority of `imminent`. And if the date is now in the past,
13
+ the priority set will be `overdue`.
14
+
15
+ The default two-week urgency window in which a task is marked imminent
16
+ can be controlled:
17
+
18
+ ```markdown
19
+ # Christmas dinner
20
+ - [ ] book Christmas delivery @2025-12-23/3w
21
+ ```
22
+
23
+ The `/1d` adjustment can be a number of days or weeks. `/0d` means the
24
+ task will only change priority on the day itself.
25
+
26
+ If you need to include it without it being parsed, either surround it in
27
+ backticks (` `@YYYY-...` `) or put a backslash before (`\@YYYY-...`).
28
+
29
+
30
+ # Deadlines and priorities
31
+
32
+ Due date takes precedence over priorities. Assuming the date today was
33
+ December 1st, both of these tasks would be listed as having normal
34
+ priority.
35
+
36
+ ```
37
+ # Christmas dinner
38
+ - [ ] _prep the make-ahead gravy_ @2025-12-25/1d
39
+ - [ ] **roast the potatoes** @2025-12-25/0d
40
+ - [ ] prep sprouts @2025-12-25
41
+ ```
42
+
43
+ Later, gravy would appear as medium priority on December 24th,
44
+ and potatoes as high priority on December 25th.
@@ -0,0 +1,42 @@
1
+ # Deferring tasks
2
+
3
+ Some tasks either can't or won't be considered until some other tasks
4
+ are done, so you can indicate that these tasks _should not show up_ yet:
5
+
6
+ # Someday
7
+
8
+ @after
9
+
10
+ - [ ] rewrite everything in Rust
11
+
12
+ `@after` on a line by itself applies to the whole file, on a header it
13
+ applies to the section, and on a task only applies to that task.
14
+
15
+ If you need to include it without it being parsed, either surround it in
16
+ backticks (` `@after` `) or put a backslash before (`\@after`).
17
+
18
+ To ignore this when querying for tasks, use `whatnext --ignore-after`
19
+ (plus `whatnext --all` will always show all tasks regardless).
20
+
21
+
22
+ ## After ... what?
23
+
24
+ Without any clarification, any deferred tasks will only appear in `whatnext`
25
+ output once every other non-deferred task is completed.
26
+
27
+ If you are trying to define project dependencies, you can indicate this
28
+ by naming the other task file(s):
29
+
30
+ # Stage three
31
+
32
+ @after stage_one.md stage_two.md
33
+
34
+ - [ ] design the booster separation
35
+
36
+ Filenames are compared against all task files found, without considering
37
+ the directory they are in.
38
+
39
+ Circular dependencies (where A depends on B and B depends on A) will
40
+ cause an error showing the cycle. Referencing a nonexistent file will
41
+ produce a warning.
42
+
@@ -0,0 +1,36 @@
1
+ # Excluding files
2
+
3
+ If you need to ignore a file (or three), but don't want to keep typing out
4
+ the `--ignore` option, there are two ways of doing this.
5
+
6
+ ## Exclude a single file
7
+
8
+ To have a file declare itself not suitable for finding tasks within,
9
+ add this marker anywhere in the file:
10
+
11
+ ```markdown
12
+ @notnext [explanation if necessary]
13
+ ```
14
+
15
+ ## Exclude multiple files
16
+
17
+ You can include a `.whatnext` file in the directory being examined for tasks:
18
+
19
+ ```toml
20
+ # not considered in any summaries
21
+ ignore = [
22
+ 'README.md',
23
+ 'tasks.md',
24
+ 'docs/usage.md',
25
+ ]
26
+ ```
27
+
28
+ If you need to store it somewhere else, or have it be a different
29
+ filename, you can use the `--config` option, or set the location
30
+ in the environment variable `WHATNEXT_CONFIG`.
31
+
32
+ ## Overriding exclusions
33
+
34
+ Explicitly naming a file on the command line will show its tasks
35
+ regardless of `@notnext` or ignore patterns. This allows you to
36
+ query a specific file when needed without removing the exclusion.