Rename the web app from FatihsMG4 to Nils' MG4
Browser title, login heading, hidden password-manager username, session cookie (nilsmg4_session) and package name. The README keeps the credit to fatihdonmezdev/FatihsMG4. Server version 1.1.1; the manifests pin it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QLJfZQZeAKAwSqViTmLzki
This commit is contained in:
@@ -74,7 +74,7 @@ car ──live telemetry───▶ car.stinnesbeck.com ──▶ ABRP api.ite
|
|||||||
- [x] Manifests in `k8s/`, validated offline. **Not applied** — that is Nils' step (`k8s/README.md`).
|
- [x] Manifests in `k8s/`, validated offline. **Not applied** — that is Nils' step (`k8s/README.md`).
|
||||||
- [x] Car app 2.3.0: Server tab with config import, live telemetry upload, cadence controls.
|
- [x] Car app 2.3.0: Server tab with config import, live telemetry upload, cadence controls.
|
||||||
Unit tests and lint pass; **not yet tried on the car**.
|
Unit tests and lint pass; **not yet tried on the car**.
|
||||||
- [ ] Push the image to git.stinnesbeck.com (needs a registry login on the build machine).
|
- [ ] Push the image (`mg4-server:1.1.1`) to git.stinnesbeck.com (needs a registry login on the build machine).
|
||||||
- [ ] Check the Traefik ingress class in `k8s/ingress.yaml` (placeholder `traefik-external`).
|
- [ ] Check the Traefik ingress class in `k8s/ingress.yaml` (placeholder `traefik-external`).
|
||||||
- [ ] First drive with 2.3.0: telemetry arrives in InfluxDB and at ABRP.
|
- [ ] First drive with 2.3.0: telemetry arrives in InfluxDB and at ABRP.
|
||||||
|
|
||||||
@@ -92,8 +92,7 @@ car ──live telemetry───▶ car.stinnesbeck.com ──▶ ABRP api.ite
|
|||||||
`NilsMG4-unstable-<version>.apk` with a `.sha256` sidecar (`build-car` writes both).
|
`NilsMG4-unstable-<version>.apk` with a `.sha256` sidecar (`build-car` writes both).
|
||||||
- [ ] **Charging currency.** Prices and costs are shown in Turkish lira (`₺/kWh`, `₺`) in
|
- [ ] **Charging currency.** Prices and costs are shown in Turkish lira (`₺/kWh`, `₺`) in
|
||||||
`pane_charging.xml` and `MainActivity.java`.
|
`pane_charging.xml` and `MainActivity.java`.
|
||||||
- [ ] **Dashboard language and branding.** The `web/` pages are still Turkish, say "FatihsMG4" and
|
- [ ] **Dashboard language.** The `web/` pages are still Turkish and show prices in lira.
|
||||||
show prices in lira.
|
|
||||||
- [ ] **Telemetry queue survives restarts.** Unsent live samples are kept in memory only.
|
- [ ] **Telemetry queue survives restarts.** Unsent live samples are kept in memory only.
|
||||||
- [ ] **Translate the rest.** The docs (`CHANGELOG.md`, `OTA.md`'s
|
- [ ] **Translate the rest.** The docs (`CHANGELOG.md`, `OTA.md`'s
|
||||||
message table, comments in `mise.toml`/`app/build.gradle`) are still Turkish or French.
|
message table, comments in `mise.toml`/`app/build.gradle`) are still Turkish or French.
|
||||||
|
|||||||
@@ -9,4 +9,4 @@ resources:
|
|||||||
- ingress.yaml
|
- ingress.yaml
|
||||||
images:
|
images:
|
||||||
- name: git.stinnesbeck.com/nils/mg4-server
|
- name: git.stinnesbeck.com/nils/mg4-server
|
||||||
newTag: "1.1.0"
|
newTag: "1.1.1"
|
||||||
|
|||||||
+1
-1
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
Next.js app, self-hosted at car.stinnesbeck.com: the ingest API the car writes to, the ABRP
|
Next.js app, self-hosted at car.stinnesbeck.com: the ingest API the car writes to, the ABRP
|
||||||
forwarder, and a phone-shaped dashboard for reading the history back. Data lives in
|
forwarder, and a phone-shaped dashboard for reading the history back. Data lives in
|
||||||
InfluxDB 2. Based on upstream's Vercel/MongoDB app in FatihsMG4.
|
InfluxDB 2. Based on upstream's Vercel/MongoDB app in fatihdonmezdev/FatihsMG4.
|
||||||
|
|
||||||
```
|
```
|
||||||
car ──live telemetry───▶ server ──▶ ABRP api.iternio.com/1/tlm/send
|
car ──live telemetry───▶ server ──▶ ABRP api.iternio.com/1/tlm/send
|
||||||
|
|||||||
Generated
+4
-4
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "fatihsmg4-web",
|
"name": "nilsmg4-web",
|
||||||
"version": "1.1.0",
|
"version": "1.1.1",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "fatihsmg4-web",
|
"name": "nilsmg4-web",
|
||||||
"version": "1.1.0",
|
"version": "1.1.1",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@influxdata/influxdb-client": "^1.35.0",
|
"@influxdata/influxdb-client": "^1.35.0",
|
||||||
"next": "^15.5.4",
|
"next": "^15.5.4",
|
||||||
|
|||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "fatihsmg4-web",
|
"name": "nilsmg4-web",
|
||||||
"version": "1.1.0",
|
"version": "1.1.1",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "next dev",
|
"dev": "next dev",
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import type { Metadata, Viewport } from "next";
|
|||||||
import "./globals.css";
|
import "./globals.css";
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
title: "FatihsMG4",
|
title: "Nils' MG4",
|
||||||
description: "MG4 tüketim ve şarj geçmişi",
|
description: "MG4 tüketim ve şarj geçmişi",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ export default async function LoginPage({
|
|||||||
return (
|
return (
|
||||||
<div className="login">
|
<div className="login">
|
||||||
<form className="login-card" action="/api/session" method="post">
|
<form className="login-card" action="/api/session" method="post">
|
||||||
<h1 className="title">FatihsMG4</h1>
|
<h1 className="title">Nils' MG4</h1>
|
||||||
<p className="subtitle">Tüketim ve şarj geçmişi</p>
|
<p className="subtitle">Tüketim ve şarj geçmişi</p>
|
||||||
{/*
|
{/*
|
||||||
A hidden username so password managers will offer to save this.
|
A hidden username so password managers will offer to save this.
|
||||||
@@ -24,7 +24,7 @@ export default async function LoginPage({
|
|||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
name="username"
|
name="username"
|
||||||
value="fatih"
|
value="nils"
|
||||||
autoComplete="username"
|
autoComplete="username"
|
||||||
readOnly
|
readOnly
|
||||||
hidden
|
hidden
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import crypto from "node:crypto";
|
|||||||
* Reading the history needs the dashboard password, which never leaves the browser's
|
* Reading the history needs the dashboard password, which never leaves the browser's
|
||||||
* cookie jar and is never compiled into anything.
|
* cookie jar and is never compiled into anything.
|
||||||
*/
|
*/
|
||||||
export const SESSION_COOKIE = "fatihsmg4_session";
|
export const SESSION_COOKIE = "nilsmg4_session";
|
||||||
const SESSION_TTL_SECONDS = 60 * 60 * 24 * 30;
|
const SESSION_TTL_SECONDS = 60 * 60 * 24 * 30;
|
||||||
|
|
||||||
/** Constant-time compare that does not leak length through an early return. */
|
/** Constant-time compare that does not leak length through an early return. */
|
||||||
|
|||||||
Reference in New Issue
Block a user