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

  • Xylight@lemdro.idOPM
    link
    fedilink
    English
    arrow-up
    1
    ·
    2 days ago

    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@lemmy.dbzer0.com
      link
      fedilink
      English
      arrow-up
      1
      ·
      edit-2
      2 days 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?