Skip to content

No user accounts: settings are tied to one browser and operator actions to a shared API key #2128

Closed

Description

@efiten

What happens

CoreScope has no notion of a person. Two things follow from that:

  • Everything a visitor sets up lives in one browser's localStorage: own nodes, favorites, the customizer, saved filters and per-page view preferences. A second device, a phone or a cleared cache starts from zero. feat: export/import json include favorite/claimed nodes #895 asked for favorites and claimed nodes in export/import for that reason.
  • Operator actions are gated by one shared apiKey: geofilter save and prune, backup, perf reset. Anyone who needs to do one of them needs the key, and there is no way to give or take away that right per person.

Several requests depend on knowing who someone is, and cannot be built without it:

Issue Needs
#1835 an authenticated read mode for private deployments (requireReadAuth)
#2092 user-suggested hashtag channels with admin approval and revoke
#1508 per-deployment control over customizer tabs (server-enforced)
#730, #775 per-user notifications for network events

Proposal

Optional, off-by-default accounts, delivered in parts. Each part gets its own spec and PR:

C, D and E are not started. A and B are meant to be merged together: A alone gives a regular user an account but nothing to use it for.

Constraints both PRs keep

  • Off by default. With no userManagement block in config.json the account routes are not registered and the interface shows no account control. The existing E2E suites run unchanged in that mode.
  • Read-only analyzer database. cmd/server keeps opening the analyzer database read-only. Accounts live in a separate users.db, and a test pins internal/users as the server's only write path (AGENTS.md, read/write separation).
  • Channel keys stay in the browser (feat: user-configurable channels in web UI + DB-backed message history #725). Channel keys, channel labels, decrypted messages and the API key are never synced. The server refuses them through a hard denylist that a test pins.

Specs

Activity

  1. efiten commented on Oct 8, 2026

    @efiten
    CollaboratorAuthor

    All parts of this roadmap are in master:

    Part PR
    A. Foundation: accounts, sessions, roles, admin user management, Brevo mail #2129
    B. Settings sync across devices #2130
    C. Admin dashboard: overview, audit log with logins, system status #2138
    D. Approval flows, first consumer #2092 (hashtag channels) #2139
    E. Mail notifications for watched nodes (#775, part of #730) #2140
    Follow-up: account data export and users.db backup #2141

    Everything stays off by default. Setup: docs/user-guide/accounts.md.

    Not built, tracked elsewhere:

    None of this is in a release yet. Closing the roadmap.

  2. added a commit that references this issue on Oct 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions