[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-6771":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":30,"readmeContent":31,"aiSummary":32,"trendingCount":16,"starSnapshotCount":16,"syncStatus":19,"lastSyncTime":33,"discoverSource":34},6771,"IceCubesApp","Dimillian\u002FIceCubesApp","Dimillian","A SwiftUI Mastodon client","https:\u002F\u002Fapps.apple.com\u002Fus\u002Fapp\u002Fice-cubes-for-mastodon\u002Fid6444915884",null,"Swift",7000,709,53,564,0,4,22,2,39.55,"GNU Affero General Public License v3.0",false,"main",true,[26,27,28,29],"ios","mastodon","swift","swiftui","2026-06-12 02:01:29","# IceCubesApp\n\n[![Download on the App Store](Images\u002Fdownload_on_the_app_store.svg)](https:\u002F\u002Fapps.apple.com\u002Fus\u002Fapp\u002Fice-cubes-for-mastodon\u002Fid6444915884)\n\n\u003Ca href=\"https:\u002F\u002Fwww.emergetools.com\u002Fapp\u002Fexample\u002Fios\u002Fcom.thomasricouard.IceCubesApp\u002Frelease?utm_campaign=badge-data\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdynamic\u002Fjson?url=https%3A%2F%2Fwww.emergetools.com%2Fapi%2Fv2%2Fpublic_new_build%3FexampleId%3Dcom.thomasricouard.IceCubesApp%26platform%3Dios%26badgeOption%3Dversion_and_max_install_size%26buildType%3Drelease&query=$.badgeMetadata&label=Ice%20Cubes&logo=apple\" \u002F>\u003C\u002Fa>\n\u003Ca href=\"\" rel=\"nofollow\">\u003Cimg src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F498ead3b529283d08c8db814f646db66ac683bb6b8ced181087fdcde9106c241\u002F68747470733a2f2f696d672e736869656c64732e696f2f656e64706f696e743f75726c3d687474707325334125324625324673776966747061636b616765696e6465782e636f6d2532466170692532467061636b616765732532466d316775656c706625324673776966742d7265616c74696d652d6f70656e616925324662616467652533467479706525334473776966742d76657273696f6e7326636f6c6f723d627269676874677265656e\" alt=\"Swift Version\" data-canonical-src=\"https:\u002F\u002Fimg.shields.io\u002Fendpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Fm1guelpf%2Fswift-realtime-openai%2Fbadge%3Ftype%3Dswift-versions&amp;color=brightgreen\" style=\"max-width: 100%;\">\u003C\u002Fa>\n[![License: AGPL v3](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-AGPL_v3-blue.svg)](https:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Fagpl-3.0)\n\n\u003Cimg src=\"Images\u002Fpromo.png\" \u002F>\n\nIceCubesApp is an open-source application for accessing the decentralized social network Mastodon! It's built entirely in SwiftUI, making it fast, lightweight, and easy to use.\n\nYou can connect to any Mastodon instance, browse your timeline, interact with other users, and post updates and media.\n\nIt's multiplatform and works on iOS, macOS, iPadOS, and visionOS.\nIt has a dedicated UI with a sidebar on macOS and iPadOS.\n\n## Features\n\n### Timeline\n\n\u003Cimg src=\"Images\u002Ftimeline.png\" \u002F>\n\n* A navigation bar title menu lets you easily swap between your home, local, federated, and trending timeline.\n* You can also easily access your lists, followed tags, and tag groups.\n* Tag groups are custom timelines made of multiple tags, a feature unique to Ice Cubes.\n* Quote post!\n* You can also add a remote local timeline. A helpful feature to browse the public timeline of other instances. Another Ice Cubes only feature.\n* Ice Cubes relies heavily on the streaming events of Mastodon to do stuff like showing new posts live in the home timeline and editing and deleting your posts.\n* The timeline sync is semi-automatic; your position is sent to the Mastodon marker API, and from another device running Ice Cubes, you can resume your home timeline position.\n* The home timeline is cached using the third-party library [Bodega](https:\u002F\u002Fgithub.com\u002Fmergesort\u002FBodega). A lite SQLite wrappers. The current position is saved in user default, so when you switch accounts or launch the app, your cached home timeline and position are restored. Then new posts will be fetched and displayed with an unread counter.\n* iCloud sync of tag groups, remote timelines and drafts.\n* Server side filters support.\n* Create and switch to your lists.\n\n`Code` -> Status & Timeline package\n\n### Editor \u002F Composer\n\n\u003Cimg src=\"Images\u002Feditor.png\" \u002F>\n\n* Full-featured post editor.\n* You can write threads up to 5 posts.\n* Upload up to 4 images.\n* AI-assisted tools using OpenAI API for text correction, hashtag generation, and more.\n* Generate image description using AI!\n* Custom emojis support.\n* Add polls and content warnings.\n* Save\u002Frestore from drafts.\n* Use the Apple language detection feature to suggest the language before posting.\n\n`Code` -> Status package -> StatusEditor component\n`Code` -> OpenAIClient\n\n### Notifications\n\n\u003Cimg src=\"Images\u002Fnotifications.png\" \u002F>\n\n* Full support for push notifications.\n* Ice Cubes runs its proxy between Mastodon and APNS, which is necessary for Mastodon to route push notifications to the user's device.\n* Push notifications are never and can't be read by the proxy.\n* Push notifications content\u002Fbody is decoded on the device. Look for `NotificationServiceSupport`\n* Push notifications are rich, and use Apple INSendMessageIntent API for contact pictures.\n* Push notifications are grouped by activities, like mentions, favorites, boosts, etc...\n* Notifications within the app are also grouped\u002Fstacked.\n* You can select which kind of push notifications you want to receive within the app.\n* Route to the correct post and switch to the proper account when taping notifications.\n\n\n`Code` -> Notifications package and NotificationService extension.\n\n### Explore \u002F Search\n\n\u003Cimg src=\"Images\u002Fexplore.png\" \u002F>\n\n* Dedicated explore\u002Fsearch tab for trending users, tags, posts, and links.\n* Easy access to all those categories from the top area.\n* You can search for everything or filter by users, tags, and posts.\n* See a graph for the activities on the trending tags.\n* See more from each category to access the full-screen view.\n\n`Code` -> Explore package\n\n### Direct Messages\n\n\u003Cimg src=\"Images\u002Fdm.png\" \u002F>\n\n* Dedicated tab for direct\u002Fprivate messages.\n* Chat like UI\n* You can use the inline composer for a quick chat or the full editor.\n\n`Code` -> Conversations package\n\n### Profile\n\n\u003Cimg src=\"Images\u002Fprofile.png\" \u002F>\n\n* Rich profile support.\n* Fully access & tweak your privacy settings.\n* Edit your profile, from your bio to your custom fields.\n* Add a custom server-side note visible only to you for any profile.\n* Translate the bio of any profile to your language.\n* Easy access to edit your server-side timeline filters.\n* Easy access to share your profile outside of the app.\n\n`Code` -> Account package\n\n### Multi Accounts\n\n\u003Cimg src=\"Images\u002Faccounts.png\" \u002F>\n\n* Support for an unlimited number of Mastodon accounts.\n* Easily browse\u002Fdiscover instances and log in!\n* Swap account from any screen on iOS.\n* Swap your account from the macOS\u002FiPadOS sidebar with just one click.\n* Full server-side and client-side account settings support.\n* Swipe to delete an account from the settings.\n* Safe authentication using Apple's `WebAuthenticationSession`\n* The account token is securely stored in the keychain.\n\n`Code` -> Account & AppAcount packages\n\n### Other\n\n\u003Cimg src=\"Images\u002Fmore.png\" \u002F>\n\n* You can support this project with tips in the app and Github sponsoring.\n* Massive amount of customization settings.\n* You can tweak the display settings like the font, line spacing, status actions buttons, etc...\n* Many built-in themes.\n* Make your theme.\n* Customize your swipe gestures.\n* Customize your tabbar entries.\n* Sound & haptic feedback support.\n\n## A note on the architecture\n\nThe project is split into different Swift Packages to make managing and maintaining the codebase easier. Each package focuses on a specific application aspect, such as the UI, network communication, or data models. This modular approach allows for easier collaboration and ensures the code is organized and easily understood.\n\nIt's a great starting point for learning SwiftUI. The app covers many of the basic concepts of SwiftUI, such as building layouts, working with data, and handling user interaction. By exploring the code, you can understand how to use SwiftUI in your daily life. Plus, the open-source nature of IceCubesApp means you can see how real-world applications are built and get a sense of best practices for using SwiftUI.\n\nThe architecture is straightforward MVVM for most parts, there is no redux on this one ;)\n\nThanks!\n\n\u003Cimg src=\"Images\u002FAppIcon.png\" \u002F>\n\n## Building the project\n\nTo build the project, you need to clone the repo and create a copy of the included `.xcconfig` file to create your config before you can compile the project. **Otherwise, you will get an error.**\n\nHere are the steps:\n\n1. Clone the repo\n2. In the same folder that contains the `IceCubesApp.xcconfig.template`, run this command:\n\n```bash\ncp IceCubesApp.xcconfig.template IceCubesApp.xcconfig\n```\n\n3. Fill in the `DEVELOPMENT_TEAM` and `BUNDLE_ID_PREFIX` values. The first should have your Apple Team ID (which you can find by logging into the Apple Developer Portal). The latter is your domain in reverse notation or whatever you use as the prefix for your projects.\n4. Save your changes, and then you should be able to compile the project without any issues.\n","IceCubesApp 是一个基于 SwiftUI 构建的开源 Mastodon 客户端。它支持用户连接到任何 Mastodon 实例，浏览时间线、与其他用户互动以及发布更新和媒体内容。该应用充分利用了 Mastodon 的流式事件功能，实现了实时显示新帖子、编辑和删除帖子等功能。此外，它还提供了独特的标签组自定义时间线和远程本地时间线功能，使用户能够轻松管理并浏览多个实例的内容。IceCubesApp 适用于 iOS、macOS、iPadOS 和 visionOS 平台，特别适合需要在多平台间无缝切换并保持社交网络活跃度的用户使用。","2026-06-11 03:08:48","top_language"]