TreeMap
A free, open-source disk-space visualizer. Squarified treemap, duplicate hunting, disk-full forecasting, and cleanup that only ever moves files to the Trash.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Getting Things Done App
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
Persönliche Aufgabenverwaltung nach Getting Things Done von David Allen. Installierbare Web-App (PWA) für Android, iPad und Windows. Die Daten liegen auf dem Gerät; zwischen Geräten werden sie verschlüsselt über ein privates GitHub-Repository abgeglichen. • Live-App (echte Daten): https://wuscha93.github.io/head-space/ • Test-App (Beispieldaten, kein Sync): https://wuscha93.github.io/head-space/test/ Neue Versionen landen zuerst in der Test-App und kommen erst nach Freigabe in die Live-App.檢視完整 README ↗
Persönliche Aufgabenverwaltung nach Getting Things Done von David Allen. Installierbare Web-App (PWA) für Android, iPad und Windows. Die Daten liegen auf dem Gerät; zwischen Geräten werden sie verschlüsselt über ein privates GitHub-Repository abgeglichen.
Neue Versionen landen zuerst in der Test-App und kommen erst nach Freigabe in die Live-App.
N)| Was | Wo | Schutz |
|---|---|---|
| Aufgaben, Projekte | Gerät (IndexedDB) | bleibt lokal |
| Sync-Daten | privates Repo head-space-data | AES-256-GCM, Schlüssel aus Passphrase (PBKDF2-SHA256, 600'000 Runden) |
| Sync-Schlüssel | Gerät | als nicht exportierbarer Schlüssel gespeichert |
| GitHub-Token | nur auf dem Gerät | Fine-grained Token, nur für head-space-data, nur „Contents“ |
| App-Code | öffentliches Repo head-space | enthält keine Daten |
Die App lädt keinen fremden Code (keine Abhängigkeiten) und erlaubt per Content-Security-Policy nur Verbindungen zu sich selbst und zu api.github.com.
head-space-databun run build.mjs # baut dist/ und preview/kopf-frei.html
bun test # Unit-Tests in 1 s (Logik, Darstellung, alte Daten, Sync-Zufallstests, Verschlüsselung)
tests/run.sh # alles: Typen, Unit-Tests, End-to-End-Tests (Playwright Test, Ordner e2e/)
tests/run.sh projekte sync # Typen, Unit und nur e2e/projekte.spec.mjs und e2e/sync.spec.mjs
E2E_WEBKIT=1 tests/run.sh # zusätzlich WebKit (Safari-Kern) für @webkit-Tests, so läuft es auf GitHub
Jeder Push wird zuerst vollständig getestet und nur bei Erfolg veröffentlicht (GitHub Actions → GitHub Pages):
Branch test → Test-App, Branch main → Live-App. scripts/build-site.sh baut beide zusammen (Live nach site/, Test nach site/test/).
Geöffnete Apps zeigen danach „Neue Version verfügbar“.
Die Daten sind ein Ereignis-Log: Jede Änderung ist ein Ereignis, der Zustand entsteht durch Abspielen. Damit bestehende Daten bei jedem Update weiter funktionieren:
normalizeItem / normalizeProject (src/store.ts).DB_VERSION in src/db.ts) sind nur additiv: neue Speicher anlegen, nie löschen.kopf-frei.json, events/*.json) hat eine Versionsnummer. Eine ältere App lehnt neuere Formate ab, statt sie falsch zu lesen.node scripts/alte-daten-einfrieren.mjs <commit> <version>); tests/unit/alte-daten.test.ts prüft, dass jede neue Version sie genau so liest.src/
types.ts Datenmodell (Eintrag, Projekt, Ereignis)
db.ts IndexedDB, additive Migrationen
store.ts Ereignis-Log → Zustand, Aktionen, Backup, Kompatibilitätsregeln
sync.ts Verschlüsselter GitHub-Sync
crypto.ts Verschlüsselung (Web Crypto API)
icons.ts Kontext-Symbole
notes.ts Release Notes lesen („Was ist neu“ nach einem Update)
ui.ts Ansichten, Dialoge, Einstellungen
main.ts Start, Service Worker, Update-Hinweis
styles.css, cards.css Gestaltung
public/ Manifest, Service Worker, Icons
tests/unit/ Unit-Tests (bun test), alte Datenstände in tests/unit/alte-daten/
RELEASE-NOTES.md Neuerungen je Version (wird in die App eingebaut)
e2e/ End-to-End-Tests (Playwright Test), Aufbau in docs/TESTKONZEPT.md
.github/workflows/veroeffentlichen.yml Build und Veröffentlichung