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
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?
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 " 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.
@db0 @Xylight has any client app added support for these yet? Would love to see what that would look like in action
tesseract had support for fediseer (although not as visible as I would have liked). Nothing has added yet support for threativore flairs.