TxThinking
566 subscribers
52 photos
5 videos
5 files
257 links
Download Telegram
纸【公测版4】

* 优化竖向视频全屏播放效果
* 可能解决了初次视频无法播放问题
* 优化滚动跳步问题,改为下拉加载更多
* 修复一些 bug

- iOS:https://testflight.apple.com/join/nNGnaf7W
- Android:https://public.shiliew.com/Zhi.apk
- Web:https://www.txthinking.com/zhi/web

(提示:Web 加载新版本可能需要打开调试工具 - 网络 - 禁用缓存 - 刷新页面)

Beta Chat:

f947e20c-f436-45e5-9189-61c29c27afd4:e7fd0d3f-4bf1-466a-8aa5-54f25a8f96a9
Zhi - A Truely End-to-End Encrypted Instant Messaging App.

https://www.txthinking.com/zhi.html

- What are the differences between Zhi and messaging apps like WhatsApp, Signal, and Telegram?

https://www.txthinking.com/talks/articles/are-whatsapp-signal-telegram-really-end-to-end-encrypted-en.article

- How do I verify the end-to-end encryption of Zhi?

All of Zhi's upstream API can be easily audited. https://www.txthinking.com/talks/articles/zhi-upstream-api-documentation-en.article

- What about metadata?

Zhi uses random UUID to replace metadata, read above link for more details.

- What about Push Notification?

As we know, as an instant messaging app, we need to implement push notifications. On the Apple platform: We must choose Apple APN (Apple Push Notification service). On the Android platform: We almost have no choice but to use Google FCM (Firebase Cloud Messaging). On the Web platform: Currently, we are only developing and doing compatibility testing on Chrome. To implement push notifications, we must use Google GCM (Google Cloud Messaging). Accessing: chrome://gcm-internals/. Because Zhi server cannot decrypt messages, when there is a new message, we can only push a bland "New Message" string to the push service, which then sends it to the user's device. Therefore, neither Apple nor Google can decrypt your messages.

- Are images, videos, and files etc also end-to-end encrypted?

Just like messages, also encrypted with your Chat Key before transmission.

- Is Zhi Meeting also end-to-end encrypted? Will Zhi Meeting expose my IP to other members?

We use standard WebRTC technology to implement Meeting. We know that WebRTC is end-to-end encrypted, STUN and TURN will not break WebRTC's end-to-end encryption. And we enforce the use of TURN, so when you have a Meeting with other members, the other members are not able to know your IP. Because the key negotiation for WebRTC is achieved through signaling interaction. Therefore, it's essential to ensure the security of the signaling being transmitted. Don't worry, all your signaling, just like the messages above, is also encrypted with your Chat Key before transmission.

- Using Apple's IAP, will my information be exposed?

No. We only pass a transaction ID upstream. read above link for more details.

- Can I register an account anonymously?

Certainly. To prevent malicious use of resources, Zhi accepts email registrations by default. Of course, we also support the creation of anonymous accounts.

- How are messages stored locally and on the server?

Messages are stored on the local device. When forwarding the encrypted messages of a Chat, for free users the server will by default save them for 7 days to facilitate the users retrieving messages from the server when they come online from being offline or at other times. Note: The server's cleanup mechanism runs a scheduled cleanup task. If it is detected during the run that there are no Zhi Plus users in the Chat, the encrypted messages from more than 7 days prior within the Chat will be cleared, in order to release the server resources occupied.

- Can others know if they and I are in two Chats at the same time?

Chats are isolated from one another, meaning that even if Huluwa and Snake are both in Chat A and also in Chat B, they cannot know that they are in both chats at the same time.

- Why is the software package so large?

Because we have embedded font files that are about 100+MB in size.

- Can I receive notifications on macOS clients like I can on iOS clients?

Yes. When asked for push permission for the first time, you can click Allow in the upper right corner. Of course, you can also enable it later in System Settings - Notifications - Application Notifications - Zhi - Allow notifications.
😍4👍1🎉1
brook 2025 预发布

- server 支持 script (新,查看 https://brook.app/#server-1)
- openwrt 支持 script (与 GUI 规则相同)
- ipio 支持 --cliToken,即可不使用 email 以非交互式方式使用

https://file.shiliew.com/brook_linux_amd64
https://file.shiliew.com/ipio_linux_amd64
https://file.shiliew.com/openwrt_linux_amd64
https://file.shiliew.com/openwrt_linux_arm64
🔥2🥰1
# Shiliew v20250202

- The system time will be checked when connecting to prevent unnoticed abnormalities caused by system time errors
- iOS and macOS: add All Networks & Excludes mode: Include All Networks. But exclude some networks, such as: Apple Push Notification services (APNs) traffic; Wi-Fi Calling, MMS, SMS, and Visual Voicemail; Local network, AirPlay, AirDrop, and CarPlay; XCode Device Communication. And the VPN will not be disconnected between sleep and wake or network changed. Only available for iOS and macOS TUN mode. Note that the Modules still works outside of Excludes
- macOS: fix App Mode memory leak
- MITM: support copy as text. Previously, you could only copy hex
- iOS and macOS: optimized for the latest OS
- New Module: ChatGPT Advanced Voice. Better support for ChatGPT Advanced Voice
- This module should appear in the new version. If it does not appear, you can add it manually https://raw.githubusercontent.com/txthinking/brook/master/programmable/modules/chatgpt_advanced_voice.tengo
- Note that: ChatGPT will not only determine your IP, but also other OS information, especially when logging in and registering. Shiliew can only help you solve the problem of IP.

https://www.txthinking.com/shiliew.html
❤2👏2
Hi, AI paid user:

We have migrated AI's Chat UI to Zhi to better support Markdown and performance.
At the same time, you will get 1 year of Zhi Plus for free when you log in to Zhi with the same email address.

You can start using it now at https://www.txthinking.com/ai.html
😍1
Zhi v20250123

https://www.txthinking.com/zhi.html

- Support bot. Bot can send/receive/delete messages and remove users, and can programmatically control whether users can join Chat.
- Bugfix
🔥2
Zhi Bot Lib

https://github.com/TxThinkingInc/zhi.js

Usage

var bot = await Bot.init("Bot Token", [
{
ChatUUID: "",
Key: "",
UserUUID: "",
Name: "Bot",
Avatar: "/root/robot.png",
},
])
await bot.connect()
await bot.send_text("The ChatUUID", "Hello")
bot.close()
❤1
Using Zhi as ChatGPT UI

https://github.com/TxThinkingInc/Zhi.ChatGPT

1. Clone

    git clone https://github.com/TxThinkingInc/Zhi.ChatGPT.git


2. Edit bot.js

- bot_token
- openai_api_key
- chats

3. Install bun via nami

   nami install bun bun.plus


4. Run

  bun --preload ~/.nami/bin/_bun_import_url.js bot.js
😱1
ipio v20250203

https://github.com/txthinking/ipio

- --cliToken: Support for non-interactive verification of Brook Plus
brook for openwrt v20250202

Brook for OpenWrt uses the same script as the GUI. Since OpenWrt will abandon ipk and CLI can edit complex rules more conveniently, I have returned openwrt to CLI. brook for OpenWrt is tested on OpenWrt systems, but may work on other Linux systems, but it is not guaranteed.

- There are two new files: openwrt_linux_amd64 and openwrt_linux_arm64
- Support brook link with token
- [Highlight] Support script same with Brook GUI client
Brook v20250202

https://brook.app

## CLI

brook dnsserver, dohserver, dnsserveroverbrook, server, wsserver, wssserver, quicserver can use script to do more complex thing, such as speed limit for a connection or forward to another brook link and more. brook will pass different global variables to the script at different times, and the script only needs to assign the processing result to the global variable out. Read more: https://brook.app

- --userAPI="": [Highlight] Works with server, wsserver, wssserver, quicserver. When you build your own user system, Brook Server will send GET request to your userAPI to check if token is valid, for example: https://your-api-server.com/a_unpredictable_path. Yes, it is recommended to add an unpredictable path to your https API, of course, you can also use the http api for internal network communication. The request format is https://your-api-server.com/a_unpredictable_path?token=xxx. When the response is 200, the body should be the user's unique identifier, such as user ID; all other status codes are considered to represent an illegitimate user, and in these cases, the body should be a string describing the error. For more information, please read https://github.com/txthinking/brook/blob/master/protocol/user.md
- --userAPIRateLimit="": Works with --userAPI. Limit the request rate per token to the user API by Brook Server, this will reduce the load on the user API. This is especially important when users have expired, and the userAPIValidCacheTime will not cache the requests, resulting in continuous requests to the user API. The default is 0, which means no limitation. For example, setting it to 1 means the rate is limited to 1 request per token per second. The phrase 'per token' means that each token has its own rate limiter, and they do not interfere with each other (default: 1)
- --userAPIValidCacheTime="": Works with --userAPI. Once a token is checked and valid, the userAPI will not be requested to validate again for a certain period (s). A reasonable value must be set, otherwise it will affect the performance of each incoming connection (default: 3600)
- --userLog="": Works with --userAPI. Log, traffic and more. A valid value is file path. Send SIGUSR1 to me to reset the log file on unix system. Mutually exclusive with the --log parameter.
- --pid="": A file path used to store pid. Send SIGUSR1 to me to reset the --log or --userLog file on unix system
- --cliToken="": The CLI Token of your Brook Plus or Brook Business account, get it from https://www.txthinking.com/brook.html
- --script="": [Highlight] Works with server, wsserver, wssserver, quicserver, dnsserver, dohserver, dnsserveroverbrook. https://, http:// or /path/to/file.tengo. Get details at https://brook.app
- --scriptUpdateInterval="": Works with --script. The interval (s) to re-fetch script. The default is 0, which means only fetch once on startup (default: 0)
- All support brook link with token
- Deprecated some parameters

## GUI

- Add Clear and import, more convenient when importing links
- The system time will be checked when connecting to prevent unnoticed abnormalities caused by system time errors
- iOS and macOS: add All Networks & Excludes mode: Include All Networks. But exclude some networks, such as: Apple Push Notification services (APNs) traffic; Wi-Fi Calling, MMS, SMS, and Visual Voicemail; Local network, AirPlay, AirDrop, and CarPlay; XCode Device Communication. And the VPN will not be disconnected between sleep and wake or network changed. Only available for iOS and macOS TUN mode. Note that the Modules still works outside of Excludes
- macOS: fix App Mode memory leak
- MITM: support copy as text. Previously, you could only copy hex
- iOS and macOS: optimized for the latest OS
❤3
joker v20250220

https://github.com/txthinking/joker

- Remove restart subcommand

Because some programs may take a long time to stop, some are quick, some take a few seconds, and some may take dozens of seconds to clean up data before exiting. Only you knows. To keep the joker small, you can choose the following solutions.

Solutions

- You can stop it; sleep for the estimated time; and then rerun the program
- Or try https://github.com/txthinking/z, which can wait for the program to completely exit before rerunning it
🔥2❤1
因为 Brook v20250202 服务端也支持脚本了,并且细粒度到连接级别,即可以针对某些连接进行单独处理,比如:阻断,重写目的地,指定 DNS/DOH 来解析domainaddress,限速,转发到指定的 brooklink 代为呼出,使用本机指定 IP 来呼出。

比如我们只想将让发往 openai 的请求,转发到 warp 来解锁 ChatGPT 针对 IDC IP 的封锁,但希望发往其他目的地的请求仍用本机呼出。就可以如此这般:

https://www.txthinking.com/talks/articles/brook-cloudflare-warp.article

https://www.txthinking.com/talks/articles/brook-cloudflare-warp-en.article

ChatGPT 封锁了你的 VPS IPv4,但有可能没有封锁你的 VPS IPv6,若是如此的话还有另外一个方案,就是可以使用 dialwith 来指定使用本机 v6 IP 来呼出发往 openai 的请求。
🔥1
Zhi: new version released

https://www.txthinking.com/zhi.html

- Search: Support searching messages in Chat
- Backup & Restore: Support backup and restore Chats
- iOS and Android: Now use the speaker by default during Meeting
- iOS and Android: Support switching between front and rear cameras during Meeting
- Meeting: Support opening Chat during Meeting
- iOS, macOS and Android: Turn on automatic clearing of notification lists
- Bot: Support custom User Token when user join your Chat
- Some other optimizations
👍1