Skip to content

Commit 052f11c

Browse files
committed
feat: migrate user profile to shared_preferences and implement granular notifications
1 parent e9d6bb9 commit 052f11c

113 files changed

Lines changed: 640 additions & 1747 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

design_protocols/chat_protocol.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# Designový protokol: Chat Screen
2+
3+
Rozhraní pro zabezpečenou textovou a obrazovou komunikaci mezi dvěma uzly.
4+
5+
## 🎨 Vizuální styl (Aurelian Noir)
6+
- **Styl:** Moderní chatovací rozhraní s asymetrickými bublinami.
7+
- **Barvy:** Moje zprávy jsou zlaté, přijaté zprávy jsou temně šedé.
8+
9+
## 📱 Struktura a obsah
10+
11+
### 1. Horní lišta (AppBar)
12+
- **Navigace:** Zlatá šipka zpět.
13+
- **Profil:** Kruhový avatar protistrany a titulek Node: [ID].
14+
- **Status:** Malý šedý text Secured Mesh Connection.
15+
16+
### 2. Seznam zpráv (Message List)
17+
- **Bublina "Moje zpráva":**
18+
- **Barva:** Zlatý gradient (primaryGold -> primaryGoldContainer).
19+
- **Text:** Černý (vysoký kontrast).
20+
- **Tvar:** Zaoblení 20px, pravý dolní roh je ostrý.
21+
- **Bublina "Přijatá zpráva":**
22+
- **Barva:** surfaceContainerLow (tmavě šedá).
23+
- **Text:** Off-white.
24+
- **Tvar:** Zaoblení 20px, levý dolní roh je ostrý.
25+
- **Okraj:** Velmi tenký zlatý lem.
26+
- **Čas a stav:**
27+
- Zobrazen pod bublinou.
28+
- Ikony fajfek (odesláno/doručeno) nebo červená ikona chyby.
29+
30+
### 3. Vstupní oblast (Input Area)
31+
- **Pozadí:** Tmavý panel s průhledností (0.9).
32+
- **Akce vlevo:** Zlaté tlačítko + pro odeslání obrázku.
33+
- **Vstupní pole:** Černý "pilulkový" tvar s textem Message Offchat...
34+
- **Odeslat:** Zlatý čtverec se zaoblenými rohy a černou ikonou papírového letadla.
35+
36+
## ⚙️ Funkcionalita
37+
- **Media:** Podpora pro odesílání a zobrazení obrázků (automatické zaoblení 12px v bublině).
38+
- **Scroll:** Automatické posouvání na konec seznamu při nové zprávě s plynulou animací.
39+
- **Stavy zpráv:** Vizuální indikace doručení (fajfky) a selhání odeslání.
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# Designový protokol: Discovery Screen (The Nodes)
2+
3+
Hlavní obrazovka aplikace pro vyhledávání okolních uzlů (zařízení) v mesh síti.
4+
5+
## 🎨 Vizuální styl (Aurelian Noir)
6+
- **Styl:** Temné uživatelské rozhraní se zlatými a barevnými stavovými indikátory.
7+
- **Karty:** Zaoblené obdélníky (24px) s jemným zlatým okrajem (0.1 průhlednost).
8+
9+
## 📱 Struktura a obsah
10+
11+
### 1. Horní lišta (AppBar)
12+
- **Statusy (vlevo):**
13+
- **Radar Icon:** Modrý pulzující indikátor při aktivním skenování.
14+
- **Visibility Icon:** Zelený pulzující indikátor, pokud je zařízení viditelné pro ostatní.
15+
- **Titulek:** OFFCHAT (centrovaný, malé kapitálky, letterSpacing 4).
16+
- **Progress:** Tenký zlatý indikátor pod AppBar během probíhajícího skenování.
17+
18+
### 2. Záhlaví obsahu
19+
- **Titulek:** Nearby Devices (headlineSmall, tučné).
20+
- **Podtitul:** Scanning for active pulses...
21+
- **Badge:** Zlatý badge ACTIVE vpravo nahoře.
22+
23+
### 3. Seznam zařízení (Device List)
24+
- **Karta uzlu (Device Card):**
25+
- **Avatar:** Čtvercový se zaoblením 16px.
26+
- **Online indikátor:** Zelený bod v pravém dolním rohu avataru (pokud bylo viděno v posledních 2 minutách).
27+
- **Jméno:** Node: [Alias] (titleMedium, tučné).
28+
- **Verified:** Zlatá ikona fajfky u jména, pokud je k dispozici veřejný klíč.
29+
- **Status:** Čas od posledního spatření (např. "Seen 2 minutes ago").
30+
- **Akce:** Kruhové zlaté tlačítko se zprávou.
31+
32+
### 4. Detail profilu (Profile Dialog)
33+
- **Vizuál:** Dialog s tmavým pozadím a zlatým okrajem (zaoblení 28px).
34+
- **Prvky:** Velký kruhový avatar, jméno, Stable ID a metadata (čas, lokace).
35+
- **Akce:** Tlačítka CLOSE (outlined) a MESSAGE (elevated zlaté).
36+
37+
## ⚙️ Funkcionalita
38+
- **Skenování:** Automatické BLE skenování na pozadí.
39+
- **Granulární status:** Zobrazení specifických stavů synchronizace (např. "Reading profile...") přímo v kartě zařízení.
40+
- **Navigace:** Kliknutí na kartu otevře detail profilu, kliknutí na ikonu zprávy přejde přímo do chatu.
41+
- **Debug:** Dvojitý poklep na titulek v AppBaru otevře logovací terminál.
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# Designový protokol: Location Screen (The Radar)
2+
3+
Vizuální reprezentace okolních uzlů na relativním radaru vzhledem k poloze a orientaci uživatele.
4+
5+
## 🎨 Vizuální styl (Aurelian Noir)
6+
- **Styl:** Matematicky přesná vizualizace na černém pozadí s radiálním zlatým gradientem.
7+
- **Radar:** Soustředné kružnice definující vzdálenost (10m, 25m, 50m).
8+
9+
## 📱 Struktura a obsah
10+
11+
### 1. Horní lišta (AppBar)
12+
- **Titulek:** OFFCHAT (zlatý, centrovaný).
13+
14+
### 2. Radarové plátno (Radar Canvas)
15+
- **Skenovací paprsek:** Rotující zlatý výsečový přechod simulující aktivní radar (animace _sweepController).
16+
- **Měřítko:**
17+
- Textové popisky vzdálenosti (10M, 25M, 50M) umístěné na svislé ose.
18+
- Jemné zlaté linky s 30% průhledností.
19+
20+
### 3. Centráůní uzel (My Device)
21+
- **Vizuál:** Avatar uživatele uprostřed radaru.
22+
- **Efekt:** Výrazná zlatá záře (BoxShadow) a zlatý okraj (2px).
23+
- **Štítek:** Zlatý obdélník s textem MY DEVICE pod avatarem.
24+
25+
### 4. Okolní uzly (Device Blips)
26+
- **Pozice:** Vypočítána na základě relativního azimutu (bearing) a vzdálenosti.
27+
- **Vizuál:** Malý avatar (48px) se zlatým okrajem a jménem pod ním.
28+
- **Orientace:** Pozice blipů se dynamicky mění podle natočení zařízení (kompasu) uživatele.
29+
30+
## ⚙️ Funkcionalita
31+
- **Real-time update:** Radar se překresluje při každé změně orientace (heading) nebo GPS polohy.
32+
- **Animace:** Nekonečná rotace skenovacího paprsku (4 sekundy na otočku).
33+
- **Omezení:** Radar zobrazuje zařízení do maximální vzdálenosti 50 metrů.
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# Designový protokol: Onboarding Screen
2+
3+
Tato obrazovka zajišťuje první seznámení uživatele s aplikací, nastavení základní identity a udělení potřebných oprávnění.
4+
5+
## 🎨 Vizuální styl (Aurelian Noir)
6+
- **Pozadí:** Sytá černá (#131313).
7+
- **Hlavní barva:** Zlatá (#F2CA50).
8+
- **Prvky:** Velké kruhové ikony, plynulé přechody mezi stránkami, výrazné typografické prvky.
9+
10+
## 📱 Struktura a obsah
11+
12+
### 1. Úvodní obrazovka (Splash Step)
13+
- **Logo:** Velké transparentní logo Off Chat (off-chat-logo-transparent.png).
14+
- **Titulek:** OFFCHAT (displayLarge, letterSpacing 8).
15+
- **Podtitul:** THE DIGITAL CONCIERGE (labelSmall, letterSpacing 4).
16+
- **Akce:** Tlačítko BEGIN PROTOCOL.
17+
18+
### 2. Informační kroky (Step 1-5)
19+
- **Vizuál:** Centrální kruhová ikona s jemným zlatým lemováním.
20+
- **Obsah:**
21+
- **Step 1 (Discover Nearby):** Ikona Icons.radar. Popis vyhledávání zařízení v okolí.
22+
- **Step 2 (Offline Messaging):** Ikona Icons.forum. Popis posílání zpráv bez internetu.
23+
- **Step 3 (Image Sharing):** Ikona Icons.image. Popis sdílení médií v mesh síti.
24+
- **Step 4 (Location Discovery):** Ikona Icons.location_on. Popis radarové vizualizace.
25+
- **Step 5 (Profile Management):** Ikona Icons.person_pin. Popis správy identity.
26+
27+
### 3. Nastavení identity (Final Step)
28+
- **Titulek:** IDENTITY. (displayMedium, tučné).
29+
- **Avatar:** Velký kruhový placeholder pro profilový obrázek se zlatým okrajem (4px).
30+
- **Editace:** Zlaté plovoucí tlačítko s ikonou fotoaparátu.
31+
- **Jméno:** Textové pole DISPLAY NAME se zaoblenými rohy (16px) a tmavým výplňovým pozadím.
32+
33+
### 4. Footer (Společný pro informační kroky)
34+
- **Indikátor stránek:** Čárkový indikátor (7 bodů), aktivní bod je zlatý a delší.
35+
- **Hlavní tlačítko:** Široké zlaté tlačítko CONTINUE (v posledním kroku FINISH).
36+
- **Průhlednost:** Pozadí footeru má jemný černý přechod do ztracena směrem nahoru.
37+
38+
## ⚙️ Funkcionalita
39+
- **Navigace:** PageView s plynulým posouváním.
40+
- **Oprávnění:** Při přechodu na poslední krok (index 5) aplikace automaticky vyžádá Bluetooth a Location oprávnění.
41+
- **Validace:** Uživatel nemůže dokončit onboarding bez zadání jména.
42+
- **Debug:** Dvojitý poklep na titulek "IDENTITY." nebo logo otevře logovací terminál.
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# Designový protokol: Profile Screen
2+
3+
Správa identity uživatele a systémové nastavení aplikace v estetice Aurelian Noir.
4+
5+
## 🎨 Vizuální styl (Aurelian Noir)
6+
- **Styl:** Bento-grid rozvržení s kartami na tmavém pozadí.
7+
- **Materiály:** Karty mají barvu surfaceContainerLow s jemným zlatým okrajem.
8+
9+
## 📱 Struktura a obsah
10+
11+
### 1. Profile Hero Section
12+
- **Avatar:** Čtvercový (zaoblení 32px) s výrazným zlatým gradientovým okrajem.
13+
- **Editace:** Překryvné zlaté tlačítko s ikonou tužky.
14+
- **Jméno:** Velký off-white text (displaySmall).
15+
- **Stable ID:** Monospace text ID: [DEVICE_ID] s 50% průhledností.
16+
17+
### 2. System Health Card
18+
- **Obsah:** Monitoring stavu BLE, GPS a baterie.
19+
- **Vizuál:** Dynamické indikátory stavu.
20+
21+
### 3. Mesh Identity Card
22+
- **Sekce:** Změna "Display Alias".
23+
- **Prvky:** Textové pole se zlatým okrajem při fokusu a akční tlačítko SYNC NAME se zlatým pozadím a černým textem.
24+
25+
### 4. Nastavení (Settings Cards)
26+
- **Karty:** Location Visibility a Notifications.
27+
- **Prvky:** Ikona ve zlatém čtverci, titulek, podtitul a zlatý Switch přepínač.
28+
29+
### 5. Patička (Footer)
30+
- **Dělící čára:** Lineární gradient zlaté záře.
31+
- **Metadata:** SECURITY LEVEL 4 // V[VERSION] (monospace, zlatý nádech).
32+
33+
## ⚙️ Funkcionalita
34+
- **Změna jména:** Okamžitá synchronizace s BLE reklamním paketem (advertising).
35+
- **Správa obrázku:** Integrace s galerii a automatická komprese na webp.
36+
- **Stavy:** Integrace s Riverpod providery pro real-time přepínání viditelnosti.
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# Rename flutter_ble_peripheral Implementation Plan
2+
3+
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
4+
5+
**Goal:** Replace all occurrences of `flutter_ble_peripheral` with `ble_peripheral` in the thesis document and bibliography.
6+
7+
**Architecture:** Systematic search and replace across LaTeX and BibTeX files to reflect the package rename.
8+
9+
**Tech Stack:** LaTeX, BibTeX.
10+
11+
---
12+
13+
### Task 1: Update Architecture Project Analysis
14+
15+
**Files:**
16+
- Modify: `/home/grifinoman/flutter-apps/Bachelor-Thesis/analyza/architektura_projektu.tex`
17+
18+
- [ ] **Step 1: Replace flutter_ble_peripheral**
19+
Replace `flutter_ble_peripheral` with `ble_peripheral` on line 44.
20+
21+
### Task 2: Update Flutter Library Analysis
22+
23+
**Files:**
24+
- Modify: `/home/grifinoman/flutter-apps/Bachelor-Thesis/analyza/flutter_knihovny.tex`
25+
26+
- [ ] **Step 1: Replace all occurrences**
27+
Replace `flutter_ble_peripheral` with `ble_peripheral` on lines 22, 23, and 26.
28+
29+
### Task 3: Update Data Transfer Methods Analysis
30+
31+
**Files:**
32+
- Modify: `/home/grifinoman/flutter-apps/Bachelor-Thesis/analyza/metody_prenosu_dat.tex`
33+
34+
- [ ] **Step 1: Replace occurrence**
35+
Replace `flutter_ble_peripheral` with `ble_peripheral` on line 45.
36+
37+
### Task 4: Update Bibliography
38+
39+
**Files:**
40+
- Modify: `/home/grifinoman/flutter-apps/Bachelor-Thesis/mybase.bib`
41+
42+
- [ ] **Step 1: Replace all occurrences**
43+
Replace `flutter_ble_peripheral` with `ble_peripheral` on lines 83 and 85 (Title and URL).
44+
45+
### Task 5: Final Verification
46+
47+
- [ ] **Step 1: Run grep to ensure no remaining occurrences**
48+
Run: `grep -r "flutter_ble_peripheral" /home/grifinoman/flutter-apps/Bachelor-Thesis/`
49+
Expected: No output.

graphify-out/.graphify_cached.json

Lines changed: 0 additions & 1 deletion
This file was deleted.

graphify-out/.graphify_python

Lines changed: 0 additions & 1 deletion
This file was deleted.

graphify-out/.graphify_uncached.txt

Lines changed: 0 additions & 59 deletions
This file was deleted.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"nodes": [{"id": "lib_src_features_chat_data_chunked_transfer_manager_dart", "label": "chunked_transfer_manager.dart", "file_type": "code", "source_file": "lib/src/features/chat/data/chunked_transfer_manager.dart", "source_location": null}, {"id": "lib_src_features_chat_data_chunked_transfer_manager_dart_chunkedtransfermanager", "label": "ChunkedTransferManager", "file_type": "code", "source_file": "lib/src/features/chat/data/chunked_transfer_manager.dart", "source_location": null}, {"id": "lib_src_features_chat_data_chunked_transfer_manager_dart_handleincomingchunk", "label": "handleIncomingChunk", "file_type": "code", "source_file": "lib/src/features/chat/data/chunked_transfer_manager.dart", "source_location": null}, {"id": "lib_src_features_chat_data_chunked_transfer_manager_dart_duration", "label": "Duration", "file_type": "code", "source_file": "lib/src/features/chat/data/chunked_transfer_manager.dart", "source_location": null}, {"id": "lib_src_features_chat_data_chunked_transfer_manager_dart_finalizetransfer", "label": "_finalizeTransfer", "file_type": "code", "source_file": "lib/src/features/chat/data/chunked_transfer_manager.dart", "source_location": null}, {"id": "dart_async", "label": "dart:async", "file_type": "code", "source_file": "lib/src/features/chat/data/chunked_transfer_manager.dart", "source_location": null}, {"id": "dart_typed_data", "label": "dart:typed_data", "file_type": "code", "source_file": "lib/src/features/chat/data/chunked_transfer_manager.dart", "source_location": null}, {"id": "package_logging_logging_dart", "label": "package:logging/logging.dart", "file_type": "code", "source_file": "lib/src/features/chat/data/chunked_transfer_manager.dart", "source_location": null}], "edges": [{"source": "lib_src_features_chat_data_chunked_transfer_manager_dart", "target": "lib_src_features_chat_data_chunked_transfer_manager_dart_chunkedtransfermanager", "relation": "defines", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "lib/src/features/chat/data/chunked_transfer_manager.dart", "source_location": null, "weight": 1.0}, {"source": "lib_src_features_chat_data_chunked_transfer_manager_dart", "target": "lib_src_features_chat_data_chunked_transfer_manager_dart_handleincomingchunk", "relation": "defines", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "lib/src/features/chat/data/chunked_transfer_manager.dart", "source_location": null, "weight": 1.0}, {"source": "lib_src_features_chat_data_chunked_transfer_manager_dart", "target": "lib_src_features_chat_data_chunked_transfer_manager_dart_duration", "relation": "defines", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "lib/src/features/chat/data/chunked_transfer_manager.dart", "source_location": null, "weight": 1.0}, {"source": "lib_src_features_chat_data_chunked_transfer_manager_dart", "target": "lib_src_features_chat_data_chunked_transfer_manager_dart_finalizetransfer", "relation": "defines", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "lib/src/features/chat/data/chunked_transfer_manager.dart", "source_location": null, "weight": 1.0}, {"source": "lib_src_features_chat_data_chunked_transfer_manager_dart", "target": "dart_async", "relation": "imports", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "lib/src/features/chat/data/chunked_transfer_manager.dart", "source_location": null, "weight": 1.0}, {"source": "lib_src_features_chat_data_chunked_transfer_manager_dart", "target": "dart_typed_data", "relation": "imports", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "lib/src/features/chat/data/chunked_transfer_manager.dart", "source_location": null, "weight": 1.0}, {"source": "lib_src_features_chat_data_chunked_transfer_manager_dart", "target": "package_logging_logging_dart", "relation": "imports", "confidence": "EXTRACTED", "confidence_score": 1.0, "source_file": "lib/src/features/chat/data/chunked_transfer_manager.dart", "source_location": null, "weight": 1.0}]}

0 commit comments

Comments
 (0)