mirror of
https://github.com/librespeed/speedtest.git
synced 2026-05-13 16:26:38 +00:00
* 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>
72 lines
2.4 KiB
JavaScript
72 lines
2.4 KiB
JavaScript
/**
|
|
* Feature switch for enabling the new LibreSpeed design
|
|
*
|
|
* This script checks for:
|
|
* 1. URL parameter: ?design=new or ?design=old
|
|
* 2. Configuration file: config.json with useNewDesign flag
|
|
*
|
|
* Default behavior: Shows the old design
|
|
*
|
|
* Note: This script is only loaded on the root index.html
|
|
*/
|
|
(function () {
|
|
'use strict';
|
|
|
|
// Don't run this script if we're already on a specific design page
|
|
// This prevents infinite redirect loops
|
|
const currentPath = window.location.pathname;
|
|
if (currentPath.includes('index-classic.html') || currentPath.includes('index-modern.html')) {
|
|
return;
|
|
}
|
|
|
|
// Check URL parameters first (they override config)
|
|
const urlParams = new URLSearchParams(window.location.search);
|
|
const designParam = urlParams.get('design');
|
|
|
|
if (designParam === 'new') {
|
|
redirectToNewDesign();
|
|
return;
|
|
}
|
|
|
|
if (designParam === 'old' || designParam === 'classic') {
|
|
redirectToOldDesign();
|
|
return;
|
|
}
|
|
|
|
// Check config.json for design preference
|
|
try {
|
|
const xhr = new XMLHttpRequest();
|
|
// Use a synchronous request to prevent a flash of the old design before redirecting
|
|
xhr.open('GET', 'config.json', false);
|
|
xhr.send(null);
|
|
|
|
// Check for a successful response, but not 304 Not Modified, which can have an empty response body
|
|
if (xhr.status >= 200 && xhr.status < 300) {
|
|
const config = JSON.parse(xhr.responseText);
|
|
if (config.useNewDesign === true) {
|
|
redirectToNewDesign();
|
|
} else {
|
|
redirectToOldDesign();
|
|
}
|
|
} else {
|
|
// Config not found or error - default to old design
|
|
redirectToOldDesign();
|
|
}
|
|
} catch (error) {
|
|
// If there's any error (e.g., network, JSON parse), default to old design
|
|
console.log('Using default (old) design:', error.message || 'config error');
|
|
redirectToOldDesign();
|
|
}
|
|
|
|
function redirectToNewDesign() {
|
|
// Preserve any URL parameters when redirecting
|
|
const currentParams = window.location.search;
|
|
window.location.href = 'index-modern.html' + currentParams;
|
|
}
|
|
|
|
function redirectToOldDesign() {
|
|
// Preserve any URL parameters when redirecting
|
|
const currentParams = window.location.search;
|
|
window.location.href = 'index-classic.html' + currentParams;
|
|
}
|
|
})();
|