jimjambimbam494 downloadsGenerate time stamps automatically as changes are made to a note.
Track changes to your notes within your Obsidian Vault as you type. When the content of a note changes within a vault, a new time stamp is generated or an original time stamp is edited, depending on the settings. This log is then added to a note's YAML property.
Example of the 'last-modified' property seen in Obsidian.
All time stamps are formatted according to the ISO 8601 standard format YYYY-MM-DDTHH:mm:ss where:
Example of the 'last-modified' property being updated in a note when the Log Keeper plugin is enabled.
Combine Note Modification Tracker with other plugins such as Dataview and Contribution Graph to create a contribution graph like in Github.

The snippet of javascript code can display a contribution graph from all the notes that contain a 'last-modified' property. Note: To make it work, remember to replace 'js' with 'dataviewjs' at the start of the code block.
```js
// code goes here...
```
Becomes:
```dataviewjs
// code goes here...
```
const currentYear = new Date().getFullYear()
const from = currentYear + '-01-01'
const to = currentYear + '-12-31'
let data = []
let dates = []
// Must collect all the files that have data on file modification
let pages = dv.pages()
.where(p => p["last-modified"])
// Grab all the dates, even duplicates, and push to an array.
for (let i = 0; i < pages.length; i++) {
let page = pages[i]
for (let j = 0; j < page["last-modified"].length; j++) {
dates.push(page["last-modified"][j])
}
}
// Reduce the array down to a key value pairs.
// Key is the date with the time component removed and,
// value is the number of times the key appears in the array.
let dateCount = dates.reduce((acc, date) => {
let dateKey = date.toString().split("T")[0]
acc[dateKey] = (acc[dateKey] || 0) + 1
return acc
}, {})
// We manipulate the key value pairs so that they
data = Object.keys(dateCount).map(key =>
({
date: key,
value: dateCount[key]
}))
const calendarData = {
title: "Contribution Graph Example", // graph title
data: data, // data
fromDate: from, // from date, yyyy-MM-dd
toDate: to // to date, yyyy-MM-dd
}
renderContributionGraph(this.container, calendarData)
Feel free to contribute to this plugin however you want. Bug reports, bug fixes and feature requests are always welcome.
Listed in level of priority: