Skip to content

Add new frontend implementing fromScratch design#649

Closed
Timendus wants to merge 7 commits intolibrespeed:masterfrom
Timendus:fromscratch-design
Closed

Add new frontend implementing fromScratch design#649
Timendus wants to merge 7 commits intolibrespeed:masterfrom
Timendus:fromscratch-design

Conversation

@Timendus
Copy link
Copy Markdown
Contributor

@Timendus Timendus commented Aug 12, 2024

Hey there! I hope you like pull requests from random strangers bearing gifts :)

I had a couple of days of free time, and I came across the design by fromScratch in #585. I thought it looked great, and that it deserved a good implementation, so I set out to make one.

I've taken the liberty of changing a couple of details, coming up with some animations and adding a few small features, but otherwise I've tried to stay as close to the "intention" of the design as I could.

desktop

mobile

If you want to take it out for a spin, I'm hosting the frontend here (at least for a little while):

http://vps.timendus.com/speedtest

(Note that it doesn't currently show the "share" feature nor the popup with privacy information because I haven't configured my server to store anything. It's configurable though.)

To use on your own server, just copy'n'paste everything in frontend to the project root (just like the other examples, only a few more files).

Reasons to merge this PR

  • It looks quite pretty, if I do say so myself!
  • Desktop and mobile support
  • Support for a single server or multiple servers through server-list.json
  • Support for all speedtest_worker.js settings through settings.json
  • Keep it simple, stupid:
    • Zero dependencies
    • No build steps
    • Nothing to maintain or update over time
    • Pure HTML + CSS + Javascript
    • 280 KB page load (uncompressed)
  • Code is descriptive and well documented, I hope
  • It gets a Lighthouse score of 100/100 points in all four categories, if your hosting is configured properly (mine isn't currently)

Reasons NOT to accept this PR

  • This frontend relies heavily on modern browser features. It should work very well in all modern ("evergreen") browsers, but has no backwards compatibility with older browsers, including IE11. Adding that support would require a bunch of polyfills and build steps that I am not going to add, because I do not consider the mountain of added complexity and dependencies worth it.
  • I have spent very little time on the "share results" feature. It should show a popup with the existing backend-generated image, and a "copy link" button if the browser supports the clipboard API. So the shared image will look nothing like the design by fromScratch. I also haven't properly tested it, to be honest. It "should work". If you find any issues with that, I can probably still fix them for you. I will leave the PHP side of things (that generates the image) for someone else.
  • I am giving this to your community "as is", with zero promises of support or future work. I will not be able to maintain it beyond this initial implementation. Not that it will need much maintenance, but I want to be up front and honest about this.

Other notes

  • I have tested this site in Google Chrome, Chrome mobile, Chromium, Brave, Firefox, Firefox mobile, Opera, Safari and Arc. I have not been able to test with Edge. But seeing as that's Just Another Webkit Wrapper these days, I don't expect any issues there.
  • See the README file for some more information.

Hope you like it! And thanks for a great Open Source project!

@adolfintel
Copy link
Copy Markdown
Member

adolfintel commented Aug 12, 2024

Well, this definitely looks better than the old one. Thanks for your work.

The only change I'd make would be using the official logo and maybe redesign the server selection box a bit, right now I think the text is a bit huge and doesn't have enough line spacing.

I think this should be the new UI for 6.0, when we'll drop support for old stuff like IE11. What do you think @sstidl ?

@sstidl sstidl mentioned this pull request Aug 13, 2024
@sstidl sstidl linked an issue Aug 13, 2024 that may be closed by this pull request
@sstidl
Copy link
Copy Markdown
Collaborator

sstidl commented Aug 13, 2024

It looks modern and a little freaky but I like it. Haven't been able to test it yet

@Chris-ZoGo
Copy link
Copy Markdown

Chris-ZoGo commented Sep 3, 2024

Thank you @adolfintel for your support!!

Regarding the changes you suggested, we are planning to add them to this year's Hacktoberfest event as a task for the design participants.
If you ,or @sstidl ,or anyone in this community have any other requests, suggestions, or ideas regarding the design, we would gladly include them in our Hacktoberfest design sprint for LibreSpeed on October. Let me know if you have any thoughts on this.

@sstidl
Copy link
Copy Markdown
Collaborator

sstidl commented Oct 19, 2024

I started a new branch with the new design named newdesign

Can someone change the behaviour so that there is no server-list.json the local server is used and no selection box is shown?

@sstidl
Copy link
Copy Markdown
Collaborator

sstidl commented Oct 26, 2024

@Timendus can you try to rebase your PR to the new newdesign branch and have a look over it?

@sstidl sstidl marked this pull request as draft October 26, 2024 16:04
@Timendus
Copy link
Copy Markdown
Contributor Author

Timendus commented Nov 1, 2024

@Timendus can you try to rebase your PR to the new newdesign branch and have a look over it?

I think I just managed to. Let me know if it's not so.

I can't really judge the Dockerfiles, looks fine to me, but I'm not a regular user of Docker.

Can someone change the behaviour so that there is no server-list.json the local server is used and no selection box is shown?

When the list in server-list.json is just a single item, the selection box will not be shown. So either manually configure the JSON file to hold the local server, or maybe add a little PHP script to generate the JSON file?

@sstidl
Copy link
Copy Markdown
Collaborator

sstidl commented Dec 29, 2024

When the list in server-list.json is just a single item, the selection box will not be shown. So either manually configure the JSON file to hold the local server, or maybe add a little PHP script to generate the JSON file?
sorry to say that i cannot reproduce this. when i run in standalone mode (where there is no server) the selection list is shown.

try to check out the new "newdesign" branch and try the docker/test/ procedure...
thnx

@sstidl
Copy link
Copy Markdown
Collaborator

sstidl commented Dec 29, 2024

i think dda7841 did it.

the "active" class makes it visible again, so i do it after the single-server check

@sstidl
Copy link
Copy Markdown
Collaborator

sstidl commented Dec 29, 2024

@Timendus i will close this PR now here because i cannot update your source. please review #694 if you like.

@sstidl sstidl closed this Dec 29, 2024
@sstidl sstidl removed a link to an issue Dec 29, 2024
@Tachi107
Copy link
Copy Markdown

I like the new redesign, but somehow I also find the content is now way harder to read. Is it only me?

@stefanstidlffg
Copy link
Copy Markdown
Contributor

I like the new redesign, but somehow I also find the content is now way harder to read. Is it only me?

Can you send a screenshot and explain what you mean?

@Tachi107
Copy link
Copy Markdown

Tachi107 commented Mar 26, 2026 via email

@artun42
Copy link
Copy Markdown

artun42 commented Apr 9, 2026

I actually agree on this, @Tachi107. I'm not sure if this design is really worth it. Simple gray background was all it was needed for this kind of site.

Futuristic looking bright pink-cyan elements with gradients and space in the background feels very, very off for me. But I'm not ready to contribute new either, just pointing the obvious.

sstidl added a commit that referenced this pull request Apr 11, 2026
* Implement fromScratch design

* Add some documentation

* enable new design in docker (no alpine yet)

* merge fixed docker images

* alpine docker added new design

* fix #685

* Implement fromScratch design

* Add some documentation

* enable new design in docker (no alpine yet)

* alpine docker added new design

* fix #685

* fix database permissions alpine, remove baby

* hide serverselector on only one server

* Update frontend/styling/server-selector.css

Co-authored-by: qodo-merge-pro-for-open-source[bot] <189517486+qodo-merge-pro-for-open-source[bot]@users.noreply.github.com>

* fix alpine image again

* adjust settings.json in entrypoint

so env vars are honored

* Update frontend/javascript/index.js

Co-authored-by: qodo-merge-for-open-source[bot] <189517486+qodo-merge-for-open-source[bot]@users.noreply.github.com>

* Add feature switch for new design via config file, URL parameters, and Docker (#742)

* Initial plan

* Add feature switch for new design with config and URL parameter support

Co-authored-by: sstidl <12804296+sstidl@users.noreply.github.com>

* Improve error handling and prevent infinite redirect loops

Co-authored-by: sstidl <12804296+sstidl@users.noreply.github.com>

* Update Dockerfiles and entrypoint to support design feature switch

Co-authored-by: sstidl <12804296+sstidl@users.noreply.github.com>

* Update design-switch.js

Co-authored-by: qodo-free-for-open-source-projects[bot] <189517486+qodo-free-for-open-source-projects[bot]@users.noreply.github.com>

* fix: copy actions in entrypoint

* Restructure design switch to place both designs at root level

Co-authored-by: sstidl <12804296+sstidl@users.noreply.github.com>

* Flatten frontend assets in Docker to eliminate frontend directory

Co-authored-by: sstidl <12804296+sstidl@users.noreply.github.com>

* fix: entrypoint settings & server-list

disable entrypoint bash debug

* add link to modern design

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: sstidl <12804296+sstidl@users.noreply.github.com>
Co-authored-by: sstidl <sstidl@users.noreply.github.com>
Co-authored-by: qodo-free-for-open-source-projects[bot] <189517486+qodo-free-for-open-source-projects[bot]@users.noreply.github.com>

* add armv7

* reformat

* Add GDPR_EMAIL environment variable for Docker deployments (#743)

* Initial plan

* Add GDPR_EMAIL environment variable for Docker deployments

Co-authored-by: sstidl <12804296+sstidl@users.noreply.github.com>

* Improve GDPR_EMAIL handling with proper escaping and loop

Co-authored-by: sstidl <12804296+sstidl@users.noreply.github.com>

* Refine GDPR_EMAIL processing - skip index.html and improve escaping

Co-authored-by: sstidl <12804296+sstidl@users.noreply.github.com>

* Optimize GDPR_EMAIL sed commands and improve escaping

Co-authored-by: sstidl <12804296+sstidl@users.noreply.github.com>

* Clarify sed escaping comment for GDPR_EMAIL

Co-authored-by: sstidl <12804296+sstidl@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: sstidl <12804296+sstidl@users.noreply.github.com>

* cleanup old EMAIL ENV Var

* fix: line break in html prevented sed replacement

* version 6.0.0pre1

* test: add mssql docker compose tests

* Update Speedtest screen recording link in README

* Filter unreachable servers from selector (newdesign UI) (#769)

* Filter unreachable servers from selector (newdesign UI)

* Apply suggestions from code review

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* keep // servers in list

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* fix misleading comment

---------

Co-authored-by: Lumi <lumi@openclaw.local>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Stefan Stidl <sti-github@stidl.com>

* fix: server.json handling

* Use server-list.json in classic frontend by default

* Add configurable server list URLs to frontend and Docker

---------

Co-authored-by: Timendus <mail@timendus.com>
Co-authored-by: Stefan Stidl <stefan.stidl@ffg.at>
Co-authored-by: qodo-merge-pro-for-open-source[bot] <189517486+qodo-merge-pro-for-open-source[bot]@users.noreply.github.com>
Co-authored-by: qodo-merge-for-open-source[bot] <189517486+qodo-merge-for-open-source[bot]@users.noreply.github.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: sstidl <12804296+sstidl@users.noreply.github.com>
Co-authored-by: qodo-free-for-open-source-projects[bot] <189517486+qodo-free-for-open-source-projects[bot]@users.noreply.github.com>
Co-authored-by: Stefan Stidl <sti-github@stidl.com>
Co-authored-by: Lumi <lumi@openclaw.local>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants