Skip to content

Latest commit

 

History

History
299 lines (224 loc) · 8.69 KB

FEATURE_CHECKLIST.md

File metadata and controls

299 lines (224 loc) · 8.69 KB

Feature Checklist

Manual verification checklist for tb-solid-pod. Assume features are broken until verified.

Organization

Items are ordered by dependency: if an early item fails, skip dependent items below it.

  • Levels 0-3: Foundational (app loads, store works, navigation, CLI)
  • Levels 4-10: Features (personas → contacts → groups → files → settings → type indexes → WebID)
  • Level 11: Future work (not implemented)

Within each level, items are grouped hierarchically (CLI, UI, Data) where it makes sense. You can verify a level's CLI commands, then its UI, then its data integrity—or work through all three together. Use whatever flow makes sense for what you're verifying.


How to Use

  1. Start from the top and work down
  2. If an item fails, note it and skip items that depend on it
  3. Check boxes as you verify each item works
  4. Uncheck boxes when something breaks
  5. Add [BROKEN] notes for known issues
  6. Within a level, verify CLI/UI/Data in any order that makes sense

Level 0: App Loads

If these fail, nothing else can be tested.

  • App loads without console errors
  • Browser tab title contains "tb-solid-pod"
  • Main UI renders (not blank page)

Level 1: Core Infrastructure

Foundation for all features.

  • TinyBase store initializes
  • Data persists after page refresh
  • LocalStorage contains app data
  • Export produces JSON file
  • Import loads JSON and populates store

Level 2: Navigation

Must work to access features.

  • Tab bar visible (Data Browser, Personas, Contacts, Groups, Terminal)
  • Clicking each tab shows correct view
  • Active tab is visually indicated
  • Terminal tab shows CLI prompt

Level 3: CLI Terminal

Required for CLI-based features. The same CLI runs in the browser (Terminal tab) and in Node (npm run cli). BDD tests cover both (Scenario Outline: browser | terminal).

  • CLI prompt accepts input
  • help command shows available commands
  • clear command clears terminal
  • Command history (up arrow) works
  • Unknown command shows error message
  • exit command quits Node CLI; in browser shows message that exit is terminal-only
  • In Node: export prints JSON; export --download writes file to cwd

Level 4: Personas

Foundation for identity. Required for contacts and authorship.

CLI

  • persona list shows personas (or empty message)
  • persona create <name> creates a persona
  • persona show <id> displays persona details
  • persona edit <id> modifies persona
  • persona delete <id> removes persona
  • persona set-default <id> sets default persona

UI

  • Personas tab shows list of personas
  • "Create" button opens PersonaForm
  • PersonaForm saves new persona
  • Clicking persona opens edit form
  • Delete button removes persona
  • Default persona indicator visible
  • "Create random" button populates form with sample data

Data

  • Persona data validates against PersonaSchema
  • Persona has @id, @type, foaf:name
  • Default persona ID stored in values

Level 5: Contacts

Depends on: Personas (for linking)

CLI

  • contact list shows contacts (or empty message)
  • contact add <name> creates a contact
  • contact show <id> displays contact details
  • contact edit <id> modifies contact
  • contact delete <id> removes contact
  • contact search <query> finds contacts by name/email

UI

  • Contacts tab shows list of contacts
  • Search/filter field filters contact list
  • "Create" button opens ContactForm
  • ContactForm saves new contact
  • Can toggle between person and agent type
  • Clicking contact opens edit form
  • Delete button removes contact
  • "Create random" button populates form with sample data

Data

  • Contact data validates against ContactSchema
  • Contact has @id, @type, vcard:fn
  • Agent contacts have agent-specific fields

Level 6: Groups

Depends on: Contacts (for membership), Personas (for membership)

CLI

  • group list shows groups (or empty message)
  • group create <name> creates a group
  • group show <id> displays group details
  • group edit <id> modifies group
  • group delete <id> removes group
  • group add-member <group> <contact> adds member
  • group remove-member <group> <contact> removes member
  • group list-members <group> shows members

UI

  • Groups tab shows list of groups
  • Type filter (All/Organizations/Teams/Groups) works
  • "Create" button opens GroupForm
  • GroupForm saves new group with type selection
  • Clicking group opens edit form
  • MembershipManager opens from group
  • Can add contacts as members
  • Can add personas as members
  • Can remove members
  • Member count displayed on group list
  • "Create random" button populates form with sample data

Data

  • Group data validates against GroupSchema
  • Group has @id, @type, vcard:fn
  • Membership stored correctly

Level 7: Files & Metadata

Depends on: Personas (for author attribution)

CLI

  • ls lists files/folders
  • cd <path> changes directory
  • pwd shows current path
  • mkdir <name> creates folder
  • touch <name> creates file
  • cat <file> shows file content
  • rm <path> removes file/folder
  • file info <path> shows metadata
  • file set-title <path> <title> sets title
  • file set-author <path> <persona> sets author
  • file set-description <path> <desc> sets description

UI

  • Data Browser shows file/folder tree
  • Clicking folder navigates into it
  • Clicking file shows content
  • FileMetadataPanel shows title, description, author
  • Can edit metadata fields
  • Author dropdown shows personas

Data

  • Resources stored in resources table
  • Files have type, body, contentType, parentId
  • Folders have type: ldp:Container

Level 8: Settings

Depends on: Core infrastructure

CLI

  • config list shows all settings
  • config get <key> shows setting value
  • config set <key> <value> changes setting
  • config reset resets to defaults
  • config reset <key> resets specific setting

Data

  • Settings stored in TinyBase values (not tables)
  • defaultPersonaId setting works
  • theme setting works
  • cliHistorySize setting works

Level 9: Type Indexes

Depends on: Personas (for type index links)

CLI

  • typeindex list shows registrations
  • typeindex show public shows public index
  • typeindex show private shows private index
  • typeindex register <type> <location> adds registration
  • typeindex unregister <type> removes registration

Data

  • Type indexes stored in typeIndexes table
  • Default registrations seeded on first load
  • Persona schema includes type index links

Level 10: WebID Profile

Depends on: Personas, Type Indexes

CLI

  • persona show <id> --full shows full WebID JSON
  • persona set-inbox <id> <url> sets inbox
  • persona set-typeindex <id> <url> sets public type index
  • persona set-typeindex <id> <url> --private sets private type index

UI

  • PersonaForm has collapsible "WebID / Solid profile" section
  • Can set OIDC issuer
  • Can set inbox URL
  • Can set preferences file URL
  • Can set public/private type index URLs

Data

  • Persona includes ldp:inbox when set
  • Persona includes pim:preferencesFile when set
  • Persona includes solid:publicTypeIndex when set
  • Persona includes solid:privateTypeIndex when set

Level 11: Future (Not Implemented)

Phase 8: Access Control

  • ACL schema exists
  • acl show <path> works
  • acl grant / acl revoke work
  • ACLPanel UI exists

Phase 9: Sync

  • Can connect to external Solid pod
  • Initial sync pushes local data
  • Ongoing sync works
  • Authority mode selectable

Testing Infrastructure

Unit Tests

  • npm test runs without errors
  • 392+ tests passing
  • Coverage meets 80% threshold

Storybook

  • npm run storybook starts without errors
  • PersonaList/Form stories render
  • ContactList/Form stories render
  • GroupList/Form/MembershipManager stories render
  • FileMetadataPanel stories render

BDD/E2E

  • npm run test:e2e runs (dev server required for browser scenarios; terminal scenarios run Node CLI)
  • App shell scenarios pass
  • CLI contact scenarios pass (browser and terminal)
  • CLI persona scenarios pass (browser and terminal)
  • CLI navigation scenarios pass (browser and terminal)

Last Full Verification

Date: ____________

Verified by: ____________

Notes: