Skip to content

docs: expand v0.1.6 release notes with detailed feature descriptions #9

docs: expand v0.1.6 release notes with detailed feature descriptions

docs: expand v0.1.6 release notes with detailed feature descriptions #9

Workflow file for this run

name: Desktop Release
on:
push:
tags:
- "v*"
permissions:
contents: write
jobs:
build-macos:
runs-on: macos-14
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 'lts/*'
cache: npm
- name: Install dependencies
run: npm install
- name: Build Next.js
run: npm run build
- name: Compile Electron
run: npm run electron:compile
- name: Build macOS app
run: npx electron-builder --mac --publish always
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: macos-build
path: release/*.dmg
build-windows:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 'lts/*'
cache: npm
- name: Install dependencies
run: npm install
- name: Build Next.js
run: npm run build
- name: Compile Electron
run: npm run electron:compile
- name: Build Windows app
run: npx electron-builder --win --publish always
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: windows-build
path: release/*.exe
build-linux:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 'lts/*'
cache: npm
- name: Install dependencies
run: npm install
- name: Build Next.js
run: npm run build
- name: Compile Electron
run: npm run electron:compile
- name: Build Linux app
run: npx electron-builder --linux --publish always
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: linux-build
path: release/*.AppImage
update-release-notes:
needs: [build-macos, build-windows, build-linux]
runs-on: ubuntu-latest
steps:
- name: Update release notes
uses: actions/github-script@v7
with:
script: |
const tag = context.ref.replace('refs/tags/', '');
const { data: releases } = await github.rest.repos.listReleases({
owner: context.repo.owner,
repo: context.repo.repo,
});
const release = releases.find(r => r.tag_name === tag);
if (!release) {
core.setFailed(`Release for tag ${tag} not found`);
return;
}
await github.rest.repos.updateRelease({
owner: context.repo.owner,
repo: context.repo.repo,
release_id: release.id,
draft: false,
body: [
`## Altnautica Command ${tag}`,
'',
'Biggest release since launch. 139 commits covering internationalization, cloud relay for remote drone control, a standalone backend for self-hosters, and a full rewrite of how the GCS talks to the drone agent.',
'',
'---',
'',
'### Internationalization (i18n)',
'',
'The entire GCS is now translatable. Ships with **7 languages** out of the box: English, Hindi, Tamil, Chinese (Simplified), German, Spanish, and French. Every component, tooltip, toast message, config panel, and planner label has been wired through `next-intl`. A built-in **Translation Editor** lets you browse and edit translation keys directly from the settings page. Language can be switched on the fly from the config page.',
'',
'### Cloud Relay',
'',
'Control your drone remotely over 4G/5G from anywhere. Three-layer architecture:',
'',
'- **Convex HTTP relay** for command and status polling (works immediately, zero infra)',
'- **MQTT bridge** for real-time 2Hz telemetry via Mosquitto with WebSocket transport',
'- **Video relay** converting RTSP to fMP4 over WebSocket for live browser playback',
'',
'All traffic routes through Cloudflare Tunnel. No port forwarding needed. The GCS auto-detects HTTPS and switches to cloud mode. A new cloud mode indicator in the header shows connection status. Cloud mode now works across **all Command tabs**: peripherals, scripts, suites, enrollment, peers, and logs.',
'',
'### Standalone Convex Backend',
'',
'Open-source users can now self-host cloud features. The `convex/` directory ships with 25 tables (7 auth + 18 custom), 15 function files, auth config, HTTP routes, and crons. Run `npx convex dev` and you get the full backend. No dependency on our production deployment.',
'',
'### Mission Planning Improvements',
'',
'- **Quick rectangle button** to drop a default survey area at the current map center. One click to start a survey instead of manually drawing a polygon',
'- **Backspace vertex deletion** while drawing polygons',
'- **SAR search pattern** support added to the pattern generator',
'- Pattern config section **auto-opens** after completing a drawing',
'- Map center state now syncs with the planner store for consistent viewport tracking',
'',
'### Agent Store Rewrite',
'',
'The monolithic agent store has been split into 4 specialized stores: **connection**, **system**, **scripts**, and **peripherals**. Each store owns its domain. A facade layer maintains backward compatibility so existing components keep working. Service status tracking now includes `degraded` and `starting` states, uptime computed from monotonic timestamps, and detailed per-service CPU/RAM metrics.',
'',
'### MSP Protocol Refactor',
'',
'The single large MSP decoder file has been split into categorized modules (motor, sensor, config, etc.). New motor and sensor decoders added. Makes Betaflight/iNav support easier to extend.',
'',
'---',
'',
'### Performance',
'',
'- **Cesium 3D globe** rendering optimized with entity caching, request render mode, and disabled atmospheric effects',
'- **Map tiles** now use icon caching and batched updates for smoother panning',
'- **Zustand stores** batch version increments during high-frequency telemetry to reduce re-renders',
'- **Diagnostics hex logging** is now conditional, saving CPU when not actively debugging',
'- **Next.js Turbopack** enabled for faster dev builds',
'',
'### Bug Fixes',
'',
'- Fixed Zustand store mutation and subscription ordering that caused stale UI in fast telemetry updates',
'- Fixed MQTT module import failing in production bundles (dynamic import path issue)',
'- Fixed demo mode not syncing with the `NEXT_PUBLIC_DEMO_MODE` environment variable',
'- Fixed cloud status timeout causing duplicate drone entries in the fleet sidebar',
'- Fixed agent API response shape handling across temperature, scripts, and service endpoints',
'- Applied `useConvexSkipQuery` hook consistently, preventing crashes when auth context is unavailable',
'- Fixed non-null userId assertion in agent registration',
'- Removed stale alpha tester application system and unlocked Command page for all users',
'',
'### Other Changes',
'',
'- Extracted reusable `MultiSeriesChart` component for telemetry graphs',
'- `useConvexSkipQuery` custom hook replaces 10+ manual skip guard patterns',
'- `useFcPanelState` composite hook consolidates common FC panel boilerplate',
'- `formatErrorMessage` utility for safe error string conversion across the app',
'- Self-hosting documentation added for the cloud relay stack',
'',
'---',
'',
'### Downloads',
'',
'- **macOS:** `.dmg` (Intel and Apple Silicon)',
'- **Windows:** `.exe` installer',
'- **Linux:** `.AppImage`',
'',
'> Desktop builds lag behind the web version by a release or two.',
'> For the latest, use [command.altnautica.com](https://command.altnautica.com)',
'> or clone the repo and run locally (`npm install && npm run dev`).',
].join('\n'),
});