nanobot: 2026-09-17 18:48:03
This commit is contained in:
325
cron/jobs.json
325
cron/jobs.json
@@ -37,8 +37,8 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"state": {
|
"state": {
|
||||||
"nextRunAtMs": 1789538400000,
|
"nextRunAtMs": 1789711200000,
|
||||||
"lastRunAtMs": 1789452000002,
|
"lastRunAtMs": 1789624800002,
|
||||||
"lastStatus": "ok",
|
"lastStatus": "ok",
|
||||||
"lastError": null,
|
"lastError": null,
|
||||||
"runHistory": [
|
"runHistory": [
|
||||||
@@ -46,42 +46,62 @@
|
|||||||
"runAtMs": 1789020000002,
|
"runAtMs": 1789020000002,
|
||||||
"status": "ok",
|
"status": "ok",
|
||||||
"durationMs": 6281,
|
"durationMs": 6281,
|
||||||
"error": null
|
"error": null,
|
||||||
|
"runId": null
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"runAtMs": 1789106400001,
|
"runAtMs": 1789106400001,
|
||||||
"status": "ok",
|
"status": "ok",
|
||||||
"durationMs": 6997,
|
"durationMs": 6997,
|
||||||
"error": null
|
"error": null,
|
||||||
|
"runId": null
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"runAtMs": 1789192800002,
|
"runAtMs": 1789192800002,
|
||||||
"status": "ok",
|
"status": "ok",
|
||||||
"durationMs": 5526,
|
"durationMs": 5526,
|
||||||
"error": null
|
"error": null,
|
||||||
|
"runId": null
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"runAtMs": 1789279200002,
|
"runAtMs": 1789279200002,
|
||||||
"status": "ok",
|
"status": "ok",
|
||||||
"durationMs": 10674,
|
"durationMs": 10674,
|
||||||
"error": null
|
"error": null,
|
||||||
|
"runId": null
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"runAtMs": 1789365600002,
|
"runAtMs": 1789365600002,
|
||||||
"status": "ok",
|
"status": "ok",
|
||||||
"durationMs": 5495,
|
"durationMs": 5495,
|
||||||
"error": null
|
"error": null,
|
||||||
|
"runId": null
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"runAtMs": 1789452000002,
|
"runAtMs": 1789452000002,
|
||||||
"status": "ok",
|
"status": "ok",
|
||||||
"durationMs": 4987,
|
"durationMs": 4987,
|
||||||
"error": null
|
"error": null,
|
||||||
|
"runId": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"runAtMs": 1789538400002,
|
||||||
|
"status": "ok",
|
||||||
|
"durationMs": 10889,
|
||||||
|
"error": null,
|
||||||
|
"runId": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"runAtMs": 1789624800002,
|
||||||
|
"status": "ok",
|
||||||
|
"durationMs": 6647,
|
||||||
|
"error": null,
|
||||||
|
"runId": "c1e268c8:1789624800003:96c562a2"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"createdAtMs": 1788948314679,
|
"createdAtMs": 1788948314679,
|
||||||
"updatedAtMs": 1789452004989,
|
"updatedAtMs": 1789624806649,
|
||||||
"deleteAfterRun": false
|
"deleteAfterRun": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -108,21 +128,134 @@
|
|||||||
"originMetadata": {}
|
"originMetadata": {}
|
||||||
},
|
},
|
||||||
"state": {
|
"state": {
|
||||||
"nextRunAtMs": 1789469747898,
|
"nextRunAtMs": 1789669878432,
|
||||||
"lastRunAtMs": 1789462547857,
|
"lastRunAtMs": 1789662678420,
|
||||||
"lastStatus": "ok",
|
"lastStatus": "ok",
|
||||||
"lastError": null,
|
"lastError": null,
|
||||||
"runHistory": [
|
"runHistory": [
|
||||||
{
|
{
|
||||||
"runAtMs": 1789462547857,
|
"runAtMs": 1789547478103,
|
||||||
"status": "ok",
|
"status": "ok",
|
||||||
"durationMs": 41,
|
"durationMs": 26,
|
||||||
"error": null
|
"error": null,
|
||||||
|
"runId": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"runAtMs": 1789554678131,
|
||||||
|
"status": "ok",
|
||||||
|
"durationMs": 11,
|
||||||
|
"error": null,
|
||||||
|
"runId": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"runAtMs": 1789561878143,
|
||||||
|
"status": "ok",
|
||||||
|
"durationMs": 12,
|
||||||
|
"error": null,
|
||||||
|
"runId": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"runAtMs": 1789569078156,
|
||||||
|
"status": "ok",
|
||||||
|
"durationMs": 12,
|
||||||
|
"error": null,
|
||||||
|
"runId": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"runAtMs": 1789576278256,
|
||||||
|
"status": "ok",
|
||||||
|
"durationMs": 11,
|
||||||
|
"error": null,
|
||||||
|
"runId": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"runAtMs": 1789583478269,
|
||||||
|
"status": "ok",
|
||||||
|
"durationMs": 13,
|
||||||
|
"error": null,
|
||||||
|
"runId": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"runAtMs": 1789590678283,
|
||||||
|
"status": "ok",
|
||||||
|
"durationMs": 12,
|
||||||
|
"error": null,
|
||||||
|
"runId": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"runAtMs": 1789597878296,
|
||||||
|
"status": "ok",
|
||||||
|
"durationMs": 12,
|
||||||
|
"error": null,
|
||||||
|
"runId": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"runAtMs": 1789605078310,
|
||||||
|
"status": "ok",
|
||||||
|
"durationMs": 12,
|
||||||
|
"error": null,
|
||||||
|
"runId": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"runAtMs": 1789612278324,
|
||||||
|
"status": "ok",
|
||||||
|
"durationMs": 12,
|
||||||
|
"error": null,
|
||||||
|
"runId": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"runAtMs": 1789619478338,
|
||||||
|
"status": "ok",
|
||||||
|
"durationMs": 11,
|
||||||
|
"error": null,
|
||||||
|
"runId": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"runAtMs": 1789626678350,
|
||||||
|
"status": "ok",
|
||||||
|
"durationMs": 13,
|
||||||
|
"error": null,
|
||||||
|
"runId": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"runAtMs": 1789633878365,
|
||||||
|
"status": "ok",
|
||||||
|
"durationMs": 12,
|
||||||
|
"error": null,
|
||||||
|
"runId": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"runAtMs": 1789641078378,
|
||||||
|
"status": "ok",
|
||||||
|
"durationMs": 11,
|
||||||
|
"error": null,
|
||||||
|
"runId": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"runAtMs": 1789648278391,
|
||||||
|
"status": "ok",
|
||||||
|
"durationMs": 12,
|
||||||
|
"error": null,
|
||||||
|
"runId": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"runAtMs": 1789655478405,
|
||||||
|
"status": "ok",
|
||||||
|
"durationMs": 13,
|
||||||
|
"error": null,
|
||||||
|
"runId": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"runAtMs": 1789662678420,
|
||||||
|
"status": "ok",
|
||||||
|
"durationMs": 12,
|
||||||
|
"error": null,
|
||||||
|
"runId": null
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"createdAtMs": 1789455347840,
|
"createdAtMs": 1789540278089,
|
||||||
"updatedAtMs": 1789462547898,
|
"updatedAtMs": 1789662678432,
|
||||||
"deleteAfterRun": false
|
"deleteAfterRun": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -149,51 +282,155 @@
|
|||||||
"originMetadata": {}
|
"originMetadata": {}
|
||||||
},
|
},
|
||||||
"state": {
|
"state": {
|
||||||
"nextRunAtMs": 1789467948003,
|
"nextRunAtMs": 1789664478436,
|
||||||
"lastRunAtMs": 1789466148003,
|
"lastRunAtMs": 1789662678435,
|
||||||
"lastStatus": "ok",
|
"lastStatus": "ok",
|
||||||
"lastError": null,
|
"lastError": null,
|
||||||
"runHistory": [
|
"runHistory": [
|
||||||
{
|
{
|
||||||
"runAtMs": 1789457147995,
|
"runAtMs": 1789628478367,
|
||||||
"status": "ok",
|
|
||||||
"durationMs": 0,
|
|
||||||
"error": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"runAtMs": 1789458947996,
|
|
||||||
"status": "ok",
|
"status": "ok",
|
||||||
"durationMs": 1,
|
"durationMs": 1,
|
||||||
"error": null
|
"error": null,
|
||||||
|
"runId": null
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"runAtMs": 1789460747999,
|
"runAtMs": 1789630278369,
|
||||||
"status": "ok",
|
|
||||||
"durationMs": 0,
|
|
||||||
"error": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"runAtMs": 1789462548000,
|
|
||||||
"status": "ok",
|
|
||||||
"durationMs": 0,
|
|
||||||
"error": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"runAtMs": 1789464348001,
|
|
||||||
"status": "ok",
|
"status": "ok",
|
||||||
"durationMs": 1,
|
"durationMs": 1,
|
||||||
"error": null
|
"error": null,
|
||||||
|
"runId": null
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"runAtMs": 1789466148003,
|
"runAtMs": 1789632078371,
|
||||||
|
"status": "ok",
|
||||||
|
"durationMs": 1,
|
||||||
|
"error": null,
|
||||||
|
"runId": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"runAtMs": 1789633878381,
|
||||||
"status": "ok",
|
"status": "ok",
|
||||||
"durationMs": 0,
|
"durationMs": 0,
|
||||||
"error": null
|
"error": null,
|
||||||
|
"runId": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"runAtMs": 1789635678381,
|
||||||
|
"status": "ok",
|
||||||
|
"durationMs": 1,
|
||||||
|
"error": null,
|
||||||
|
"runId": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"runAtMs": 1789637478383,
|
||||||
|
"status": "ok",
|
||||||
|
"durationMs": 1,
|
||||||
|
"error": null,
|
||||||
|
"runId": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"runAtMs": 1789639278385,
|
||||||
|
"status": "ok",
|
||||||
|
"durationMs": 1,
|
||||||
|
"error": null,
|
||||||
|
"runId": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"runAtMs": 1789641078391,
|
||||||
|
"status": "ok",
|
||||||
|
"durationMs": 1,
|
||||||
|
"error": null,
|
||||||
|
"runId": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"runAtMs": 1789642878392,
|
||||||
|
"status": "ok",
|
||||||
|
"durationMs": 1,
|
||||||
|
"error": null,
|
||||||
|
"runId": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"runAtMs": 1789644678394,
|
||||||
|
"status": "ok",
|
||||||
|
"durationMs": 1,
|
||||||
|
"error": null,
|
||||||
|
"runId": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"runAtMs": 1789646478397,
|
||||||
|
"status": "ok",
|
||||||
|
"durationMs": 0,
|
||||||
|
"error": null,
|
||||||
|
"runId": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"runAtMs": 1789648278408,
|
||||||
|
"status": "ok",
|
||||||
|
"durationMs": 0,
|
||||||
|
"error": null,
|
||||||
|
"runId": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"runAtMs": 1789650078411,
|
||||||
|
"status": "ok",
|
||||||
|
"durationMs": 0,
|
||||||
|
"error": null,
|
||||||
|
"runId": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"runAtMs": 1789651878412,
|
||||||
|
"status": "ok",
|
||||||
|
"durationMs": 1,
|
||||||
|
"error": null,
|
||||||
|
"runId": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"runAtMs": 1789653678414,
|
||||||
|
"status": "ok",
|
||||||
|
"durationMs": 0,
|
||||||
|
"error": null,
|
||||||
|
"runId": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"runAtMs": 1789655478420,
|
||||||
|
"status": "ok",
|
||||||
|
"durationMs": 0,
|
||||||
|
"error": null,
|
||||||
|
"runId": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"runAtMs": 1789657278421,
|
||||||
|
"status": "ok",
|
||||||
|
"durationMs": 0,
|
||||||
|
"error": null,
|
||||||
|
"runId": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"runAtMs": 1789659078423,
|
||||||
|
"status": "ok",
|
||||||
|
"durationMs": 0,
|
||||||
|
"error": null,
|
||||||
|
"runId": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"runAtMs": 1789660878424,
|
||||||
|
"status": "ok",
|
||||||
|
"durationMs": 0,
|
||||||
|
"error": null,
|
||||||
|
"runId": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"runAtMs": 1789662678435,
|
||||||
|
"status": "ok",
|
||||||
|
"durationMs": 1,
|
||||||
|
"error": null,
|
||||||
|
"runId": null
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"createdAtMs": 1789455347851,
|
"createdAtMs": 1789540278095,
|
||||||
"updatedAtMs": 1789466148003,
|
"updatedAtMs": 1789662678436,
|
||||||
"deleteAfterRun": false
|
"deleteAfterRun": false
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -2,4 +2,5 @@
|
|||||||
|
|
||||||
| EN | CZ | poznámka |
|
| EN | CZ | poznámka |
|
||||||
|----|----|----------|
|
|----|----|----------|
|
||||||
| a means to an end | prostředek k cíli | něco, co má smysl jen jako cesta k cíli, ne samo o sobě; work is a means to an end |
|
| a means to an end | prostředek k cíli | něco, co má smysl jen jako cesta k cíli, ne samo o sobě; work is a means to an end |
|
||||||
|
| from the bottom of my heart | z hloubi srdce | vždy s "from"; zdůrazňuje upřímnost: thank you from the bottom of my heart |
|
||||||
@@ -28,3 +28,5 @@
|
|||||||
- 2026-09-15: Stav kyčle po 4 dnech cvičení: asymetrie přetrvává — pravá strana táhne o dost víc, přitahování kolen jde obecně ztuha. K fyzio sestavě zařadil i další cviky ze své obvyklé sestavy. Rozhodnutí: nová návštěva fyzioterapeutky cca 3–4 týdny po první (10.9.), tedy začátek října — v souladu s klinickou praxí (reassessment 2–3 týdny po zahájení, pak 3–4 týdny; ROM adaptace trvá týdny). Na kontrole doladit počty opakování a výdrže u cviků.
|
- 2026-09-15: Stav kyčle po 4 dnech cvičení: asymetrie přetrvává — pravá strana táhne o dost víc, přitahování kolen jde obecně ztuha. K fyzio sestavě zařadil i další cviky ze své obvyklé sestavy. Rozhodnutí: nová návštěva fyzioterapeutky cca 3–4 týdny po první (10.9.), tedy začátek října — v souladu s klinickou praxí (reassessment 2–3 týdny po zahájení, pak 3–4 týdny; ROM adaptace trvá týdny). Na kontrole doladit počty opakování a výdrže u cviků.
|
||||||
- 2026-09-15: Upřesnění k rozšíření sestavy: další přidané cviky jsou taky protahovací — celý trénink tak zůstává čistě mobilizační, žádná zátěž navíc.
|
- 2026-09-15: Upřesnění k rozšíření sestavy: další přidané cviky jsou taky protahovací — celý trénink tak zůstává čistě mobilizační, žádná zátěž navíc.
|
||||||
- 2026-09-16: Další tréninkový den (16.9.) — fyzio cviky plus další přidané protahovací cviky z vlastní obvyklé sestavy. Adherence drží: 5 tréninků za 6 dní, v rámci zvoleného pásma (podlaha 2×/týden, cíl denně).
|
- 2026-09-16: Další tréninkový den (16.9.) — fyzio cviky plus další přidané protahovací cviky z vlastní obvyklé sestavy. Adherence drží: 5 tréninků za 6 dní, v rámci zvoleného pásma (podlaha 2×/týden, cíl denně).
|
||||||
|
- 2026-09-16: Rozhodnutí o doplňcích (k výživě, po rozboru článku o hořčíku): vybral si MedPharma Magnesium citrát Forte B6 (BENU, 67 tbl., ~119 Kč) — plán brát **1 tabletu denně** (150 mg elementárního hořčíku v citrátu, 6 mg B6; při 1 tabletě pod EFSA UL 250 mg i pod britským B6 limitem 10 mg). Splňuje kritéria z článku: vstřebatelná forma, elementární hořčík jasně na etiketě, malý počet tablet na dávku, rozumná cena. Vedle toho má doma MedPharma Ca+Mg+Zn (hořčík jako špatně vstřebatelný oxid) — ten nadále brát na Ca+Zn, ne jako zdroj hořčíku; při kombinaci počítat hořčík z obou produktů. Důvod v kontextu projektu: lepší spánek/regenerace jako podpora váhového cíle; doplněk ale nenahrazuje jídlo a spánek. Produkt: https://www.benu.cz/medpharma-magnesium-citrat-forte-b6-tbl-67
|
||||||
|
- 2026-09-16: Zdroj k rozhodnutí o hořčíku: článek „Hořčík pro běžce: Kdy má smysl a za co zbytečně připlácíte“ (rungo.cz, 16.9.2026) — https://rungo.cz/2026/09/16/horcik-pro-bezce-jak-vybrat/ . Klíčové závěry, na kterých stojí volba doplňku: křeč v lýtku není diagnóza nedostatku hořčíku (současný výzkum EAMC je složitější než výpadek jednoho minerálu); běhání samo o sobě nedostatek nezpůsobuje; první řešit jídlem (luštěniny, ořechy, semínka, celozrnné, listová zelenina); při výběru hledat elementární hořčík v denní dávce (ne hmotnost sloučeniny na přední straně), počet tablet na dávku a formu — lépe vstřebatelné citrát/laktát/chlorid/aspartát, oxid má horší vstřebatelnost ale není zbytečný; přesné načasování forem (malát ráno na energii, bisglycinát večer na spánek) marketing bez důkazů, stejně jako hořčíkové koupele/olej (transdermální vstřebávání nedoložené); EFSA UL pro hořčík z doplňků 250 mg/den (limit odvozen z projímavosti, ne toxicity); hořčík na spánek nenahradí režim a spánek. Zdroje článku: EFSA, NIH ODS, PubMed systematické review.
|
||||||
|
|||||||
@@ -39,6 +39,15 @@ Denní vážení, vnímaná kondice, jestli mě něco bolí.
|
|||||||
- Pozorování: po teplejším jídle (sushi) přichází chuť na sladké / zasytivé.
|
- Pozorování: po teplejším jídle (sushi) přichází chuť na sladké / zasytivé.
|
||||||
- Otázka k řešení: jak tu chuť zastavit nebo nahradit něčím, co nezvedne váhu.
|
- Otázka k řešení: jak tu chuť zastavit nebo nahradit něčím, co nezvedne váhu.
|
||||||
|
|
||||||
|
## Doplňky (od 2026-09-16)
|
||||||
|
|
||||||
|
- **MedPharma Magnesium citrát Forte B6** — 1 tableta denně (150 mg Mg citrát,
|
||||||
|
6 mg B6). Vybíráno podle kritérií z hořčíkového článku (forma, elementární
|
||||||
|
hořčík na etiketě, dávkování, cena).
|
||||||
|
- **MedPharma Ca+Mg+Zn** (starší nákup) — brát jako zdroj Ca+Zn, ne hořčíku
|
||||||
|
(obsahuje oxid hořečnatý, špatně vstřebatelný).
|
||||||
|
- Hořčík při kombinaci obou produktů počítat dohromady (EFSA UL 250 mg/den).
|
||||||
|
|
||||||
## Mobilita a pohyb (2026-09-02)
|
## Mobilita a pohyb (2026-09-02)
|
||||||
|
|
||||||
- **Fyzio terapie k zadání**: omezená mobilita pravého kyčle; proč se pravá noha
|
- **Fyzio terapie k zadání**: omezená mobilita pravého kyčle; proč se pravá noha
|
||||||
|
|||||||
@@ -4,3 +4,4 @@
|
|||||||
- 2026-09-13: Doplnění ke Skotsku: výlet do Highlands byl v září.
|
- 2026-09-13: Doplnění ke Skotsku: výlet do Highlands byl v září.
|
||||||
- 2026-09-13: Nová plánovaná destinace: Norsko — cesta karavanem.
|
- 2026-09-13: Nová plánovaná destinace: Norsko — cesta karavanem.
|
||||||
- 2026-09-13: Plánované termíny: Vánoce — Maroko (letíme), únor — Panama. Tím se mění původní plán z USER.md (Vánoce 2026 Panama, ~21.12.2026–4.1.2027) — Panama se posouvá na únor.
|
- 2026-09-13: Plánované termíny: Vánoce — Maroko (letíme), únor — Panama. Tím se mění původní plán z USER.md (Vánoce 2026 Panama, ~21.12.2026–4.1.2027) — Panama se posouvá na únor.
|
||||||
|
- 2026-09-17: Panama: upřesněn termín letu z Prahy — odlet 5.2.2027, návrat z Panamy 21.2.2027 (návrat do Prahy 22.2.2027). Původní zápis „únor" je tím konkrétní.
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
## Nadcházející s termínem
|
## Nadcházející s termínem
|
||||||
- Vánoce — Maroko (letíme)
|
- Vánoce — Maroko (letíme)
|
||||||
- Únor — Panama
|
- 5.2.2027 – 22.2.2027 — Panama (odlet z Prahy 5.2., návrat z Panamy 21.2., přílet do Prahy 22.2.)
|
||||||
|
|
||||||
## Destinace s Emou — navštíveno
|
## Destinace s Emou — navštíveno
|
||||||
- Skotsko — Highlands (září 2025), bylo to boží
|
- Skotsko — Highlands (září 2025), bylo to boží
|
||||||
|
|||||||
93
results/2026-09-16_nanobot-v0.3.0-vs-v0.3.5-deep-research.md
Normal file
93
results/2026-09-16_nanobot-v0.3.0-vs-v0.3.5-deep-research.md
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
# nanobot v0.3.0 → v0.3.5 — deep research report
|
||||||
|
|
||||||
|
## Shrnutí
|
||||||
|
|
||||||
|
v0.3.5 je největší release od v0.3.0: 402 merged PRs, 45 nových contributorů, 809 commitů mezi tagy. Hlavní příběhy: (1) nativní terminálový klient (TUI) sdílející stejný gateway a session storage jako WebUI, (2) přemístění session JSONL souborů mimo workspace + viditelná context compaction, (3) přepis timeout modelu z celkového na idle-based, (4) výrazné security zpevnění (credentials v subprocess env, SSRF, sandbox backends).
|
||||||
|
|
||||||
|
## Zjištění
|
||||||
|
|
||||||
|
### 1. Terminálový UI (nové) — ~95 commitů scope `tui`
|
||||||
|
- `nanobot` bez argumentů spouští nativní TypeScript TUI; `nanobot agent` zůstává alias; `--classic` = starý Python prompt
|
||||||
|
- TUI hovoří se stejným gateway jako WebUI — jeden protokol, sdílené WebSocket session
|
||||||
|
- Funkce: resume/fork sessionů, `/detach`, `/diff` (fullscreen unified diff posledního turnu), `/usage` token grafy, paste clipboard obrázků, autocomplete skill references, slash commands, LaTeX rendering, follow-up queue, interaktivní titulky sessionů
|
||||||
|
- Platform wheels obsahují TUI binárku (checksummed, version-matched) — první spuštění nestahuje z GitHubu, nevyžaduje Bun
|
||||||
|
- Podporované wheels: macOS 13+ arm64/x64, glibc 2.17+ Linux arm64/x64, Windows x64
|
||||||
|
- Lifecycle: zavření posledního interaktivního launcheru (WebUI/TUI) stopne on-demand gateway; `/detach` nebo `nanobot gateway --background` ji nechá běžet
|
||||||
|
- Zdroj: [1], [3]
|
||||||
|
|
||||||
|
### 2. Session storage — breaking změna
|
||||||
|
- Session JSONL soubory se stěhují z `<workspace>/sessions/` do `<config-dir>/sessions/<workspace-id>/` — mimo agent-readable workspace
|
||||||
|
- První upgraded start provede migraci po ověření atomic copy; symlinked legacy migration se rejectuje
|
||||||
|
- Stará a nová verze nesmí zapisovat stejný workspace současně
|
||||||
|
- Downgrade: `nanobot sessions restore-workspace --config <config.json> --workspace <workspace>` (odmítne přepsat odlišný existující soubor)
|
||||||
|
- Zdroj: [1], [3]
|
||||||
|
|
||||||
|
### 3. Runtime / env vars — breaking změny
|
||||||
|
- `NANOBOT_LLM_TIMEOUT_S` — **zrušen (Unused)**. Nahrazuje ho `NANOBOT_STREAM_IDLE_TIMEOUT_S` (default 90 s, max 3600, clamp). Idle timeout renewed každým stream eventem včetně reasoning/tool-call delt — není to celkový limit
|
||||||
|
- `NANOBOT_MAX_CONCURRENT_REQUESTS` — defaultně **unlimited** (dřív limit); kladné int = cap
|
||||||
|
- Subagent concurrency: default 4, přebytečná práce čeká na kapacitu
|
||||||
|
- `agents.defaults.failOnToolError` — odstraněno
|
||||||
|
- `/health` endpoint může vracet **HTTP 503**, když enabled WebSocket channel neběží — monitoring (Zabbix) nesmí předpokládat 200 vždy
|
||||||
|
- Remote project selection používá cesty na nanobot hostu, vyžaduje Restricted access
|
||||||
|
- Zdroj: [1], [4]
|
||||||
|
|
||||||
|
### 4. Security
|
||||||
|
- `fix(providers): stop writing API keys into process os.environ` — klíče už neleží v environ subprocessů
|
||||||
|
- Izolace prostředí: `fix(cli): isolate management subprocess environments`, `fix(webui): isolate folder picker environment`
|
||||||
|
- SSRF: block IPv6 unspecified targets, pin validated DNS (přesněji: harden generated image downloads, credential URLs mimo Jina reader a failure logy)
|
||||||
|
- `feat(exec): add a macOS Seatbelt sandbox backend` + `feat(exec): allow extra bwrap bind roots` (Linux bwrap)
|
||||||
|
- Executive advisory v release: `exec.allowPatterns` shell-chain bypass umožňující unintended command execution — opraveno
|
||||||
|
- Email auth: `verifySpf`/`verifyDkim` nyní vyžadují `channels.email.trustedAuthservIds` (explicitní trust anchor od receiving mail service). Bez něj Email config nenastartuje — workaround „vypnout verifikaci" není podporován
|
||||||
|
- Zdroj: [1], [2]
|
||||||
|
|
||||||
|
### 5. WebUI workbench — ~240 commitů scope `webui` (největší oblast)
|
||||||
|
- Až 4 conversation panely vedle sebe v resizable groups, persistent sidebar ordering, drag sessionů do mentions, temporary chats
|
||||||
|
- Per-round token/cache grafy, visible context-compaction progress, paged history search, cumulative summaries
|
||||||
|
- SkillHub (marketplace), portable Agent Plugins, remote MCP browser OAuth + token refresh
|
||||||
|
- Automations: task + calendar view, per-run replies, edit zachovává pending executions, delete už neblokuje navigaci
|
||||||
|
- PWA (instalace na home screen), mobilní composer, draggable context sheets
|
||||||
|
- Zdroj: [1], [2]
|
||||||
|
|
||||||
|
### 6. Memory / Dream — 32 commitů
|
||||||
|
- `feat(memory): restore Dream model preset override` — Dream lze přepnout na jiný model preset
|
||||||
|
- `fix(dream): stop duplicating SOUL/USER/MEMORY into the Dream prompt` — prompt duplikace opravena
|
||||||
|
- Idle compaction: konfigurovatelný scan interval, reuse session context (perf), invalidace provider state po idle compaction
|
||||||
|
- Množství robustness fixů: no-op batche, retryable failed batches, truncated consolidation output, tool-call-only consolidation reject
|
||||||
|
- Zdroj: [1], [2]
|
||||||
|
|
||||||
|
### 7. Providers / modely
|
||||||
|
- DeepSeek Responses API + V4 Pro Responses + V4 vision
|
||||||
|
- Eden AI a OrcaRouter jako OpenAI-compatible gateway providers
|
||||||
|
- Grok 4.6 subscription model, OAuth model catalogs online discovery
|
||||||
|
- AnySearch provider (key-optional, anonymous quota)
|
||||||
|
- Telegram: streaming rich messages, compaction notices collapsed do jedné editované zprávy
|
||||||
|
- Zdroj: [1], [2]
|
||||||
|
|
||||||
|
### 8. Cron / scheduling — 14 commitů
|
||||||
|
- Edit automation details zachová pending runs
|
||||||
|
- Scheduler přežije selhání job-store persistence, žádný replay po persistence failure
|
||||||
|
- Retire persisted heartbeat/dream jobs při disabled, startup job count reconciliation
|
||||||
|
- Heartbeat: unified sessions routují na last channel
|
||||||
|
- Zdroj: [2]
|
||||||
|
|
||||||
|
## Co se netýká tvého deploymentu
|
||||||
|
- Desktop coexistence, DingTalk/WeCom/WeChat/Matrix/QQ/Signal/Mattermost fixes — neaktivní kanály
|
||||||
|
- Windows path escaping v sandbox testech
|
||||||
|
|
||||||
|
## Dopady na tvůj deployment (systemd + Telegram + Zabbix + Ollama)
|
||||||
|
- **Zabbix health check**: `/health` může vracet 503 — ověř trigger na 503, ne jen connection refused
|
||||||
|
- **Env vars**: pokud máš někde `NANOBOT_LLM_TIMEOUT_S`, přestal fungovat → `NANOBOT_STREAM_IDLE_TIMEOUT_S`
|
||||||
|
- **Session soubory**: zmigrované z workspace do config dir — pozor na zálohy (wood.hell → pivo.hell): `/sessions/` pod workspace už nebude primární umístění
|
||||||
|
- **Gateway lifetime**: systemd service běží gateway explicitně — on-demand lifetime se netýká
|
||||||
|
- **Telegram**: rich streaming nově podporován
|
||||||
|
|
||||||
|
## Rozpory a nejistoty
|
||||||
|
- GitHub tagy 0.3.1–0.3.4 neexistují (release notes tvrdí „Since v0.3.0" — 402 PRs; compare API ukazuje 809 commitů, což zahrnuje i merge commity). Oba údaje z primárních zdrojů, rozdíl je v metodice počítání
|
||||||
|
- PyPI uvádí releases 0.3.1–0.3.4 (neověřeno, co obsahovaly — bez GitHub tagů nejsou release notes k dispozici)
|
||||||
|
|
||||||
|
## Zdroje
|
||||||
|
[1] Release notes v0.3.5 — https://github.com/HKUDS/nanobot/releases/tag/v0.3.5
|
||||||
|
[2] Git compare v0.3.0...v0.3.5 (809 commit subjects, GitHub API) — https://github.com/HKUDS/nanobot/compare/v0.3.0...v0.3.5
|
||||||
|
[3] CLI Reference v0.3.5 (session storage & rollback) — https://github.com/HKUDS/nanobot/blob/v0.3.5/docs/cli-reference.md
|
||||||
|
[4] Configuration v0.3.5 (runtime env vars) — https://github.com/HKUDS/nanobot/blob/v0.3.5/docs/configuration.md
|
||||||
|
[5] PyPI JSON API — https://pypi.org/pypi/nanobot-ai/json
|
||||||
BIN
results/ollama_weekly_usage.png
Normal file
BIN
results/ollama_weekly_usage.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 50 KiB |
Reference in New Issue
Block a user