Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
10f4eaa
chore(dev): ignore local development notes
mizorewww Sep 19, 2026
698ea58
fix(sync): keep updates responsive while RPCs are running
mizorewww Sep 19, 2026
ad9236e
fix(sync): recover only stale channels on startup
mizorewww Sep 19, 2026
06f9517
feat(cache): load local conversations before connecting
mizorewww Sep 19, 2026
2d0838b
fix(sync): coordinate cached startup and active group updates
mizorewww Sep 19, 2026
9845c63
docs(wiki): explain cache and synchronization in two languages
mizorewww Sep 19, 2026
3fcd968
feat(keys)!: configure contextual message navigation with Lua
mizorewww Sep 19, 2026
64032e3
feat(folders): synchronize native Telegram chat folders
mizorewww Sep 19, 2026
6ed6d0e
feat(search): search cached messages with regular expressions
mizorewww Sep 19, 2026
b5d90ef
feat(appearance): configure account-specific chat and folder colors
mizorewww Sep 19, 2026
8fff07c
feat(media): reveal attachments with a persistent bounded file cache
mizorewww Sep 19, 2026
f8ef689
fix(cache): reconcile dialog previews and unread counts
mizorewww Sep 19, 2026
25726ef
fix(ux): honor configured navigation and contextual controls
mizorewww Sep 19, 2026
a208ac5
docs(wiki): publish bilingual guides and simplify the README
mizorewww Sep 19, 2026
08df1c5
feat(dialogs): synchronize pinned chats and the Telegram archive
mizorewww Sep 19, 2026
916c2e9
feat(messages): browse and manage native Telegram pins
mizorewww Sep 19, 2026
b5b69eb
fix(pins): invalidate pending reads during sync recovery
mizorewww Sep 19, 2026
50b5135
feat(ui): enable Nerd Font icons through Lua configuration
mizorewww Sep 19, 2026
5fe99c2
build(install): support native Cargo source installation
mizorewww Sep 19, 2026
59abc82
fix(install): isolate Cargo Git build artifacts
mizorewww Sep 19, 2026
78baaec
fix(install): ignore Cargo checkout markers in build identity
mizorewww Sep 19, 2026
0f5f184
test(session): retain concurrent writer failure diagnostics
mizorewww Sep 19, 2026
5f58505
fix(deps): backport libSQL connection close ownership
mizorewww Sep 19, 2026
4bf0a7c
fix(input)!: restore composition and select media before opening
mizorewww Sep 20, 2026
0bbddb8
feat(ui): add a configurable statusline with connection metrics
mizorewww Sep 20, 2026
cb404fb
feat(ui): compact the sidebar and align semantic chat columns
mizorewww Sep 20, 2026
ba2a22b
feat(ui): separate message headers replies and media
mizorewww Sep 20, 2026
2588e35
feat(ui): compact messages and move details to the statusline
mizorewww Sep 20, 2026
ee48e8b
fix(replies): load compact excerpts and open quoted targets
mizorewww Sep 20, 2026
16261eb
refactor(actions): share typed actions and descriptions
mizorewww Sep 20, 2026
b5a0166
feat(commands): add contextual Vim-style command entry
mizorewww Sep 20, 2026
c274e23
feat(drafts): persist account-scoped local drafts
mizorewww Sep 20, 2026
e95f6ed
feat(attachments)!: stage files before explicit send
mizorewww Sep 20, 2026
41082ca
feat(clipboard): paste native media into durable drafts
mizorewww Sep 20, 2026
72af047
fix(clipboard): release assets after recovered send echoes
mizorewww Sep 20, 2026
77020da
fix(reads): Bound automatic receipts to visible messages
mizorewww Sep 20, 2026
2faff21
feat(navigation): Resume chats from the first unread message
mizorewww Sep 20, 2026
59b4888
feat(clipboard): Receive terminal MIME paste into captured drafts
mizorewww Sep 20, 2026
c884878
feat(messages): Edit messages with durable isolated drafts
mizorewww Sep 20, 2026
7380783
feat(messages): Confirm scoped deletion with ordered cache updates
mizorewww Sep 20, 2026
359b361
feat(messages): Copy text and Telegram message links
mizorewww Sep 20, 2026
5c080b3
feat(messages): Review native forwards and open Saved Messages
mizorewww Sep 20, 2026
6111db7
feat(search): add filtered Telegram history search
mizorewww Sep 20, 2026
67b226b
feat(notifications): synchronize chat mute settings
mizorewww Sep 20, 2026
479c9be
feat(mentions): Browse and acknowledge unread mentions
mizorewww Sep 20, 2026
028abb5
feat(notifications): Deliver grouped desktop alerts
mizorewww Sep 20, 2026
1067fc8
feat(messages): Render entities with explicit spoiler reveal
mizorewww Sep 20, 2026
6a6f439
feat(polls): Add synchronized poll reading and explicit voting
mizorewww Sep 20, 2026
4ad8caa
feat(reactions): Add emoji choices and synchronized counts
mizorewww Sep 20, 2026
1e5685e
feat(chats): Open uncached conversations by username
mizorewww Sep 20, 2026
051a9ed
feat(chats): Preview and confirm Telegram group invitations
mizorewww Sep 20, 2026
8e92e22
feat(chats): Show chat details and current send restrictions
mizorewww Sep 20, 2026
2d9c9c2
feat(config): Reload Lua settings without losing application state
mizorewww Sep 20, 2026
478ccc7
docs(wiki): Complete bilingual commands and chat workflows
mizorewww Sep 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
30 changes: 24 additions & 6 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,8 @@ jobs:
- name: Check installer scripts
shell: bash
run: bash -n scripts/install.sh
- name: Validate bilingual Wiki sources
run: python3 scripts/export-wiki.py --check
- name: Parse PowerShell installer
shell: pwsh
run: |
Expand All @@ -119,6 +121,15 @@ jobs:
- run: cargo fmt --all -- --check
- run: cargo clippy --locked --all-targets --all-features -- -D warnings
- run: cargo test --locked --all-targets --all-features
- name: Verify own-deletion update payloads
run: >-
cargo test --locked --manifest-path vendor/grammers-mtsender/Cargo.toml
--lib affected_updates_keep_payloads --target-dir target/mtsender-regression
- name: Verify upstream SQLite close-ownership regression
run: >-
cargo test --locked --manifest-path vendor/libsql/Cargo.toml
--no-default-features --features core --lib
drop_closes_the_handle_exactly_once --target-dir target/libsql-regression

build:
name: Build (${{ matrix.platform }})
Expand Down Expand Up @@ -201,7 +212,7 @@ jobs:
set -euo pipefail
[[ "$TELEGRAM_API_ID" =~ ^[0-9]+$ ]]
[[ "$TELEGRAM_API_HASH" =~ ^[0-9a-fA-F]{32}$ ]]
- name: Build and package every pushed commit
- name: Install from Git and package every pushed commit
shell: bash
env:
VERGEN_GIT_BRANCH: ${{ github.head_ref || github.ref_name }}
Expand All @@ -210,6 +221,8 @@ jobs:
run: |
set -euo pipefail
mkdir -p dist
source_url="$(python3 -c 'from pathlib import Path; print(Path.cwd().as_uri())')"
install_root="$(pwd)/dist/cargo-install"
while IFS=$'\t' read -r sha version; do
sha="${sha%$'\r'}"
version="${version%$'\r'}"
Expand All @@ -218,8 +231,13 @@ jobs:
rustup target add "${{ matrix.target }}"
export TERMGRAM_BUILD_VERSION="$version"
cargo test --locked --all-targets --all-features
cargo build --locked --release --target "${{ matrix.target }}"
binary="target/${{ matrix.target }}/release/tg"
# Exercise Cargo's Git checkout, path patches, install tracking and
# release profile. Keep immutable Git-source artifacts separate from
# workspace builds, including build-script executables and metadata.
cargo install --locked --git "$source_url" --rev "$sha" \
--bin tg --target "${{ matrix.target }}" --target-dir target/cargo-install \
--root "$install_root" --force termgram
binary="$install_root/bin/tg"
if [[ "$RUNNER_OS" == Windows ]]; then
binary+=".exe"
fi
Expand All @@ -240,12 +258,12 @@ jobs:

if [[ "$RUNNER_OS" == Windows ]]; then
(
cd "target/${{ matrix.target }}/release"
cd "$install_root/bin"
7z a -tzip \
"../../../dist/termgram-$version-${{ matrix.platform }}.zip" tg.exe
"../../termgram-$version-${{ matrix.platform }}.zip" tg.exe
)
else
tar -C "target/${{ matrix.target }}/release" -czf \
tar -C "$install_root/bin" -czf \
"dist/termgram-$version-${{ matrix.platform }}.tar.gz" tg
fi
done < <(jq -r '.[] | [.sha, .version] | @tsv' <<<"$RELEASE_PLAN")
Expand Down
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
/target/
/.cargo-ok
/dist/
.env
*.session
*.session-*
*.log
.DS_Store
/dev-notes/
*.cache.sqlite3
*.cache.sqlite3-*

*.media/
Loading
Loading