root/todo/trunk/.todo

Revision 443, 15.6 kB (checked in by athomas, 1 year ago)

Dev Todo:

  • A few bugfixes.
  • Added XML declaration parsing/saving. This is a stop-gap at best, but will
    hopefully be useful to some.
  • Removed reliance on builtin regex library. Hopefully the completely broken
    version of glibc that instigated the inclusion of it is now out of
    circulation.
  • Fixed a whole bunch of compiler warnings on more recent GCC versions.
Line 
1 <?xml version="1.0"?>
2 <todo version="0.1.19">
3     <title>
4         devtodo - hierarchical task list
5     </title>
6     <note priority="medium" time="0" done="987027026">
7         Allow user to specify defaults in ~/.todorc. Format could be something like: &lt;option&gt; &lt;value&gt; - identical to command line args but without the prefixed '--'.
8     </note>
9     <note priority="medium" time="980645036" done="987027202">
10         Add facility to 'graft' an added note onto an existing one.
11     </note>
12     <note priority="medium" time="980645036" done="987027202">
13         Add facility to change the file used as the input database. Perhaps --database &lt;file&gt;. This could be put in the ~/.todorc to make it permanent.
14         <note priority="medium" time="980645036" done="987887664">
15             Ended up with two new options: --database &lt;relative file&gt; and --fallback-database &lt;absolute file&gt;. The first is used to change the default database from .todo to whatever while the second one is used to specify a fallback database file to use if no other can be found.
16         </note>
17     </note>
18     <note priority="medium" time="980645036" done="987027202">
19         Add sub-tasks (1.1, 1.2, 1.2.1, etc.). Might have to add an index attribute to each item, which would be a floating point number.
20         <note priority="medium" time="980645036" done="987887671">
21             In the end, it didn't require adding an index attribute.
22         </note>
23     </note>
24     <note priority="medium" time="980645036" done="987027202">
25         Add support for TODORC environment variable (courtesy, Claude)
26     </note>
27     <note priority="medium" time="980645036" done="987027202">
28         Add version checking so that if an older version uses a newer version database, it warns the user. Probably only major/medium version number checking needs to be done?
29     </note>
30     <note priority="medium" time="980645036" done="987027043">
31         Allow branches to be reparented: --reparent &lt;index&gt; &lt;newparent&gt;
32     </note>
33     <note priority="medium" time="980645036" done="987027043">
34         Automatically derive child item priority from parent item.
35     </note>
36     <note priority="medium" time="980645036" done="987027202">
37         Change SYNTAX section in man page to SYNPOSIS (courtesy, Arthur Korn)
38     </note>
39     <note priority="medium" time="980645036" done="987027202">
40         Chase down other temporary string bugs - I'm fairly sure there will be a few in there :( Found another one and squashed it.
41     </note>
42     <note priority="medium" time="980645036" done="987027202">
43         Compile for different platforms on cf.sourceforge.net
44         <note priority="medium" time="980645036" done="994178467">
45             FreeBSD compile has problems with regex - getting empty strings?
46         </note>
47     </note>
48     <note priority="medium" time="980645036" done="987027202">
49         Do something other than fail on compile, if readline is not linkable.
50     </note>
51     <note priority="medium" time="980645036" done="987027202">
52         Expand environment variables in ~/.todorc parsed strings. Useful for 'fallback-database $HOME/.todo'
53     </note>
54     <note priority="medium" time="980645036" done="987027202">
55         Fix bug where pressing ^D to end input of a priority or text causes a seg-fault (courtesy, Matt Kraai)
56     </note>
57     <note priority="medium" time="980645036" done="987027202">
58         Fix indenting weirdness.
59     </note>
60     <note priority="medium" time="980645036" done="987027202">
61         Fix man page so that -r is no longer present, to reflect removal of this option (courtesy, Arthur Korn)
62     </note>
63     <note priority="medium" time="980645036" done="987027202">
64         Fix multiple items being specified as seperate arguments always defaulting to last argument (courtesy, Arthur Korn)
65     </note>
66     <note priority="medium" time="980645036" done="987027026">
67         Fix problem where todo won't access third teir items: 1.1.x
68     </note>
69     <note priority="medium" time="980645036" done="987027202">
70         Fix up some minor man page problems
71     </note>
72     <note priority="medium" time="980645036" done="987027202">
73         Instead of deleting items on tdr, mark them as done? Or have a new option "-d|--done" (tdd) for this?
74     </note>
75     <note priority="medium" time="980645036" done="987027202">
76         Make -s (strip symbols) optional through --configure.
77         <note priority="medium" time="980645036" done="994178472">
78             Also, use -g -Wall when debugging and use -DNDEBUG when not debugging.
79         </note>
80     </note>
81     <note priority="medium" time="980645036" done="987027202">
82         Make some man pages.
83         <note priority="medium" time="980645036" done="987887707">
84             Figure out how to generate man pages. Probably have to download some source code as an example.
85         </note>
86         <note priority="medium" time="980645036" done="987887707">
87             Possibly learn how to use SGML? Or get some front-end that uses it. That would make it easier to generate other backends simultaneously, like .html and .man, from the one source.
88         </note>
89     </note>
90     <note priority="medium" time="980645036" done="987027202">
91         Remove explicitly set CXXFLAGS in configure.in before releasing.
92     </note>
93     <note priority="medium" time="980645036" done="987027043">
94         Sort items after editing so that the correct order is maintained.
95     </note>
96     <note priority="medium" time="980645036" done="1002595646">
97         Use some sort of template string for formatting output. For example, '%i%f%2n.%T' would generate the default display.
98         <note priority="medium" time="987033135" done="987887698">
99             %&lt;n?i: indent to current depth; &lt;n&gt; is the number of spaces per indent level and defaults to 4
100         </note>
101         <note priority="medium" time="987033255" done="987887698">
102             %T is the item text, which wraps and indents to the depth the item started at
103         </note>
104         <note priority="medium" time="987033268" done="987887698">
105             %t is unwrapped text
106         </note>
107         <note priority="medium" time="987033283" done="987887698">
108             %p is the priority
109         </note>
110         <note priority="medium" time="987033395" done="987887698">
111             %d is the date (formatted according to --format-date)
112         </note>
113         <note priority="medium" time="987180915" done="987887698">
114             %n is the index number of the item
115         </note>
116         <note priority="medium" time="987180954" done="987887698">
117             %f is the state flag (+ means children, - means done, * means children and done)
118         </note>
119     </note>
120     <note priority="medium" time="980645036" done="987027202">
121         Validate arguments from ~/.todorc. It's not good to be able to put --add or --reparent in there. There should really only be a couple available: verbose, colour, etc.
122     </note>
123     <note priority="verylow" time="980645036">
124         Add facility to extract TODO entries in source code into .todo database. Perhaps an external script or something would be better?
125         <note priority="verylow" time="980645036">
126             Could be done with an option to the root node, such as: &lt;todo mirror="true"&gt;
127         </note>
128     </note>
129     <note priority="verylow" time="980645036">
130         Minor bug where items with sub-items that are all marked done still get a + when children are filtered out.
131     </note>
132     <note priority="high" time="987027358" done="987210991">
133         Allow sorting in a variety of ways. One example of the usefulness of this is to sort done items after not done items - makes it easier to seperate them visually. Another example is sorting by finished date, created date, lifespan of item, etc.
134         <note priority="high" time="987181145" done="987887619">
135             a prefix of '-' will mean sort descending, '+' means sort ascending
136         </note>
137         <note priority="high" time="987181280" done="987887619">
138             Valid sort keys are
139             <note priority="high" time="987181204" done="987887648">
140                 created - sort on created time
141             </note>
142             <note priority="high" time="987181213" done="987887648">
143                 completed - sort on completed time
144             </note>
145             <note priority="high" time="987181261" done="987887648">
146                 text - sort on text
147             </note>
148             <note priority="high" time="987181269" done="987887648">
149                 priority - sort on priority
150             </note>
151             <note priority="high" time="987181480" done="987887648">
152                 duration - sort on time item was open
153             </note>
154             <note priority="high" time="987181597" done="987887648">
155                 done - sort on whether an item is done or not
156             </note>
157         </note>
158         <note priority="high" time="987181770" done="987887619">
159             eg. This is the default behaviour: todo --sort done,priority,-created
160         </note>
161     </note>
162     <note priority="low" time="987034479" done="987180061">
163         Warn if database is created with world or group read/write permissions.
164     </note>
165     <note priority="verylow" time="987181399" done="994178421">
166         If a sub-sub-item needs to be expanded and you are filtering with '-children' you have to first expand the parent then the child. This is probably not expected behaviour.
167     </note>
168     <note priority="low" time="987182780" done="987293958">
169         Allow formatting of time in --verbose display.
170     </note>
171     <note priority="medium" time="987187139">
172         Add new filter options 'created=&lt;date&gt;[-&lt;date&gt;|,&lt;date&gt;]', 'completed=&lt;date&gt;[-&lt;date&gt;|,&lt;date&gt;]' and 'duration=&lt;time&gt;' to filtering code.
173     </note>
174     <note priority="medium" time="987188566">
175         Add a 'current' marker to items? ie. mark the item you are currently working on so that it is easier to determine.
176     </note>
177     <note priority="high" time="987554480" done="987554583">
178         Default to medium priority if a blank line is entered in the priority input (thanks to Alexei Gilchrist).
179     </note>
180     <note priority="veryhigh" time="987554520" done="987861021">
181         Fix performance problems! (Alexei Gilchrist has reported &gt;= 16 seconds on a file less than 20K. Not good.)
182         <note priority="veryhigh" time="987628779" done="987640630">
183             One problem was getline(string) - this is very slow. Changed it to use in.getline(char*, int) and it profiled a LOT faster.
184         </note>
185         <note priority="veryhigh" time="987628813" done="987640630">
186             Use of Lexer::iterator::operator ++ (int) - this causes a copy of the entire iterator - bad.
187         </note>
188         <note priority="veryhigh" time="987629226" done="987640630">
189             Added buffering code in XML::getBody - it *was* basically appending every single character individually - slow.
190         </note>
191         <note priority="veryhigh" time="987630068" done="987640630">
192             Instead of reading entire database with getline(in, str) I now use the size returned by stat to pre-allocate a buffer and load it into that.
193         </note>
194     </note>
195     <note priority="high" time="987554577" done="988586079">
196         Add --global-database &lt;file&gt; and -G/--global option to use it. Replaces clunky --fallback-database semantics. Thanks again to Alexei Gilchrist.
197     </note>
198     <note priority="low" time="987554607" done="988071870">
199         Re-add numbered priorities for speedy entry. Alexei Gilchrist bought this up as an idea.
200     </note>
201     <note priority="medium" time="987554720">
202         Adding optional "hidden" notes to notes. Kind of like annotations. Invoke an external editor for this facility? (idea courtesy of Alexei Gilchrist).
203         <comment>
204             I have added a comment field for each item, as evidenced by this.
205         </comment>
206     </note>
207     <note priority="low" time="987556665">
208         Some sort of integration with CVS would be cool. Maybe you could do: "todo --cvs-commit" and it would commit to CVS using all the completed TODO items since the last commit as the change notes. That would be exceptionally cool.
209     </note>
210     <note priority="high" time="987639265" done="987821157">
211         Go binary? This would definitely make it run a lot faster...but is that actually where the bottleneck is? (Well, this was definitely the bottleneck)
212     </note>
213     <note priority="veryhigh" time="987673942" done="988628559">
214         Add --timeout &lt;n&gt; to only show database if shown more than &lt;n&gt; seconds ago.
215     </note>
216     <note priority="medium" time="987715214">
217         Add encryption using crash::Encrypt classes. This will probably require MIME support, or something similar, in order to actually store the resultant binary information.
218         <comment>
219             I have Base64 stream support, so this would be trivial now.
220         </comment>
221         <note priority="medium" time="987882179">
222             Alternatively, just pass the encryption stream to the database saving routine. This would require rewriting the Loaders interface (again).
223         </note>
224     </note>
225     <note priority="medium" time="987723307">
226         Add per-database options - brilliant for changing views on different databases.
227         <note priority="medium" time="988071964">
228             Problem with this is that the options are parsed *before* the database is loaded, which would probably mean reloading the database to have the new options take effect.
229         </note>
230     </note>
231     <note priority="veryhigh" time="987864991" done="987866368">
232         Add backing up of database (--backup [&lt;n&gt;], where &lt;n&gt; is the number of backups to keep).
233     </note>
234     <note priority="medium" time="988583933">
235         Add percentage completions?
236     </note>
237     <note priority="medium" time="988585139">
238         i18n support?
239     </note>
240     <note priority="medium" time="988628849" done="988671949">
241         Detect terminal width and use that instead of hardwired 80 characters.
242     </note>
243     <note priority="medium" time="988727782">
244         Rewrite filtering code so it's generic (as the sorting code is).
245     </note>
246     <note priority="medium" time="989159408">
247         Write functions to do envar expansion, C string escaping, etc.
248     </note>
249     <note priority="high" time="989597943" done="993654280">
250         Add search facility. This could be done as a filter: todo --filter /string, which would make it simple when ommitting the '--filter': todo /string.
251     </note>
252     <note priority="high" time="990555168">
253         Change everything to be an attribute (except, perhaps, the item body). This will allow things like timers and so forth (eg. todo --add-attrib 'start=%D').
254         <note priority="veryhigh" time="989408664">
255             Timed events. eg. todo --set text="This is funny"@07/03/2001-10:53 12 ... this would change the text of item 12 to "This is funny" on the 07/03/2001 at 10:53 in the morning.
256         </note>
257         <note priority="high" time="1040227861" done="1040227866">
258             This is a test
259         </note>
260     </note>
261     <note priority="low" time="994279770">
262         Evaluate filters on first use rather than on read. This will allow wildcard filters to actually work.
263     </note>
264     <note priority="medium" time="1002204052">
265         Categories - optionally assign a note a category, then you can filter on that category.
266     </note>
267     <note priority="medium" time="1002594023">
268         Make priority names and number of them user-defineable.
269     </note>
270     <note priority="veryhigh" time="1003071835">
271         Fix situation where doing "todo -r -5" goes into an endless loop.
272     </note>
273     <note priority="veryhigh" time="1036076001">
274         Fix problems with * expansion. It doesn't appear to work at all...
275     </note>
276 </todo>
Note: See TracBrowser for help on using the browser.