Skip to content

[Feature]: Generic per-participant/person user-settings store persisted via the SDK (shared across IME and Web) #401

Description

@rdevoogtatstariongroup

Prerequisites

  • I have written a descriptive issue title
  • I have verified that I am running the latest version of the COMET-SDK
  • I have searched open and closed issues to ensure it has not already been reported

Description

Neither the IME nor the Web app can persist per-user UI settings server-side. The IME writes a local per-user JSON file (PluginSettingsService), and the Web app has no durable per-user store (but could be done with local browser storage). Both approaches are per-device, lost on profile/cache clear, and can't be shared between tools.

We would like a generic, SDK-provided mechanism to persist arbitrary per-user settings in the database, keyed to the Participant (or Person), so any client can read/write namespaced settings and have them travel with the user across devices and tools.

Proposal

  • Expose a per-user settings container through the SDK/DAL (e.g. a JSON/string blob keyed by owner + a client-defined namespace such as relationshipmatrix.savedConfigurations).
  • Provide a read/write API on the SDK (analogous to how other Things are read/updated), respecting existing permission and revision handling.
  • Keep it schema-agnostic so each tool/plugin owns the shape of its own settings.

Acceptance criteria

  • A client can store and retrieve a namespaced settings value for the current participant via the SDK.
  • Settings persist server-side and survive reconnects / other devices.
  • Permissions: a participant can read/write only their own settings.
  • Both the IME and the Web app can consume the same API.

Notes / open questions

  • Data model: extend an existing type vs. a new dedicated construct; storage format (JSON string).
  • Visibility / permissions and whether settings live per-model or globally per-user.
  • Migration path; whether the IME migrates its local plugin settings onto this store.
  • First consumer: migrate the Relationship Matrix saved configurations (COMET-WEB) onto the new store.

Context

Split out of the CDP4-COMET-WEB Relationship Matrix work (STARIONGROUP/COMET-WEB-Community-Edition#821). The Web app currently has no saved-configuration persistence pending this SDK capability.

  • COMET version:
    • CDP4Common:
    • CDP4JsonSerializer:
    • CDP4Dal:
    • CDP4JsonFileDal:
    • CDP4ServicesDal:
    • CDP4WspDal:
    • Other:
  • Environment (Operating system, version and so on):
  • .NET Framework version:
  • Additional information:

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions