mirror of
https://git.mirrors.martin98.com/https://github.com/luc-github/ESP3D.git
synced 2025-08-05 08:20:42 +08:00

### Maintenance page * Add add tab color for mobile view * Add spellcheck off / autocorect off in input * Add disconnect button when authenticate enabled * Add Invalid user or password message when authentication failed ### Board support * Add ESP32 S2 support * Add ESP32 S3 support * Add ESP32 C3 support ### ESP commands * Add command 701 to control GCODE streaming * Remove command 901 as duplicate * Update command 420 to add more details * Use text as default output * All json on all commands for formated output ### Core * Add benchmak function to check transfer speed (for test only-not production) * Merge code for ESP3DLib support * Add better printer display support (M117 / Serial TFT) * Use ESP32 analogWrite instead of emulated one ### Modules * Display * Refactor code * Remove SPI ILI 9341 / 9488 support as not suitable * Add ST7789 support (135x240 / 240x240) * Filesystem * Bug fixes due to esp core updates * Better SD sharing mecanism * Better global FS management * FTP * Add SD sharing support * Better global FS management * GCODE Host * Add basic support for macro files * Add ESP command support * Use not blocking method to stream commands / handle response * Notifications * Add IFTTT notification service * Add WebUI notification * Add ESP3D display notification * WebDav * Add SD sharing support * Add bug fix from https://github.com/d-a-v/ESPWebDAV * Better global FS management * Websocket * Add function to handle zombies connections * WiFi * Fix connection to AP sometime fail * Fix low signal not diplayed in ESP420 even connected * Add AP Setup mode ### Libraries * Update SDFat-2.0.6 to 2.1.2 * Update ESP32SSDP 1.1.1 to 1.2.0 * Update TFT_eSPI-1.4.11 to 2.4.61 * Update arduinoWebSockets-2.3.5 to 2.3.6 * Update esp8266-oled-ssd1306-4.0.0 to 4.3.0 * Remove lvgl support ### Tools * Add I2C scanner script * Add python script to simulate/stress printer serial communication ### PlatformIO * Use latest 4.4.0 Espressif32 release (ESP32-arduino core 2.0.3) * Add fix for Flash more than 4MB * Add Esp32 S2/S3/C3 env * Add ESP32-ST7789 / esp32-TTGO_T_Display env
83 lines
2.9 KiB
HTML
83 lines
2.9 KiB
HTML
{% extends "!page.html" %}
|
|
|
|
{% block footer %}
|
|
|
|
<style>
|
|
.wy-side-nav-search > div[role="search"] {
|
|
color: black;
|
|
}
|
|
</style>
|
|
<script type="text/javascript">
|
|
$(document).ready(function() {
|
|
$(".toggle > *").hide();
|
|
$(".toggle .header").show();
|
|
$(".toggle .header").click(function() {
|
|
$(this).parent().children().not(".header").toggle(400);
|
|
$(this).parent().children(".header").toggleClass("open");
|
|
})
|
|
});
|
|
</script>
|
|
|
|
<script type="text/javascript">
|
|
function add_version_selector()
|
|
{
|
|
return fetch("https://raw.githubusercontent.com/lvgl/docs_compiled/gh-pages/versionlist.txt")
|
|
.then(res => res.text())
|
|
.then(text => {
|
|
const versions = text.split("\n").filter(version => version.trim().length > 0);
|
|
let p = document.getElementById("rtd-search-form").parentElement;
|
|
p.innerHTML = `
|
|
<select name="versions" id="versions" onchange="ver_sel()" style="border-radius:5px; margin-bottom:15px">
|
|
${versions.map(version => {
|
|
let versionName = "";
|
|
if(version == "master") versionName = "master (latest)";
|
|
else versionName = "v" + ((version.indexOf(".") != -1) ? version : (version + " (latest minor)"));
|
|
return `<option value="${version}">${versionName}</option>`;
|
|
})}
|
|
</select>` + p.innerHTML;
|
|
});
|
|
}
|
|
|
|
function ver_sel()
|
|
{
|
|
var x = document.getElementById("versions").value;
|
|
window.location.href = window.location.protocol + "//" + window.location.host + "/" + x + "/";
|
|
}
|
|
|
|
document.addEventListener('DOMContentLoaded', (event) => {
|
|
add_version_selector().then(() => {
|
|
var value = window.location.pathname.split('/')[1];
|
|
document.getElementById("versions").value = value;
|
|
});
|
|
|
|
})
|
|
document.addEventListener('DOMContentLoaded', (event) => {
|
|
function onIntersection(entries) {
|
|
entries.forEach(entry => {
|
|
let currentlyLoaded = entry.target.getAttribute("data-is-loaded") == "true";
|
|
let shouldBeLoaded = entry.intersectionRatio > 0;
|
|
if(currentlyLoaded != shouldBeLoaded) {
|
|
entry.target.setAttribute("data-is-loaded", shouldBeLoaded);
|
|
if(shouldBeLoaded) {
|
|
let iframe = document.createElement("iframe");
|
|
iframe.src = entry.target.getAttribute("data-real-src");
|
|
entry.target.appendChild(iframe);
|
|
} else {
|
|
let iframe = entry.target.querySelector("iframe");
|
|
iframe.parentNode.removeChild(iframe);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
const config = {
|
|
rootMargin: '600px 0px',
|
|
threshold: 0.01
|
|
};
|
|
let observer = new IntersectionObserver(onIntersection, config);
|
|
document.querySelectorAll(".lv-example").forEach(iframe => {
|
|
observer.observe(iframe);
|
|
});
|
|
});
|
|
</script>
|
|
{% endblock %}
|