this post was submitted on 13 Jul 2025
31 points (100.0% liked)

Photon

840 readers
2 users here now

Photon for Lemmy

A client for the fediverse designed to be intuitive, fast, and sleek.

This community is a place to ask questions, report bugs, check on the latest updates, or share your experiences with Photon!

You can contact me at @[email protected].

Rules

  1. Posts must be related to Photon (in any way)
  2. Don't be mean
  3. If your post is a bug report, please preface the title with [solved] if it's been fixed.

founded 2 years ago
MODERATORS
31
Photon v2.0.0 (use.phtn.app)
submitted 4 days ago* (last edited 3 days ago) by [email protected] to c/[email protected]
 

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

top 17 comments
sorted by: hot top controversial new old
[–] db0 3 points 2 days ago (3 children)

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?

[–] [email protected] 1 points 14 hours ago (1 children)

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.

[–] db0 1 points 13 hours ago* (last edited 13 hours ago)

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?

[–] [email protected] 1 points 1 day ago (2 children)

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.

[–] db0 2 points 1 day ago

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

[–] db0 1 points 1 day ago

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.

[–] [email protected] 2 points 2 days ago (1 children)

@db0 @Xylight has any client app added support for these yet? Would love to see what that would look like in action

[–] db0 3 points 2 days ago

tesseract had support for fediseer (although not as visible as I would have liked). Nothing has added yet support for threativore flairs.

[–] fxomt 2 points 4 days ago (1 children)

Thank you! I know youve already implemented most of my suggestions (votes,revamped inbox) etc, and I hate to be pushy, but;

It would be amazing to have registration application templates. Thats the only thing I use for tesseract now (since you've implemented most of what I need)

And two small bugs I found, no pressure:

You can't set the default modlog view despite there being "default" as an option in the Modlog page, but only previews as lists.

In the Arabic version, the RTL switch is broken unlike Hebrew (they both work the exact same, not sure why it's like that)

Anyways, those last two are very small and don't matter much; this update is amazing, Thank you!

We've updated https://p.lemmy.dbzer0.com/ to the latest version

[–] [email protected] 3 points 3 days ago (1 children)

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

[–] fxomt 2 points 3 days ago

Thanks, at least we could finally update our photon lol

[–] [email protected] 2 points 4 days ago

Our instance on https://photon.slrpnk.net/ was just updated 👍

[–] [email protected] 2 points 4 days ago

Thanks, Photon is the best site on the web!

[–] Tywele 1 points 4 days ago* (last edited 4 days ago) (2 children)

Why does my contribution to translating to German always get seemingly forgotten?

[–] Blaze 2 points 3 days ago

Thank you for your work !

[–] [email protected] 3 points 3 days ago (1 children)

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.

[–] Tywele 1 points 3 days ago