logseq / logseq

A privacy-first, open-source platform for knowledge management and collaboration. Download link: http://github.com/logseq/logseq/releases. roadmap: http://trello.com/b/8txSM12G/roadmap
https://logseq.com
GNU Affero General Public License v3.0
30.07k stars 1.76k forks source link

Repeat tasks don't repeat as documented #11260

Open Siferiax opened 3 weeks ago

Siferiax commented 3 weeks ago

Search first

What Happened?

When I saw some strange behavior for repeating tasks, I started to check and found the settings don't work as documented. Documentation: You can change the repeater kind to: .+: It'll repeat from the last time you marked the block done. ++: It'll keep it on the same day of the week. +: It'll repeat in X y/m/w/d/h from when you originally scheduled it.

Reality: .+: only works this way when it repeats every day.

Test scenario 1

Repeat every year from when marked done. Input:

- TODO Repeat every year from when marked done.
  SCHEDULED: <2024-04-14 Sun .+1y>

Expected: 2025-04-24 Thu Actual output:

- TODO Repeat every year from when marked done.
  SCHEDULED: <2025-04-14 Mon .+1y>  
:logbook:
  * State "DONE" from "TODO" [2024-04-24 Wed 08:03]
:END:

Result: FAIL

Test scenario 2

Repeat every month from when marked done. Input:

- TODO Repeat every month from when marked done.
  SCHEDULED: <2024-04-14 Sun .+1m>

Expected: 2024-05-24 Fri Actual output:

- TODO Repeat every month from when marked done.
  SCHEDULED: <2024-05-14 Tue .+1m>  
:logbook:
  * State "DONE" from "TODO" [2024-04-24 Wed 08:07]
:END:

Result: FAIL

Test scenario 3

Repeat every week from when marked done. Input:

- TODO Repeat every week from when marked done.
  SCHEDULED: <2024-04-14 Sun .+1w>

Expected: 2024-05-01 Wed Actual output:

- TODO Repeat every week from when marked done.
  SCHEDULED: <2024-04-28 Sun .+1w>  
:logbook:
  * State "DONE" from "TODO" [2024-04-24 Wed 08:10]
:END:

Result: FAIL

Test scenario 4

Repeat every 7 days from when marked done. Input:

- TODO Repeat every 7 days from when marked done.
  SCHEDULED: <2024-04-14 Sun .+7d>

Expected: 2024-05-01 Wed Actual output:

- TODO Repeat every 7 days from when marked done.
  SCHEDULED: <2024-04-28 Sun .+7d>  
:logbook:
  * State "DONE" from "TODO" [2024-04-24 Wed 08:12]
:END:

Result: FAIL

Test scenario 5

Repeat every 6 days from when marked done. Input:

- TODO Repeat every 6 days from when marked done.
  SCHEDULED: <2024-04-14 Sun .+6d>

Expected: 2024-04-30 Tue Actual output:

- TODO Repeat every 6 days from when marked done.
  SCHEDULED: <2024-04-26 Fri .+6d>  
:logbook:
  * State "DONE" from "TODO" [2024-04-24 Wed 08:13]
:END:

Result: FAIL

Test scenario 6

Repeat every 8 days from when marked done. Input:

- TODO Repeat every 8 days from when marked done.
  SCHEDULED: <2024-04-14 Sun .+8d>

Expected: 2024-05-02 Thu Actual output:

- TODO Repeat every 8 days from when marked done.
  SCHEDULED: <2024-04-30 Tue .+8d>  
:logbook:
  * State "DONE" from "TODO" [2024-04-24 Wed 08:15]
:END:

Result: FAIL

Test scenario 7

Repeat every day from when marked done. Input:

- TODO Repeat every day from when marked done.
  SCHEDULED: <2024-04-14 Sun .+1d>

Expected: 2024-04-25 Thu Actual output:

- TODO Repeat every day from when marked done.
  SCHEDULED: <2024-04-25 Thu .1d>  
:logbook:
  * State "DONE" from "TODO" [2024-04-24 Wed 08:18]
:END:

Result: PASS

Extra results for 1 to 9 days from when marked done: IMG_0519

This shows some really weird behavior.

Reproduce the Bug

See above for detailed tests scenario + results.

Expected Behavior

No response

Screenshots

No response

Desktop or Mobile Platform Information

Logseq version: 0.10.8 on iPad.

Additional Context

No response

Are you willing to submit a PR? If you know how to fix the bug.

Doorknob2261 commented 3 weeks ago

Neither .+ and ++ repeaters are working as expected. The current .+ logic should be reassigned to ++.

.+ open issue #5645. Was marked as enhancement. Expected: repeat from the last time you marked the block done i.e., today+interval. Actual: repeat from last due and skip ahead until new the date is in the future. This is what ++ should do, as per the Orgmode convention.

++ Expected: Unclear. The documentation states " ++: It'll keep it on the same day of the week". However, this isn't exclusive of one repeater type. This is more of a factor of the repeater interval (weeks), rather. The only repeater that doesn't afford consistent day of the week by design is the repeat from the last time you marked the block done (today+interval) i.e., what .+ should be doing.

Actual: repeat from last due. This is what + does currently but here with ++ it slightly different: it doesn't update the due date when completed early. It does write an entry to the logbook. This issue was reported in the past open issue #7731 and #1909. Issue aside, none of this is the expected behavior of ++ anyway.