Configurable Display of Overdue Tasks in Daily Journal

Dear Logseq Team and Community,

I am writing to propose a new feature for Logseq that I believe could significantly enhance the task management experience within the application. The feature in question is the ability to toggle the display of overdue tasks in the Daily Journal view.

Feature Description

The proposed feature would allow users to choose whether or not they want to see their overdue tasks displayed in their Daily Journal in a similar fashion of how the “SCHEDULED AND DEADLINE” section displays the tasks due to the current day and beyond. This could be implemented as a simple toggle in the settings, giving users the flexibility to switch the display of overdue tasks on or off based on their personal preference or workflow needs.

Benefits

  1. Enhanced Visibility and Accountability: For many users, keeping overdue tasks visible is crucial for maintaining accountability. It ensures that such tasks do not fall through the cracks, especially in busy schedules.

  2. Customizable Workflow: Different users have different task management styles. This feature would cater to a wider audience by allowing them to customize their workflow according to their individual preferences.

  3. Encourages Regular Review and Reprioritization: The visibility of overdue tasks would prompt regular review and reprioritization, a key aspect of effective task management.

  4. Reduces Cognitive Load for Some Users: While some users find the display of overdue tasks overwhelming, others find it reduces cognitive load by providing a complete overview of all pending tasks, avoiding the need to keep a mental checklist or use additional tools to track these tasks.

  5. Improves Task Management Efficiency: By providing an option to display overdue tasks in the Daily Journal, users can more efficiently manage their tasks without needing to manually search for or remember overdue items. This streamlined view can lead to quicker decision-making and action-taking on pending tasks, ultimately enhancing productivity.

Implementation Considerations

To ensure minimal disruption to current users, this feature could be set to the default behavior (i.e., not showing overdue tasks) when first rolled out. Users seeking to change this can then opt in via settings.

In conclusion, the ability to toggle the display of overdue tasks in the Daily Journal would be a valuable addition to Logseq, offering enhanced flexibility and adaptability to users’ varying needs. It would cater to those who thrive on having a comprehensive overview of all tasks, overdue or current, while still allowing others to maintain a focus on present and future tasks only.

Thank you for considering this feature request. I believe it aligns well with Logseq’s ethos of being a highly adaptable and user-centric tool for knowledge management and task tracking.

Best regards,

How is this different from the default queries that are provided in the Config.edn which users can customize to fit their needs?

Hello @Siferiax , I don’t know about this Config.edn, sorry. I’ll take a look at it.

Could you tell me what to look for in this file to achieve what I’m suggesting in this topic?

In the file you should find:

;; The following queries will be displayed at the bottom of today's journal page.
 ;; The "NOW" query returns tasks with "NOW" or "DOING" status.
 ;; The "NEXT" query returns tasks with "NOW", "LATER", or "TODO" status.
 :default-queries

Followed by queries. There are two added standard NOW and NEXT.
There’s been a lot of debate over the NEXT query.
I have a pending pull request to improve it.
As needed you can just replace the NEXT query in your config with mine to make it work more universally.
Hopefully one day it’ll be accepted :sweat_smile:

My pull request link isn’t very helpful I saw.
So here’s the full part for the config.edn.

;; The following queries will be displayed at the bottom of today's journal page.
 ;; The "NOW" query returns tasks with "NOW" or "DOING" status between 14 days before today and today.
 ;; The "NEXT" query returns tasks with "NOW", "LATER", or "TODO" status between today and 7 days after today.
 ;; For both queries tasks are returned when the task either:
 ;;  - is on a journal page within range, 
 ;;  - is referencing a journal page within range, 
 ;;  - is scheduled on a day within range or 
 ;;  - has a deadline of a day within range.
 :default-queries
 {:journals
  [
   {:title "🔨 NOW"
    :query [:find (pull ?h [*]) ; get full block results
            :in $ ?start ?today ; variables made from the values in :inputs to use in the query.
            :where
            [?h :block/marker ?marker] ; tasks are identified by having a marker like TODO
            [(contains? #{"NOW" "DOING"} ?marker)] ; specify which marker to include.
            (or
              [?h :block/page ?p] ; either the task is on a (journal) page
              [?h :block/refs ?p] ; or references a (journal) page
            )
			; A task will always be on a page (like all blocks) as well as reference a page (namely the default marker page i.e. TODO etc.)
            (or 
              [?p :block/journal-day ?d] ; the page is a journal page with date ?d
              [?h :block/scheduled ?d] ; or the task is scheduled for date ?d
              [?h :block/deadline ?d] ; or the task has a deadline for date ?d
            )
            [(>= ?d ?start)] ; the date is bigger than or equal to ?start i.e. 14 days before today
            [(<= ?d ?today)]] ; the date is smaller than or equal to ?next i.e. today.
    :inputs [:-14d :today] ; dynamic input to define start and next. In this case -14 days from today and today.
    :result-transform (fn [result] ; change the result of the query with using some clojure function, in this case a sort-by.
                        (sort-by (fn [h]
                                   (get h :block/priority "Z")) result))
    :group-by-page? false ; don't group the blocks by page (change to true to group)
    :breadcrumb-show? true ; do show the parent block hierarchy of the block (change to false to hide it)
    :collapsed? false} ; don't collapse the query to title only. Change to true to collapse the query.
   {:title "📅 NEXT"
    :query [:find (pull ?h [*]) ; get full block results
            :in $ ?start ?next ; variables made from the values in :inputs to use in the query.
            :where
            [?h :block/marker ?marker] ; tasks are identified by having a marker like TODO
            [(contains? #{"NOW" "LATER" "TODO"} ?marker)] ; specify which marker to include.
            (or
              [?h :block/page ?p] ; either the task is on a (journal) page
              [?h :block/refs ?p] ; or references a (journal) page
            )
            ; A task will always be on a page (like all blocks) as well as reference a page (namely the default marker page i.e. TODO etc.)
            (or 
              [?p :block/journal-day ?d] ; the page is a journal page with date ?d
              [?h :block/scheduled ?d] ; or the task is scheduled for date ?d
              [?h :block/deadline ?d] ; or the task has a deadline for date ?d
            )
            [(> ?d ?start)] ; the date is bigger than ?start i.e. today
            [(< ?d ?next)]] ; the date is smaller than ?next i.e. 7 days after today.
    :inputs [:today :+7d] ; dynamic input to define start and next. In this case today and +7 days from today.
    :group-by-page? false ; don't group the blocks by page (change to true to group)
    :breadcrumb-show? true ; do show the parent block hierarchy of the block (change to false to hide it)
    :collapsed? false} ; don't collapse the query to title only. Change to true to collapse the query.
  ]
 }