good friday commit

main
iOS 2 years ago
parent fc1006f024
commit 44d78061da

@ -60,5 +60,6 @@
"obsidian-open-weather",
"obsidian-bulk-rename-plugin",
"msg-handler",
"obsidian-timelines"
"obsidian-timelines",
"cron"
]

@ -0,0 +1,25 @@
{
"cronInterval": 15,
"runOnStartup": true,
"enableMobile": true,
"watchObsidianSync": true,
"crons": [
{
"id": "601d1cc7-a4f3-4f19-aa9f-3bddd7ab6b1d",
"name": "Add daily note",
"job": "daily-notes",
"frequency": "0 7 * * *",
"settings": {
"enableMobile": true,
"disableSyncCheck": true
}
}
],
"locks": {
"601d1cc7-a4f3-4f19-aa9f-3bddd7ab6b1d": {
"locked": false,
"lockedDeviceName": "iPhone",
"lastRun": "2023-04-07T08:27:00+02:00"
}
}
}

File diff suppressed because it is too large Load Diff

@ -0,0 +1 @@
{"id":"cron","name":"Cron","version":"1.1.0","minAppVersion":"0.15.0","description":"Simple CRON / schedular plugin to regularly run user scripts or Obsidian commands.","author":"Callum Loh","authorUrl":"https://github.com/cdloh","isDesktopOnly":false}

@ -0,0 +1,17 @@
/*
This CSS file will be included with your plugin, and
available in the app when your plugin is enabled.
If your plugin does not need CSS, delete this file.
*/
.cron-plugin-text-input {
width: 10vw;
min-width: 180px;
}
.cron-plugin-job {
flex-wrap: wrap;
}

@ -4,10 +4,11 @@
"historyPriority": true,
"historyLimit": 100,
"history": [
":racehorse:",
":book:",
":tv:",
":plate_with_cutlery:",
":train2:",
":racehorse:",
":book:",
":fork_and_knife:",
":broken_heart:",
":warning:",
@ -27,7 +28,6 @@
":racing_car:",
":hotel:",
":classical_building:",
":train2:",
":ski:",
":small_airplane:",
":bar_chart:",

@ -12,8 +12,8 @@
"checkpointList": [
{
"path": "/",
"date": "2023-04-03",
"size": 14281676
"date": "2023-04-07",
"size": 14348477
}
],
"activityHistory": [
@ -1814,7 +1814,23 @@
},
{
"date": "2023-04-03",
"value": 1289
"value": 62683
},
{
"date": "2023-04-04",
"value": 1303
},
{
"date": "2023-04-05",
"value": 1372
},
{
"date": "2023-04-06",
"value": 5993
},
{
"date": "2023-04-07",
"value": 1321
}
]
}

@ -490,7 +490,7 @@
"links": 4
},
"05.01 Computer setup/Storage and Syncing.md": {
"size": 6682,
"size": 4892,
"tags": 4,
"links": 13
},
@ -910,7 +910,7 @@
"links": 5
},
"04.01 lebv.org/Hosting Tasks.md": {
"size": 2400,
"size": 2793,
"tags": 4,
"links": 8
},
@ -1575,7 +1575,7 @@
"links": 1
},
"01.02 Home/Household.md": {
"size": 4513,
"size": 5038,
"tags": 2,
"links": 2
},
@ -9082,7 +9082,7 @@
"00.03 News/How Michael Cohens Big Mouth Could Be Derailing the Trump Prosecution.md": {
"size": 12951,
"tags": 4,
"links": 1
"links": 2
},
"00.01 Admin/Calendars/2023-03-29.md": {
"size": 1412,
@ -9117,9 +9117,54 @@
"00.01 Admin/Calendars/2023-04-02.md": {
"size": 1412,
"tags": 0,
"links": 4
"links": 6
},
"00.01 Admin/Calendars/2023-04-03.md": {
"size": 1412,
"tags": 0,
"links": 5
},
"03.04 Cinematheque/Thank You for Smoking (2005).md": {
"size": 2031,
"tags": 0,
"links": 1
},
"00.03 News/We want objective judges and doctors. Why not journalists too.md": {
"size": 21046,
"tags": 2,
"links": 1
},
"00.03 News/The Unimaginable Horror of Evan Gershkovichs Arrest in Moscow.md": {
"size": 8932,
"tags": 4,
"links": 1
},
"00.03 News/The Big Coin Heist.md": {
"size": 28914,
"tags": 3,
"links": 1
},
"00.01 Admin/Calendars/2023-04-04.md": {
"size": 1412,
"tags": 0,
"links": 7
},
"00.01 Admin/Calendars/2023-04-05.md": {
"size": 1412,
"tags": 0,
"links": 4
},
"00.01 Admin/Calendars/2023-04-06.md": {
"size": 1412,
"tags": 0,
"links": 5
},
"03.04 Cinematheque/The Guard (2011).md": {
"size": 2033,
"tags": 0,
"links": 1
},
"00.01 Admin/Calendars/2023-04-07.md": {
"size": 1412,
"tags": 0,
"links": 4
@ -9127,10 +9172,10 @@
},
"commitTypes": {
"/": {
"Refactor": 2767,
"Create": 1630,
"Link": 3944,
"Expand": 1586
"Refactor": 2775,
"Create": 1640,
"Link": 3961,
"Expand": 1588
}
},
"dailyCommits": {
@ -9142,32 +9187,32 @@
"4": 17,
"5": 13,
"6": 64,
"7": 617,
"8": 824,
"9": 693,
"7": 623,
"8": 826,
"9": 694,
"10": 519,
"11": 403,
"11": 404,
"12": 379,
"13": 420,
"13": 421,
"14": 414,
"15": 417,
"16": 532,
"15": 418,
"16": 535,
"17": 565,
"18": 760,
"19": 482,
"20": 445,
"21": 449,
"22": 439,
"20": 447,
"21": 453,
"22": 455,
"23": 1231
}
},
"weeklyCommits": {
"/": {
"Mon": 2263,
"Tue": 1268,
"Wed": 1277,
"Thu": 853,
"Fri": 930,
"Mon": 2282,
"Tue": 1272,
"Wed": 1280,
"Thu": 862,
"Fri": 932,
"Sat": 0,
"Sun": 3336
}
@ -9175,6 +9220,8 @@
"recentCommits": {
"/": {
"Expanded": [
"<a class=\"internal-link\" href=\"04.01 lebv.org/Hosting Tasks.md\"> Hosting Tasks </a>",
"<a class=\"internal-link\" href=\"01.02 Home/Household.md\"> Household </a>",
"<a class=\"internal-link\" href=\"03.02 Travels/Mallorca.md\"> Mallorca </a>",
"<a class=\"internal-link\" href=\"03.02 Travels/@@Travels.md\"> @@Travels </a>",
"<a class=\"internal-link\" href=\"05.02 Networks/Server Alias.md\"> Server Alias </a>",
@ -9223,11 +9270,19 @@
"<a class=\"internal-link\" href=\"00.02 Inbox/Checkup.md\"> Checkup </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Templates/Template Timeline.md\"> Template Timeline </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Checkup.md\"> Checkup </a>",
"<a class=\"internal-link\" href=\"01.02 Home/Health.md\"> Health </a>",
"<a class=\"internal-link\" href=\"02.03 Zürich/Dr Awad Abuawad.md\"> Dr Awad Abuawad </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/The Power And The Glory.md\"> The Power And The Glory </a>"
"<a class=\"internal-link\" href=\"01.02 Home/Health.md\"> Health </a>"
],
"Created": [
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2023-04-07.md\"> 2023-04-07 </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/The Guard (2011).md\"> The Guard (2011) </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2023-04-06.md\"> 2023-04-06 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2023-04-05.md\"> 2023-04-05 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2023-04-04.md\"> 2023-04-04 </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/The Big Coin Heist Hazlitt.md\"> The Big Coin Heist Hazlitt </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/The Unimaginable Horror of Evan Gershkovichs Arrest in Moscow.md\"> The Unimaginable Horror of Evan Gershkovichs Arrest in Moscow </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/We want objective judges and doctors. Why not journalists too.md\"> We want objective judges and doctors. Why not journalists too </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Why are Americans dying so young.md\"> Why are Americans dying so young </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Thank You for Smoking (2005).md\"> Thank You for Smoking (2005) </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2023-04-03.md\"> 2023-04-03 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2023-04-02.md\"> 2023-04-02 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2023-04-01.md\"> 2023-04-01 </a>",
@ -9268,19 +9323,15 @@
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2023-03-19.md\"> 2023-03-19 </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Untitled.md\"> Untitled </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Striking French workers dispute that they want a right to laziness.md\"> Striking French workers dispute that they want a right to laziness </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Les Combrailles, à la découverte de lAuvergne secrète.md\"> Les Combrailles, à la découverte de lAuvergne secrète </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2023-03-18.md\"> 2023-03-18 </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Law Roach on Why He Retired From Celebrity Fashion Styling.md\"> Law Roach on Why He Retired From Celebrity Fashion Styling </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Is Fox News Really Doomed.md\"> Is Fox News Really Doomed </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Untitled.md\"> Untitled </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Untitled.md\"> Untitled </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Untitled.md\"> Untitled </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/The Camp of the Saints - 2017.md\"> The Camp of the Saints - 2017 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2023-03-17.md\"> 2023-03-17 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2023-03-16.md\"> 2023-03-16 </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Korean Barbecue-Style Meatballs Recipe.md\"> Korean Barbecue-Style Meatballs Recipe </a>"
"<a class=\"internal-link\" href=\"00.02 Inbox/Les Combrailles, à la découverte de lAuvergne secrète.md\"> Les Combrailles, à la découverte de lAuvergne secrète </a>"
],
"Renamed": [
"<a class=\"internal-link\" href=\"03.04 Cinematheque/The Guard (2011).md\"> The Guard (2011) </a>",
"<a class=\"internal-link\" href=\"00.03 News/The Big Coin Heist.md\"> The Big Coin Heist </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/The Big Coin Heist.md\"> The Big Coin Heist </a>",
"<a class=\"internal-link\" href=\"00.03 News/The Unimaginable Horror of Evan Gershkovichs Arrest in Moscow.md\"> The Unimaginable Horror of Evan Gershkovichs Arrest in Moscow </a>",
"<a class=\"internal-link\" href=\"00.03 News/We want objective judges and doctors. Why not journalists too.md\"> We want objective judges and doctors. Why not journalists too </a>",
"<a class=\"internal-link\" href=\"03.04 Cinematheque/Thank You for Smoking (2005).md\"> Thank You for Smoking (2005) </a>",
"<a class=\"internal-link\" href=\"03.01 Reading list/The Fran Lebowitz Reader.md\"> The Fran Lebowitz Reader </a>",
"<a class=\"internal-link\" href=\"03.01 Reading list/Au Revoir Là-Haut.md\"> Au Revoir Là-Haut </a>",
"<a class=\"internal-link\" href=\"00.03 News/How Michael Cohens Big Mouth Could Be Derailing the Trump Prosecution.md\"> How Michael Cohens Big Mouth Could Be Derailing the Trump Prosecution </a>",
@ -9325,15 +9376,12 @@
"<a class=\"internal-link\" href=\"03.04 Cinematheque/John Wick - Chapter 2 (2017).md\"> John Wick - Chapter 2 (2017) </a>",
"<a class=\"internal-link\" href=\"00.03 News/Bull elephants their importance as individuals in elephant societies - Africa Geographic.md\"> Bull elephants their importance as individuals in elephant societies - Africa Geographic </a>",
"<a class=\"internal-link\" href=\"00.03 News/The Silicon Valley Bank Contagion Is Just Beginning.md\"> The Silicon Valley Bank Contagion Is Just Beginning </a>",
"<a class=\"internal-link\" href=\"03.04 Cinematheque/John Wick (2014).md\"> John Wick (2014) </a>",
"<a class=\"internal-link\" href=\"00.03 News/An Icelandic Town Goes All Out to Save Baby Puffins.md\"> An Icelandic Town Goes All Out to Save Baby Puffins </a>",
"<a class=\"internal-link\" href=\"00.03 News/The Untold Story Of Notorious Influencer Andrew Tate.md\"> The Untold Story Of Notorious Influencer Andrew Tate </a>",
"<a class=\"internal-link\" href=\"00.03 News/How a civil war erupted at Fox News after the 2020 election.md\"> How a civil war erupted at Fox News after the 2020 election </a>",
"<a class=\"internal-link\" href=\"00.03 News/Mel Brooks Isnt Done Punching Up the History of the World.md\"> Mel Brooks Isnt Done Punching Up the History of the World </a>",
"<a class=\"internal-link\" href=\"02.03 Zürich/William's Butcherstable.md\"> William's Butcherstable </a>",
"<a class=\"internal-link\" href=\"00.03 News/The One Big Question Bernie Sanders Wont Answer.md\"> The One Big Question Bernie Sanders Wont Answer </a>"
"<a class=\"internal-link\" href=\"03.04 Cinematheque/John Wick (2014).md\"> John Wick (2014) </a>"
],
"Tagged": [
"<a class=\"internal-link\" href=\"00.03 News/The Big Coin Heist.md\"> The Big Coin Heist </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/The Unimaginable Horror of Evan Gershkovichs Arrest in Moscow.md\"> The Unimaginable Horror of Evan Gershkovichs Arrest in Moscow </a>",
"<a class=\"internal-link\" href=\"00.03 News/We want objective judges and doctors. Why not journalists too.md\"> We want objective judges and doctors. Why not journalists too </a>",
"<a class=\"internal-link\" href=\"00.03 News/How Michael Cohens Big Mouth Could Be Derailing the Trump Prosecution.md\"> How Michael Cohens Big Mouth Could Be Derailing the Trump Prosecution </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Gisele Bündchen on Tom Brady, FTX Blind Side, and Being a “Witch of Love”.md\"> Gisele Bündchen on Tom Brady, FTX Blind Side, and Being a “Witch of Love” </a>",
"<a class=\"internal-link\" href=\"00.03 News/Jaylen Brown Is Trying to Find a Balance.md\"> Jaylen Brown Is Trying to Find a Balance </a>",
@ -9381,12 +9429,10 @@
"<a class=\"internal-link\" href=\"01.06 Health/2021-06-29 COVID Vaccine 2.md\"> 2021-06-29 COVID Vaccine 2 </a>",
"<a class=\"internal-link\" href=\"01.06 Health/2021-12-22 Covid booster.md\"> 2021-12-22 Covid booster </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Portofino am See.md\"> Portofino am See </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/2023-02-24 Kidney inflammation.md\"> 2023-02-24 Kidney inflammation </a>",
"<a class=\"internal-link\" href=\"01.06 Health/2023-01-23 Checkup.md\"> 2023-01-23 Checkup </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Checkup.md\"> Checkup </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Templates/Template Timeline.md\"> Template Timeline </a>"
"<a class=\"internal-link\" href=\"00.02 Inbox/2023-02-24 Kidney inflammation.md\"> 2023-02-24 Kidney inflammation </a>"
],
"Refactored": [
"<a class=\"internal-link\" href=\"05.01 Computer setup/Storage and Syncing.md\"> Storage and Syncing </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Korean Barbecue-Style Meatballs Recipe.md\"> Korean Barbecue-Style Meatballs Recipe </a>",
"<a class=\"internal-link\" href=\"01.03 Family/Aglaé de Villeneuve.md\"> Aglaé de Villeneuve </a>",
"<a class=\"internal-link\" href=\"00.08 Bookmarks/Bookmarks - Mac applications.md\"> Bookmarks - Mac applications </a>",
@ -9436,10 +9482,10 @@
"<a class=\"internal-link\" href=\"03.02 Travels/@Short breaks.md\"> @Short breaks </a>",
"<a class=\"internal-link\" href=\"03.02 Travels/@Short breaks.md\"> @Short breaks </a>",
"<a class=\"internal-link\" href=\"01.02 Home/League Tables.md\"> League Tables </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-10-03 Meggi leaving to Belfast.md\"> 2022-10-03 Meggi leaving to Belfast </a>",
"<a class=\"internal-link\" href=\"01.02 Home/Zürich - Practical info.md\"> Zürich - Practical info </a>"
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-10-03 Meggi leaving to Belfast.md\"> 2022-10-03 Meggi leaving to Belfast </a>"
],
"Deleted": [
"<a class=\"internal-link\" href=\"00.02 Inbox/Why are Americans dying so young.md\"> Why are Americans dying so young </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/How Michael Cohens Big Mouth Could Be Derailing the Trump Prosecution.md\"> How Michael Cohens Big Mouth Could Be Derailing the Trump Prosecution </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Les Combrailles, à la découverte de lAuvergne secrète.md\"> Les Combrailles, à la découverte de lAuvergne secrète </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Untitled.md\"> Untitled </a>",
@ -9489,10 +9535,23 @@
"<a class=\"internal-link\" href=\"00.03 News/The Hole Gruesome Accounts of Russian Occupation Emerge From Ukrainian Nuclear Plant.md\"> The Hole Gruesome Accounts of Russian Occupation Emerge From Ukrainian Nuclear Plant </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-11-10 Dinner @ Swiss Re.md\"> 2022-11-10 Dinner @ Swiss Re </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/2022-11-06.md\"> 2022-11-06 </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Lemon Chicken Recipe (with Lemon Butter Sauce) - NatashasKitchen.com.md\"> Lemon Chicken Recipe (with Lemon Butter Sauce) - NatashasKitchen.com </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/aglaedevilleneuve@yahoo.fr.md\"> aglaedevilleneuve@yahoo.fr </a>"
"<a class=\"internal-link\" href=\"00.02 Inbox/Lemon Chicken Recipe (with Lemon Butter Sauce) - NatashasKitchen.com.md\"> Lemon Chicken Recipe (with Lemon Butter Sauce) - NatashasKitchen.com </a>"
],
"Linked": [
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2023-04-07.md\"> 2023-04-07 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2023-04-06.md\"> 2023-04-06 </a>",
"<a class=\"internal-link\" href=\"03.04 Cinematheque/The Guard (2011).md\"> The Guard (2011) </a>",
"<a class=\"internal-link\" href=\"00.03 News/How Michael Cohens Big Mouth Could Be Derailing the Trump Prosecution.md\"> How Michael Cohens Big Mouth Could Be Derailing the Trump Prosecution </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2023-04-06.md\"> 2023-04-06 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2023-04-05.md\"> 2023-04-05 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2023-04-04.md\"> 2023-04-04 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2023-04-04.md\"> 2023-04-04 </a>",
"<a class=\"internal-link\" href=\"00.03 News/The Big Coin Heist.md\"> The Big Coin Heist </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/The Unimaginable Horror of Evan Gershkovichs Arrest in Moscow.md\"> The Unimaginable Horror of Evan Gershkovichs Arrest in Moscow </a>",
"<a class=\"internal-link\" href=\"00.03 News/We want objective judges and doctors. Why not journalists too.md\"> We want objective judges and doctors. Why not journalists too </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2023-04-03.md\"> 2023-04-03 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2023-04-02.md\"> 2023-04-02 </a>",
"<a class=\"internal-link\" href=\"03.04 Cinematheque/Thank You for Smoking (2005).md\"> Thank You for Smoking (2005) </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2023-04-03.md\"> 2023-04-03 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2023-04-02.md\"> 2023-04-02 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2023-04-01.md\"> 2023-04-01 </a>",
@ -9529,21 +9588,7 @@
"<a class=\"internal-link\" href=\"00.02 Inbox/Zaalouk.md\"> Zaalouk </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2023-03-22.md\"> 2023-03-22 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2023-03-23.md\"> 2023-03-23 </a>",
"<a class=\"internal-link\" href=\"03.04 Cinematheque/Esterno notte (2022).md\"> Esterno notte (2022) </a>",
"<a class=\"internal-link\" href=\"00.03 News/Law Roach on Why He Retired From Celebrity Fashion Styling.md\"> Law Roach on Why He Retired From Celebrity Fashion Styling </a>",
"<a class=\"internal-link\" href=\"00.03 News/Why Joe Bidens Honeymoon With Progressives Is Coming to an End.md\"> Why Joe Bidens Honeymoon With Progressives Is Coming to an End </a>",
"<a class=\"internal-link\" href=\"00.03 News/The Purposeful Presence of Lance Reddick.md\"> The Purposeful Presence of Lance Reddick </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2023-03-23.md\"> 2023-03-23 </a>",
"<a class=\"internal-link\" href=\"03.04 Cinematheque/Batman Begins (2005).md\"> Batman Begins (2005) </a>",
"<a class=\"internal-link\" href=\"03.04 Cinematheque/Batman (1989).md\"> Batman (1989) </a>",
"<a class=\"internal-link\" href=\"03.04 Cinematheque/Batman Robin (1997).md\"> Batman Robin (1997) </a>",
"<a class=\"internal-link\" href=\"03.04 Cinematheque/The Dark Knight Rises (2012).md\"> The Dark Knight Rises (2012) </a>",
"<a class=\"internal-link\" href=\"03.04 Cinematheque/Batman Returns (1992).md\"> Batman Returns (1992) </a>",
"<a class=\"internal-link\" href=\"03.04 Cinematheque/The Dark Knight (2008).md\"> The Dark Knight (2008) </a>",
"<a class=\"internal-link\" href=\"03.04 Cinematheque/Batman Forever (1995).md\"> Batman Forever (1995) </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2023-03-22.md\"> 2023-03-22 </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/The Dark Knight Rises (2012).md\"> The Dark Knight Rises (2012) </a>",
"<a class=\"internal-link\" href=\"00.03 News/Are Helicopter Parents Actually Lazy.md\"> Are Helicopter Parents Actually Lazy </a>"
"<a class=\"internal-link\" href=\"03.04 Cinematheque/Esterno notte (2022).md\"> Esterno notte (2022) </a>"
],
"Removed Tags from": [
"<a class=\"internal-link\" href=\"00.03 News/Incredibly intelligent, highly elusive US faces new threat from Canadian super pig.md\"> Incredibly intelligent, highly elusive US faces new threat from Canadian super pig </a>",

@ -64674,9 +64674,9 @@ var EventCache = class {
console.debug("Last revalidation was too soon.");
return;
}
this.revalidating = true;
console.warn("Revalidating remote calendars...");
const remoteCalendars = [...this.calendars.values()].flatMap((c3) => c3 instanceof RemoteCalendar ? c3 : []);
console.warn("Revalidating remote calendars...");
this.revalidating = true;
const promises = remoteCalendars.map((calendar) => {
return calendar.revalidate().then(() => calendar.getEvents()).then((events) => {
const deletedEvents = [
@ -64707,7 +64707,7 @@ var EventCache = class {
Promise.allSettled(promises).then((results) => {
this.revalidating = false;
this.lastRevalidation = Date.now();
new import_obsidian9.Notice("All remote calendars have been fetched.");
console.debug("All remote calendars have been fetched.");
const errors = results.flatMap((result) => result.status === "rejected" ? result.reason : []);
if (errors.length > 0) {
new import_obsidian9.Notice("A remote calendar failed to load. Check the console for more details.");

@ -1,7 +1,7 @@
{
"id": "obsidian-full-calendar",
"name": "Full Calendar",
"version": "0.10.6",
"version": "0.10.7",
"minAppVersion": "0.16.3",
"description": "Obsidian integration with Full Calendar (fullcalendar.io)",
"author": "Davis Haupt",

@ -2,35 +2,30 @@
"scanned": true,
"reminders": {
"05.01 Computer setup/Storage and Syncing.md": [
{
"title": "Backup [[Storage and Syncing#Instructions for Anchor|Anchor Wallet]] %%done_del%%",
"time": "2023-04-06",
"rowNumber": 177
},
{
"title": ":cloud: [[Storage and Syncing|Storage & Sync]]: Backup Standard Notes (PC) %%done_del%%",
"time": "2023-04-07",
"rowNumber": 174
},
{
"title": ":floppy_disk: Backup [[Storage and Syncing#Instructions for FV|Folder Vault]] %%done_del%%",
"time": "2023-04-07",
"rowNumber": 183
},
{
"title": ":iphone: Backup [[Storage and Syncing#Instructions for iPhone|iPhone]] %%done_del%%",
"time": "2023-04-11",
"rowNumber": 180
"rowNumber": 175
},
{
"title": ":camera: [[Storage and Syncing|Storage & Sync]]: Transfer pictures to ED %%done_del%%",
"time": "2023-04-13",
"rowNumber": 190
"rowNumber": 179
},
{
"title": ":cloud: [[Storage and Syncing|Storage & Sync]]: Backup Volumes to [[Sync|Sync.com]] %%done_del%%",
"time": "2023-06-12",
"rowNumber": 186
"rowNumber": 178
},
{
"title": "Backup [[Storage and Syncing#Instructions for Anchor|Anchor Wallet]] %%done_del%%",
"time": "2023-07-06",
"rowNumber": 174
},
{
"title": ":floppy_disk: Backup [[Storage and Syncing#Instructions for FV|Folder Vault]] %%done_del%%",
"time": "2023-07-07",
"rowNumber": 176
}
],
"06.01 Finances/hLedger.md": [
@ -70,49 +65,49 @@
}
],
"05.02 Networks/Server Tools.md": [
{
"title": ":hammer_and_wrench: [[Server Tools]]: Backup server %%done_del%%",
"time": "2023-04-04",
"rowNumber": 576
},
{
"title": ":closed_lock_with_key: [[Selfhosting]], [[Server Tools|Tools]]: Upgrader Bitwarden & Health checks %%done_del%%",
"time": "2023-04-18",
"rowNumber": 588
"rowNumber": 589
},
{
"title": ":hammer_and_wrench: [[Selfhosting]], [[Server Tools|Tools]]: Upgrader Standard Notes & Health checks %%done_del%%",
"time": "2023-05-18",
"rowNumber": 593
"rowNumber": 594
},
{
"title": ":desktop_computer: [[Selfhosting]], [[Server Tools|Tools]]: Upgrader Gitea & Health checks %%done_del%%",
"time": "2023-06-18",
"rowNumber": 583
"rowNumber": 584
},
{
"title": ":hammer_and_wrench: [[Server Tools]]: Backup server %%done_del%%",
"time": "2023-10-03",
"rowNumber": 576
}
],
"05.02 Networks/Server VPN.md": [
{
"title": ":shield: [[Server VPN]]: Backup server %%done_del%%",
"time": "2023-04-04",
"rowNumber": 285
},
{
"title": ":shield: [[Selfhosting]], [[Server VPN|VPN]]: Check VPN state & dashboard %%done_del%%",
"time": "2023-06-18",
"rowNumber": 291
"rowNumber": 292
},
{
"title": ":shield: [[Server VPN]]: Backup server %%done_del%%",
"time": "2023-10-03",
"rowNumber": 285
}
],
"04.01 lebv.org/Hosting Tasks.md": [
{
"title": ":fleur_de_lis: [[Hosting Tasks|Hosting]]: [[Hosting Tasks#Backup procedure|backup]] the DB & Files %%done_del%%",
"time": "2023-04-05",
"time": "2023-07-05",
"rowNumber": 71
},
{
"title": ":fleur_de_lis: [[Hosting Tasks|Hosting]]: [[Hosting Tasks#PHP versioning|Check the php version]] of the website %%done_del%%",
"time": "2023-04-05",
"rowNumber": 72
"time": "2023-07-05",
"rowNumber": 73
},
{
"title": ":fleur_de_lis: [[Hosting Tasks|Hosting]]: Explore the possibility of webhosting through [[Hosting Tasks#Decentralised hosting|decentralised services]] (Blockchain)",
@ -356,35 +351,35 @@
}
],
"01.02 Home/Household.md": [
{
"title": ":bed: [[Household]] Change bedsheets %%done_del%%",
"time": "2023-04-01",
"rowNumber": 106
},
{
"title": "🛎 🧻 REMINDER [[Household]]: check need for toilet paper %%done_del%%",
"time": "2023-04-03",
"rowNumber": 97
},
{
"title": "♻ [[Household]]: *Cardboard* recycling collection %%done_del%%",
"time": "2023-04-04",
"rowNumber": 81
"time": "2023-04-10",
"rowNumber": 98
},
{
"title": "♻ [[Household]]: *Paper* recycling collection %%done_del%%",
"time": "2023-04-11",
"rowNumber": 75
},
{
"title": ":bed: [[Household]] Change bedsheets %%done_del%%",
"time": "2023-04-15",
"rowNumber": 108
},
{
"title": "♻ [[Household]]: *Cardboard* recycling collection %%done_del%%",
"time": "2023-04-18",
"rowNumber": 81
},
{
"title": "🛎 🛍 REMINDER [[Household]]: Monthly shop in France %%done_del%%",
"time": "2023-04-29",
"rowNumber": 94
"rowNumber": 95
},
{
"title": "🛎️ :house: [[Household]]: Pay rent %%done_del%%",
"time": "2023-04-30",
"rowNumber": 91
"rowNumber": 92
},
{
"title": ":couch_and_lamp: [[Household]]: Replace the sofa",
@ -458,27 +453,27 @@
}
],
"06.02 Investments/Crypto Tasks.md": [
{
"title": ":ballot_box: [[Crypto Tasks]]: Vote for [[EOS]] block producers %%done_del%%",
"time": "2023-04-04",
"rowNumber": 72
},
{
"title": ":chart: Check [[Nimbus]] earnings %%done_del%%",
"time": "2023-04-10",
"rowNumber": 76
"rowNumber": 77
},
{
"title": ":ballot_box: [[Crypto Tasks]]: Vote for [[EOS]] block producers %%done_del%%",
"time": "2023-05-02",
"rowNumber": 72
}
],
"05.02 Networks/Configuring UFW.md": [
{
"title": "🖥 [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix %%done_del%%",
"time": "2023-04-01",
"time": "2023-04-08",
"rowNumber": 239
},
{
"title": "🖥 [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list %%done_del%%",
"time": "2023-04-01",
"rowNumber": 248
"time": "2023-04-08",
"rowNumber": 249
}
],
"01.03 Family/Amélie Solanet.md": [

File diff suppressed because one or more lines are too long

@ -1,7 +1,7 @@
{
"id": "obsidian-tasks-plugin",
"name": "Tasks",
"version": "2.0.1",
"version": "3.0.0",
"minAppVersion": "0.14.6",
"description": "Task management for Obsidian",
"author": "Martin Schenck and Clare Macrae",

@ -1,5 +1,6 @@
{
"pluginList": [
"cdloh/obsidian-cron",
"willasm/obsidian-open-weather",
"joleaf/obsidian-email-block-plugin",
"akaalias/obsidian-extract-pdf",

File diff suppressed because one or more lines are too long

@ -1,10 +1,14 @@
{
"id": "obsidian42-brat",
"name": "Obsidian42 - BRAT",
"version": "0.6.36",
"minAppVersion": "1.0.0",
"version": "0.7.0",
"minAppVersion": "1.1.16",
"description": "Easily install a beta version of a plugin for testing.",
"author": "TfTHacker",
"authorUrl": "https://github.com/TfTHacker/obsidian42-brat",
"isDesktopOnly": false
"isDesktopOnly": false,
"fundingUrl": {
"Buy Me a Coffee": "https://bit.ly/o42-kofi",
"Medium membership": "https://bit.ly/o42-medium"
}
}

@ -1 +1,3 @@
.brat-modal .modal-button-container {
margin-top: 5px !important;
}

@ -48,7 +48,7 @@
"devMode": false,
"templateFolderPath": "00.01 Admin/Templates",
"announceUpdates": true,
"version": "0.17.1",
"version": "0.19.4",
"migrations": {
"migrateToMacroIDFromEmbeddedMacro": true,
"useQuickAddTemplateFolder": true,

@ -4446,7 +4446,7 @@ function create_each_block2(key_1, ctx) {
const if_block_creators = [create_if_block4, create_else_block];
const if_blocks = [];
function select_block_type(ctx2, dirty) {
if (ctx2[23].type !== "Multi" /* Multi */)
if (ctx2[23].type !== "Multi")
return 0;
return 1;
}
@ -4713,20 +4713,12 @@ function create_fragment10(ctx) {
let t0;
let select;
let option0;
let t1_value = "Template" /* Template */ + "";
let t1;
let option0_value_value;
let option1;
let t2_value = "Capture" /* Capture */ + "";
let t2;
let option1_value_value;
let option2;
let t3_value = "Macro" /* Macro */ + "";
let t3;
let option2_value_value;
let option3;
let t4_value = "Multi" /* Multi */ + "";
let t4;
let option3_value_value;
let t5;
let button;
@ -4739,25 +4731,25 @@ function create_fragment10(ctx) {
t0 = space();
select = element("select");
option0 = element("option");
t1 = text(t1_value);
option0.textContent = `${"Template"}`;
option1 = element("option");
t2 = text(t2_value);
option1.textContent = `${"Capture"}`;
option2 = element("option");
t3 = text(t3_value);
option2.textContent = `${"Macro"}`;
option3 = element("option");
t4 = text(t4_value);
option3.textContent = `${"Multi"}`;
t5 = space();
button = element("button");
button.textContent = "Add Choice";
attr(input, "type", "text");
attr(input, "placeholder", "Name");
option0.__value = option0_value_value = "Template" /* Template */;
option0.__value = option0_value_value = "Template";
option0.value = option0.__value;
option1.__value = option1_value_value = "Capture" /* Capture */;
option1.__value = option1_value_value = "Capture";
option1.value = option1.__value;
option2.__value = option2_value_value = "Macro" /* Macro */;
option2.__value = option2_value_value = "Macro";
option2.value = option2.__value;
option3.__value = option3_value_value = "Multi" /* Multi */;
option3.__value = option3_value_value = "Multi";
option3.value = option3.__value;
attr(select, "id", "addChoiceTypeSelector");
attr(select, "class", "svelte-1newuee");
@ -4773,13 +4765,9 @@ function create_fragment10(ctx) {
append(div, t0);
append(div, select);
append(select, option0);
append(option0, t1);
append(select, option1);
append(option1, t2);
append(select, option2);
append(option2, t3);
append(select, option3);
append(option3, t4);
select_option(select, ctx[1]);
append(div, t5);
append(div, button);
@ -4901,7 +4889,7 @@ var Choice = class {
// src/types/choices/TemplateChoice.ts
var TemplateChoice = class extends Choice {
constructor(name) {
super(name, "Template" /* Template */);
super(name, "Template");
this.templatePath = "";
this.fileNameFormat = { enabled: false, format: "" };
this.folder = {
@ -4930,7 +4918,7 @@ var TemplateChoice = class extends Choice {
// src/types/choices/MacroChoice.ts
var MacroChoice = class extends Choice {
constructor(name) {
super(name, "Macro" /* Macro */);
super(name, "Macro");
this.macroId = "";
}
};
@ -4938,7 +4926,7 @@ var MacroChoice = class extends Choice {
// src/types/choices/CaptureChoice.ts
var CaptureChoice = class extends Choice {
constructor(name) {
super(name, "Capture" /* Capture */);
super(name, "Capture");
this.appendLink = false;
this.captureTo = "";
this.captureToActiveFile = false;
@ -4974,7 +4962,7 @@ var CaptureChoice = class extends Choice {
// src/types/choices/MultiChoice.ts
var MultiChoice = class extends Choice {
constructor(name) {
super(name, "Multi" /* Multi */);
super(name, "Multi");
this.choices = [];
}
addChoice(choice) {
@ -8833,10 +8821,7 @@ async function templaterParseTemplate(app2, templateContent, targetFile) {
const templater = getTemplater(app2);
if (!templater)
return templateContent;
return await templater.templater.parse_template(
{ target_file: targetFile, run_mode: 4 },
templateContent
);
return await templater.templater.parse_template({ target_file: targetFile, run_mode: 4 }, templateContent);
}
function getNaturalLanguageDates(app2) {
return app2.plugins.plugins["nldates-obsidian"];
@ -8939,12 +8924,54 @@ function excludeKeys(sourceObj, except) {
return obj;
}
function getChoiceType(choice) {
const isTemplate = (choice2) => choice2.type === "Template" /* Template */;
const isMacro = (choice2) => choice2.type === "Macro" /* Macro */;
const isCapture = (choice2) => choice2.type === "Capture" /* Capture */;
const isMulti = (choice2) => choice2.type === "Multi" /* Multi */;
const isTemplate = (choice2) => choice2.type === "Template";
const isMacro = (choice2) => choice2.type === "Macro";
const isCapture = (choice2) => choice2.type === "Capture";
const isMulti = (choice2) => choice2.type === "Multi";
return isTemplate(choice) || isMacro(choice) || isCapture(choice) || isMulti(choice);
}
function isFolder(path) {
const abstractItem = app.vault.getAbstractFileByPath(path);
return !!abstractItem && abstractItem instanceof import_obsidian8.TFolder;
}
function getMarkdownFilesInFolder(folderPath) {
return app.vault.getMarkdownFiles().filter((f) => f.path.startsWith(folderPath));
}
function getMarkdownFilesWithTag(tag) {
const hasTags = (fileCache) => fileCache.tags !== void 0 && Array.isArray(fileCache.tags);
const hasFrontmatterTags = (fileCache) => {
return fileCache.frontmatter !== void 0 && fileCache.frontmatter.tags !== void 0 && typeof fileCache.frontmatter.tags === "string" && fileCache.frontmatter.tags.length > 0;
};
const hasFrontmatterTag = (fileCache) => {
return fileCache.frontmatter !== void 0 && fileCache.frontmatter.tag !== void 0 && typeof fileCache.frontmatter.tag === "string" && fileCache.frontmatter.tag.length > 0;
};
return app.vault.getMarkdownFiles().filter((f) => {
const fileCache = app.metadataCache.getFileCache(f);
if (!fileCache)
return false;
if (hasTags(fileCache)) {
const tagInTags = fileCache.tags.find((item) => item.tag === tag);
if (tagInTags) {
return true;
}
}
if (hasFrontmatterTags(fileCache)) {
const tagWithoutHash = tag.replace(/^\#/, "");
const tagInFrontmatterTags = fileCache.frontmatter.tags.split(" ").find((item) => item === tagWithoutHash);
if (tagInFrontmatterTags) {
return true;
}
}
if (hasFrontmatterTag(fileCache)) {
const tagWithoutHash = tag.replace(/^\#/, "");
const tagInFrontmatterTag = fileCache.frontmatter.tag.split(" ").find((item) => item === tagWithoutHash);
if (tagInFrontmatterTag) {
return true;
}
}
return false;
});
}
// src/formatters/formatter.ts
var Formatter = class {
@ -11874,12 +11901,13 @@ var CaptureChoiceBuilder = class extends ChoiceBuilder {
}
this.addTaskSetting();
this.addPrependSetting();
this.addAppendLinkSetting();
this.addInsertAfterSetting();
if (!this.choice.captureToActiveFile) {
this.addAppendLinkSetting();
this.addInsertAfterSetting();
this.addOpenFileSetting();
if (this.choice.openFile)
if (this.choice.openFile) {
this.addOpenFileInNewTabSetting();
}
}
this.addFormatSetting();
}
@ -12007,22 +12035,22 @@ var CaptureChoiceBuilder = class extends ChoiceBuilder {
considerSubsectionsSetting.setName("Consider subsections").setDesc(
"Enabling this will insert the text at the end of the section & its subsections, rather than just at the end of the target section.A section is defined by a heading, and its subsections are all the headings inside that section."
).addToggle(
(toggle) => toggle.setValue(this.choice.insertAfter?.considerSubsections).onChange(
(value) => {
if (!value) {
this.choice.insertAfter.considerSubsections = false;
return;
}
const targetIsHeading = this.choice.insertAfter.after.startsWith("#");
if (targetIsHeading) {
this.choice.insertAfter.considerSubsections = value;
} else {
this.choice.insertAfter.considerSubsections = false;
log.logError("'Consider subsections' can only be enabled if the insert after line starts with a # (heading).");
this.display();
}
(toggle) => toggle.setValue(this.choice.insertAfter?.considerSubsections).onChange((value) => {
if (!value) {
this.choice.insertAfter.considerSubsections = false;
return;
}
)
const targetIsHeading = this.choice.insertAfter.after.startsWith("#");
if (targetIsHeading) {
this.choice.insertAfter.considerSubsections = value;
} else {
this.choice.insertAfter.considerSubsections = false;
log.logError(
"'Consider subsections' can only be enabled if the insert after line starts with a # (heading)."
);
this.display();
}
})
);
const createLineIfNotFound = new import_obsidian22.Setting(this.contentEl);
createLineIfNotFound.setName("Create line if not found").setDesc("Creates the 'insert after' line if it is not found.").addToggle((toggle) => {
@ -13433,12 +13461,12 @@ function instance16($$self, $$props, $$invalidate) {
}
function getChoiceBuilder(choice) {
switch (choice.type) {
case "Template" /* Template */:
case "Template":
return new TemplateChoiceBuilder(app2, choice, plugin);
case "Capture" /* Capture */:
case "Capture":
return new CaptureChoiceBuilder(app2, choice, plugin);
case "Macro" /* Macro */:
case "Multi" /* Multi */:
case "Macro":
case "Multi":
default:
break;
}
@ -13603,6 +13631,20 @@ var NestedChoiceCommand2 = class extends Command {
};
// src/gui/MacroGUIs/MacroBuilder.ts
function getChoicesAsList(nestedChoices) {
const arr = [];
const recursive = (choices) => {
choices.forEach((choice) => {
if (choice.type === "Multi") {
recursive(choice.choices);
} else {
arr.push(choice);
}
});
};
recursive(nestedChoices);
return arr;
}
var MacroBuilder = class extends import_obsidian25.Modal {
constructor(app2, plugin, macro, choices) {
super(app2);
@ -13611,7 +13653,7 @@ var MacroBuilder = class extends import_obsidian25.Modal {
this.choices = [];
this.macro = macro;
this.svelteElements = [];
this.choices = choices;
this.choices = getChoicesAsList(choices);
this.plugin = plugin;
this.waitForClose = new Promise(
(resolve) => this.resolvePromise = resolve
@ -14150,28 +14192,11 @@ var MacrosManager = class extends import_obsidian28.Modal {
configureButton.setClass("mod-cta");
configureButton.buttonEl.style.marginRight = "0";
configureButton.setButtonText("Configure").onClick(async (evt) => {
const getReachableChoices = (choices) => {
const reachableChoices2 = [];
choices.forEach((choice) => {
if (choice.type === "Multi" /* Multi */)
reachableChoices2.push(
...getReachableChoices(
choice.choices
)
);
if (choice.type !== "Multi" /* Multi */)
reachableChoices2.push(choice);
});
return reachableChoices2;
};
const reachableChoices = getReachableChoices(
this.choices
);
const newMacro = await new MacroBuilder(
this.app,
this.plugin,
macro,
reachableChoices
this.choices
).waitForClose;
if (newMacro) {
this.updateMacro(newMacro);
@ -14322,6 +14347,27 @@ function create_fragment17(ctx) {
}
};
}
function deleteChoiceHelper(id, value) {
if (value.type === "Multi") {
value.choices = value.choices.filter((v) => deleteChoiceHelper(id, v));
}
return value.id !== id;
}
function updateChoiceHelper(oldChoice, newChoice) {
if (oldChoice.id === newChoice.id) {
oldChoice = { ...oldChoice, ...newChoice };
return oldChoice;
}
if (oldChoice.type === "Multi") {
const multiChoice = oldChoice;
const multiChoiceChoices = multiChoice.choices.map((c) => updateChoiceHelper(c, newChoice));
return {
...multiChoice,
choices: multiChoiceChoices
};
}
return oldChoice;
}
function instance17($$self, $$props, $$invalidate) {
let { choices = [] } = $$props;
let { macros = [] } = $$props;
@ -14341,19 +14387,19 @@ function instance17($$self, $$props, $$invalidate) {
function addChoiceToList(event) {
const { name, type } = event.detail;
switch (type) {
case "Template" /* Template */:
case "Template":
const templateChoice = new TemplateChoice(name);
$$invalidate(0, choices = [...choices, templateChoice]);
break;
case "Capture" /* Capture */:
case "Capture":
const captureChoice = new CaptureChoice(name);
$$invalidate(0, choices = [...choices, captureChoice]);
break;
case "Macro" /* Macro */:
case "Macro":
const macroChoice = new MacroChoice(name);
$$invalidate(0, choices = [...choices, macroChoice]);
break;
case "Multi" /* Multi */:
case "Multi":
const multiChoice = new MultiChoice(name);
$$invalidate(0, choices = [...choices, multiChoice]);
break;
@ -14362,8 +14408,8 @@ function instance17($$self, $$props, $$invalidate) {
}
async function deleteChoice(e) {
const choice = e.detail.choice;
const hasOwnMacro = choice.type === "Macro" /* Macro */ && macros.some((macro) => macro.name === choice.name);
const isMulti = choice.type === "Multi" /* Multi */;
const hasOwnMacro = choice.type === "Macro" && macros.some((macro) => macro.name === choice.name);
const isMulti = choice.type === "Multi";
const userConfirmed = await GenericYesNoPrompt.Prompt(app2, `Confirm deletion of choice`, `Please confirm that you wish to delete '${choice.name}'.
${isMulti ? "Deleting this choice will delete all (" + choice.choices.length + ") choices inside it!" : ""}
${hasOwnMacro ? "Deleting this choice will delete the macro associated with it!" : ""}
@ -14378,16 +14424,10 @@ function instance17($$self, $$props, $$invalidate) {
plugin.removeCommandForChoice(choice);
saveChoices(choices);
}
function deleteChoiceHelper(id, value) {
if (value.type === "Multi" /* Multi */) {
value.choices = value.choices.filter((v) => deleteChoiceHelper(id, v));
}
return value.id !== id;
}
async function configureChoice(e) {
const { choice: oldChoice } = e.detail;
let updatedChoice;
if (oldChoice.type === "Multi" /* Multi */) {
if (oldChoice.type === "Multi") {
updatedChoice = oldChoice;
const name = await GenericInputPrompt.Prompt(app2, `Rename ${oldChoice.name}`, "", oldChoice.name);
if (!name)
@ -14428,50 +14468,35 @@ function instance17($$self, $$props, $$invalidate) {
throw new Error("Invalid choice type");
let newChoice;
switch (choice.type) {
case "Template" /* Template */:
case "Template":
newChoice = new TemplateChoice(`${choice.name} (copy)`);
break;
case "Capture" /* Capture */:
case "Capture":
newChoice = new CaptureChoice(`${choice.name} (copy)`);
break;
case "Macro" /* Macro */:
case "Macro":
newChoice = new MacroChoice(`${choice.name} (copy)`);
break;
case "Multi" /* Multi */:
case "Multi":
newChoice = new MultiChoice(`${choice.name} (copy)`);
break;
}
if (choice.type !== "Multi" /* Multi */) {
if (choice.type !== "Multi") {
Object.assign(newChoice, excludeKeys(choice, ["id", "name"]));
} else {
newChoice.choices = choice.choices.map((c) => duplicateChoice(c));
}
return newChoice;
}
function updateChoiceHelper(oldChoice, newChoice) {
if (oldChoice.id === newChoice.id) {
oldChoice = { ...oldChoice, ...newChoice };
return oldChoice;
}
if (oldChoice.type === "Multi" /* Multi */) {
const multiChoice = oldChoice;
const multiChoiceChoices = multiChoice.choices.map((c) => updateChoiceHelper(c, newChoice));
return {
...multiChoice,
choices: multiChoiceChoices
};
}
return oldChoice;
}
function getChoiceBuilder(choice) {
switch (choice.type) {
case "Template" /* Template */:
case "Template":
return new TemplateChoiceBuilder(app2, choice, plugin);
case "Capture" /* Capture */:
case "Capture":
return new CaptureChoiceBuilder(app2, choice, plugin);
case "Macro" /* Macro */:
case "Macro":
return new MacroChoiceBuilder(app2, choice, macros, settingsStore.getState().choices);
case "Multi" /* Multi */:
case "Multi":
default:
break;
}
@ -14934,7 +14959,11 @@ function getEndOfSection(lines, targetLine, shouldConsiderSubsections = false) {
(str) => str.trim() !== ""
);
if (lastNonEmptyLineInSectionIdx !== null) {
if (lastNonEmptyLineInSectionIdx + 1 === lastLineInBodyIdx) {
if (lastNonEmptyLineInSectionIdx < targetLine) {
return targetLine;
}
const lineIsEmpty = lines[lastNonEmptyLineInSectionIdx + 1].trim() === "";
if (lastNonEmptyLineInSectionIdx + 1 === lastLineInBodyIdx && !lineIsEmpty) {
return endOfSectionLineIdx;
}
if (lastNonEmptyLineInSectionIdx === 0) {
@ -15798,15 +15827,9 @@ var CaptureChoiceEngine = class extends QuickAddChoiceEngine {
}
async run() {
try {
if (this.choice?.captureToActiveFile) {
await this.captureToActiveFile();
return;
}
const captureTo = this.choice.captureTo;
invariant(captureTo, () => {
return `Invalid capture to for ${this.choice.name}. ${captureTo.length === 0 ? "Capture path is empty." : `Capture path is not valid: ${captureTo}`}`;
});
const filePath = await this.formatFilePath(captureTo);
const filePath = await this.getFormattedPathToCaptureTo(
this.choice.captureToActiveFile
);
const content = this.getCaptureContent();
let getFileAndAddContentFn;
if (await this.fileExists(filePath)) {
@ -15823,8 +15846,17 @@ var CaptureChoiceEngine = class extends QuickAddChoiceEngine {
);
return;
}
const { file, content: newFileContent } = await getFileAndAddContentFn(filePath, content);
await this.app.vault.modify(file, newFileContent);
const { file, newFileContent, captureContent } = await getFileAndAddContentFn(filePath, content);
if (this.choice.captureToActiveFile && !this.choice.prepend && !this.choice.insertAfter.enabled) {
const content2 = await templaterParseTemplate(
app,
captureContent,
file
);
appendToCurrentLine(content2, this.app);
} else {
await this.app.vault.modify(file, newFileContent);
}
if (this.choice.appendLink) {
const markdownLink = this.app.fileManager.generateMarkdownLink(
file,
@ -15855,6 +15887,69 @@ var CaptureChoiceEngine = class extends QuickAddChoiceEngine {
`;
return content;
}
async getFormattedPathToCaptureTo(shouldCaptureToActiveFile) {
if (shouldCaptureToActiveFile) {
const activeFile = this.app.workspace.getActiveFile();
invariant(
activeFile,
`Cannot capture to active file - no active file.`
);
return activeFile.path;
}
const captureTo = this.choice.captureTo;
const formattedCaptureTo = await this.formatFilePath(captureTo);
const folderPath = formattedCaptureTo.replace(
/^\/$|\/\.md$|^\.md$/,
""
);
const captureAnywhereInVault = folderPath === "";
const shouldCaptureToFolder = captureAnywhereInVault || isFolder(folderPath);
const shouldCaptureWithTag = formattedCaptureTo.startsWith("#");
if (shouldCaptureToFolder) {
return this.selectFileInFolder(folderPath, captureAnywhereInVault);
}
if (shouldCaptureWithTag) {
const tag = formattedCaptureTo.replace(/\.md$/, "");
return this.selectFileWithTag(tag);
}
return formattedCaptureTo;
}
async selectFileInFolder(folderPath, captureAnywhereInVault) {
const folderPathSlash = folderPath.endsWith("/") || captureAnywhereInVault ? folderPath : `${folderPath}/`;
const filesInFolder = getMarkdownFilesInFolder(folderPathSlash);
invariant(
filesInFolder.length > 0,
`Folder ${folderPathSlash} is empty.`
);
const filePaths = filesInFolder.map((f) => f.path);
const targetFilePath = await InputSuggester.Suggest(
app,
filePaths.map((item) => item.replace(folderPathSlash, "")),
filePaths
);
invariant(
!!targetFilePath && targetFilePath.length > 0,
`No file selected for capture.`
);
const filePath = targetFilePath.startsWith(`${folderPathSlash}/`) ? targetFilePath : `${folderPathSlash}/${targetFilePath}`;
return await this.formatFilePath(filePath);
}
async selectFileWithTag(tag) {
const tagWithHash = tag.startsWith("#") ? tag : `#${tag}`;
const filesWithTag = getMarkdownFilesWithTag(tagWithHash);
invariant(filesWithTag.length > 0, `No files with tag ${tag}.`);
const filePaths = filesWithTag.map((f) => f.path);
const targetFilePath = await GenericSuggester.Suggest(
app,
filePaths,
filePaths
);
invariant(
!!targetFilePath && targetFilePath.length > 0,
`No file selected for capture.`
);
return await this.formatFilePath(targetFilePath);
}
async onFileExists(filePath, content) {
const file = this.getFileByPath(filePath);
if (!file)
@ -15883,9 +15978,9 @@ This is in order to prevent data loss.`
);
newFileContent = res.joinedResults();
}
return { file, content: newFileContent };
return { file, newFileContent, captureContent: formatted };
}
async onCreateFileIfItDoesntExist(filePath, content) {
async onCreateFileIfItDoesntExist(filePath, captureContent) {
let fileContent = "";
if (this.choice.createFileIfItDoesntExist.createWithTemplate) {
const singleTemplateEngine = new SingleTemplateEngine(
@ -15905,12 +16000,12 @@ This is in order to prevent data loss.`
file
);
const newFileContent = await this.formatter.formatContentWithFile(
content,
captureContent,
this.choice,
updatedFileContent,
file
);
return { file, content: newFileContent };
return { file, newFileContent, captureContent };
}
async formatFilePath(captureTo) {
const formattedCaptureTo = await this.formatter.formatFileName(
@ -15919,33 +16014,6 @@ This is in order to prevent data loss.`
);
return this.normalizeMarkdownFilePath("", formattedCaptureTo);
}
async captureToActiveFile() {
const activeFile = this.app.workspace.getActiveFile();
if (!activeFile) {
log.logError("Cannot capture to active file - no active file.");
return;
}
let content = this.getCaptureContent();
content = await this.formatter.formatContent(content, this.choice);
if (this.choice.format.enabled) {
content = await templaterParseTemplate(
this.app,
content,
activeFile
);
}
if (!content)
return;
if (this.choice.prepend) {
const fileContent = await this.app.vault.cachedRead(
activeFile
);
const newFileContent = `${fileContent}${content}`;
await this.app.vault.modify(activeFile, newFileContent);
} else {
appendToCurrentLine(content, this.app);
}
}
};
// src/gui/suggesters/choiceSuggester.ts
@ -15977,7 +16045,7 @@ var ChoiceSuggester = class extends import_obsidian33.FuzzySuggestModal {
return this.choices;
}
async onChooseItem(item, evt) {
if (item.type === "Multi" /* Multi */)
if (item.type === "Multi")
this.onChooseMultiType(item);
else
await this.choiceExecutor.execute(item);
@ -15999,22 +16067,22 @@ var ChoiceExecutor = class {
}
async execute(choice) {
switch (choice.type) {
case "Template" /* Template */: {
case "Template": {
const templateChoice = choice;
await this.onChooseTemplateType(templateChoice);
break;
}
case "Capture" /* Capture */: {
case "Capture": {
const captureChoice = choice;
await this.onChooseCaptureType(captureChoice);
break;
}
case "Macro" /* Macro */: {
case "Macro": {
const macroChoice = choice;
await this.onChooseMacroType(macroChoice);
break;
}
case "Multi" /* Multi */: {
case "Multi": {
const multiChoice = choice;
this.onChooseMultiType(multiChoice);
break;
@ -16063,7 +16131,7 @@ var migrateToMacroIDFromEmbeddedMacro_default = {
description: "Migrate to macro ID from embedded macro in macro choices.",
migrate: async (plugin) => {
function convertMacroChoiceMacroToIdHelper(choice) {
if (choice.type === "Multi" /* Multi */) {
if (choice.type === "Multi") {
let multiChoice = choice;
const multiChoices = multiChoice.choices.map(
convertMacroChoiceMacroToIdHelper
@ -16071,7 +16139,7 @@ var migrateToMacroIDFromEmbeddedMacro_default = {
multiChoice = { ...multiChoice, choices: multiChoices };
return multiChoice;
}
if (choice.type !== "Macro" /* Macro */)
if (choice.type !== "Macro")
return choice;
const macroChoice = choice;
if (macroChoice.macro) {
@ -16128,7 +16196,7 @@ function isMultiChoice(choice) {
if (choice === null || typeof choice !== "object" || !("type" in choice) || !("choices" in choice)) {
return false;
}
return choice.type === "Multi" /* Multi */ && choice.choices !== void 0;
return choice.type === "Multi" && choice.choices !== void 0;
}
// src/migrations/isNestedChoiceCommand.ts
@ -16189,7 +16257,7 @@ var incrementFileNameSettingMoveToDefaultBehavior_default = incrementFileNameSet
// src/migrations/isCaptureChoice.ts
function isCaptureChoice(choice) {
return choice.type === "Capture" /* Capture */;
return choice.type === "Capture";
}
// src/migrations/mutualExclusionInsertAfterAndWriteToBottomOfFile.ts
@ -16453,7 +16521,7 @@ var QuickAdd = class extends import_obsidian35.Plugin {
choices.forEach((choice) => this.addCommandForChoice(choice));
}
addCommandForChoice(choice) {
if (choice.type === "Multi" /* Multi */) {
if (choice.type === "Multi") {
this.addCommandsForChoices(choice.choices);
}
if (choice.command) {
@ -16485,7 +16553,7 @@ var QuickAdd = class extends import_obsidian35.Plugin {
if (choice[by] === targetPropertyValue) {
return choice;
}
if (choice.type === "Multi" /* Multi */) {
if (choice.type === "Multi") {
const subChoice = this.getChoice(
by,
targetPropertyValue,

@ -1,7 +1,7 @@
{
"id": "quickadd",
"name": "QuickAdd",
"version": "0.17.1",
"version": "0.19.4",
"minAppVersion": "0.13.19",
"description": "Quickly add new pages or content to your vault.",
"author": "Christian B. B. Houmann",

@ -212,7 +212,6 @@
"ledger-obsidian:Add to Ledger": false,
"obsidian-map-view:Open map view": false,
"obsidian-metatable:Metatable": false,
"obsidian42-brat:BRAT": false,
"table-editor-obsidian:Advanced Tables Toolbar": false,
"templater-obsidian:Templater": false,
"obsidian-book-search-plugin:Create new book note": false,
@ -232,37 +231,38 @@
"msg-handler:MSG Handler": false,
"obsidian-read-it-later:ReadItLater: Save clipboard": false,
"meld-encrypt:Create new encrypted note": false,
"obsidian42-brat:BRAT": false,
"obsidian-memos:Memos": false
}
},
"active": "a51da5ef0d807c2e",
"lastOpenFiles": [
"00.01 Admin/Calendars/2023-04-02.md",
"00.01 Admin/Calendars/2023-04-03.md",
"01.02 Home/@Main Dashboard.md",
"01.02 Home/@Shopping list.md",
"00.01 Admin/Calendars/2023-04-01.md",
"00.01 Admin/Calendars/2023-03-31.md",
"01.01 Life Orga/@Personal projects.md",
"00.01 Admin/Calendars/2023-03-30.md",
"05.02 Networks/Server Alias.md",
"03.02 Travels/Mallorca.md",
"00.01 Admin/Calendars/2023-03-29.md",
"03.01 Reading list/The Fran Lebowitz Reader.md",
"00.02 Inbox/Le Temps gagné.md",
"03.01 Reading list/@Reading master.md",
"03.01 Reading list/Au Revoir Là-Haut.md",
"00.01 Admin/Calendars/2023-03-26.md",
"00.01 Admin/Calendars/2023-03-27.md",
"00.01 Admin/Calendars/2023-03-28.md",
"00.03 News/How Michael Cohens Big Mouth Could Be Derailing the Trump Prosecution.md",
"00.03 News/Adam Sandler doesnt need your respect. But hes getting it anyway..md",
"00.03 News/Gisele Bündchen on Tom Brady, FTX Blind Side, and Being a “Witch of Love”.md",
"00.03 News/I Went on a Package Trip for Millennials Who Travel Alone. Help Me..md",
"00.03 News/Jaylen Brown Is Trying to Find a Balance.md",
"01.02 Home/@Main Dashboard.md",
"00.01 Admin/Calendars/2023-04-04.md",
"00.01 Admin/Calendars/2023-04-05.md",
"00.01 Admin/Calendars/2023-04-06.md",
"00.01 Admin/Calendars/2023-04-07.md",
"02.03 Zürich/Polo Park Zürich.md",
"03.04 Cinematheque/@Cinematheque.md",
"00.01 Admin/Calendars/Events/2023-03-26 Mallorca.md",
"00.03 News/The Limits and Wonders of John Wicks Last Fight.md",
"03.04 Cinematheque/The Guard (2011).md",
"03.04 Cinematheque/Thank You for Smoking (2005).md",
"05.01 Computer setup/Storage and Syncing.md",
"00.03 News/How Michael Cohens Big Mouth Could Be Derailing the Trump Prosecution.md",
"02.02 Paris/Alluma.md",
"02.02 Paris/Narro.md",
"00.01 Admin/Calendars/2023-04-03.md",
"00.03 News/The Big Coin Heist.md",
"00.03 News/The Unimaginable Horror of Evan Gershkovichs Arrest in Moscow.md",
"00.03 News/We want objective judges and doctors. Why not journalists too.md",
"00.02 Inbox/Why are Americans dying so young.md",
"00.01 Admin/Calendars/2023-04-02.md",
"05.02 Networks/Server VPN.md",
"05.02 Networks/Configuring Caddy.md",
"05.02 Networks/Server Alias.md",
"05.02 Networks/Server Tools.md",
"00.01 Admin/Calendars/Events/2023-02-09 Médecin.md",
"00.01 Admin/Calendars/2023-04-01.md",
"Pasted image 20230317114612.png",
"Pasted image 20230317114609.png",
"Pasted image 20230309141356.png",

@ -114,7 +114,7 @@ This section does serve for quick memos.
&emsp;
Loret ipsum
🛬: [[Mallorca]] to [[@@Zürich|Zürich]]
&emsp;

@ -16,9 +16,9 @@ Stress: 27.5
FrontHeadBar: 5
EarHeadBar: 35
BackHeadBar: 20
Water: 0.5
Water: 3.75
Coffee: 0
Steps:
Steps: 11290
Weight:
Ski:
IceSkating:
@ -114,7 +114,7 @@ This section does serve for quick memos.
&emsp;
Loret ipsum
📺: [[Thank You for Smoking (2005)]]
&emsp;

@ -0,0 +1,136 @@
---
title: "🗒 Daily Note"
allDay: true
date: 2023-04-04
Date: 2023-04-04
DocType: Note
Hierarchy:
TimeStamp:
location:
CollapseMetaTable: true
Sleep: 6.5
Happiness: 80
Gratefulness: 80
Stress: 27.5
FrontHeadBar: 5
EarHeadBar: 35
BackHeadBar: 20
Water: 3.83
Coffee: 3
Steps: 11566
Weight: 96.3
Ski:
IceSkating:
Riding:
Racket:
Football:
Swim:
---
%% Parent:: [[@Life Admin]] %%
---
[[2023-04-03|<< 🗓 Previous ]] &emsp; &emsp; &emsp; [[@Main Dashboard|Back]] &emsp; &emsp; &emsp; [[2023-04-05|🗓 Next >>]]
---
&emsp;
```button
name Record today's health
type command
action MetaEdit: Run MetaEdit
id EditMetaData
```
^button-2023-04-04Edit
```button
name Save
type command
action Save current file
id Save
```
^button-2023-04-04NSave
&emsp;
# 2023-04-04
&emsp;
> [!summary]+
> Daily note for 2023-04-04
&emsp;
```toc
style: number
```
&emsp;
---
&emsp;
### ✅ Tasks of the day
&emsp;
```tasks
not done
due on 2023-04-04
path does not include Templates
hide backlinks
hide task count
```
&emsp;
---
&emsp;
### 📝 Memos
&emsp;
This section does serve for quick memos.
&emsp;
%% --- %%
&emsp;
---
&emsp;
### 🗒 Notes
&emsp;
🚆: [[@@Zürich|Zürich]] to [[@@Paris|Paris]]
🍽: dinner with [[Amaury de Villeneuve]]
&emsp;
---
&emsp;
### :link: Linked activity
&emsp;
```dataview
Table from [[2023-04-04]]
```
&emsp;
&emsp;

@ -0,0 +1,134 @@
---
title: "🗒 Daily Note"
allDay: true
date: 2023-04-05
Date: 2023-04-05
DocType: Note
Hierarchy:
TimeStamp:
location:
CollapseMetaTable: true
Sleep: 7.5
Happiness: 80
Gratefulness: 80
Stress: 27.5
FrontHeadBar: 5
EarHeadBar: 35
BackHeadBar: 20
Water: 2.58
Coffee: 5
Steps: 5789
Weight:
Ski:
IceSkating:
Riding:
Racket:
Football:
Swim:
---
%% Parent:: [[@Life Admin]] %%
---
[[2023-04-04|<< 🗓 Previous ]] &emsp; &emsp; &emsp; [[@Main Dashboard|Back]] &emsp; &emsp; &emsp; [[2023-04-06|🗓 Next >>]]
---
&emsp;
```button
name Record today's health
type command
action MetaEdit: Run MetaEdit
id EditMetaData
```
^button-2023-04-05Edit
```button
name Save
type command
action Save current file
id Save
```
^button-2023-04-05NSave
&emsp;
# 2023-04-05
&emsp;
> [!summary]+
> Daily note for 2023-04-05
&emsp;
```toc
style: number
```
&emsp;
---
&emsp;
### ✅ Tasks of the day
&emsp;
```tasks
not done
due on 2023-04-05
path does not include Templates
hide backlinks
hide task count
```
&emsp;
---
&emsp;
### 📝 Memos
&emsp;
This section does serve for quick memos.
&emsp;
%% --- %%
&emsp;
---
&emsp;
### 🗒 Notes
&emsp;
Loret ipsum
&emsp;
---
&emsp;
### :link: Linked activity
&emsp;
```dataview
Table from [[2023-04-05]]
```
&emsp;
&emsp;

@ -0,0 +1,134 @@
---
title: "🗒 Daily Note"
allDay: true
date: 2023-04-06
Date: 2023-04-06
DocType: Note
Hierarchy:
TimeStamp:
location:
CollapseMetaTable: true
Sleep: 6
Happiness: 80
Gratefulness: 80
Stress: 27.5
FrontHeadBar: 5
EarHeadBar: 35
BackHeadBar: 20
Water: 3.5
Coffee: 0
Steps: 3317
Weight:
Ski:
IceSkating:
Riding:
Racket:
Football:
Swim:
---
%% Parent:: [[@Life Admin]] %%
---
[[2023-04-05|<< 🗓 Previous ]] &emsp; &emsp; &emsp; [[@Main Dashboard|Back]] &emsp; &emsp; &emsp; [[2023-04-07|🗓 Next >>]]
---
&emsp;
```button
name Record today's health
type command
action MetaEdit: Run MetaEdit
id EditMetaData
```
^button-2023-04-06Edit
```button
name Save
type command
action Save current file
id Save
```
^button-2023-04-06NSave
&emsp;
# 2023-04-06
&emsp;
> [!summary]+
> Daily note for 2023-04-06
&emsp;
```toc
style: number
```
&emsp;
---
&emsp;
### ✅ Tasks of the day
&emsp;
```tasks
not done
due on 2023-04-06
path does not include Templates
hide backlinks
hide task count
```
&emsp;
---
&emsp;
### 📝 Memos
&emsp;
This section does serve for quick memos.
&emsp;
%% --- %%
&emsp;
---
&emsp;
### 🗒 Notes
&emsp;
📺: [[The Guard (2011)]]
&emsp;
---
&emsp;
### :link: Linked activity
&emsp;
```dataview
Table from [[2023-04-06]]
```
&emsp;
&emsp;

@ -0,0 +1,134 @@
---
title: "🗒 Daily Note"
allDay: true
date: 2023-04-07
Date: 2023-04-07
DocType: Note
Hierarchy:
TimeStamp:
location:
CollapseMetaTable: true
Sleep: 8
Happiness: 80
Gratefulness: 80
Stress: 27.5
FrontHeadBar: 5
EarHeadBar: 35
BackHeadBar: 20
Water:
Coffee:
Steps:
Weight:
Ski:
IceSkating:
Riding:
Racket:
Football:
Swim:
---
%% Parent:: [[@Life Admin]] %%
---
[[2023-04-06|<< 🗓 Previous ]] &emsp; &emsp; &emsp; [[@Main Dashboard|Back]] &emsp; &emsp; &emsp; [[2023-04-08|🗓 Next >>]]
---
&emsp;
```button
name Record today's health
type command
action MetaEdit: Run MetaEdit
id EditMetaData
```
^button-2023-04-07Edit
```button
name Save
type command
action Save current file
id Save
```
^button-2023-04-07NSave
&emsp;
# 2023-04-07
&emsp;
> [!summary]+
> Daily note for 2023-04-07
&emsp;
```toc
style: number
```
&emsp;
---
&emsp;
### ✅ Tasks of the day
&emsp;
```tasks
not done
due on 2023-04-07
path does not include Templates
hide backlinks
hide task count
```
&emsp;
---
&emsp;
### 📝 Memos
&emsp;
This section does serve for quick memos.
&emsp;
%% --- %%
&emsp;
---
&emsp;
### 🗒 Notes
&emsp;
Loret ipsum
&emsp;
---
&emsp;
### :link: Linked activity
&emsp;
```dataview
Table from [[2023-04-07]]
```
&emsp;
&emsp;

@ -12,7 +12,7 @@ CollapseMetaTable: true
---
Parent:: [[@News|News]]
Read:: 🟥
Read:: [[2023-04-06]]
---

@ -0,0 +1,205 @@
---
Tag: ["🚔", "💸", "🇨🇦"]
Date: 2023-04-03
DocType: "WebClipping"
Hierarchy:
TimeStamp: 2023-04-03
Link: https://hazlitt.net/longreads/big-coin-heist
location:
CollapseMetaTable: true
---
Parent:: [[@News|News]]
Read:: 🟥
---
&emsp;
```button
name Save
type command
action Save current file
id Save
```
^button-TheBigCoinHeistNSave
&emsp;
# The Big Coin Heist
**The figure turns to address two others.** Like him, they are dressed in head-to-toe black, their faces obscured. Unlike him, they are lagging on the stairs of Berlins Hackescher Markt S-Bahn platform. Because there is no audio and his face is turned away from the CCTV cameras, theres no way to know what hes saying, but theres something in his body language. A restlessness, like an eager kid telling his friends to catch up because theyre at risk of missing out. 
Its 3 a.m., on March 27, 2017. The figures are going to steal a 100 kg coin the size of a car tire made of the purest gold in the world.
Whatever the leader says works. The two other figures catch up, fall in line, and when they reach the top of the stairs, speed walk towards the end of the S-Bahn platform. The three figures step off the platform, onto the track bed, and over to the service pathway running parallel to the tracks. They didnt have to worry about any trains passing by and spotting them, because they knew that the S-Bahn wouldnt start up again until 4:13 a.m.
The path they walk gives them an enviable view of the unattended city, theirs in the way all cities belong to those awake at such an early hour. The Berlin Cathedral looms above them and Monbijoupark, with its winter-battered trees, peers over the S-Bahn tracks. Beneath them is the Spree River, and ahead is the Bode Museum, part of what is known as Museum Island.
It was there, on the second floor of the Bode Museum, that the Big Maple Leaf coin awaited them.
Since its creation, the coin had possessed a curious quality, a weight greater than its mass, and a worth beyond its face value. It had a way of changing lives. The three figures were moments away from learning that themselves. If they succeeded, the coin would certainly make them rich. But it also had the potential to do more: make them infamous, noteworthy, respected, admired for the brazenness of their act. Which was the idea. This was meant to be a provocation, and what was at stake in those early hours of the day wasnt just repercussions, but reputation.
\*
Ten years earlier, 6000 kilometers away, in Ottawa, designer and engraver Stan Witten was at his desk with a set of graphite pencils drawing three silver maple leaves on an 8.5x11 piece of paper. The veteran Royal Canadian Mint employee was focused on getting the leaves just right. He wanted to ensure the leaves felt alive, as if they would curl up and float off the page. They were for a special project unlike any he had ever worked on for the RCM.
The project, to create a 100 kg coin, twenty inches thick, with a face value of one million dollars, was so unprecedented that when RCM chief technology officer Xianyao Li was told about it, his first thought was, “Its impossible.”
The idea for the Big Maple Leaf coin formed as the RCM was launching a new series of pocket-sized coins made of 99.999 percent pure gold, often referred to as “five nines pure.” Raw gold is typically muddied with other elements like silver, aluminum, or zirconium, and needs to be processed so that there are less than ten parts per million of other elements*.* The typical standard is four nines. That extra decimal represents hundreds of thousands of dollars of additional value, and a source of technical pride for an organization like the RCM.
But the RCM wanted to signal a little more to the world, to draw attention to the new line of coins. In 2004, the Austrian Mint had created what was at that time the worlds biggest coin: a 31 kg coin made of 99.99 percent pure gold. In doing so, Austria hadnt issued a direct challenge, but because there is an unofficial rivalry between international mints, they might just as well have. What if the RCM combined one accomplishment with another? What if they created a big, 99.999 percent pure coin? Really big. Big enough to draw attention.
Most coins can be struck with a hydraulic press, but there was no machine large enough, or powerful enough, to strike a coin this size. Li and his colleagues would have to turn to casting, a process not unlike pouring batter into a cake mold. The problem with that was the need to create a custom mold that could produce the needed thickness. It would also have to be a mold strong enough to withstand so much hot molten gold, while flexible enough to let the coin pop out after. Precision also had to be considered. Because the coin was to be sold at 100 kilograms, if it ended up weighing 101 kilograms, that additional gold would be an expensive loss for the RCM. If the coin came out of the cast under 100 kilograms, the team would have to scrap the entire coin and start again. The process could also risk contamination, turning five nine gold into four nines. 
Over the next three months, the team worked through the process. They knew they were working on something unique. Defining. Whenever a coin was cast, the whole plant would gather and provide support. “Everyone wanted to know how successful it would be,” recalls Xianyao Li. “When we succeeded everyone was so happy. When we scrapped one coin because of the weight, everybody found a way to support the team so they dont feel bad.”
Eventually the casting process succeeded. Witten used hand engraving tools to remove slight defects that emerged during the casting process, enhanced the details of the maple leaves and the image of Queen Elizabeth (designed by Susanna Blunt) on the opposite side. The coin surfaces were primed by hand, pre-polished, and then given a frosted finish.
In May 2007, the Big Maple Leaf coin was revealed to the public and the press at the RCMs Ottawa offices. Internally, the team celebrated. Special posters were made and signed by all involved (Li has one framed in his office). Team photos were shot. There was also a celebration in the employees cafeteria, with coffee and cake, and a chance to stand next to the coin and have a photo taken.
In the days, weeks, and months after, the Big Maple Leaf coins creators saw their hard work receive international attention. The Guinness World Records organization officially recognized the coin as the worlds largest. There was high demand for the coin to tour the world.
The creators received personal attention too. Witten saw his name appear widely in external publications and brochures. All of it has been tucked away in a filing cabinet he keeps at home, to look back on when he retires.  
As for Li, he was invited in 2008 to give a presentation at his industrys most prestigious event, the Mint Directors Conference. He broke through in the mint industry in ways he hadnt before, becoming a member of the technical committee that oversees the industry.
And the RCM itself? “This built some confidence in the mint that we can overcome a lot of technical challenges,” Li says.
The RCMs work with the coins wasnt entirely done, however. The coin had attracted other attention as well. Wealthy companies and individuals reached out to the Mint, inquiring if the coin could be custom made for them. The RCM accepted. In the end, six coins were created. One stayed with the RCM in a vault. One went to Barrick Gold Corporation, a Canadian gold mining outfit. One went to an Austrian investment firm. One went to Queen Elizabeth. The last two went to two individuals in Dubai, one of whom, it is rumoured, uses the coin as a coffee table.
When all the work was done, the team was proud of it as an artistic accomplishment, an engineering accomplishment, and a national accomplishment. “I think coins tell a lot about a country, and showcase the country. Whats important, what theyre proud of, whats meaningful,” Witten says. Li adds, “Thats our history. The coins do give us things we can pass down for years.” 
They felt they had created something lasting. “Coins are permanent, right? Even one this heavy. They dont burn or dont blow away, or get lost,” Witten told me.
“Unless someone steals it,” Li added.
\*
The three thieves arrived at a wall that once belonged to a support structure that connected the Bode Museum to the Pergamon Museum. The bridge itself was long gone, and the structure had lost its purpose, but that morning it would find one again. Scaled, the wall leads to the only second-floor window accessible from the outside of the museum. It was the thieves best way in, and they had planned accordingly. Nearby was a ladder they had left behind from a previous visit, six days earlier, when everything had gone wrong.
On March 21, the would-be thieves had climbed that ladder up to the window, to remove bolts from security glass that covered the window and gain access to a locker room for museum employees. Mid-bolt removal, however, the glass had cracked. Worried, they fled. If anyone noticed the damage the next day, security would likely be increased and their only entry point would be closed to them.
The damage was noticed. A repair order was issued, but it wasnt prioritized, likely because the damage was written off as wear and tear. The thieves had been given another chance. But if they didnt succeed today, on March 27, the coin was going to be gone. It was scheduled to be moved to the Berlin Kulturforum, across the city. If that happened, their weeks worth of planning, stress, and anticipation would be for nothing.
They climbed the ladder and stood in front of the security glass for the second time in a week. No longer worried about causing further damage (what did they have to lose now?), they successfully removed the remaining bolts on the security glass and got the casement window behind it open. They knew they didnt have to listen for the shriek of an alarm, because they knew the alarm sensor in the window had been faulty since 2013 and was turned off. They knew this the same way they knew the window damage hadnt drawn concerns, the same way they knew how to do everything they were about to do. Their crew had a fourth member. They had an inside man.
They were in. There was the risk of being caught by one of the guards who patrolled the rooms and halls of the museum, but that morning there was only one guard on duty, and he was patrolling another floor. In order not to set off the motion sensors throughout the museum during their rounds, guards turned them off. 
At that early hour, the thieves hurried steps would have pierced the silence and the assumed decorum of museums, echoing off the hardwood floors and into the high ceilings.
They walked out of the “Employees Only” door and left the first of several doorstoppers meant to ease their escape. The path took them past frescos of the god Pan and Renaissance images of Christ, past statues of Prussian military leaders watching their advance and a collection of 18th century French artwork. They passed an assembly of baroque southern German art before finally moving past an image of a man victoriously holding a decapitated head, and arriving in the first of the series of rooms, painted envy green and filled with narrow door frames only one person can fit through at a time, that made up the museums numismatic section.
Around them were coins from the Holy Roman Empire all the way to the present. There was ancient and modern currency from Germany, France, Italy, Spain, Portugal. There were quotes about currency from a Nürnberger leaflet from 1652, inscribed on a plaque: “Money rules the world. You noble Miss Money/Everyone courts you/What does it matter: because your love on earth/can do anything.”
Then there was the Big Maple Leaf coin, in all its purity, size, detail, and value. It was right there and now all they had to do was take it.
One of the thieves removed an axe from the backpack they had brought with them. He wrapped his hands around its black rubber handle, and the yellow grip at its base. Then he swung the axe towards the case protecting the coin.
\*
When the Big Maple Leaf coin arrived in the Bode Museum in 2010 it had been on something of a Bad Luck European Tour. This coin was the one purchased by the Austrian investment firm, AvW Invest. The company dissolved around 2010—the head of the company was arrested for fraud—and the coin was sold at an auction for 3.27 million euros to a Spanish precious metals company named Oro Direct Sales. That company, too, got into trouble. Police descended on their offices in 2014 with suspicions of money laundering and illegal trading. The coin, however, narrowly avoided that fate thanks to Boris Fuchsmann, a Ukrainian real estate mogul living in Düsseldorf. A collector of art and luxuries, Fuchsmann had registered for the auction Oro Direct Sales had won while in South Africa for the 2010 World Cup. During the auction, however, he was visiting Kruger National Park and had no cell reception. Afterwards, he reached out to the Spanish company and offered 100,000 euros more for the coin than they had paid. Oro agreed. Not long after, Fuchsmann got a call from the Bode Museum who asked if he could lend the coin for a special exhibit called “Gold Giants.” He agreed. 
The Big Maple Leaf coin proved to be a draw to the museum. The press covered it. A TV film crew filmed the exhibit. Its success was considerable enough that, while the other coins that were lent to the museum for the exhibit were returned, the museum asked Fuchsmann if they could give the Big Maple Leaf coin a more long-term home. The coin became a permanent addition and the museum became its guardian. 
\*
The glass encasement that guarded the coin smashed into pieces so thick, so heavy, that when they fell onto the hardwood floor, they left deep gouges that remain there, like scars, to this day.
With the coin now exposed, the thieves put their hands on it for the first time. Muscles tightening beneath the 100 kg weight, they lifted the giant Maple Leaf coin and lowered it down onto a handle-less wooden trolley.
They had to move. The guard could return to the security room at any moment and reactivate the motion sensors, and then the propped open doors would trigger an alarm.
They hastily pushed the trolley back along the route they had come, its small wheels click-clacking along the floors, leaving the occasional skid mark. Plaster was ripped off the walls as the trolley bumped into them. When the thieves arrived back in the locker room, they lifted the giant coin up towards the window. They left the trolley behind, shoved the coin, and gravity did the rest.
Waiting below was a wheelbarrow. (Unbeknownst to them, the wheelbarrow had been noticed ten days ago by an electrician working on the S-Bahns signals, but he assumed his colleagues had left it there). The thieves loaded the coin into the wheelbarrow and pushed it to a spot above Monbijoupark, where a driver was waiting. Their bounty was put into the trunk, then the thieves got into the car and drove off.
In sixteen minutes, they had become millionaires.
After 4 a.m., the guard on duty in the Bode returned to the security room from his rounds. The guard was an eight-year veteran of Museum Island security but had only recently been transferred to the Bode. Tonight was his first time on solo duty since starting there and his first two rounds (one starting, according to logs, at 18:55 and another at 23:00) had been uneventful. He had no reason to think the third would be any different.
Then, on a monitor, he saw something confusing. Several doors on the second floor were open, even though he was certain that hed closed them earlier. Fear gripped him. Someone was in the museum. How had this happened? He hadnt heard or seen anything.
The guard radioed Museum Islands central security for backup. One of his colleagues noticed the scuff marks the thieves trolley had left on the hardwood floor. Tracking them eventually led to the scene of the crime where someone, according to reports, exclaimed, “Oh shit, the coin.”
A call went out to Bernhard Weisser, the director of the museums numismatic collection, who initially thought he was being pranked. The coin was so big, so awkward to transport, the museum had considered it an unlikely target for a theft. “That was a big mistake,” Weisser would later tell the press.
Another call went out to the Berlin Police, who misunderstood the scope of what had happened. One coin was missing? Considering the museum had thousands of coins and other priceless artworks, that hardly seemed like a major crime. It wasnt until they arrived at the scene and an officer saw the broken glass case, along with a plaque describing a 100 kg coin, that the police realized it hadnt been just a piece of ancient pocket change.
The ensuing investigation was made considerably easier by the thieves, whose heist may have been daring and well-planned, but hardly careful. Caution didnt seem to have been a priority. Along each step of the heist, the thieves had left easy evidence to collect. At the S-Bahn Hackescher station, CCTV cameras had captured that mornings journey. Where the ladder, axe, trolley, and wheelbarrow had been left served as useful landmarks to identify the thieves in-and-out route. Gold fragments had also been left where the coin had been dropped, which outlined their final escape path, as did another security camera which caught the getaway Mercedes driving away from the scene. The thieves had left DNA on several of their tools.
The police, nonetheless, didnt have any immediate theories as to who the suspects could be. But they would soon find out there was a place in Berlin where it wasnt much of a secret at all.
\*
Wander streets like Karl-Marx-Strasse and Sonnenallee in the borough of Neukölln, located in southeast Berlin, and youll notice signs of what many call a parallel society within Germany. Hookah bars, as well as stores selling Middle Eastern nuts and sweets, all demonstrate the local population: the Arabische Grossfamilien (Arabian extended families) that have made the borough their home.
These families are made up of Kurds from Southeast Turkey who, during the 1980s, fled Turkey for Lebanon, then fled Lebanon for Germany due to the Lebanese Civil War. When the families arrived as refugees, they were subject to what is now considered a failure of politics and a policy of neglect. They were excluded from society. Ignored into its margins. They received welfare, but little opportunity. They werent allowed to work or leave Berlin.
Germanys disinterest encouraged isolation, but the countrys neglect had another effect. While the vast majority of Grossfamilien were law abiding (and this remains true today), a contingent began to seek financial opportunities beyond German law. If Germany wouldnt shape their futures, these men would shape their own. They turned to drugs, prostitution, extortion and theft to make money and, over time, robust criminal organizations, referred to as clans, were formed.
As a clan member named Yehya E. relays [in the book](https://www.christian-stahl.com/books_in-den-gangs-von-neukoelln.html) *In the Gangs of Neukölln* by journalist Christian Stahl, “Its about being a man, and being a man is very important … Its the face you wear. One with which you can walk around on the street. You cant let yourself be seen anywhere when youre not a man … So, you carry the dream of being a big mafia boss in your heart … to be a hero for a moment.”
Becoming that hero is made possible because of accessible hierarchies, where there are no fixed positions. What elevates you is what you do. Youth make themselves upwardly mobile in the clans by building a resumé of assaults, petty theft, and drugs.
And some graduate to more audacious crimes; like the Big Maple Leaf theft. Seeking respect and recognition, the thieves made no secret of their plans, which is why, eventually, the police were contacted by clan informants, and told three names.
Ahmed, Wayci and Wissam Remmo.
The police knew the Remmo clan, and the three men, well. The Remmos are one adversary among the small battles in an ongoing war between the clans and police. When luxury cars double park in Neukölln and an officer tries to give a ticket, they are quickly surrounded by clan members yelling “Get out of here, this is our territory, fucking cop.” When officers are leaving work, they are followed home, or asked on their way out the door how their children are doing in school by clan members—who name the children, and the school.
Patriarch Issa Remmo arrived in Germany in 1995 and has thirteen children and fifteen siblings. He has always vehemently denied any criminal activity, insisting he is nothing more than a real estate investor and restaurateur. He has posed for photo shoots in crisp dress shirts, pouring coffee in a standard suburban backyard, promoting the image of himself as unassuming entrepreneur. Nonetheless, his family—especially his children—continually find themselves in court.
\*
With the information they obtained from undercover sources, the Berlin Police got to work. They began monitoring the communications of numerous members of the Remmo clan. Police suspected talk of the museum robbery was being restricted to encrypted message services. But the police did get an investigative foothold when they became aware of a twenty-year-old man named Denis W.
Denis W. had started working at the Bode Museum only twenty-six days before the theft. More significantly, he was known to be a school friend of one of the suspects, Ahmed Remmo. A week after the theft, he had also drawn attention to himself through a sudden financial windfall. He had invested thousands of dollars in a local bakery, he had been luxury car shopping, and he was seen wearing a new 11,000-euro necklace. The police had found the inside man.
A police officer remembered Denis W. from three weeks before the theft. He had pulled him over for filling up at a gas station, then driving off without paying, all while using a fake license plate in case cameras caught the act. The officer at the time had noticed Bode Museum floor plans in the back seat, as well as screwdrivers and nylon gloves in the trunk. Later, it would also be discovered that Denis W. had photos of the museum that corresponded with the thieves escape route.
A bigger breakthrough on the case came when a raid was executed on July 12, 2017. Among the targets were the Big Maple Leaf coin suspects, and more evidence was found. Police found an app on Wissam Remmos cell phone for calculating gold prices. His search history unearthed queries for equipment that could melt gold, along with news updates on the heist. His camera roll included screenshots of Google Map directions that appeared to indicate the thieves getaway route. In his apartment, they found gloves with glass fragments that matched the museum window the thieves had entered through.
Police found a piece of paper listing current gold values with Ahmed Remmos fingerprints on it in a kitchen spice rack. Between all the suspects, the police found clothes—a rare Armani jacket seen in the CCTV footage, gloves, shoes—that had small gold particles on them, which police hoped would match the coin. 
All of it was damning evidence, though at risk of being deemed circumstantial. But it was enough for the police to arrest the suspects the day of the raid, pursue an indictment, and set the trial process into motion.
\*
The police were eager to involve the state as soon as possible. 
The state attorneys office was now part of a three-prong attack underway against the clans, and here was a significant chance to gain ground in the battle. But convictions against clan members are rare: the criminal organizations wealth allows them to intimidate witnesses to recant their testimony, as well as afford the citys best defense lawyers, eager to chip away at any perceived vulnerabilities in the prosecutions case.
Even a pinch of doubt could mean the panel of judges (there are no juries in German courts) refusing to convict. If there was a successful conviction, the impact on the clans could be minor. Time in prison can be as comfortable for clan members as life on the outside. And jail time was often perceived to be a means of proving oneself. (“Prison makes men,” is a common expression among the clans). Clans often use members who are under twenty-one to commit more overt crimes so that they will be tried in more lenient youth courts.
But a successful outcome for the clans wouldnt necessarily spare the parties involved from anger. On July 17, 2019, patriarch Issa Remmos son was cleared of murder. Remmo began yelling in the court room at the prosecutor. “I know you, and everyone who works with you … I am a clean person. I have respect for the court, for the police. I have respect for this country, but absolutely none for you.” Outside the courthouse, he continued in front of the cameras of Spiegel TV. Addressing informants, he said, “I know you … As god is my witness, I will fuck your sisters.”
The trial for the coin heist began in January 2019. The suspects covered their faces with magazines to protect themselves from the press, and none of their family or friends were in attendance. They sat still and silent in the courtroom as the charges were read, only speaking to confirm their names and professions. (They told the judges they were students and couriers).
Over the course of several court dates scattered over months, the details of what happened the night of the Big Maple Leaf coin theft were laid out. Museum employees explained the security gaps that had led to the window alarm being inoperable. The guard on duty that night was questioned about his movements. He shared how haunted he was by those who refused to believe he hadnt heard or seen anything that night, and shared the anxiety he has suffered since. Police investigators testified about searching the crime scene and their investigation of the Remmos that led to the arrests. Experts were brought in to connect suspects to the thefts and the evidence. An ex-girlfriend of Ahmed Remmo, who had told investigators about him hiding tools and bragging about being a millionaire, was called to the stand. (She retracted her comments once there). Ernst Pernicka, an archaeometrist, provided critical evidence linking the gold particles found on the thieves clothes to the giant coin.  
On February 20, 2020, all parties gathered to hear what verdict had been reached. 
After acknowledging the theft at the heart of the case was “the coup of a lifetime,” judge Dorothee Prüfer passed down the courts decision.
Denis W. received three years and four months of prison time. He was fined 100,000 euros, his presumed cut for being the inside man.
Wissam and Ahmed Remmo were sentenced to four years and five months (priors for assault and breaking and entering led to longer sentences). They were fined 3.3 million euros, the estimated value of the coin at the time.
Wayci Remmo was released due to a lack of evidence tying him to the crime.
The three mens defense lawyers attempted to appeal the verdict, which was denied in July 2021. It likely didnt help that Wissam Remmo became a suspect— and was eventually arrested—for another spectacular crime in 2019: the robbery of the Green Vault, a museum in Dresden. The haul? Royal jewelry some estimate to be worth 113 million euros or more.
\*
One question remains: What happened to the Big Maple Leaf coin?
It was never recovered and nobody believes it still exists intact. It was impossible to sell as is, so it was likely broken apart or melted. Its presumed fate evokes another quote that had been on display in the Bode Museum that night it was stolen, not far from where the Big Maple Leaf Coin stood. The author bemoans what he considers the worst fates that can befall a society. Theres war, plague, and famine. He then adds debasement—the destruction of a currencys value. Its likely no single piece of currency has been so stripped of so much value. And yet, another value remains. One that now lingers, like fine gold dust, on all those who came in touch with it.
&emsp;
&emsp;
---
`$= dv.el('center', 'Source: ' + dv.current().Link + ', ' + dv.current().Date.toLocaleString("fr-FR"))`

@ -0,0 +1,61 @@
---
Tag: ["🤵🏻", "📰", "🇷🇺", "🇺🇸"]
Date: 2023-04-03
DocType: "WebClipping"
Hierarchy:
TimeStamp: 2023-04-03
Link: https://www.newyorker.com/news/daily-comment/the-unimaginable-horror-of-a-friends-arrest-in-moscow
location:
CollapseMetaTable: true
---
Parent:: [[@News|News]]
Read:: 🟥
---
&emsp;
```button
name Save
type command
action Save current file
id Save
```
^button-TheHorrorofEvanGershkovichArrestinMoscowNSave
&emsp;
# The Unimaginable Horror of Evan Gershkovichs Arrest in Moscow
Evan Gershkovich.Photograph from AFP / Getty
On Wednesday, the Russian state security service, the F.S.B., arrested my friend Evan. Evan Gershkovich, a thirty-one-year-old reporter for the *Wall Street Journal* and the son of Soviet-born émigrés who came to the U.S. in the late seventies, was detained while on a reporting trip to Yekaterinburg, a city more than a thousand miles east of Moscow. I learned of the news the following day, when he was brought to Moscow, formally charged with espionage in a closed hearing, and ordered to be held in Lefortovo Prison awaiting trial, which could send him to prison for as long as twenty years.
I met Evan five years ago, not long after he arrived in Moscow as a twentysomething reporter full of ideas, hustle, and smarts. He was funny, acerbic, and kindhearted, not to mention a skilled chef—he had spent several months in the kitchen of a serious New York City restaurant before he turned to journalism. We cooked together, went to the *banya* together, partied together.
Above all, Evan is a hell of a reporter, industrious and energetic. He filed stories for the Moscow *Times*, his first journalistic home, that often scooped the rest of the Western press corps. During the pandemic, he spoke to Russian medical students forced to treat *COVID* patients and to statisticians who feared that the state was manipulating data on *COVID* deaths. In January, 2022, after a stint at Agence France-Presse, he started at the *Journal*. He was happy; his friends were proud of him. He had pulled off what he had worked so hard for: a staff job with a major American newspaper, covering a place that meant so much to him. Russia could be maddening and fascinating in equal measure, but never boring or unimportant.
In the years before Russias invasion of Ukraine, people in the U.S. often asked how foreign correspondents managed to do their jobs in a place like [Vladimir Putin](https://www.newyorker.com/tag/vladimir-putin)s Russia. During my and Evans time there, the country shifted in an unmistakably repressive direction, transitioning from an autocracy that pretended, however flimsily, to be a democracy to a state that didnt bother hiding its claws. The Russia story became more monotone, less a madcap collision of wealth and opportunity and ambition—as it had been in the early Putin years—than one increasingly defined by menace and violence. The space for independent journalism, however marginal and niche it had been already, shrunk even further.
Our Russian journalist friends faced countless pressure and constraints, mainly of the financial and professional kind—one independent outlet after another closed down or was forced to—but more immediate dangers were also ever present. In the summer of 2019, Ivan Golunov, an investigative reporter for [Meduza](https://www.newyorker.com/magazine/2023/03/13/how-russian-journalists-in-exile-are-covering-the-war-in-ukraine), a news site based in Riga, was arrested on a fabricated drug charge, apparently in retaliation for his coverage of corruption in the Moscow burial industry. He was freed after four days, the result of mass protests organized by his journalistic colleagues.
But Golunovs enemies were local, relatively small-time criminals, not the truly powerful ones who occupy top positions in the Kremlin and F.S.B. If you were up against forces like that, your fate could be very different. In 2020, Ivan Safronov, a former journalist for *Kommersant*, a once serious, hard-hitting daily in Moscow that had morphed into something more safe and milquetoast, was arrested on charges of espionage. Supposedly, his coverage of the sale of Russian fighter jets was secret cover for his dealings with Czech intelligence services. This story was as unconvincing as it sounds, but, in 2022, Safronov was sentenced to twenty-two years in prison. He remains there today.
Yet, for a long time, arrests were rare. So were physical attacks. The macabre insight of the Russian state and its security services was that you didnt have to jail or kill that many reporters for the rest to get the hint. The Kremlin preferred more banal, quasi-legalistic methods of constraining the work of individual journalists, such as designating them “foreign agents,” a label that comes with all manner of burdensome administration, and which scares off sources and contacts. Whole outlets—such as Proekt, an investigative Web site founded by reporters who banded together after their previous outlets were shuttered—were deemed “undesirable,” and this, in effect, criminalized just about everything connected to them. Proekt was forced to shut down; five of its journalists were named “foreign agents.”
What was hard to explain—to our friends and family back home, to our editors, even to ourselves—was the degree to which we, as foreign correspondents, continued to occupy a position of relative privilege and safety. The bosses and owners of our media organizations were in New York; they couldnt readily be pressured or blackmailed. Putin cant close down the *Wall Street Journal* or *The New Yorker*. But, on a more basic level, we werent worth the trouble: our audiences were far away, and nothing published in English was going to threaten Putins hold on power or the stability of the political system. And the Kremlin long ago gave up caring about its image in the West. So we were largely left alone to report and write as we pleased.
Then came the war. Last February, Russia invaded [Ukraine](https://www.newyorker.com/tag/ukraine), and what had been a gradual process of shrinking freedoms took on new speed. [TV Rain](https://www.newyorker.com/news/dispatch/russia-blocks-its-last-independent-television-channel), an independent television channel with a large online following, was taken off the air and banned entirely. So was [Echo Moskvy](https://www.newyorker.com/magazine/2008/09/22/echo-in-the-dark), a liberal-leaning radio station. A package of wartime censorship laws, passed on March 4, 2022, criminalized virtually any honest, factual reporting on Russias invasion. Just about every Russian journalist who Evan and I knew [fled the country](https://www.newyorker.com/magazine/2022/03/28/the-russians-fleeing-putins-wartime-crackdown) within a matter of days; those who stayed had no choice but to leave the profession. I was in Ukraine at the time; Evan was in Moscow. He quickly left Russia, too, unsure of how to continue to do his job under such conditions.
But then, over the summer, he went back. His Russian visa and journalistic accreditation were still valid, and it seemed like the old logic might still apply: foreigners could get away with reporting that would be far more problematic, if not off limits entirely, for Russians. The *Times* and the *Guardian*, among others, had correspondents who cycled through Russia. Evan and I spoke a lot about his choice. He felt that he had the rare journalistic privilege of reporting from the country that had launched the largest land war in Europe since the Second World War, and that understanding what both the élite and the wider population felt about that was an urgent journalistic assignment. The magnetic tug of duty and curiosity made sense to me. In fact, on some level, I was jealous.
Evan came and went from Moscow. He told me of the strange paradox of life in the capital: the context for everything—politics, the economy, how people related to one another—had changed, perhaps irreparably, but on the surface it often felt like things remained the same as ever. In July, he [wrote](https://www.wsj.com/articles/in-russias-biggest-cities-ukraine-war-fades-to-background-noise-11656670347) about the maniacal drive among many in Moscow to act as if everything were normal; he reported from verandas and courtyard parties, an experience that was dizzying and a bit soul-crushing. “While the police patrolling Moscows streets are now armed with assault rifles, they are busier handing out fines for public drinking than putting down dissent,” he wrote.
&emsp;
&emsp;
---
`$= dv.el('center', 'Source: ' + dv.current().Link + ', ' + dv.current().Date.toLocaleString("fr-FR"))`

@ -0,0 +1,191 @@
---
Tag: ["🤵🏻", "📰"]
Date: 2023-04-03
DocType: "WebClipping"
Hierarchy:
TimeStamp: 2023-04-03
Link: https://www.washingtonpost.com/opinions/2023/03/24/journalism-objectivity-trump-misinformation-marty-baron/
location:
CollapseMetaTable: true
---
Parent:: [[@News|News]]
Read:: 🟥
---
&emsp;
```button
name Save
type command
action Save current file
id Save
```
^button-WewantobjectivejudgesWhynotjournaliststooNSave
&emsp;
# We want objective judges and doctors. Why not journalists too?
(Video: Michelle Kondrich/The Washington Post)
*Martin Baron was executive editor of The Post from January 2013 through February 2021 and, before that, editor of the Boston Globe for more than 11 years. His book, “Collision of Power: Trump, Bezos, and The Washington Post,” is to be published in October. This essay is adapted from a speech he gave March 16 as part of the Richman Fellowship at Brandeis University.*
Objectivity in journalism has attracted a lot of attention lately. It also is a subject that has suffered from confusion and an abundance of distortion.
Im about to do something terribly unpopular in my profession these days: Defend the idea.
Lets step back a bit. First, a dictionary definition of objectivity. This is from Merriam-Webster: “expressing or dealing with facts or conditions as perceived without distortion by personal feelings, prejudices, or interpretations.”
Thats of some, but limited, help in understanding the idea. Let me suggest thinking about objectivity in the context of other professions. Because as journalists, and as citizens, we routinely expect objectivity from professionals of every sort.
We want objective judges. We want objective juries. We want front-line police officers to be objective when they make arrests and detectives to be objective in conducting investigations. We want prosecutors to evaluate cases objectively, with no preexisting bias or agendas. In short, we want justice to be equitably administered. Objectivity — which is to say a fair, honest, honorable, accurate, rigorous, impartial, open-minded evaluation of the evidence — is at the very heart of equity in law enforcement.
We want doctors to be objective in their diagnoses of the medical conditions of their patients. We dont want them recommending treatments based on hunches or superficial, subjective judgments about their patients. We want doctors to make a fair, honest, honorable, accurate, rigorous, impartial, open-minded evaluation of the clinical evidence.
We want medical researchers and government regulators to be objective in determining whether new drugs might work and whether they can be taken safely. We want scientists to be objective in evaluating the impact of chemicals in the soil, air and water. In short, we want to know with confidence that we can live in healthful conditions, without injury to our children, our parents, our friends or ourselves.
Objectivity among science and medical professionals is at the very heart of our faith in the food we eat, the water we drink, the air we breathe and the medicines we take.
In business, too, we want objectivity. We want applicants for bank loans to be considered objectively, based on valid criteria about collateral and borrowers capacity to repay debt — not on biases about race and ethnicity. The same goes for credit cards, where access to the consumer marketplace should rest on objective standards and not on prejudices or flawed assumptions about who qualifies as a good risk and who does not.
The concept of objectivity in all these fields gets no argument from journalists. We accept it, embrace it, insist on it. Journalists investigate when we find it missing, particularly when it leads to acts of injustice.
And today — in an era of misinformation, disinformation and crackpot conspiracy theories that poison our politics and threaten the public health — we rightly ask leaders of all sorts to face up to “objective reality,” or what we commonly call truth.
Of course, objectivity is not always achieved. Judges, police and prosecutors dont always act without bias. Scientists sometimes succumb to wishful thinking or manipulate data in a dishonest pursuit of professional glory. In business, bias has inflicted profound, enduring damage on marginalized communities by barring full participation in the economy.
But failure to achieve standards does not obviate the need for them. It does not render them outmoded. It makes them more necessary. And it requires that we apply them more consistently and enforce them more firmly.
Most in the public, in my experience, expect my profession to be objective, too. Dismissing their expectations — outright defying them — is an act of arrogance. It excuses our biases. It enshrines them. And, most importantly, it fails the cause of truth.
Increasingly now, journalists — particularly a rising generation — are repudiating the standard to which we routinely, and resolutely, hold others.
These critics of objectivity among journalism professionals, encouraged and enabled by many in the academic world, are convinced that journalism has failed on multiple fronts and that objectivity is at the root of the problem.
Various arguments are made:
First, that no one can be truly objective — that we all have opinions. Why not admit them? Why hide them? Were not being honest if we do.
Second, that true objectivity is unattainable. Our views shape every choice we make in practicing journalism — from the stories we select to pursue, to the people we interview, to the questions we ask, to the ways we write stories. So, if genuine objectivity is beyond reach, the argument goes, lets not pretend were practicing it and lets not even try.
Third, that objectivity is just another word for false balance, false equivalence, neutrality, both-sidesism and “on the one hand, on the other hand” journalism. According to this argument, objectivity is nothing more than an effort to insulate ourselves from partisan criticism: When the evidence points overwhelmingly in one direction, we deceitfully suggest otherwise.
Ultimately, critics consider the idea of objectivity antithetical to our mission overall: The standard is a straitjacket, the argument goes. We cant tell it like it is. The practical effect is to misinform. Moral values are stripped from our work. The truth gets buried.
Many journalists have concluded that our profession has failed miserably to fulfill its responsibilities at a perilous moment in history. Their evidence is that Donald Trump got elected in the first place, despite his lies, nativism, brutishness and racist and misogynistic language; that Donald Trump still maintains a strong grip on Republican politicians and so much of the American public; and that so many American voters refuse to accept basic facts, that they reject reason and logic and evidence, and get swept up in outlandish conspiratorial thinking.
Had we not been constrained by standards like objectivity, critics believe, we would have been more faithful to our professions truth-telling mission. American politics might be different. People could better sift truth from lie.
There is also the view that we have never actually been reliable truth-tellers. That what we call “objective” is, in fact, *subjective*.
Objectivitys detractors note, with merit, that American media have been dominated by White males. Historically, the experiences of women, people of color and other marginalized populations have not been adequately told — or told at all. What White males consider objective reality isnt that at all, they say. Its really nothing more, in their view, than the world seen from the White male perspective.
Thats the criticism. So, where did this idea of objectivity come from? And how did it become a journalistic standard in the first place? The origins are a bit murky, but they are typically traced to about a century ago.
In 1920, Walter Lippmann, a renowned American journalist, published “Liberty and the News.” He was one of the most influential advocates for the idea of “objectivity” in journalism. In that brief collection of essays, he sought to advance the concept.
For context, here is what he had to say about his own era. It should have a familiar ring.
“There is everywhere an increasingly angry disillusionment about the press, a growing sense of being baffled and misled.” He saw an onslaught of news that comes “helter-skelter, in inconceivable confusion” and a public “protected by no rules of evidence.”
He feared an environment where people, as he [put it](https://cdn.theatlantic.com/media/archives/1919/11/124-5/132353920.pdf), “cease to respond to truths, and respond simply to opinions … what somebody asserts, not what actually is.”
“The cardinal fact,” he said, “is the loss of contact with objective information.” And he worried that people “believe whatever fits most comfortably with their prepossessions.”
His diagnosis was much like what causes us so much worry today: Democratic institutions were threatened. He saw journalism as essential to democracy. But to properly serve its purpose, journalism — in his view — needed standards.
“Without protection against propaganda,” he wrote, “without standards of evidence, without criteria of emphasis, the living substance of all popular decision is exposed to every prejudice and to infinite exploitation. … There can be no liberty for a community which lacks the information by which to detect lies.”
Lippmann was seeking a means for countering the propaganda of his time. He well understood the tools for manipulating public opinion. He himself participated in the propaganda machine of the Woodrow Wilson administration. He saw how propaganda of the early 20th century carried the world into the slaughter of World War I, and how public sentiment could be influenced and exploited through calculated effort. And he called this propaganda emanating from government the “manufacture of consent.”
[
Leonard Downie Jr.
---
counterpointNewsrooms that move beyond objectivity can build trust
](https://www.washingtonpost.com/opinions/2023/01/30/newsrooms-news-reporting-objectivity-diversity/?itid=cn)
Lippmann recognized that we all have our preconceptions. But he wrote that “we shall accomplish more by fighting for truth than by fighting for our theories.” And so he called for as “impartial an investigation of the facts as is humanly possible.” Which is where the idea of objectivity came in: as impartial an investigation of the facts as is humanly possible.
Our job as journalists, as he saw it, was to determine the facts and place them in context. The goal should be to have our work be as scientific as we could make it. Our research would be conscientious and careful. We would be guided by what the evidence showed. That meant we had to be generous listeners and eager learners, especially conscious of our own suppositions, prejudices, preexisting opinions and limited knowledge.
So, when I defend objectivity, I am defending it as it was originally defined and defending what it really means. The true meaning of objectivity is not the straw man that is routinely erected by critics so that they can then tear it down.
Objectivity is not neutrality. It is not on-the-one-hand, on-the-other-hand journalism. It is not false balance or both-sidesism. It is not giving equal weight to opposing arguments when the evidence points overwhelmingly in one direction. It does not suggest that we as journalists should engage in meticulous, thorough research only to surrender to cowardice by failing to report the facts weve worked so hard to discover.
The goal is not to avoid criticism, pander to partisans or appease the public. The aim is not to win affection from readers and viewers. It does not require us to fall back on euphemisms when we should be speaking plainly. It does not mean we as a profession labor without moral conviction about right and wrong.
Nor was the principle of objectivity “meant to imply that journalists were free of bias,” as Tom Rosenstiel, a professor of journalism at the University of Maryland and former executive director of the American Press Institute, and Bill Kovach, a former top editor, wrote in their book, “The Elements of Journalism.” “Quite the contrary,” [they noted](https://www.americanpressinstitute.org/journalism-essentials/bias-objectivity/lost-meaning-objectivity/). The term arose “out of a growing recognition that journalists were *full* of bias, often unconsciously. Objectivity called for journalists to develop a consistent method of testing information — a transparent approach to evidence — precisely so that personal and cultural biases would not undermine the accuracy of their work.”
As Rosenstiel and Kovach pointed out, “*the method* is objective, not the journalist,” and “the key was in the *discipline* of the craft.”
The idea is to be open-minded when we begin our research and to do that work as conscientiously as possible. It demands a willingness to listen, an eagerness to learn — and an awareness that there is much for us to know.
We dont start with the answers. We go seeking them, first with the already formidable challenge of asking the right questions and finally with the arduous task of verification.
Its not that we know nothing when we embark on our reporting. It is that we dont know everything. And typically we dont know much, or perhaps even most, of what we should. And what we think we know may not be right or may be missing important pieces. And so we set out to learn what we do not know or do not fully understand.
I call that reporting. If thats not what we mean by genuine reporting, what exactly do we mean?
I believe our profession would benefit from listening more *to* the public and from talking less *at* the public, as if we knew it all. I believe we should be more impressed with what we dont know than with what we know — or think we know. In journalism, we could use more humility — and less hubris.
We of course want journalists to bring their life experiences to their jobs. The collective life experiences of all of us in a newsroom are an invaluable resource of ideas and perspectives. But every individuals life experience is, inescapably, narrow. Life experience can inform us. But, lets be honest, it can also limit us. There is an immense universe beyond the lives we ourselves have lived. And if there are constraints on our ability to understand a world beyond our own, we as journalists should strive to overcome them.
I made a statement in my retirement note to staff in early 2021 that reflects my belief: “We start with more questions than answers, inclined more to curiosity and inquiry than to certitude. We always have more to learn.”
This gets at a point that my longtime friend and competitor, Dean Baquet, then executive editor of the New York Times, eloquently articulated in a speech in 2021. I wholeheartedly embrace his perspective.
Dean said: “My theory, secretly shared by many editors I know and respect, is that one of the major crises in our profession is the erosion of the primacy of reporting.”
“There is not enough talk about the beauty of open-minded and empathetic reporting and the fear that its value will fade in an era where hot takes, quick analysis and riffs are held in such high esteem. …”
“Certainty,” Dean said, “is one of the enemies of great reporting.” And he called upon reporting to be “restored to the center.”
Dean quoted Jason DeParle, the New York Timess superb reporter on poverty in America: “The great lesson of reporting,” Jason said, “is that the world is almost always more complicated and unlikely than it seems while sitting at your desk.”
None of these statements argues for false balance. They argue for genuine understanding of all people and perspectives and a receptivity to learning unfamiliar facts.
None argue for ignoring or soft-pedaling the revelations of our reporting. They are arguments for exhaustively thorough and open-minded research.
None of them are arguments against moral values in our work. Of course, we as a profession must have a moral core, and it begins with valuing truth, equal and fair treatment of all people, giving voice to the voiceless and the vulnerable, countering hate and violence, safeguarding freedom of expression and democratic values, and rejecting abuses of power.
All of them, however, suggest we avoid self-appointment as moral authorities. All are arguments against stories that are precooked before a lick of research is conducted, where source selection is an exercise in confirmation bias and where comment is sought (often at the last minute) only because its required and not as an essential ingredient of honest inquiry.
All argue against a madcap rush to social media soapboxes with spur-of-the-moment feelings or irrepressible snark and virtue signaling.
All of them are arguments for acknowledging our limitations — for simultaneously opening the aperture of journalism and going deeper. That is the simple demand of objectivity and what, to me, is its unarguable point.
To those today who say that the media needs to be explicitly pro-democracy, I would say this: Every newspaper Ive ever worked for always has been. They have been vigorously protecting democracy for decades. How is it possible that you failed to notice?
One of the ways those news organizations protected democracy was by holding government and other powerful interests accountable.
When The Washington Post broke open the Watergate scandal in the early 1970s, President Richard Nixon, along with his aides and allies, portrayed The Posts journalists as liars and political opponents. In the end, their reporting was vindicated, and ultimately the Nixon administration was held to account for abuse of power, criminal behavior and obstruction of justice.
When the New York Times first published the Pentagon Papers, the secret official history of the Vietnam War, it was accused of treason and threatened with criminal prosecution on the grounds that it had revealed classified information. So was The Washington Post, which began publishing the Pentagon Papers shortly afterward. But what was the government really trying to conceal from the public? How it had deceived American citizens about the war and its progress. The Times and The Post stood their ground on behalf of informing the American public.
When the Boston Globe in 2002 exposed a decades-long coverup of sexual abuse by clergy in the Catholic Church, we were taking on what was then the most powerful institution in New England. There was every chance that the large Catholic population of the region would react by canceling subscriptions. But we did our work anyway, exposing how the Church had betrayed parishioners and its own principles. The repercussions continue today — within dioceses throughout the world and within the Vatican itself.
Today, the question is commonly asked: Was the media, in adhering to traditional standards, up to the task of covering a government led by Donald Trump, with his pattern of mendacity and anti-democratic impulses?
And yet virtually everything the public knows about his lies and his abuse of power is because of the work of mainstream news organizations.
There is no profession without flaws. There is not one that always fulfills its highest ideals. Journalism is by no means an exception. We have often failed, embarrassingly and egregiously. We often did harm: Through errors of commission and errors of omission. Because of haste and neglect. Because of prejudice and arrogance.
But our failures were not ones of principle. They were failures to live up to principle.
We can — and should — have a vigorous debate about how a democracy and the press can serve the public better. But the answer to our failures as a society and as a profession is not to renounce principles and standards. There is far too much of that taking place in todays America. The answer is to restate our principles, reinforce them, recommit to them and do a better job of fulfilling them.
&emsp;
&emsp;
---
`$= dv.el('center', 'Source: ' + dv.current().Link + ', ' + dv.current().Date.toLocaleString("fr-FR"))`

@ -72,7 +72,7 @@ style: number
- [x] ☕ Coffee ✅ 2022-03-01
- [x] 🍶 Coke 0 ✅ 2022-03-14
- [x] 🧃 Apfelschorle ✅ 2022-12-21
- [x] 🍊 Morning juice ✅ 2023-03-18
- [ ] 🍊 Morning juice
- [x] 🍺 Beer ✅ 2022-02-06
&emsp;
@ -86,7 +86,7 @@ style: number
#### Dairy
- [x] 🧈 Beurre ✅ 2023-03-18
- [ ] 🧈 Beurre
- [x] 🧀 Fromage à servir ✅ 2023-03-06
- [x] 🧀 Fromage rapé ✅ 2023-03-06
- [x] 🧀 Parmeggiano ✅ 2023-03-06
@ -102,7 +102,7 @@ style: number
#### Breakfast
- [x] 🥯 Bread ✅ 2023-03-11
- [x] 🍯 Honey/Jam ✅ 2023-03-18
- [ ] 🍯 Honey/Jam
- [x] 🍫 Nutella ✅ 2022-02-15
- [x] 🥚 Eggs ✅ 2023-03-11

@ -79,7 +79,8 @@ style: number
- [x] ♻ [[Household]]: *Paper* recycling collection %%done_del%% 🔁 every 2 weeks on Tuesday 📅 2023-02-28 ✅ 2023-02-27
- [x] ♻ [[Household]]: *Paper* recycling collection %%done_del%% 🔁 every 2 weeks on Tuesday 📅 2023-02-14 ✅ 2023-02-13
- [x] ♻ [[Household]]: *Paper* recycling collection %%done_del%% 🔁 every 2 weeks on Tuesday 📅 2023-01-31 ✅ 2023-01-30
- [ ] ♻ [[Household]]: *Cardboard* recycling collection %%done_del%% 🔁 every 2 weeks on Tuesday 📅 2023-04-04
- [ ] ♻ [[Household]]: *Cardboard* recycling collection %%done_del%% 🔁 every 2 weeks on Tuesday 📅 2023-04-18
- [x] ♻ [[Household]]: *Cardboard* recycling collection %%done_del%% 🔁 every 2 weeks on Tuesday 📅 2023-04-04 ✅ 2023-04-03
- [x] ♻ [[Household]]: *Cardboard* recycling collection %%done_del%% 🔁 every 2 weeks on Tuesday 📅 2023-03-21 ✅ 2023-03-21
- [x] ♻ [[Household]]: *Cardboard* recycling collection %%done_del%% 🔁 every 2 weeks on Tuesday 📅 2023-03-07 ✅ 2023-03-06
- [x] ♻ [[Household]]: *Cardboard* recycling collection %%done_del%% 🔁 every 2 weeks on Tuesday 📅 2023-02-21 ✅ 2023-02-20
@ -95,7 +96,8 @@ style: number
- [ ] 🛎 🛍 REMINDER [[Household]]: Monthly shop in France %%done_del%% 🔁 every month on the last Saturday 🛫 2023-04-03 📅 2023-04-29
- [x] 🛎 🛍 REMINDER [[Household]]: Monthly shop in France %%done_del%% 🔁 every month on the last Saturday 🛫 2023-02-27 📅 2023-03-25 ✅ 2023-03-21
- [x] 🛎 🛍 REMINDER [[Household]]: Monthly shop in France %%done_del%% 🔁 every month on the last Saturday 🛫 2023-01-30 📅 2023-02-25 ✅ 2023-02-20
- [ ] 🛎 🧻 REMINDER [[Household]]: check need for toilet paper %%done_del%% 🔁 every week 📅 2023-04-03
- [ ] 🛎 🧻 REMINDER [[Household]]: check need for toilet paper %%done_del%% 🔁 every week 📅 2023-04-10
- [x] 🛎 🧻 REMINDER [[Household]]: check need for toilet paper %%done_del%% 🔁 every week 📅 2023-04-03 ✅ 2023-04-03
- [x] 🛎 🧻 REMINDER [[Household]]: check need for toilet paper %%done_del%% 🔁 every week 📅 2023-03-27 ✅ 2023-03-25
- [x] 🛎 🧻 REMINDER [[Household]]: check need for toilet paper %%done_del%% 🔁 every week 📅 2023-03-20 ✅ 2023-03-20
- [x] 🛎 🧻 REMINDER [[Household]]: check need for toilet paper %%done_del%% 🔁 every week 📅 2023-03-13 ✅ 2023-03-10
@ -104,7 +106,8 @@ style: number
- [x] 🛎 🧻 REMINDER [[Household]]: check need for toilet paper %%done_del%% 🔁 every week 📅 2023-02-20 ✅ 2023-02-20
- [x] 🛎 🧻 REMINDER [[Household]]: check need for toilet paper %%done_del%% 🔁 every week 📅 2023-02-13 ✅ 2023-02-12
- [x] 🛎 🧻 REMINDER [[Household]]: check need for toilet paper %%done_del%% 🔁 every week 📅 2023-02-06 ✅ 2023-02-04
- [ ] :bed: [[Household]] Change bedsheets %%done_del%% 🔁 every 2 weeks on Saturday 📅 2023-04-01
- [ ] :bed: [[Household]] Change bedsheets %%done_del%% 🔁 every 2 weeks on Saturday 📅 2023-04-15
- [x] :bed: [[Household]] Change bedsheets %%done_del%% 🔁 every 2 weeks on Saturday 📅 2023-04-01 ✅ 2023-04-03
- [x] :bed: [[Household]] Change bedsheets %%done_del%% 🔁 every 2 weeks on Saturday 📅 2023-03-18 ✅ 2023-03-18
- [x] :bed: [[Household]] Change bedsheets %%done_del%% 🔁 every 2 weeks on Saturday 📅 2023-03-04 ✅ 2023-03-01
- [x] :bed: [[Household]] Change bedsheets %%done_del%% 🔁 every 2 weeks on Saturday 📅 2023-02-18 ✅ 2023-02-17

@ -0,0 +1,97 @@
---
type: "movie"
subType: null
title: "Thank You for Smoking"
englishTitle: "Thank You for Smoking"
year: "2005"
dataSource: "OMDbAPI"
url: "https://www.imdb.com/title/tt0427944/"
id: "tt0427944"
genres:
- "Comedy"
- "Drama"
producer: "Jason Reitman"
duration: "92 min"
onlineRating: 7.5
actors:
- "Aaron Eckhart"
- "Cameron Bright"
- "Maria Bello"
image: "https://m.media-amazon.com/images/M/MV5BMTI2MDk5MjE4NV5BMl5BanBnXkFtZTYwMjkwNTU3._V1_SX300.jpg"
released: true
streamingServices:
premiere: "14/04/2006"
watched: true
lastWatched: "[[2023-04-03]]"
personalRating: 7
CollapseMetaTable: true
---
Parent:: [[@Cinematheque]]
---
```dataviewjs
dv.paragraph(`> [!${dv.current().watched ? 'SUCCESS' : 'WARNING'}] ${dv.current().watched ? 'last watched on ' + dv.current().lastWatched : 'not yet watched'}`)
```
&emsp;
# `$= dv.current().title`
&emsp;
`$= dv.current().watched ? '**Rating**: ' + dv.current().personalRating + ' out of 10' : ''`
```toc
```
&emsp;
### Details
&emsp;
**Genres**:
`$= dv.current().genres.length === 0 ? ' - none' : dv.list(dv.current().genres)`
`$= !dv.current().released ? '**Not released** The movie is not yet released.' : ''`
&emsp;
```dataview
list without id
"<table><tbody><tr><td><a class=heading>Type</a></td>"
+
"<td><span style='color: var(--footnote);'>" + this.type + "</span></td></tr>"
+
"<tr><td><a class=heading>Online Rating</a></td>"
+
"<td><span style='color: var(--footnote);'>" + this.onlineRating + "</span></td></tr>"
+
"<tr><td><a class=heading>Duration</a></td>"
+
"<td><span style='color: var(--footnote);'>" + this.duration + "</span></td></tr>"
+
"<tr><td><a class=heading>Premiered</a></td>"
+
"<td><span style='color: var(--footnote);'>" + this.premiere + "</span></td></tr>"
+
"<tr><td><a class=heading>Producer</a></td>"
+
"<td><span style='color: var(--footnote);'>" + this.producer + "</span></td></tr></tbody></table>"
FROM "03.04 Cinematheque/Thank You for Smoking (2005)"
```
&emsp;
---
&emsp;
### Poster
&emsp;
`$= '![Image|360](' + dv.current().image + ')'`

@ -0,0 +1,98 @@
---
type: "movie"
subType: null
title: "The Guard"
englishTitle: "The Guard"
year: "2011"
dataSource: "OMDbAPI"
url: "https://www.imdb.com/title/tt1540133/"
id: "tt1540133"
genres:
- "Comedy"
- "Crime"
- "Thriller"
producer: "John Michael McDonagh"
duration: "96 min"
onlineRating: 7.3
actors:
- "Brendan Gleeson"
- "Don Cheadle"
- "Mark Strong"
image: "https://m.media-amazon.com/images/M/MV5BMTY2ODkzMDgwM15BMl5BanBnXkFtZTcwMDA1Mjg1OA@@._V1_SX300.jpg"
released: true
streamingServices:
premiere: "07/07/2011"
watched: true
lastWatched: "[[2023-04-06]]"
personalRating: 7
CollapseMetaTable: true
---
Parent:: [[@Cinematheque]]
---
```dataviewjs
dv.paragraph(`> [!${dv.current().watched ? 'SUCCESS' : 'WARNING'}] ${dv.current().watched ? 'last watched on ' + dv.current().lastWatched : 'not yet watched'}`)
```
&emsp;
# `$= dv.current().title`
&emsp;
`$= dv.current().watched ? '**Rating**: ' + dv.current().personalRating + ' out of 10' : ''`
```toc
```
&emsp;
### Details
&emsp;
**Genres**:
`$= dv.current().genres.length === 0 ? ' - none' : dv.list(dv.current().genres)`
`$= !dv.current().released ? '**Not released** The movie is not yet released.' : ''`
&emsp;
```dataview
list without id
"<table><tbody><tr><td><a class=heading>Type</a></td>"
+
"<td><span style='color: var(--footnote);'>" + this.type + "</span></td></tr>"
+
"<tr><td><a class=heading>Online Rating</a></td>"
+
"<td><span style='color: var(--footnote);'>" + this.onlineRating + "</span></td></tr>"
+
"<tr><td><a class=heading>Duration</a></td>"
+
"<td><span style='color: var(--footnote);'>" + this.duration + "</span></td></tr>"
+
"<tr><td><a class=heading>Premiered</a></td>"
+
"<td><span style='color: var(--footnote);'>" + this.premiere + "</span></td></tr>"
+
"<tr><td><a class=heading>Producer</a></td>"
+
"<td><span style='color: var(--footnote);'>" + this.producer + "</span></td></tr></tbody></table>"
FROM "03.04 Cinematheque/The Guard (2011)"
```
&emsp;
---
&emsp;
### Poster
&emsp;
`$= '![Image|360](' + dv.current().image + ')'`

@ -69,8 +69,10 @@ Tasks and potential enhancements for the webhosting of lebv.org
- [x] [[Hosting Tasks|Hosting]]: Explore the possibility to [[Hosting Tasks#Self-hosting|self-host]] ✅ 2021-09-16
- [ ] :fleur_de_lis: [[Hosting Tasks|Hosting]]: Explore the possibility of webhosting through [[Hosting Tasks#Decentralised hosting|decentralised services]] (Blockchain) 📅 2023-12-31
- [ ] :fleur_de_lis: [[Hosting Tasks|Hosting]]: [[Hosting Tasks#Backup procedure|backup]] the DB & Files %%done_del%% 🔁 every 3 months on the 1st Wednesday 📅 2023-04-05
- [ ] :fleur_de_lis: [[Hosting Tasks|Hosting]]: [[Hosting Tasks#PHP versioning|Check the php version]] of the website %%done_del%% 🔁 every 3 months on the 1st Wednesday 📅 2023-04-05
- [ ] :fleur_de_lis: [[Hosting Tasks|Hosting]]: [[Hosting Tasks#Backup procedure|backup]] the DB & Files %%done_del%% 🔁 every 3 months on the 1st Wednesday 📅 2023-07-05
- [x] :fleur_de_lis: [[Hosting Tasks|Hosting]]: [[Hosting Tasks#Backup procedure|backup]] the DB & Files %%done_del%% 🔁 every 3 months on the 1st Wednesday 📅 2023-04-05 ✅ 2023-04-06
- [ ] :fleur_de_lis: [[Hosting Tasks|Hosting]]: [[Hosting Tasks#PHP versioning|Check the php version]] of the website %%done_del%% 🔁 every 3 months on the 1st Wednesday 📅 2023-07-05
- [x] :fleur_de_lis: [[Hosting Tasks|Hosting]]: [[Hosting Tasks#PHP versioning|Check the php version]] of the website %%done_del%% 🔁 every 3 months on the 1st Wednesday 📅 2023-04-05 ✅ 2023-04-06
&emsp;

@ -172,26 +172,12 @@ For Obsidian in particular [GitHub](https://github.com) is used in coordination
The following Apps require a manual backup:
- [ ] :cloud: [[Storage and Syncing|Storage & Sync]]: Backup Standard Notes (PC) %%done_del%% 🔁 every 3 months on the 1st Friday 📅 2023-04-07
- [x] :cloud: [[Storage and Syncing|Storage & Sync]]: Backup Standard Notes (PC) %%done_del%% 🔁 every 3 months on the 1st Friday 📅 2023-01-06 ✅ 2023-01-03
- [x] :cloud: [[Storage and Syncing|Storage & Sync]]: Backup Standard Notes (PC) %%done_del%% 🔁 every 3 months on the 1st Friday 📅 2022-10-07 ✅ 2022-10-06
- [ ] Backup [[Storage and Syncing#Instructions for Anchor|Anchor Wallet]] %%done_del%% 🔁 every 3 months on the 1st Thursday 📅 2023-04-06
- [x] Backup [[Storage and Syncing#Instructions for Anchor|Anchor Wallet]] %%done_del%% 🔁 every 3 months on the 1st Thursday 📅 2023-01-05 ✅ 2023-01-03
- [x] Backup [[Storage and Syncing#Instructions for Anchor|Anchor Wallet]] %%done_del%% 🔁 every 3 months on the 1st Thursday 📅 2022-10-06 ✅ 2022-10-03
- [ ] Backup [[Storage and Syncing#Instructions for Anchor|Anchor Wallet]] %%done_del%% 🔁 every 3 months on the 1st Thursday 📅 2023-07-06
- [ ] :iphone: Backup [[Storage and Syncing#Instructions for iPhone|iPhone]] %%done_del%% 🔁 every 3 months on the 2nd Tuesday 📅 2023-04-11
- [x] :iphone: Backup [[Storage and Syncing#Instructions for iPhone|iPhone]] %%done_del%% 🔁 every 3 months on the 2nd Tuesday 📅 2023-01-10 ✅ 2023-01-06
- [x] :iphone: Backup [[Storage and Syncing#Instructions for iPhone|iPhone]] %%done_del%% 🔁 every 3 months on the 2nd Tuesday 📅 2022-10-11 ✅ 2022-10-11
- [ ] :floppy_disk: Backup [[Storage and Syncing#Instructions for FV|Folder Vault]] %%done_del%% 🔁 every 3 months on the 1st Friday 📅 2023-04-07
- [x] :floppy_disk: Backup [[Storage and Syncing#Instructions for FV|Folder Vault]] %%done_del%% 🔁 every 3 months on the 1st Friday 📅 2023-01-06 ✅ 2023-01-04
- [x] :floppy_disk: Backup [[Storage and Syncing#Instructions for FV|Folder Vault]] %%done_del%% 🔁 every 3 months on the 1st Friday 📅 2022-10-07 ✅ 2022-10-06
- [ ] :floppy_disk: Backup [[Storage and Syncing#Instructions for FV|Folder Vault]] %%done_del%% 🔁 every 3 months on the 1st Friday 📅 2023-07-07
- [x] :floppy_disk: Backup [[Storage and Syncing#Instructions for FV|Folder Vault]] %%done_del%% 🔁 every 3 months on the 1st Friday 📅 2023-04-07 ✅ 2023-04-06
- [ ] :cloud: [[Storage and Syncing|Storage & Sync]]: Backup Volumes to [[Sync|Sync.com]] %%done_del%% 🔁 every 3 months on the 2nd Monday 📅 2023-06-12
- [x] :cloud: [[Storage and Syncing|Storage & Sync]]: Backup Volumes to [[Sync|Sync.com]] %%done_del%% 🔁 every 3 months on the 2nd Monday 📅 2023-03-13 ✅ 2023-03-14
- [x] :cloud: [[Storage and Syncing|Storage & Sync]]: Backup Volumes to [[Sync|Sync.com]] %%done_del%% 🔁 every 3 months on the 2nd Monday 📅 2022-12-12 ✅ 2022-12-13
- [x] :cloud: [[Storage and Syncing|Storage & Sync]]: Backup Volumes to [[Sync|Sync.com]] %%done_del%% 🔁 every 3 months on the 2nd Monday 📅 2022-09-12 ✅ 2022-09-13
- [ ] :camera: [[Storage and Syncing|Storage & Sync]]: Transfer pictures to ED %%done_del%% 🔁 every 3 months on the 2nd Thursday 📅 2023-04-13
- [x] :camera: [[Storage and Syncing|Storage & Sync]]: Transfer pictures to ED %%done_del%% 🔁 every 3 months on the 2nd Thursday 📅 2023-01-12 ✅ 2023-01-06
- [x] :camera: [[Storage and Syncing|Storage & Sync]]: Transfer pictures to ED %%done_del%% 🔁 every 3 months on the 2nd Thursday 📅 2022-10-14 ✅ 2022-10-14
- [x] :camera: [[Storage and Syncing|Storage & Sync]]: Transfer pictures to ED %%done_del%% 🔁 every 3 months on the 2nd Thursday 📅 2022-10-13 ✅ 2022-10-13
&emsp;

@ -237,7 +237,8 @@ sudo bash /etc/addip4ban/addip4ban.sh
#### Ban List Tasks
- [ ] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix %%done_del%% 🔁 every week on Saturday 📅 2023-04-01
- [ ] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix %%done_del%% 🔁 every week on Saturday 📅 2023-04-08
- [x] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix %%done_del%% 🔁 every week on Saturday 📅 2023-04-01 ✅ 2023-04-03
- [x] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix %%done_del%% 🔁 every week on Saturday 📅 2023-03-25 ✅ 2023-03-25
- [x] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix %%done_del%% 🔁 every week on Saturday 📅 2023-03-18 ✅ 2023-03-18
- [x] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix %%done_del%% 🔁 every week on Saturday 📅 2023-03-11 ✅ 2023-03-10
@ -246,7 +247,8 @@ sudo bash /etc/addip4ban/addip4ban.sh
- [x] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix %%done_del%% 🔁 every week on Saturday 📅 2023-02-18 ✅ 2023-02-17
- [x] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix %%done_del%% 🔁 every week on Saturday 📅 2023-02-11 ✅ 2023-02-11
- [x] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix %%done_del%% 🔁 every week on Saturday 📅 2023-02-04 ✅ 2023-02-04
- [ ] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list %%done_del%% 🔁 every month on Saturday 📅 2023-04-01
- [ ] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list %%done_del%% 🔁 every month on Saturday 📅 2023-04-08
- [x] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list %%done_del%% 🔁 every month on Saturday 📅 2023-04-01 ✅ 2023-04-03
- [x] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list %%done_del%% 🔁 every month on Saturday 📅 2023-03-25 ✅ 2023-03-25
- [x] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list %%done_del%% 🔁 every month on Saturday 📅 2023-03-18 ✅ 2023-03-18
- [x] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list %%done_del%% 🔁 every month on Saturday 📅 2023-03-11 ✅ 2023-03-10

@ -15,7 +15,7 @@ Characteristics:
OS: Ubuntu 20.04
Domiciliation: NL
Host: Hostigger
IPv4: 5.181.166.123
IPv4: 141.98.119.142
Hostname: 1630136610
SubDomain: emailalias
Disk:

@ -574,7 +574,8 @@ List of monitored services:
&emsp;
- [ ] :hammer_and_wrench: [[Server Tools]]: Backup server %%done_del%% 🔁 every 6 months on the 1st Tuesday ⏳ 2023-04-04 📅 2023-04-04
- [ ] :hammer_and_wrench: [[Server Tools]]: Backup server %%done_del%% 🔁 every 6 months on the 1st Tuesday ⏳ 2023-10-03 📅 2023-10-03
- [x] :hammer_and_wrench: [[Server Tools]]: Backup server %%done_del%% 🔁 every 6 months on the 1st Tuesday ⏳ 2023-04-04 📅 2023-04-04 ✅ 2023-04-03
- [x] :hammer_and_wrench: [[Server Tools]]: Backup server %%done_del%% 🔁 every 6 months on the 1st Tuesday ⏳ 2022-10-04 📅 2022-10-04 ✅ 2022-10-03
- [x] [[Server Tools]]: Backup server 🔁 every 6 months on the 1st Tuesday ⏳ 2022-04-12 📅 2022-04-12 ✅ 2022-04-11
- [x] [[Server Tools]]: Backup server 🔁 every 6 months on the 1st Tuesday 📅 2021-10-14 ✅ 2022-01-08

@ -283,7 +283,8 @@ Everything is rather self-explanatory.
&emsp;
- [ ] :shield: [[Server VPN]]: Backup server %%done_del%% 🔁 every 6 months on the 1st Tuesday ⏳ 2023-04-04 📅 2023-04-04
- [ ] :shield: [[Server VPN]]: Backup server %%done_del%% 🔁 every 6 months on the 1st Tuesday ⏳ 2023-10-03 📅 2023-10-03
- [x] :shield: [[Server VPN]]: Backup server %%done_del%% 🔁 every 6 months on the 1st Tuesday ⏳ 2023-04-04 📅 2023-04-04 ✅ 2023-04-03
- [x] :shield: [[Server VPN]]: Backup server %%done_del%% 🔁 every 6 months on the 1st Tuesday ⏳ 2022-10-04 📅 2022-10-04 ✅ 2022-10-03
- [x] [[Server VPN]]: Backup server 🔁 every 6 months on the 1st Tuesday ⏳ 2022-04-12 📅 2022-04-12 ✅ 2022-04-11
- [x] [[Server VPN]]: Backup server 🔁 every 6 months on the 1st Tuesday 📅 2021-10-14 ✅ 2022-01-08

@ -744,4 +744,36 @@ alias f=expenses:Food
2023/04/02 Petrol
expenses:Travels:EUR €52.45
liability:CreditCard:CHF
liability:CreditCard:CHF
2023/04/03 Migros
expenses:Food:CHF CHF7.10
assets:Cash:CHF
2023/04/02 Uber eats
expenses:Food:CHF CHF50.20
liability:CreditCard:CHF
2023/04/02 SBB
expenses:Travels:CHF CHF6.80
assets:Cash:CHF
2023/04/03 Migros
expenses:Food:CHF CHF22.20
assets:Cash:CHF
2023/04/03 Fine - speeding
expenses:Car:CHF CHF60.00
assets:Cash:CHF
2023/04/03 Dr Cleo Morales
expenses:Health:CHF CHF155.00
assets:Cash:CHF
2023/04/04 Migros
expenses:Food:CHF CHF2.25
assets:Cash:CHF
2023/04/04 Diner Papa
expenses:Food:EUR €98.50
assets:Cash:CHF

@ -70,7 +70,8 @@ All tasks and to-dos Crypto-related.
&emsp;
%%- [ ] 💰[[Crypto Tasks#internet alerts|monitor Crypto news and publications]] %%done_del%% 🔁 every week on Friday 📅 2022-12-16%%
- [ ] :ballot_box: [[Crypto Tasks]]: Vote for [[EOS]] block producers %%done_del%% 🔁 every month on the 1st Tuesday 📅 2023-04-04
- [ ] :ballot_box: [[Crypto Tasks]]: Vote for [[EOS]] block producers %%done_del%% 🔁 every month on the 1st Tuesday 📅 2023-05-02
- [x] :ballot_box: [[Crypto Tasks]]: Vote for [[EOS]] block producers %%done_del%% 🔁 every month on the 1st Tuesday 📅 2023-04-04 ✅ 2023-04-03
- [x] :ballot_box: [[Crypto Tasks]]: Vote for [[EOS]] block producers %%done_del%% 🔁 every month on the 1st Tuesday 📅 2023-03-07 ✅ 2023-03-07
- [x] :ballot_box: [[Crypto Tasks]]: Vote for [[EOS]] block producers %%done_del%% 🔁 every month on the 1st Tuesday 📅 2023-02-07 ✅ 2023-02-06
- [x] :ballot_box: [[Crypto Tasks]]: Vote for [[EOS]] block producers %%done_del%% 🔁 every month on the 1st Tuesday 📅 2023-01-03 ✅ 2023-01-03

Loading…
Cancel
Save