Compare commits
211 Commits
f414d20381
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 79f7c42e5b | |||
| ef304b21dc | |||
| edeb72bcbe | |||
| 6d0b7f153a | |||
| 2309764522 | |||
| 7e78fe06db | |||
| ca065a132a | |||
| 658d877c57 | |||
| b311a961ab | |||
| b1732a2289 | |||
| 141ec5aa05 | |||
| f3db7cb65e | |||
| 6b54ee374e | |||
| b107936fd0 | |||
| f82ff03b1c | |||
| c0136c7502 | |||
| bc2cd3554b | |||
| f3a918746a | |||
| e1605f3589 | |||
| aa5431c280 | |||
| a1b1d7e090 | |||
| 364bd496b7 | |||
| e8b777fa24 | |||
| 44dc4dd088 | |||
| 5e941486dd | |||
| 5cfc9ebbc0 | |||
| bbc6c94924 | |||
| f923ca686e | |||
| 4f9560fc1e | |||
| 5b339c57bc | |||
| 4fcfafd7a9 | |||
| 7633b3daaa | |||
| 84397ea6ba | |||
| 501f88eeb6 | |||
| 28862c2d12 | |||
| 66359f847c | |||
| 574f050907 | |||
| 546605759f | |||
| ac48760742 | |||
| 9b83cb2f49 | |||
| be1e8c6696 | |||
| ac8a8603ff | |||
| a97da04177 | |||
| 5a3142e8f5 | |||
| 1e30897d8e | |||
| a133d63923 | |||
| 443d44abeb | |||
| 6c4f805501 | |||
| a3baf0086b | |||
| 34c132569d | |||
| 1fb65e616a | |||
| 8b3e6b2df4 | |||
| f24f7b5ed4 | |||
| 2d52c7dc36 | |||
| cc842ba3d3 | |||
| 73f60fe3c8 | |||
| 6d240b97d8 | |||
| 1fb7a95ac7 | |||
| 5624ec5523 | |||
| 41fa8e657f | |||
| a3ded544a6 | |||
| 5958b6dbed | |||
| 2dc08e7d05 | |||
| fa7121f443 | |||
| b189952e8b | |||
| 895ca7942f | |||
| 115b337e3a | |||
| 0d62095206 | |||
| f0634603ee | |||
| 367e69faf6 | |||
| 81467ee075 | |||
| 47552367b6 | |||
| d28f64ceb7 | |||
| b3b3c9cde0 | |||
| 7cde42eb75 | |||
| ba48fa5303 | |||
| ea3dce9ec9 | |||
| 73fac49347 | |||
| 11fcdae114 | |||
| e4a12af050 | |||
| 9637bab983 | |||
| f6f499ab8a | |||
| c429a855da | |||
| b06c145575 | |||
| 47e960449c | |||
| 6acee9b716 | |||
| ba087a8fe3 | |||
| 2fc8080666 | |||
| 1d2a258823 | |||
| 9b500703c5 | |||
| 016540aae3 | |||
| a27a22e669 | |||
| 5aa5fe4978 | |||
| bd80ee74d3 | |||
| 1df6ed2e32 | |||
| 594c2ab3f8 | |||
| cd0903ce53 | |||
| 2e4842e649 | |||
| 9be353d908 | |||
| a63cc408f5 | |||
| b49020e3d5 | |||
| 306ee0619c | |||
| 096bae0e84 | |||
| b26ccf1391 | |||
| e8f83829bb | |||
| 8fb004d9cd | |||
| 55089b85b1 | |||
| ff1de37b74 | |||
| bd00234aad | |||
| 69fbf249b6 | |||
| d75775b98a | |||
| 38c719b7cb | |||
| 6e3a2434ea | |||
| 303f3fcce6 | |||
| 1dad7e5892 | |||
| 3f9a9aa859 | |||
| 1ad57b1625 | |||
| 1e11572535 | |||
| dfb6363a11 | |||
| c320e34e67 | |||
| 2a34095236 | |||
| 5ff96990d2 | |||
| 027e882e6f | |||
| ee5f9e7030 | |||
| cfa16f2048 | |||
| 19013efa3d | |||
| 4c02ea4959 | |||
| 29c34d203e | |||
| 84991f3e48 | |||
| dc8ef80cc6 | |||
| 6e31eb68ab | |||
| 66aed86542 | |||
| b40492d5a7 | |||
| 77e96dd03d | |||
| 93a3094392 | |||
| a5c1aa286b | |||
| 159bc09c86 | |||
| 8068f5378c | |||
| d327ab1532 | |||
| fb6322c8e9 | |||
| a6a419160d | |||
| 6a6a4fb701 | |||
| 5654f2634e | |||
| 537cb747cb | |||
| 4eb9db50d9 | |||
| aa553995a9 | |||
| d6d906c715 | |||
| f29af0e155 | |||
| e6b24eaff5 | |||
| d9f9d2be9e | |||
| 7b84e178b8 | |||
| 373da648f1 | |||
| 8539174c95 | |||
| ff08ec3e3b | |||
| 455c290894 | |||
| 82a1826280 | |||
| 0df77e29ea | |||
| 6c733c8049 | |||
| 47ece60efe | |||
| 85cc329349 | |||
| ec0ca106d6 | |||
| 295f33964a | |||
| d6257c4419 | |||
| 1187547c1b | |||
| 543964c79d | |||
| e5ff5b72e3 | |||
| 1fb0d38ebf | |||
| 331261ac73 | |||
| 3c23449d1c | |||
| 1d2c7af6fc | |||
| a8b25953d0 | |||
| 7a2fe9b1c1 | |||
| 030c7d0d92 | |||
| 0c5101c77d | |||
| 2cd6533e53 | |||
| 3f0ea6a0f2 | |||
| f3701042c9 | |||
| 1b9ff5334f | |||
| 9cda4ed47d | |||
| 4ae4678374 | |||
| 0743a76f5d | |||
| fd0186fb3b | |||
| e2fc925029 | |||
| cc35a0b8d6 | |||
| 14bcf98f85 | |||
| 9834514053 | |||
| f49d4647dd | |||
| 65ce3cd800 | |||
| a40e04dc70 | |||
| 7ab7008eb8 | |||
| 7e46c2704e | |||
| d5ca7cf365 | |||
| 72523d1785 | |||
| c1cc8b482e | |||
| 1439b682d6 | |||
| eb8b59ee9f | |||
| 3ed3847dd2 | |||
| 8ab3e878be | |||
| 2f4f8e11da | |||
| d595694269 | |||
| 80a98b4fdd | |||
| d10c85b295 | |||
| 005fa587c4 | |||
| 642cf06a79 | |||
| da806e9c62 | |||
| f51a827fae | |||
| 147e7cdf8c | |||
| 42dfaee83d | |||
| d6d5ef3fc7 | |||
| 202cd1c74b | |||
| 02ea3f5790 |
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
# .gitignore
|
||||||
|
.logs/
|
||||||
2
.vscode/settings.json
vendored
2
.vscode/settings.json
vendored
@ -21,5 +21,5 @@
|
|||||||
"markdown.styles": [
|
"markdown.styles": [
|
||||||
".vscode/custom-tag-style.css"
|
".vscode/custom-tag-style.css"
|
||||||
],
|
],
|
||||||
"gitdoc.enabled": true
|
"gitdoc.enabled": false
|
||||||
}
|
}
|
||||||
|
|||||||
1
2025-06-18.md
Normal file
1
2025-06-18.md
Normal file
@ -0,0 +1 @@
|
|||||||
|
# 2025-06-18
|
||||||
1
2025-06-19.md
Normal file
1
2025-06-19.md
Normal file
@ -0,0 +1 @@
|
|||||||
|
# 2025-06-19
|
||||||
1
2025-06-30.md
Normal file
1
2025-06-30.md
Normal file
@ -0,0 +1 @@
|
|||||||
|
# 2025-06-30
|
||||||
1
2025-07-01.md
Normal file
1
2025-07-01.md
Normal file
@ -0,0 +1 @@
|
|||||||
|
# 2025-07-01
|
||||||
1
2025-07-03.md
Normal file
1
2025-07-03.md
Normal file
@ -0,0 +1 @@
|
|||||||
|
# 2025-07-03
|
||||||
1
2025-07-06.md
Normal file
1
2025-07-06.md
Normal file
@ -0,0 +1 @@
|
|||||||
|
# 2025-07-06
|
||||||
1
2025-08-15.md
Normal file
1
2025-08-15.md
Normal file
@ -0,0 +1 @@
|
|||||||
|
# 2025-08-15
|
||||||
1
2025-08-24.md
Normal file
1
2025-08-24.md
Normal file
@ -0,0 +1 @@
|
|||||||
|
# 2025-08-24
|
||||||
1
2025-08-29.md
Normal file
1
2025-08-29.md
Normal file
@ -0,0 +1 @@
|
|||||||
|
# 2025-08-29
|
||||||
1
2025-08-30.md
Normal file
1
2025-08-30.md
Normal file
@ -0,0 +1 @@
|
|||||||
|
# 2025-08-30
|
||||||
1
2025-09-09.md
Normal file
1
2025-09-09.md
Normal file
@ -0,0 +1 @@
|
|||||||
|
# 2025-09-09
|
||||||
1
2025-09-10.md
Normal file
1
2025-09-10.md
Normal file
@ -0,0 +1 @@
|
|||||||
|
# 2025-09-10
|
||||||
33
AI.md
Normal file
33
AI.md
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
# AI
|
||||||
|
|
||||||
|
## Learning
|
||||||
|
|
||||||
|
* [The Ultimate Guide to Local AI and AI Agents (The Future is Here) - YouTube](https://www.youtube.com/watch?v=mNcXue7X8H0)
|
||||||
|
* Docker Compose based framework for running AI locally
|
||||||
|
* https://github.com/coleam00/local-ai-packaged
|
||||||
|
* https://www.reddit.com/r/LocalLLaMA/
|
||||||
|
*
|
||||||
|
|
||||||
|
## LocalAI Packaged
|
||||||
|
|
||||||
|
### Services
|
||||||
|
|
||||||
|
* [Open WebUI](http://localhost:8080/)
|
||||||
|
* [n8n](http://localhost:5678/)
|
||||||
|
* [Langfuse](http://localhost:3000/)
|
||||||
|
* [Ollama](http://localhost:11434/)
|
||||||
|
* [Qdrant](http://localhost:6333/)
|
||||||
|
|
||||||
|
### Start services
|
||||||
|
|
||||||
|
```shell
|
||||||
|
python start_services.py --profile gpu-nvidia
|
||||||
|
```
|
||||||
|
|
||||||
|
## AgentOS
|
||||||
|
|
||||||
|
* https://github.com/buildermethods/agent-os
|
||||||
|
|
||||||
|
## AG2
|
||||||
|
|
||||||
|
* https://github.com/ag2ai/ag2
|
||||||
9
TODO homelab.md
Normal file
9
TODO homelab.md
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
created: 2025-06-26T08:08:31-06:00
|
||||||
|
modified: 2025-06-26T08:10:18-06:00
|
||||||
|
type: Checklist
|
||||||
|
---
|
||||||
|
|
||||||
|
# TODO homelab
|
||||||
|
|
||||||
|
- [ ] https://marketplace.visualstudio.com/items?itemName=OpenTofu.vscode-opentofu
|
||||||
BIN
a35a74314775063c5d51232552b5cd8c.jpg
Normal file
BIN
a35a74314775063c5d51232552b5cd8c.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.2 MiB |
0
assets/images/graph-filter.gif
Executable file → Normal file
0
assets/images/graph-filter.gif
Executable file → Normal file
|
Before Width: | Height: | Size: 7.1 MiB After Width: | Height: | Size: 7.1 MiB |
22
booloumud.md
22
booloumud.md
@ -2,3 +2,25 @@
|
|||||||
|
|
||||||
* https://store.booloumud.com
|
* https://store.booloumud.com
|
||||||
*
|
*
|
||||||
|
|
||||||
|
## Tech
|
||||||
|
|
||||||
|
### DNS
|
||||||
|
|
||||||
|
* Squarespace
|
||||||
|
* booloumud.com --> store.booloumud.com (Shopify)
|
||||||
|
* Porkbun
|
||||||
|
* Transfer in progress, need to re-establish after transfer
|
||||||
|
* booloumud.org --> booloumud.com
|
||||||
|
* booloumud.net --> booloumud.com
|
||||||
|
|
||||||
|
## Designs
|
||||||
|
|
||||||
|
### Earring holders and storage
|
||||||
|
|
||||||
|
* `G:\My Drive\booloumud\designs\earring_display`
|
||||||
|
|
||||||
|
### Tooth pendants
|
||||||
|
|
||||||
|
* [🦷 Real Anatomy Tooth Seth #1・ 3D File for 3D printing・Cults](https://cults3d.com/en/3d-model/art/real-anatomy-tooth-seth-1)
|
||||||
|
* https://cults3d.com/en/orders/128683287
|
||||||
|
|||||||
3
booloumud_store.code-workspace
Normal file
3
booloumud_store.code-workspace
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"folders": []
|
||||||
|
}
|
||||||
145
cigars.md
Normal file
145
cigars.md
Normal file
@ -0,0 +1,145 @@
|
|||||||
|
# cigars
|
||||||
|
|
||||||
|
## to try
|
||||||
|
|
||||||
|
* Drew Estate
|
||||||
|
* Deadwood Crazy Alice
|
||||||
|
* Java Mint Maduro
|
||||||
|
* https://www.reddit.com/r/cigars/s/gEAeA9gw2o
|
||||||
|
* https://www.reddit.com/r/cigars/s/O42EdsJXSf
|
||||||
|
* Johnny Tabaconaught
|
||||||
|
* https://www.reddit.com/r/cigars/s/A8KFQ9sovB
|
||||||
|
* Brickhouse
|
||||||
|
* Maduro
|
||||||
|
* https://www.reddit.com/r/cigars/s/bRg03rKkZ1
|
||||||
|
* Crowned Heads Le Careme
|
||||||
|
* https://www.reddit.com/r/cigars/s/798wqgYHMp
|
||||||
|
|
||||||
|
## I like
|
||||||
|
|
||||||
|
* Deadwood
|
||||||
|
* Leather Rose
|
||||||
|
* Girl with No Name
|
||||||
|
* Undercrown Shade
|
||||||
|
* Mild flavor, strong buzz
|
||||||
|
* Famous Smoke Shop
|
||||||
|
* Nicaraguan Selection 3000
|
||||||
|
* Foundation
|
||||||
|
* Tabernacle Havana Seed
|
||||||
|
* Maduro
|
||||||
|
* Dark Natural - a little strong
|
||||||
|
* Gurkha
|
||||||
|
* Rogue
|
||||||
|
* Chateau de Prive - nice burn, very mild, toasted
|
||||||
|
* Evil - leather and mild pepper
|
||||||
|
* L'Atelier
|
||||||
|
* Surrogates Bone Crusher
|
||||||
|
* Oliva
|
||||||
|
* Serie O Corona
|
||||||
|
* 3rd Degree
|
||||||
|
* Master Blends 3
|
||||||
|
* Kentuky Fire Cured
|
||||||
|
* Just a Friend
|
||||||
|
* Fat Molly
|
||||||
|
* Arturo Fuente
|
||||||
|
* Gran Reserva Curly Head Deluxe Maduro - a little shaggy, but inexpensive
|
||||||
|
* Selection Privada No. 1 Double Claro
|
||||||
|
* Rojas
|
||||||
|
* Street Tacos Barbacoa Robusta
|
||||||
|
* Breakfast Tacos Sumatra
|
||||||
|
* Tatuaje
|
||||||
|
* Reserva Broadleaf
|
||||||
|
|
||||||
|
## I don't like
|
||||||
|
|
||||||
|
* Rocky Patel Seed to Smoke Share Toro
|
||||||
|
* Just, gross. Tastes like a book depository.
|
||||||
|
|
||||||
|
## meh
|
||||||
|
|
||||||
|
* Drew Estate
|
||||||
|
* Factory Smokes Belicoso Sweet
|
||||||
|
* Rocky Patel
|
||||||
|
* Seed to Smoke Classic
|
||||||
|
|
||||||
|
## shops
|
||||||
|
|
||||||
|
* https://www.cigarsdirect.com/
|
||||||
|
* Neptune
|
||||||
|
* Famous Smoke Shop
|
||||||
|
|
||||||
|
## Journal
|
||||||
|
|
||||||
|
|
||||||
|
* [[2025-09-18]] - Tatuaje Reserva Broadleaf ([[2024-09-13]])
|
||||||
|
* [[2025-09-16]] - Arturo Fuente Curly Head Delux Maduro ([[2024-11-20]])
|
||||||
|
* [[2025-09-15]] - Acid Twenty (2024-01-16)
|
||||||
|
* [[2025-09-14]] - Gurkha The Tabernacle (2024-11-20)
|
||||||
|
* Chocolate, leather
|
||||||
|
* [[2025-09-13]] - L'Atelier Surrogates Bone Crusher ([[2024-09-13]])
|
||||||
|
* Earthy soil, dark roast coffee. Tight ash, even burn.
|
||||||
|
* [[2025-09-12]] - Arturo Fuente Curly Head Delux Maduro ([[2024-11-20]])
|
||||||
|
* [[2025-09-11]] - Arturo Fuente Curly Head Delux Maduro ([[2024-11-20]])
|
||||||
|
* [[2025-09-10]]
|
||||||
|
* Nub Habano ([[2024-07-08]])
|
||||||
|
* Not bad - mild to medium. Lumber and leather. Wrapper was really thin and fell apart, had to relight a few times
|
||||||
|
* Arturo Fuente Curly Head Delux Maduro ([[2024-11-20]])
|
||||||
|
* [[2025-09-09]] - Famous Smoke Shop Nicaraguan Selection 3000
|
||||||
|
* [[2025-09-05]] - Gurkha Cellar Reserve 18 Years
|
||||||
|
* [[2025-09-04]]
|
||||||
|
* Rojas Breakfast Tacos Sumatra ([[2025-08-01]])
|
||||||
|
* Oliva Serie O ([[2024-11-20]])
|
||||||
|
* [[2025-09-03]] - Gurkha Castle Hall ([[2025-08-01]])
|
||||||
|
* [[2025-08-30]] - Gurkha Beast ([[2025-08-01]])
|
||||||
|
* tight, horrible draw on this stick
|
||||||
|
* once loosened up, not bad - medium-dark, gassy, dark wood
|
||||||
|
* [[2025-08-29]] - Gurkha Evil ([[2025-08-01]])
|
||||||
|
* Mild to medium - leather, a little pepper
|
||||||
|
* [[2025-08-24]] - Gurkha Marquesa ([[2025-08-01]])
|
||||||
|
* [[2025-08-15]] - Oliva Serie O ([[2024-11-20]])
|
||||||
|
* [[2025-08-13]] - Gurkha Chateau de Prive ([[2025-08-01]])
|
||||||
|
* [[2025-08-12]] - Kentucky Fire Cured Fat Molly ([[2025-08-01]])
|
||||||
|
* [[2025-08-11]] - Gurkha Rogue ([[2025-08-01]])
|
||||||
|
* Good medium strength. Some burn issues, esp towards the end
|
||||||
|
* ~[[2025-08-11]] - Rocky Patel Seed to Smoke Shade Toro ([[2025-08-01]])~
|
||||||
|
* Abandoned after one draw - nasty!
|
||||||
|
* [[2025-08-09]] - Rojas Street Tacos Carnitas Toro ([[2025-08-01]])
|
||||||
|
* [[2025-08-07]] - Kentucky Fire Cured Fat Molly ([[2025-08-01]])
|
||||||
|
* [[2025-08-05]] - Rojas Street Tacos Barbacoa Robusta ([[2025-08-01]])
|
||||||
|
* Easy draw, lots of smoke. Pepper, leather, medium strong
|
||||||
|
* [[2025-08-01]] - Rocky Patel Seed to Smoke Classic ([[2025-08-01]])
|
||||||
|
* Dry leaves, flat, not offensive, but not very good
|
||||||
|
* [[2025-07-31]] - Kentuky Fire Cured Muwat ([[2024-07-08]])
|
||||||
|
* [[2025-07-30]] - Oliva Master Blends 3 ([[2024-07-08]])
|
||||||
|
* [[2025-07-20]] - Inferno by Oliva ([[2024-07-08]])
|
||||||
|
* [[2025-07-18]]
|
||||||
|
* Oliva Serie O ([[2024-11-20]])
|
||||||
|
* Selection Privada No. 1 Double Claro ([[2024-01-19]])
|
||||||
|
* [[2025-07-16]] - Oliva Serie O ([[2024-11-20]])
|
||||||
|
* [[2025-07-14]] - Selection Privada No. 1 Double Claro ([[2024-01-19]])
|
||||||
|
* [[2025-07-11]] - Oliva Serie V ([[2024-12-25]])
|
||||||
|
* [[2025-07-10]] - Acid Progeny ([[2024-01-16]])
|
||||||
|
* Cedary, spicy wood
|
||||||
|
* [[2025-07-08]] - Selection Privada No. 1 Double Claro ([[2024-01-19]])
|
||||||
|
* [[2025-07-08]] - Oliva Serie O ([[2024-11-20]])
|
||||||
|
* [[2025-07-07]] - Oliva 3rd Degree ([[2024-07-08]])
|
||||||
|
* Strong, but not smoky. Tight, even burn. Took a while to get through, pretty buzzy.
|
||||||
|
* [[2025-07-06]] - Undercrown Shade ([[2024-01]])
|
||||||
|
* [[2025-07-03]] - Oliva Serie O ([[2024-11-20]])
|
||||||
|
* [[2025-07-01]] - Factory Smokes Belicoso Sweet ([[2024-01-16]])
|
||||||
|
* [[2025-06-30]] - Selection Privada No. 1 Double Claro ([[2024-01-19]])
|
||||||
|
* [[2025-06-25]] - Selection Privada No. 1 Double Claro
|
||||||
|
|
||||||
|
|
||||||
|
[//begin]: # "Autogenerated link references for markdown compatibility"
|
||||||
|
[2025-09-10]: 2025-09-10.md "2025-09-10"
|
||||||
|
[2025-09-09]: 2025-09-09.md "2025-09-09"
|
||||||
|
[2025-08-30]: 2025-08-30.md "2025-08-30"
|
||||||
|
[2025-08-29]: 2025-08-29.md "2025-08-29"
|
||||||
|
[2025-08-24]: 2025-08-24.md "2025-08-24"
|
||||||
|
[2025-08-15]: 2025-08-15.md "2025-08-15"
|
||||||
|
[2025-07-06]: 2025-07-06.md "2025-07-06"
|
||||||
|
[2025-07-03]: 2025-07-03.md "2025-07-03"
|
||||||
|
[2025-07-01]: 2025-07-01.md "2025-07-01"
|
||||||
|
[2025-06-30]: 2025-06-30.md "2025-06-30"
|
||||||
|
[//end]: # "Autogenerated link references"
|
||||||
BIN
dd75f62871a045217d36e3156fa2fc7e.jpg
Normal file
BIN
dd75f62871a045217d36e3156fa2fc7e.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.6 MiB |
@ -1,9 +0,0 @@
|
|||||||
# Spell Checking
|
|
||||||
|
|
||||||
There are many spell checking extensions for VS Code.
|
|
||||||
|
|
||||||
The most popular spell checker for VS Code is [Code Spell Checker](https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker).
|
|
||||||
|
|
||||||
Another one of our favorites is [LTeX](https://marketplace.visualstudio.com/items?itemName=valentjn.vscode-ltex&ssr=false#overview), which is a bit heavier but offers some extra functionality.
|
|
||||||
|
|
||||||
Another popular one is [Spellright](https://marketplace.visualstudio.com/items?itemName=ban.spellright), but be mindful that there have been reports of incompatibility with the `vscode-markdown` extension (see https://github.com/foambubble/foam/issues/1068).
|
|
||||||
@ -1,66 +0,0 @@
|
|||||||
# Publish to Azure DevOps Wiki
|
|
||||||
|
|
||||||
Publish your Foam workspace as an Azure DevOps wiki.
|
|
||||||
|
|
||||||
[Azure DevOps](https://azure.microsoft.com/en-us/services/devops/) is Microsoft's collaboration software for software development teams, formerly known as Team Foundation Server (TFS) and Visual Studio Team Services. It is available as an on-premise or SaaS version. The following recipe was tested with the SaaS version, but should work the same way for the on-premise.
|
|
||||||
|
|
||||||
The following recipe is written with the assumption that you already have an [Azure DevOps](https://azure.microsoft.com/en-us/services/devops/) project.
|
|
||||||
|
|
||||||
## Setup a Foam workspace
|
|
||||||
|
|
||||||
1. Generate a Foam workspace using the [foam-template project](https://github.com/foambubble/foam-template).
|
|
||||||
2. Change the remote to a git repository in Azure DevOps (Repos -> Import a Repository -> Add Clone URL with Authentication), or copy all the files into a new Azure DevOps git repository.
|
|
||||||
3. Define which document will be the wiki home page. To do that, create a file called `.order` in the Foam workspace root folder, with first line being the document filename without `.md` extension. For a project created from the Foam template, the file would look like this:
|
|
||||||
|
|
||||||
```
|
|
||||||
readme
|
|
||||||
```
|
|
||||||
|
|
||||||
4. Push the repository to remote in Azure DevOps.
|
|
||||||
|
|
||||||
## Publish repository to a wiki
|
|
||||||
|
|
||||||
1. Navigate to your Azure DevOps project in a web browser.
|
|
||||||
2. Choose **Overview** > **Wiki**. If you don't have wikis for your project, choose **Publish code as a wiki** on welcome page.
|
|
||||||
3. Choose repository with your Foam workspace, branch (usually `master` or `main`), folder (for workspace created from foam-template it is `/`), and wiki name, and press **Publish**.
|
|
||||||
|
|
||||||
A published workspace looks like this:
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
There is default table of contents pane to the left of the wiki content. Here, you'll find a list of all directories that are present in your Foam workspace, and all wiki pages. Page names are derived from files names, and they are listed in alphabetical order. You may reorder pages by adding filenames without `.md` extension to `.order` file.
|
|
||||||
|
|
||||||
_Note that first entry in `.order` file defines wiki's home page._
|
|
||||||
|
|
||||||
## Update wiki
|
|
||||||
|
|
||||||
While you are pushing changes to GitHub, you won't see the wiki updated if you don't add Azure as a remote. You can push to multiple repositories simultaneously.
|
|
||||||
|
|
||||||
1. First open a terminal and check if Azure is added running: `git remote show origin`. If you don't see Azure add it in the output then follow these steps.
|
|
||||||
2. Rename your current remote (most likely named origin) to a different name by running: `git remote rename origin main`
|
|
||||||
3. You can then add the remote for your second remote repository, in this case, Azure. e.g `git remote add azure https://<YOUR_ID>@dev.azure.com/<YOUR_ID>/foam-notes/_git/foam-notes`. You can get it from: Repos->Files->Clone and copy the URL.
|
|
||||||
4. Now, you need to set up your origin remote to push to both of these. So run: `git config -e` and edit it.
|
|
||||||
5. Add the `remote origin` section to the bottom of the file with the URLs from each remote repository you'd like to push to. You'll see something like that:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
[core]
|
|
||||||
...
|
|
||||||
(ignore this part)
|
|
||||||
...
|
|
||||||
[branch "main"]
|
|
||||||
remote = github
|
|
||||||
merge = refs/heads/main
|
|
||||||
[remote "github"]
|
|
||||||
url = git@github.com:username/repo.git
|
|
||||||
fetch = +refs/heads/*:refs/remotes/github/*
|
|
||||||
[remote "azure"]
|
|
||||||
url = https://<YOUR_ID>@dev.azure.com/<YOUR_ID>/foam-notes/_git/foam-notes
|
|
||||||
fetch = +refs/heads/*:refs/remotes/azure/*
|
|
||||||
[remote "origin"]
|
|
||||||
url = git@github.com:username/repo.git
|
|
||||||
url = https://<YOUR_ID>@dev.azure.com/<YOUR_ID>/foam-notes/_git/foam-notes
|
|
||||||
```
|
|
||||||
|
|
||||||
6. You can then push to both repositories by: `git push origin main` or a single one using: `git push github main` or `git push azure main`
|
|
||||||
|
|
||||||
For more information, read the [Azure DevOps documentation](https://docs.microsoft.com/en-us/azure/devops/project/wiki/publish-repo-to-wiki).
|
|
||||||
@ -1,20 +0,0 @@
|
|||||||
# Automatically Sync with Git
|
|
||||||
|
|
||||||
With this #recipe you can regularly commit and push to git, to keep your repo in always synched.
|
|
||||||
You can also easily manipulate the git history to reduce clutter.
|
|
||||||
|
|
||||||
## Required Extensions
|
|
||||||
|
|
||||||
- [GitDoc](https://marketplace.visualstudio.com/items?itemName=vsls-contrib.gitdoc)
|
|
||||||
|
|
||||||
## Instructions
|
|
||||||
|
|
||||||
Click on the extension link above to see how to use it.
|
|
||||||
|
|
||||||
__For Foam specific needs, you can add a comment here by following the [[contribution-guide]]__
|
|
||||||
|
|
||||||
## Feedback and issues
|
|
||||||
|
|
||||||
- Feedback and issues with the extension should be reported to the authors themselves
|
|
||||||
- Feedback and issues with the integration of the extension in Foam can be reported in our [issue tracker](https://github.com/foambubble/foam/issues)
|
|
||||||
|
|
||||||
@ -1,3 +0,0 @@
|
|||||||
# Real-time Collaboration
|
|
||||||
|
|
||||||
This #recipe is here to just tell you that VS Code Live Share will allow you to collaborate live on your notes.
|
|
||||||
@ -1,60 +0,0 @@
|
|||||||
# Take notes on mobile phones
|
|
||||||
|
|
||||||
This #recipe offers solutions to taking Foam notes on the go.
|
|
||||||
|
|
||||||
For the time being we have decided to not build a mobile app, but rely on third parties (see [[build-vs-assemble]]).
|
|
||||||
|
|
||||||
The most promising options are:
|
|
||||||
|
|
||||||
### [GitJournal](https://gitjournal.io/)
|
|
||||||
|
|
||||||
Pros
|
|
||||||
|
|
||||||
- Open source
|
|
||||||
- Already a usable solution.
|
|
||||||
- Provides functionality to edit, create, and browser markdown files.
|
|
||||||
- Support journal mode, todo lists, and free writing
|
|
||||||
- Syncs to GitHub repo
|
|
||||||
- Supports Wikilinks
|
|
||||||
- Supports Backlinks
|
|
||||||
- Developer is happy to prioritize Foam compatibility
|
|
||||||
|
|
||||||
Cons
|
|
||||||
|
|
||||||
- Doesn't generate link reference lists (but this is ok, since [[workspace-janitor]] as a GitHub action can solve this)
|
|
||||||
- Not as sleek as Apple/Google notes, some keyboard state glitching on Android, etc.
|
|
||||||
- Lack of control over roadmap. Established product with a paid plan, so may not be open to Foam-supportive changes and additions that don't benefit most users.
|
|
||||||
|
|
||||||
Verdict: Good. By far best effort/outcome ratio would be to help improve GitJournal rather than building a [bespoke mobile app](#bespoke-mobile-app-for-foam).
|
|
||||||
|
|
||||||
### GitHub Codespaces
|
|
||||||
|
|
||||||
Pros
|
|
||||||
|
|
||||||
- Works out of the box just like the desktop app
|
|
||||||
|
|
||||||
Cons
|
|
||||||
|
|
||||||
- not generally available quite yet
|
|
||||||
- [Pricing](https://docs.github.com/en/free-pro-team@latest/github/developing-online-with-codespaces/about-billing-for-codespaces)
|
|
||||||
|
|
||||||
For a quick demo, see <https://www.youtube.com/watch?v=KI5m4Uy8_4I>.
|
|
||||||
|
|
||||||
Verdict: Good. Pricing should be reasonable for taking notes on the fly. Harder to assess for people who would constantly use Foam from mobile phone.
|
|
||||||
|
|
||||||
## Bespoke mobile app for Foam
|
|
||||||
|
|
||||||
Given we already have a solution, why would we spend time and effort building a bespoke mobile app?
|
|
||||||
|
|
||||||
- Taking notes on the go is a key part of a good note taking process, and the process should feel effortless
|
|
||||||
- Having a custom app could help us support key user workflows in a more Foam-specific manner
|
|
||||||
|
|
||||||
If such an app was worth building, it would have to have the following features:
|
|
||||||
|
|
||||||
- Instant loading and syncing for quick notes
|
|
||||||
- Sleek, simple, beautifully designed user experience.
|
|
||||||
- Ability to search and navigate forward links and back links (only in paid GitJournal version)
|
|
||||||
- Killer feature that makes it the best note taking tool for Foam (?)
|
|
||||||
|
|
||||||
Given the effort vs reward ratio, it's a low priority for core team, but if someone wants to work on this, we can provide support! Talk to us on the #mobile-apps channel on [Foam Discord](https://foambubble.github.io/join-discord/w).
|
|
||||||
|
|
||||||
259
foam_sync.ps1
Normal file
259
foam_sync.ps1
Normal file
@ -0,0 +1,259 @@
|
|||||||
|
#Requires -Version 5.1
|
||||||
|
|
||||||
|
[CmdletBinding()]
|
||||||
|
param ()
|
||||||
|
|
||||||
|
Set-StrictMode -Version 3.0
|
||||||
|
|
||||||
|
$scriptPath = $MyInvocation.MyCommand.Path
|
||||||
|
$scriptDir = Split-Path -Path $scriptPath -Parent
|
||||||
|
$logDir = Join-Path -Path $scriptDir -ChildPath ".logs"
|
||||||
|
$logName = "foam_sync.log"
|
||||||
|
$logFilePath = Join-Path -Path $logDir -ChildPath $logName
|
||||||
|
$scriptName = (Get-Item $scriptPath).Name
|
||||||
|
|
||||||
|
# --- Task Setup ---
|
||||||
|
$taskName = 'FoamGitSync'
|
||||||
|
$taskDescription = "Periodically synchronizes the Git repository at $scriptDir using $scriptName."
|
||||||
|
$taskExecute = 'c:\windows\system32\conhost.exe'
|
||||||
|
$taskArguments = "--headless powershell.exe -WindowStyle Hidden -NoProfile -NonInteractive -ExecutionPolicy Bypass -File $scriptPath -Verbose"
|
||||||
|
$frequencyMinutes = 2
|
||||||
|
$timeLimitSeconds = 30
|
||||||
|
|
||||||
|
if (-not (Test-Path -Path $logDir)) {
|
||||||
|
New-Item -ItemType Directory -Path $logDir -Force | Out-Null
|
||||||
|
}
|
||||||
|
Start-Transcript -Path $logFilePath -IncludeInvocationHeader -Force
|
||||||
|
|
||||||
|
try {
|
||||||
|
Write-Verbose "Script: $scriptName at $scriptPath"
|
||||||
|
Write-Verbose "Repository directory: $scriptDir"
|
||||||
|
Write-Verbose "Sync frequency: Every $frequencyMinutes minutes"
|
||||||
|
Write-Verbose "Log file: $logFilePath"
|
||||||
|
|
||||||
|
# Run as the user who executes this script.
|
||||||
|
$taskPrincipal = New-ScheduledTaskPrincipal -UserId $env:USERNAME -LogonType Interactive
|
||||||
|
$repetitionInterval = New-TimeSpan -Minutes $frequencyMinutes
|
||||||
|
$trigger = New-ScheduledTaskTrigger -Once -At (Get-Date) -RepetitionInterval $repetitionInterval
|
||||||
|
$action = New-ScheduledTaskAction -Execute $taskExecute -Argument $taskArguments
|
||||||
|
$settings = New-ScheduledTaskSettingsSet -ExecutionTimeLimit $(New-TimeSpan -Seconds $timeLimitSeconds)
|
||||||
|
Write-Verbose "Task name: $taskName"
|
||||||
|
Write-Verbose "Description: $taskDescription"
|
||||||
|
Write-Verbose "Execute: $taskExecute"
|
||||||
|
Write-Verbose "Arguments: $taskArguments"
|
||||||
|
Write-Verbose "Frequency: $frequencyMinutes minutes"
|
||||||
|
Write-Verbose "Time limit: $timeLimitSeconds seconds"
|
||||||
|
Write-Verbose "Trigger: $trigger"
|
||||||
|
Write-Verbose "Action: $action"
|
||||||
|
Write-Verbose "Principal: $taskPrincipal"
|
||||||
|
Write-Verbose "Settings: $settings"
|
||||||
|
|
||||||
|
# Check and configure the scheduled task
|
||||||
|
try {
|
||||||
|
$existingTask = Get-ScheduledTask -TaskName $taskName -ErrorAction SilentlyContinue
|
||||||
|
|
||||||
|
if ($existingTask) {
|
||||||
|
Write-Verbose "Scheduled task '$taskName' already exists. Checking configuration..."
|
||||||
|
$currentTrigger = $existingTask.Triggers[0]
|
||||||
|
$currentAction = $existingTask.Actions[0]
|
||||||
|
|
||||||
|
# Check Trigger
|
||||||
|
Write-Verbose "Checking trigger..."
|
||||||
|
$triggerMatches = $false
|
||||||
|
if ($currentTrigger -is [Microsoft.Management.Infrastructure.CimInstance] `
|
||||||
|
-and $currentTrigger.Repetition.Interval -eq $trigger.Repetition.Interval) {
|
||||||
|
$triggerMatches = $true
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Warning "trigger does not match:`n $(Compare-Object -IncludeEqual -ReferenceObject $currentTrigger -DifferenceObject $trigger)"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Check Action
|
||||||
|
Write-Verbose "Checking action..."
|
||||||
|
$actionMatches = $false
|
||||||
|
if ($currentAction -is [Microsoft.Management.Infrastructure.CimInstance] `
|
||||||
|
-and $currentAction.Execute -eq $taskExecute `
|
||||||
|
-and $currentAction.Arguments -eq $taskArguments) {
|
||||||
|
$actionMatches = $true
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Warning "action does not match:"
|
||||||
|
Write-Warning " Current action: $($currentAction.Execute) $($currentAction.Arguments)"
|
||||||
|
Write-Warning " Expected action: $taskExecute $taskArguments"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Check Principal
|
||||||
|
Write-Verbose "Checking principal..."
|
||||||
|
$principalMatches = ($existingTask.Principal.UserId -eq $taskPrincipal.UserId)
|
||||||
|
|
||||||
|
# Check Settings (specifically ExecutionTimeLimit for this change)
|
||||||
|
$settingsMatch = $false
|
||||||
|
if ($existingTask.Settings.ExecutionTimeLimit -eq $settings.ExecutionTimeLimit) {
|
||||||
|
$settingsMatch = $true
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Warning "settings do not match: want $($settings.ExecutionTimeLimit), got $($existingTask.Settings.ExecutionTimeLimit)"
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($triggerMatches -and $actionMatches -and $principalMatches -and $settingsMatch) {
|
||||||
|
Write-Verbose "Scheduled task '$taskName' is already correctly configured."
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Verbose "Scheduled task '$taskName' configuration differs."
|
||||||
|
Write-Verbose "`$triggerMatches: $triggerMatches, `$actionMatches: $actionMatches, `$principalMatches: $principalMatches, `$settingsMatch: $settingsMatch"
|
||||||
|
Write-Verbose "Attempting to update in-place..."
|
||||||
|
try {
|
||||||
|
Set-ScheduledTask -TaskName $taskName -Action $action -Trigger $trigger -Settings $settings -Principal $taskPrincipal -ErrorAction Stop
|
||||||
|
Write-Verbose "Scheduled task '$taskName' updated successfully."
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Write-Warning "Failed to update scheduled task '$taskName' in-place. Error: $($_.Exception.Message)"
|
||||||
|
Write-Warning "The task remains in its previous state. Manual intervention may be required or re-run with Administrator privileges."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Verbose "Creating scheduled task '$taskName'..."
|
||||||
|
try {
|
||||||
|
Register-ScheduledTask -TaskName $taskName -Description $taskDescription -Principal $taskPrincipal -Trigger $trigger -Action $action -Settings $settings -ErrorAction Stop
|
||||||
|
Write-Verbose "Scheduled task '$taskName' created successfully."
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Write-Warning "Failed to create scheduled task '$taskName'. Error: $($_.Exception.Message)"
|
||||||
|
Write-Warning "You may need to run this script as Administrator."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
# This outer catch is for unexpected errors, e.g., if Get-ScheduledTask had -ErrorAction Stop
|
||||||
|
Write-Warning "An unexpected error occurred during scheduled task setup for '$taskName'. Error: $($_.Exception.Message)"
|
||||||
|
}
|
||||||
|
|
||||||
|
# --- Git Operations ---
|
||||||
|
Write-Information "Navigating to repository: $scriptDir"
|
||||||
|
try {
|
||||||
|
Set-Location -Path $scriptDir -ErrorAction Stop
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Write-Error "Unable to find repository at $scriptDir. Exiting script."
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Information "Staging all changes with 'git add .'"
|
||||||
|
git add .
|
||||||
|
if ($LASTEXITCODE -ne 0) {
|
||||||
|
Write-Warning "'git add .' command failed with exit code $LASTEXITCODE."
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Information "Checking for staged changes with 'git diff --staged --quiet'..."
|
||||||
|
git diff --staged --quiet
|
||||||
|
$changesStaged = ($LASTEXITCODE -ne 0)
|
||||||
|
|
||||||
|
if ($changesStaged) {
|
||||||
|
Write-Information "Staged changes detected. Creating commit..."
|
||||||
|
$commitMessage = "$scriptName ($($env:COMPUTERNAME)) $(Get-Date -Format 'yyyy-MM-ddTHH:mm:ssZ')"
|
||||||
|
Write-Information "Commit message: $commitMessage"
|
||||||
|
git commit -m $commitMessage
|
||||||
|
if ($LASTEXITCODE -ne 0) {
|
||||||
|
Write-Warning "'git commit' command failed with exit code $LASTEXITCODE."
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Information "Commit created successfully."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Information "No relevant changes detected to commit."
|
||||||
|
Write-Information "Resetting staging area with 'git reset HEAD --quiet'."
|
||||||
|
git reset HEAD --quiet
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Information "Updating remote 'origin' with 'git remote update origin --prune'..."
|
||||||
|
git remote update origin --prune
|
||||||
|
if ($LASTEXITCODE -ne 0) {
|
||||||
|
Write-Error "Unable to update remote 'origin'. Exiting script."
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
$localCommit = (git rev-parse HEAD 2>$null).Trim()
|
||||||
|
if ($LASTEXITCODE -ne 0 -or -not $localCommit) { Write-Error "Failed to get local HEAD commit. Exiting script."; exit 1 }
|
||||||
|
|
||||||
|
$remoteBranch = "origin/main"
|
||||||
|
$remoteCommit = (git rev-parse $remoteBranch 2>$null).Trim()
|
||||||
|
if ($LASTEXITCODE -ne 0 -or -not $remoteCommit) { Write-Error "Failed to get remote '$remoteBranch' commit. Exiting script."; exit 1 }
|
||||||
|
|
||||||
|
Write-Information "Local HEAD commit: $localCommit"
|
||||||
|
Write-Information "Remote '$remoteBranch' commit: $remoteCommit"
|
||||||
|
|
||||||
|
if ($localCommit -eq $remoteCommit) {
|
||||||
|
Write-Information "Local and remote are already in sync."
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
$sleepyTime = Get-Random -Minimum 1 -Maximum 15
|
||||||
|
Write-Information "Local and remote differ. Sleeping for $sleepyTime seconds..."
|
||||||
|
Start-Sleep -Seconds $sleepyTime
|
||||||
|
|
||||||
|
$localCommitAfterSleep = (git rev-parse HEAD 2>$null).Trim()
|
||||||
|
if ($LASTEXITCODE -ne 0 -or -not $localCommitAfterSleep) { Write-Error "Failed to re-get local HEAD commit. Exiting script."; exit 1 }
|
||||||
|
$remoteCommitAfterSleep = (git rev-parse $remoteBranch 2>$null).Trim()
|
||||||
|
if ($LASTEXITCODE -ne 0 -or -not $remoteCommitAfterSleep) { Write-Error "Failed to re-get remote '$remoteBranch' commit. Exiting script."; exit 1 }
|
||||||
|
|
||||||
|
if ($localCommitAfterSleep -eq $remoteCommitAfterSleep) {
|
||||||
|
Write-Information "Local and remote became synchronized during sleep."
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
$localCommit = $localCommitAfterSleep
|
||||||
|
$remoteCommit = $remoteCommitAfterSleep
|
||||||
|
|
||||||
|
Write-Information "Proceeding with sync logic..."
|
||||||
|
|
||||||
|
git merge-base --is-ancestor $localCommit $remoteCommit
|
||||||
|
$localIsAncestorOfRemote = ($LASTEXITCODE -eq 0)
|
||||||
|
|
||||||
|
git merge-base --is-ancestor $remoteCommit $localCommit
|
||||||
|
$remoteIsAncestorOfLocal = ($LASTEXITCODE -eq 0)
|
||||||
|
|
||||||
|
if ($localIsAncestorOfRemote) {
|
||||||
|
Write-Information "Remote '$remoteBranch' is ahead. Pulling with rebase..."
|
||||||
|
git pull --rebase origin main
|
||||||
|
if ($LASTEXITCODE -ne 0) { Write-Error "'git pull --rebase' failed. Manual intervention may be required."; exit 1 }
|
||||||
|
}
|
||||||
|
elseif ($remoteIsAncestorOfLocal) {
|
||||||
|
Write-Information "Local HEAD is ahead. Pushing..."
|
||||||
|
git push origin main
|
||||||
|
if ($LASTEXITCODE -ne 0) { Write-Error "'git push' failed. Manual intervention may be required."; exit 1 }
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Information "Local HEAD and remote '$remoteBranch' have diverged."
|
||||||
|
$remoteTimestampStr = (git log --pretty=format:"%at" -n 1 $remoteBranch 2>$null).Trim()
|
||||||
|
if ($LASTEXITCODE -ne 0 -or -not $remoteTimestampStr) { Write-Error "Failed to get remote commit timestamp for '$remoteBranch'. Exiting script."; exit 1 }
|
||||||
|
$remoteTimestamp = [long]$remoteTimestampStr
|
||||||
|
|
||||||
|
$localTimestampStr = (git log --pretty=format:"%at" -n 1 HEAD 2>$null).Trim()
|
||||||
|
if ($LASTEXITCODE -ne 0 -or -not $localTimestampStr) { Write-Error "Failed to get local commit timestamp for HEAD. Exiting script."; exit 1 }
|
||||||
|
$localTimestamp = [long]$localTimestampStr
|
||||||
|
|
||||||
|
Write-Verbose "Local timestamp: $localTimestamp, Remote timestamp: $remoteTimestamp"
|
||||||
|
|
||||||
|
if ($remoteTimestamp -gt $localTimestamp) {
|
||||||
|
Write-Information "Remote is newer. Pulling with rebase, strategy 'theirs'..."
|
||||||
|
git pull --rebase --strategy recursive --strategy-option theirs origin main
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Information "Local is newer or same age. Pulling with rebase, strategy 'ours'..."
|
||||||
|
git pull --rebase --strategy recursive --strategy-option ours origin main
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($LASTEXITCODE -ne 0) { Write-Error "Rebase during divergence failed. Manual intervention may be required."; exit 1 }
|
||||||
|
|
||||||
|
Write-Information "Pushing changes after rebase..."
|
||||||
|
git push origin main
|
||||||
|
if ($LASTEXITCODE -ne 0) { Write-Error "'git push' after rebase failed. Manual intervention may be required."; exit 1 }
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Information "Synchronization process completed successfully."
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
Stop-Transcript
|
||||||
|
}
|
||||||
4
foam_sync.sh
Executable file → Normal file
4
foam_sync.sh
Executable file → Normal file
@ -100,10 +100,10 @@ else
|
|||||||
# if remote is newer, use a 'theirs' strategy
|
# if remote is newer, use a 'theirs' strategy
|
||||||
if [[ $(git log --pretty=format:"%at" -n 1 origin/main) -gt $(git log --pretty=format:"%at" -n 1 HEAD) ]]; then
|
if [[ $(git log --pretty=format:"%at" -n 1 origin/main) -gt $(git log --pretty=format:"%at" -n 1 HEAD) ]]; then
|
||||||
echo "remote is newer"
|
echo "remote is newer"
|
||||||
git pull --rebase -X theirs origin main
|
git pull --rebase --strategy recursive --strategy-option theirs origin main
|
||||||
else
|
else
|
||||||
echo "local is newer"
|
echo "local is newer"
|
||||||
git pull --rebase -X ours origin main
|
git pull --rebase --strategy recursive --strategy-option ours origin main
|
||||||
fi
|
fi
|
||||||
git push origin main
|
git push origin main
|
||||||
fi
|
fi
|
||||||
|
|||||||
5
gitea.md
Normal file
5
gitea.md
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# gitea
|
||||||
|
|
||||||
|
user:pass is `compose:compose` for now, used docker compose template
|
||||||
|
|
||||||
|
external access for SSH is `ssh://git@git.hobbithole.org:4222`
|
||||||
11
homefoam.code-workspace
Normal file
11
homefoam.code-workspace
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"folders": [
|
||||||
|
{
|
||||||
|
"path": "."
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"settings": {
|
||||||
|
"foam.edit.linkReferenceDefinitions": "withExtensions",
|
||||||
|
"gitdoc.enabled": false
|
||||||
|
}
|
||||||
|
}
|
||||||
28
homelab.md
28
homelab.md
@ -1,6 +1,7 @@
|
|||||||
# homelab
|
# homelab
|
||||||
|
|
||||||
* OPNsense firewall: https://opnsense.hh.lan
|
* OPNsense firewall: https://opnsense.hh.lan:8443
|
||||||
|
* 192.168.86.45
|
||||||
* Proxmox virtualization cluster: https://proxmox1.hh.lan
|
* Proxmox virtualization cluster: https://proxmox1.hh.lan
|
||||||
|
|
||||||
## services
|
## services
|
||||||
@ -9,10 +10,13 @@
|
|||||||
* http://homeassistant.local:8123/
|
* http://homeassistant.local:8123/
|
||||||
* https://ha.hh.lan
|
* https://ha.hh.lan
|
||||||
* Frigate NVR (security cameras): https://frigate.local:8971
|
* Frigate NVR (security cameras): https://frigate.local:8971
|
||||||
* Paperless document repository: https://paperless.hh.lan
|
* Paperless document repository
|
||||||
|
* https://paperless.hobbithole.org
|
||||||
|
* https://paperless.hh.lan
|
||||||
|
|
||||||
### Gitea
|
### Gitea
|
||||||
|
|
||||||
|
* https://git.hobbithole.org
|
||||||
* http://gitea.hh.lan:3000
|
* http://gitea.hh.lan:3000
|
||||||
* SSH key stored in bitwarden
|
* SSH key stored in bitwarden
|
||||||
* used `docker-compose-template` VM template
|
* used `docker-compose-template` VM template
|
||||||
@ -21,20 +25,33 @@
|
|||||||
## things to set up
|
## things to set up
|
||||||
|
|
||||||
* Network UPS Tool? (NUT)
|
* Network UPS Tool? (NUT)
|
||||||
|
* Monitor reservoir levels
|
||||||
|
* https://dwr.state.co.us/Tools/StationsLite/UNIRESCO?params=STORAGE
|
||||||
* Caddy
|
* Caddy
|
||||||
* Authentik
|
* Authentik
|
||||||
* Proxmox backup
|
* Proxmox backup
|
||||||
* CrashPlan (or other backup service)
|
* CrashPlan (or other backup service)
|
||||||
|
* [Proxmox Crashplan](https://nguvu.org/proxmox/proxmox-crashplan-install/)
|
||||||
|
* https://github.com/nix-community/terraform-nixos/blob/master/examples/hermetic_config/default.tf
|
||||||
|
* https://spacelift.io/blog/terraform-proxmox-provider#5-run-terraform-to-create-the-vm
|
||||||
* Home auth
|
* Home auth
|
||||||
* Windows auth
|
* Windows auth
|
||||||
* SSO access to services
|
* SSO access to services
|
||||||
* Bitwarden self-hosted org
|
* Bitwarden self-hosted org
|
||||||
* [Self-host an Organization](https://bitwarden.com/help/self-host-an-organization/)
|
* [Self-host an Organization](https://bitwarden.com/help/self-host-an-organization/)
|
||||||
|
* OpenBao (Vault fork) - https://openbao.org/docs/install/
|
||||||
|
|
||||||
## things to research
|
## things to research
|
||||||
|
|
||||||
* Pangolin
|
* Pangolin
|
||||||
* Suricata
|
* Suricata
|
||||||
|
* [Wiki.js](https://js.wiki/)
|
||||||
|
* Komodo
|
||||||
|
* https://github.com/moghtech/komodo
|
||||||
|
* 🦎 a tool to build and deploy software on many servers 🦎
|
||||||
|
* headscale / tailscale
|
||||||
|
* [GitHub - juanfont/headscale: An open source, self-hosted implementation of the Tailscale control server](https://github.com/juanfont/headscale)
|
||||||
|
* [Tailscale · Best VPN Service for Secure Networks](https://tailscale.com/)
|
||||||
|
|
||||||
### Home auth
|
### Home auth
|
||||||
|
|
||||||
@ -95,7 +112,6 @@ graph LR;
|
|||||||
unbound<-->vault;
|
unbound<-->vault;
|
||||||
unbound<-->proxmox;
|
unbound<-->proxmox;
|
||||||
proxmox[proxmox + VMs];
|
proxmox[proxmox + VMs];
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
* External domain: `hobbithole.org`
|
* External domain: `hobbithole.org`
|
||||||
@ -129,6 +145,12 @@ graph LR;
|
|||||||
* Hosted on OPNsense
|
* Hosted on OPNsense
|
||||||
*
|
*
|
||||||
|
|
||||||
|
* hobby domains
|
||||||
|
* Transferring to Porkbun
|
||||||
|
* b3n.ooo
|
||||||
|
* benmiller.xyz
|
||||||
|
* beepmill.com
|
||||||
|
|
||||||
### IPAM
|
### IPAM
|
||||||
|
|
||||||
* wifi: `192.168.86.0/24`
|
* wifi: `192.168.86.0/24`
|
||||||
|
|||||||
BIN
image-1.png
Normal file
BIN
image-1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.9 MiB |
27
keyboards.md
27
keyboards.md
@ -2,3 +2,30 @@
|
|||||||
|
|
||||||
* [Cosmos Keyboard](https://ryanis.cool/cosmos/) - keyboard customizer
|
* [Cosmos Keyboard](https://ryanis.cool/cosmos/) - keyboard customizer
|
||||||
* [First attempt](https://ryanis.cool/cosmos/beta#cm:Cp8BChUSBRCAbyAnEgASABIAOB5AgIaKwAcKGRIFEIBjICcSABIAEgMQsDsSAxCwazgKQAAKHBIFEIBXICcSABIAEgMQsC8SAxCwXzgJQIDwvAIKERIFEIBLICcSABIAEgA4HUAAChESBRCAPyAnEgASABIAODFAAAoYEgIgJxIAEgQQoIAKEgIQMDgyQICGisAHGABA6IWgrvBVSNyMq9ABCmcKChIFEEBQ8gI4wAwKCxIGEMCAAiAoOKgUCgkSBBBAICg4kBwKCxIGEEAgKEAAOPgjChgSEhBAIAAwyAFAgICADUiAgLCsATAWOAAYCiIKCMgBEMgBGAAgAEDbkaSc8DdIhI+U1qB4CpUBCnYSFgiAMBDAgAIgAECMhdiWEEiNhYC43Q0SEwiAMBBAIABAmcSWCEiNhYC43Q0SDyAAQK6F3ANImYmIntDcEBIQIABA4YPY0AFI6ZOgl5DwERIPIABA0OKPOEiDj6CXkL0SEhEgAEDvhbyXsAFI4Z3QjbDYEjgAGAMiCgjIARDIARgAIABAno3MrPAzSKap3MaAtAgYhCCCAQIEAmAD)
|
* [First attempt](https://ryanis.cool/cosmos/beta#cm:Cp8BChUSBRCAbyAnEgASABIAOB5AgIaKwAcKGRIFEIBjICcSABIAEgMQsDsSAxCwazgKQAAKHBIFEIBXICcSABIAEgMQsC8SAxCwXzgJQIDwvAIKERIFEIBLICcSABIAEgA4HUAAChESBRCAPyAnEgASABIAODFAAAoYEgIgJxIAEgQQoIAKEgIQMDgyQICGisAHGABA6IWgrvBVSNyMq9ABCmcKChIFEEBQ8gI4wAwKCxIGEMCAAiAoOKgUCgkSBBBAICg4kBwKCxIGEEAgKEAAOPgjChgSEhBAIAAwyAFAgICADUiAgLCsATAWOAAYCiIKCMgBEMgBGAAgAEDbkaSc8DdIhI+U1qB4CpUBCnYSFgiAMBDAgAIgAECMhdiWEEiNhYC43Q0SEwiAMBBAIABAmcSWCEiNhYC43Q0SDyAAQK6F3ANImYmIntDcEBIQIABA4YPY0AFI6ZOgl5DwERIPIABA0OKPOEiDj6CXkL0SEhEgAEDvhbyXsAFI4Z3QjbDYEjgAGAMiCgjIARDIARgAIABAno3MrPAzSKap3MaAtAgYhCCCAQIEAmAD)
|
||||||
|
* Svalboard
|
||||||
|
* https://svalboard.com/
|
||||||
|
* Characorder
|
||||||
|
* Control panel: https://charachorder.io/
|
||||||
|
* Practice: https://www.iq-eq.io/#/
|
||||||
|
*
|
||||||
|
|
||||||
|
## Custom Build 1
|
||||||
|
|
||||||
|
* Dactyl Manuform style built with Cosmos Keyboard Configurator
|
||||||
|
* https://ryanis.cool/cosmos/beta#cm:Cn4KDxIFEJBBIBMSABIAODFAAAoPEgUQkE0gExIAEgA4HUAAChsSBRCQWSATEgASAxCwLxIDELBfOAlAgPCG+AEKGRIFEJBlIBMSABIDELA7EgMQsGs4CkCAgAwKExIFEJBxIBMSABIAOB5AgJqL0AIYAEDqhaCu8FVI3Iyr0AEKaAoXEhMQwIACQICAmAJIwpmglZC8AVBDOAgKFRIQEEBAgIAgSNCVgN2Q9QNQC1CeAgoUEhAQQECAgPgBSOaZ/KeQC1BXUH8KA1CCAhgCIgoIyAEQyAEYACAAQMuL/J/QMUitkdyNwZMGCngKDxIFEJA1IBMSABIAODJAAAoPEgUQkCkgExIAEgA4HkAAChgSBRCQHSATEgASABIDELBfOApAgISK2AIKFhIFEJARIBMSABIAEgMQsGs4CUCA6DQKExIFEJAFIBMSABIAOB1AgJqOsAMYAUDphaCu8FVI3IqryAEKaQoXEhMQwIACQICAmAJIwpmclaC8AVBDOAcKFRIQEEBAgIAgSNCV/Nyg9QNQC1CdAgoVEhAQQECAgPgBSOaZgKygC1BXUIABCgNQgQIYAyIKCMgBEMgBGAAgAEDMi/yf0DFIrZHgjbGTBiIDIK4NggEKAJ4FyAFllwEBAlhCYANoAPoBCRCIDhg8KGQoMg==
|
||||||
|
* https://www.printables.com/model/158559-handwire-hot-swap-socket-for-mechanical-keyboard-s
|
||||||
|
* `G:\My Drive\making\files\cosmotyl`
|
||||||
|
|
||||||
|
### Wiring
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
* https://ryanis.cool/cosmos/docs/qmk-rp2040/#wire-the-keyboard
|
||||||
|
*
|
||||||
|
|
||||||
|
|
||||||
|
## Training
|
||||||
|
|
||||||
|
* https://typecelerate.com/
|
||||||
|
|||||||
29
local-ai-beepmill.code-workspace
Normal file
29
local-ai-beepmill.code-workspace
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"folders": [
|
||||||
|
{
|
||||||
|
"path": "../local-ai-beepmill"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"settings": {
|
||||||
|
"workbench.colorCustomizations": {
|
||||||
|
"activityBar.activeBackground": "#982a11",
|
||||||
|
"activityBar.background": "#982a11",
|
||||||
|
"activityBar.foreground": "#e7e7e7",
|
||||||
|
"activityBar.inactiveForeground": "#e7e7e799",
|
||||||
|
"activityBarBadge.background": "#031d08",
|
||||||
|
"activityBarBadge.foreground": "#e7e7e7",
|
||||||
|
"commandCenter.border": "#e7e7e799",
|
||||||
|
"sash.hoverBorder": "#982a11",
|
||||||
|
"statusBar.background": "#6a1d0c",
|
||||||
|
"statusBar.foreground": "#e7e7e7",
|
||||||
|
"statusBarItem.hoverBackground": "#982a11",
|
||||||
|
"statusBarItem.remoteBackground": "#6a1d0c",
|
||||||
|
"statusBarItem.remoteForeground": "#e7e7e7",
|
||||||
|
"titleBar.activeBackground": "#6a1d0c",
|
||||||
|
"titleBar.activeForeground": "#e7e7e7",
|
||||||
|
"titleBar.inactiveBackground": "#6a1d0c99",
|
||||||
|
"titleBar.inactiveForeground": "#e7e7e799"
|
||||||
|
},
|
||||||
|
"peacock.color": "#6a1d0c"
|
||||||
|
}
|
||||||
|
}
|
||||||
50
making.md
50
making.md
@ -6,6 +6,7 @@
|
|||||||
* https://www.printables.com/@beepmill_1805142/collections
|
* https://www.printables.com/@beepmill_1805142/collections
|
||||||
* [Gumroad](https://gumroad.com/library)
|
* [Gumroad](https://gumroad.com/library)
|
||||||
* https://cults3d.com/en/design-collections
|
* https://cults3d.com/en/design-collections
|
||||||
|
* https://www.thingiverse.com/beepmill/collections
|
||||||
|
|
||||||
## Systems
|
## Systems
|
||||||
|
|
||||||
@ -16,22 +17,65 @@
|
|||||||
* [Underware 2.0 - Infinite Cable Management!](https://makerworld.com/en/models/783010-underware-2-0-infinite-cable-management#profileId-808979)
|
* [Underware 2.0 - Infinite Cable Management!](https://makerworld.com/en/models/783010-underware-2-0-infinite-cable-management#profileId-808979)
|
||||||
*
|
*
|
||||||
|
|
||||||
|
## Things to design
|
||||||
|
|
||||||
|
* Frit tray 
|
||||||
|
* 
|
||||||
|
* 5gal water bottle opal extension
|
||||||
|
* https://a.co/d/blahX4M
|
||||||
|
|
||||||
## Things to print
|
## Things to print
|
||||||
|
|
||||||
|
* https://thangs.com/designer/ForgeCore
|
||||||
|
* Desk plants
|
||||||
|
* Resin teeth #booloumud
|
||||||
|
* [Modern Gridifinity Case](https://www.printables.com/model/894202-modern-gridfinity-case)
|
||||||
* [Space Efficient Socket Holders - Gridfinity](https://www.printables.com/model/1101988-space-efficient-socket-holders-gridfinity/files)
|
* [Space Efficient Socket Holders - Gridfinity](https://www.printables.com/model/1101988-space-efficient-socket-holders-gridfinity/files)
|
||||||
* Printing metric [[2025-06-15]]
|
* Printing metric [[2025-06-15]]
|
||||||
* Printing imperial [[2025-06-17]]
|
* Printing imperial [[2025-06-17]]
|
||||||
* [AMS Lid Riser for Bambu Lab AMS](https://www.printables.com/model/602705-ams-lid-riser-for-bambu-lab-ams/comments)
|
|
||||||
* [AMS Driven Rear Roller replacement](https://makerworld.com/en/models/80150-ams-driven-rear-roller-replacement#profileId-85113)
|
* [AMS Driven Rear Roller replacement](https://makerworld.com/en/models/80150-ams-driven-rear-roller-replacement#profileId-85113)
|
||||||
* [Bambu Lab AMS Ultimate Front Rollers](https://makerworld.com/en/models/452104-bambu-lab-ams-ultimate-front-rollers#profileId-359257)
|
* Zip bag holder for spare parts etc
|
||||||
|
* Multiboard ziplog bag dispensers
|
||||||
|
* "Yours and Theirs" phone holder for RAV4
|
||||||
|
* Cupholder for RAV4
|
||||||
|
|
||||||
## Things that I've printed
|
## Things that I've printed
|
||||||
|
|
||||||
|
* [[2025-07-01]] - [Rubber Duck straw cap for Stanley tumbler](https://makerworld.com/en/models/495619-rubber-duck-straw-cap-for-stanley-tumbler#profileId-409800)
|
||||||
|
* [[2025-06-30]] - https://www.printables.com/model/836037-earring-holder-earring-display-stand-t-shape
|
||||||
|
* [[2025-06-19]] - [Anti-Stress Spikeroll by Paul_Drosser - Thingiverse](https://www.thingiverse.com/thing:4575204)
|
||||||
|
* [[2025-06-18]] - [Lid Riser for Bambu Lab AMS](https://www.printables.com/model/602705-ams-lid-riser-for-bambu-lab-ams/comments)
|
||||||
|
* [[2025-06-18]] - [Bambu Lab AMS Ultimate Front Rollers](https://makerworld.com/en/models/452104-bambu-lab-ams-ultimate-front-rollers#profileId-359257)
|
||||||
* [[2025-06-15]] - https://makerworld.com/en/models/192760-multiboard-pliers-holder#profileId-213102
|
* [[2025-06-15]] - https://makerworld.com/en/models/192760-multiboard-pliers-holder#profileId-213102
|
||||||
*
|
|
||||||
|
|
||||||
|
## Calibration guides
|
||||||
|
|
||||||
|
* [Ellis’ Print Tuning Guide](https://ellis3dp.com/Print-Tuning-Guide/)
|
||||||
|
* [J3DTech Guide to Resin 3D Printing - Google Docs](https://docs.google.com/document/d/1aoMSE6GBGMcoYXNGfPP9s_Jg8vr1wQmmZuvqP3suago/edit?tab=t.0#heading=h.gjdgxs)
|
||||||
|
* [Printer Calibration – Lychee Documentation](https://doc.mango3d.io/doc/printer-calibration/)
|
||||||
|
|
||||||
|
## Profiles
|
||||||
|
|
||||||
|
### Anycubic Photon M3 Plus
|
||||||
|
|
||||||
|
* Manual: https://paperless.hobbithole.org/share/fyqLOQ64q0UQBWwwI1RXRUvalNPpzrehYPkKax0ihZkErAmQwu
|
||||||
|
|
||||||
|
#### Build plate leveling
|
||||||
|
|
||||||
|
1. With resin tub and resin in, loosen build plate
|
||||||
|
2. Press Home
|
||||||
|
3. Press down with medium pressure, tighten in X pattern
|
||||||
|
4. Set `Z=0`
|
||||||
|
|
||||||
|
#### Standard Resin + White 50um
|
||||||
|
|
||||||
|
* Layer thickness
|
||||||
|
|
||||||
[//begin]: # "Autogenerated link references for markdown compatibility"
|
[//begin]: # "Autogenerated link references for markdown compatibility"
|
||||||
[2025-06-15]: 2025-06-15.md "2025-06-15"
|
[2025-06-15]: 2025-06-15.md "2025-06-15"
|
||||||
[2025-06-17]: 2025-06-17.md "2025-06-17"
|
[2025-06-17]: 2025-06-17.md "2025-06-17"
|
||||||
|
[2025-07-01]: 2025-07-01.md "2025-07-01"
|
||||||
|
[2025-06-30]: 2025-06-30.md "2025-06-30"
|
||||||
|
[2025-06-19]: 2025-06-19.md "2025-06-19"
|
||||||
|
[2025-06-18]: 2025-06-18.md "2025-06-18"
|
||||||
[//end]: # "Autogenerated link references"
|
[//end]: # "Autogenerated link references"
|
||||||
|
|||||||
5
opentofu.md
Normal file
5
opentofu.md
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# opentofu
|
||||||
|
|
||||||
|
* https://search.opentofu.org/provider/bpg/proxmox/latest
|
||||||
|
* http://gitea.hh.lan:3000/ben/homelab_tofu
|
||||||
|
* GCS backend: [`gs://deskbound-mournful-synthetic4`](https://console.cloud.google.com/storage/browser/deskbound-mournful-synthetic4)
|
||||||
11
pool.md
Normal file
11
pool.md
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
created: 2025-06-28T14:27:34-06:00
|
||||||
|
modified: 2025-06-28T14:30:15-06:00
|
||||||
|
---
|
||||||
|
|
||||||
|
# pool
|
||||||
|
|
||||||
|
# upgrades TODO
|
||||||
|
|
||||||
|
* valve upgrade, pvc
|
||||||
|
* https://youtu.be/4gmdtYiSq9g?si=aD4ZbZJyZU8ngQHE
|
||||||
29
shopify_theme.code-workspace
Normal file
29
shopify_theme.code-workspace
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"folders": [
|
||||||
|
{
|
||||||
|
"path": "../shopify_theme"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"settings": {
|
||||||
|
"workbench.colorCustomizations": {
|
||||||
|
"activityBar.activeBackground": "#accc6e",
|
||||||
|
"activityBar.background": "#accc6e",
|
||||||
|
"activityBar.foreground": "#15202b",
|
||||||
|
"activityBar.inactiveForeground": "#15202b99",
|
||||||
|
"activityBarBadge.background": "#3a81a5",
|
||||||
|
"activityBarBadge.foreground": "#e7e7e7",
|
||||||
|
"commandCenter.border": "#15202b99",
|
||||||
|
"sash.hoverBorder": "#accc6e",
|
||||||
|
"statusBar.background": "#96bf48",
|
||||||
|
"statusBar.foreground": "#15202b",
|
||||||
|
"statusBarItem.hoverBackground": "#7a9d37",
|
||||||
|
"statusBarItem.remoteBackground": "#96bf48",
|
||||||
|
"statusBarItem.remoteForeground": "#15202b",
|
||||||
|
"titleBar.activeBackground": "#96bf48",
|
||||||
|
"titleBar.activeForeground": "#15202b",
|
||||||
|
"titleBar.inactiveBackground": "#96bf4899",
|
||||||
|
"titleBar.inactiveForeground": "#15202b99"
|
||||||
|
},
|
||||||
|
"peacock.color": "#96bf48"
|
||||||
|
}
|
||||||
|
}
|
||||||
22
to watch.md
Normal file
22
to watch.md
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
---
|
||||||
|
created: 2025-08-20T11:26:28-06:00
|
||||||
|
modified: 2025-09-25T21:29:44-06:00
|
||||||
|
---
|
||||||
|
|
||||||
|
# to watch
|
||||||
|
|
||||||
|
- [x] Department Q
|
||||||
|
- [ ] Superman
|
||||||
|
- [ ] Thunderbolts
|
||||||
|
- [ ] Alien Earth
|
||||||
|
- [ ] Honey Don't
|
||||||
|
- [ ] Loki season 2
|
||||||
|
- [ ] The Naked Gun
|
||||||
|
- [ ] Decameron
|
||||||
|
- [ ] The Death of Stalin
|
||||||
|
- [ ] Love Lies Bleeding
|
||||||
|
- [ ] Fleabag
|
||||||
|
- [ ] The Midnight Hour
|
||||||
|
- [ ] Paprika
|
||||||
|
- [ ] What We Do In The Shadows
|
||||||
|
- [ ] Bugonia
|
||||||
Reference in New Issue
Block a user