protobuf v36 added `--<lang>_prefix=COMMAND`, which runs a protoc plugin
through a wrapper command instead of looking it up on PATH. That lets the
Go generator be declared in go.mod like every other tool dependency, so
its version is tracked in one place instead of three.
go-generate-fast rejects protoc flags it doesn't know, so the fork pin
moves to a commit that teaches it about --go_prefix.
Part of #7099.
applicationmetadata/ is an outer layer wrapping a payload with an app-specific metadata like a signature.
identity/ implements details related to creating a three-word name and identicon.
migrations/ contains implementation specific migrations for the sqlite database which is used by Messenger as a persistent data store.
Pinned communities bootstrap
Messenger can preload pinned communities at startup so a community is visible before any network fetch completes.
Source precedence:
If STATUS_GO_PINNED_COMMUNITIES_DIR is set, payloads are loaded from that directory (*.rawpayload.hex).
Otherwise, payloads embedded in the binary from pinned-communities/*.rawpayload.hex are used.
Runtime behavior:
Bootstrap runs only when the profile has no communities yet.
Bootstrap runs asynchronously during startup to avoid blocking app launch.
After import, each pinned community triggers a store-node refresh so pinned metadata is replaced by fresher network data.
History
Originally this package was a dedicated repo called status-protocol-go and was migrated into status-go. The new status-go/protocol package maintained its own dependencies until sub modules were removed and the root go.mod file managed all dependencies for the entire status-go repo.