Beeper message
Author: u | 2025-04-25
TL;DR. Forwarding messages across chats on Beeper Desktop and Beeper iOS is possible. How to Forward a Message using Beeper Desktop. Forwarding a message in Beeper Desktop is as
How to Schedule Messages on Beeper? - Beeper
Inaccessible by other users. Inside of room account data, Beeper stores the indicator of which message has been last read, and whether the chat has been marked done, and whether it has been marked unread.Widget API InfoThe code from the example widget will have already set up the fundamentals, so most of the API-related code you'll write will be based on useWidgetApi from @beeper/matrix-widget-toolkit-react.You'll create an instance of a WidgetApi by calling useWidgetApi(), and can then call various methods on it.Methods called on a WidgetApi instance return promises, so they should be called using either async/await or .then().In code, it looks like this:import { useWidgetApi } from "@beeper/matrix-widget-toolkit-react";// Use inside of a React componentconst widgetApi = useWidgetApi();For example: setMessage(event.target.value)} /> );}">import { useWidgetApi } from "@beeper/matrix-widget-toolkit-react";import { useEffect, useState } from "react";import { RoomEvent } from "@beeper/matrix-widget-toolkit-api";export default function Home() { const [message, setMessage] = useState("") const widgetApi = useWidgetApi() async function fetchData(event: any) { event.preventDefault(); setMessage(""); await widgetApi.sendRoomEvent('m.room.message', { msgtype: 'm.text', body: message, }); } return ( form onSubmit={fetchData}> input value={message} onChange={(event) => setMessage(event.target.value)} /> form> );}Types Info (for TypeScript)RoomEvent: import { RoomEvent } from "@beeper/matrix-widget-toolkit-api";:{ type: string; sender: string; event_id: string; room_id: string; origin_server_ts: number; content: ;}">RoomEventT>:{ type: string; sender: string; event_id: string; room_id: string; origin_server_ts: number; content: T>;}StateEvent: import { StateEvent } from "@beeper/matrix-widget-toolkit-api":{ type: string; sender: string; event_id: string; room_id: string; origin_server_ts: number; state_key: string; content: T;}">StateEventT>:{ type: string; sender: string; event_id: string; room_id: string; origin_server_ts: number; state_key: string; content: T;}RoomAccountData: import { RoomAccountData } from "@beeper/matrix-widget-toolkit-api";:{ type: string; room_id: string; content: T;}">RoomAccountDataT>:{ type: string; room_id: string; content: T;}Room EventsReceiving[] = await widgetApi.receiveRoomEvents(eventType, { messageType?: string; limit?: number; roomIds?: string[] | Symbols.AnyRoom; since?: string | undefined;});">const events: RoomEventany>[] = await widgetApi.receiveRoomEvents(eventType, { messageType?: string; limit?: number; roomIds?: string[] | Symbols.AnyRoom; since?: string | undefined;});eventType (string): the TL;DR. Forwarding messages across chats on Beeper Desktop and Beeper iOS is possible. How to Forward a Message using Beeper Desktop. Forwarding a message in Beeper Desktop is as Beeper Widgets are webpages that live in the sidebar of Beeper Desktop. They can access data from a chat in Beeper, such as messages and a list of users. They can also take actions, such as sending messages on the user's behalf.Since Beeper is built on top of the Matrix protocol, and Beeper Desktop is a (distant) fork of Element, we were able to use the Matrix widget api and Nordeck's Matrix Widget Toolkit as the foundation for Beeper Widgets. We've added a few improvements and created several widgets. One major difference is that in Beeper widgets are available globally alongside each of your chats, and are not shared with everyone in the chat.Widgets currently are only supported in Beeper Desktop.Currently available widgetsBuilt a cool widget for Beeper? Create a pull request to add your widget to this readme!NameDescriptionCreated ByLinkCodeExample WidgetShowcases what you can do with widgets.Beeper all unread messages in chat using Anthropic Claude AI.Beeper ItIt's like a button you can press that guesses what you need (information, guidance, etc) and gives it to you. Uses the OpenAI API.Beeper can Beeper Widgets do?Widget CapabilitiesRead + send messages in a chatRead + send reactions in a chatDelete messages in a chatRead the list of participantsSee which message was last-read by the userChange the name of a chat (Matrix chats only)PermissionsWidgets must request permission to take action in your chats. Each capability is requested separately, so users know up-front which capabilities they are granting to each widget. For example, you can create a widget that only has read access to a chat (eg Summarizer), or only send access (eg pre-canned message sender).With the Beeper Widget API, you can build widgets that could do things like:Send pre-canned messagesKeep track of notes per contactShow info about everyone in the chat, using a dataComments
Inaccessible by other users. Inside of room account data, Beeper stores the indicator of which message has been last read, and whether the chat has been marked done, and whether it has been marked unread.Widget API InfoThe code from the example widget will have already set up the fundamentals, so most of the API-related code you'll write will be based on useWidgetApi from @beeper/matrix-widget-toolkit-react.You'll create an instance of a WidgetApi by calling useWidgetApi(), and can then call various methods on it.Methods called on a WidgetApi instance return promises, so they should be called using either async/await or .then().In code, it looks like this:import { useWidgetApi } from "@beeper/matrix-widget-toolkit-react";// Use inside of a React componentconst widgetApi = useWidgetApi();For example: setMessage(event.target.value)} /> );}">import { useWidgetApi } from "@beeper/matrix-widget-toolkit-react";import { useEffect, useState } from "react";import { RoomEvent } from "@beeper/matrix-widget-toolkit-api";export default function Home() { const [message, setMessage] = useState("") const widgetApi = useWidgetApi() async function fetchData(event: any) { event.preventDefault(); setMessage(""); await widgetApi.sendRoomEvent('m.room.message', { msgtype: 'm.text', body: message, }); } return ( form onSubmit={fetchData}> input value={message} onChange={(event) => setMessage(event.target.value)} /> form> );}Types Info (for TypeScript)RoomEvent: import { RoomEvent } from "@beeper/matrix-widget-toolkit-api";:{ type: string; sender: string; event_id: string; room_id: string; origin_server_ts: number; content: ;}">RoomEventT>:{ type: string; sender: string; event_id: string; room_id: string; origin_server_ts: number; content: T>;}StateEvent: import { StateEvent } from "@beeper/matrix-widget-toolkit-api":{ type: string; sender: string; event_id: string; room_id: string; origin_server_ts: number; state_key: string; content: T;}">StateEventT>:{ type: string; sender: string; event_id: string; room_id: string; origin_server_ts: number; state_key: string; content: T;}RoomAccountData: import { RoomAccountData } from "@beeper/matrix-widget-toolkit-api";:{ type: string; room_id: string; content: T;}">RoomAccountDataT>:{ type: string; room_id: string; content: T;}Room EventsReceiving[] = await widgetApi.receiveRoomEvents(eventType, { messageType?: string; limit?: number; roomIds?: string[] | Symbols.AnyRoom; since?: string | undefined;});">const events: RoomEventany>[] = await widgetApi.receiveRoomEvents(eventType, { messageType?: string; limit?: number; roomIds?: string[] | Symbols.AnyRoom; since?: string | undefined;});eventType (string): the
2025-04-15Beeper Widgets are webpages that live in the sidebar of Beeper Desktop. They can access data from a chat in Beeper, such as messages and a list of users. They can also take actions, such as sending messages on the user's behalf.Since Beeper is built on top of the Matrix protocol, and Beeper Desktop is a (distant) fork of Element, we were able to use the Matrix widget api and Nordeck's Matrix Widget Toolkit as the foundation for Beeper Widgets. We've added a few improvements and created several widgets. One major difference is that in Beeper widgets are available globally alongside each of your chats, and are not shared with everyone in the chat.Widgets currently are only supported in Beeper Desktop.Currently available widgetsBuilt a cool widget for Beeper? Create a pull request to add your widget to this readme!NameDescriptionCreated ByLinkCodeExample WidgetShowcases what you can do with widgets.Beeper all unread messages in chat using Anthropic Claude AI.Beeper ItIt's like a button you can press that guesses what you need (information, guidance, etc) and gives it to you. Uses the OpenAI API.Beeper can Beeper Widgets do?Widget CapabilitiesRead + send messages in a chatRead + send reactions in a chatDelete messages in a chatRead the list of participantsSee which message was last-read by the userChange the name of a chat (Matrix chats only)PermissionsWidgets must request permission to take action in your chats. Each capability is requested separately, so users know up-front which capabilities they are granting to each widget. For example, you can create a widget that only has read access to a chat (eg Summarizer), or only send access (eg pre-canned message sender).With the Beeper Widget API, you can build widgets that could do things like:Send pre-canned messagesKeep track of notes per contactShow info about everyone in the chat, using a data
2025-04-21Familiar as the service that allows them to send push notifications to their iOS applications. For iMessage protocol, all messaging traffic flows over this service in both directions, encrypted with keys generated locally on each device. Beeper Mini connects to APNs over TCP, using the credentials generated during the login process.A persistent connection to APNs is needed to be notified of new incoming messages in real-time. On an iPhone, an APNs connection is maintained by the operating system, and connected at all times. In Beeper Mini, the connection can only be maintained when the app is running, since Android does not support APNs natively.To work around this limitation, we built Beeper Push Notification service (BPNs). BPNs connects to Apple’s servers on your behalf when Beeper Mini Android app isn’t running. We can do this while preserving user privacy thanks to Apple separating the credentials needed to connect to APNs to send and receive content (the “push” credentials) and the keys needed to encrypt and decrypt messages (the “identity” keys). Push credentials can be shared securely with the Beeper Push Notification service, and BPNs can connect to APNs on your behalf. Whenever BPNs receives an encrypted message that it won’t be able to decrypt, it simply disconnects from APNs and sends an FCM push notification to wake up the Android app, which then connects to APNs, downloads, decrypts and processes the incoming message. BPNs can only tell when a new message is waiting for you – it does not have credentials to see or do anything else.BPNs will be notified when you receive a message, but without the encryption keys it can’t decrypt anything BPNs receives. Also, without the identity credentials, BPNs can’t send messages on your behalf. If you don’t mind not receiving real-time push notifications for new messages, your
2025-04-04To Mark as Unread: Set up this feature by going to Beeper Android → Gear → Preferences → Inbox and choosing between swipe left or right to Mark as Read/Unread messages. Then go to Inbox → Tap Search → Select the Archive filter → Search for the chat in question → Swipe over the chat according to your configuration over the chat you want to Mark as Unread.FiltersWhile Beeper Desktop filter out archived chats, Beeper Android's Inbox view displays all your messages (including archived messages) in a single list. Archiving is not currently supported in the new Beeper app, but is part of our roadmap plans.If you want to see chats filtered by Low Priority, Unread, or Chat Network, you can do so by tapping the search bar on top and selecting the icon of your desired view.Delivered vs. Read IndicatorsIn your Beeper Android Inbox, you can see a preview of the last message in the chat. If the last message is yours, you will know if it was sent and read.Delivered indicatorRead indicatorReading ExperienceThe Beeper Android app lets you toggle your reading experience between Minimal and Pro. Here are the differences between the two options:When using Minimal, all your chats will show only the chat title, which could be one of the following:the name of the person you're chatting with;the name of the chat, ORA phone number is needed if the recipient has not been saved in your contacts yet. It will not show any chat network indicator to provide you the impression of a single inbox.In contrast to Minimal, Pro shows you more details about your chats in the inbox list view. In addition to what you already see in Minimal mode, you will also see:the number of unread messages in the chatan optional chat network indicator near the chat avatar
2025-04-24TL;DR: Your chats are sorted by last activity (chronologically), with the most recent chat displayed at the top (except for chats marked as low-priority - those are kept out of the inbox)Expected behavior:New messages: Similar to other messaging apps, your messages are automatically sorted from newest to oldest based on chat activity. Pinned chats: When you pin a chat, the Beeper app displays it as a persistent chat icon on the Inbox header. These chats will not appear in the inbox list. Muted chats: Muted chats will remain listed in the Inbox, but you won't receive any audible notification for them. You will only receive a notification if an @mention or a reply to your message is sent in a muted chat room. Muted chats will have a silent bell icon to their right.Read/Unread: To change the read state of a chat, you can long-press on it from the inbox view and select Mark as Read / Mark as Unread from the menu that appears.Low-priority chats: Chats marked as Low Priority (long-press any chat on the Beeper Android Inbox) will be moved to the Low Priority Filter under Search. You won't see these chats in your Inbox, nor will you receive any visual/audible notification for new messages in them (except for @mentions and replies). Archive: Though Archiving Management is not present in Beeper Android, you can Archive Chats. Auto-Archiving isn't supported yet.Beeper Android - How does the Inbox work?Currently, the Beeper Android app Inbox behaves similarly to a traditional messaging app. Here are some specifics:PinThe Beeper Android app lets you pin your favorite chats to the Inbox header. Chats show as circle icons at the top of the screen.To pin a chat, long-press the chat in question and select Pin.MuteMuted chats will remain listed in the Inbox, but you won't receive any audible notification for them. You will only receive a notification if an @mention or a reply to your message is sent in a muted chat room. You will also see a silent bell icon to the right of a muted chat.To mute a chat, long-press the chat in question and select Mute.ArchiveThough Archiving Management is not present in Beeper Android, you can Archive Chats. Auto-archiving isn't supported yet; however, Beeper Android will respect this behavior if you have it enabled on Beeper Desktop.How do you archive a chat in Beeper Android?Long-press the chat in question and select ArchiveSwipe to Archive: Set up this feature by going to Beeper Android → Gear → Preferences → Inbox and choosing between swipe left or right to archive messages. Swipe according to your configuration over the chat you want to archive.How do you unarchive a chat in Beeper Android?Though there’s no specific button or gesture to unarchive a chat from the Archive section to Inbox, you can mark it as unread to move it to Inbox. If you want the chat on Inbox but don’t want the unread indicator, mark it as read.Long-press the chat in question and select Mark as UnreadSwipe
2025-04-17