Розробка
cargo fmt --check && cargo clippy --all-targets -- -D warnings && cargo test| Тести покривають | |
|---|---|
| Парсер і конвертація | на examples/telegram і examples/whatsapp |
| Посилання для спільного доступу | ізоляція відвідувачів, блокування PIN, список дозволених медіа, кімнати, імена, блокування, обхід автентифікації |
| MCP-клієнт | імітації серверів кожної епохи протоколу (HTTP, застарілий SSE, stdio) |
| Ретрансляція | хаб, імена, пересилання |
Крейт настільного застосунку окремий: cd desktop && cargo check.
Структура
src/ сервер (axum), парсери, агент LLM, MCP-клієнт, посилання для спільного доступу, ретрансляція, Telegram
server/ HTTP API власника, по файлу на область: ресурси, завантаження, експорти, чати,
повідомлення, налаштування, медіа; mod.rs збирає маршрутизатори
share_api/ посилання для спільного доступу: owner.rs (керування посиланнями й відвідувачами), visitor.rs (/s/…)
web/ інтерфейс: index.html, app.css і js/ (віддається як один app.js), вбудований у бінарний файл
js/ по файлу на область інтерфейсу, пронумеровані в порядку завантаження (один скрипт, одна область видимості)
desktop/ застосунок Tauri навколо того самого сервера
deploy/ Caddy + Docker Compose
examples/ два вигадані експортиДокументація й стартова сторінка iroof.top не знаходяться в цьому репозиторії. Вони є в irooftop/irooftop.github.io: docs/ (цей сайт) і landing/.
Документація
Документація розміщена в irooftop/irooftop.github.io. Вона бере зображення і версію застосунку з цього репозиторію: клонуйте обидва поруч і збирайте там.
cd irooftop.github.io/docs
npm ci
ROOFTOP_SRC=../../rooftop npm run dev # http://localhost:5173/
ROOFTOP_SRC=../../rooftop npm run build # docs/.vitepress/distСайт публікується на irooftop.github.io при кожному push у main цього репозиторію, який змінює docs/. demo.svg створюється командою python3 scripts/demo-svg.py у репозиторії застосунку (чистий SVG і CSS, щоб GitHub його показував).
Випуск версії
підняти Cargo.toml ─▶ тег vX.Y.Z ─┬─▶ Release: crates.io + образ ghcr.io (amd64 + arm64, нативні раннери)
└─▶ desktop: інсталятори ─▶ опублікувати реліз (найновіший) ─▶ Homebrew: формула + cask- Підніміть
versionуCargo.toml(і вdesktop/), зробіть коміт і надішліть тегvX.Y.Z. Тег має бути числовим для MSI Windows. Усе далі виконується без додаткових кліків. - Release публікує крейт (секрет
CARGO_REGISTRY_TOKEN, середовищеcrates-io) і образ Docker: одне завдання на архітектуру на нативному раннері (ubuntu-latest,ubuntu-24.04-arm) надсилає за digest, а завданняmergeстворює багатоархітектурні теги. Запустіть вручну зdry_run, щоб перевірити публікацію крейта. - desktop збирає інсталятори для macOS (arm64, x64), Windows і Linux у чернетку релізу. Коли всі вони прикріплені, його завдання
publishдодає згенеровані примітки до релізу, публікує реліз і позначає його як найновіший. - Його завдання
homebrewпотім викликає Homebrew, який надсилаєFormula/rooftop.rbіCasks/irooftop.rbдоirooftop/homebrew-tap. Потрібен секретHOMEBREW_TAP_TOKEN(токен з обмеженим доступом,irooftop/homebrew-tap, Contents: читання і запис) абоHOMEBREW_TAP_DEPLOY_KEY; без жодного з них завдання пропускається з повідомленням. (Реліз, опублікований черезGITHUB_TOKEN, не запускаєrelease: published, тому виклик явний; публікація релізу вручну все одно запускає Homebrew через цю подію.)
Щоб повторно запустити оновлення tap для наявного тегу, наприклад після додавання секрету:
gh workflow run homebrew.yml -f tag=v0.3.0scripts/homebrew-tap.sh vX.Y.Z <копія tap> створює ті самі файли локально. Якщо інсталятори тегу завершилися з помилкою, перезапустіть невдалі завдання desktop: publish і homebrew виконаються, щойно вони пройдуть.