Current Limitations
Xianji is a working prototype. The trial engine and its timing are verified; much of the surrounding workflow is not built. Read this before planning around the system.
No session history
Section titled “No session history”Sessions are written to the device database, but no screen lists past sessions or shows a trend over time. Once you leave the results screen, the number is not visible anywhere in the app.
Write results down at the end of every session.
No session data export
Section titled “No session data export”Export exists only in the timing harness. Trial-level data from real sessions — offsets, timestamps, responses, reaction times — cannot currently be retrieved through the app. It is all stored, but pulling it out requires direct access to the device database.
No athlete management
Section titled “No athlete management”There are no athlete names, no switching, and no per-athlete history. All sessions pool into a single implicit athlete.
If you test more than one person, keep your own records. The app cannot tell them apart.
No teaching mode
Section titled “No teaching mode”The progressive-occlusion demo — the same shot shown at successively earlier cut points, which is the most persuasive way to show a squad what the test does — is specified but not built.
No automatic contact detection
Section titled “No automatic contact detection”Contact frames are found by hand. The computer-vision pipeline is specified but not written, so preparing a footage set is currently the most time-consuming step.
Only annotated shots can be tested
Section titled “Only annotated shots can be tested”Sessions draw only from shots whose contact frame a human has confirmed. An unconfirmed frame is a detector candidate, and a threshold measured from one would be displaced by whatever the detector got wrong — so those shots are excluded rather than warned about.
If nothing is available, the setup screen says which action is needed: import footage, or annotate the footage already imported.
Session-level gaps
Section titled “Session-level gaps”- No footage selection — sessions draw from all imported footage for the sport. Keep only what you intend to test against on the device
- No sport picker — the app uses the first configured sport
- No opponent management — opponent ids from the manifest create placeholder records with no way to name or review them
- No re-annotation — a confirmed shot never reappears in the annotation queue, and an excluded shot cannot be restored
- Warnings appear after import, not before. Delete and re-import if a warning is serious
- Language choice is not saved between launches
Known defects
Section titled “Known defects”| Issue | Impact | Workaround |
|---|---|---|
| Footage imported before the manifest directory was recorded cannot locate its clips | Those shots are unavailable for sessions | Re-import the footage. The setup screen names the count when this applies |
| Some error and warning messages are English-only | Chinese interface shows mixed languages | None |
Sport support
Section titled “Sport support”| Sport | Status |
|---|---|
| Badminton singles | Working. Timing verified, full workflow available |
| Tennis serve return | Configuration only — not usable. See Tennis Status |