Skip to content

Loaded demo projects are invisible to everyone, and every install seeds sample projects #654

Open

Description

@rubenvdlinde

What happens

Two problems with example data.

  1. The demo data is invisible. An admin who loads the demo data from the setup wizard gets three projects that nobody, the admin included, sees in the project list. The records that do import carry placeholder text like "Voorbeeld Title 1" and owners like "Voorbeeld Owner 1" that are not real users.
  2. Every install seeds sample data. A fresh install, including production, gets three sample projects ("Client Portal v2", "Infrastructure Migration", "Onboarding Automation"), 12 columns, 5 tasks and 3 time entries, owned by admin with members jdoe, mvanderberg and ksmits.

Why

Read at development 6fa5ef5.

  • lib/Settings/planninq_mock_register.json:135, :155 and :175 give each demo project "members": []. The store keeps only projects whose members include the current user (src/store/projects.js:177), and project read access is scoped to members. So the projects are hidden.
  • The same file holds generated placeholder values. caseReference and task or column project fields point at nil-pattern uuids such as 00000000-0000-4000-8000-000000000000 that match no object (for example around :123-140).
  • :69-70 and :79-80 are dependency edges whose blocker and blocked are the same uuid, a task blocking itself. DependencyService rejects exactly that for users.
  • lib/Settings/planninq_register.json:1169 onward ships 28 objects in components.objects: 5 labels, and 23 sample projects, columns, tasks and time entries. RegisterImportService imports this file on install through the InitializeSettings repair step. lib/Service/DemoDataService.php:10-13 itself states that seeding example objects on install "is a defect, not a convenience".

Fix direction

  1. Keep only the five default labels in the main register. Move the sample projects, columns, tasks and time entries to the mock register.
  2. Rewrite the mock register by hand, or post-process it: put the loading admin in members and owner, link tasks and columns to the demo projects' real uuids, and drop self-edges.
  3. Add a test that fails on members: [] for a project and on blocker == blocked in any shipped register.

Live check

  1. On a clean instance, install Planninq and log in as admin. Expected today: three sample projects appear without anyone asking.
  2. Run the setup wizard's "load demo data" step. Expected today: the project list does not gain the "Voorbeeld" projects.
  3. Query /apps/openregister/api/objects/planninq/project as admin and see the "Voorbeeld" projects with empty members.

Matrix rows

plt-demo-data in openspec/parity/capabilities.json (PR #645).

Related: #194 (dashboard sample KPIs), #343 (e2e seed fixtures).

Activity

  1. github-actions commented on Sep 26, 2026

    @github-actions
    Contributor

    Thank you for opening this issue! It has been assigned to @rubenvdlinde for review.

    What happens next:

    1. A maintainer will review this issue and determine the appropriate action
    2. If accepted, it may be converted into an OpenSpec change for structured development
    3. You will be notified of any status changes

    Triage labels:

    • triage:accept-feature — accepted as a new feature
    • triage:accept-bugfix — accepted as a bug fix
    • triage:needs-info — more information needed
    • triage:wontfix — will not be addressed
    • triage:duplicate — duplicate of another issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingtriageAwaiting triage

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions