{"id":13750485,"url":"https://github.com/tefkah/org-roam-timestamps","last_synced_at":"2025-03-16T22:31:00.900Z","repository":{"id":44660401,"uuid":"411758507","full_name":"tefkah/org-roam-timestamps","owner":"tefkah","description":"Add modified and creation timestamps to the org-roam property drawer","archived":false,"fork":false,"pushed_at":"2023-02-09T03:32:57.000Z","size":190,"stargazers_count":78,"open_issues_count":8,"forks_count":10,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-16T06:11:30.629Z","etag":null,"topics":["emacs","org-roam","org-roam-ui","zettelkasten"],"latest_commit_sha":null,"homepage":"","language":"Emacs Lisp","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tefkah.png","metadata":{"files":{"readme":"README.org","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2021-09-29T16:56:23.000Z","updated_at":"2025-03-15T10:07:02.000Z","dependencies_parsed_at":"2024-01-14T03:50:17.115Z","dependency_job_id":"e26110ec-ff63-4b86-994f-c9b618f1c1b5","html_url":"https://github.com/tefkah/org-roam-timestamps","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tefkah%2Forg-roam-timestamps","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tefkah%2Forg-roam-timestamps/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tefkah%2Forg-roam-timestamps/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tefkah%2Forg-roam-timestamps/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tefkah","download_url":"https://codeload.github.com/tefkah/org-roam-timestamps/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243944535,"owners_count":20372828,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["emacs","org-roam","org-roam-ui","zettelkasten"],"created_at":"2024-08-03T08:00:36.647Z","updated_at":"2025-03-16T22:31:00.571Z","avatar_url":"https://github.com/tefkah.png","language":"Emacs Lisp","funding_links":[],"categories":["Tools"],"sub_categories":[],"readme":"[[https://melpa.org/#/org-roam-timestamps][file:https://melpa.org/packages/org-roam-timestamps-badge.svg]]\n\n* org-roam-timestamps\n\n[[./pic.png]]\n\nSmall package to keep track of the modification and creation time of individual nodes.\n\nI created this to use mtime data in [[https://github.com/org-roam/org-roam-ui][org-roam-ui]], and it is highly recommended you use this package if you are using org-roam-ui to get the most out of that.\n\nOffers two pieces of functionality:\n1. Add creation and modification properties to all nodes.\n2. Keep the mtime property of a node updated.\n\n* How to use\n\nMost basic use case:\n\n1. Run `org-roam-timestamps-all`. This will add ctime and mtime properties to all the property drawers of your notes. This might take a while. It will make backups of your notes and org-roam-db in case anything goes wrong, but back them up yourself as well!\n2. Keep `org-roam-timestamps-mode` running while you do your org-roam-business.\n\n\n* Installation\n\norg-roam-timestamps is on MELPA!\n\n** Doom emacs\n\n#+begin_src emacs-lisp :tangle yes\n;;packages.el\n(package! org-roam-timestamps)\n#+end_src\n\n#+begin_src emacs-lisp :tangle yes\n(use-package! org-roam-timestamps\n  :after org-roam\n  :config (org-roam-timestamps-mode))\n#+end_src\n\n** package.el\n\n#+begin_src emacs-lisp \nM-x package-install org-roam-timestamps\n#+end_src\n\n* Customizations\n\nOrg-roam-timestamps exposes three variables for customization\n\n** Parent file\n#+begin_src emacs-lisp\n(setq org-roam-timestamps-parent-file t)\n#+end_src\n\nThis will also update the parent file when you update a subnote.\n\n** Remember timestamps\n\n#+begin_src emacs-lisp :tangle yes\n(setq org-roam-timestamps-remember-timestamps t)\n#+end_src\n\nThis will remember previous mtimes and add the new timestamp to the front of the list rather than replace the old one. This will allow us to create git-like time-tracker-views in org-roam-ui, showing you when you modified which files.\n\nIt will however clog up your properties drawer a lot more and of course increase file size.\nIf you previously had this turned on but want to remove it for all files, run =org-roam-timestamps-clean-mtimes=.\n\n** Min gap\n#+begin_src emacs-lisp :tangle yes\n(setq org-roam-timestamps-minimum-gap 3600)\n#+end_src\n\nMinimum time in seconds between two timestamps. Defaults to an hour. Only does something if =org-roam-timestamps-remember-timestamps= is =t=\n\n* Caveats\n\nThis package is not working flawlessly yet.\n\n** Saving\n\nSince org-roam does not really store any data about the contents of the current node, I can't really check whether the current node has been changed at all. There are four ways to possibly get around this:\n\n*** Save copy of previous node\n\nThis would be the most accurate way to check whether the current node has been modified, by doing an actual comparison with the previous state. This would end up doubling the whole node though, which sucks.\n\n*** Git\n\nNext best option would be to compare the current state to the latest git state. This is kind of annoying though, and would rely on you keeping an accurate git repo of your notes. Since I personally am not that accurate with it, and I want this package to be useable without git (as org-roam(-ui) is), this is not an option.\n\n*** Size comparison\n\nBasic idea: store the previous size of the node in bytes in the property drawer.\n\nAdvantages:\n- Somewhat accurate\n\nDisadvantages:\n- Slower than the next option, as you need to check all nodes in the buffer.\n- Can't account for small updates (such as checking a list)\n- Yet more properties\n- Harder\n\n*** Just update the current node\n\nThis is what we use atm. We just update the node the cursor is on when you save. This is not the best way to do this by a long shot, but it's fast and easy.\n\nI might update this in the future (and of course contributions are very welcome).\n\n** Smaller problems\n\nThe smaller problems are\n- [ ] Flickering when org-roam-buffer is open\n- [ ] Slowish\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftefkah%2Forg-roam-timestamps","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftefkah%2Forg-roam-timestamps","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftefkah%2Forg-roam-timestamps/lists"}