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:
2026-10-17 14:34:16 +02:00
co-authored by Claude Opus 5.5
parent e39d9cdcf9
commit 818442db08
8 changed files with 14 additions and 15 deletions
+2 -3
View File
@@ -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] 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**.
- [ ] 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`).
- [ ] 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).
- [ ] **Charging currency.** Prices and costs are shown in Turkish lira (`₺/kWh`, `₺`) in
`pane_charging.xml` and `MainActivity.java`.
- [ ] **Dashboard language and branding.** The `web/` pages are still Turkish, say "FatihsMG4" and
show prices in lira.
- [ ] **Dashboard language.** The `web/` pages are still Turkish and show prices in lira.
- [ ] **Telemetry queue survives restarts.** Unsent live samples are kept in memory only.
- [ ] **Translate the rest.** The docs (`CHANGELOG.md`, `OTA.md`'s
message table, comments in `mise.toml`/`app/build.gradle`) are still Turkish or French.
+1 -1
View File
@@ -9,4 +9,4 @@ resources:
- ingress.yaml
images:
- name: git.stinnesbeck.com/nils/mg4-server
newTag: "1.1.0"
newTag: "1.1.1"
+1 -1
View File
@@ -2,7 +2,7 @@
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
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
+4 -4
View File
@@ -1,12 +1,12 @@
{
"name": "fatihsmg4-web",
"version": "1.1.0",
"name": "nilsmg4-web",
"version": "1.1.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "fatihsmg4-web",
"version": "1.1.0",
"name": "nilsmg4-web",
"version": "1.1.1",
"dependencies": {
"@influxdata/influxdb-client": "^1.35.0",
"next": "^15.5.4",
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "fatihsmg4-web",
"version": "1.1.0",
"name": "nilsmg4-web",
"version": "1.1.1",
"private": true,
"scripts": {
"dev": "next dev",
+1 -1
View File
@@ -2,7 +2,7 @@ import type { Metadata, Viewport } from "next";
import "./globals.css";
export const metadata: Metadata = {
title: "FatihsMG4",
title: "Nils' MG4",
description: "MG4 tüketim ve şarj geçmişi",
};
+2 -2
View File
@@ -13,7 +13,7 @@ export default async function LoginPage({
return (
<div className="login">
<form className="login-card" action="/api/session" method="post">
<h1 className="title">FatihsMG4</h1>
<h1 className="title">Nils&apos; MG4</h1>
<p className="subtitle">Tüketim ve şarj geçmişi</p>
{/*
A hidden username so password managers will offer to save this.
@@ -24,7 +24,7 @@ export default async function LoginPage({
<input
type="text"
name="username"
value="fatih"
value="nils"
autoComplete="username"
readOnly
hidden
+1 -1
View File
@@ -11,7 +11,7 @@ import crypto from "node:crypto";
* Reading the history needs the dashboard password, which never leaves the browser's
* 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;
/** Constant-time compare that does not leak length through an early return. */