Summary
generateShareableProfileUrl() produces URLs like /id/qryptchatA1B2C3D4, but extractIdentifierFromUrl() still matches the old 10-character ID shape and uppercases the whole match before validation.
Reproduction
const id = "qryptchatA1B2C3D4";
const url = generateShareableProfileUrl(id, "https://qrypt.chat/");
extractIdentifierFromUrl(url); // null
Expected behavior
The generated URL should round-trip back to the original identifier. URLs with a trailing slash, query string, or hash should also extract the profile ID.
Impact
Profile share links and chat-initiation links can fail lookup even when generated by the app itself.
Summary
generateShareableProfileUrl()produces URLs like/id/qryptchatA1B2C3D4, butextractIdentifierFromUrl()still matches the old 10-character ID shape and uppercases the whole match before validation.Reproduction
Expected behavior
The generated URL should round-trip back to the original identifier. URLs with a trailing slash, query string, or hash should also extract the profile ID.
Impact
Profile share links and chat-initiation links can fail lookup even when generated by the app itself.