Skip to content

H5P bridge polish (from the live field test) #9

Description

@aharlap

Two real findings from the 2026-07-08 real-browser H5P field test (examples/h5p-demo + pnpm field), both non-blocking — the bridge works end to end:

  • Learner timeline shows the raw subContentId, not the question title. The answered event's H5P question title ("Which fraction is largest?") IS captured — stored as the /q/<id> child activity's name — but the learner timeline's Detail column renders the raw id (abc-123). timelineDetail parses the id from the IRI; it should look up the stored child-activity name (like the funnel's stepLabels does) and fall back to the id. Same treatment would improve the funnel/answered rows.
  • Subscription race on the content-load attempted event. H5P fires attempted when content instantiates; Proof's bridge polls every 250ms to find H5P.externalDispatcher and subscribe. On a fast load the first attempted can fire before the subscription exists, so the initial 'Started' is missed (later interactions land fine). Options: shorten the initial poll cadence, subscribe eagerly if H5P is already present at init, or document that content-load starts may be missed. Low impact (answers/completions unaffected); worth a note in embed.md at minimum.

🤖 Generated with Claude Code

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