recent version of libjson has remove is_error which was checking
[ptask.git] / NEWS.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
2     "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
4 <head>\r
5 <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
6 <meta name="generator" content="AsciiDoc 8.6.9" />\r
7 <title>What&#8217;s New</title>\r
8 <style type="text/css">\r
9 body {\r
10     background: #FFFFFF;\r
11     color: #333333;\r
12     font-family: Ubuntu,Arial,sans-serif;\r
13     line-height: 1.6;\r
14     font-weight: lighter;\r
15     margin: 1em 2em 2em 2em;\r
16     padding: 0 0 0 0;\r
17 }\r
18 \r
19 h1 {\r
20     font-size: 2.813em;\r
21     margin: 0 0 0.267em 0;\r
22     padding: 0 0 0 0;\r
23     font-weight: normal;\r
24 }\r
25 \r
26 h2 {\r
27     font-size: 2em;\r
28     margin: 0 0 0.375em;\r
29     padding: 0 0 0 0;\r
30     font-weight: normal;\r
31 }\r
32 \r
33 h3 {\r
34     font-size: 1.438em;\r
35     margin: 0 0 0.522em;\r
36     padding: 0 0 0 0;\r
37     font-weight: normal;\r
38 }\r
39 \r
40 h4 {\r
41     font-size: 1.219em;\r
42     margin: 0 0 0.615em;\r
43     padding: 0 0 0 0;\r
44     font-weight: normal;\r
45 }\r
46 \r
47 h5 {\r
48     font-size: 1em;\r
49     margin: 0 0 0.75em;\r
50     padding: 0 0 0 0;\r
51     font-weight: bold;\r
52 }\r
53 \r
54 h6 {\r
55     font-weight: normal;\r
56     font-size: 0.813em;\r
57     letter-spacing: 0.1em;\r
58     margin: 0 0 0.923em;\r
59     text-transform: uppercase;\r
60     padding: 0 0 0 0;\r
61 }\r
62 \r
63 li {\r
64     margin: 0 0 0 1em;\r
65     line-height: 1.6;\r
66 }\r
67 \r
68 li p {\r
69     margin: 0 0 0 0;\r
70 }\r
71 \r
72 ul {\r
73     margin: 0 0 0 0;\r
74     padding: 0 0 0 0;\r
75 }\r
76 \r
77 a:link, a:visited {\r
78     color: #19B6EE;\r
79     text-decoration: none;\r
80 }\r
81 \r
82 a:hover {\r
83     text-decoration: underline;\r
84 }\r
85 \r
86 code, pre, tt {\r
87     font-family: "Ubuntu Mono","Courier New",Courier,monospace;\r
88     font-weight: normal;\r
89     color: #333333;\r
90 }\r
91 \r
92 pre {\r
93     background: none repeat scroll 0 0 #e0e0e0;\r
94     border-radius: 4px;\r
95     padding: 0.5em 0.5em;\r
96     margin: 0 0 0 0;\r
97     white-space: pre-wrap;\r
98     word-wrap: break-word;\r
99 }\r
100 \r
101 /* ASCIIDOC */\r
102 \r
103 div.toclevel2 {\r
104     margin-left: 1em;\r
105 }\r
106 \r
107 #toctitle {\r
108     font-size: 1.219em;\r
109     margin: 0 0 0.615em;\r
110     padding: 0 0 0 0;\r
111     font-weight: normal;\r
112 }\r
113 \r
114 #footer {\r
115     margin: 2em 0 0 0;\r
116     font-size: 0.8em;\r
117     font-weight: lighter;\r
118 }\r
119 \r
120 \r
121 </style>\r
122 <script type="text/javascript">\r
123 /*<![CDATA[*/\r
124 var asciidoc = {  // Namespace.\r
125 \r
126 /////////////////////////////////////////////////////////////////////\r
127 // Table Of Contents generator\r
128 /////////////////////////////////////////////////////////////////////\r
129 \r
130 /* Author: Mihai Bazon, September 2002\r
131  * http://students.infoiasi.ro/~mishoo\r
132  *\r
133  * Table Of Content generator\r
134  * Version: 0.4\r
135  *\r
136  * Feel free to use this script under the terms of the GNU General Public\r
137  * License, as long as you do not remove or alter this notice.\r
138  */\r
139 \r
140  /* modified by Troy D. Hanson, September 2006. License: GPL */\r
141  /* modified by Stuart Rackham, 2006, 2009. License: GPL */\r
142 \r
143 // toclevels = 1..4.\r
144 toc: function (toclevels) {\r
145 \r
146   function getText(el) {\r
147     var text = "";\r
148     for (var i = el.firstChild; i != null; i = i.nextSibling) {\r
149       if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.\r
150         text += i.data;\r
151       else if (i.firstChild != null)\r
152         text += getText(i);\r
153     }\r
154     return text;\r
155   }\r
156 \r
157   function TocEntry(el, text, toclevel) {\r
158     this.element = el;\r
159     this.text = text;\r
160     this.toclevel = toclevel;\r
161   }\r
162 \r
163   function tocEntries(el, toclevels) {\r
164     var result = new Array;\r
165     var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');\r
166     // Function that scans the DOM tree for header elements (the DOM2\r
167     // nodeIterator API would be a better technique but not supported by all\r
168     // browsers).\r
169     var iterate = function (el) {\r
170       for (var i = el.firstChild; i != null; i = i.nextSibling) {\r
171         if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {\r
172           var mo = re.exec(i.tagName);\r
173           if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {\r
174             result[result.length] = new TocEntry(i, getText(i), mo[1]-1);\r
175           }\r
176           iterate(i);\r
177         }\r
178       }\r
179     }\r
180     iterate(el);\r
181     return result;\r
182   }\r
183 \r
184   var toc = document.getElementById("toc");\r
185   if (!toc) {\r
186     return;\r
187   }\r
188 \r
189   // Delete existing TOC entries in case we're reloading the TOC.\r
190   var tocEntriesToRemove = [];\r
191   var i;\r
192   for (i = 0; i < toc.childNodes.length; i++) {\r
193     var entry = toc.childNodes[i];\r
194     if (entry.nodeName.toLowerCase() == 'div'\r
195      && entry.getAttribute("class")\r
196      && entry.getAttribute("class").match(/^toclevel/))\r
197       tocEntriesToRemove.push(entry);\r
198   }\r
199   for (i = 0; i < tocEntriesToRemove.length; i++) {\r
200     toc.removeChild(tocEntriesToRemove[i]);\r
201   }\r
202 \r
203   // Rebuild TOC entries.\r
204   var entries = tocEntries(document.getElementById("content"), toclevels);\r
205   for (var i = 0; i < entries.length; ++i) {\r
206     var entry = entries[i];\r
207     if (entry.element.id == "")\r
208       entry.element.id = "_toc_" + i;\r
209     var a = document.createElement("a");\r
210     a.href = "#" + entry.element.id;\r
211     a.appendChild(document.createTextNode(entry.text));\r
212     var div = document.createElement("div");\r
213     div.appendChild(a);\r
214     div.className = "toclevel" + entry.toclevel;\r
215     toc.appendChild(div);\r
216   }\r
217   if (entries.length == 0)\r
218     toc.parentNode.removeChild(toc);\r
219 },\r
220 \r
221 \r
222 /////////////////////////////////////////////////////////////////////\r
223 // Footnotes generator\r
224 /////////////////////////////////////////////////////////////////////\r
225 \r
226 /* Based on footnote generation code from:\r
227  * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html\r
228  */\r
229 \r
230 footnotes: function () {\r
231   // Delete existing footnote entries in case we're reloading the footnodes.\r
232   var i;\r
233   var noteholder = document.getElementById("footnotes");\r
234   if (!noteholder) {\r
235     return;\r
236   }\r
237   var entriesToRemove = [];\r
238   for (i = 0; i < noteholder.childNodes.length; i++) {\r
239     var entry = noteholder.childNodes[i];\r
240     if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")\r
241       entriesToRemove.push(entry);\r
242   }\r
243   for (i = 0; i < entriesToRemove.length; i++) {\r
244     noteholder.removeChild(entriesToRemove[i]);\r
245   }\r
246 \r
247   // Rebuild footnote entries.\r
248   var cont = document.getElementById("content");\r
249   var spans = cont.getElementsByTagName("span");\r
250   var refs = {};\r
251   var n = 0;\r
252   for (i=0; i<spans.length; i++) {\r
253     if (spans[i].className == "footnote") {\r
254       n++;\r
255       var note = spans[i].getAttribute("data-note");\r
256       if (!note) {\r
257         // Use [\s\S] in place of . so multi-line matches work.\r
258         // Because JavaScript has no s (dotall) regex flag.\r
259         note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];\r
260         spans[i].innerHTML =\r
261           "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +\r
262           "' title='View footnote' class='footnote'>" + n + "</a>]";\r
263         spans[i].setAttribute("data-note", note);\r
264       }\r
265       noteholder.innerHTML +=\r
266         "<div class='footnote' id='_footnote_" + n + "'>" +\r
267         "<a href='#_footnoteref_" + n + "' title='Return to text'>" +\r
268         n + "</a>. " + note + "</div>";\r
269       var id =spans[i].getAttribute("id");\r
270       if (id != null) refs["#"+id] = n;\r
271     }\r
272   }\r
273   if (n == 0)\r
274     noteholder.parentNode.removeChild(noteholder);\r
275   else {\r
276     // Process footnoterefs.\r
277     for (i=0; i<spans.length; i++) {\r
278       if (spans[i].className == "footnoteref") {\r
279         var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");\r
280         href = href.match(/#.*/)[0];  // Because IE return full URL.\r
281         n = refs[href];\r
282         spans[i].innerHTML =\r
283           "[<a href='#_footnote_" + n +\r
284           "' title='View footnote' class='footnote'>" + n + "</a>]";\r
285       }\r
286     }\r
287   }\r
288 },\r
289 \r
290 install: function(toclevels) {\r
291   var timerId;\r
292 \r
293   function reinstall() {\r
294     asciidoc.footnotes();\r
295     if (toclevels) {\r
296       asciidoc.toc(toclevels);\r
297     }\r
298   }\r
299 \r
300   function reinstallAndRemoveTimer() {\r
301     clearInterval(timerId);\r
302     reinstall();\r
303   }\r
304 \r
305   timerId = setInterval(reinstall, 500);\r
306   if (document.addEventListener)\r
307     document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);\r
308   else\r
309     window.onload = reinstallAndRemoveTimer;\r
310 }\r
311 \r
312 }\r
313 asciidoc.install();\r
314 /*]]>*/\r
315 </script>\r
316 </head>\r
317 <body class="article">\r
318 <div id="header">\r
319 <h1>What&#8217;s New</h1>\r
320 </div>\r
321 <div id="content">\r
322 <div class="sect1">\r
323 <h2 id="_v1_0_0">v1.0.0</h2>\r
324 <div class="sectionbody">\r
325 <div class="ulist"><ul>\r
326 <li>\r
327 <p>\r
328 allowed 2.4.0, 2.4.1 and 2.5 release of taskwarrior.\r
329 </p>\r
330 </li>\r
331 <li>\r
332 <p>\r
333 added keywords in the desktop file.\r
334 </p>\r
335 </li>\r
336 <li>\r
337 <p>\r
338 added a command line option to force usage of an unsupported\r
339    version of taskwarrior (risk of malfunction like damaging data).\r
340 </p>\r
341 </li>\r
342 <li>\r
343 <p>\r
344 upadted the date of copyrights in source files.\r
345 </p>\r
346 </li>\r
347 </ul></div>\r
348 </div>\r
349 </div>\r
350 <div class="sect1">\r
351 <h2 id="_v0_0_9">v0.0.9</h2>\r
352 <div class="sectionbody">\r
353 <div class="ulist"><ul>\r
354 <li>\r
355 <p>\r
356 fixed potential memory leak when failing to convert time to string\r
357    which is unlikely.\r
358 </p>\r
359 </li>\r
360 <li>\r
361 <p>\r
362 added incremental search (ctrl-shift f) on description and tags.\r
363 </p>\r
364 </li>\r
365 <li>\r
366 <p>\r
367 ctrl-n for new task.\r
368 </p>\r
369 </li>\r
370 <li>\r
371 <p>\r
372 ctrl-r for refresh.\r
373 </p>\r
374 </li>\r
375 </ul></div>\r
376 </div>\r
377 </div>\r
378 <div class="sect1">\r
379 <h2 id="_v0_0_8">v0.0.8</h2>\r
380 <div class="sectionbody">\r
381 <div class="ulist"><ul>\r
382 <li>\r
383 <p>\r
384 fixed a critical gtk error when loading the glade file\r
385    which can also cause a memory corruption.\r
386 </p>\r
387 </li>\r
388 <li>\r
389 <p>\r
390 fixed crash when creating task with a project\r
391    containing a task with a tag.\r
392 </p>\r
393 </li>\r
394 </ul></div>\r
395 </div>\r
396 </div>\r
397 <div class="sect1">\r
398 <h2 id="_v0_0_7">v0.0.7</h2>\r
399 <div class="sectionbody">\r
400 <div class="ulist"><ul>\r
401 <li>\r
402 <p>\r
403 added support of taskwarrior 2.3.0.\r
404 </p>\r
405 </li>\r
406 <li>\r
407 <p>\r
408 added combo box for project in the new task dialog.\r
409 </p>\r
410 </li>\r
411 <li>\r
412 <p>\r
413 disable the removal of recurrent tasks which is freezing ptask\r
414    because taskwarrior CLI is prompting a confirmation. That&#8217;s the\r
415    consequence of the taskwarrior bug TW-638.\r
416 </p>\r
417 </li>\r
418 <li>\r
419 <p>\r
420 display the tags of the selected task.\r
421 </p>\r
422 </li>\r
423 </ul></div>\r
424 </div>\r
425 </div>\r
426 <div class="sect1">\r
427 <h2 id="_v0_0_6">v0.0.6</h2>\r
428 <div class="sectionbody">\r
429 <div class="ulist"><ul>\r
430 <li>\r
431 <p>\r
432 added contextal menu item in the task tree: task done.\r
433 </p>\r
434 </li>\r
435 <li>\r
436 <p>\r
437 added start/stop task.\r
438 </p>\r
439 </li>\r
440 <li>\r
441 <p>\r
442 fixed coredump with taskwarrior 2.0.0 when there is not any tasks.\r
443 </p>\r
444 </li>\r
445 </ul></div>\r
446 </div>\r
447 </div>\r
448 <div class="sect1">\r
449 <h2 id="_v0_0_5">v0.0.5</h2>\r
450 <div class="sectionbody">\r
451 <div class="ulist"><ul>\r
452 <li>\r
453 <p>\r
454 keep focus on project after refresh.\r
455 </p>\r
456 </li>\r
457 <li>\r
458 <p>\r
459 keep focus on task after refresh.\r
460 </p>\r
461 </li>\r
462 <li>\r
463 <p>\r
464 added support of tasks with deleted status.\r
465 </p>\r
466 </li>\r
467 <li>\r
468 <p>\r
469 added urgency column.\r
470 </p>\r
471 </li>\r
472 <li>\r
473 <p>\r
474 implemented the cancel button of the task panel.\r
475 </p>\r
476 </li>\r
477 <li>\r
478 <p>\r
479 added menu.\r
480 </p>\r
481 </li>\r
482 <li>\r
483 <p>\r
484 restore position of vertical/horizontal spliters.\r
485 </p>\r
486 </li>\r
487 <li>\r
488 <p>\r
489 added creation date, due, id, uuid, urgency, and start date in the\r
490    list of tasks.\r
491 </p>\r
492 </li>\r
493 <li>\r
494 <p>\r
495 popup menu to filter columns of the table of tasks.\r
496 </p>\r
497 </li>\r
498 <li>\r
499 <p>\r
500 allow to change the directory containing the notes.\r
501 </p>\r
502 </li>\r
503 <li>\r
504 <p>\r
505 fixed compilation with gtk+ 3.10 (ignore deprecation of GtkAction).\r
506 </p>\r
507 </li>\r
508 </ul></div>\r
509 </div>\r
510 </div>\r
511 <div class="sect1">\r
512 <h2 id="_v0_0_4">v0.0.4</h2>\r
513 <div class="sectionbody">\r
514 <div class="ulist"><ul>\r
515 <li>\r
516 <p>\r
517 fixed i18n support.\r
518 </p>\r
519 </li>\r
520 <li>\r
521 <p>\r
522 added --version and --help options.\r
523 </p>\r
524 </li>\r
525 <li>\r
526 <p>\r
527 added manpage.\r
528 </p>\r
529 </li>\r
530 <li>\r
531 <p>\r
532 popup error dialog when .taskrc does not exist.\r
533 </p>\r
534 </li>\r
535 <li>\r
536 <p>\r
537 added --debug.\r
538 </p>\r
539 </li>\r
540 <li>\r
541 <p>\r
542 added taskwarrior version checking (supported version are 2.2.0 and 2.0.0).\r
543 </p>\r
544 </li>\r
545 <li>\r
546 <p>\r
547 added support for taskwarrior 2.2.0 (avoid confirmation query).\r
548 </p>\r
549 </li>\r
550 <li>\r
551 <p>\r
552 added window position and size restore.\r
553 </p>\r
554 </li>\r
555 <li>\r
556 <p>\r
557 added tasks sort column/order restore.\r
558 </p>\r
559 </li>\r
560 <li>\r
561 <p>\r
562 fixed error message displayed when a note does not exist.\r
563 </p>\r
564 </li>\r
565 <li>\r
566 <p>\r
567 new task dialog allow to set description and priority.\r
568 </p>\r
569 </li>\r
570 <li>\r
571 <p>\r
572 added project table to filter the list of tasks.\r
573 </p>\r
574 </li>\r
575 <li>\r
576 <p>\r
577 added application icon.\r
578 </p>\r
579 </li>\r
580 <li>\r
581 <p>\r
582 added remove task button.\r
583 </p>\r
584 </li>\r
585 </ul></div>\r
586 </div>\r
587 </div>\r
588 <div class="sect1">\r
589 <h2 id="_v0_0_3">v0.0.3</h2>\r
590 <div class="sectionbody">\r
591 <div class="ulist"><ul>\r
592 <li>\r
593 <p>\r
594 fixed window close to terminate the application.\r
595 </p>\r
596 </li>\r
597 <li>\r
598 <p>\r
599 added README.\r
600 </p>\r
601 </li>\r
602 <li>\r
603 <p>\r
604 generated HTML version of README and NEWS files.\r
605 </p>\r
606 </li>\r
607 <li>\r
608 <p>\r
609 added fr translation and i18n support.\r
610 </p>\r
611 </li>\r
612 </ul></div>\r
613 </div>\r
614 </div>\r
615 <div class="sect1">\r
616 <h2 id="_v0_0_2">v0.0.2</h2>\r
617 <div class="sectionbody">\r
618 <div class="ulist"><ul>\r
619 <li>\r
620 <p>\r
621 added refresh keyboard shortcut (ALT-r).\r
622 </p>\r
623 </li>\r
624 <li>\r
625 <p>\r
626 added new task keyboard shortcut (ALT-n).\r
627 </p>\r
628 </li>\r
629 <li>\r
630 <p>\r
631 renamed gtask to ptask.\r
632 </p>\r
633 </li>\r
634 </ul></div>\r
635 </div>\r
636 </div>\r
637 <div class="sect1">\r
638 <h2 id="_v0_0_1">v0.0.1</h2>\r
639 <div class="sectionbody">\r
640 <div class="ulist"><ul>\r
641 <li>\r
642 <p>\r
643 Initial release.\r
644 </p>\r
645 </li>\r
646 </ul></div>\r
647 </div>\r
648 </div>\r
649 </div>\r
650 <div id="footnotes"><hr /></div>\r
651 <div id="footer">\r
652 <div id="footer-text">\r
653 Last updated\r
654  2016-05-24 00:47:37 CEST\r
655 </div>\r
656 </div>\r
657 </body>\r
658 </html>\r