Commit Graph

192 Commits

Author SHA1 Message Date
Mikhail Kilin
9b4e277ce0 Add Swift FFI executable smoke 2026-05-21 00:12:08 +03:00
Mikhail Kilin
5ac63b84fb Expose iOS copy payload API 2026-05-20 23:56:18 +03:00
Mikhail Kilin
c83d2a1354 Add fake iOS FFI XCFramework build 2026-05-20 23:50:53 +03:00
Mikhail Kilin
7bde72f715 Add iOS simulator UI smoke check 2026-05-20 23:09:20 +03:00
Mikhail Kilin
f6b4b34ed4 Document iOS TDLib linking blocker 2026-05-20 23:04:03 +03:00
Mikhail Kilin
99ae5106ae Save iOS simulator smoke screenshot 2026-05-20 22:47:00 +03:00
Mikhail Kilin
10f4c3a84b Add iOS simulator launch scripts 2026-05-20 22:26:53 +03:00
Mikhail Kilin
6576a37198 Update iOS Xcode prerequisite checks 2026-05-20 16:14:17 +03:00
Mikhail Kilin
e5d0f2c064 Add iOS release readiness docs and CI 2026-05-20 15:52:22 +03:00
Mikhail Kilin
59050d0b5f Add iOS lifecycle hardening hooks 2026-05-20 15:51:15 +03:00
Mikhail Kilin
8bea159569 Add iOS platform service boundaries 2026-05-20 15:48:33 +03:00
Mikhail Kilin
593b19ba8e Expand iOS messaging shell actions 2026-05-20 15:45:17 +03:00
Mikhail Kilin
d68d68aeda Add SwiftUI iOS app shell 2026-05-20 15:43:07 +03:00
Mikhail Kilin
0878ba78df Add UniFFI iOS bridge crate 2026-05-20 14:04:45 +03:00
Mikhail Kilin
186f0edbb3 Add iOS-facing core session facade 2026-05-20 00:56:42 +03:00
Mikhail Kilin
eefac431e5 Split core and TUI crates 2026-05-20 00:31:18 +03:00
91a8700b8e Merge pull request 'feat/rafactor' (#31) from feat/rafactor into main
Reviewed-on: #31
2026-05-17 22:22:44 +00:00
Mikhail Kilin
913055dd96 Stabilize termwright e2e flow 2026-05-17 23:20:49 +03:00
Mikhail Kilin
ceca8ab67e Add visual TUI test coverage 2026-05-17 23:09:33 +03:00
d1d90ed3e2 Merge pull request 'feat/rafactor' (#30) from feat/rafactor into main
Reviewed-on: #30
2026-05-17 16:02:32 +00:00
348cc6598c Merge branch 'main' into feat/rafactor 2026-05-17 16:02:26 +00:00
Mikhail Kilin
51e9cf5c10 Add CI quality gate 2026-05-17 18:55:36 +03:00
Mikhail Kilin
2d4c1906d5 Resolve stale TODO paths 2026-05-17 18:50:36 +03:00
Mikhail Kilin
91e4f118f3 Handle absent media and selection state safely 2026-05-17 18:41:52 +03:00
Mikhail Kilin
679892beca Split modal and message rendering modules 2026-05-17 18:32:39 +03:00
Mikhail Kilin
6b27cbece9 Encapsulate TDLib state mutations 2026-05-17 18:25:18 +03:00
Mikhail Kilin
d8af6a76a1 Split fake TDLib client helpers 2026-05-17 18:16:26 +03:00
Mikhail Kilin
2e510dc932 Refactor TDLib facade and local time handling 2026-05-17 17:58:29 +03:00
5448d19b1a Merge pull request 'refactor: use system timezone and harden client APIs' (#29) from feat/system-timezone into main
Reviewed-on: #29
2026-05-17 10:16:57 +00:00
Mikhail Kilin
e09b83be69 refactor: use system timezone and harden client APIs 2026-05-17 13:14:59 +03:00
887892f809 Merge pull request 'fix: stabilize multi-account chat handling' (#28) from refactor into main
Reviewed-on: #28
2026-05-17 01:08:51 +00:00
7e32aeffa4 Merge branch 'main' into refactor 2026-05-17 01:08:05 +00:00
Mikhail Kilin
42884d174e fix: stabilize multi-account chat handling 2026-05-17 04:06:19 +03:00
fea3e452ff Merge pull request 'docs: clean up project markdown' (#27) from refactor into main
Reviewed-on: #27
2026-05-17 00:58:16 +00:00
Mikhail Kilin
1208aa5afb docs: clean up project markdown 2026-05-17 03:56:04 +03:00
d3565c9ff9 Merge pull request 'fix(images): eliminate race condition when pressing v on downloading photo' (#26) from refactor into main
Reviewed-on: #26
2026-03-02 23:19:14 +00:00
Mikhail Kilin
90776448ce fix(images): eliminate race condition when pressing v on downloading photo
Some checks failed
ci/woodpecker/pr/check Pipeline failed
Previously, handle_view_image called td_client.download_file() synchronously
while process_pending_chat_init already had a background synchronous=true
download in flight for the same file. TDLib returned is_downloading_completed=false
causing the view to fail on first press.

Fix: replace the blocking download in NotDownloaded/Downloading branches with
a pending_image_open intent flag. The main loop opens the modal automatically
when the background download result arrives via photo_download_rx. If no
background channel exists, a new one is started via direct tdlib_rs call.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 02:15:51 +03:00
6344e0ff6a Merge pull request 'refactor' (#25) from refactor into main
Reviewed-on: #25
2026-03-02 22:22:24 +00:00
Mikhail Kilin
c89a5e13f8 chore: remove leftover backup files from src/
Some checks failed
ci/woodpecker/pr/check Pipeline failed
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 01:17:47 +03:00
Mikhail Kilin
07a41ff796 chore: remove unused and outdated files
- config.example.toml: duplicate of config.toml.example
- REFACTORING_ROADMAP.md, REFACTORING_OPPORTUNITIES.md: refactoring done in Phase 13
- TESTING_PROGRESS.md, TESTING_ROADMAP.md: stale since February, superseded by ROADMAP.md
- CHANGELOG.md: never maintained
- FAQ.md, CONTRIBUTING.md, SECURITY.md, INSTALL.md: boilerplate for a personal project
- .github/: GitHub templates unused (project hosted on Gitea)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 01:15:42 +03:00
Mikhail Kilin
e2971e5ff5 chore: add symbol_info_budget and language_backend fields to serena config
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 01:04:55 +03:00
de18d6978b Merge pull request 'refactor' (#24) from refactor into main
Reviewed-on: #24
2026-03-02 22:00:07 +00:00
Mikhail Kilin
dea3559da7 docs: remove out-of-scope items from Phase 14 Etap 4 roadmap
Some checks failed
ci/woodpecker/pr/check Pipeline failed
Remove account deletion from modal and parallel polling — these won't
be implemented in the current scope.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 00:57:18 +03:00
Mikhail Kilin
260b81443e style: replace DarkGray with Rgb(160,160,160) for better terminal compatibility
DarkGray renders differently across terminals; a specific RGB value gives
consistent appearance. Also always show the account indicator in the footer.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 00:57:06 +03:00
Mikhail Kilin
df89c4e376 test: update footer snapshots to always show account name
Snapshots now reflect the new behaviour where the account indicator
is always visible (including "default"), matching the footer.rs change.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 00:52:56 +03:00
Mikhail Kilin
ec2758ce18 refactor: consolidate message loading logic into chat_loader.rs
Move all three phases of chat message loading from scattered locations
into a single dedicated module for better cohesion and navigability:
- Phase 1: open_chat_and_load_data (from handlers/chat_list.rs)
- Phase 2: process_pending_chat_init (extracted from 70-line inline block in main.rs)
- Phase 3: load_older_messages_if_needed (from handlers/chat.rs)

No behaviour changes — pure refactoring.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-03 00:48:39 +03:00
564df43910 Merge pull request 'fix: always reserve space for selection marker to prevent text shift' (#23) from refactor into main
Reviewed-on: #23
2026-02-24 12:59:04 +00:00
Mikhail Kilin
a095fe277b fix: always reserve space for selection marker to prevent text shift
Some checks failed
ci/woodpecker/pr/check Pipeline failed
Render "  " (2 spaces) for unselected messages instead of nothing,
so text stays aligned when navigating with the ▶ selection indicator.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 15:49:08 +03:00
42f16b1a2b Merge pull request 'feat: per-account lock protection + fix message navigation' (#22) from refactor into main 2026-02-24 12:39:01 +00:00
Mikhail Kilin
dfd4184039 fix: keep selection on last/first message instead of deselecting
Some checks failed
ci/woodpecker/pr/check Pipeline failed
When pressing down on the last message or up on the first message in
chat navigation, stay on the current message instead of exiting
message selection mode.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 15:35:06 +03:00