{"id":13769647,"url":"https://github.com/neatia/Loom","last_synced_at":"2025-05-11T02:33:11.395Z","repository":{"id":185536150,"uuid":"673636569","full_name":"neatia/Loom","owner":"neatia","description":"A iOS and macOS client for the fediverse. Written in SwiftUI.","archived":false,"fork":false,"pushed_at":"2024-08-25T05:53:37.000Z","size":12723,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-09-07T05:22:58.002Z","etag":null,"topics":["client","federation","ios","ipfs","macos","swift","swiftui"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/neatia.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["pexavc"],"ko_fi":"pexavc"}},"created_at":"2023-08-02T04:52:10.000Z","updated_at":"2024-09-07T02:50:13.000Z","dependencies_parsed_at":"2024-08-03T17:02:33.350Z","dependency_job_id":"c4813c78-ed76-4b04-98ac-f8eaf339d8bb","html_url":"https://github.com/neatia/Loom","commit_stats":null,"previous_names":["neatia/lemur","neatia/loom"],"tags_count":20,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neatia%2FLoom","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neatia%2FLoom/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neatia%2FLoom/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neatia%2FLoom/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/neatia","download_url":"https://codeload.github.com/neatia/Loom/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225004656,"owners_count":17405655,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["client","federation","ios","ipfs","macos","swift","swiftui"],"created_at":"2024-08-03T17:00:30.078Z","updated_at":"2024-11-17T05:31:23.730Z","avatar_url":"https://github.com/neatia.png","language":"Swift","funding_links":["https://github.com/sponsors/pexavc","https://ko-fi.com/pexavc"],"categories":["Projects"],"sub_categories":["Mobile / Desktop apps"],"readme":"\u003cp align=\"center\"\u003e\u003cimg src=\"Resources/README/logo.png\" height=\"120px\" /\u003e\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eLoom (iOS \u0026 macOS) Beta\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"Resources/README/header.gif\" width=\"90%\" /\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003eAggregating aggregation. Providing everyone with a premium experience when interacting with federated servers. Meanwhile, providing view libraries and solutions for others to implement their own interpretations in the Apple ecosystem.\u003c/p\u003e\n\n## WARNING\n\n- If Loom requests for \"Local Network Access\" it is because a neighboring server is using a localhost equivalent address. It is not because of the application itself. So please DO NOT ALLOW ACCESS. (unless you are expecting it).\n\n## Requirements\n![Swift Compatibility](https://img.shields.io/badge/Swift-5.9%20%7C%205.8%20%7C%205.7-orange?logo=swift)\n![Platform Compatibility](https://img.shields.io/badge/Platform-iOS%20%7C%20macOS-blue)\n[![License](https://img.shields.io/badge/License-MIT--Clause-orange.svg)](https://opensource.org/license/mit/)\n\n\u003e My local environment: Xcode 14.2 or later // macOS (Intel) 12.6 or later // iOS 15.4 or later\n\n## Disclaimers\n- Due to the nature of possible state schemas being changed. Saved data such as account information or bookmarks may be removed in future release versions (or not at all).\n- Keychain access warning. Keychain is only used for STORING your passwords and nothing else.\n\n## Features\n- Translated into 28 languages (MTL)\n- Bookmarks are locally stored for offline viewing\n- IPFS Content generation (Add your own config, gateway, etc)\n- Login, Create Posts, Comments, Interact, update profiles as normal\n\n| Expanded Layout (iPad/macOS)   | |\n| :-------- | -------: |\n| ![Image](Resources/README/1.gif) | [Granite](https://github.com/pexavc/Granite) supports macOS. Same navigation API can direct window spawning or navigation stack pushing. |\n| ![Image](Resources/README/2.png) | Spawn multiple windows of entire feed layouts with multiple communities to observe. Will be helpful in the case of moderating multiple communities for instance. |\n\n| Looms    | |\n| :-------- | -------: |\n| ![Image](Resources/README/3.gif) | Create \"Looms\" of any group of communities from any instance. Merging their content into a singular feed.|\n\n| Explore    | |\n| :-------- | -------: |\n| ![Image](Resources/README/4.gif)  | Visit linked instances when connected to a lemmy server. View small snippets of each and their ping response time.   |\n\n| Aggregation Sources (Aside from Lemmy)    | |\n| :-------- | -------: |\n| ![Image](Resources/README/5.gif)  | RSS feeds can be pulled when setting the instance URL to a valid endpoint. Pagination is not currently supported, but will be in the future. Looking at supporting Atom/JSON streams as well.   |\n| ![Image](Resources/README/6.gif)  | Mastodon feeds can be pulled when setting the instance URL to a valid mastodon instance. Pagination is not currently supported, but will be in the future. Interactions are disabled for the time being `2023-9-4`.   |\n\n| Safety    | |\n| :-------- | -------: |\n| ![Image](Resources/README/7.gif)  | On-device CoreML models + keyword filtering to remove posts from the feed. `NSFW Extended` will remove posts that are detected as NSFW even if they are not flagged as so.     |\n\n| Styling    | |\n| :-------- | -------: |\n| ![Image](Resources/README/8.gif)  |  Intended to allow full user customization in the future. Currently supports a \"social app feel\" and a \"reddit-like reader\".   |\n\n| MD helper  | |\n| :-------- | -------: |\n| ![Image](Resources/README/9.gif) | Keyboard toolbar provides easy to access shortcuts on iPhone/iPad to help with Markdown formatting. |\n\n| Travelling Modals    | |\n| :-------- | -------: |\n| ![Image](Resources/README/10.gif)  | Writing modals can travel with your viewing context. Allowing you to browse content in any stack prior to publishing.   |\n\n| Bookmark Syncing    | |\n| :-------- | -------: |\n| ![Image]()  | All your saved posts and comments can be switched between accounts in a dedicated component.   |\n\n| Sharing    | |\n| :-------- | -------: |\n| ![Image](Resources/README/11.gif) | Share posts or comments as images. With the intention of supporting QR codes and *Engravings* in the future. |\n\n| Search    | |\n| :-------- | -------: |\n| ![Image](Resources/README/12.gif) | Either search all, a specific subcategory with sort support. View expanded contents within the view, interacting with content as normal. |\n\n| Profile    | |\n| :-------- | -------: |\n| ![Image](Resources/README/13.gif) | Dynamic threads, despite viewing context. Swipe to reply to comments or tap the more button, to modify, remove, block, etc.  |\n| ![Image](Resources/README/14.gif) | Deleting and restoring with toast reactions. |\n| ![Image](Resources/README/15.gif) | Switch accounts, view their profiles, and their scores. |\n\n| Embedded Webview    | |\n| :-------- | -------: |\n| ![Image](Resources/README/16.gif) | Custom JS insertion supported, customizing how webpages are viewed via direct user input is a possibility. |\n\n| Light Mode    | |\n| :-------- | -------: |\n| ![Image](Resources/README/17.gif) | Light mode and Dark mode supported. Refer to the color group in `Assets` to define your own preferences for each. |\n\n\n\n\n## Contributing\n\nLoom uses [Granite](https://github.com/pexavc/Granite) as a backing for components and services. The Components folder in this repo serves as a good example for many future components that may be needed. Any suggestions on Granite or other component layouts as a whole is greatly appreciated. Always feel free to open a PR and/or Issue.\n\nAn interactive websites to generate boilerplate components using a GUI to define styling and needed state properties is in the works! This will allow you to simply download the generated component and drag into XCode for immediate use.\n\n### Why Granite?\n\nMostly because of *Relays* and project organization. I'd say testing too, but once I get around towards writing the unit tests, I'd feel more confident in sharing the strengths then. These work like @Observables/@AppStorage, but are more flexible in initializations and caching data. The ability to simply declare relays in any `View` or `GraniteComponent` allows for a more effective iterative process and cleaner context passing throughout the application.\n\n```swift\n@Relay var configService: ConfigService\n```\n\n## Swift Packages\n\n- [Granite](https://github.com/pexavc/Granite)\n- [MarqueKit](https://github.com/pexavc/marquekit)\n- [MarbleKit](https://github.com/pexavc/marblekit)\n- [ModerationKit](https://github.com/pexavc/moderationkit)\n- [FederationKit](https://github.com/neatia/federationkit)\n- [IPFSKit](https://github.com/pexavc/ipfskit)\n- [NukeUI](https://github.com/kean/nuke) Thanks to [@kean](https://github.com/kean)\n- [MarkdownView](https://github.com/pexavc/MarkdownView) Thanks to [@LiYanan2004](https://github.com/LiYanan2004)\n- [KeyboardToolbar](https://github.com/simonbs/KeyboardToolbar) Thanks to [@simonbs](https://github.com/simonbs)\n\n### Contact\n\n- [Twitter @pexavc](https://twitter.com/pexavc)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneatia%2FLoom","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fneatia%2FLoom","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneatia%2FLoom/lists"}