Merge branch 'origin/main' into main
This commit is contained in:
@@ -0,0 +1 @@
|
||||
{}
|
||||
@@ -0,0 +1,3 @@
|
||||
views:
|
||||
- type: table
|
||||
name: Table
|
||||
@@ -12,7 +12,7 @@ tags:
|
||||
- media
|
||||
created: '2026-05-20'
|
||||
updated: '2026-05-20'
|
||||
status: planned
|
||||
status: deployed
|
||||
---
|
||||
# *arr Stack на Тайге — Setup & Config
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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=<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: <token>` |
|
||||
| Backend | `claude-code` (OAuth через `~/.claude/.credentials.json`) |
|
||||
| Запуск | `PROXY_TOKEN=<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 + Токен.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -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 когда домен будет куплен
|
||||
@@ -82,7 +82,7 @@
|
||||
### Анкета A — Имя
|
||||
|
||||
```
|
||||
Как тебя называть?
|
||||
Как к тебе обращаться?
|
||||
|
||||
[текстовое поле — необязательно] [→ Пропустить]
|
||||
```
|
||||
|
||||
@@ -13,7 +13,7 @@ related:
|
||||
- '[[personal/psychology/observations/2026-W20]]'
|
||||
- '[[personal/psychology/prompts]]'
|
||||
---
|
||||
# Психологический профиль — Александр
|
||||
# Психологический профиль — Алексей
|
||||
|
||||
> Живой документ. Обновляется еженедельным агентом + при значимых изменениях.
|
||||
> Связан с: [[father-profile]], [[user-profile]], [[ai-psychologist-research]]
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user