Repository navigation
fix(dvk): preserve quoted names ending in =, and stop doubling accessibility events. Principle VIII. - #6264
Merged
Conversation
…ssibility events stand alone. Principle VIII. Landing pass on #6264. Parser (maintainer: keep the token rule, tighten it) - The closing-quote test is a named predicate: a token closes the open value unless it opens another quoted field, and a token whose only quote is its last character always closes (endsWith && count == 1, which states what the first-quote-position test meant). - The function comment now describes that rule, including the one shape it cannot tell apart: on a malformed line a lone `label="` reads as the close, exactly as a valid name ending in '=' does. A new test pins that case, and that the keys after it survive. - The looped `=`-name assertions carry the name in their label, so a failure says which name broke. Accessibility (maintainer: fold the #6262 review finding into #6264) - setAccessibleName() and QLabel::setText() emit NameChanged themselves. The panel's extra coalesced F-key event and its manual status events are gone; F-key and row names are set only when they change. - The status label's accessible name carries the last announced state, so each state change is one NameChanged and the 10 Hz elapsed-time text and transfer progress add none. - dvk_panel_admission_test counts NameChanged through QAccessible::installUpdateHandler: a load of unchanged slots emits none on the F-keys, a rename emits one, a state change is one status event with no tick events after it, and disconnect emits one status event plus one for the renamed slot. Against the previous panel, three of those checks fail. dvk_model_status_test 56/56, dvk_panel_admission_test 11/11, dvk_panel_theme_test 33/33. Full ctest passes except control_receive_test, whose fix (#6263) landed on main after this branch's base. Architecture gates read the same on base and head. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
11 tasks done
2 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes the quoted-name regression introduced by #6262, which its review found, and folds in that review's accessibility finding (maintainer call).
Parser. Given
id=1 name="CQ a=" duration=1000, the parser reada="as the start of another quoted field, and the DVK model displayedCQ.CQ a=,CQ =andCQ a= b=stay whole, and the followingdurationsurvives.label="reads as the close, because it looks exactly like a valid name ending in=. A test pins that case and checks that the keys after it survive.bar="x".Accessibility.
setAccessibleName()andQLabel::setText()emitNameChangedthemselves, and the panel was adding events of its own on top. The review measured 2 events for a single rename and 12–24 for a slot load or disconnect.Constitution principle honored
Principle VIII. Each claim is backed by a test that fails without the change. FlexLib's DVK status parsing keeps everything between the quotes, equals signs included (Principle I).
Validation
Parser: against the merged
bc1d7b80f, the new assertions fail 6 of 55, one per name ending in=. With this fix,dvk_model_status_testpasses 56/56, with each looped assertion naming its value.Accessibility events:
dvk_panel_admission_test(11/11) countsNameChangedevents throughQAccessible::installUpdateHandler:Against the previous panel, three of these fail.
dvk_panel_theme_testpasses 33/33.Full
ctest: passes exceptcontrol_receive_test. Its fix (fix(tests): RTL tests follow the qualified-WFM gate and build without the RTL backend. Principle XI. #6263) landed onmainafter this branch's base.Static gates: engine boundary, capability records, command plane, touchpoint manifest, test registration and the CI gate read identically on the merge base and the head.
check_a11yreports nothing onDvkPanel.Not verified: socket-free and offscreen only. No live radio, no transmitting, and no real screen reader.
Checklist
Authored with OpenAI Codex. Landed with Claude Code.
🤖 Generated with Claude Code