101
submitted 1 week ago* (last edited 1 day ago) by [email protected] to c/[email protected]

So, I am one of those old school types who mains with Firefox and Noscript. And also a filthy casual that just goes on lemmy.world. But half the images are broken because I'm expected to allow scripts on like 30+ sites to see most of the posts. I'm literally expected to allow /all/ the scripts from a domain just so I can see a dang picture behind the thumbnail. That's the entirety of the scripting needed. That seems ridiculous. Is there, I don't know, a server/way that makes it so I don't have to blanket allow all these scripts? To put it in meme form (not sure I'm doing it right, never seen the show): "It's an image of a banana Michael, what should it take, one Raspberry Pi running Docker?"

[EDIT 6/1/25 - thanks to everyone who commented on this. Screenshots: https://lemmy.world/comment/17403335 ]

top 50 comments
sorted by: hot top new old
[-] [email protected] 3 points 6 days ago
[-] [email protected] 2 points 6 days ago* (last edited 6 days ago)

Mentioned elsewhere, and a decent workaround. Doesn't do well with thumbnails, unfortunately.

[edit: someone below suggested removing the thumbnail sampling (I'll probably try via uBlock Origins). Honestly with that and a bit of zoom, might work fine. Will be testing it.]

[-] [email protected] 46 points 1 week ago

Yes.

PieFed uses very minimal javascript (it 95% works with JS entirely disabled) and you can access all the same communities and posts.

Try it at https://piefed.social/ or any of these other instances - https://join.piefed.social/try

[-] [email protected] 2 points 6 days ago* (last edited 6 days ago)

Piefed is kinda awesome. Switched earlier in the year :)

[-] [email protected] 6 points 1 week ago

Just curious, what's the 5% that doesn't work with JS disabled?

[-] [email protected] 17 points 1 week ago

Voting, lol. Kinda important.

Dropdown menus. They're not really needed but life sucks without them.

Can't manually switch between dark and light mode (only automatically based on browser settings).

There's probably more but I haven't seriously tried to use PieFed for long without JS. Fundamentally it's built HTML and CSS first, with sprinkles of JS added on for funsies rather than the modern way of being all about JS.

[-] [email protected] 2 points 6 days ago

Voting

You could support this by making vote buttons submit a form if JS isn't enabled. (That's what mlmym does.)

Can't manually switch between dark and light mode

Hmm... There are some pretty nifty things you can do with a hidden checkbox, label, and some clever CSS (e.g. html:has(#element:checked) + CSS variables -- though FYI :has is baseline 2023.)

Making it persistent would require some more effort -- e.g. form + cookies + server side style sheet selection, most likely. mlmym lets users change their theme w/o JS by submiting a form on the setting page. I'd have to think a bit if there's a good way to make it persistent across multiple requests for logged out users with a CDN caching things in between though...

only automatically based on browser settings

Doesn't actually work for me in a FF138-based browser w/ JS blocked via NoScript -- I always get light mode despite having a dark mode preference set. (Where do you have your prefers-color-scheme media query?)

Also, FYI I had to manually override font restriction -- otherwise all your buttons end up as tofu characters. (I think NoScript is being kind of unreasonably strict there by blocking first party fonts.) That's a papercut kind of issue, but figured I'd point it out in case it might save you some debugging time if you get confused NoScript users in the future.

[-] [email protected] 2 points 6 days ago

Yeah I think it'd be worth getting the voting buttons working, those are pretty key functionality.

The icons being stored in a font is kinda problematic (some browsers choke, large font file) but on the other hand it's so great being able to set the color of them in CSS, which I found difficult when they are a SVG.

[-] [email protected] 3 points 1 week ago* (last edited 1 week ago)

Yesterday:

<nav script="dropdown.js" style="dropdown.css">
  <button onclick="toggleDropdown()">Menu</button>
</nav>

Today:

// index.js
import React from 'react';
import ReactDOM from 'react-dom';
import './global.css';
import App from './App';

ReactDOM.createRoot(document.getElementById('root')).render(<App />);

// App.jsx
import Dropdown from './components/Dropdown';
import './App.css';

export default function App() {
  return (
    <main>
      <Dropdown />
      <p>Hello, world!</p>
    </main>
  );
}

// components/Dropdown.jsx
import { useState } from 'react';
import styles from './Dropdown.module.css';
import ArrowIcon from '../assets/icons/ArrowIcon.jsx';

export default function Dropdown() {
  const [open, setOpen] = useState(false);
  return (
   <div className={styles.dropdown}>
      <button onClick={() => setOpen(!open)}>Menu <ArrowIcon /></button>
      {open && (
        <ul>
          <li>Option 1</li>
          <li>Option 2</li>
        </ul>
      )}
    </div>
  );
}
[-] [email protected] 5 points 1 week ago
[-] [email protected] 2 points 6 days ago

Yeah. But in this case the Topics menu can be quite heavy as it lists every community that the current user is subscribed to. Instead of generating that menu (and sending it to the client) on every page load, when it probably won't even be used, PieFed makes an ajax call (only possible with JS) to retrieve the topics menu when it's clicked. Same for 'Feeds'.

This cut the amount of HTML being sent to the browser by around 50% (depends on how many communities you subscribe to but PieFed makes it extremely easy to subscribe to dozens of communities with a single click so many people have hundreds) and eased load on the server too. Some of the more under-powered instances run noticeably faster now.

[-] [email protected] 9 points 1 week ago* (last edited 1 week ago)

That way is old and busted, here's the new hotness (anchor positioning).

[-] [email protected] 3 points 1 week ago

Looks nice is my immediate impression (looking at it with all javascript off, including ). Still would like thumbnails that are the entire image just much smaller, maybe via CSS. The cropping is very misleading on a lot of images. Perhaps one could use css-toggle-switch--not going to try to solution it, and I know last time I checked css wasn't great for it. But the results are notably different from lemmy.world for Active or Top past 12 hours. Not necessarily /bad/, particularly for top posts as they at least have a bit of engagement. But it seems like part of the solution is just don't incorporate results from servers that require javascript. Is it possible (ethical even) to incorporate them, but be a middle-man that saves the user from their javascript?

[-] [email protected] 3 points 6 days ago

In https://piefed.social/user/settings there are two different compact modes to choose from, which shrink the images to varying degrees.

I don't know of any way to determine how JS-heavy a link is.

[-] [email protected] 1 points 6 days ago

I'll try to play with it next time I'm on desktop. Thanks!

[-] [email protected] 19 points 1 week ago* (last edited 1 week ago)

doesn't require allowing javascript of a million other servers?

half the images are broken because I’m expected to allow scripts on like 30+ sites to see most of the posts

software like noscript is not exactly beginner friendly. you're expected to understand the impact of your blocking and what you are blocking. the only domain you need to allow JS from on lemmy.world is lemmy.world. standard lemmy-ui does not load any js or css from third party sources, only the domain where lemmy-ui is served. your noscript configuration is blocking the actual images, not javascript that would be required to load images.

edit:

to expand on this, even in tor browser in safest mode, lemmy.world works totally fine when all you do is allow JS from lemmy.world on lemmy.world:

load more comments (7 replies)
[-] [email protected] 16 points 1 week ago

I think the old Lemmy alternative frontend supports no JS. But I'm not sure whether the dev is still actively maintaining it: https://github.com/rystaf/mlmym

[-] [email protected] 14 points 1 week ago
[-] [email protected] 10 points 1 week ago
[-] bdonvr 4 points 1 week ago

https://old.thelemmy.club/

Unfortunately with Lemmy 1.0 MLMYM (the software used to provide this UI) will have to be shutdown, unless the MLMYM dev re-appears or someone forks and maintains it.

[-] [email protected] 4 points 6 days ago

someone forks and maintains it.

MrKaplan already forked it and is keeping it on life support for lemmy.world. I've been trying to make enough sense of it to fix several issues that have been bugging me for a while, and will contribute my fixes there if I can figure them out.

I've only got a few hours each weekend where I have good concentration + enough free time to work on it, and don't know the relevant languages (Go, Rust, TypeScript), so my progress is pretty slow... but I'm still poking at it.

[-] bdonvr 3 points 6 days ago* (last edited 6 days ago)

Wow thanks for the info and the work. I don't use it much since 99% of my Lemmy use is on mobile and I prefer stock Lemmy for admin stuff, but I know at least a few of my users use it.

I'm going to see if that fork is something I can just drop in the docker compose file. That'll be awesome if so.

Do they intend to make it 1.0 compatible or is this beyond the scope right now?

[-] [email protected] 1 points 6 days ago

I don't know what anyone else intends to do, but if I can fix the issues I'm currently looking at -- and no one else has stepped up in the interim -- I'll at least take a look at the 1.0 stuff. (I use mlmym and would like it to keep working...)

[-] [email protected] 2 points 5 days ago

tbh it's probably not going to be too complicated to switch to 1.0. the current api is generated from lemmy-js-client, but 1.0 api has an official openapi file. if there is a decently usable openapi generator for go that would probably not be too complicated to swap in instead and adjust the api calls in mlmym code.

[-] [email protected] 2 points 6 days ago

Thank you and @[email protected] for your work!

load more comments (1 replies)
[-] [email protected] 1 points 1 week ago

Which is basically the same as old.reddit.com . Which is great as far as functionality. Squint and you can imagine it would be perfect. Zoom in and it's decent, except the thumbnails now are even more clearly 4-pixel potatoes. Okay, so where's my FOSS firefox extension that works like RES (Reddit Enhancement Suite)? Or, I actually don't need that, just a FOSS firefox extension that takes any old.lemmy and makes the layout look like the new layout, with toggles to turn off anything in the new layout you don't want (e.g. right side bar)? Or, maybe some custom javascript I can save in greasemonkey to make everything zoom 150% and replaces thumbnails with better compressed versions of their expanded versions (make my own thumbnails)?

[-] [email protected] 1 points 6 days ago

the thumbnails now are even more clearly 4-pixel potatoes

pictrs's thumbnail parameter uses dumb raw pixel sampling -- which leaves something to be desired... It has other sampling options implemented (with resize, according to the docs), but they don't seem to accessible on my instance. You can remove thumbnail=96 if you want to get the image without that thumbnail sampling, at least.

make everything zoom 150%

I do this with my browser's UI (ctrl-plus keyboard shortcut in FF-based browsers works for me).

e.g. right side bar

[...document.querySelectorAll(".side")].forEach(sidebar => sidebar.remove())

You could also just adblock the element with class side.

[-] [email protected] 2 points 6 days ago* (last edited 6 days ago)

remove thumbnail=96

Hey, that sounds like a great idea, I bet I could add that to ublock origins. And, yeah, zoom via ctrl plus is what I do (I'm not sure if it is remembered between sessions). As for the side bar, it does not bother me, it was just as an example of what an extension theoretically could do. Honestly, another extension should not be needed. Instead a lemmy /c/ or other repository for user hacks would be nice that you could put into ublock origins or other DOM manipulator. That removing thumbnail sampling looks awesome, will try it out next time I'm on desktop.

[-] [email protected] 9 points 1 week ago* (last edited 1 week ago)

Use a native app like a mobile client or Blorp if you're on Mac?

[-] [email protected] 9 points 1 week ago

Noscript user here; we don't generally have that problem on fedia/mbin. It's mostly just mastodon "quote posts" and imgur that don't show up unless you allow their servers.

[-] [email protected] 8 points 1 week ago

I'm on lemmy.ml, it uses JS but it doesn't appear to load any from other domains. It serves images through a local proxy.

[-] [email protected] 6 points 1 week ago

Unfortunately no. Lemmy is a web application. JavaScript is the only thing giving interactivity. Without it we'd load a whole new html page each time. Try middle clicking on image links to view them, should open a new tab. "It works on my machine" of course, but good luck though.

[-] [email protected] 6 points 1 week ago
[-] [email protected] 1 points 1 week ago
[-] [email protected] 4 points 1 week ago
[-] [email protected] 2 points 1 week ago

Is it electron? I can't seem to find it outside of Mac, iOS and a test for Android

[-] [email protected] 6 points 1 week ago

This tbh.

I don't understand why is this not he standard for Lemmy and the Fediverse. We got here, among other things, to get away from the kind of crap enabled by JS-first web.

[-] [email protected] 5 points 1 week ago* (last edited 1 week ago)

I use the https://vger.app/ app / front end on mobile AND desktop and as far as I can tell it tunnels the images through their servers, so this is as minimal as you can get in regards to extra requests.

[-] bdonvr 4 points 1 week ago

Some instances host this themselves too.

https://app.thelemmy.club/

[-] [email protected] 3 points 1 week ago

I respect your choices, but I am afraid modern web is mostly JavaScript. Can you actually browse anything with noscript today?

[-] [email protected] 17 points 1 week ago

Absolutely. The vast majority of my sites do just fine when whitelisting only the primary domain. I consider it an essential add-on myself.

Lemmy is one of the few that needs a little babysitting, and it's only for the purpose OP stated.

[-] [email protected] 1 points 1 week ago

Good to know... Is it a pleasant experience?

load more comments (1 replies)
load more comments
view more: next ›
this post was submitted on 26 May 2025
101 points (97.2% liked)

Fediverse

33792 readers
808 users here now

A community to talk about the Fediverse and all it's related services using ActivityPub (Mastodon, Lemmy, KBin, etc).

If you wanted to get help with moderating your own community then head over to [email protected]!

Rules

Learn more at these websites: Join The Fediverse Wiki, Fediverse.info, Wikipedia Page, The Federation Info (Stats), FediDB (Stats), Sub Rehab (Reddit Migration)

founded 2 years ago
MODERATORS