Loom
- Feature summary (2023-9-4) - (2023-9-10)
General Update
Busy with outside engagements at the moment. Otherwise, last week was focused on optimizations and other stability improvements.
- Action extension to set instance url to any url you find outside of the app (tap a native share icon and then "set instance")
- Works with RSS links / mastodon intances / lemmy instances
- Cancel pending subscription requests
- Ability to copy post urls to clipboard or open posts in safari via more button (three dots).
- Added a "Set Instance URL" button to the hamburger menu to make it easier to find (Can also tap the url on the main feed header).
I will be free again This Thursday. Focused on pushing further stability improvements and nitpicks/ aligning iPad and macOS with their iOS counterpart. And finally starting the inbox/direct-messaging/push-notifications features.
Android
I have gotten a hold of a (low-end) non-foldable Android device. And am experimenting porting this work over. I also have a foldable Android device. So keeping foldable experiences when interacting with media in mind. Do not expect anything functional right now. But, 100% stay tuned for another open-source repo starting the Android version of Loom, fully native/Kotlin. Granite/LemmyKit/FederationKit will be converted over prior to the front-end app being built itself. These repos will become available October-November at the earliest.
----
Meta
Previous Summaries:
Loom: https://github.com/neatia/Loom
LemmyKit: https://github.com/pexavc/LemmyKit
Granite: https://github.com/pexavc/Granite
Testflight: https://testflight.apple.com/join/owwIagmV#
- Action extension to set instance url to any url you find outside of the app (tap a native share icon and then "set instance")
- Feature summary (2023-8-26) - (2023-9-4)
Instead of being strict on Friday updates like this. I will leave it as between Friday and Sunday.
Some features (RSS Feeds/custom feed styles) and improvements will not appear until build
v1.1.0b (2023.9.4)
which should be sent out by tonight PST.Loom: https://github.com/neatia/Loom
LemmyKit: https://github.com/pexavc/LemmyKit
Granite: https://github.com/pexavc/Granite
Testflight: https://testflight.apple.com/join/owwIagmV
----
The 2 notable updates this week is content filtering and integrating FederationKit, which will aggregate not only Lemmy, but RSS Feeds, Mastodon, and more.
> RSS and Mastodon's current integration is just for bookmarks and the main feed at the moment.
I have also added a new option to change the appearance of the feed to a more classic reader feel rather than social app.
| Aggregation Sources (Aside from Lemmy) | | | :-------- | -------: | | !Image | 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. | | !Image | 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. |
| Safety | | | :-------- | -------: | | !Image | 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. Requires an image for inference, which can be generated even without a thumbnail_url property. (As long as a post url itself is available). || Styling | | | :-------- | -------: | | !Image | Intended to allow full user customization in the future. Currently supports a "social app feel" and a "reddit-like reader". |
—
Note:
This week was lots of performance optimizations on the front-end as well as major underlying API changes for communicating with federated networks.
I have not kept iPad and macOS variants up to date (or at least have not tested them thoroughly. In theory they should be at least close to upto date as its the same codebase).
But since there are more testers on iPhone at the moment. I am looking at mobile as the flagship and goal to achieve very high stability and performance up to all iOS 15.4+ devices. I am hoping to bring the other form factors up to speed by the next feature summary.
- Thoughts on a Lemmy instance where content upload is only allowed in-app?
Also the uploads are always using 3rd party with multiple options setting the posts as URL posts. Built around the aspect of not using a pictrs backed lemmy
Some advantages of seeing so far:
- Frugality on storage
- Can secure content that is shared on the instance from the core members
- [v1.1.0b (2023.08.29)] Client-Side Content Moderation
Felt this was important enough to share a mid-week update.
The incoming build will have a new option in settings under a section called
Filtering
.The option is
NSFW Extended
This will run an offline CoreML model that will run through all thumbnails and present media that is SFW. This is based on the data set used here
https://github.com/bhky/opennsfw2
I will always find offline solutions first. The goal is for data to never leave the device when incorporating such solutions.
I will stay vigilant on better and more up-to date solutions. Since this is a fairly new integration, I will also spend time optimizing, but the speed of inferencing is negligible and almost instant, so experience does not seem to be affected.
I have made a new open-source package called ModerationKit, where I will incorporate solutions of any kind to prevent harmful media from entering a user's feed.
2 Notes to be aware of:
-
There is an issue with config restoration per fresh app launch that will be resolved later this week. You may need to re-enable this filter each open.
-
Computer Vision is never a 100% guarantee.
-
- In light of recent news. I am going to look into implementing another failsafe for content NSFW moderation this week.
The solutions I will employ will be on-device, and just be able to provide additional warnings/censorship for posts not marked appropriately and obviously for posts that are incredibly harmful. This is not the type of content I want to be building something to be near. And will do my best to find solutions in preventing such.
- Feature summary upto v1.1.0b (2023-8-25)
v1.1.0b is in Review. Will be available by end of day.
> 1.0.4b was skipped. Since lots of changes were made in Granite, decided to mark v1.1.0 to denote.
Loom: https://github.com/neatia/Loom
LemmyKit: https://github.com/pexavc/LemmyKit
Granite: https://github.com/pexavc/Granite
Testflight: https://testflight.apple.com/join/owwIagmV
| Looms | | | :-------- | -------: | | !Image | Create "Looms" of any group of communities from any instance. Merging their content into a singular feed.|
| Explore | | | :-------- | -------: | | !Image | Visit linked instances when connected to a lemmy server. View small snippets of each and their ping response time. |
| Travelling Modals | | | :-------- | -------: | | !Image | Writing modals can travel with your viewing context. Allowing you to browse content in any stack prior to publishing. |
| Bookmark Syncing | | | :-------- | -------: | | !Image | All your saved posts and comments can be switched between accounts in a dedicated component. |
| Sharing | | | :-------- | -------: | | !Image | Share posts or comments as images. With the intention of supporting QR codes and Engravings in the future. |
| Search | | | :-------- | -------: | | !Image | Either search all, a specific subcategory with sort support. View expanded contents within the view, interacting with content as normal. |
| Profile | | | :-------- | -------: | | !Image | Dynamic threads, despite viewing context. Swipe to reply to comments or tap the more button, to modify, remove, block, etc. | | !Image | Deleting and restoring with toast reactions. | | !Image | Switch accounts, view their profiles, and their scores. |
| Embedded Webview | | | :-------- | -------: | | !Image | Custom JS insertion supported, customizing how webpages are viewed via direct user input is a possibility. |
| Light Mode | | | :-------- | -------: | | !Image | Light mode and Dark mode supported. Refer to the color group in
Assets
to define preferences. | - Loom does not require local network access, this demo video shows what's causing it
Accessing a url with
.local
or127.0
in the domain seems to be requesting this access. I have disabled setting such urls. This is just for the Testflight. Otherwise you can build the iOS/macOS client locally and allow for localhost accessAnother area this can occur is in Search. I am still investigating why/how a request can push this modal through.
I have tested the API endpoint with
local
as a query since posts can either be federated, local or subscribed for instance, but that wasn't causing it. - [Update] v1.0.4b (iOS focused) update in review, short summary
I am prepping a larger overview to cover all the changes made in v1.0.3b, but it is kinda late and still would like to share a quick update.
I feel very satisfied with how all of the underlying packages supporting Loom have gained lots of needed robustness all around. I view this to be close to the real beta. Probably should have called v1-1.0.3b Alpha.
This week, expect lots of refinements that will be much more consumer facing/front-end.
Details:
> iPad and macOS versions will be ready by v1.0.4b (2). Still some things need to be revised.
> Community info view (which triggers subscribe) will be functional again in v1.0.4b(2). It is inactive for this version.
- Share screen shots of comments and posts, auto-generated
- Slideable menu on the main feed
- Keyboard toolbar for quick markdown shortcuts and other quality of life needs. A great little feature to keep adding to in the future.
- Improve speed of modals appearing and navigation overall
- Granite has been updated with a custom navigation stack. I am working on documentation to help share how to utilize this for your own applications. When working with multiple form factors and or client types (iPad/iPhone/mac) I found this solution I incorporated to be simple and powerful.
- Names of Looms are editable again
- Content actions revised and hooked (there's many ways to do things, so I am still making sure I get them all)
- Edit
- Viewing Post content
- Block (Feed)
- Share
- (There are others being worked on or checked for completion, like Report)
- Fixed image uploading, compression occurs prior. This will be customizable in a future update. It is currently targeting 100kb.
- Lots of nitpick adjustments to design overall
Major Known Issues:
- Login and Add Account modals dismiss prematurely. Essentially one won’t be able to login.
- Endless spiral for loading collections of any kind, feed, community listing, post content. Simply refresh to fix it. The issue is known, just haven’t resolved yet.
Lot's more to cover. Wanted to get this build out and start the v1.0.4b journey, as I felt the quality has increased by quite a bit since the initial v1.0.3b.
- [Update] v1.0.3b (build 13)
v1.0.3b (build 13)
What’s New
- UX changes for the Loom UI + Creating Posts
- Setting custom Instance URLs
- Editing posts/comments (only when viewing posts or within profile)
> macOS build will be available soon. iPad-specific optimizations will be addressed in (build 14)
Changes
| Loom UI Moved | | | -------- | ------- | | !Image | The Loom interface moved to the view that was meant for composing posts. Creating posts has been moved to a modal format, triggered by the Loom logo button on the front page. Essentially switching spots. |
| Set Instance URL | | | -------- | ------- | | !Image | Tap the “Front Page” header view text and/or the domain above it, to trigger the set instance url Modal. |
-
You can now edit posts and/or comments when viewing a post or in your profile.
-
UX / design tweaks and nitpicks in various places
-
Further optimizations around state updates, bookmark component performance when switching tabs and settings component’s ability to update profile settings when logged in.
Notes
iOS TestFlight: https://testflight.apple.com/join/owwIagmV
macOS releases: https://github.com/neatia/Lemur/releases
- Update on Community post cadence
The next major update will be set for Friday and the same cadence will be applied for major updates per Friday.
Expect smaller updates throughout the week to focus on various bugs and improving performance on all platforms, macOS + iPad especially.
I will primarily use the Changelog to communicate update details.
Secondary Changelog: https://neatia.xyz/post/281
> New post updates will only be made if there are Major feature changes/entirely new features outside of the current feature-set. Major feature changes means, entirely new flows to execute an existing feature.
- [Update] v1.0.3b(10) for creating "Looms"
Known Issues:
- community list syncing on macOS
- certain micro-interactions
- localization of lots of recently added strings
The last major feature for the "base functionality" build, is mod view. This will turn the interface into a "Mod Mode" where actions on posts/comments/persons/communities will have an additional control panel to apply mod actions. The date of this to be completed, is undecided as I'd like to review the performance around all of the base functionalities again this week.
Registration/uploading JPGs or HEICs is a bit finicky, this will be looked at this week as well.
---
When it comes to features outside of the "Base Scope". I am excited to get to this feature that has been on the GitHub for some time,
Engravings
. This will allow people to "invisibly watermark" their content. Allowing you to verify what content is yours. There are other applications of it, I'd like to experiment with such as creating shareable cards of a user's community, loom, profile, etc.---
iOS Build: https://testflight.apple.com/join/owwIagmV
macOS Build: https://github.com/neatia/Loom/releases/tag/1.0.3b(10)
—
| Looms | | | -------- | ------- | | !Image | Create "Looms" of any community from any instance. Grouping their content into a singular feed
- Next Update: Creating "Looms", merge the feeds of any channel from any instance
Thinking about design a bit more, but overall I really like the idea of being able to do this.
For instance, I wanted to merge some of the music communities in Lemmy.world into 1 feed for a playlist. So making a Loom to act as my little music visualizer for all of those is nice.
Furthermore, there was a user who noted “This is why users need the ability to group multiple communities into supergroups” by @LazaroFilm some time ago. I feel this resolves that.
They also did not like the idea of this setting being platform specific. So down the line, finding a way to create a sorta schema to share with other developers would be cool. Or the other way around, where other developers were to make one, Loom could adopt.
- [Update] v1.0.3b (build 8) - Bookmark syncing + more
- visualizer (“marble”) for youtube videos
- playback controls coming in a future update
- debouncing/throttling logics (LemmyKit updated as well)
- error toasts to communicate content interactions + posting errors
- bookmark syncing (login to sync bookmarks and navigate between local + logged in)
- new content browser
- visualizer (“marble”) for youtube videos
- Next update: Turn any youtube links into a visualizer + player
Adding, prev/next controls to control !music to act as a playlist
- Thinking of adding a PIP mode for macOS/iPad now
Well for macOS, opening in an external window would be cool.
So
- Picture in picture (multitasking outside of app + in app while browsing)
- it would be kinda funny (sorta cool) to have a watchOS counterpart so you can “swipe it” onto your watch for viewing when on mobile.
- actually tvOS airplay makes more sense. Actually, airplay would be a cool browsing experience.
- it would be kinda funny (sorta cool) to have a watchOS counterpart so you can “swipe it” onto your watch for viewing when on mobile.
- open in external window (macOS)
- Drawer/airplay for iOS?
- Picture in picture (multitasking outside of app + in app while browsing)
- Something fun: Shaders + YT music embeds on IPFSgateway.ipfs.io Something fun: Shaders + YT music embeds on IPFS
Something fun: Shaders + YT music embeds on IPFS
- [Update] v1.0.3b (build 6) - Explore + Optimizations
This Update (v1.0.3b(6)):
- explore page.
- locked to linked instances for favoriting, adding and connecting too. (Note: You may have to manually refresh the feed to see the updated perspective.)
- memory issues
- cached preferences will reset again (account, bookmarks)
Next Update (v1.0.3b(7)):
Explore page's community discoveryI feel the accounts page is enough for community page discovery- Registration and Login keychain autofill
Entire 1.0.4b:
- Explore page and community discovery
- Improving sharing content outside of the app
- Registration and Login keychain autofill
- Going back to “Front Page” on desktop/iPad
- Typing custom url to set app’s base instance without logging in
—-
Build is live for iOS (not optimized for iPad yet): https://testflight.apple.com/join/owwIagmV
macOS (not as optimized as the 3D scene is visible too): https://github.com/neatia/Loom/releases/tag/1.0.3b(6)
—
Note:
Still debating whether to move over to the new app bundle id for Loom. May do so after moderation tooling before another public post about Loom in other communities. I am going to keep the current build at
v1.0.3
for a bit so the Testflight updates quickly.Prior to moving onto moderation tooling, I want to experiment with additional caching solutions. I feel this could be a pain point for lots of people hosting small instances. If there’s an app that is inefficiently requesting data over and over. Even though rate limit settings are available, maybe additional work can be done on the client to balance between excessive calls + UX.
- explore page.
- Explore
Work in progress exploration screen for federated servers and uptimes. Going to circle back on a simple UI for the time being to make sure base functionalities are working optimally.
Searching for instances, viewing their local communities, viewing uptimes, and manually entering instance domains, in a basic vertical stack layout.
But, excited to keep working on this Scene/3D space to interact with Lemmy. At least to me, it truly visualizes the impact of open social networks/link aggregators.
- [Update] v1.0.3b (build 5) - Networking
Having neglected networking and resolving comments/posts, I am pushing an interim build prior to 1.0.4b, to improve such.
I feel this should make browsing a bit more smoother and less chaotic/unpredictable.
I have also updated LemmyKit to support this. It’s like “All, Local” viewing types. But, it is not as “Explicit”. Instead using actor_ids or ap_id of a resource to define where to view what from. This can be comments on a post or the community linked via comment/post headers.
Within a community, if entered via a comment header. If it was a peer instance, one can switch between, peer, base (local), and source (where community was created) via the three-dots on the top right.
Build is live for iOS: https://testflight.apple.com/join/owwIagmV
macOS needs a bit more touch-ups, might wait for the 1.0.4b release.
- [Update] v1.0.3b - Optimizations + Explorationgithub.com Release v1.0.3b (macOS) · neatia/Loom
/!\ APP NAME CHANGE: /!\ To not confuse with a previous Lemmy client known as "Lemmur", 2m's. The name has been changed to "Loom". I was unaware (even though it's an easy google search away) of t...
/!\ APP NAME CHANGE: /!\
- To not confuse with a previous Lemmy client known as "Lemmur", 2m's. The name has been changed to "Loom".
This Update:
- Bookmarks trigger Lemmy’s save API NOT just locally stored (iOS/macOS)
- Bookmark ordered in desc. date.
- Optimizing scroll performance, content management, for all platforms. (Still ongoing)
- Memory issues / Improvement of overall UI responsiveness
- iPad's UI (Larger screens, >9") addressed
- Begun Explore tab development, exploring all federated instances and local communities within an interactive experience. Goal is to communicate the idea of federation concepts visually and functionally.
- Added preliminary debug settings. To reset the base instance to Lemmy.world
1.0.4b Next Update:
- Explore page and community discovery
- Improving sharing content outside of the app
- Registration and Login keychain autofill
- Going back to “Front Page” on desktop/iPad
- Typing custom url to set app’s base instance without logging in
---
> Updates can take anywhere from 4 - 24 hours to appear on iOS/iPadOS Testflights, due to review times.
iOS testflight: https://testflight.apple.com/join/owwIagmV
macOS download: https://github.com/neatia/Loom/releases/tag/1.0.3b
- [Changelog] Current Live Build: v1.1.0b (2023.8.25)
iOS TestFlight: https://testflight.apple.com/join/owwIagmV
macOS releases: https://github.com/neatia/Lemur/releases
Constant changelogs paused
in favor of standalone feature summary posts, per version release.--- v1.0.3b (build 15/build 16)
- (Mobile only) Swipe-able menu on feed hosts profile info, blocked view and settings
- accessed by dragging the feed from the leftmost side of the screen towards the center/right side
- tap the three dots to switch accounts, logout, add accounts.
- I am still thinking about the interaction of this menu for the iPad/macOS, switching accounts is disabled on these devices for the time being.
- Community browser moved to looms page
- will be adding alphabetical sorting/scrolling to community browser in the next update
- Explore page is its own dedicated tab, activated 3D globe on iPad
- the 3D globe will be availble on mobile soon. It will visualize the connections while browsing instances. providing further functional details over time
- Search (instance level) is now a dedicated tab, search appears independently (same location as before) when inside a community, searching that community for specific content
- Share posts/comments as an image (only from inside posts triggered from feed or on feed itself for now), (iPhone optimized, will optimize for iPad and macOS for v1.0.4b)
- will add QRCode options/styling
- Improved loading times of the feed, prioritizing provided thumbnails in the response
- Minor design tweaks in various locations
v1.0.3b (build 13/build 14) // (2023-08-17)
v1.0.3b (build 12) // (2023-08-16)
v1.0.3b (build 11) // (2023-08-15) - iOS: Ready | macOS: In Progress
- community resolving bug
- add communities to a loom from the loom button as well
v1.0.3b (build 10) // (2023-08-13) - iOS: Ready | macOS: Ready
- Create "Looms" of communities from any instance to merge their content into a single feed.
- MarbleKit integrated, more FX options to view marbled variations of
- stability improvements around Granite affecting transitions and animations upon cache restores
v1.0.3b (build 9) // (2023-08-13) - iOS: Ready | macOS: Ready
- scrolling to fetch more, just defaults to a try again state, until the investigation for the cause succeeds - solves community picker fetching bugs
- adjustments to profile styling and source of comment threads of other users
- symbols for where comment locations are being fetched from (base, source, peer)
- pager loading animation
v1.0.3b (build 8) // (2023-08-12) - iOS: Ready | macOS: Ready
- blocking
- visualizer (marbler)
- settings design refinement
- cleaned up some code for reusability purposes
- new content browser
- badges/symbols like admin, locked, pinned posts
- networking/caching/debouncing
- proper error toasts
v1.0.3b (build 7) // (2023-08-10) - iOS: Ready | macOS: Ready
- search functionality, regression issue fixed
- comment sorting + new picker selector
- updated randomizer for instances
- feed should reset upon new instance connection
- config settings regression issue fixed
- removed auto correction for add to profiles
v1.0.3b (build 6) // (2023-08-10) - iOS: Ready | macOS: Ready
- explore page.
- locked to linked instances for favoriting, adding and connecting too. (Note: You may have to manually refresh the feed to see the updated perspective.)
- memory issues
- Fixed IPFS key setting
v1.0.3b // (2023-08-06) - iOS: Ready | macOS: Ready
- Bookmarks affect Lemmy's
save
NOT just locally stored (iOS/macOS) - Browse federated servers in an interactive graph and view server uptimes
- Memory issues with recent changes to mac
- Bookmark ordered in desc. date.
NOTES: 2023-08-05
- Massive optimizations and improvements all round. were made. Moving update to 08/06
v1.0.2b // (2023-08-04) - iOS: Ready | macOS: Ready
- Account registration (captcha only)
- Share functionality (macOS)
- iPad Layout mimics the mac variant
v1.0.1b // (2023-08-03) - iOS: Ready | macOS: Ready
- iOS Search functionality (perform search was not firing w/ query)
- Update config/local experience w/o logging in
v1.0.0b // (2023-08-03) - Completed
- base build
- (Mobile only) Swipe-able menu on feed hosts profile info, blocked view and settings