A (really) native and powerful macOS Telegram client built using SwiftUI, optimized for moderating large communities and personal use.

Overview

Moc

A (really) native and powerful macOS Telegram client, optimized for moderating large communities and personal use.

This client is currently in development and not usable. You can track progress by observing the project table, issues, pull requests, and a Telegram channel (russian).

If you have any questions, ask them in Discussions on GitHub, or in a Telegram group (russian). You are strongly encoruaged to use Discussions and the Telegram group instead of Issues.

Screenshots

Building

Work in progress...

Step 1 - Download right version of Xcode

The development is going with Xcode 13.2. You can download it from Apple Developer.

Step 2 - Obtain api_id and api_hash

They can be obtained at my.telegram.org. Log in, open API devevelolment tools, and fill up needed info. Then click Save changes at the bottom of the page. Leave the page open, this will be needed in the next step!

Step 3 - Set up development environment

Open the project in Xcode. Wait until all dependencies are resolved(it will take a while, at least because of a 300~ MB TDLib build!)

After that, open Moc project from Project navigator:

Select Moc target:

Open Build Phases tab:

Expand GYB Code generation item:

And insert previously obtained api_id and api_hash in corresponding places:

WARNING: DO NOT commit your api_id and api_hash. They should be kept private.

Done! You have everything set up. You can now build Moc 😁

Comments
  • Crash on viewing certain album messages

    Crash on viewing certain album messages

    ...and I currently have no idea which exact messages provoke this kind of behavior. For now we have the crash reports from AppCenter, which help us understand that the issue is in media messages, specifically photos and/or videos.

    Here are crashes themselves: First Second

    I should investigate what exact messages were the culprits of these crashes, and hopefully fix them.

    bug OS: all internal critical 
    opened by ggoraa 7
  • Made improvements to the build scripts

    Made improvements to the build scripts

    Per stack overflow question #65991508 I was able to find a fix for why the app wouldn't compile on my machine. I have these proposed changes to fix it. This should now allow the app to compile on any current machine, regardless of architecture

    opened by S0ulf3re 4
  • Members in Chat Inspector: Part 2

    Members in Chat Inspector: Part 2

    addition to merged issue #153

    frame(width: 280) for inspector, because Picker had no place in inspector, because of some strange horizontal padding of a List, that i didn't find how to fix

    List works better, when changing chats, but now it is impossible to have pinned views (Picker)

    i think, it has much less problems, than ScrollView

    ...may be it is better just to use UIScrollView

    opened by levochkaa 3
  • Add

    Add "Developer mode" setting to enable showing additional info about chats and users

    Exact info that will be seen with this setting enabled:

    • User ID
    • Chat ID
    • A DC (data center) on which the user is, like DC2

    It would pretty useful for devs, because they will not need to fiddle with bots in any way to get info listed above, and normal users are also not confused because this setting will be off by default.

    Can be done with Stage 2 but I think I would drop this to Stage 3

    enhancement ui OS: all 
    opened by ggoraa 3
  • Possibly replace List with NSTableView wrapper

    Possibly replace List with NSTableView wrapper

    The reason for this change is simple: performance (and swipe actions)

    Performance can be easily demonstrated here: https://kean.blog/post/not-list

    And with swipe actions, they are available only on three-column NavigationView layout(idk why lol), but I don't have a NavigationView, it is replaced by a custom solution, so I lack swipe actions

    Only benefits my people, only benefits

    I think it will be implemented in 0.2.0 milestone release

    enhancement possibly 
    opened by ggoraa 3
  • In-App updates

    In-App updates

    In-App updates will use Sparkle for the update process, which will be the same both for Homebrew and direct installations. On the Homebrew side the package definition should be updated to indicate to Homebrew that this cask uses it's own update handling

    enhancement OS: macos internal 
    opened by ggoraa 2
  • Migrate from custom Message models to TDLib ones

    Migrate from custom Message models to TDLib ones

    Why? Well, it will result in better performance, because the message content loading will be done by MessageView lazily (thanks to LazyVStack), compared to how it is now when all messages are loaded when a user opens a chat. Pretty good reasons to do so tbh

    enhancement OS: all internal 
    opened by ggoraa 2
  • Update chat list design

    Update chat list design

    So, what I want to do I want to add the same "fade" at the top of the list, like the folder list, and also make the chat photo squared when it's selected (and maybe slightly squared when hovered)

    https://t.me/moc_updates_ua/574

    enhancement OS: all ux 
    opened by ggoraa 1
  • Implement local storage of localization strings

    Implement local storage of localization strings

    TDLib has a language_pack_database_path option, which allows giving it a path to a place on the filesystem for a database. This thing will optimize the language pack string retrieval, and will possibly greatly simplify localization of the UI because strings will be fetched directly from the database on disk instead of the web, and will (maybe) not require await

    enhancement OS: all internal 
    opened by ggoraa 1
  • Implement localization

    Implement localization

    Moc will mostly use Telegram's translation platform, that will be handled by TDLib, but parts of the app require additional translation, and that will use https://github.com/Decybel07/L10n-swift under the hood.

    Both of them will be wrapped by an L10n module, for simplifying localization interactions.

    enhancement ui OS: all internal 
    opened by ggoraa 1
  • Improve the code field design

    Improve the code field design

    I have found a really cool implementation of the 2FA field in RobotsAndPencils/XcodesApp, which looks similar to how 2FA works in Apple apps and also Telegram's official clients.

    I will just ~~steal~~ I mean borrow some code from that repo, and tweak it a little so it looks cool

    And obviously place credits to @RobotsAndPencils, because it will just be nice to do that

    enhancement ui OS: macos ux 
    opened by ggoraa 1
  • Crash on text styling

    Crash on text styling

    I was trying to switch the folders and seems the moc is also fetching the data at this time. and then it crashed

    version 0.3.0 (15)

    The Problem report is as the following

    Github reports body is too long and I'll put it in the following gist

    https://gist.github.com/EdisonJwa/803c22aa179e978e668b29ee681fefb0

    bug OS: macos crash 
    opened by EdisonJwa 9
  • Cannot show all the title texts on two-factor verification page

    Cannot show all the title texts on two-factor verification page

    I'm using version 0.3.0(15) on macOS 12.6.1

    There two-factor authentication page does not display all the text belonging to the title As the following image

    image

    bug ui OS: macos 
    opened by EdisonJwa 5
  • Support for custom language packs

    Support for custom language packs

    This issue includes:

    • Properly handling cloud and local strings with custom packs
    • Be able to add them using a link, which involves handling hyperlinks
    enhancement ui OS: all ux 
    opened by ggoraa 0
  • Add automatic folder layout switching

    Add automatic folder layout switching

    Some users use horizontal folders (like on mobile) even when there is a ton of folders they have, which is IMO not effective. This feature will automatically switch between folder layouts (vertical vs horizontal) by using the number of folders that a user has.

    For example, if a user has, say, 4(or 5) folders, folder layout will automatically change to vertical, and vice versa

    enhancement OS: all ux 
    opened by ggoraa 0
Releases(nightly)
  • nightly(Nov 3, 2022)

    What's Changed

    • Full chat info UI + shortcuts by @ggoraa in https://github.com/mock-foundation/moc/pull/158
    • Taskfile integration by @ggoraa in https://github.com/mock-foundation/moc/pull/165
    • L10n module by @ggoraa in https://github.com/mock-foundation/moc/pull/164
    • Localized UI (partially) by @ggoraa in https://github.com/mock-foundation/moc/pull/170
    • Language settings UI by @ggoraa in https://github.com/mock-foundation/moc/pull/171

    Full Changelog: https://github.com/mock-foundation/moc/compare/0.2.0...nightly

    Source code(tar.gz)
    Source code(zip)
    Moc.dmg(150.74 MB)
  • 0.2.0(Sep 26, 2022)

    🎉 0.2.0 is finally here! 🎉

    Changelog

    • Photos, videos, files, and albums
    • Replies
    • Support for iPadOS (experimental)
    • Folders
    • Chat Shortcuts
    • Message style formatting
    • Dynamic username coloring
    • Inspector:
      • Improved design
      • User list
    • About Moc screen
    • In-App updates
    • Connection state indicator
    • Support for macOS Ventura

    Installation instructions

    Auto-generated

    • [ImgBot] Optimize images by @imgbot in https://github.com/mock-foundation/moc/pull/56
    • Folders: Part 1 by @ggoraa in https://github.com/mock-foundation/moc/pull/58
    • Caching by @ggoraa in https://github.com/mock-foundation/moc/pull/59
    • Folders: Part 2 by @ggoraa in https://github.com/mock-foundation/moc/pull/69
    • [ImgBot] Optimize images by @imgbot in https://github.com/mock-foundation/moc/pull/71
    • Support for iPadOS (16) + macOS Ventura by @ggoraa in https://github.com/mock-foundation/moc/pull/70
    • [ImgBot] Optimize images by @imgbot in https://github.com/mock-foundation/moc/pull/74
    • Photos + albums by @ggoraa in https://github.com/mock-foundation/moc/pull/76
    • (Not) full login implementation by @ggoraa in https://github.com/mock-foundation/moc/pull/81
    • Videos + Documents (aka Files) by @ggoraa in https://github.com/mock-foundation/moc/pull/82
    • Replies by @ggoraa in https://github.com/mock-foundation/moc/pull/83
    • Add Networking module by @dmikots in https://github.com/mock-foundation/moc/pull/87
    • Refactors by @ggoraa in https://github.com/mock-foundation/moc/pull/89
    • Tests for Networking module by @dmikots in https://github.com/mock-foundation/moc/pull/93
    • TDLibKit Update by @ggoraa in https://github.com/mock-foundation/moc/pull/91
    • Better animation curves by @ggoraa in https://github.com/mock-foundation/moc/pull/95
    • Improve device name in sessions by @ggoraa in https://github.com/mock-foundation/moc/pull/96
    • Scroll to bottom button hiding itself in the bottom by @ggoraa in https://github.com/mock-foundation/moc/pull/97
    • Sidebar size system setting support by @ggoraa in https://github.com/mock-foundation/moc/pull/100
    • PR workflow by @ggoraa in https://github.com/mock-foundation/moc/pull/103
    • Fix session termination crash by @ggoraa in https://github.com/mock-foundation/moc/pull/102
    • Rewritten environment.sh in Swift by @ggoraa in https://github.com/mock-foundation/moc/pull/111
    • In-App updates by @ggoraa in https://github.com/mock-foundation/moc/pull/115
    • AppCenter integration by @ggoraa in https://github.com/mock-foundation/moc/pull/117
    • New code field design by @ggoraa in https://github.com/mock-foundation/moc/pull/119
    • Chat Shortcuts by @ggoraa in https://github.com/mock-foundation/moc/pull/122
    • Message input lag fix by @ggoraa in https://github.com/mock-foundation/moc/pull/129
    • Chat list item layout (fixes #126) by @ggoraa in https://github.com/mock-foundation/moc/pull/132
    • Video out of bounds fix by @ggoraa in https://github.com/mock-foundation/moc/pull/133
    • Phone prefix dropdown fix by @ggoraa in https://github.com/mock-foundation/moc/pull/134
    • Full-screen login UI by @ggoraa in https://github.com/mock-foundation/moc/pull/135
    • Drastic refactor + message formatting by @ggoraa in https://github.com/mock-foundation/moc/pull/137
    • Vertical tab switcher + folders settings developer info by @ggoraa in https://github.com/mock-foundation/moc/pull/144
    • What's New by @ggoraa in https://github.com/mock-foundation/moc/pull/146
    • fix: crash on viewing albums by @levochkaa in https://github.com/mock-foundation/moc/pull/147
    • Support for dynamic username coloring by @levochkaa in https://github.com/mock-foundation/moc/pull/152
    • Members in Chat Inspector by @levochkaa in https://github.com/mock-foundation/moc/pull/153
    • Members in Chat Inspector: Part 2 by @levochkaa in https://github.com/mock-foundation/moc/pull/155
    • Better album layout for macOS Ventura and iPadOS 16 by @ggoraa in https://github.com/mock-foundation/moc/pull/151

    New Contributors

    • @dmikots made their first contribution in https://github.com/mock-foundation/moc/pull/87
    • @levochkaa made their first contribution in https://github.com/mock-foundation/moc/pull/147

    Full Changelog: https://github.com/mock-foundation/moc/compare/0.1.0...0.2.0

    Source code(tar.gz)
    Source code(zip)
    Moc.dmg(53.66 MB)
    Moc.ipa(30.48 MB)
  • 0.2.0-p3(Aug 9, 2022)

    The last pre-release build before a full release of 0.2.0!

    Updates in this release

    • Chat Shortcuts (preview)
    • In-app updates
    • Integration with AppCenter for crash reporting

    Bug fixes and improvements:

    • Last message previes: #105
    • User's color tint for replies: #106
    • Fixed document message UI: #107
    • Improved login code field design: #112

    Auto-generated

    • Rewritten environment.sh in Swift by @ggoraa in https://github.com/mock-foundation/moc/pull/111
    • In-App updates by @ggoraa in https://github.com/mock-foundation/moc/pull/115
    • AppCenter integration by @ggoraa in https://github.com/mock-foundation/moc/pull/117
    • New code field design by @ggoraa in https://github.com/mock-foundation/moc/pull/119

    Full Changelog: https://github.com/mock-foundation/moc/compare/0.2.0-p2...0.2.0-p3

    Source code(tar.gz)
    Source code(zip)
    Moc.dmg(52.69 MB)
  • 0.2.0-p2(Jul 16, 2022)

    A second pre-release of 0.2.0, which is really close to a full release of 0.2.0!

    Note: iPadOS builds are not available rn because for building an
    .ipa you should be in Apple Developer Program, from which I'm absent, unfortunately :(

    New tasks completed:

    • Photos
    • Videos
    • Files
    • Replies
    • Better About Moc
    • Better device representation in Sessions for Macs
    • Connection state indicator
    • Fixed support for SwiftUI 4 and macOS Ventura/iPadOS 16 with second betas rollin around

    Auto-generated

    • Photos + albums by @ggoraa in https://github.com/mock-foundation/moc/pull/76
    • (Not) full login implementation by @ggoraa in https://github.com/mock-foundation/moc/pull/81
    • Videos + Documents (aka Files) by @ggoraa in https://github.com/mock-foundation/moc/pull/82
    • Replies by @ggoraa in https://github.com/mock-foundation/moc/pull/83
    • Add Networking module by @dmikots in https://github.com/mock-foundation/moc/pull/87
    • Refactors by @ggoraa in https://github.com/mock-foundation/moc/pull/89
    • Tests for Networking module by @dmikots in https://github.com/mock-foundation/moc/pull/93
    • TDLibKit Update by @ggoraa in https://github.com/mock-foundation/moc/pull/91
    • Better animation curves by @ggoraa in https://github.com/mock-foundation/moc/pull/95
    • Improve device name in sessions by @ggoraa in https://github.com/mock-foundation/moc/pull/96
    • Scroll to bottom button hiding itself in the bottom by @ggoraa in https://github.com/mock-foundation/moc/pull/97
    • Sidebar size system setting support by @ggoraa in https://github.com/mock-foundation/moc/pull/100
    • PR workflow by @ggoraa in https://github.com/mock-foundation/moc/pull/103
    • Fix session termination crash by @ggoraa in https://github.com/mock-foundation/moc/pull/102

    New Contributors

    • @dmikots made their first contribution in https://github.com/mock-foundation/moc/pull/87

    Full Changelog: https://github.com/mock-foundation/moc/compare/0.2.0-p1...0.2.0-p2

    Source code(tar.gz)
    Source code(zip)
    Moc.dmg(45.44 MB)
  • 0.2.0-p1(Jun 17, 2022)

    Download from Homebrew by running brew install ggoraa/apps/moc!

    This release is a partial release of 0.2.0, which only completes these tasks:

    • Support for iPadOS
    • Folders
    • Folders preferences tab
    • Updates for SwiftUI 4 on macOS Ventura and iPadOS 16
    • Caching

    Current status can be observed here.

    Auto-generated

    • Folders: Part 2 by @ggoraa in https://github.com/ggoraa/moc/pull/69
    • [ImgBot] Optimize images by @imgbot in https://github.com/ggoraa/moc/pull/71
    • Support for iPadOS (16) + macOS Ventura by @ggoraa in https://github.com/ggoraa/moc/pull/70
    • [ImgBot] Optimize images by @imgbot in https://github.com/ggoraa/moc/pull/74

    Full Changelog: https://github.com/ggoraa/moc/compare/0.1.0...0.2.0-p1

    Source code(tar.gz)
    Source code(zip)
    Moc.dmg(38.85 MB)
  • 0.1.0(May 25, 2022)

    The initial release!

    What is done:

    • Main and archive chat lists
    • Chat UI
      • Inspector
      • Message history
      • Message input field
    • Sending messages
    • Login UI
    • Account preferences tab

    Download it using brew install ggoraa/apps/moc --cask, or manually from here!

    Source code(tar.gz)
    Source code(zip)
    Moc.dmg(36.33 MB)
Owner
GGorAA
15 y.o. Junior Swift Multiplatform(iOS, macOS, watchOS etc.) developer from Ukraine. Loves electric unicycles(EUCs), FPV drones, and much more!
GGorAA
Telegram Bot Framework written in Swift 5.1 with SwiftNIO network framework

Telegrammer is open-source framework for Telegram Bots developers. It was built on top of Apple/SwiftNIO

Pataridze Givi 279 Jan 4, 2023
Swift Bot with Vapor for Telegram Bot Api

Telegram Vapor Bot Please support Swift Telegram Vapor Bot Lib development by giving a ⭐️ Telegram Bot based on Swift Vapor. Swift Server Side Communi

OleG. 104 Jan 6, 2023
Instagram API client written in Swift

SwiftInstagram is a wrapper for the Instagram API written in Swift. It allows you to authenticate users and request data from Instagram effortlessly.

Ander Goig 580 Nov 25, 2022
Swift client for Kubernetes

Table of contents Overview Compatibility Matrix Examples Usage Creating a client Configuring a client Client authentication Client DSL Advanced usage

Swiftkube 94 Dec 14, 2022
A Swift client for the OpenAI API.

OpenAI A Swift client for the OpenAI API. Requirements Swift 5.3+ An OpenAI API Key Example Usage Completions import OpenAI

Mattt 161 Dec 26, 2022
QuoteKit is a Swift framework to use the free APIs provided by Quotable created by Luke Peavey.

QuoteKit The QuoteKit is a Swift framework to use the free APIs provided by Quotable created by Luke Peavey.

Rudrank Riyam 17 Jun 23, 2022
Unofficial iOS/macOS SDK for the Notion API.

NotionClient: a Notion SDK for iOS & macOS Unofficial Notion API SDK for iOS & macOS. This is an alpha version and still work in progress. TODO Featur

David De Bels 15 Aug 4, 2022
Fetch Multiple Rest API using Swift 5.5 Async Await with Task, TaskGroup, Continuation API

Source code for Tutorial on experimenting with Swift Async Await to fetch multiple REST API endpoints and eliminate Pyramid of Doom callback hell to improve code readability and maintanability

Alfian Losari 14 Dec 7, 2022
Swift library for the Twitter API v1 and v2

Swift library for the Twitter API v1 and v2

mironal 96 Dec 30, 2022
WANNA SDK enhances your iOS app with virtual try-on capabilities for shoes and watches

WANNA SDK enhances your iOS app with virtual try-on capabilities for shoes and watches. With this feature, your users will be able to see in real time how the selected product looks on them, just by pointing their smartphone camera at their feet or wrist.

Wannaby Inc. 18 Dec 2, 2022
ITunesFeedGenerator - This library provides very simple and Swiftly way to fetch feeds from iTunes Store

ITunesFeedGenerator This library provides very simple and Swiftly way to fetch feeds from iTunes Store: Most Played Songs. Top Free or Paid Books. Top

Alfian Losari 9 Sep 8, 2022
A wrapper to make it really easy to deal with iOS, macOS, watchOS and Linux Keychain and store your user's credentials securely.

A wrapper (written only in Swift) to make it really easy to deal with iOS, macOS, watchOS and Linux Keychain and store your user's credentials securely.

Ezequiel Aceto 2 Mar 29, 2022
The Bank you really need.

OmegaBank Репозиторий

red_mad_robot 26 Apr 22, 2022
A really simple key-value wrapper for keychain.

PlainKeychain A really simple key-value wrapper for keychain. Features ✅ Key-value pairs using kSecClassGenericPassword. ❌ Internet passwords (kSecCla

Benjamin Barnard 0 Nov 27, 2021
A completely native Discord client for macOS built 100% in Swift and SwiftUI

Swiftcord A completely native Discord client for macOS built 100% in Swift and SwiftUI This project aims to create a fully functional native Discord c

CryptoAlgo-Dev 1.1k Jan 9, 2023
Work in progress gallery of controls available to Catalyst apps using Optimized for Mac

Catalyst Controls Gallery Very simple work-in-progress demonstration of many common controls available to Mac Catalyst as of macOS 11. Provided moreso

Steven Troughton-Smith 163 Sep 18, 2022
Dogtector: dog breed detection app for iOS using YOLOv5 model combined with Metal based object decoder optimized

Dogtector Project description Dogtector is dog breed detection app for iOS using YOLOv5 model combined with Metal based object decoder optimized for u

Bartłomiej Pluta 21 Aug 1, 2022
Telegram Redesign using SwiftUI

Telegram Redesign using SwiftUI Decided to code this Telegram redesign concept I found on Instagram (link to post). Screenshots Vídeos Vídeo on YouTub

Raphael Cerqueira 6 Aug 8, 2022
COVID Safe Paths (based on Private Kit) is an open and privacy preserving system to use personal information to battle COVID

COVID Safe Paths is a mobile app for digital contract tracing (DCT) sponsored by Path Check a nonprofit and developed by a growing global community of engineers, designers, and contributors. Safe Paths is based on research originally conducted at the MIT Media Lab.

PathCheck Foundation 470 Nov 6, 2022
A general purpose embedded hierarchical lock manager used to build highly concurrent applications of all types. Same type of locker used in many of the large and small DBMSs in existence today.

StickyLocking StickyLocking is a general purpose embedded lock manager which allows for locking any resource hierarchy. Installable Lock modes allow f

Sticky Tools 2 Jun 15, 2021