Repository navigation
Releases: mian196/ProtoFS
Releases Β· mian196/ProtoFS
Release list
ProtoFS v0.4.3
Immutable
release. Only release title and notes can be modified.
π Added
- Desktop System Tray Integration & Taskbar Hiding:
- Added desktop system tray icon with left-click show/hide toggle and right-click context menu (Open ProtoFS, Exit ProtoFS) via
tauri::trayincrates/protofs-tauri/src/lib.rs. - Updated
minimize_window_commandincrates/protofs-tauri/src/commands/settings.rsto hide window completely to the notification area (system tray), removing the app from the taskbar just like qBittorrent/Telegram.
- Added desktop system tray icon with left-click show/hide toggle and right-click context menu (Open ProtoFS, Exit ProtoFS) via
- Configurable Window Close Behavior & Action Prompt:
- Added interactive
CloseAppModaldialog when clicking the window close button (X), allowing users to choose between Minimize to System Tray (keeps background sync & active transfers running) and Exit Application (cleanly unmounts virtual drives and terminates). - Added a "Remember my choice" checkbox to persist the preference in
useSettingsStore(closeAction: 'prompt' | 'minimize' | 'exit'). - Added interactive 3-way toggle in Settings -> General Tab (
GeneralTab.tsx) allowing users to update or reset their close behavior anytime between Always Ask, Minimize to Tray, and Exit Application. - Added
exit_app_commandbackend Tauri command insettings.rsto ensure graceful virtual drive unmounting and clean process exit.
- Added interactive
- Multi-ABI and Universal Android Release Workflow:
- Configured Android Gradle ABI splits (
arm64-v8a,armeabi-v7a) withisUniversalApk = trueinbuild.gradle.kts. - Streamlined GitHub Release packaging in
.github/workflows/release.ymlto bundle and publish standaloneProtoFS_v${VERSION}_universal.apk,ProtoFS_v${VERSION}_arm64-v8a.apk, andProtoFS_v${VERSION}_armv7.apkrelease assets.
- Configured Android Gradle ABI splits (
π Fixed
- In-Place Telegram Pinned Manifest Editing & Deduplication:
- Upgraded candidate manifest lookup in
manifest.rsto use a robust multi-strategy search (InputMessagesFilterPinned,channels::GetFullChannelpinned ID lookup, earliest channel messages, caption#protofs_manifest_v1, and document filename). - Ensured
update_pinned_manifestedits the existing pinned manifest message in-place rather than sending a new message after batch uploads, cleans up any previous duplicate manifest messages, and guarantees that only one pinned message remains in the Telegram storage channel.
- Upgraded candidate manifest lookup in
ProtoFS v0.4.2
π Documentation & Community
- WIP Status Banner & Community Guidelines:
- Updated
README.mdwith an early-stage Work In Progress (WIP) status banner and guidelines for reporting bugs, proposing features, and submitting pull requests.
- Updated
- GitHub Issue, PR & Discussion Templates:
- Added structured GitHub Issue templates for bug reports (
.github/ISSUE_TEMPLATE/bug_report.yml) and feature requests (.github/ISSUE_TEMPLATE/feature_request.yml). - Added GitHub Discussion category templates for feature ideas (
.github/DISCUSSION_TEMPLATE/ideas.yml), Q&A troubleshooting (.github/DISCUSSION_TEMPLATE/q-a.yml), and community show-and-tell (.github/DISCUSSION_TEMPLATE/show-and-tell.yml). - Added standardized Pull Request template (
.github/pull_request_template.md).
- Added structured GitHub Issue templates for bug reports (
- Comprehensive README & Feature Reference:
- Updated
README.mdwith comprehensive architecture overview, embedded WebDAV drive mounting (ProtoFS (X:)), Master Key Vault / BIP-39 mnemonic recovery, pre-auth proxy subsystem withLocalProxyBridge, and updated CLI references. - Added clear Telegram non-affiliation disclaimer and terms of service notice.
- Updated
- Contributor & Security Guidelines:
- Added
CONTRIBUTING.mddetailing development setup, code standards, modularity rules, and PR workflow. - Added
SECURITY.mdestablishing supported version policy, private vulnerability reporting workflow, response SLAs, and core cryptographic invariants.
- Added
π Added
- Multi-ABI Android APK Release Artifacts:
- Configured Android build and release workflows to build and publish dedicated
arm64-v8a,armv7(armeabi-v7a), anduniversalAPKs (ProtoFS_v0.4.2_arm64-v8a.apk,ProtoFS_v0.4.2_armv7.apk,ProtoFS_v0.4.2_universal.apk).
- Configured Android build and release workflows to build and publish dedicated
- Automated Changelog Extraction in Release CI:
- Added
.github/scripts/generate_release_notes.pyto automatically extract matching version sections directly fromCHANGELOG.mdupon publishing releases in.github/workflows/release.yml.
- Added
π§ Changed
- User-Friendly Account Connection Label:
- Changed the account button status display in the sidebar from
"Testing..."to"Connecting..."while MTProto connection checks are in progress.
- Changed the account button status display in the sidebar from
- Versioned Release CI Asset Packaging:
- Configured release workflow to inject the dynamic version string into binary and APK artifact filenames (e.g.,
protofs-cli-v0.4.1-windows-x86_64.exe,protofs-portable-v0.4.1-windows-x86_64.exe,ProtoFS_v0.4.1_android.apk). - Published Windows CLI, Portable GUI, and NSIS/MSI installers (
.exe/.msi) directly as standalone assets without zip archive wrapping.
- Configured release workflow to inject the dynamic version string into binary and APK artifact filenames (e.g.,
- SSOT Version Bump Synchronization:
- Enhanced
scripts/bump-version.jsto automatically verify and synchronizefrontend/src/utils/version.tsalongside rootpackage.json,Cargo.toml,frontend/package.json, andtauri.conf.json.
- Enhanced
π Fixed
- Android NDK Context Initialization for MTProto & DNS Resolution:
- Resolved Telegram login code request failure on Android where requests were dropped immediately due to
ndk-contextpanicking (android context was not initialized). - Added JNI bridge
Java_com_protofs_app_MainActivity_initNdkContextincrates/protofs-tauri/src/lib.rsand invokedinitNdkContext(applicationContext)inMainActivity.kton Android startup to initialize JavaVM and Context pointers forhickory-resolver/ndk-context.
- Resolved Telegram login code request failure on Android where requests were dropped immediately due to
- Android APK Build & CI Packaging:
- Fixed root Tauri CLI script bindings for Gradle tasks and streamlined Android APK CI release workflow.
- Linux and Cross-Platform Build:
- Fixed Linux and cross-platform compilation errors and linter warnings.
- Real-Time Transfer Queue Tracking & Live Preview Synchronization:
- Fixed upload popup getting permanently stuck in
"uploading"by synchronizingtransferIdacross frontenduseUploadManager.tsand Tauri backendtransfers.rs. - Resolved event matching in
useTransferListener.tsso completed and in-flight transfer progress events accurately match the active item by ID and name. - Added full queued items visibility (
status: 'queued') so all batch files appear immediately in the transfer queue drawer with accurate overall queue progress and remaining item counts.
- Fixed upload popup getting permanently stuck in
- Batch Upload Completion Flush & Pinned Manifest In-Place Editing:
- Resolved intermediate manifest uploads during large batch uploads (e.g. 1k+ files) by updating in-memory
VfsTreeand SQLite cache in real-time and deferring the remote manifest upload to a single final flush upon queue completion (useUploadManager.ts). - Fixed candidate message resolution in
manifest.rsby searching for#protofs_manifest_v1across channel history when recent message history consists of uploaded files. - Ensured
do_update_pinned_manifestedits the existing pinned manifest message in-place withmessages.EditMessageand automatically deletes any duplicate manifest messages, preventing channel clutter.
- Resolved intermediate manifest uploads during large batch uploads (e.g. 1k+ files) by updating in-memory
- MTProto Transport Framing Translation & Padding Stripping in LocalProxyBridge:
- Resolved the persistent
"Connecting..."status where MTProto proxies connected successfully at the TCP/TLS level with active ping latency, but Telegram authentication and session requests never completed. - Implemented bidirectional transport framing translation between Grammers' TCP Full transport format (
[full_len (4)] [seq_no (4)] [payload] [crc32 (4)]) and upstream MTProxy Intermediate / Padded Intermediate format ([inter_len (4)] [payload]). - Added dynamic MTProto padding stripper in
LocalProxyBridgeto strip upstream random padding (0β15 bytes) from Padded Intermediate responses before returning Full transport frames, preventing AES-IGE decryption failures in Grammers. - Aligned AES-256-CTR keystream offsets across the initial 64-byte Obfuscated2 header and ensured correct transport protocol tag selection (
0xddddddddvs0xeeeeeeee) based on the proxy secret format.
- Resolved the persistent
- End-to-End MTProto & Telegram Client Proxy Routing:
- Implemented in-process local proxy bridge (LocalProxyBridge) and configured
grammers-mtsenderproxy parameters to route all active MTProto sessions, authentication handshakes, QR logins, channel queries, and background sync traffic through active MTProto (Fake-TLS / DD), HTTP CONNECT, and SOCKS5 proxies.
- Implemented in-process local proxy bridge (LocalProxyBridge) and configured
- Automatic Startup Proxy Latency Measurement:
- Automatically measured and displayed active proxy round-trip latency (
ms) in the header badge and auth modal upon opening the application without requiring a manual "Test Connection" button click.
- Automatically measured and displayed active proxy round-trip latency (
- Active Proxy Propagation for Session Reconnections:
- Fixed account connection check and session restoration failing under proxy environments. MTProto session reconnections (
check_telegram_connection_command, startup, and account switches) now consistently route through the active proxy configuration with a fail-fast 5β10s timeout instead of attempting direct connection.
- Fixed account connection check and session restoration failing under proxy environments. MTProto session reconnections (
- Proxy Diagnostic Draft Deserialization:
- Resolved
missing field 'type'error when running proxy connection diagnostics by addingDraftProxyConfigto crates/protofs-tauri/src/commands/proxy.rs and mapping frontend proxy drafts into coreProxyConfiginstances safely.
- Resolved
- Disaster Recovery False Positive on Connection Loss:
- Prevented Disaster Recovery mode and channel deleted warnings from triggering when offline, disconnected, or experiencing network/proxy restrictions. Channel inaccessibility checks now only execute when authenticated and actively connected to Telegram.
- Dynamic Application Version in Sidebar:
- Fixed hardcoded
v0.3badge in the sidebar header to dynamically read the application version (v0.4.1) viagetAppVersion().
- Fixed hardcoded