- cross-posted to:
- lemmyapps@lemmy.world
- cross-posted to:
- lemmyapps@lemmy.world
This is a very big release since v1.31.4. If you’ve used phtn.app, you won’t notice a difference, since that runs on the latest commit.
TL;DR
- Photon has been completely rewritten to use Svelte 5
- This brings significant performance improvements
- The UX has been changed to fit Photon’s philosophy more closely
- Many issues have been resolved and bugs fixed
- 60% of changes are under the hood, but there’s many visible ones too
What you’ll notice
Snappier performance
- Svelte 5 optimizes a lot of the reactive parts of the app
- I’ve also spent a lot of time on a new virtualizer, which runs a lot faster
Design changes
- While the overall layout is relatively the same, I’ve reworked a lot of pages to fall more in line with my design philosophy.
- The design across (most) pages is much more consistent
- There’s a new default theme
- Compact mode is now the default (if you’ve used photon before, this will not affect your setting)
- Comment layout is slightly different and more intuitive
- Modals now create a backstack so you can press the back button on your browser
New features and options
- More moderation features
- Quickly view users’/submissions’ moderation logs
- View the users’ votes n a post
- Grouped reports for many reports on the same post
- you can resolve many at once
- Options for more granular control over how links work in posts
- Option to reverse the action row
- Option to use absolute timestamps
- lemmy language tagging support
- Command palette now has contextual navigation options
- Contextual warnings for certain actions (like missing languages in posts)
- Messages page has been overhauled with markdown, contextual actions, etc
- Better view and options for modlog page
- Donation dialog as Lemmy requested
Optimizations
- Uses CSS animations more often which are faster
- Uses svelte context API to reduce prop drilling
- Navbar uses CSS rather than JS for positioning
- Uses optimized svelte $state rather than stores
Languages
Thanks to the community making translations on the Weblate, Photon has support for 18 languages!
- English (100%)
- Hebrew (58%)
- Arabic (33%) (fxomt)
- Bulgarian (72%) (salif)
- Chinese (Simplified) (91%) (qiancsf, CDN, binary3141)
- Chinese (Traditional) (21%) (binary3141)
- Dutch (81%) (qaz)
- Estonian (24%) (pewgar)
- Finnish (94%) (sevon)
- French (87%) (Blisterexe)
- German (64%) (poVoq, Tywele)
- Hungarian (55%) (myedition8)
- Japanese (84%) (Rentlar)
- Polish (83%) (gapetto)
- Portuguese (78%) (tmpod)
- Russian (83%) (WerySkok, mudkip)
- Spanish (81%) (acidrums4)
- Turkish (91%) (ikanat)
In the future
- Piefed support is targeting v2.2.0
- With the way it is being written, Mastodon support may as well come sometime around v3.0.0
There’s a lot more in this release, as well as more to come. I’m trying to make Photon closer to its design philosophy, which can be summarized as:
It should not take more than 3 seconds to identify an action you wish to perform within a given container or page.
This covers a lot of reasons why I design stuff the way I do, for example, you’ll never find more than 5 buttons (minus links) in a single container. Additionally, specific types of actions will usually look different, like primary actions on a page versus sub actions.
I hope you enjoy this release!
Full Changelog: https://github.com/Xyphyn/photon/compare/v1.31.4...v2.0.0
Our instance on https://photon.slrpnk.net/ was just updated 👍
Thanks, I’ve discovered this just now! Why don’t use it as default slrpnk.net UI?
We were thinking about it for a while, but it coincidated with the Photon 2.x rewrite in Svelte 5 so it was postponed, and these days I am more interested to find a way to switch over the entire instance to Piefed.
Why do you prefer Piefed? In that case, would I lose my account here on Lemmy?
No, the plan is to migrate accounts over once Piefed offers a way to read the bcrypt hashed passwords from the Lemmy database.
There is a long list of reasons why we prefer Piefed, but it is both because of technical reasons and because of how the Lemmy developers are neglecting moderation features and generally are a PITA to interact with.
Thanks for your time!
Is there any chance I could convince you to support fediseer (i.e. display remote instance reputation from your own instance) and threativore user flairs?
tesseract had support for fediseer (although not as visible as I would have liked). Nothing has added yet support for threativore flairs.
I looked at threativore’s REST API, and it raised a question about how the flairs should be displayed.
Were user flairs intended to be displayed inline in a comment section next to their username? Or if you specifically visit their profile? I ask this because there’s only an API endpoint to get details regarding a single user, which would require dozens of API calls for a single comment section or post feed.
I could arrange for a full export endpoint with all known users and their flair which could be only called once in a while and cached. I also don’t expect all fairs to be visible for each user but maybe the first one and the rest expanded on mouse over. I could also mark on flair as the most significant per user. Would that work?
I generally try to make photon depend as little as possible on external APIs, especially specific ones.
However, I was thinking of a system to let instance admins choose for themselves if they want their hosting of photon to have it, perhaps through a “plugin” system. I could add a threativore/fediseer plugin that you could specify configuration to.
I probably wouldn’t add it on my phtn.app, but I can add “plugins” so that you could use it on lemmy.dbzer0.com.
Btw, since I havw you here, is it possible to reduce the size of instance custom emojis? Photon displays them way too large, I think they should be resized to either 24x24 or 48x48. Custom emojis always include the “emoji <emoji shortcode>” string in their markdown, so other frontends just resize the images to 24x24 if they detect the that string.
Example: https://p.lemmy.dbzer0.com/post/lemmy.dbzer0.com/48319452
Being able to hook some sort of plugin system would be perfectly fine with me. I can’t develop it myself though >_< But if you would have a fediseer plugin and a threativore plugin and one just provides some necessary variables, I would totally use them.
Thanks, Photon is the best site on the web!
Why does my contribution to translating to German always get seemingly forgotten?
I’m really sorry about that, I used a different script to generate the translation reports for this release note than the credits page in the app. The first one only took the top 1 translator, and then I filled what I thought I missed.
I edited the post. Translation is a great dedication of time and I apologize for not recognizing the time you put.
Thank you.
Removed by mod
I’m still updating this daily, I’ll get that in there soon. I only made the “stable” 2.0 release now because I wanted to get all the instances using the ancient v1.34 up to date
Removed by mod







