callebtc
b8d606d3b4
Polish persistent private conversations
2026-07-29 13:46:21 +02:00
callebtc
bf87a80617
Honor private message admission during panic
2026-07-29 11:00:24 +02:00
callebtc
c8153c0d18
Keep Wear shared state compatible
2026-07-29 03:57:28 +02:00
callebtc
e4f0713121
Merge remote-tracking branch 'origin/main' into codex/persistent-conversations
2026-07-29 03:53:34 +02:00
callebtc
c5ff1ca59a
Complete persistent conversation lifecycle
2026-07-29 03:53:29 +02:00
callebtc
d3f01f27c6
persistent
2026-07-29 03:41:24 +02:00
callebtc
7fad2f2202
persist
2026-07-29 03:41:16 +02:00
callebtc
3b53b9bdcc
Merge pull request #805 from permissionlesstech/wear-os-1
...
Wear OS app: standalone bitchat client for Pixel Watch
2026-07-29 03:02:46 +02:00
callebtc
e4ad09830b
wear: address PR review - (1) DM send no longer echoes 'Sent' pre-handshake: session-gated echo stays 'Sending' and retries for 15s after initiating Noise handshake; (2) minSdk 33 (Wear OS 4): API 30 lacks the S+ Bluetooth permissions and would require location for scan, which the app refuses; (3) recreate BluetoothConnectionManager when !isReusable() so stop->start cycles don't leave a zombie mesh
2026-07-29 02:54:11 +02:00
callebtc
120cc8e901
docs: wear screenshots for PR - onboarding, chat, people, voice notes, recording overlay
2026-07-29 02:39:29 +02:00
callebtc
9998e7ae3f
wear: fluid magnetic slide-to-cancel - cancel button leans toward the approaching finger and blushes green-to-red continuously with proximity (finger-driven), soft springy scale bloom on activation; rotation wobble removed
2026-07-29 02:28:07 +02:00
callebtc
18831c20fa
wear: slide-to-cancel voice recording - global finger tracking while recording, mic button morphs into red cancel target on approach (tick haptic in/out, double-click reject on cancel), release anywhere sends; PTT release no longer owned by the small mic button; haptics: knock on record start/incoming message, click on stop/send, tick on text send
2026-07-29 02:22:40 +02:00
callebtc
2e3f7bf827
voice improvments
2026-07-29 02:12:55 +02:00
callebtc
b3b478be10
wear: copy polish - compact notification-permission and nickname-edit descriptions, sentence-case labels across all screens (buttons, placeholders, empty states, prompts)
2026-07-29 02:07:08 +02:00
callebtc
c1e6204686
wear: rename from People screen - 'you' row first opens nickname editor; nickname field auto-focuses with cursor at end, IME Done only closes keyboard for review, confirm button is the single commit path, trim while typing
2026-07-29 02:04:09 +02:00
callebtc
86a04bc8a2
wear: chat header fits round screen with unread (title yields to people+mail icons with counts, whole header taps to People); People screen: capitalized title, Noise lock icon instead of 'noise ✓' text, RSSI removed, unread senders float to top with mail icon + count
2026-07-29 01:43:04 +02:00
callebtc
28261af55c
wear: add DM notifications and refresh launcher assets
2026-07-29 01:23:17 +02:00
callebtc
2e8f6ffc35
wear: shrink header to dense form on scroll-up instead of hiding it - overlay-only size animation, list geometry untouched
2026-07-29 01:08:11 +02:00
callebtc
92f60bd02f
wear: simplify chat scrolling to the classic messenger pattern - constant list padding with header/action bar as floating overlays driven by one scroll-direction state; removes the animated bottom clearance and in-layout header resizing that shifted content mid-gesture
2026-07-29 01:04:44 +02:00
callebtc
f5915c4c31
Merge pull request #804 from permissionlesstech/codex/fix-private-media-contact-routing
...
Fix private media sending from contact conversations
2026-07-29 00:54:47 +02:00
callebtc
80342a74e8
wear: fix dock/undock flapping when scrolling up from bottom - undocking collapsed the 48dp bottom clearance which clamped scroll back to the end and re-docked in a loop; buttons now toggle on a fast 12dp overlay-only channel while the geometry-changing docked state requires 60dp of upward scroll (> 48dp padding delta)
2026-07-29 00:52:07 +02:00
callebtc
c7720d3847
Fix private media routing for contact conversations
2026-07-29 00:43:39 +02:00
callebtc
8f4c937e92
wear: fix action bar disappearing at bottom - replace fragile distance-to-last-item geometry (dead-zoned by expanded padding, skewed by edge-scaling) with scroll-intent logic: canScrollForward=false always docks + shows buttons, any downward scroll reveals them, upward scroll hides
2026-07-29 00:32:45 +02:00
callebtc
c06fa67ccc
wear: fix header size flip-flopping - drive header from the debounced dockedAtNewest state instead of raw per-frame layout geometry; header is full-size at the newest, compacts when browsing history
2026-07-28 22:24:35 +02:00
callebtc
156a5f3218
wear: perf - debug-signed R8 release build for on-device testing, Gson keep rules, cache time formatter, memoize file chip stat
2026-07-28 22:16:32 +02:00
callebtc
fb93d2d85f
wear: TransformingLazyColumn chat lists - native center-scaling/rotary/scrollbar, exact scroll-to-end autoscroll, Arrangement.Bottom anchoring, consolidated ChatScaffold
2026-07-28 22:06:51 +02:00
callebtc
d4aa9b1644
wear: fix padding oscillation with hysteresis (expand <40, collapse >120) - padding delta can no longer retrigger itself
2026-07-28 21:40:51 +02:00
callebtc
f64338a3b8
wear: dynamic bottom padding - last message clears floating buttons at newest, text flows behind them when scrolled up
2026-07-28 21:38:15 +02:00
callebtc
5e937fa816
wear: action buttons float over chat text instead of reserving space; empty-state lifted clear of buttons
2026-07-28 21:34:14 +02:00
callebtc
5797ee18c0
wear: fix inverted scroll direction and restore scrollbar - normal top-down scrollable bottom-anchored via Box alignment, ScreenScaffold scroll indicator, standard rotaryScrollable defaults
2026-07-28 21:30:08 +02:00
callebtc
e03e373caa
plan
2026-07-28 20:58:17 +02:00
callebtc
71c257669a
watch works
2026-07-28 20:55:15 +02:00
callebtc
32a04b69b0
Merge pull request #801 from permissionlesstech/codex/share-local-arm64-apk
...
Support sharing the installed ARM64 APK
2026-07-28 19:46:33 +02:00
callebtc
57b002917f
Check updates for cached universal APK
2026-07-28 18:50:15 +02:00
callebtc
9800927b59
Support sharing installed ARM64 APK
2026-07-28 18:42:01 +02:00
callebtc
bd3bb8c774
wear: M7 - black splash theme, final design review, build/run/test docs; all milestones except deferred M5 done
2026-07-28 18:41:22 +02:00
callebtc
6340976e1c
wear: M2/M3/M4/M6 verified on hardware - mesh discovery, chat, Noise DMs, ambient survival, full mesh_lab suite green; composer UX fixes
2026-07-28 18:31:45 +02:00
callebtc
bd29257b73
Merge pull request #799 from permissionlesstech/codex/fix-hotspot-local-network-permission
...
Fix Android 17 local network permission for hotspot sharing
2026-07-28 17:32:46 +02:00
callebtc
4640d8479c
docs: M7 status in wear plan
2026-07-28 16:52:36 +02:00
callebtc
ecad00c854
wear: M7 code - message appear animations, screen transitions, auto-scroll, unread DM badge
2026-07-28 16:52:14 +02:00
callebtc
43a88808a5
wear: M2/M3/M4/M6 code - BLE mesh service, chat/DM/people UI, test hook, mesh_lab watch support (hardware verification pending)
2026-07-28 16:43:49 +02:00
callebtc
711c73bbe7
wear: M1 - compile shared bitchat stack (protocol/noise/mesh) into :wear via synced sourcesets, 172 shared tests green
2026-07-28 16:19:56 +02:00
callebtc
42a8edf8ed
fix: request local network access for hotspot sharing
2026-07-28 16:06:12 +02:00
callebtc
a355ed79d0
wear: M0 - scaffold :wear module with bitchat theme, verified on Pixel Watch 3
2026-07-28 15:54:41 +02:00
callebtc
11d0bd794e
Merge pull request #797 from permissionlesstech/feature/mesh-test-hooks
...
ADB-driven mesh test hooks + two-device lab; fix undeliverable oversized broadcast files
2026-07-28 15:27:24 +02:00
callebtc
11f39c27f4
docs: complete mesh lab guide (prereqs, device prep, scenarios, troubleshooting)
...
Expands the release-gate runbook appendix into a fresh-clone walkthrough
and points AGENTS.md at the ADB device mesh tests, noting they are
deliberately separate from Gradle/CI.
2026-07-28 15:24:03 +02:00
callebtc
8827a07b11
mesh_lab: add session_recovery and identity_reset churn scenarios
...
- session_recovery: force-stop B mid-session; assert identity persists,
mesh rejoins, re-handshake completes, DMs flow again
- identity_reset: pm clear B mid-session; assert new identity,
rediscovery, handshake and DM round trip
- Helpers: wake() (foreground the app so BLE leaves POWER_SAVER),
reset_bluetooth() (clear zombie GATT links), ensure_direct_link()
(explicit GATT connect instead of waiting out duty cycles),
force_handshake() with retries
2026-07-28 15:18:31 +02:00
callebtc
3eb9ac20b0
mesh_lab: clear receiver incoming dirs before file scenarios
...
Incoming files are name-uniquified on receipt (e.g. 'small_1k (1).bin'),
so repeated runs broke the name-based file_recv matcher.
2026-07-28 14:01:21 +02:00
callebtc
fbb13a33d5
Reject broadcast sends exceeding the receiver fragment cap
...
Receivers hard-cap reassembly at MAX_FRAGMENTS_PER_ID (256), but the
generic send path fragmented packets with no caller cap (0xFFFF), so
broadcast file transfers above ~120 KB were fully transmitted yet
undeliverable. FragmentingPacketSender now caps fragmentation at
MAX_FRAGMENTS_PER_ID and reports failure via a new
TransferProgressEvent.failed flag, which surfaces as
DeliveryStatus.Failed in the UI and as a file_send error in the debug
test hook instead of an indefinite wait.
Adds FragmentingPacketSenderTest and a file_oversize mesh-lab scenario
asserting sender-side rejection.
2026-07-28 13:17:35 +02:00
callebtc
41494d7c16
Add ADB-driven mesh test-hook framework and two-device mesh lab
...
Debug-only broadcast receiver (app/src/debug) exposes mesh operations over
ADB: scan, connect, Noise handshake, DMs, broadcast, announce, file
send/receive with SHA-256 verification, BLE toggle, state dumps, and raw
packet injection. tools/release_gate/mesh_lab.py orchestrates scenarios
(dm, broadcast, file, file_private, raw) on two live devices and emits
evidence JSON.
2026-07-28 13:05:49 +02:00