Skip to content

feat(groups): rosters and on-demand history for store-history messengers, more group settings, wa in parity - #1424

Open
leemour wants to merge 4 commits into
mainfrom
fix/groups-for-store-messengers
Open

leemour wants to merge 4 commits into
mainfrom
fix/groups-for-store-messengers

Conversation

@leemour

@leemour leemour commented Oct 17, 2026

Copy link
Copy Markdown
Collaborator

Task

Close the group and history gaps whatsapp-cli (wa) found in cli-core, and add wa to the parity manifest.

Why

wa keeps its history in the local store (history: "store"). cli-core treated that like --offline, so wa could not read group members or ask for older history of one chat. Its group switches and its all-or-nothing admin rights had no names here.

What

  • Members. chats members fetch and audit now refuse only with --offline, or when the adapter has no members. chats members list asks the adapter when it has members; otherwise it reads the stored members. tg and max already read from the server, so nothing changes for them.

  • Group settings. A new MoreGroupSettings type holds onlyAdminsSend, onlyAdminsEditInfo and disappearingSeconds. They come with chats update --only-admins-send, --only-admins-edit-info and --disappear-time <duration|off>, and with the same keys in MCP. A messenger offers them only when it lists them in groupSettings. They are a separate type so max-cli's Record<keyof GroupSettings> still compiles. That matters: Parity builds max main, so a type break would fail this release.

  • Admin rights. With Messenger.pickAdminRights: false, admins add has no --can and gives every right in adminRights. The MCP tool drops rights the same way.

  • On-demand history. With MessengerTraits.historyOnDemand: true, messages sync <chat> reaches the adapter's history, at most fetching.maxPageSize messages per request. messages sync --all is refused for every store-history messenger, before a background job starts.

  • Exports. ./cli exports GroupAdmin, ContactBook, ChatFolders, ChatDeletion, AccountSettings, AccountEditing, AccountRecords, ProfileChange, ProfilePhotos, MessagePermalinks and TopicHistory.

  • Parity. wa is in clis. Rows are placed from wa main's commands --json:

    • a reason where WhatsApp cannot do it (bot, server search, forum topics, one invite link, …);
    • a plan where wa should catch up (polls, flood, schedule, metadata, …);
    • this release's changed options planned for wa.

    The Parity workflow now builds whatsapp-cli too. app-ref.sh and the audit accept a repository name. The three new options are in the option-role lint baseline until cli-base gives them a role.

Testing

  • Full vitest run passes locally. New tests cover: members for a store-history messenger, the three settings, pickAdminRights in the CLI and MCP, and on-demand sync with its page cap and the --all refusal.
  • max-cli, tg-cli, cli-memo and whatsapp-cli main all build against this branch's packed tarball.
  • parityProblems reports 0 for max, tg and wa. That is wa main as of 0f17395, built against this branch. wa's --pages check passes. manifestProblems reports 0.
  • pnpm docs:check and the command lint pass.

🤖 Generated with Claude Code

leemour and others added 4 commits October 17, 2026 04:13
…settings, all-or-nothing admin rights

- chats members fetch and audit are refused only with --offline, not for every messenger with
  history: "store"; members list asks the adapter when it has `members`, else reads stored members.
  whatsapp-cli's adapter `members` was reachable only from chats moderate.
- MoreGroupSettings (onlyAdminsSend, onlyAdminsEditInfo, disappearingSeconds) with chats update
  --only-admins-send, --only-admins-edit-info and --disappear-time, offered only where a messenger
  lists them in groupSettings. A separate type so max-cli's Record<keyof GroupSettings> still compiles.
- Messenger.pickAdminRights: false drops admins add --can and gives every right in adminRights.
- ./cli exports GroupAdmin, ContactBook and the other capability types it lacked.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…historyOnDemand

Without it, archiveService.fetch refused every messenger with history: "store" before any connection,
so whatsapp-cli's on-demand history(chat, { limit, before }) was unreachable. --all stays refused for
them, now in the command before a background job starts.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
wa is a third CLI in parity.json, placed from wa main's commands --json: in `in` where it has a
row, a reason where WhatsApp cannot (bot, server search, forum topics, one invite link, ...), and a
plan where wa should catch up (polls, flood, schedule, metadata, ...). The options this release
changes for wa (chats update's three new switches, admins add --can) are planned for it, so wa main
and wa after the bump both pass. The Parity workflow builds whatsapp-cli too; app-ref.sh and the
audit take a repository name where it is not <cli>-cli. The shared lint program lists every group
setting, and the three new options sit in the option-role baseline until cli-base names their role.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@leemour
leemour force-pushed the fix/groups-for-store-messengers branch from 7a97df9 to 44c305c Compare October 17, 2026 02:14

This branch has not been deployed

No deployments
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