You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Adopt pkc-js exclude.publicKeys / names / roles; exclude.address and exclude.role are removed #104
pkc-js removes the challenge exclude field exclude.address (pkcprotocol/pkc-js#267, PR pkcprotocol/pkc-js#294). It matched the runtime author.address, which is name || signerAddress built from the unresolved wire name, so a signer could match an owner/mod exclude keyed on a domain it does not own.
It is replaced by two explicit fields on community.settings.challenges[].exclude[] (and mirrored on the public community.challenges[].exclude[]):
publicKeys: string[] - key-derived author addresses (12D3Koo...), matched against the publication signature
names: string[] - author domains (user.bso, user.eth), resolved by the community at match time and required to resolve to the signer, regardless of resolveAuthorNames
exclude.address is rejected by the schema (ERR_CHALLENGE_EXCLUDE_ADDRESS_FIELD_REMOVED), so a community.edit() that still sends it fails. Existing private settings are migrated automatically by the community owner node at DB version 42 (the old array is split by kind). The roles map keys are unchanged.
What needs to change here
A code search did not find exclude.address in this repo, so this may only be a type/API bump. Please audit anything that builds or displays challenge excludes (community settings UI, default challenge configs, TypeScript types echoing ChallengeExclude) and switch to publicKeys / names when adopting the pkc-js release that includes #294. Closing this as "nothing to do" after the audit is fine.
Update: the exclude role field is also renamed: exclude.role -> exclude.roles. Every array-valued exclude field is now plural (publicKeys, names, roles, challenges). Anything that writes exclude.role (e.g. the default mod exclude { role: ['moderator', 'admin', 'owner'] }) must write roles, and read-only views should read roles. Migration of stored settings happens on the community owner node at DB version 42.
changed the title [-]Adopt pkc-js exclude.signerAddress / exclude.name; exclude.address is removed[/-][+]Adopt pkc-js exclude.publicKeys / names / roles; exclude.address and exclude.role are removed[/+]on Aug 26, 2026
Audited against @pkcprotocol/pkc-js 0.0.101, which includes pkcprotocol/pkc-js#294 (ChallengeExcludeSchema has publicKeys, names and roles; ChallengeExcludeSettingSchema rejects address and role).
The dependency was upgraded to 0.0.101 in 6d10e02 (shipped in 0.1.46).
The only place this repo wrote a challenge exclude was the browser e2e "create pending approval community" test. It was switched from role to roles in 1afe115.
src/ never builds, reads, displays or types challenge excludes. community.edit() / publishCommunityEdit pass settings through unchanged, the wordfilter code reads only challenges[].publicOptions, and the pkc-js mocks define no excludes. src/types.ts has no ChallengeExclude type, and the README and docs show no exclude examples.
Activity
[-]Adopt pkc-js exclude.signerAddress / exclude.name; exclude.address is removed[/-][+]Adopt pkc-js exclude.publicKeys / names / roles; exclude.address and exclude.role are removed[/+]tomcasaburi commentedon Oct 10, 2026
Audited against
@pkcprotocol/pkc-js0.0.101, which includes pkcprotocol/pkc-js#294 (ChallengeExcludeSchemahaspublicKeys,namesandroles;ChallengeExcludeSettingSchemarejectsaddressandrole).roletorolesin 1afe115.src/never builds, reads, displays or types challenge excludes.community.edit()/publishCommunityEditpass settings through unchanged, the wordfilter code reads onlychallenges[].publicOptions, and the pkc-js mocks define no excludes.src/types.tshas noChallengeExcludetype, and the README and docs show no exclude examples.Nothing else to change, so I'm closing this.