Skip to content

fix: support newer KakaoTalk Mac composer layouts - #8

Open
gmkseta wants to merge 8 commits into
silver-flight-group:mainfrom
gmkseta:fix/kakaotalk-composer-discovery
Open

fix: support newer KakaoTalk Mac composer layouts#8
gmkseta wants to merge 8 commits into
silver-flight-group:mainfrom
gmkseta:fix/kakaotalk-composer-discovery

Conversation

@gmkseta

@gmkseta gmkseta commented Apr 19, 2026

Copy link
Copy Markdown

Summary

  • support newer KakaoTalk Mac layouts where the Chats tab is exposed as AXButton instead of AXCheckBox
  • support chat lists exposed as AXOutline and looser display-name labels instead of only AXTable + _NS:18
  • wait briefly for the composer to appear and search recursively inside the non-message scroll area before failing send

Details

Root cause

On this machine, kakaocli send could still open the target chat, but failed at the final automation step with:

Could not find the message input field

The current automation assumes a narrower Accessibility tree than the one exposed by the current KakaoTalk Mac app:

  • the Chats tab may appear as AXButton
  • the chat list may be exposed as AXOutline
  • the composer may appear slightly later and can be nested deeper than one level inside the non-message AXScrollArea

What changed

  • accept either AXCheckBox or AXButton for the chatrooms tab in both send and inspect flows
  • treat both AXTable and AXOutline as valid chat list containers
  • relax chat row name matching so newer display-name labels are still discoverable
  • wait up to 5 seconds for the composer after the chat window opens
  • recursively search AXTextArea / AXTextField within the top-level non-table scroll area, preferring controls whose description contains Enter a message

Debug evidence

Using kakaocli inspect --open-chat <chat> --depth 5, the chat window on the affected machine exposes the composer as:

[AXWindow] title="성준"
  ...
  [AXScrollArea] id="_NS:47"
    [AXTextArea] desc="Enter a message" id="_NS:51"

The old code only checked direct children of the candidate scroll area once, immediately after the window appeared.

Test plan

  • swift build -c release succeeds
  • swift test passes
  • ./.build/release/kakaocli inspect --open-chat 성준 --depth 5 shows the composer AX tree on the affected machine
  • ./.build/release/kakaocli send 성준 "[codex-pr-test] upstream clone patched send" succeeds on the affected machine

@gmkseta

gmkseta commented Apr 20, 2026

Copy link
Copy Markdown
Author

Additional environment details from the affected machine:

  • macOS: 26.4.1 (25E253)
  • KakaoTalk Mac: 26.3.0 (1170)

Manual reproduction on this machine before the patch:

  • kakaocli send <chat> <message> opened the target chat but failed with Could not find the message input field

Relevant AX evidence captured with kakaocli inspect --open-chat 성준 --depth 5:

[AXWindow] title="성준" id="_NS:441"
  ...
  [AXScrollArea] id="_NS:47"
    [AXTextArea] desc="Enter a message" id="_NS:51"

Manual verification after this patch:

  • swift build -c release
  • swift test
  • ./.build/release/kakaocli send 성준 "[codex-pr-test] upstream clone patched send"

The last command succeeded on the affected machine.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant