Note: Apologies for duplicate posts; not sure what happened there. I went back and deleted two of them, but if that doesn't federate, please feel free to remove them.
1.5.0
This version is nearly a year in the making, and I'm glad to finally have it out the door.
Major Goals Achieved in this Version
- Give the entire UI a nice overhaul, move more things into reusable components, and generally polish everything up.
- Reduce memory waste by not storing unnecessary/redundant data in components
- Fix as many longstanding bugs and feature omissions as possible.
- Provide additional capabilities for mods and admins
- Give users more control over the content they see.
- Increase the health and safety of the overall platform
- Provide a better "default" experience, especially for new and guest users.
Get Tesseract
- Hosted Instance: https://tesseractui.org/
- Note it now has a dedicated domain 🎉
- Docker:
ghcr.io/asimons04/tesseract:v1.5.0 - Docker:
ghcr.io/asimons04/tesseract:latest - Codeberg: https://codeberg.org/tesseract-ui/tesseract
Screenshots
Screenshots
New Instance Selector

Settings, Filter Policies, Community Groups, and User Tagging

Media Browser

Language Selector and Ability to Browse and Insert Media You've Already Uploaded

New Community Group Manager
Deployment Notes for Admins and Self-Hosters
"Lock to Instance" is No Longer Implicit
In prior releases, locking Tesseract to the configured instance was the default behavior. I asked if this was intentional or just because no one ever strays from the default settings, but absolutely no one replied to that post, so I just made the decision myself.
Now, unless configured otherwise, Tesseract will allow adding accounts from any instance. This is to allow people to easily switch between alts on different instances without having to use a 3rd party hosted version of Tesseract.
If you wish to lock Tesseract to just the configured instance, you MUST set the environment variable to do so:
PUBLIC_LOCK_TO_INSTANCE=true
NSFW Communities are Hidden by Default
By default, NSFW communities (not NSFW posts) are hidden (unless you are an admin a mod).
Users can go to Settings -> Filters -> Communities and uncheck the options to filter/hide those.
If you want to override this behavior, for example, if you're running a dedicated NSFW instance, you may do so by adding the following two environment variables:
PUBLIC_FILTER_NSFW_COMMUNITIES_BY_DEFAULT=falsePUBLIC_HIDE_NSFW_COMMUNITIES_BY_DEFAULT=false
If you want them filtered but not hidden by default, only set PUBLIC_HIDE_NSFW_COMMUNITIES_BY_DEFAULT to false. If you want them fully visible by default, set both to false
This only changes the default settings for new users; existing profiles will keep whatever their current settings are.
Increased Calls to /api/v3/modlog
At minimum, you will see a 4x increase in the number of calls to /api/v3/modlog.
Don't panic! That behavior is, counter-intuitively, intentional. However, if you have restrictive rate limits, you may need to account for this (I've tested on several different instances and have not had any problems).
Why? It is currently faster and less resource intensive to make four scoped requests to
getModlogthan it is to request the full modlog in one call. Additionally, old and irrelevant actions that aren't performed frequently (transfer community, add/remove mod, etc) are not cluttering up the modlog results.On average, and tested against multiple instances, this seems to be about 40% faster than requesting the full modlog in one go.
By default, the modlog now only looks up the following actions (and their opposites):
- Ban Instance
- Ban Community
- Remove Post
- Remove Comment
Those are the most frequently needed calls, and when the modlog loads, it does 4 simultaneous requests scoped to each of those actions.
If you need the full results, there is an option on the modlog page to switch to searching it in full which will use the "classic" behavior. Additionally, if you are only interested in a specific action type, selecting that action will scope the modlog lookup accordingly without having to do a full query.
Bugfixes
Note that the bugfixes mentioned here are only ones that didn't involve a rewrite of the underlying components. Lots of other bugs were fixed in the process of refactoring and re-implementing (and probably new bugs created :sigh:)
-
Performance optimizations: Some sub-components that made up the Post component still had full embedded modals inside rather than triggering the system modals to open and load the data on-demand. Moving these integrated modals out reduced CPU and memory consumption. Additionally, redundant and/or usless data in community, user, post and comment items (such as full copies of the community sidebar, redundant Person info, etc) are discarded before rendering components.
-
"Scroll to Top" in footer of comment section was not justified correctly.
-
Sometimes when viewing a single comment therad and then clicking "View Full Thread" to load the comments in full, they wouldn't load due to a race condition.
-
Not really a bug, but sometimes when clicking "Load X More..." under a comment that appears to have more replies, a warning would show up that none were returned. This is most often because the next-level reply is by someone you've blocked or has been removed by a moderator. The warning toast message is now more descriptive to indicate this.
-
Feed "jumps" sometimes in Firefox.
- I thought I had this fixed but started seeing it again. Basically when the infinite scroll buffer fills up, it removes older posts from the beginning of the buffer. Most of the time, this is invisible. Occasionally in FF it would trigger unwanted reactivity and cause the feed position to jump down.
- Removed that buffer entirely and keep all posts
-
"Limit Comment Height" feature was buggy and didn't always show the expand/collapse button. Just removed this feature since the div height of the comment body isn't reactive enough to make this work reliably.
-
If there was an API error during a mod action from the mod modal, the spinner remained and the button stayed disabled
-
Edit community group modal did not close properly after save or delete
-
"Block User" action in the user profile modal now has a confirmation step.
-
Better error handling in user profile modal when user is not found
-
Fixed weird gap between "Search for Alts" and "Modlog History..." in user profile modal.
-
User Profile Modal and User Feeds: Don't display type/sort selectors, search field, or pagination buttons if user fails to load or is not found
-
Known badge images are now rendered and linked properly without being resized and rendered as a zoomable image.
-
Added support to add "badge" to markdown image syntax to prevent it from being rendered like a regular image
Which is simiilar to how custom emojis are formatted.- Other clients should ignore this
-
"Mark Post as Read on Scroll" feature has been changed. Instead of marking them as read on scroll, it will mark the whole batch as read upon load. If the option to fade read titles is enabled, they will be faded on the next load.
-
The search page was a dumpster fire. Completely re-wrote it.
-
Fixed Loops lookup after the project updated it's web UI (more below in the "Deprecated: Legacy Loops Support").
-
User->Settings->TOTP Setup: Don't generate secret/QR code until modal is opened.
-
Fixed missing loading indicator when denying a registration application.
-
Searching for alts within the user profile modal will now let you tweak the search term and search inline (e.g. to remove trailing numbers, etc)
-
If currently connected instance is down, application no longer fails to load. Also allows you to switch to an alt.
-
Attempted to work around the 300 comment limit bugs 4543 and 5861 but found a new bug in that when switching from
max_depthtolimitandpage, no page number above 10 will work. In theory, that would let Tesseract display up to 500 comments instead of 300, but due to duplicates, the actual number is only a bit larger than the 300 limit used withmax_depth. Given the additional complexity of making parallel calls togetComments, merging those results, and error handling each, I've opted to revert back tomax_depthand live with the 300 comment limit until it's addressed at the API level. -
Markdown images are now full-width and height-bound.
-
Squash notification and mark replies and mentions as read if you've voted on them.
-
Badge images (img.shields.io, etc) are attempted to be accounted for and exempted from being turned into standard markdown images.
- To always have them show unprocessed, add
"badge"to the title portion of the image markdown code (similar to how emojis have"emoji"for the title text). - e.g.
 - Any image that is the "text" component of a hyperlink will also render unprocessed and should not need the
"badge"text (though it wouldn't be a bad idea to include that anyway). - e.g.
[](https://example.com/stats.php)
- To always have them show unprocessed, add
-
Re-implement MBFC modal using the standard shallow-routing system modals. Re-base modal into system modal container and no longer embed it within the MBFC badge.
Infrastructure
Upgraded NodeJS Runtime
Updated NodeJS runtime from 22 to 25
Breaking Changes
I tried to make the transition and internal migration to the new filter framework as seamless as possible, there is at least one breaking change.
Your filter keywords are now processed as regexes. In most cases, this won't affect you at all. However, if any of your keywords have punctuation marks or any characters that are regex modifiers, then the keywords may not work as expected:
- It may be invalid when converted to regex. In which case, it will gracefully fail and be skipped.
- It may compile to a valid regex, but not have the intended effect (e.g. may throw false positives).
After your first load of 1.5.0, your existing community, user, and keyword filters will have been automagically migrated to the new format. You should double check the keyword filters by going to Settings -> Filters -> Keywords and checking for any that use non-alphanumeric characters.
Image Proxy Deprecation Notice
The current image proxy/cache is being deprecated due to piss poor performance under load. It is still as functional as it ever was, but will not receive any further work. If/when it breaks, it will be removed. I am likely going to reimplement it as a separate service that doesn't share the event loop with the main application.
Legacy Loops Support Deprecation Notice
Loops is still supported. However, the Loops project has started providing the correct video tags in the OpenGraph data when looking up the metadata, so the embed video URL is now available by default. The result is that there is no longer a need for a dedicated Loops rendering component since the embed video URL allows it to work correctly with the standard Video render component.
However, for any posts linking to a Loops video prior to that, there is no embed video metadata so the Loops component still needs to lookup the video URL on the fly.
I've updated the metadata lookup API in Teseract to extract the video URL from the newly available OpenGraph tags. Older Loops posts will need to use this. This should be a viable long-term solution assuming they don't disallow remote embeds at some point.
Since Loops now provides the embed video data directly, I'm marking the dedicated Loops component as deprecated and will no longer be maintaining it. It will remain for the foreseeable future so older Loops posts can work, but if it breaks at any point (or if I redo the renderers again), it'll be removed rather than fixed/updated.
The good thing now is that Loops support is no longer limited to the main "loops.video" instance since I no longer need to identify a post as "Loops" in order to fetch the metadata.
"Save Settings to Lemmy" Removed
Previous versions let you abuse the theme field in your profile to store a copy of the Tesseract settings. This was extremely useful, especially to sync settings between devices.
Sadly, all good things must come to an end. That trick is still possible, but with the expansion of the filter policies, the user tagging, and groups now having the ability to attach a filter policy, there is just too much JSON to try to cram into that field.
I'm working on a way to save those to the Tesseract server itself, but it's only at the planning stages at present.
For now, the only way to transfer Tesseract settings is exporting to JSON, copying the export, and importing it to the new device/browser.
New Features
User Tagging
You can now add an arbitrary number of tags to any user. Tags are limited to 25 characters and can also be used with the filter policies explained below.
Tags can be managed from Settings -> Tags
Community Grouping
This feature has existed for a while, but it got a facelift and overhaul in this release. You can now select icons, search within groups, and there's better integration with the rest of the application.
Additionally, groups can have filter policies attached to them which gives you really fine-grained control over the content you see in them.
Groups can be managed from Settings -> Groups or by clicking the "Folder" icon in the community profile modals.
Filtering Subsystem Rewrite and Enhancement
This is definitely the most involved new feature in this version and largely responsible for the lengthy development time.
The filtering subsystem has been completely re-written and is much more granular and much more powerful.
There are now two levels you can filter: globally and per community group.
Previously, the filtering was global and the terms "filter" and "hide" were used interchangeably, but in this release, "filter" means the content is still visible but collapsed into a stub you can expand to see. "Hide" means the UI will not show it at all.
Additionally, the filters can now be used without being logged in. So if you want to browse as a guest, you can tailor your experience just the same as you could if you were logged in.
Global filters apply to everything and behave like the filters in previous releases. Use these for things, people, keywords, domains, instances, or platforms that you never, ever want to see.
Community group filtering has the same options as global filtering, but those are only applied to communities that are members of the group you've defined.
Filtering Mechanisms
- Filter and/or hide accounts by minimum age
- Filter and/or hide bot accounts
- Filter and/or hide posts you've downvoted
- Filter and/or hide NSFW posts
- Filter and/or hide NSFW communities
- Hide removed comments in the comment section
- Filter and/or hide your deleted items (in the feed and profile)
- Filter and/or hide posts with a negative score (threshold is configurable from -1 to -30)
- Filter and/or hide comments with a negative score (threshold is configurable from -1 to -30)
- Filter and/or hide content from users that have specific tags
- Filter and/or hide users. Users can be added to the policy directly, by regex pattern, and/or by instance
- Filter and/or hide communities. Communities can be added to the policy directly, by regex pattern, and/or by instance
- Filter and/or hide content by keyword. Keywords are evaluated as regex patterns, so you can get really granular here.
- Filter and/or hide content by instance or platform. Hide all content from specific instances or even entire platforms such as Mastodon.
- Filter and/or hide posts that link to specific domains. Domains can be wildcards such as
*.example.comand there are quick toggles for common domains that have multiple records such as Bluesky, Facebook, Reddit, Twitter/X, and YouTube. - Filter and/or hide content that is not flagged with the specified languages. This is most useful at the community group level as it allows you to limit content in those groups to a specific subset of the languages selected in your profile.
- Add users, user regex patterns, communities, and/or community regex patterns to a list of exceptions where the policy rules are ignored.
Notes:
- If you've opted to hide things in the policy, then any inbox item that the policy flags (post/comment reply, mention, and/or DM) will be hidden and won't trigger the notification indicator. You can/will still see those in other clients as they won't hide them, and if you're sending notifications to email, they will still come through. The filtering is only within the Tesseract UI.
- Policies do not interact with one another. If a submission matches multiple policies (multiple group policies and/or your global policy), the most rectrictive action wins. So if you've filtered the keyword "Moustache" in your global policy and told it to hide matches, then any group-level keyword matches will be hidden even if those policies are set to only filter.
- Filtering works a little differently for mods and admins. See the "Mod/Admin Tools" section below for details.
Example Filter Policy Usage
Example 1: Making a (mostly) politics-free meme experience
This combines the use of user tags, community groups, keywords, and instance filtering.
- Add all the meme communities to a group and enable the option in the group to use it as a filter group
- Populate the keyword list in the policy with all the hot-button words that apply
- Add specific users to the policy that only ever seem to post politics. If they use several alts with the same name on different instances, use a regex instead.
- As you're browsing, tag users who are "always on" and can't seem to help themselves from injecting politics into everything.
- Add the "always on" tag to the meme group policy.
- If everyone from the instance
example.comis preachy in the meme communities, addexample.comto the policy under the "Users -> Instances" tab to filter all users from there. - If all the meme communites from
example.mlare preachy propaganda, addexample.mlto the "Instances" tab. - On each section (Users, Instances, Domains, Tags), set the "filter" or "hide" action as desired.
- Enjoy a better feed :)
Example 2: Hiding News and Politics with the Ability to Quickly Turn Them Back On
Add all of the news and politics communities to a group aptly named "News and Politics". If you need a break, edit the group and turn on the switch to make it a filter group. Optionally choose to completely hide those communities.
When you're ready to jump back in, edit the group again and turn off the "filter group" option.
Mentions and Direct Messages Can Be Disabled
In Settings -> Inbox there are two new options that will let you disable mentions (when some one @'s you) and/or direct messages.
When enabled, the following things happen under the hood:
- The item is silently marked as read when Tesseract polls for new notifications.
- The inbox notification is suppressed and doesn't factor into the unread count
- The item is not shown in the inbox
- The "Mentions" and/or "Direct Messages" tabs in the inbox are hidden
- When direct messages are disabled, the "Send Message..." option in the user profile modal is disabled.
- Other notifications are processed normally.
Note that the notifications are all still in your inbox. If you access your accont from another app, you will see them. If your account is configured to send notifications to email, you will still receive those. The items are only hidden in Tesseract.
Media Browser
You can now browse your uploads from your profile. Currently image and video uploads are supported and rendered correctly. I'm not sure how audio will work as I've not been able to test that.
Selecting an upload from the gallery will expand it and give you a few options:
- Copy a link to the image
- Delete the image
- Search for the image. Lets you find posts/comments where you used it and is good to do before deleting an image.
- Set it as a favorite for quick access later.
Select from Exising Media in Posts/Comments
When you're posting or commenting, the image button is now a menu. You can upload a new image or choose from your exisiting uploads. Selecting the latter will open the media gallery in a modal. When creating a post, you can only select one item for the post image, but when in the post body or commenting, you can select multiple.
Select the image(s) from the gallery, click "Insert...", add any alt text, and then insert it.
If you have anything in your favorites (reaction images, etc), you can click to the "Favorites" tab to access them quickly.
Progress Toolbar in the Infinite Scroll Feed
Okay, not really sure what to call this, but every so often in the feed, the system will insert a toolbar with buttons that will scroll you back to the top of the feed, refresh the feed, or truncate the feed to your current position.
"Refresh" and "Scroll to Top" are pretty self-explanatory. "Truncate" is the main reason for this toolbar.
When you truncate the feed, it removes all posts above the toolbar. This frees up memory and helps keep the app snappy. Otherwise, all post objects would still be listening for events (such a responding to view changes, filter policy updates, etc).

Clicking "Truncate" there removes all posts in the feed above the bar (ones you've already scrolled past, and your current position becomes the top of the feed.

Improved Block Management
Blocked users, communities, and instances are now alphabetized for easier review.
You can also search/filter your blocks to quickly find someone (or a communtity/instance) you wish to unblock.
There is also a meta filter you can search:
!bannedwill filter the list for blocked users who have been banned.
I only have anecdotal evidence, but it would make sense that it puts less load on the Lemmy server when there are less blocks to process when generating the feed or comment tree. Thus, removing banned users from your block list can potentially reduce load and lead to better performance.
Post Spoiler Flairs
If a post has the flair [spoiler] in its title (case insensitive), then the post body will be hidden behind a "click to reveal spoiler" overlay similar to the NSFW overlay blur.
Please stop abusing the NSFW tag for spoilers.
New View: Wide-Hybrid
Same as "hybrid" view but full-width. The same configuration you have setup for "hybrid" view will be used here except the feed margins will be disabled.
Language Selection and Management
Users
- You can now manage your discussion languages in your profile settings. The available languages are limited to those set at the server level. e.g. If your instance only allow English, French, and Spanish, those are the only three that will be available to select.
- You can now define the language when creating/editing posts and comments
- The allowed languages for a community are now shown in the sidebar.
- Note: Only on the community page. When on a post page with the community sidebar, the allowed languages are not available from the API without doing a separate call which is inefficient.
- The site's configured languages are now available in the site sidebar
Mods
- You can now set the allowed languages in the community settings. As with the user's languages, the list of available languages is limited to only those enabled by the site admins.
Admins
- The site-level discussion languages can now be configured from the admin panel at
Admin->Languages
New Font: Atkinson Hyperlegible
Saw mentions of this font going around, checked it out, and I like it. It seems to be designed for visually impaired, but it also helps dyslexics such as myself without being as wonky-looking as OpenDyslexic (no offense to OD's creators).
This is also the new default font for the application.
Post / Comment Tag Bar
At the bottom of posts and at the top of comments, there is a bar that will show any community groups, user tags, language, and software platform indicators. Each of those is configurable in Settings -> Posts and Comments -> Post Tags Bar.
The communitiy group indicator(s) are clickable to edit the group. Regular groups are green with a folder icon, and filter groups are black/white with a funnel icon.
User tags are a "person" icon and are not (currently) interactive.
The "Banned from Community" badge will show if you are banned from the post's community. Clicking it will take you to the modlog entry.
No More Thorns in Your Side
All þ characters are converted to th. The people who like to do this are obnoxious, and it stops now. I'm willing to deal with the 1 in a million false positive.
Defederation Indicator
Community and user cards will indicate if the item's home instance is defederated from your instance. The create post and other action buttons will also be disabled.
Blind Voting
When blind voting is enabled, scores will be hidden until you've cast a vote. This encourages you to both vote/participate as well as to vote based on the content without being influenced by the current score. While I'm not naive enough to think this will competely prevent dogpiling and bandwagon voting, it is a step in the right direction for those who choose to enable this option.
This can be configured in Setitings -> Posts/Comments -> Voting -> Blind Voting
Blind voting only applies for logged-in users who are not bots or banned from a community. Guests or accounts who cannot vote on a submission (bots, banned from community, etc), will always see the scores (unless show scores is disabled) as they cannot vote to trigger the reveal.
Admins: Enabling Blind Voting by Default
If you want to have blind voting enabled by default, you can set the following environment variable:
PUBLIC_ENABLE_BLIND_VOTING=true
Forcing Blind Voting
If you are running Tesseract for your instance and want to force blind voting to always be enabled, you can add the following environment variable to your deploy config:
PUBLIC_FORCE_BLIND_VOTING=true
When this env var is set, the blind voting option will be hidden and always active. This does not require the PUBLIC_ENABLE_BLIND_VOTING variable to be set.
Note: Blind voting only works when you are loggged in. When browsing as a guest, scores will be shown unless the option to hide scores is enabled.
Post Reply Muting
You can now mute replies on up to 25 posts. The option is available from the post action menu (three dots at top of post). Any replies to those posts will be silently marked as read and not included in the notifications. You will still see those replies in the inbox, but they'll be marked as read leaving your "unread" inbox clean for replies you are interested in. Muted posts have a "Muted" badge in the title to indicate that reply notifications will be discarded.
This also applies to comments on the muted post. For example, if you comment under your own post and then mute replies to that post, any replies to your comment will also be muted.
Behavior
- If it is your own post, you will not receive notifications for any replies to the post while it is muted.
- If it is someone else's post, you will not receive notifications for any replies to your comments to that post
Why Only 25 Posts?
Currently, the post reply muting list is stored along with the rest of your filter policy. This means it has a hard 5 MB limit due to using LocalStorage in the browser. Additionally, since your filter policy applies to all accounts in the application, the post's ActivityPub ID has to be used as the identifier rather than the post ID (to support accounts on different instances). Storing the ap_id string instead of the post id number increases storage use.
The muted post list acts like a FIFO: When you've already got 25 posts muted, the oldest will be un-muted to make room for the current one.
25 was chosen more or less arbitrarily. The point of this feature is not to give you the ability to post without having to get feedback (that's spam/bot behavior). It's to allow you to stop receiving notifications when the replies to a particular post go off the rails or start to get stale and repetitive (without resorting to deleting the post or mashing "mark all as read"). Usually after a day or so, that calms down, so if it becomes unmuted later, it might actually be a reply you want to see.
Re-Added Image Upload Proxy to the Tesseract API
Note that this is separate from the general purpose image proxy.
Some instances throw CORS errors when interacting with the pictrs endpoint to upload or delete images from a non-origin domain (e.g. a 3rd party hosted version of Tesseract). I re-implemented the upload proxy that was removed several versions ago and set it to act as a traansparent fallback if the direct image upload fails. I also added a proxy handler for deleting images as those were also getting blocked by CORS in some cases.
Search Revamp
The search has been revamped and no longer tries to be "too much". I took out the infinite scroll, moved the search scope filters out of the secondary navbar and into the page, and greatly simplifed the logic. And it works so much better. It also has the option to search for post URLs now.
The site/community search bar at the top of the app has also been enhanced.
-
Will detect activity pub URLs, resolve them, and take you directly to the content while skipping the actual search. This lets you quickly load a user/comment/community/post from a federated link. (e.g. paste in an actor ID for a user, and it takes you straight to their profile page. Paste in a post activity pub URL, and it will take you to the local copy of that post.)
- Also works with both Lemmyverse and Threadiverse links for users, communities, posts, and comments. Haven't added LemShare yet since it uses a different format. Also not sure how widely-used LemShare is, so may not add support.
-
Search type prefixes to set the search type. You can now prefix the search query to set the search scope from the search box:
@user {query}: Searches only for users with the given query string@users {query: Alias for@user@community {query}: Searches only for communities with the given query string@communities {query]: Alias for@community@post {query}: Searches only for posts with the given query string@posts {query}: Alias for@post@comment {query}: Searches only for comments with the given query string@comments {query}: Alias for@comment@url {query}: Searches only for posts which have the provided URL as the post link
-
Search scope modifiers can scope the searches to local, all, subscribed, and/or only your submissions.
@all {query}: Searches everything. Default behavior and@allis currently kind of useless@local {query}: Scopes the query to only local ites@subscribed {query}: Scopes the query to only communities to which you are subscribed.@me {query}: Scopes the search to only items you have submitted
-
Set the desired sort direction
@old {query}: Sorts by oldest first@new {query: Sorts by newest first
-
Special searches:
@localuserswill list all local users. Does not take any search parameters. To search for a local user, use@local @user keywordinstead. Can only be combined with@oldor@newto control the sort.@alluserswill show you all known users on your instance.
Example Search Queries
-
https://example.com/post/12345will automatically resolve and then take you directly to the local copy of that post. -
https://example.com/u/aliceWill automatically resolve Alice and then take you directly to her profile page. -
@users bob: Will search for users that have "bob" in their username or display name. -
@community DogsSearches for any community that has "dogs" in its name or display name. -
@posts New York CitySearches only for posts containing New York City -
@comments New York CitySearches only for comments containing "New York City" -
@url https://example.com/foo/bar.htmSearches for any posts that link to exactlyhttps://example.com/foo/bar.htm
Combining Scope Modifiers and Search Prefixes
The scope modifiers can also be combined with the search prefixes.
-
@me @local @comment Captain Picardwill only search for comments you've made to local communities containing the text "Captain Picard" -
@me @local @old @comment Captain Picardwill only search for comments you've made to local communities containing the text "Captain Picard" sorting by oldest first. -
@me @local @new @comment Captain Picardwill only search for comments you've made to local communities containing the text "Captain Picard" sorting by newest first. -
@local @comment Captain Picardwill search for any comment containing "Captain Picard" only on local communities -
@local @users Picardwill search for any local users that have "Picard" in their username or display name -
@subscribed @posts Picardwill search only communities to which you are subscribed and return only posts containing "Picard" -
@posts picard @subscribed @local @mewill search for any posts containing "Picard" and scope it to only posts you've made to local communities to which you are subscribed. -
@local @communities Star Trekwill search for any local communities that contain "Star Trek" in their names. -
@communities Star Trek @subscribedwill search for any subscribed communities that contain "Star Trek" in their names. -
@communities Star Trek @subscribed @localwill search for any local subscribed communities that contain "Star Trek" in their names. -
@local @url https://example.com/foo/bar.htmlwill search only local posts with the given URL.
LemVotes Integration
It was requested to add a LemVotes link to posts/comments. I was initially against it, and still am, but decided "what the hell?" and added it anyway.
Post and comment action menus now have a "See Votes" option that will search for the item at lemvotes.org.
Since this is an external service, the only guarantee I can make is that the correct AP ID is being sent. Whether it finds the content or is working is out of my control.
Note: Right now, it loads in a modal in an iframe. If that tool ever changes to prohibit embeddng in an iframe, it will have to be turned into an external link.
Mod/Admin Tools
Banning/Unbanning Multiple Communities
In the previous releases, you could only ban a user from a single community or all communities. This is now more granular, and you can select individual communities for the actions. The expiry, remove content option, and reason are used for all actions as before.
Admins Area: Local User List
In Admin -> Local Users you can now list your instance's users. Since this is limited to what I can do with the /api/v3/search endpoint, the only sorting opitons are Old and New. You can also search for a local user from within this section.
Use Cases:
- Keep an eye on new signups. It will show the number of posts and/or comments they've made
- Take action against or interact with an account. Clicking their username will open the User Profile Modal for their account giving access to various tools such as their modlog history, submission history, ban/unban tools, vote aggregate history, and messaing options.
- Check the status of any local account
Send a Welcome Message During Registration Approvals
You can now opt to send a welcome message via DM to newly approved accounts as part of the application approval process. Send a "welcome aboard" message, a getting started guide, or anything you feel might help new users get up and going with their account.
As with the application denial reason, you can set a template to load into this in Settings -> Moderation -> Registration Approval Welcome Message Template
Search for Alts in the Registration Application Menu is Now Localized
Rather than the "Search for Alts" button taking you to the search page in the previous releases, it now loads in a modal so you do not have to leave the application page.
Additionally, you can click on any alt from the results to load that alt's user profile modal in order to check post/comment history or modlog history. Very useful for vetting new accounts before you approve the application and doesn't require leaving the application workflow.
Set Site Content Warning
Both the field to set the content warning contents and a method of dipslaying it were both missing in prior releases.
As of 1.5.0, if any text is saved to the "Content Warning" field, then a modal will appear for all users the first time they visit the site. The modal will be shown in place of the UI until the visitor acknowledges it.
Defederate (or Re-Federate) Instances from the Instances Page
Rather than manually putting instance domains into the admin panel, admins will see a "Defederate" or "Re-Federate" button on instances listed on the /instances page.
Absolutely Amazing work here. Tesseract should strongly be considered as a default UX.