Files

3.3 KiB

name, description
name description
whatsapp-suite-development Maintain and extend Ghostwire, this repository's WhatsApp Desktop Python suite, WebView bridge, message exports and webhook listener. Use for implementation, debugging, packaging or documentation in this project.

Ghostwire development

Use the repository containing this file. It has two distributions of the same code: editable whatsapp_suite/ and generated portable whatsapp.py. The core path is Python ctypes → temporary Windows hook → bundled native DLL → existing WhatsApp WebView JavaScript. Core commands require no CDP or UI automation; separate research commands may use other transports.

Route the work

  • Read CONTRIBUTING.md for extension points, tests and native builds.
  • Read architecture when changing bridge discovery, transport or lifetimes.
  • Read webhooks when changing event schema, delivery, restoration or removal.
  • Consult validation before claiming a build or live behavior is supported.

Prefer the existing module/helper for the requested change. Python commands are registered in cli.COMMANDS; top-level modules are packaged automatically. New assets need explicit builder entries. Do not edit encoded bundle contents.

Preserve the contracts

  • Native addresses are fingerprint-discovered, but object fields and ABI assumptions remain. Build metadata is advisory; unsupported native layouts fail discovery.
  • Exports use the app's database getter and decoder, preserve decode errors and refuse existing outputs. They are local scans, not atomic full-account snapshots.
  • The send CLI is a fixed self-message test with recipient checks and a reserved receipt. An uncertain send is not automatically retried.
  • Webhook events remain queued until HTTP 2xx; consumers deduplicate IDs. Queue memory is lost on app exit.
  • Restoration means automatic reinjection by a per-user task, not persistent app memory. Do not patch WhatsApp's package or silently install startup automation.
  • The task recovers a DPAPI-protected token; transport credentials stay out of listener JavaScript, CLI arguments, reports and Git.
  • Short-lived bridge cleanup and resident webhook lifetime differ. A stopped webhook helper remains loaded until app exit; restart the app before testing a replacement DLL.

Complete the change

For code/assets/tests, run source tests, rebuild, then run portable tests:

python -m whatsapp_suite test
python build_whatsapp_bundle.py
python whatsapp.py test

Inspect skips; Node.js enables the JavaScript fixtures. Verify a new command's portable help. Native changes additionally need x64 compilation, updated Python/asset hashes and relevant authorized live validation. Document what was actually tested.

Documentation-only edits need accurate CLI examples and valid links, not a bundle rebuild. Keep tests synthetic and live side effects explicit. Existing user authorization controls the scope; this skill does not authorize sending messages, installing tasks, publishing, or changing remote services.

Review staged files before publication. Keep exports, real fixtures, profiles, credentials and research captures out of Git. Commit source and generated bundle together when their inputs change.