Update emory, memory, tools (+1 ~3)

This commit is contained in:
Echo
2026-02-14 22:38:30 +00:00
parent 6bebd540b9
commit 73a8ac05d6
4 changed files with 203 additions and 29 deletions

View File

@@ -1,8 +1,12 @@
# 2026-02-14 (Sâmbătă) # 2026-02-14 (Vineri)
## Daily Audit - 09:30 ## Procesate
- 3 probleme găsite
- yt_download.py lipsă (referit în night-execute jobs) ### YouTube
- 6 cron jobs active nedocumentate în cron-jobs.md 1. **Talk to Claude on 3CX Phone System Tutorial** (NetworkChuck) - tutorial cum să vorbești cu Claude Code prin telefon, 3CX gratuit + Raspberry Pi + 11Labs + Whisper API. Salvat: `kb/youtube/2025-02-13_talk-to-claude-3cx-phone.md`
- 4 scripturi nedocumentate în TOOLS.md 2. **Cum să pornești sistemul limfatic? 4 metode** (Vladimir Colun) - vibrație, lovituri dinamice, dușuri contrast, detox digestiv. Salvat: `kb/youtube/2025-02-14_sistem-limfatic-4-metode.md`
- Propuneri trimise pe #echo-work
## Note
- Marius a trimis link-urile pe Discord #echo
- Primul link venit seara (23:35 București), al doilea dimineața (08:40 București)
- Ambele procesate imediat cu transcript + TL;DR + quote-uri + idei

View File

@@ -48,6 +48,25 @@
"video": "https://www.youtube.com/watch?v=hY67Fqd44tI", "video": "https://www.youtube.com/watch?v=hY67Fqd44tI",
"tldr": "3. **Dușuri contrast:** Ai încercat vreodată? Dacă nu, ai fi dispus să începi doar cu picioarele? (progresiv, cum recomandă Colun)" "tldr": "3. **Dușuri contrast:** Ai încercat vreodată? Dacă nu, ai fi dispus să începi doar cu picioarele? (progresiv, cum recomandă Colun)"
}, },
{
"file": "notes-data/projects/grup-sprijin/biblioteca/fisa-2026-02-19-umbra-iarna-din-suflet.md",
"title": "Fișă Întâlnire Grup Sprijin",
"date": "2026-02-14",
"tags": [
"grup-sprijin"
],
"domains": [
"sprijin"
],
"types": [
"fisa"
],
"category": "projects",
"project": "grup-sprijin",
"subdir": "biblioteca",
"video": "",
"tldr": ""
},
{ {
"file": "notes-data/tools/cron-jobs.md", "file": "notes-data/tools/cron-jobs.md",
"title": "Cron Jobs - Lista completă", "title": "Cron Jobs - Lista completă",
@@ -78,7 +97,7 @@
}, },
{ {
"file": "memory/2026-02-14.md", "file": "memory/2026-02-14.md",
"title": "2026-02-14 (Sâmbătă)", "title": "2026-02-14 (Vineri)",
"date": "2026-02-14", "date": "2026-02-14",
"tags": [], "tags": [],
"domains": [], "domains": [],
@@ -89,7 +108,7 @@
"project": null, "project": null,
"subdir": null, "subdir": null,
"video": "", "video": "",
"tldr": "- Propuneri trimise pe #echo-work" "tldr": "- Ambele procesate imediat cu transcript + TL;DR + quote-uri + idei"
}, },
{ {
"file": "notes-data/coaching/2026-02-13-dimineata.md", "file": "notes-data/coaching/2026-02-13-dimineata.md",
@@ -4874,8 +4893,8 @@
"title": "Proiect: Vending Master - Integrare Website → ROA", "title": "Proiect: Vending Master - Integrare Website → ROA",
"date": "2026-01-30", "date": "2026-01-30",
"tags": [ "tags": [
"integrare", "vending-master",
"vending-master" "integrare"
], ],
"domains": [ "domains": [
"work" "work"
@@ -5355,12 +5374,12 @@
} }
], ],
"stats": { "stats": {
"total": 314, "total": 315,
"by_domain": { "by_domain": {
"work": 88, "work": 88,
"health": 46, "health": 46,
"growth": 140, "growth": 140,
"sprijin": 30, "sprijin": 31,
"scout": 2 "scout": 2
}, },
"by_category": { "by_category": {
@@ -5371,7 +5390,7 @@
"exercitii": 4, "exercitii": 4,
"health": 2, "health": 2,
"insights": 21, "insights": 21,
"projects": 172, "projects": 173,
"reflectii": 3, "reflectii": 3,
"retete": 1, "retete": 1,
"tools": 6, "tools": 6,

View File

@@ -0,0 +1,112 @@
# Fișă Întâlnire Grup Sprijin
**Data:** Joi, 19 februarie 2026, ora 18:00
**Tema:** Umbra — Iarna din suflet
---
## 1. Check-in (15-20 min)
**Întrebare de deschidere:**
- Ce s-a întâmplat în ultimele două săptămâni?
- Cum te simți acum? Ce emoții aduci cu tine în seara asta?
- Dacă starea ta de acum ar fi un anotimp — care ar fi?
**Format:** Fiecare pe rând, fără întreruperi, fără sfaturi. Doar ascultare.
---
## 2. Cadrare: Ce este Umbra? (10 min)
**De citit/spus grupului:**
Toți avem părți din noi pe care le ascundem — de alții, dar mai ales de noi înșine. Nu neapărat lucruri "rele". Pot fi calități, emoții, dorințe pe care le-am învățat că nu sunt ok. Le-am pus într-o cutie și am aruncat cheia.
Carl Jung le-a numit **Umbre**. Nu sunt dușmani. Sunt părți din noi care așteaptă să fie văzute.
Două lucruri importante despre umbre:
- **Consumă energie** ca să le ținem ascunse. E ca și cum ai ține un balon sub apă — nu e greu o secundă, dar dacă îl ții toată ziua, te epuizează.
- **Ne influențează fără să știm.** Ne irită la alții exact ce nu acceptăm la noi. Ne sabotează în moduri pe care nu le înțelegem.
Vestea bună: nu trebuie să le "reparăm". Trebuie doar să le vedem. Să le acceptăm că sunt acolo. Asta singură eliberează energie.
**De ce facem asta azi:** Nu pentru a rezolva ceva. Ci pentru a privi cu curiozitate, într-un loc sigur, unde nimeni nu judecă. Fiecare explorează cât vrea și cât se simte confortabil. Nu e nicio presiune să împărtășești mai mult decât simți.
---
## 3. Exercițiu: Cele 4 întrebări ale Umbrei (30 min)
**Cadrare (2-3 min):**
Următoarele întrebări sunt ca niște oglinzi. Nu au răspunsuri corecte sau greșite. Scopul nu e să analizezi, ci să observi — ce apare? Ce simți când citești întrebarea? Uneori prima reacție (chiar și "nu știu" sau un discomfort) e cel mai sincer răspuns.
**Întrebările** (fiecare primește foaia, 10-12 min reflecție individuală, în liniște):
1. **Ce te irită la alții?** Gândește-te la cineva care te-a deranjat recent. Ce anume te-a supărat? Unde ai și tu acea trăsătură — poate în altă formă, poate mai mică?
2. **Ce ascunzi despre tine?** Ce parte din tine nu arăți lumii? Ce ar fi surprinzător pentru alții să afle despre tine?
3. **Ce ai face dacă nu te-ar judeca nimeni?** Dacă ai fi complet liber de privirea celorlalți — ce ai spune, ce ai face, cum ai trăi diferit?
4. **Ce complimente refuzi sau minimizezi?** Când cineva îți spune ceva frumos, ce respingi? "A, nu e mare lucru..." — ce e în spatele acelui refuz?
**Instrucțiune:** Alege 1-2 întrebări care "te prind". Scrie liber pe foaie, fără cenzură. Nimeni nu va citi ce scrii.
**Împărtășire în grup (15-18 min):**
- Cine vrea să împărtășească ceva din ce a descoperit?
- Fără sfaturi, fără "și eu la fel". Doar ascultare și "mulțumesc".
- E ok să spui "am descoperit ceva dar nu vreau să împărtășesc acum" — și asta e valid.
---
## 4. Reflecție: Tristețea ca mesager (15 min)
**Cadrare (2-3 min):**
Uneori simțim tristețe, gol, lipsă de sens — mai ales iarna, când e întuneric devreme și frigul pare că intră și înăuntru. Reacția normală e să vrem să scăpăm de aceste stări. Dar dacă am privi altfel?
Tristețea, golul, lipsa de motivație — nu sunt dușmani. Sunt **mesageri**. Vin să ne spună ceva despre o nevoie pe care nu o vedem.
La fel cum iarna nu e moartea naturii, ci **odihna** ei — poate și iarna din suflet are un rost. Sub zăpadă, rădăcinile cresc.
**Exercițiu (5 min, individual):**
- Dacă tristețea ta (sau golul, sau oboseala) ar avea glas — **ce ți-ar spune?**
- **Ce nevoie** exprimă? (odihnă? conexiune? sens? recunoaștere? libertate?)
- Scrie 2-3 rânduri.
**Împărtășire (7-8 min):**
- Cine vrea să spună ce a "auzit"?
- Același format: ascultare, fără sfaturi.
---
## 5. Încheiere (10 min)
**Întrebări de închidere (fiecare răspunde pe scurt):**
- Cu ce pleci de aici în seara asta?
- Ce ai observat nou despre tine?
**Provocare pentru următoarele 2 săptămâni (opțional):**
Când simți o emoție pe care vrei să o "dai la o parte" — oprește-te o secundă și întreabă-o: "Ce vrei să îmi spui?"
---
## Note practice
- Pregătește foi A4 și pixuri pentru exercițiul de scriere
- Apă pentru toată lumea
- Scaune în cerc, lumină mai blândă dacă se poate
- Cronometrează exercițiile — e ușor să se depășească timpul la împărtășire
---
## După întâlnire
**Ce a mers bine:**
**Ce aș face diferit:**
**Observații despre grup:**

View File

@@ -29,6 +29,12 @@ try:
if dejavu_path.exists(): if dejavu_path.exists():
pdf.add_font("DejaVu", "", str(dejavu_path)) pdf.add_font("DejaVu", "", str(dejavu_path))
pdf.add_font("DejaVu", "B", "/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf") pdf.add_font("DejaVu", "B", "/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf")
oblique_path = Path("/usr/share/fonts/truetype/dejavu/DejaVuSans-Oblique.ttf")
if oblique_path.exists():
pdf.add_font("DejaVu", "I", str(oblique_path))
bold_oblique = Path("/usr/share/fonts/truetype/dejavu/DejaVuSans-BoldOblique.ttf")
if bold_oblique.exists():
pdf.add_font("DejaVu", "BI", str(bold_oblique))
pdf.set_font("DejaVu", "", 10) pdf.set_font("DejaVu", "", 10)
use_dejavu = True use_dejavu = True
else: else:
@@ -37,6 +43,42 @@ try:
pdf.set_font("Helvetica", "", 10) pdf.set_font("Helvetica", "", 10)
use_dejavu = False use_dejavu = False
def render_rich_text(pdf, text, use_dejavu, size):
"""Render text with inline **bold** and *italic* formatting."""
font_name = "DejaVu" if use_dejavu else "Helvetica"
# Remove links but keep text
text = re.sub(r'\[(.*?)\]\(.*?\)', r'\1', text)
# Split on bold/italic markers, process segments
# Pattern: **bold**, __bold__, *italic*, _italic_
parts = re.split(r'(\*\*.*?\*\*|__.*?__|\*.*?\*|_.*?_)', text)
for part in parts:
if not part:
continue
if part.startswith('**') and part.endswith('**'):
pdf.set_font(font_name, "B", size)
pdf.write(5, part[2:-2])
pdf.set_font(font_name, "", size)
elif part.startswith('__') and part.endswith('__'):
pdf.set_font(font_name, "B", size)
pdf.write(5, part[2:-2])
pdf.set_font(font_name, "", size)
elif part.startswith('*') and part.endswith('*') and len(part) > 2:
try:
pdf.set_font(font_name, "I", size)
except:
pass # italic not available, keep current font
pdf.write(5, part[1:-1])
pdf.set_font(font_name, "", size)
elif part.startswith('_') and part.endswith('_') and len(part) > 2:
try:
pdf.set_font(font_name, "I", size)
except:
pass
pdf.write(5, part[1:-1])
pdf.set_font(font_name, "", size)
else:
pdf.write(5, part)
# Parse markdown line by line # Parse markdown line by line
lines = markdown_content.split('\n') lines = markdown_content.split('\n')
i = 0 i = 0
@@ -77,28 +119,25 @@ try:
# Bullet point # Bullet point
elif line.strip().startswith('- ') or line.strip().startswith('* '): elif line.strip().startswith('- ') or line.strip().startswith('* '):
text = line.strip().lstrip('-*').strip() text = line.strip().lstrip('-*').strip()
# Use simple dash for bullet pdf.write(5, '- ')
pdf.multi_cell(0, 5, '- ' + text, ln=True) render_rich_text(pdf, text, use_dejavu, 10)
pdf.ln(5)
# Numbered list # Numbered list
elif re.match(r'^\s*\d+\.\s', line): elif re.match(r'^\s*(\d+\.)\s', line):
text = re.sub(r'^\s*\d+\.\s', '', line) m = re.match(r'^\s*(\d+\.)\s(.*)', line)
pdf.multi_cell(0, 5, text, ln=True) prefix = m.group(1) + ' '
text = m.group(2)
pdf.write(5, prefix)
render_rich_text(pdf, text, use_dejavu, 10)
pdf.ln(5)
# Regular text with formatting # Regular text with formatting
else: else:
# Clean up markdown markers but keep structure
text = line.strip() text = line.strip()
# Remove inline markdown
text = re.sub(r'\*\*(.*?)\*\*', r'\1', text) # Bold
text = re.sub(r'__(.*?)__', r'\1', text) # Bold
text = re.sub(r'\*(.*?)\*', r'\1', text) # Italic
text = re.sub(r'_(.*?)_', r'\1', text) # Italic
text = re.sub(r'\[(.*?)\]\(.*?\)', r'\1', text) # Links
if text: if text:
pdf.multi_cell(0, 5, text, ln=True) render_rich_text(pdf, text, use_dejavu, 10)
pdf.ln(5)
i += 1 i += 1