Changeset 7e9d0ea in Klonkt


Ignore:
Timestamp:
08/11/2026 07:18:51 PM (4 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
bac4bf3
Parents:
960f015
git-author:
Robin <roboburr@…> (08/11/2026 07:12:33 PM)
git-committer:
Robin <roboburr@…> (08/11/2026 07:18:51 PM)
Message:

De laatste tenancy-resten, en een testbestand dat alleen zijn naam kwijt was (shaer-x7c0)

Het meeste van de bead was al gedaan door 72ec6a4 (Hub-modus en guardian-lite
eruit), dezelfde dag nog. Wat er lag:

  • database.js beschreef nog een tenancy-modus met hub, en zette bij elke boot een app_settings-rij 'tenancy' die niemand meer leest. Beide weg. Bestaande rijen blijven staan; die opruimen is een aparte beslissing.
  • ensurePrimarySite.js noemde solo/hub/circle op twee plekken.

En het belangrijkste, precies wat de bead verkeerd had: hub-permissions.test.js
test GEEN verwijderde modus. Het dekt canAdminSite (inclusief de site_members-tak
die ooit stil kapot was), canEditPost en getPrimarySite -- allemaal springlevend,
en CLAUDE.md wijst dit bestand aan als de vangrail daarvoor. Weggooien had die
dekking gesloopt. Alleen de naam verwees nog naar de hub, dus die is aangepast,
met een kop die uitlegt waarom het bestand blijft.

Files:
3 edited
1 moved

Legend:

Unmodified
Added
Removed
  • CLAUDE.md

    r960f015 r7e9d0ea  
    6363Tests live in `test/*.test.js` and run against an in-memory SQLite
    6464(`DATABASE_PATH=':memory:'`), so they never touch real data. Cover new
    65 permission/tenancy logic with tests — `PermissionsService.canAdminSite` was once
    66 silently broken; see `test/hub-permissions.test.js`.
     65permission logic with tests — `PermissionsService.canAdminSite` was once
     66silently broken; see `test/site-permissions.test.js`.
    6767
    6868## Architecture Overview
  • src/config/database.js

    r960f015 r7e9d0ea  
    266266  `);
    267267
    268   // Global app settings (key/value singleton). Includes the tenancy mode
    269   // (solo = one site, hub = company site + /user/). Default = solo.
     268  // Global app settings (key/value singleton). One instance is one owner, so
     269  // there is no tenancy mode here anymore — see SettingsService.
     270  // Oudere installaties dragen nog een dode rij key='tenancy' ('solo' of
     271  // 'circle'). Niets leest hem; bewust laten staan (shaer-x7c0) in plaats van
     272  // er opruimcode voor te schrijven die na één ronde zelf dood is.
    270273  db.exec(`
    271274    CREATE TABLE IF NOT EXISTS app_settings (
     
    275278    );
    276279  `);
    277   db.prepare("INSERT OR IGNORE INTO app_settings (key, value) VALUES ('tenancy', 'solo')").run();
    278280
    279281  // ── Statistics (premium) — cookie-free ──────────────────────
  • src/services/ensurePrimarySite.js

    r960f015 r7e9d0ea  
    33
    44// A Klonkt instance should ALWAYS have a primary site — it carries the identity
    5 // (title, theme, profile) and is the anchor point in solo/hub/circle mode.
     5// (title, theme, profile) and is the anchor point for the whole instance.
    66// The register flow already creates one, but an admin created via a script
    77// (or an empty sites table for any reason) left the instance without a site:
     
    1010// This helper runs at boot (and is idempotent): as soon as there is an admin
    1111// but no site yet, it creates a default site owned by the first god/admin.
    12 // Tenancy-agnostic — applies to solo, hub, and circle.
    1312
    1413function defaultTitle() {
  • test/site-permissions.test.js

    r960f015 r7e9d0ea  
    1 // Unit-tests voor de hub-permissielaag — juist `canAdminSite` was lang stil kapot
     1// Unit-tests voor de site-permissielaag — juist `canAdminSite` was lang stil kapot
    22// (las een nooit-gevulde user.siteRoles), dus dit dekt 'm nu af. Draait op de
    33// ingebouwde node:test (geen extra deps). In-memory SQLite → raakt geen echte data.
     4//
     5// Heette hub-permissions.test.js: de hub-modus is weg (72ec6a4), maar wat hier
     6// getest wordt niet. canAdminSite, canEditPost en getPrimarySite zijn springlevend
     7// en dit bestand is hun enige dekking — alleen de naam verwees nog naar de modus.
    48//
    59// Run: npm test   (= node --test)
Note: See TracChangeset for help on using the changeset viewer.