762 Commits

Author SHA1 Message Date
callebtc
2c59c49f72 Fix phone-only Mesh Lab scenario selection 2026-08-02 13:47:23 +02:00
callebtc
67e942b04b Merge remote-tracking branch 'origin/main' into codex/wear-power-optimization
# Conflicts:
#	app/src/main/java/com/bitchat/android/mesh/BluetoothGattClientManager.kt
2026-08-02 12:07:31 +02:00
GitHub Action
c02dda308e Automated update of relay data - Sun Aug 2 06:55:18 UTC 2026 2026-08-02 06:55:19 +00:00
callebtc
a49f38216a
Merge pull request #853 from permissionlesstech/codex/remove-rssi-polling
Remove periodic GATT RSSI polling
2026-08-02 03:12:40 +02:00
callebtc
e2387ac4a6 Optimize Wear mesh power usage 2026-08-02 03:10:44 +02:00
callebtc
2325b7c9c3 Remove periodic GATT RSSI polling 2026-08-02 01:42:45 +02:00
callebtc
b8c7470ace
Merge pull request #847 from heyaim/hide-command-suggestions-after-send
Hide the command and mention popups after a message is sent
2026-08-02 00:17:28 +02:00
callebtc
28bd6bdcfd
Merge pull request #852 from permissionlesstech/codex/fix-readme-screenshot-crop-20260801
Fix cropped README screenshot controls
2026-08-02 00:11:06 +02:00
callebtc
dcec0c10ec Test README screenshot crop handling 2026-08-02 00:06:36 +02:00
callebtc
17a173a685 Fix cropped README screenshot controls 2026-08-02 00:03:46 +02:00
callebtc
53cd03886c
Merge pull request #851 from permissionlesstech/codex/refresh-readme-screenshots-20260801
Refresh README feature screenshots
2026-08-01 23:40:19 +02:00
callebtc
5cc181f1e2 Improve README screenshot capture recipe 2026-08-01 23:38:26 +02:00
callebtc
1965d4bd7e Refresh README feature screenshots 2026-08-01 23:25:03 +02:00
callebtc
2e943b2ebc
Merge pull request #846 from permissionlesstech/bitchat-ui-bubbles
feat(chat): add bubbles chat UI mode with peer-color bubbles
2026-08-01 21:31:57 +02:00
callebtc
aad0c4d7f8 feat(settings): combine theme and chat style into one card
System/Light/Dark and the chat style picker now share the single Theme
card in About -> Settings: theme chips on the first row, chat style
chips on the second, ordered Bubbles then Matrix. Bubbles remains the
default for fresh installs.
2026-08-01 21:17:30 +02:00
callebtc
bd5ae8702a feat(chat): never show our own nickname in bubbles mode
The end side and the author-colour wash already attribute own bubbles,
so the @name heading on the first bubble of an own run was redundant.
Received bubbles keep their sender names; matrix mode is unchanged.
2026-08-01 20:45:42 +02:00
callebtc
d85401fb49 fix(chat): never let the bubble meta cluster influence text wrapping
The no-break-space reservation narrowed the text's own wrap width, so
first lines wrapped early and carried dead slack. The cluster (timestamp
plus delivery checks) is now placed from the laid-out text: it rides
flush-right in the last line's slack when there is room and drops below
the text only when there is not. The body wraps at the full bubble
width either way, one-liners keep hugging their content, and matrix
mode is unchanged. AnnotatedClickableText gains an optional onTextLayout
callback to support the measurement.
2026-08-01 20:10:25 +02:00
callebtc
79d2e0328a fix(chat): keep bubble meta flush-right without extra lines or width
The timestamp + checks cluster now overlays the bubble's bottom-end
corner while the body reserves an invisible no-break-space run (capped
by a zero-width word joiner so it is never trimmed) exactly where the
cluster lands. The reservation rides the last text line when there is
room and wraps only when there isn't, so the cluster sits flush-right
on the last line for every message length: no overlap, no forced new
line, no minimum bubble width. Matrix mode is unchanged.
2026-08-01 19:55:07 +02:00
callebtc
6d9dfd970c fix(chat): trail bubble timestamp and checks inline with the body
Replaces the separate bottom meta row, which forced every bubble to at
least the meta row's width and added a line even to one-line messages.
The timestamp + checks cluster now trails the body inline: it rides
the last text line when there is room and wraps only when there isn't,
so bubbles hug their content again. Own private messages keep the
constant-width grey-to-green checks with the colour tween; matrix mode
is unchanged.
2026-08-01 18:04:39 +02:00
callebtc
d0c2a39140
Merge pull request #840 from permissionlesstech/codex/wear-speech-bubble-app-icon
Replace Wear app icon with green BitChat glyph
2026-08-01 18:03:16 +02:00
callebtc
498c35188f feat(chat): right-align bubble timestamps beside the delivery checks
Bubbles now park a bottom meta row at their end edge, like classic
messengers: the timestamp sits right-aligned, followed at a fixed gap
by the delivery checks for own private messages, instead of trailing
the body text mid-line. Matrix mode keeps its inline trailing
timestamps.
2026-08-01 17:34:36 +02:00
callebtc
6eafa5932d feat(chat): anchor delivery checks to the bubble's bottom-end corner
Instead of trailing the timestamp mid-line, the delivery checks now
park at the bubble's bottom-end corner like classic messengers, with
the body text reserving a small end inset so the last line never
collides with them. The checks keep their constant-width grey-to-green
behaviour, colour tween, and scale pop (shared DeliveryStatusIcon).
Matrix mode is unchanged.
2026-08-01 17:07:41 +02:00
callebtc
7247d0ad5b feat(chat): constant-width two-check delivery marker that lights up green
Delivery/read markers previously swapped glyphs as acknowledgements
arrived, reflowing the text around them. Both checks now render from
the start in a disabled grey and simply recolour as the state advances
(delivered lights the first check, read lights both), so nothing ever
pushes message text around. Read receipts use the app's primary green
instead of the blue accent, a quick colour tween lights the checks up,
and the standalone marker adds a snappy scale pop when the state
advances. Applies to both matrix and bubbles modes.
2026-08-01 16:06:37 +02:00
callebtc
af91abab01 feat(chat): pull sender and delivery status into bubbles, thin-space hash suffix
Bubbles mode now reads like a classic messenger thread:

- the sender's name heads the first bubble of each run instead of
  floating above it; continuation bubbles skip it
- the delivery/read marker for own private messages trails the
  timestamp inside the bubble (same glyph mapping as the standalone
  marker); media rows keep the beneath-card marker since they have no
  inline text
- display names and their #abcd disambiguation suffix are now
  separated by a thin space (U+2009) in both matrix and bubbles modes
2026-08-01 15:05:41 +02:00
callebtc
7569fba7b4 feat(chat): align self media rows with bubbles chat UI mode
In bubbles mode, self-authored image, voice-note, and file rows now
align to the end side with the same tail-corner cue as text bubbles,
instead of sitting on the received side where they read as someone
else's content. Grouped self voice notes also keep the run on the
correct side. VoiceNotePlayer gains an optional modifier so the player
can hug the end side at a capped width. Received media and matrix mode
are unchanged.
2026-08-01 13:57:40 +02:00
heyaim
862fd8449d Hide the command and mention popups after a message is sent
When a slash command is sent without tapping the autocomplete list, the
command popup stays on screen with its old suggestions. The send path
clears the input field in code, and the popup is hidden only from the
field's text-change handler, which a code-driven clear does not run, so
the show flag is never turned off. The mention popup has the same cause.

CommandProcessor gains clearSuggestions(), which hides both popups and
empties their lists, the same resets the two select functions already do
inline. ChatScreen's send handler calls it where it already resets the
field.

The private chat sheet called updateMentionSuggestions on every keystroke
while rendering its own popups as hidden, so the only effect was on the
main composer behind it: typing @ in the sheet and then sending or
dismissing left a stale mention popup on the main screen. That call is
removed.

Tests in CommandProcessorTest open each popup and assert clearSuggestions
hides it. The unit tests do not drive Compose, so they cover the function
the send handler calls rather than the handler itself.

Full Android unit suite green; lint and the debug build pass.

Fixes #250.
2026-07-31 23:27:10 -05:00
callebtc
94d5fa3084 feat(chat): add bubbles chat UI mode with peer-color bubbles
Add a toggleable chat transcript style alongside the existing matrix
transcript. Bubbles mode renders text messages as classic messenger
bubbles: own messages on the right, peers on the left, each bubble
washed with the author's stable identity-derived peer colour so the
speaker stays identifiable without changing any theme, surface, or
background colours.

- ChatUiMode preference (Matrix / Bubbles, default Bubbles) persisted
  via ChatUiModeManager, mirroring ThemePreferenceManager
- BubbleTextMessageLayout: rounded bubble with a subtle tail on the
  speaker's side, width capped at 80% so long messages wrap; sender
  labels, grouping, timestamps, mentions, links, long-press, and the
  existing spring entry/placement animations are unchanged
- Delivery status for own private messages moves beneath the bubble in
  bubbles mode so it never overlaps the tail
- Chat style picker in About -> Settings reusing the ThemeChip pattern
2026-08-01 01:41:36 +02:00
callebtc
e07a38f634
Merge pull request #844 from permissionlesstech/codex/fix-wear-chat-auto-scroll
Fix Wear chat auto-scroll timing
2026-08-01 01:34:05 +02:00
callebtc
e907773b5f
Merge pull request #843 from permissionlesstech/codex/issue-753-live-ptt
feat: add live push-to-talk on Android and Wear OS
2026-08-01 01:33:53 +02:00
callebtc
e9bc8e0f31 docs(protocol): specify live voice v1 2026-08-01 00:42:32 +02:00
callebtc
44b2b8cb79 Fix first Wear message auto-scroll 2026-08-01 00:32:20 +02:00
callebtc
efeb9b54b5 Fix Wear chat auto-scroll timing 2026-07-31 17:51:16 +02:00
callebtc
cbc59aaf8b feat(voice): add live push-to-talk 2026-07-31 17:40:37 +02:00
callebtc
cb6d68958d
Merge pull request #842 from permissionlesstech/codex/update-agents-md
Update Agents MD
2026-07-31 16:09:16 +02:00
callebtc
e865a7f5b0 Update repository privacy instructions 2026-07-31 16:08:32 +02:00
callebtc
e62e3bd1ea Replace Wear launcher wordmark with green BitChat glyph
Use the About-button pixel speech bubble in app primary green with BIT inside, on a white circular plate so the watch icon matches in-app branding.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-31 03:32:22 +02:00
callebtc
9b69c9f08e
Merge pull request #839 from permissionlesstech/docs/update-repository-guidelines
Update repository contributor guidelines
2026-07-31 03:28:24 +02:00
callebtc
5f58dbfa3d agents update 2026-07-31 03:19:45 +02:00
callebtc
229d93b54b
Merge pull request #826 from vincenzopalazzo/fix/file-tlv-forward-compat
Skip unknown file TLVs instead of dropping the transfer
2026-07-31 02:57:08 +02:00
callebtc
119b330e60
Merge pull request #835 from permissionlesstech/codex/readme-showcase
Add README feature screenshots
2026-07-31 02:40:58 +02:00
callebtc
13669b0d86
Merge pull request #837 from permissionlesstech/codex/readme-screenshot-skill
Add Android README screenshot studio skill
2026-07-31 02:40:02 +02:00
callebtc
e8e869dc40 Add Android README screenshot skill 2026-07-31 02:27:03 +02:00
callebtc
0e3a4fdd18 Refine README mesh conversation 2026-07-31 02:07:06 +02:00
callebtc
0f1eb56e66 Center README globe on the Middle East 2026-07-31 01:40:13 +02:00
callebtc
4a6aa4875e Refresh README screenshots for Pixel layout 2026-07-31 00:19:53 +02:00
callebtc
daa6cfa532 Merge remote-tracking branch 'origin/main' into codex/readme-showcase 2026-07-31 00:08:45 +02:00
callebtc
286c8012a9 Clarify README screenshot descriptions 2026-07-31 00:00:59 +02:00
callebtc
55f8e5e72c Upgrade README screenshots to QHD 2026-07-30 23:57:57 +02:00
callebtc
13f15ca1ef
Merge pull request #836 from permissionlesstech/codex/restore-globe-picker-ux
Restore globe picker UX and teleport selection
2026-07-30 23:40:12 +02:00
callebtc
87184eddde globe fixes 2026-07-30 23:09:53 +02:00