# Hookshot Room Targeting Discovery
# Generated: 2026-04-09 (Phase 6.0, Questions 5 + 7)
#
# NOTE: Hookshot is BLOCKED for this use case (E2EE + MAS incompatibility).
# This file documents targeting mechanics for completeness.

## Per-Room vs Wildcard Configuration

### Per-Room Model

Hookshot uses a per-room connection model. Each outbound webhook is stored as a
Matrix room state event (type: `uk.half-shot.matrix-hookshot.generic.hook`).

To add an outbound webhook to a room:
1. Invite hookshot bot to the room
2. Create a webhook connection via bot command or state event
3. Each room gets its own URL + auth token

### NO Wildcard / All-Rooms Option

There is NO built-in wildcard, glob, or "all rooms the bot is in" option.
Each room must be individually configured.

### Static Connections (Config File)

Connections CAN be defined statically in config.yml:
```yaml
connections:
  - connectionType: uk.half-shot.matrix-hookshot.generic.hook
    stateKey: archive-hook
    roomId: "!XUeWZuPdWQQnUYLJBJ:echo6.co"
    state:
      name: Signal Archive
```

But each roomId must be specified explicitly. No pattern matching.

### Space Membership

No space-following option. Hookshot cannot be configured to "archive all rooms
in the Signal Bridge space."

## Workflow for Auto-Created Portals

Given that mautrix-signal auto-creates portals on incoming messages:

1. Hookshot would need to be invited to each new portal
2. An outbound webhook connection would need to be created per portal
3. No automation path exists for this within hookshot itself
4. Would require external automation:
   - Monitor Synapse for new rooms matching bridge namespace
   - Invite hookshot bot
   - Create webhook connection via hookshot API or state event
   - This is essentially building the custom bot that Phase 6 originally proposed

## Current Portal List (Question 7)

6 portals as of 2026-04-09:

| Signal Group | Matrix Room ID | Type |
|-------------|----------------|------|
| (DM 1) | !tSvEWQcXxJItLGAXDr:echo6.co | dm |
| (DM 2) | !hiDxGpfsYESpVDQXKW:echo6.co | dm |
| COMMS LP group | !XUeWZuPdWQQnUYLJBJ:echo6.co | group |
| Left Preppers | !JfxIRowNkLbBlNPjVX:echo6.co | group |
| Liberal_Preppers_OG | !RvWNPmcKtPImhKPYcA:echo6.co | group |
| The Weekly Topic | !vBXtbgfYcptEuimrmn:echo6.co | group |

More portals will auto-create as messages arrive in other Signal groups.

## Can Hookshot Join Existing Rooms?

Yes — hookshot can be invited to existing rooms after the fact, not just newly
created ones. The outbound webhook connection is created per-room regardless
of when the room was created. No migration path needed beyond:
1. Invite bot
2. Create connection
3. Events forward from that point (no backfill)

## Backfill Limitation

Hookshot outbound webhooks only forward NEW events from the point of connection.
Historical events already in the room are NOT replayed. Any archive tool that
needs historical data must use Synapse's admin API or database access.

## Source

- https://matrix-org.github.io/matrix-hookshot/latest/usage/room_configuration.html
- https://github.com/matrix-org/matrix-hookshot/blob/main/config.sample.yml
