Feature Request/Inquiry: Calendar/Date View for All org-roam nodes

Hello everyone,

I love using org-roam, but I was wondering if there’s a way—or if it’s possible as a feature request—to implement a view similar to the calendar/date view found in apps like MacJournal.

Currently, I know I can view Daily Notes using org-roam-dailies. However, I’m often looking for a way to see all nodes (not just daily notes) organized by the date they were created or last modified.

It would be useful for me to have a calendar or chronological view to quickly check which notes of any type (not just those created with org-roam-daily-node) I’ve added or edited recently.

Has anyone managed to set up a view like this, or is this something that could be considered for a future update?

Thank you for your help!

trivial to implement yourself IF you create one node per file - otherwise not possible with the available information in the database - we would have to use a custom property and a parser tuned to read that and sort it.

As @akashp stated, org-roam does not record when a node is created.

It only records the creation time and modification time (according to the operating system) of the file that contains the node. Every time a file is modified, all nodes inside it get deleted, and they are inserted again (that is why saving huge org files using org-roam is slow).

This is something that bothered me, so I created a hook to add the creation time as a property for every headline (called created). I also extended the DB to store every headline in my notes, but that is a different story :slight_smile:

This lists the last 20 modified files:

 #+begin_src emacs-lisp   :exports both
 (defun my/org-roam-insert-latest-nodes-table (&optional limit)
   "Insert an Org table listing the last LIMIT Org-roam nodes (default 20)."
   (interactive "P")
   (let* ((limit (or limit 20))
          (nodes (org-roam-db-query
                  [:select [title file mtime]
                           :from files
                           :order-by (desc mtime)
                           :limit $s1]
                  limit)))
     (if (null nodes)
         (message "No Org-roam nodes found.")
       (insert "| Title | Modified |\n")
       (insert "|-|\n")
       (dolist (node nodes)
         (let* ((title (car node))
                (file (cadr node))
                (mtime (caddr node))
                (formatted-date (format-time-string "%Y-%m-%d %H:%M"
                                                    (seconds-to-time mtime)))
                (link (format "[[file:%s][%s]]" file (if (> (length title) 0) title file))))
           (insert (format "| %s | %s |\n" link formatted-date))))
       (org-table-align))))
 #+end_src
1 Like