Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
RunicPortals
Permission-aware named portal networks with native Valheim ownership and vanilla Standard Pair fallback.
CHANGELOG
Changelog
1.1.0 - 2026-08-31
- Added an optional, reflection-only Runic Sentinel security bridge without making Sentinel a required dependency. Rejected malformed, identity-unbound, or replay-conflicting portal requests can now contribute trusted evidence to Sentinel's bounded automatic-enforcement policy.
- Kept ordinary portal permission denials out of cheat escalation: being outside a ward, group, or network permission is a normal authorization failure and is never treated as proof of cheating.
1.0.0 - 2026-08-29
-
Fixed the first network-portal entry on a dedicated client reporting that no destinations were available until the player had traveled through a vanilla portal. The authenticated client now asks the server to force-send only the matching portal records it may discover and arrive at, then waits briefly for the complete authorized network before drawing the picker map.
-
Kept the first-use directory request bounded, retry-limited, source-revision checked, peer-character authenticated, network-scoped, and filtered by portal and ward permissions.
-
Fixed dedicated-client long-distance Runic routes being denied whenever the destination zone was unloaded and therefore had no local
PrivateAreaevidence. -
Separated Public/private/Group policy authorization, source ward authorization, destination ward authorization, and route-revision evidence so failures report the correct reason.
-
Public remains the default travel policy; Private remains recorded-owner-only; Group travel uses the current authenticated server membership snapshot and fails closed when it is unavailable.
-
Kept source/edit wards strict and kept known hostile loaded destination wards denied, while an unloaded remote destination is no longer rejected solely because its ward state is unknown.
-
Applied the same remote-destination rule to the picker, world-wide directory, and final commit.
-
Made Runic Portals independently installable with BepInEx as its only runtime dependency.
-
Removed the Core registry, capability negotiation, protocol admission, account binding, portal transport, durable edit intents, mutation WAL, recovery, quarantine, and source-protection leases.
-
Moved portal edits and travel to Valheim's native local portal/player ownership paths without claiming or transferring ownership.
-
Kept Standard Pair routing separate from public, private, and Group named networks.
-
Kept permission-filtered map directories, walk-in destination selection, direction rules, one-way acknowledgement, return routes, setup UI, and bounded diagnostics.
-
Compiled the limited group domain code needed by this mod into
RunicPortals.dll; no shared Runic runtime assembly is produced. -
Added one bounded, namespaced Group request/response channel. The server authenticates its actor from the current peer's owned Player character ZDO and keeps request/replay state only in memory.
-
Preserved existing portal ZDO keys and record schemas plus the prior world-scoped group catalog and active-selection file formats and locations.
-
Added an optional reflection-friendly Group membership API for other gameplay mods.
-
Replaced the obsolete durability and remote-owner harness with 19 focused format, routing, ownership, RPC-authentication, and architecture tests.