diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..98389af --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,29 @@ +# Build Windows installers and publish to GitHub Releases (needs latest.yml for auto-update). +name: Release + +on: + push: + tags: + - '*' + +permissions: + contents: write + +jobs: + windows: + runs-on: windows-latest + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-node@v4 + with: + node-version: '20' + cache: npm + + - name: Install dependencies + run: npm ci + + - name: Build and publish to GitHub + run: npm run electron:publish:win + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore index f1db1a0..0a73211 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,14 @@ SECURITY.local.md # GitHub profile repo draft (publish to github.com/krwg/krwg separately) github-profile/ +MESH-PLUS-PLAN.md +scripts/.mesh-plus-private.b64 +mesh-plus-private.b64 +keysandlicense.md +giphy-api-key.local +build/giphy-api-key.txt +.env.local +.env.build +mesh-plus-public-key.local +build/mesh-plus-public-key.txt +ENTITLEMENT-MAP.local.md \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 42bece3..cca05e2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,278 @@ Release **version numbers** track [`app-metadata.json`](app-metadata.json) (sync ## [Unreleased] -_Nothing yet._ +### Fixed + +- **BEACON publish** — `beaconPublishFromPath` was missing from `initBeaconMesh` API (always failed with «browser file» for large ZIP); native file dialog + main-process ingest. +- **DM file transfer** — main-process send from disk path (`send-file-from-path`), 1 MiB chunks, serialized TCP write queue (fixes interleaved JSON lines under parallel IPC). +- **BEACON throughput** — serve chunks from main (`beacon-serve-chunks-tcp`), single-pass ingest with parallel disk writes; publish overlay + row in Downloads tab. +- **Call/stream quality (LAN)** — higher RTP bitrates, `maintain-resolution` on camera and screen; voice-channel screen share now calls `tuneVideoSender`. +- **Windows auto-update** — `verifyUpdateCodeSignature = false` was ignored by electron-updater; use async verifier that skips unsigned NSIS installers so download + install complete. + +## [1.1.1] — Beacon — 2026-05-24 + +Patch (codename **Beacon** unchanged). + +### Fixed + +- **BEACON publish** — large files, ZIP and archives: ingest via main-process disk read (`file.path`) instead of `File.arrayBuffer()` in the renderer (fixes «could not be read» / NotReadableError). + +See [`docs/release-notes-v1.1.1-github.md`](docs/release-notes-v1.1.1-github.md). + +## [1.1.0] — Beacon — 2026-05-24 + +Major release (codename **Beacon** / **МАЯК**): LAN mesh file library, chat polish, UX settings, faster BEACON transfers, GitHub auto-update fixes. + +### Added + +- **BEACON / МАЯК** — publish files to LAN (`seed-announce`), multi-seed download (up to **6** peers, rarity scheduler, **1 MiB** chunks, pipelined **`seed-chunks-batch`** IPC), pause/stop/resume seeding, `seed-gone`, drag-and-drop publish, **`blip://seed/`** links, seed image previews, row **⋮** / context menu (copy link, delete local seed, pause, etc.). +- **`.blip` seed files** — torrent-style descriptors; **Open `.blip`** in BEACON; Windows **`.blip` → BLIP** file association after NSIS install (`blip://` protocol). +- **Chat** — Reply, single pin, Forward lite (`forwardFrom`) in DM and groups; `group-pin` sync; forward seed unavailable → open in BEACON or send link. +- **UX (#21–#30)** — Compact mode, UI/chat font scales, idle → Away (5 min default, configurable), local typing sound. +- **MESH TRANSFER hub** — Active/Completed sections, Open folder when path is known, 5s auto-clear. +- **Settings** — toast duration slider (2–60s); **Network** mesh bandwidth graph + sparkline. +- **Tray** — BEACON publish/download progress % in tooltip. +- **BLIP color picker** — custom in-app palette (HSV + hex/RGB) for MESH+ accent and Projects canvas (`blip-color-input.js`). +- **Updates** — GitHub **generic feed** resolver (`latest.yml` per release tag); `npm run electron:publish:win`, `npm run release:assets`, [`.github/workflows/release.yml`](.github/workflows/release.yml) on tag push. + +### Changed + +- **BEACON** in main nav (EN **BEACON**, RU **МАЯК**); stats bar; theme-adaptive accents (`var(--blip-accent)`); table/cell padding. +- **Side nav** — wider min column so labels (e.g. **SETTINGS** / **НАСТРОЙКИ**) do not clip. +- **Video lightbox** — volume slider (`videoVolume`). + +### Fixed + +- **Toasts** — auto-dismiss, × and swipe dismiss. +- **Transfer hub** — completed rows visible before auto-clear; no instant delete at 100%. +- **BEACON** — copy `blip://seed/…` to clipboard; stop seeding no longer deletes local files; mesh speed / batch IPC regressions. +- **Windows auto-update** — unsigned GitHub installers (`verifyUpdateCodeSignature = false`); stale-cache recovery; **Portable** builds show manual-update hint (no in-app install). + +### Notes + +- **1.0.3 ↔ 1.1.0** on the same LAN: old clients ignore `seed-*` traffic; chat/calls stay compatible — [`docs/COMPAT-1.0.3.md`](docs/COMPAT-1.0.3.md). +- **GitHub Release** must include **`latest.yml`** + **`BLIP-Setup-1.1.0.exe`** for in-app updates (see [`CONTRIBUTING.md`](CONTRIBUTING.md)). +- Still on **v1.0.0** Windows: install **Setup once by hand**; later versions auto-update from the app. + +See [`docs/ROADMAP-1.1-BEACON.md`](docs/ROADMAP-1.1-BEACON.md) and [`docs/release-notes-v1.1.0-github.md`](docs/release-notes-v1.1.0-github.md). + +## [1.0.3] — Echo — 2026-05-23 + +Stable release (codename **Echo**). Focus: profiles with GIF status, reliable chats, MESH PLUS UI, group community polish, and group **voice channels** aligned with working 1:1 WebRTC. + +### Fixed + +- **Profiles** — opening a peer profile with a status GIF no longer fails; direct mount instead of blocked re-render; GIF loads asynchronously without blocking the page. +- **Chats** — conversations open from peer list, chat hub, and context menu (`openChat` / `mountMainPanel`). +- **Calls** — TCP signalling prefers existing inbound/outbound sockets (carried from 1.0.2). +- **Group voice channels** — star topology uses the same WebRTC pattern as 1:1 calls (`addTrack` + direct `