Still going!

I've been exploring other projects recently but I still enjoy maintaining and improving Photon.

Lemmy v1

Support for Lemmy v1 (API v4) is complete as for all currently existing functions. I've finished a few of the new Lemmy features (post tags, multi communities) but still have some others to add.

This update also comes with a lot of technical improvements and UX improvements, and should fix a few long standing issues. I'm quite excited to merge it.

The way I implemented this update was to rebase the entire client on the API v4 schemas and structures. While this was great for my overall code quality, and helps me future proof this client, it means I now have to write a compatibility adapter to support API v3. To make things worse, I have to rewrite the entire Piefed adapter (unless I do some cursed setup like Piefed adapter -> v3 adapter -> v4/base).

Android app

You can now install an APK for Photon! It has a few minor issues but should be pretty usable, and it has edge-to-edge support unlike the PWA. You can get it from https://github.com/xyphyn/photon/releases, going to the latest one, and downloading app-release.apk. You can paste the GitHub link into obtainium, too.

Future

I have a lot of UX improvements to make, but I'm waiting until after Lemmy V1 releases to make them (I don't want to bloat the PR too much). I want to make things more "reliable", by fixing the way pages are cached, keeping scrolling states intact, adding "drafts" everywhere in case you accidentally delete things, and overall keeping everything in sync. Some changes in the API v4 PR provide the first step to achieving this.

I'm planning to make a "demo" version of Photon that has a heavily curated default feed (not for standard use! phtn.app will remain untouched) so that I can show it in my resume or something.

Closing

Thanks to everyone who uses this app! It was an important pathway to me becoming a better web developer (as much as I dislike that title). I'm rather surprised how many Lemmy servers host it now, and even strange obscure non-fediverse websites using it inexplicably. (Related to recent events, did you know Tesseract began as a fork of Photon?)

if you'd like to donate to support my work, you can do so here.

[–] 3 points 1 day ago

The only web client that doesn't use JavaScript is mlmym. the modern slopware on the web where websites pump 5 MB of scripts straight to your browser is insanity, but JavaScript can also make websites much much nicer to use (routers that don't require full page reload).

  • source
  • [–] 3 points 2 days ago (1 child)

    Photon's Lemmy V1 compatibility is actually pretty much complete with a lot of technical improvements as well, I'm kinda hoping the Lemmy devs release Lemmy v1 soon as I don't really want to make a lemmy v0.x adapter

  • source
  • parent
  • context
  • [–] 8 points 1 week ago (2 children)

    The situation is pretty confusing, but you're still gonna be able to side load unverified apps. The "advanced flow" that makes sideloading obnoxious to do is specifically for unverified apps, whereas verified apps (where devs have to fork up their ID to google) can be installed without any hassle.

  • source
  • parent
  • context
  • [–] 7 points 1 week ago (5 children)

    You can still sideload apps. While the change is ridiculous, you still can sideload apps. They just make it significantly more painful to enable sideloading.

  • source
  • Photon v2.3.0 (lemdro.id)
    submitted 5 months ago by [M] to c/photon@lemdro.id
     

    What's Changed

    • design: make the signup page look slightly less atrocious
    • feat: add keyword and URL filtering for posts by @Kehet and @Xyphyn in https://github.com/Xyphyn/photon/pull/711
      • only for posts for now, by default it will minimize the post in your feed to let you know it was hidden while still being unobtrusive. if you want to completely hide them, that's still an option
    • feat: automatically retrieve cross-server content
      • previously this would require an extra button press. this is much more transparent
      • also this makes photon links a lot better for sharing with frens
    • feat: completely rewrite the api adapters to not be absymal trash
      • if an employer saw that i wrote the old api adapter i would be fired on the spot
    • fix: Missing escaped text by @sevonj in https://github.com/Xyphyn/photon/pull/706
    • upgrade: svelte -> 5.49.1, sveltekit -> 2.50.1, vite -> 6.4.1, tailwindcss -> 4.1.18
    • misc: improve settings reachability by making a categorized page on mobile
    • design: make button presses react more frequently to just make things feel nicer
    • design: lots and lots of design tweaks like a new loading animation (massive changes)
    • refactor: authentication logic
    • fix: remove useless sveltekit __data.json blocking calls, speed up navigation within layouts (and make everything work without the photon server)
    • feat: make it impossible to use the app if you have a certain username because funny

    New Contributors

    Full Changelog: https://github.com/Xyphyn/photon/compare/v2.2.2...v2.3.0

    submitted 5 months ago by [M] to c/photon@lemdro.id
     

    Very few lemmy instances actually proxy images, and this makes it impossible to run image transforms (compression and resizing). this leads to a lot of scenarios where some profile picture that gets rendered at 24x24px is actually downloading a full-size 4K image. additionally, you've connected to hundreds of domains in the process of scrolling your home feed, leaking your IP address to all of them.

    i'm working on a centralized image proxy that solves these problems (though it's not locked into photon, it depends on environment variables). it'll roll out on phtn.app for now.

    Comparison

    Compact mode, loading 1 page on home feed

    • Unproxied: 836 KB downloaded, 30 domains
    • Proxied: 76 KB downloaded, 1 domain
    Photon v2.2.2 (lemdro.id)
    submitted 7 months ago by [M] to c/photon@lemdro.id
     
    • design: use common components for administration pages
    • design: use common styles for vote buttons
    • impr: add proper pageination to messages page, fix diffing desync
    • feat: add autosubmit to URL autofill
    • design: use Materials for highlights in comments
    • fix: piefed poll vote api schema changes
    • fix: markdown tables re-enable
    • feat: add custom thumbnail option to PostForm
    • feat: add piefed metadata generation
    • design: redesign the profile block pages to not look awful
    • fix: post polls causing a scroll to top
    • feat: make comment guide borders clickable to collapse (like reddit)
    • misc: skip client validation for linked instances
    • feat: make command palette more obvious with a button in profile picture (ctrl + k guys) (or right click/hold on photon logo)

    Full Changelog: https://github.com/Xyphyn/photon/compare/v2.2.1...v2.2.2

    submitted 7 months ago* (last edited 7 months ago) by to c/linux_gaming@lemmy.world
     

    I'm using Arch currently and the following issues have been present on every install of Steam I've had:

    • Controller inputs break constantly. If I use big picture mode, the games will be in some quasi state where it both detects my controller and doesn't.
    • The menus take like 3 seconds to open.
    • The right click menu in the system tray does not work 30% of the time.
    • Worst of all, when I close a game, steam will not detect that it closes. Once this happens, no other page will load, no menus will open, and i have to killall steam -s SIGKILL, since no other signal works. It's also survived SIGKILL multiple times. How?
    • In game, the shift+tab menu does not work; half the buttons are unresponsive and the game will crash upon closing shift+tab

    The arch wiki had nothing on this.

    Flatpak and native installs have the same problem, reinstallation does nothing, steam --reset does nothing.

    These issues occur across multiple games with different engines.

    It's very strange since I have a very generic system and most people seem to have great experiences.

    view more: next ›