Releases: gungwang/gungchat
Dev 2.0.28 Release: Fix bugs: connection between 2 devices.
Issues 1, 2, 3 — reconnection / Connect button
chat_screen.dart:1408 — added canQuickConnect flag (verified contact with known address, no secure channel).
chat_screen.dart:2000-2058 — composer button now becomes Connect (with wifi_tethering_outlined icon) when offline, dispatching PeerConnectIntent over the existing LAN signaling path. Works symmetrically on initiator (A) and responder (W) since both sides hold each other's verified contact + lastKnownAddress after the first exchange.
Issue 4 — button label
Send Secure Message → Send in the same composer block.
Issue 5 — burn-after-read actually deletes
peer_session_controller.dart:685 — in markMessagesRead, after sending the read receipt, deletes the received message locally if burnAfterRead is set.
peer_session_controller.dart:1630 — in _handleReceiptEnvelope, when an outgoing message's read receipt arrives, deletes the sender's copy if burnAfterRead is set. (The previous implementation only set a 10-min TTL backstop with no delete-on-read.)
Issue 6 — spec review
The remaining items in GungChat-Plan-Spec.md (E2E encryption, voice/video, LAN-first transport, 320p video, QR exchange, presence, reactions, replies, edits) are already implemented per the existing test suite and prior sessions. The two genuine spec gaps surfaced by your bug reports — reconnect UX and F4 burn-after-read — are the ones fixed above. If you want me to do a deeper line-by-line spec audit against current code, say the word.
8 bundled SVG stickers — colored rounded squares with an OS emoji glyph drawn on top (so they look like stickers but don't require pixel art):
Auto-scroll: done
Chat screen translation (Scope A, machine-quality) is complete across all 5 locales (en, zh, zh_TW, es, fr).
Multilingual support
GungChat —— 敢说
目前最安全的点对点加密通讯应用程序:100%保密、完全隐私、无用户数据泄露、无登录、无服务器依赖、点对点、完全匿名、数据加密、无广告、无追踪、完全自主控制、短信、语音通话、视频通话、开源免费。多语言支持英语,中文简体,中文繁体,法语,西班牙语。
The ultimate private messenger: 100% confidential, zero accounts, zero servers, zero tracking. Pure peer‑to‑peer encryption for text, voice, and video. Anonymous, ad‑free, open‑source, and completely free—privacy without compromise. No tracking, no ads, just secure communication with total freedom.
Multilingual support is now wired end to end for English, Simplified Chinese, Traditional Chinese, Spanish, and French. I enabled Flutter localization generation
GungChat 敢说 Release 2.0.2 for Android OS.
gungchat git:(main) flutter build appbundle --release
Resolving dependencies...
Downloading packages...
app_links 6.4.1 (7.0.0 available)
archive 3.6.1 (4.0.9 available)
connectivity_plus 6.1.5 (7.1.1 available)
file_picker 8.3.7 (11.0.2 available)
flutter_lints 5.0.0 (6.0.0 available)
flutter_riverpod 2.6.1 (3.3.1 available)
flutter_secure_storage 9.2.4 (10.0.0 available)
flutter_secure_storage_linux 1.2.3 (3.0.0 available)
flutter_secure_storage_macos 3.1.3 (4.0.0 available)
flutter_secure_storage_platform_interface 1.1.2 (2.0.1 available)
flutter_secure_storage_web 1.2.1 (2.1.0 available)
flutter_secure_storage_windows 3.1.2 (4.1.0 available)
geolocator 13.0.4 (14.0.2 available)
geolocator_android 4.6.2 (5.0.2 available)
hooks 1.0.2 (1.0.3 available)
js 0.6.7 (0.7.2 available)
lints 5.1.1 (6.1.0 available)
local_auth 2.3.0 (3.0.1 available)
local_auth_android 1.0.56 (2.0.8 available)
local_auth_darwin 1.6.1 (2.0.3 available)
local_auth_windows 1.0.11 (2.0.1 available)
meta 1.17.0 (1.18.2 available)
mobile_scanner 4.0.1 (7.2.0 available)
native_toolchain_c 0.17.6 (0.18.0 available)
permission_handler 11.4.0 (12.0.1 available)
permission_handler_android 12.1.0 (13.0.1 available)
riverpod 2.6.1 (3.2.1 available)
share_plus 10.1.4 (13.1.0 available)
share_plus_platform_interface 5.0.2 (7.1.0 available)
sqflite 2.4.2 (2.4.2+1 available)
sqflite_common 2.5.6 (2.5.6+1 available)
synchronized 3.4.0 (3.4.0+1 available)
test_api 0.7.10 (0.7.11 available)
vector_math 2.2.0 (2.3.0 available)
win32 5.15.0 (6.1.0 available)
xml 6.6.1 (7.0.0 available)
Got dependencies!
36 packages have newer versions incompatible with dependency constraints.
Try flutter pub outdated for more information.
Font asset "MaterialIcons-Regular.otf" was tree-shaken, reducing it from 1645184 to 9304 bytes (99.4% reduction). Tree-shaking can be disabled by providing the --no-tree-shake-icons flag when building your app.
Running Gradle task 'bundleRelease'... 175.9s
✓ Built build/app/outputs/bundle/release/app-release.aab (77.4MB)
➜ gungchat git:(main) git tag -a v2.0.2 -m "Realease for Andiod os release v2.0.2 app-release.aab."
➜ gungchat git:(main) git push origin v2.0.2
Enumerating objects: 1, done.
Counting objects: 100% (1/1), done.
Writing objects: 100% (1/1), 184 bytes | 184.00 KiB/s, done.
Total 1 (delta 0), reused 0 (delta 0), pack-reused 0
To github-gungwang:gungwang/gungchat.git
- [new tag] v2.0.2 -> v2.0.2
GungChat 敢说 Release
GungChat Session 1 Handoff
Date: 2026-04-16
Scope Completed
This session created the initial Flutter project scaffold for GungChat under the gungchat/ directory and brought the local Linux machine to a working Android-capable Flutter setup.
Project State
Project root created:
gungchat/
Initial implementation slice added:
- App shell and Riverpod wiring
- Core encryption service and key manager
- WebRTC manager, signaling envelope, ICE manager, network monitor
- Local SQLite message database
- Basic chat, contacts, and settings screens
- Initial widget and crypto tests
Important dependency state in gungchat/pubspec.yaml:
flutter_webrtcupgraded to^1.4.1
Important Android release signing files now present locally:
gungchat/android/key.propertiesgungchat/android/upload-keystore.jks
Repository status at the end of the session:
gungchat/is still untracked in the parent repository
Local Machine Setup Performed
Flutter SDK
Installed locally at:
/home/wang/.local/flutter
JDK 17
Installed locally at:
/home/wang/.local/jdks/temurin-17
Configured Flutter to use this JDK with:
flutter config --jdk-dir=/home/wang/.local/jdks/temurin-17
Android SDK
Installed locally at:
/home/wang/.local/android-sdk
Configured Flutter to use this SDK with:
flutter config --android-sdk=/home/wang/.local/android-sdk
Installed Android SDK components:
- platform-tools
- platforms;android-36
- build-tools;36.0.0
- cmake;3.22.1
- NDK side-by-side 28.2.13676358 was auto-installed during build
Shell Configuration
Updated /home/wang/.zshrc to export:
PATHadditions for Flutter and Android toolsJAVA_HOME=/home/wang/.local/jdks/temurin-17ANDROID_HOME=/home/wang/.local/android-sdkANDROID_SDK_ROOT=/home/wang/.local/android-sdk
Validation Completed
These commands succeeded before ending the session:
flutter analyzeflutter testflutter doctor -vwith Android toolchain healthy when Android environment variables were presentflutter build apk --debug --target-platform android-arm64flutter build apk --debugflutter build apk --releaseflutter build appbundle --release
Generated APK:
gungchat/build/app/outputs/flutter-apk/app-debug.apkgungchat/build/app/outputs/flutter-apk/app-release.apk
Generated Android App Bundle:
gungchat/build/app/outputs/bundle/release/app-release.aab
Release signing verification completed:
- The SHA-256 fingerprint of
android/upload-keystore.jksmatches the signer fingerprint ofapp-release.apk
Problems Found And Fixed
1. Flutter command missing
Resolved by installing Flutter locally and adding it to the shell PATH.
2. Java mismatch for Android Gradle Plugin
Resolved by installing Temurin JDK 17 locally and configuring Flutter to use it.
3. Android SDK missing
Resolved by installing local Android command-line tools and the required SDK packages.
4. Old flutter_webrtc version failed on Android
Original version:
0.11.7
Issue:
- It referenced the removed Flutter Android v1 embedding API (
PluginRegistry.Registrar).
Resolved by upgrading to:
flutter_webrtc ^1.4.1
5. Android native build missing Ninja
Resolved by installing Android SDK CMake package 3.22.1.
6. Disk space pressure
The Linux filesystem was nearly full during Android packaging.
Observed issue:
- Universal debug APK packaging failed with no space left on device.
Resolved temporarily by:
- Cleaning the Flutter build output
- Removing downloaded installer archives
- Building a smaller single-ABI APK with
--target-platform android-arm64
7. Android release signing configuration
Resolved by:
- Updating
gungchat/android/app/build.gradle.ktsto use a real release signing config fromandroid/key.properties - Generating a local
android/upload-keystore.jks - Generating a local ignored
android/key.properties - Verifying that
app-release.apkis signed by the generated keystore
Committed documentation file added:
gungchat/android/RELEASE_SIGNING.md
Current Known Constraints
- iOS cannot be built from this Linux machine
- The parent repository has not yet staged or committed the new
gungchat/directory
Required Backup Now
Back up these two files outside this machine before any reinstall, cleanup, or key rotation:
gungchat/android/key.propertiesgungchat/android/upload-keystore.jks
If either file is lost, future Android updates for the same app signing identity may become difficult or impossible to publish.
Recommended Resume Steps After Reboot And Disk Expansion
Run these after the machine restarts:
source ~/.zshrccd /home/wang/projects/gungchat/gungchatflutter doctor -vflutter analyzeflutter test
If you want to re-verify Android packaging:
flutter build apk --debug
If you want a release build later:
flutter build apk --release
If you want a Play Store style bundle:
flutter build appbundle --release
Recommended Next Engineering Step
Continue Phase 1 and early Phase 2 implementation work in this order:
- Manual peer signaling flow for offer, answer, and ICE exchange
- Real encrypted peer message transport on top of the data channel
- LAN discovery integration
- Platform-specific screenshot and recording protection hooks
Most Relevant Files To Reopen First
gungchat/pubspec.yamlgungchat/android/app/build.gradle.ktsgungchat/android/RELEASE_SIGNING.mdgungchat/lib/app/providers.dartgungchat/lib/core/networking/webrtc_manager.dartgungchat/lib/core/networking/signaling_service.dartgungchat/lib/core/encryption/crypto_service.dartgungchat/lib/features/chat/chat_screen.dart/home/wang/.zshrc
app-release.apk is an Android install package. A user can install it directly by sideloading on Android. This is useful for direct distribution, testing, or sharing outside Google Play.
app-release.aab is the Android App Bundle for Google Play. This is the file you normally upload to Google Play. End users do not install the .aab directly; Google Play turns it into optimized APKs for each device.