diff --git a/2026-05-20.md b/2026-05-20.md new file mode 100644 index 00000000..e69de29b diff --git a/Untitled 1.canvas b/Untitled 1.canvas new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/Untitled 1.canvas @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/Untitled.base b/Untitled.base new file mode 100644 index 00000000..c6ab6096 --- /dev/null +++ b/Untitled.base @@ -0,0 +1,3 @@ +views: + - type: table + name: Table diff --git a/family/projects/media-toolbox-taiga.md b/family/projects/media-toolbox-taiga.md index d49766c2..4c9aa5a8 100644 --- a/family/projects/media-toolbox-taiga.md +++ b/family/projects/media-toolbox-taiga.md @@ -12,7 +12,7 @@ tags: - media created: '2026-05-20' updated: '2026-05-20' -status: planned +status: deployed --- # *arr Stack на Тайге — Setup & Config diff --git a/personal/projects/personal-os/executor-security-analysis.md b/personal/projects/personal-os/executor-security-analysis.md index 2ebff88b..12cac306 100644 --- a/personal/projects/personal-os/executor-security-analysis.md +++ b/personal/projects/personal-os/executor-security-analysis.md @@ -381,21 +381,21 @@ Primary locations: ### Q6: Canonical credential and tool inventory -| Service | Access type | Credential | Status | -|---|---|---|---| -| **Asana** | Read + Write | `ASANA_API_KEY` in `~/.config/personal-os/env` | **Still in file. Verify + revoke.** | -| **Asana MCP (×2)** | Read + Write | Same PAT, via Anthropic-hosted MCP | **Remove both connectors from Claude.ai.** | -| **GitHub** | Read + Write (push, PR, CI) | `gh` CLI (keychain or SSH) | **Verify + rotate.** | -| **Discord** | Read + Write | `DISCORD_BOT_TOKEN` in `~/.hermes/.env` | Active. Full server access. | -| **Anthropic/Claude API** | Execute (LLM) | `CLAUDE_CODE_OAUTH_TOKEN` in `~/.hermes/.env` | Active. Primary executor engine. | -| **OpenRouter** | Execute (LLM fallback) | `OPENROUTER_API_KEY` in `~/.hermes/.env` | Active. | -| **Telegram** | Write | `TELEGRAM_BOT_TOKEN` in `~/.hermes/.env` | Active. Not used by executor. | -| **virfield / ddg-vm MCP** | VM lifecycle (clone/start/stop) | Local MCP server at `~/Developer/virfield/` | Used by recording-pass workers. | -| **macOS filesystem** | Read + Write | User session | Full read of apple-browsers checkout, VMShare, personal-os. Write to logs, worktrees, prompts. | -| **PostgreSQL (personal_os)** | Read + Write | Local, no auth | executor_queue, executor_runs, stories, tasks tables. | -| **Zulip** | Read + Write | `ZULIP_API_KEY` in `~/.hermes/.env` | Active. Post-migration platform. | -| **Obsidian vault** | Read + Write | Local MCP server | Full vault access. | -| **Hermes cron system** | Read + Write | Local process | Agent read/modified jobs.json, paused/deleted cron jobs. | +| Service | Access type | Credential | Status | +| ---------------------------- | ------------------------------- | ---------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| **Asana** | Read + Write | `ASANA_API_KEY` in `~/.config/personal-os/env` | **Still in file. Verify + revoke.** | +| **Asana MCP (×2)** | Read + Write | Same PAT, via Anthropic-hosted MCP | **Remove both connectors from Claude.ai.** | +| **GitHub** | Read + Write (push, PR, CI) | `gh` CLI (keychain or SSH) | **Verify + rotate.** | +| **Discord** | Read + Write | `DISCORD_BOT_TOKEN` in `~/.hermes/.env` | Active. Full server access. | +| **Anthropic/Claude API** | Execute (LLM) | `CLAUDE_CODE_OAUTH_TOKEN` in `~/.hermes/.env` | Active. Primary executor engine. | +| **OpenRouter** | Execute (LLM fallback) | `OPENROUTER_API_KEY` in `~/.hermes/.env` | Active. | +| **Telegram** | Write | `TELEGRAM_BOT_TOKEN` in `~/.hermes/.env` | Active. Not used by executor. | +| **virfield / ddg-vm MCP** | VM lifecycle (clone/start/stop) | Local MCP server at `~/Developer/virfield/` | Used by recording-pass workers. | +| **macOS filesystem** | Read + Write | User session | Full read of apple-browsers checkout, VMShare, personal-os. Write to logs, worktrees, prompts. | +| **PostgreSQL (personal_os)** | Read + Write | Local, no auth | executor_queue, executor_runs, stories, tasks tables. | +| **Zulip** | Read + Write | `ZULIP_API_KEY` in `~/.hermes/.env` | Active. Post-migration platform. | +| **Obsidian vault** | Read + Write | Local MCP server | Full vault access. | +| **Hermes cron system** | Read + Write | Local process | Agent read/modified jobs.json, paused/deleted cron jobs. | **Services confirmed NOT accessible at the time:** - Email (IMAP/SMTP) — not configured diff --git a/personal/projects/psychologist-app/dev-setup.md b/personal/projects/psychologist-app/dev-setup.md index c810ab85..6df629fc 100644 --- a/personal/projects/psychologist-app/dev-setup.md +++ b/personal/projects/psychologist-app/dev-setup.md @@ -15,6 +15,75 @@ tags: > **Cross-platform (reflect-skip):** `~/Developer/reflect-skip/` — Skip Fuse, iOS + Android > Gitea: `git.mallexxx.duckdns.org/git_admin/reflect-app` +## F-Droid Internal Repo + +| Параметр | Значение | +|---|---| +| **URL** | `https://reflect.qentra.top` | +| CF Tunnel | mbp black (same as zulip.qentra.top), hostname reflect → localhost:8766 | +| CF Token (Zone:DNS) | `cfat_iKrPBaTAqlL8Zo7Ss4EHaiGqRGxBK4RDVX78jhgD51fdd7a1` | +| Сервер | `python3 ~/Developer/reflect-skip/scripts/fdroid-server.py` (LaunchAgent: com.reflect.fdroid-server) | +| Workspace | `~/Developer/reflect-skip/fdroid-workspace/` — подписанный репо, генерируется `fdroid update` | + +### Как устроен деплой + +Репо генерируется через **fdroidserver** (`pip3 install fdroidserver`), а не вручную. +HTTP-сервер (`fdroid-server.py`) раздаёт содержимое `fdroid-workspace/repo/` — там лежат подписанные `index-v1.jar`, `entry.jar`, `index-v2.json`. + +Ключевые файлы workspace: +``` +fdroid-workspace/ +├── config.yml ← repo_url, keystore, имя репо +├── keystore.p12 ← подписывающий ключ (не коммитить) +└── repo/ ← раздаётся HTTP-сервером + ├── index-v1.jar ← подписанный JAR (Droid-ify требует его) + ├── entry.jar ← новый формат entry point + ├── index-v2.json + └── reflect-app-debug.apk +``` + +### Сборка и публикация APK + +```bash +cd ~/Developer/reflect-skip + +# Полная сборка (Xcode + Gradle) + публикация +bash scripts/build-and-publish.sh + +# Быстрая (только Gradle, если Swift не менялся) +bash scripts/build-and-publish.sh --quick +``` + +`build-and-publish.sh` вызывает `generate-index.sh`, который: +1. Копирует APK в `fdroid-workspace/repo/` +2. Запускает `fdroid update -c` (JAVA_HOME=/opt/homebrew/opt/openjdk@21) +3. Генерирует подписанные JAR и JSON индексы + +### Первоначальная настройка (один раз) + +```bash +cd ~/Developer/reflect-skip/fdroid-workspace + +# Удалить старый keystore если есть, создать новый +keytool -genkey -v \ + -keystore keystore.p12 -storetype PKCS12 \ + -alias fdroid -storepass reflect123 -keypass reflect123 \ + -keyalg RSA -keysize 2048 -validity 10000 \ + -dname "CN=Reflect App, O=Dev, C=US" + +# Сгенерировать репо +ANDROID_HOME=~/Library/Android/sdk \ +JAVA_HOME=/opt/homebrew/opt/openjdk@21 \ +PATH="/opt/homebrew/opt/openjdk@21/bin:$PATH" \ +fdroid update -c +``` + +### Добавить репо в Droid-ify + +Settings → Repositories → **+** → `https://reflect.qentra.top` + +> ⚠️ URL без `/repo` — сервер уже раздаёт содержимое `fdroid-workspace/repo/` напрямую с корня. + --- ## Статус (2026-05-19) @@ -52,6 +121,17 @@ tags: --- +## Android Signing + +**Keystore:** `~/.android/signing/nolvu-release.jks` (вне репо, не в git) +**Fingerprint (SHA-256):** `9A:17:73:F0:A7:4E:8C:7B:2E:AA:D5:0F:AD:FC:71:84:92:D1:88:FB:04:2F:32:56:63:12:ED:3E:28:3E:2B:F7` +**keystore.properties:** `Android/app/keystore.properties` (в .gitignore, абсолютный путь к keystore) +- storeFile: `/Users/admin/.android/signing/nolvu-release.jks` +- keyAlias: `nolvu` / пароли: `nolvu2026` + +> При переезде на новую машину — скопировать `~/.android/signing/nolvu-release.jks` и пересоздать `Android/app/keystore.properties` с правильным путём. +> Fingerprint при этом останется тем же — пользователям переподключать репо не нужно. + ## Android / Skip Fuse — сборка ### Требования @@ -270,13 +350,28 @@ Documents/UserProfile/ ## Локальный AI прокси ```bash -cd ~/Developer/reflect-app # iOS проект -python3 proxy_server.py --backend claude-code # OAuth через Hermes -# или -python3 proxy_server.py --backend ollama --ollama-model qwen2.5:7b +cd ~/Developer/reflect-skip +PROXY_TOKEN= PROXY_BACKEND=claude-code PROXY_PORT=8765 python3 proxy_server.py ``` -В Settings приложения: AI Backend → Локальный сервер → URL сервера. +### Публичный endpoint (ai.qentra.top) + +| Параметр | Значение | +|---|---| +| **URL** | `https://ai.qentra.top` | +| CF Tunnel | Кракен, тот же connector, маршрут `ai.qentra.top → localhost:8765` | +| **Proxy Token** | `bab835a69b4073c32a283472658d8815bfae59d8` | +| Заголовок | `X-Proxy-Token: ` | +| Backend | `claude-code` (OAuth через `~/.claude/.credentials.json`) | +| Запуск | `PROXY_TOKEN= PROXY_BACKEND=claude-code PROXY_PORT=8765 python3 proxy_server.py` | + +**Защита:** `GET /health` публичный. `POST /v1/messages` без токена → 401. + +**DevSetupView (debug):** при первом запуске debug-сборки — экран ввода URL + токена. +Сохраняет в UserDefaults, переключает backend на `localProxy`, флаг `dev_setup_done = true`. +В релизной сборке (`#if DEBUG`) экран не показывается. + +В Settings: AI Backend → Локальный сервер → URL + Токен. --- diff --git a/personal/projects/psychologist-app/landing.md b/personal/projects/psychologist-app/landing.md new file mode 100644 index 00000000..c8bcb02a --- /dev/null +++ b/personal/projects/psychologist-app/landing.md @@ -0,0 +1,93 @@ +--- +created: '2026-05-20' +updated: '2026-05-20' +tags: + - project + - landing + - marketing + - nolvu +status: live +--- +# Nolvu Landing Page + +> Waitlist лендинг для AI-приложения рефлексии (Nolvu). +> Связанные: [[overview]], [[marketing-strategy]], [[marketing-hooks]] + +--- + +## Текущий статус + +**URL:** https://nolvu.qentra.top +**Репо:** https://git.mallexxx.duckdns.org/git_admin/nolvu-landing +**Локально:** `~/Developer/nolvu-landing/` + +| Компонент | Статус | +|---|---| +| Лендинг (HTML) | ✅ Live | +| HTTPS (CF Origin Cert + Full Strict) | ✅ Работает | +| Email waitlist форма | ✅ Работает | +| Подписчики | `/var/www/nolvu/subscribers.txt` на VPS | +| Email-уведомления (Gmail) | ⏳ Нужен App Password | +| Gitea репо | ✅ `git_admin/nolvu-landing` | + +--- + +## Инфраструктура + +**VPS:** `91.207.28.205` (nginx 1.22.1) +- `/var/www/nolvu/` — статика +- systemd: `nolvu-subscribe.service` → Python HTTP сервер на порту 8765 +- nginx: `/etc/nginx/sites-available/nolvu` +- SSL: CF Origin Certificate (`/etc/ssl/nolvu-origin.pem`) + +**Cloudflare:** qentra.top → Proxied, SSL mode = Full (strict) + +--- + +## Деплой изменений + +```bash +# Локально +cd ~/Developer/nolvu-landing +# ... правки ... +git add -A && git commit -m "описание" && git push + +# На VPS +scp index.html root@91.207.28.205:/var/www/nolvu/index.html +# subscribe.py после правок: +scp subscribe.py root@91.207.28.205:/var/www/nolvu/subscribe.py +ssh root@91.207.28.205 'systemctl restart nolvu-subscribe' +``` + +--- + +## Email-уведомления (настроить) + +В `/etc/systemd/system/nolvu-subscribe.service` прописать Gmail App Password: +``` +Environment=GMAIL_USER=mallexxx@gmail.com +Environment=GMAIL_PASS=<16-char app password> +``` +Затем: `systemctl daemon-reload && systemctl restart nolvu-subscribe` + +Получить App Password: myaccount.google.com → Security → 2FA → App passwords + +--- + +## Бэклог улучшений + +### 🔴 Срочно +- [ ] Gmail App Password → уведомления на mallexxx@gmail.com + +### 🟠 Следующее +- [ ] **Rotating диалоги** — несколько пар вопрос/ответ с анимированной сменой каждые ~5 сек + - Источники для подбора: тред `personal/Психолог` в Zulip + `marketing-hooks.md` + - Принцип: не личное, но узнаваемое. «У меня всё замечательно! Помогите.»-тон + - Примерно 5–7 кейсов: усталость, петли, ADHD, откладывание, отношения +- [ ] Добавить раздел «Что это» — 3 коротких тезиса (не AI-психолог, а зеркало) +- [ ] Нейминг: проверить nolvu.ai → зарегистрировать когда решим + +### 🟡 Позже +- [ ] OG-теги для расшаривания в соцсетях +- [ ] Счётчик подписчиков (публичный) для social proof +- [ ] Переехать на nolvu.ai когда домен будет куплен diff --git a/personal/projects/psychologist-app/onboarding-ux.md b/personal/projects/psychologist-app/onboarding-ux.md index 56fd1028..2f592b92 100644 --- a/personal/projects/psychologist-app/onboarding-ux.md +++ b/personal/projects/psychologist-app/onboarding-ux.md @@ -82,7 +82,7 @@ ### Анкета A — Имя ``` -Как тебя называть? +Как к тебе обращаться? [текстовое поле — необязательно] [→ Пропустить] ``` diff --git a/personal/psychology/profile.md b/personal/psychology/profile.md index 19be8eb8..e02fdab9 100644 --- a/personal/psychology/profile.md +++ b/personal/psychology/profile.md @@ -13,7 +13,7 @@ related: - '[[personal/psychology/observations/2026-W20]]' - '[[personal/psychology/prompts]]' --- -# Психологический профиль — Александр +# Психологический профиль — Алексей > Живой документ. Обновляется еженедельным агентом + при значимых изменениях. > Связан с: [[father-profile]], [[user-profile]], [[ai-psychologist-research]] diff --git a/work/briefs/inbox/2026-05-20.md b/work/briefs/inbox/2026-05-20.md index 96c7ea43..9f5df8ca 100644 --- a/work/briefs/inbox/2026-05-20.md +++ b/work/briefs/inbox/2026-05-20.md @@ -1,13 +1,13 @@ -## Inbox Triage — 2026-05-20 (since 2026-05-19T19:38) +## Inbox Triage — 2026-05-20 (since 2026-05-20T16:38:22) ### New / Changed — Action Required -*(nothing requiring immediate action)* +_(nothing requiring immediate response)_ ### New / Changed — Monitoring -- **[Desktop Browser Feature Owner Survey [anonymous, 5 minute timebox]](https://app.asana.com/0/0/1214940335721015)** — new assignment (inbox) · due May 26 · 5 min survey, anonymous. No reply needed, just complete before deadline. +- **New task (self-captured)** — [Address Universal Input (UTI) issues](https://app.asana.com/0/0/1214965000075517) — created by Alex M, assigned to Alex M at 16:48 — section: inbox, no project yet. Needs triage / project assignment. -### Nothing new +### Nothing new (external signals) -No new human comments on open tasks, no @mentions since last run (19:38 Almaty). +No new comments from others, no external task assignments, no @mentions since last run.