fix: close what the style review found, starting with a gate the metadata skipped
The real defect first. RefreshDatabaseMetadata was the one worker of six that never took the shared lock, and its flag was the one of six missing from the tab's busy state. It calls MessageCount, which holds the read lock, so a wipe could start while it was in there -- and the tab would not have known to grey the button, because it could not see the worker. Both halves fixed. The pattern is why: seven near-copies of one worker skeleton, and each copy decided something slightly different. The clear button failed silently when its thread could not start. The most destructive control in the plugin, pressed, and nothing happens, with no way to tell that from a wipe that worked -- while the three harmless workers beside it do report. Maintenance was the mirror: its comment promises refusals are said out loud, and then swallowed the actual failure. Three start-failure paths also bypassed the notify helper that carries the teardown check, three weeks after it was added for exactly that. The database numbers now wait for a real read, like the clear hint already did. Zero bytes and zero messages read as an empty database, not as a number nobody has fetched. SelectionAfterDelete is gone, with its three tests. The accordion has no selection, so its return value went into a discard -- a function answering a question the interface does not ask, with green tests guarding nothing. The project's own self-test README calls that the anti-pattern of record. Six new keys replaced by the translated orphans that already said the same thing. A commit earlier in this cycle is literally called "stop duplicating a key" and these went past it. The duplicate button also had the label "Add", which is the one string out of ninety-four that was never written. Tests: CleanupDeleteTypes had none, and with the failsafe on -- how a fresh config ships -- it is the path every cleanup takes. Four now, including the one that matters: an empty list deletes nothing rather than everything. And a self-test for the gate wiring, which is what would have caught the metadata worker. The unit tests prove the gate works; nothing proved the workers use it.
This commit is contained in:
@@ -1094,12 +1094,6 @@
|
||||
<data name="Settings_Emotes_Block" xml:space="preserve">
|
||||
<value>차단</value>
|
||||
</data>
|
||||
<data name="Settings_NotifyFailedTell_Name" xml:space="preserve">
|
||||
<value>귓속말이 전달되지 않으면 알림</value>
|
||||
</data>
|
||||
<data name="Settings_NotifyFailedTell_Description" xml:space="preserve">
|
||||
<value>게임은 귓속말 실패를 로그에만 표시합니다. 이 설정은 대신 알림을 띄워, 오프라인이거나 다른 월드에 있는 상대에게 보낸 메시지를 놓치지 않게 합니다.</value>
|
||||
</data>
|
||||
<data name="ChatLog_ScrollToBottom_Tooltip" xml:space="preserve">
|
||||
<value>최신 메시지로 이동</value>
|
||||
</data>
|
||||
@@ -1163,9 +1157,6 @@
|
||||
<data name="Settings_Section_License" xml:space="preserve">
|
||||
<value>라이선스</value>
|
||||
</data>
|
||||
<data name="Settings_General_ReduceMotion_Description" xml:space="preserve">
|
||||
<value>테마 전환 효과, 마우스 오버 페이드, 떠다니는 입자를 끕니다.</value>
|
||||
</data>
|
||||
<data name="Settings_Keybinds_Hint" xml:space="preserve">
|
||||
<value>버튼을 클릭한 뒤 키 조합을 누르세요. Esc로 지웁니다.</value>
|
||||
</data>
|
||||
@@ -1223,12 +1214,6 @@
|
||||
<data name="Settings_Window_PopoutTitleBar_Name" xml:space="preserve">
|
||||
<value>팝아웃 창의 제목 표시줄 보이기</value>
|
||||
</data>
|
||||
<data name="Settings_Window_InactiveOpacity_Name" xml:space="preserve">
|
||||
<value>비활성 상태 불투명도</value>
|
||||
</data>
|
||||
<data name="Settings_Window_InactiveOpacity_Description" xml:space="preserve">
|
||||
<value>다른 창이 포커스를 가진 동안 적용됩니다.</value>
|
||||
</data>
|
||||
<data name="Settings_Window_AllowMove_Name" xml:space="preserve">
|
||||
<value>이동 허용</value>
|
||||
</data>
|
||||
@@ -1307,9 +1292,6 @@
|
||||
<data name="Settings_Theme_ImportFile" xml:space="preserve">
|
||||
<value>테마 파일 가져오기…</value>
|
||||
</data>
|
||||
<data name="Settings_Theme_ExportActive" xml:space="preserve">
|
||||
<value>현재 테마 내보내기…</value>
|
||||
</data>
|
||||
<data name="Settings_Theme_ImportPathHint" xml:space="preserve">
|
||||
<value>JSON 파일 경로 (또는 폴더로 끌어다 놓기)</value>
|
||||
</data>
|
||||
@@ -1343,4 +1325,7 @@
|
||||
<data name="Settings_Preview_TypeAMessage" xml:space="preserve">
|
||||
<value>메시지를 입력하세요...</value>
|
||||
</data>
|
||||
<data name="Settings_Tabs_Duplicate" xml:space="preserve">
|
||||
<value>복제</value>
|
||||
</data>
|
||||
</root>
|
||||
Reference in New Issue
Block a user