Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

[QTI] Editing a question keeps the interaction attributes the editor doesn't set

Open
#6,287 0 comments 1 reaction 1 assignee View on GitHub

Maintainers usually reply within 1 day

@rtibblesbot is already working on this.

Since Oct 5, 2026.

Assessment

This issue has not been assessed yet.

Description

bug

❌ This issue is not open for contribution. Visit Contributing guidelines to learn about the contributing process and how to find suitable issues.

Target branch: unstable

Observed behavior

The first edit to a QTI question rewrites its interaction element with only the attributes its builder sets. Any other attribute is dropped.

  • Text entry: buildTextEntryInteractionXML writes only response-identifier and expected-length.
  • Every legacy input question converted by convert.py carries placeholder-text="Enter your answer here", which is lost.
  • Choice: the builder drops class, so class="qti-labels-upper-alpha" is lost.

Errors and logs

None.

Expected behavior

An edit keeps every attribute on the interaction element that the editor doesn't set.

User-facing consequences

Learners see a question that differs from the one uploaded, e.g. an answer field without its placeholder, or choices without their labels.

Steps to reproduce

  1. Open an exercise with a legacy input question that was converted to QTI.
  2. Click Edit and change a hint.
  3. Inspect the emitted raw_data: <qti-text-entry-interaction> has no placeholder-text.

Acceptance Criteria

  • Editing a converted text entry question keeps placeholder-text.
  • Editing a choice question keeps a class on <qti-choice-interaction>.
  • Tests cover both cases through parse, build and assemble.

AI usage

Claude Code found this while reviewing the #6225 branch and drafted this issue. Both losses were reproduced under Jest by parsing an item, rebuilding it with its descriptor and assembling it.

Dominant language
Python
Stars
191
Forks
308
Avg merge
2d 14h
Merged PRs (30d)
57

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from learningequality/studio

All issues in learningequality/studio

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.