gitextract_e2fr6h29/ ├── .github/ │ └── workflows/ │ └── ci.yaml ├── .gitignore ├── CHANGELOG.md ├── ESP32-sveltekit.code-workspace ├── LICENSE ├── README.md ├── docs/ │ ├── buildprocess.md │ ├── components.md │ ├── gettingstarted.md │ ├── index.md │ ├── restfulapi.md │ ├── statefulservice.md │ ├── stores.md │ ├── structure.md │ └── sveltekit.md ├── factory_settings.ini ├── features.ini ├── interface/ │ ├── .eslintignore │ ├── .eslintrc.cjs │ ├── .gitignore │ ├── .npmrc │ ├── .prettierignore │ ├── .prettierrc │ ├── LICENSE │ ├── package.json │ ├── src/ │ │ ├── app.css │ │ ├── app.d.ts │ │ ├── app.html │ │ ├── lib/ │ │ │ ├── DaisyUiHelper.ts │ │ │ ├── components/ │ │ │ │ ├── BatteryIndicator.svelte │ │ │ │ ├── Collapsible.svelte │ │ │ │ ├── ConfirmDialog.svelte │ │ │ │ ├── DraggableList.svelte │ │ │ │ ├── FirmwareUpdateDialog.svelte │ │ │ │ ├── InfoDialog.svelte │ │ │ │ ├── InputPassword.svelte │ │ │ │ ├── RSSIIndicator.svelte │ │ │ │ ├── SettingsCard.svelte │ │ │ │ ├── Spinner.svelte │ │ │ │ ├── UpdateIndicator.svelte │ │ │ │ └── toasts/ │ │ │ │ ├── Toast.svelte │ │ │ │ └── notifications.ts │ │ │ ├── stores/ │ │ │ │ ├── analytics.ts │ │ │ │ ├── battery.ts │ │ │ │ ├── socket.ts │ │ │ │ ├── telemetry.ts │ │ │ │ └── user.ts │ │ │ └── types/ │ │ │ └── models.ts │ │ └── routes/ │ │ ├── +error.svelte │ │ ├── +layout.svelte │ │ ├── +layout.ts │ │ ├── +page.svelte │ │ ├── connections/ │ │ │ ├── +page.ts │ │ │ ├── mqtt/ │ │ │ │ ├── +page.svelte │ │ │ │ ├── +page.ts │ │ │ │ ├── MQTT.svelte │ │ │ │ └── MQTTConfig.svelte │ │ │ └── ntp/ │ │ │ ├── +page.svelte │ │ │ ├── +page.ts │ │ │ ├── NTP.svelte │ │ │ └── timezones.ts │ │ ├── demo/ │ │ │ ├── +page.svelte │ │ │ ├── +page.ts │ │ │ └── Demo.svelte │ │ ├── ethernet/ │ │ │ ├── +page.svelte │ │ │ ├── +page.ts │ │ │ └── Ethernet.svelte │ │ ├── login.svelte │ │ ├── menu.svelte │ │ ├── statusbar.svelte │ │ ├── system/ │ │ │ ├── +page.ts │ │ │ ├── coredump/ │ │ │ │ ├── +page.svelte │ │ │ │ └── +page.ts │ │ │ ├── metrics/ │ │ │ │ ├── +page.svelte │ │ │ │ ├── +page.ts │ │ │ │ ├── BatteryMetrics.svelte │ │ │ │ └── SystemMetrics.svelte │ │ │ ├── status/ │ │ │ │ ├── +page.svelte │ │ │ │ ├── +page.ts │ │ │ │ └── SystemStatus.svelte │ │ │ └── update/ │ │ │ ├── +page.svelte │ │ │ ├── +page.ts │ │ │ ├── GithubFirmwareManager.svelte │ │ │ └── UploadFirmware.svelte │ │ ├── user/ │ │ │ ├── +page.svelte │ │ │ ├── +page.ts │ │ │ └── EditUser.svelte │ │ └── wifi/ │ │ ├── +page.ts │ │ ├── ap/ │ │ │ ├── +page.svelte │ │ │ ├── +page.ts │ │ │ └── Accesspoint.svelte │ │ └── sta/ │ │ ├── +page.svelte │ │ ├── +page.ts │ │ ├── EditNetwork.svelte │ │ ├── Scan.svelte │ │ └── Wifi.svelte │ ├── static/ │ │ └── manifest.json │ ├── svelte.config.js │ ├── tsconfig.json │ ├── vite-plugin-littlefs.ts │ └── vite.config.ts ├── lib/ │ ├── PsychicHttp/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── RELEASE.md │ │ ├── library.json │ │ ├── request flow.drawio │ │ └── src/ │ │ ├── ChunkPrinter.cpp │ │ ├── ChunkPrinter.h │ │ ├── PsychicClient.cpp │ │ ├── PsychicClient.h │ │ ├── PsychicCore.h │ │ ├── PsychicEndpoint.cpp │ │ ├── PsychicEndpoint.h │ │ ├── PsychicEventSource.cpp │ │ ├── PsychicEventSource.h │ │ ├── PsychicFileResponse.cpp │ │ ├── PsychicFileResponse.h │ │ ├── PsychicHandler.cpp │ │ ├── PsychicHandler.h │ │ ├── PsychicHttp.h │ │ ├── PsychicHttpServer.cpp │ │ ├── PsychicHttpServer.h │ │ ├── PsychicHttpsServer.cpp │ │ ├── PsychicHttpsServer.h │ │ ├── PsychicJson.cpp │ │ ├── PsychicJson.h │ │ ├── PsychicRequest.cpp │ │ ├── PsychicRequest.h │ │ ├── PsychicResponse.cpp │ │ ├── PsychicResponse.h │ │ ├── PsychicStaticFileHander.cpp │ │ ├── PsychicStaticFileHandler.h │ │ ├── PsychicStreamResponse.cpp │ │ ├── PsychicStreamResponse.h │ │ ├── PsychicUploadHandler.cpp │ │ ├── PsychicUploadHandler.h │ │ ├── PsychicWebHandler.cpp │ │ ├── PsychicWebHandler.h │ │ ├── PsychicWebParameter.h │ │ ├── PsychicWebSocket.cpp │ │ ├── PsychicWebSocket.h │ │ ├── TemplatePrinter.cpp │ │ ├── TemplatePrinter.h │ │ ├── http_status.cpp │ │ └── http_status.h │ └── framework/ │ ├── APSettingsService.cpp │ ├── APSettingsService.h │ ├── APStatus.cpp │ ├── APStatus.h │ ├── AnalyticsService.h │ ├── ArduinoJsonJWT.cpp │ ├── ArduinoJsonJWT.h │ ├── AuthenticationService.cpp │ ├── AuthenticationService.h │ ├── BatteryService.cpp │ ├── BatteryService.h │ ├── CoreDump.cpp │ ├── CoreDump.h │ ├── DownloadFirmwareService.cpp │ ├── DownloadFirmwareService.h │ ├── ESP32SvelteKit.cpp │ ├── ESP32SvelteKit.h │ ├── ESPFS.h │ ├── EthernetSettingsService.cpp │ ├── EthernetSettingsService.h │ ├── EthernetStatus.cpp │ ├── EthernetStatus.h │ ├── EventEndpoint.h │ ├── EventSocket.cpp │ ├── EventSocket.h │ ├── FSPersistence.h │ ├── FactoryResetService.cpp │ ├── FactoryResetService.h │ ├── Features.h │ ├── FeaturesService.cpp │ ├── FeaturesService.h │ ├── FirmwareUpdateEvents.h │ ├── HttpEndpoint.h │ ├── IPUtils.h │ ├── JsonUtils.h │ ├── LICENSE │ ├── MqttEndpoint.cpp │ ├── MqttEndpoint.h │ ├── MqttSettingsService.cpp │ ├── MqttSettingsService.h │ ├── MqttStatus.cpp │ ├── MqttStatus.h │ ├── NTPSettingsService.cpp │ ├── NTPSettingsService.h │ ├── NTPStatus.cpp │ ├── NTPStatus.h │ ├── NotificationService.cpp │ ├── NotificationService.h │ ├── RestartService.cpp │ ├── RestartService.h │ ├── SecurityManager.h │ ├── SecuritySettingsService.cpp │ ├── SecuritySettingsService.h │ ├── SettingValue.cpp │ ├── SettingValue.h │ ├── SleepService.cpp │ ├── SleepService.h │ ├── StatefulService.cpp │ ├── StatefulService.h │ ├── SystemStatus.cpp │ ├── SystemStatus.h │ ├── UploadFirmwareService.cpp │ ├── UploadFirmwareService.h │ ├── WebSocketServer.h │ ├── WiFiScanner.cpp │ ├── WiFiScanner.h │ ├── WiFiSettingsService.cpp │ ├── WiFiSettingsService.h │ ├── WiFiStatus.cpp │ └── WiFiStatus.h ├── mkdocs.yml ├── platformio.ini ├── scripts/ │ ├── build_interface.py │ ├── generate_cert_bundle.py │ ├── merge_bin.py │ ├── prebuild_utils.py │ ├── rename_fw.py │ └── save_elf.py ├── src/ │ ├── LightMqttSettingsService.cpp │ ├── LightMqttSettingsService.h │ ├── LightStateService.cpp │ ├── LightStateService.h │ └── main.cpp └── ssl_certs/ └── DigiCert_Global_Root_CA.pem