Compare commits
9 commits
issue-70-h
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 158204b938 | |||
|
|
483030081c | ||
| 51429045e6 | |||
|
|
9ee5372404 | ||
|
|
e9ddf27eab | ||
|
|
7750214c64 | ||
| 97cf9ce0f7 | |||
| 7343f993ee | |||
|
|
4086aac50c |
7 changed files with 25 additions and 11 deletions
11
STATE.md
11
STATE.md
|
|
@ -1,16 +1,23 @@
|
|||
# STATE — simpl-liste
|
||||
|
||||
> Derniere MAJ : 2026-05-10 (par fix-issue #87)
|
||||
> Derniere MAJ : 2026-05-30 (deploy web liste.lacompagnie + #90)
|
||||
|
||||
## Position actuelle
|
||||
|
||||
Version 1.6.1 (versionCode 13). Remediation vulnerabilites du defenseur en cours
|
||||
Version 1.6.4 (versionCode 16). Remediation vulnerabilites du defenseur en cours
|
||||
via overrides `@xmldom/xmldom@^0.8.13` et `uuid@^11.0.0` dans `package.json`
|
||||
(overnight 2026-04-24). 4 CVE HIGH xmldom nettoyees ; 1 advisory uuid residuelle
|
||||
non-exploitable en pratique (details dans `SECURITY.md`).
|
||||
|
||||
Companion web `liste.lacompagniemaximus.com` : deploye **manuellement** (docker-compose
|
||||
standalone `/data/simpl-liste-web` sur le VPS, build depuis `source/` rsync — PAS une app
|
||||
Coolify malgre la spec). Procedure en memoire `simpl-liste-web-deploy`.
|
||||
|
||||
## Decisions recentes
|
||||
|
||||
- 2026-05-30 : #90 merged (PR #93, ThemeToggle eslint-disable) + premier deploy web depuis 7 sem (rsync source/ + docker compose --build sur VPS) — #70 et #90 live sur liste.lacompagniemaximus.com.
|
||||
- 2026-05-30 : PR #89 merged — display name web resolu via userInfo (ordre fallback de la vitrine), fix #70.
|
||||
- 2026-05-30 : nettoyage lint web/ (PR #91, 2 prefer-const + import inutilise) ; #90 analyse (ThemeToggle set-state-in-effect, decision : eslint-disable documente).
|
||||
- 2026-05-10 : Aligne 6 patches Expo SDK 54 via expo install --fix — expo-doctor 17/17 (ref #87)
|
||||
- 2026-05-08 : Defenseur rerun confirme 0 findings — overrides existants suffisent, pas de PR necessaire (ref #81)
|
||||
- 2026-04-24 : overrides xmldom + uuid (spec `spec-decisions-vuln-simpl-liste.md`) — PRs #77, #78, #79 (pending-human).
|
||||
|
|
|
|||
10
package-lock.json
generated
10
package-lock.json
generated
|
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
"name": "simpl-liste",
|
||||
"version": "1.6.3",
|
||||
"version": "1.6.4",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "simpl-liste",
|
||||
"version": "1.6.3",
|
||||
"version": "1.6.4",
|
||||
"dependencies": {
|
||||
"@expo-google-fonts/inter": "^0.4.2",
|
||||
"@expo/ngrok": "^4.1.3",
|
||||
|
|
@ -6464,9 +6464,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/expo/node_modules/ws": {
|
||||
"version": "8.20.0",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz",
|
||||
"integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==",
|
||||
"version": "8.21.0",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-8.21.0.tgz",
|
||||
"integrity": "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=10.0.0"
|
||||
|
|
|
|||
|
|
@ -68,7 +68,10 @@
|
|||
"esbuild": "^0.25.0",
|
||||
"@xmldom/xmldom": "^0.8.13",
|
||||
"uuid": "^11.1.1",
|
||||
"postcss": "^8.5.10"
|
||||
"postcss": "^8.5.10",
|
||||
"@expo/cli": {
|
||||
"ws": "^8.20.1"
|
||||
}
|
||||
},
|
||||
"private": true
|
||||
}
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ export default async function ListPage({
|
|||
|
||||
// Fetch subtasks for all parent tasks
|
||||
const parentIds = tasks.map((t) => t.id);
|
||||
let subtasksMap: Record<string, Task[]> = {};
|
||||
const subtasksMap: Record<string, Task[]> = {};
|
||||
|
||||
if (parentIds.length > 0) {
|
||||
const allSubtasks = await db
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ export async function GET(
|
|||
}
|
||||
|
||||
// Build query
|
||||
let query = db
|
||||
const query = db
|
||||
.select()
|
||||
.from(slTasks)
|
||||
.where(and(...conditions));
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
import { ThemeToggle } from "./ThemeToggle";
|
||||
import { User, LogOut } from "lucide-react";
|
||||
import Link from "next/link";
|
||||
import { useState } from "react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,11 @@ export function ThemeToggle() {
|
|||
|
||||
useEffect(() => {
|
||||
const stored = localStorage.getItem("sl-theme") as Theme | null;
|
||||
// localStorage is unavailable during SSR, so the stored theme can only be
|
||||
// read post-mount. ThemeScript already applies the `dark` class before
|
||||
// hydration (no page FOUC); only the toggle icon corrects on mount. The
|
||||
// rule is a false positive for this hydration-from-localStorage read.
|
||||
// eslint-disable-next-line react-hooks/set-state-in-effect
|
||||
if (stored) setTheme(stored);
|
||||
}, []);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue