Repository navigation
Conversation
Replaces the unreleased ADMIN_EMAILS design. CSS never verifies a login's email, so a listed address nobody had used made whoever took it first an admin; and whoever runs the server already proves it with ssh + docker. - account-admin: AccountAdminHandler, POST /.account/admin/accounts/ with action list|delete, opened by a token start/admins.js renews at each start (mode 600, container filesystem only). - admin/admin.js (in the image): TUI to list, sort, filter, select and delete; plus list / delete --yes for scripts. Calls CSS on 127.0.0.1 with X-Forwarded-Host from CSS_BASE_URL. - scripts/admin.sh runs it via docker compose exec, then removes the connector's agents for what was deleted. - Gateway templates refuse /.account/admin/ from outside. - Smoke drives the tool inside the container on both layouts. - docs/admin/: tutorial, how-to, reference, explanation. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
nicolasdb
added a commit
that referenced
this pull request
Nov 3, 2026
entries('account') walks every document under /.internal/ through the
resource store, lock files included, and stalled until "Lock expired
after 6000ms" took the server down (CI on #36, again on #37's first
attempt). List the names in .internal/accounts/data/ through the data
accessor (directory read, no lock), confirm each with has('account').
docs/admin/explanation.md: "What building it taught us", the findings as
arguments for the feature.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Nov 3, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follows #35, still before any 7.3.0-4 tag. Changes the permission model and adds the TUI you asked for.
Why the change.
ADMIN_EMAILSwas there to protect a web door. CSS never verifies a login's email, so a listed address nobody had used yet made whoever signed up with it first an admin. On the VPS, ssh + docker already say who runs the server. Amending ADR 012 accordingly, as a proposal (solid-kit PR to follow).What it adds
scripts/admin.shopens a TUI inside the css container (admin/admin.js, plain Node, nothing to install):scripts/admin.sh listanddelete <email|id>... --yesdo the same without the TUI.POST /.account/admin/accounts/takesaction: list|deleteand is opened by a token thatstart/admins.jsrenews at every start. The token is mode 600 and lives in the container's own filesystem only.ADMIN_EMAILSis gone./.account/admin/from outside.docs/admin/is new: a tutorial, a how-to, a reference, and an explanation.docker execon both layouts. It checks the following:The TUI itself was driven through a pty against a mock route: filter, select, delete with confirmation, and the deletion log for the connector clean-up.
Next: once this is green and merged, tag
v7.3.0-4-rc.1for the end-to-end test on MoM.🤖 Generated with Claude Code