v0.8.08-beta - paden rechtzetten en er verandert niets
Some checks failed
Deploy server-up (dev) / deploy (push) Has been cancelled

De appslijst bleef leeg na het rechtzetten van de paden, terwijl de API de apps
gewoon leverde: de pagina haalde ze nooit opnieuw op. goto() wisselt alleen van
pagina en saveSettings() verversde niets, dus je keek naar de lijst van bij het
laden van de pagina.

- bij een padwijziging worden de appslijst en de containers opnieuw opgehaald
- saveSettings() gooide het antwoord van de server weg en meldde altijd
  "opgeslagen", ook als de server de opslag weigerde. Sinds v0.8.05 een pad
  buiten de koppeling weigert was dat het verschil tussen aangepast en niets
  gebeurd; de melding komt nu in beeld

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q9eqpADJSRs49SoGGr4NAy
This commit is contained in:
Ramon 2026-08-03 23:21:21 +02:00
parent 2a50b5a92c
commit 8bb3771d2b
4 changed files with 70 additions and 2 deletions

View file

@ -1,3 +1,22 @@
# v0.8.08-beta — Paden rechtzetten en er verandert niets
Zet je in Instellingen → Paden je mappen goed, dan bleef de appslijst leeg. Niet
omdat er iets mis was — de API leverde de apps gewoon — maar omdat de pagina ze
nooit opnieuw ophaalde. `goto()` wisselt alleen van pagina, en `saveSettings()`
verversde niets. Je keek dus naar de lijst zoals die bij het laden van de pagina
was: leeg. Een herlaadactie loste het op, als je dat wist.
Twee dingen daaraan:
- Verandert een pad, dan worden de appslijst en de containers opnieuw
opgehaald. Alleen bij een padwijziging, zodat een gewone instelling niet
telkens twee verzoeken kost.
- **Een geweigerde opslag meldde zich als "opgeslagen".** `saveSettings()` gooide
het antwoord van de server weg en zette onvoorwaardelijk het vinkje. Sinds
v0.8.05 een pad buiten de gekoppelde map weigert, is dat het verschil tussen
"aangepast" en "er is niets gebeurd" — en je zag alleen het vinkje. De
foutmelding van de server komt nu in beeld.
# v0.8.07-beta — "Rondgang geslaagd" en toch een rode job
De backup-rondgang doorliep alle vijf de stappen goed — dump, archief, alles

View file

@ -1 +1 @@
0.8.07-beta
0.8.08-beta

View file

@ -2533,6 +2533,7 @@ function app() {
filterOpen: false, filterTagQuery: '', stackMenu: '', stackFilterOpen: false,
hoofdmap: '', afgeleidePaden: {}, padCheck: {}, padenVoorWijziging: {},
padWaarschuwing: '',
_padStand: null,
padVelden: [
{ sleutel: 'LIBRARY_DIR', label: 'library_dir' },
{ sleutel: 'DATA_DIR', label: 'appdata_dir' },
@ -3984,6 +3985,8 @@ function app() {
BACKUP_DIR: this.settings.BACKUP_DIR,
};
this.hoofdmap = this.settings.BASE_DIR || '';
this._padStand = ['LIBRARY_DIR', 'DATA_DIR', 'BACKUP_DIR']
.map(k => this.settings[k] || '').join('|');
await this.loadAppStore();
await this.loadUsers();
await this.loadNetworks();
@ -3995,8 +3998,27 @@ function app() {
async saveSettings() {
if (this.saveTimer) { clearTimeout(this.saveTimer); this.saveTimer = null; }
const body = { ...this.settings, LANGUAGE: this.settings.LANGUAGE, THEME: this.theme };
await this.req('/api/settings', { method:'PUT', json: body });
const d = await this.req('/api/settings', { method:'PUT', json: body });
// De uitkomst werd weggegooid: een geweigerde opslag meldde zich net zo
// vrolijk als "opgeslagen". Sinds een pad buiten de gekoppelde map
// geweigerd wordt, is dat het verschil tussen "aangepast" en "er is
// niets gebeurd".
if (d && d.ok === false) {
this.toast(d.msg || this.t('error'), 'er');
return false;
}
this.saved = true; setTimeout(() => this.saved = false, 1500);
// De appslijst hangt aan LIBRARY_DIR. Zonder dit blijf je na een
// padwijziging kijken naar wat er bij het laden van de pagina stond —
// je zet je paden goed en er verandert zichtbaar niets.
const stand = ['LIBRARY_DIR', 'DATA_DIR', 'BACKUP_DIR']
.map(k => this.settings[k] || '').join('|');
if (stand !== this._padStand) {
this._padStand = stand;
await this.loadStacks();
await this.loadHostContainers();
}
return true;
},
autoSave() {
if (this.saveTimer) clearTimeout(this.saveTimer);

View file

@ -424,6 +424,33 @@ check('balk staat halverwege', c.job.progress.pct === 50);
check('en geen knop die apps belooft', c.storeVerborgen === 0);
check('de teller is ook nul', c.storeResultaat === 0);
// ── Instellingen opslaan ──────────────────────────────────────────────────
// De uitkomst werd weggegooid: een geweigerde opslag meldde zich als
// "opgeslagen". En na een padwijziging werd niets herladen, dus je zette je
// paden goed en zag hetzelfde lege scherm.
let herladen = 0;
let getoast = '';
c.loadStacks = async () => { herladen++; };
c.loadHostContainers = async () => { herladen++; };
c.toast = (m) => { getoast = m; };
c.settings = {LIBRARY_DIR: '/opt/serverup/stacks', DATA_DIR: '/opt/a', BACKUP_DIR: '/opt/b'};
c._padStand = ['LIBRARY_DIR','DATA_DIR','BACKUP_DIR'].map(k => c.settings[k]).join('|');
c.req = async () => ({ok: false, msg: 'Server Up kan niet bij /srv/x'});
c.settings.LIBRARY_DIR = '/srv/x';
check('een geweigerde opslag geeft false terug', (await c.saveSettings()) === false);
check('en meldt waarom', getoast.includes('/srv/x'));
check('en herlaadt niets', herladen === 0);
check('en zegt niet dat het opgeslagen is', c.saved !== true);
c.req = async () => ({ok: true});
check('een geslaagde opslag geeft true terug', (await c.saveSettings()) === true);
check('en haalt de lijst opnieuw op', herladen === 2);
herladen = 0;
check('nog een keer opslaan zonder padwijziging lukt', (await c.saveSettings()) === true);
check('en herlaadt dan niet opnieuw', herladen === 0);
c.rpc = poortRpc;
// ── Eén lijst voor beheerde en handmatig gestarte apps ────────────────────