# Device name that's shown in the "WhatsApp Web" section in the mobile app.
os_name: Mautrix-WhatsApp bridge
# Browser name that determines the logo shown in the mobile app.
# Must be "unknown" for a generic icon or a valid browser name if you want a specific icon.
# List of valid browser names: https://github.com/tulir/whatsmeow/blob/efc632c008604016ddde63bfcfca8de4e5304da9/binary/proto/def.proto#L43-L64
browser_name: unknown

# Proxy to use for all WhatsApp connections.
proxy: null
# Alternative to proxy: an HTTP endpoint that returns the proxy URL to use for WhatsApp connections.
get_proxy_url: null
# Whether the proxy options should only apply to the login websocket and not to authenticated connections.
proxy_only_login: false

# Displayname template for WhatsApp users.
# {{.PushName}}      - nickname set by the WhatsApp user
# {{.BusinessName}}  - validated WhatsApp business name
# {{.Phone}}         - phone number (international format)
# {{.RedactedPhone}} - phone number with middle digits replaced by "∙"
# {{.FullName}}      - Name you set in the contacts list
displayname_template: '{{or .BusinessName .PushName .Phone .RedactedPhone "Unknown user"}} (WA)'

# Should incoming calls send a message to the Matrix room?
call_start_notices: true
# Should another user's cryptographic identity changing send a message to Matrix?
identity_change_notices: false
# Should the bridge mark you as online on WhatsApp when you send typing notifications?
# Full presence bridging is not supported.
send_presence_on_typing: false
# Should WhatsApp status messages be bridged into a Matrix room?
enable_status_broadcast: true
# Should sending WhatsApp status messages be allowed?
# This can cause issues if the user has lots of contacts, so it's disabled by default.
disable_status_broadcast_send: true
# Should the status broadcast room be muted and moved into low priority by default?
# This is only applied when creating the room, the user can unmute it later.
mute_status_broadcast: true
# Tag to apply to pinned chats on WhatsApp.
pinned_tag: m.favourite
# Tag to apply to archived chats on WhatsApp.
# Set to m.lowpriority to move them to low priority.
archive_tag:
# Tag to apply to the status broadcast room.
status_broadcast_tag: m.lowpriority
# Should the bridge use thumbnails from WhatsApp?
# They're disabled by default due to very low resolution.
whatsapp_thumbnail: false
# Should the bridge detect URLs in outgoing messages, ask the homeserver to generate a preview,
# and send it to WhatsApp? URL previews can always be sent using the `com.beeper.linkpreviews`
# key in the event content even if this is disabled.
url_previews: false
# Should polls be sent using unstable MSC3381 event types?
extev_polls: false
# Should view-once messages be disabled entirely?
disable_view_once: false
# Should the bridge always send "active" delivery receipts (two gray ticks on WhatsApp)
# even if the user isn't marked as online (e.g. when presence bridging isn't enabled)?
#
# By default, the bridge acts like WhatsApp web, which only sends active delivery
# receipts when it's in the foreground.
force_active_delivery_receipts: false
# When direct media is enabled and a piece of media isn't available on the WhatsApp servers,
# should it be automatically requested from the phone?
direct_media_auto_request: true
# Should the bridge automatically reconnect if it fails to connect on startup?
initial_auto_reconnect: true

# Settings for converting animated stickers.
animated_sticker:
    # Format to which animated stickers should be converted.
    # disable - No conversion, just unzip and send raw lottie JSON
    # png - converts to non-animated png (fastest)
    # gif - converts to animated gif
    # webm - converts to webm video, requires ffmpeg executable with vp9 codec and webm container support
    # webp - converts to animated webp, requires ffmpeg executable with webp codec/container support
    target: webp
    # Arguments for converter. All converters take width and height.
    args:
        width: 320
        height: 320
        fps: 25 # only for webm, webp and gif (2, 5, 10, 20 or 25 recommended)

# Settings for handling history sync payloads.
history_sync:
    # How many conversations should the bridge create after login?
    # If -1, all conversations received from history sync will be bridged.
    # Other conversations will be backfilled on demand when receiving a message.
    max_initial_conversations: -1
    # Should the bridge request a full sync from the phone when logging in?
    # This bumps the size of history syncs from 3 months to 1 year.
    request_full_sync: false
    # Time to wait for history sync payloads before starting backfill. Each new payload resets the timer.
    # If this is too low, the backfill may happen with incomplete history
    # and backfill less messages than what is configured in the backfill section.
    dispatch_wait: 1m
    # Configuration parameters that are sent to the phone along with the request full sync flag.
    # By default, (when the values are null or 0), the config isn't sent at all.
    full_sync_config:
        # Number of days of history to request.
        # The limit seems to be around 3 years, but using higher values doesn't break.
        days_limit: null
        # This is presumably the maximum size of the transferred history sync blob, which may affect what the phone includes in the blob.
        size_mb_limit: null
        # This is presumably the local storage quota, which may affect what the phone includes in the history sync blob.
        storage_quota_mb: null
    # Settings for media requests. If the media expired, then it will not be on the WA servers.
    # Media can always be requested by reacting with the ♻️ (recycle) emoji.
    # These settings determine if the media requests should be done automatically during or after backfill.
    media_requests:
        # Should the expired media be automatically requested from the server as part of the backfill process?
        auto_request_media: true
        # Whether to request the media immediately after the media message is backfilled ("immediate")
        # or at a specific time of the day ("local_time").
        request_method: immediate
        # If request_method is "local_time", what time should the requests be sent (in minutes after midnight)?
        request_local_time: 120
        # Maximum number of media request responses to handle in parallel per user.
        max_async_handle: 2
