From 4a77e41940746b0f223721eac258db37cec73f43 Mon Sep 17 00:00:00 2001
From: Sam Pablo Kuper Proposal: Exotic Dates
Got suggestions?
- TBD -
-periodic
template
From e48cf9bbdcd15d9cead8c4f5f8250caa08cfc557 Mon Sep 17 00:00:00 2001
From: Sam Pablo Kuper Proposal: On load, auto-upgrade legacy tasks
- Deleting a rtype:chained
instance causes the next
- chained instance to be synthesized.
+ Deleting or completing a rtype:chained
instance
+ causes the next chained instance to be synthesized.
This gives the illusion that the due date is simply pushed out to
(now + template.recur)
.
From bd5b3b3dfae00dfd54475578df4185132b1837c8 Mon Sep 17 00:00:00 2001
From: Sam Pablo Kuper Criticism of Current Implementation
mask
, imaѕk
Attributes
- The mask
attribute in the template is replaced by
- last
, which indicates the most recent instance index
- synthesized.
-
- Because instances are never synthesized out of order, we only
- need to store the most recent index.
+
+
imask
attribute in the instance is no longer
- needed.
-
+
+ mask
, imaѕk
Attributes
+ The mask
attribute in the template is replaced by
+ last
, which indicates the most recent instance index
+ synthesized.
-
parent
to template
- The name parent
implies subtasks, and confuses those
- who inspect the internals. The value remains the UUID of the
- template. This frees up the namespace for future use with subtasks.
-
- To indicate the flavor of recurrence, support the following values: - -
periodic |
- - Instances are created on a regular schedule. - Example: send birthday flowers. It must occur on a regular - schedule, and doesn't matter if you were late last year. - This is the default value. - | -
chained |
- - Instances are created back to back, so when one instance ends, - the next begins, with the same recurrence. - Example: mow the lawn. If you mow two days late, the next - instance is not two days early to compensate. - | -
imask
attribute in the instance is no longer
+ needed.
+
-
- The delta between wait
and due
date in
- the template should be reflected in the delta between
- wait
and due
date in the instance.
+
+
parent
to template
+ The name parent
implies subtasks, and confuses those
+ who inspect the internals. The value remains the UUID of the
+ template. This frees up the namespace for future use with subtasks.
+
+ To indicate the flavor of recurrence, support the following values: + +
periodic |
+ + Instances are created on a regular schedule. + Example: send birthday flowers. It must occur on a regular + schedule, and doesn't matter if you were late last year. + This is the default value. + | +
chained |
+ + Instances are created back to back, so when one instance ends, + the next begins, with the same recurrence. + Example: mow the lawn. If you mow two days late, the next + instance is not two days early to compensate. + | +
- Upgrade template: -
rtype:periodic
last:N
where N
is the length of mask
mask
+ The delta between wait
and due
date in
+ the template should be reflected in the delta between
+ wait
and due
date in the instance.
- Upgrade instance:
-
parent
to template
imask
wait
if not set to: wait:due + (template.due - template.wait)
scheduled
if not set to: scheduled:due + (template.due - template.scheduled)
- Deleting a rtype:chained
instance causes the next
- chained instance to be synthesized.
+
+
+ Upgrade template: +
rtype:periodic
last:N
where N
is the length of mask
mask
parent
to template
imask
wait
if not set to: wait:due + (template.due - template.wait)
scheduled
if not set to: scheduled:due + (template.due - template.scheduled)
(now + template.recur)
.
-
+
+
+ Deleting a rtype:chained
instance causes the next
+ chained instance to be synthesized.
-
- TBD -
+ This gives the illusion that the due date is simply pushed out to +(now + template.recur)
.
+
- - Expand date specifications to use pattern phrases: -
4th thursday in November
4th thursday of November
Friday before easter
next Tuesday
last Tuesday
last July
weekend
3 days before eom
in the morning
4pm
noon
midnight
+ TBD +
- Got suggestions? - + ++ Expand date specifications to use pattern phrases: +
4th thursday in November
4th thursday of November
Friday before easter
next Tuesday
last Tuesday
last July
weekend
3 days before eom
in the morning
4pm
noon
midnight
- TBD -
++ TBD +
periodic
templateRecurrence needs an overhaul to improve weaknesses and add new features.
mask
, imaѕk
Attributesmask
, imaѕk
Attributes
The mask
attribute in the template is replaced by
last
, which indicates the most recent instance index
@@ -140,7 +140,7 @@
mask
, imaѕk
Attributesparent
to template
parent
to template
The name parent
implies subtasks, and confuses those
who inspect the internals. The value remains the UUID of the
@@ -148,7 +148,7 @@
parent
to template
To indicate the flavor of recurrence, support the following values: @@ -175,7 +175,7 @@
The delta between wait
and due
date in
the template should be reflected in the delta between
@@ -185,7 +185,7 @@
Upgrade template:
Deleting a rtype:chained
instance causes the next
chained instance to be synthesized.
@@ -214,13 +214,13 @@
TBD
-Expand date specifications to use pattern phrases:
TBD
-periodic
templateperiodic
templateWhen adding a new periodic template: @@ -280,7 +280,7 @@
periodic
templatechained
templatechained
templateWhen adding a new chained template: @@ -312,7 +312,7 @@
chained
templateCertain recurrence periods are inexact:
periodic
template- When adding a new periodic template: +
periodic
template+ When adding a new periodic template: -
task add ... due:D recur:R wait:D-1wk scheduled:D-1wk until:U+
task add ... due:D recur:R wait:D-1wk scheduled:D-1wk until:U- Creates: -
template.uuid: NEW_UUID + Creates: +template.uuid: NEW_UUID template.description: ... template.entry: now template.modified: now @@ -266,9 +269,9 @@- Creating the Nth instance (index N): + Creating the Nth instance (index N): -Implementation: Adding a new
template.rtype: periodic template.last:periodic
templateClone instance from template. +Clone instance from template. instance.uuid: NEW_UUID instance.modified: now @@ -278,16 +281,17 @@- + -Implementation: Adding a new
instance.start: template.last: Nperiodic
templateImplementation: Adding a new
-chained
template- When adding a new chained template: + +
Implementation: Adding a new
+chained
template+ When adding a new chained template: -
task add ... due:D recur:R wait:D-1wk scheduled:D-1wk until:U rtype:chained+task add ... due:D recur:R wait:D-1wk scheduled:D-1wk until:U rtype:chained- Creates: -template.uuid: NEW_UUID + Creates: +template.uuid: NEW_UUID template.description: ... template.entry: now template.modified: now @@ -298,48 +302,49 @@- Creating the Nth instance (index N): -Implementation: Adding a new
template.until: U template.rtype: chainedchained
templateClone instance from template. + Creating the Nth instance (index N): +- Chained tasks do not obeyClone instance from template. -instance.uuid: NEW_UUID -instance.modified: now -instance.due: instance[N-1].end + template.recur -instance.wait: instance.due + (template.due - template.wait) -instance.scheduled: instance.due + (template.due - template.scheduled) -instance.start:+instance.uui d: NEW_UUID +instance.mod ified: now +instance.due : instance[N-1].end + template.recur +instance.wai t: instance.due + (template.due - template.wait) +instance.sch eduled: instance.due + (template.due - template.scheduled) +instance.sta rt:rc.recurrence.limit
, and - show only one pending task at a time. - + Chained tasks do not obeyrc.recurrence.limit
, and + show only one pending task at a time. + -Implementation: Special handling for months
-- Certain recurrence periods are inexact: -
+ Certain recurrence periods are inexact: +
P1M
the number of days
- in a month varies and causes drift.
-
+ When the recurrence period is P1M
the number of days
+ in a month varies and causes drift.
+
-
- When the recurrence period is P1Y
the number of days
- in a year varies and causes drift.
-
+ When the recurrence period is P1Y
the number of days
+ in a year varies and causes drift.
+
- When the recurrence period is P1D
the number of hours
- in a day varies due to daylight savings, and causes drift.
-
+ When the recurrence period is P1D
the number of hours
+ in a day varies due to daylight savings, and causes drift.
+
- Drift should be avoided by carefully implementing: +
+ Drift should be avoided by carefully implementing: -
instance.due: template.due + (N * template.recur)- +
instance.due: template.due + (N * template.recur)+
Recurrence needs an overhaul to improve weaknesses and add new features. -
+
+ Deleting or completing a rtype:chained
instance
+ causes the next chained instance to be synthesized.
+
+ This gives the illusion that the due date is simply pushed out
+ to (now + template.recur)
.
+
@@ -203,16 +213,6 @@
- Deleting or completing a rtype:chained
instance
- causes the next chained instance to be synthesized.
-
- This gives the illusion that the due date is simply pushed out
- to (now + template.recur)
.
-
@@ -358,9 +358,9 @@
mask
, imaѕk
Attributesparent
to template
periodic |
- - Instances are created on a regular schedule. - Example: send birthday flowers. It must occur on a regular - schedule, and doesn't matter if you were late last year. - This is the default value. - | -|||
chained |
- - Instances are created back to back, so when one instance ends, - the next begins, with the same recurrence. - Example: mow the lawn. If you mow two days late, the next - instance is not two days early to compensate. - | -|||
Proposed TaskWarrior 'rtype' | +Org-mode equivalent | +Instances accumulate if not done or deleted | +Next task's due date set to | +Example | +
---|---|---|---|---|
periodic (default) |
+ + |
+ Y | +Latest instance's due date + interval | +Send birthday flowers. (Must occur on a regular schedule, and doesn't matter if you were late last year.) | +
chained |
+ .+ |
+ N | +Latest instance's done date + interval | +Mow the lawn. (If you mow two days late, the next instance is not two days early to compensate.) | +
N/A | +++ |
+ N | +Latest instance's due date + n x interval, where n is an integer that is incremented until the next task's due date is in the future | ++ |
chained
(now +
+ template.recur)
.
- Deleting or completing a rtype:chained
instance
- causes the next chained instance to be synthesized.
-
- This gives the illusion that the due date is simply pushed out
- to (now + template.recur)
.
-
@@ -372,7 +369,6 @@
mask
, imaѕk
Attributesparent
to template
chained
(now +
- template.recur)
.periodic
templatechained
template
+ Deleting/completing an instance should cause the next chained
+ instance to be synthesized, giving illusion that due date is
+ simply changed to (now + template.recur)
.
+
When adding a new chained template:
From a131943d158cea38152054806cd2adcca8a3cf4e Mon Sep 17 00:00:00 2001
From: Sam Pablo Kuper Proposal: New 'rtype' attribute
+
Y
Latest instance's due date + interval
- Send birthday flowers. (Must occur on a regular schedule, and doesn't matter if you were late last year.)
+ Pay your rent every month. (You may be late, but you can't just skip a month.)
From a5ebc83b6f6500c404219d8a3e3c151d164bf407 Mon Sep 17 00:00:00 2001
From: Sam Pablo Kuper chained
Proposal: New 'rtype' attribute
.+
N
Latest instance's done date + interval
- Mow the lawn. (If you mow two days late, the next instance is not two days early to compensate.)
+ Ring your mother daily. (If you delay or skip, you don't ring her twice the next day to compensate.)
From 9baf62e1224be42acc63a41fd3c8f83139fcb442 Mon Sep 17 00:00:00 2001
From: Sam Pablo Kuper N/A
++
N
Latest instance's due date + n x interval, where n is an integer that is incremented until the next task's due date is in the future
-
+ Ring your aunt every Sunday. (If you delay or skip, you don't ring twice next time to compensate, but you should thereafter resume the routine.)
Proposal: New 'rtype' attribute
Ring your mother daily. (If you delay or skip, you don't ring her twice the next day to compensate.)
- N/A
+ snapping
++
N
Latest instance's due date + n x interval, where n is an integer that is incremented until the next task's due date is in the future