···11-export * from "./types";
22-export * from "./atproto-client";
33-export * from "./storage";
44-export * from "./blob-migration";
11+export * from "./types.ts";
22+export * from "./atproto-client.ts";
33+export * from "./storage.ts";
44+export * from "./blob-migration.ts";
55export {
66 createInboundMigrationFlow,
77 type InboundMigrationFlow,
88-} from "./flow.svelte";
88+} from "./flow.svelte.ts";
99export {
1010 clearOfflineState,
1111 createOfflineInboundMigrationFlow,
1212 getOfflineResumeInfo,
1313 hasPendingOfflineMigration,
1414-} from "./offline-flow.svelte";
1515-export type { OfflineInboundMigrationFlow } from "./offline-flow.svelte";
1414+} from "./offline-flow.svelte.ts";
1515+export type { OfflineInboundMigrationFlow } from "./offline-flow.svelte.ts";
···11-export * from "./types";
22-export * from "./flow.svelte";
11+export * from "./types.ts";
22+export * from "./flow.svelte.ts";
33export { default as VerificationStep } from "./VerificationStep.svelte";
44export { default as KeyChoiceStep } from "./KeyChoiceStep.svelte";
55export { default as DidDocStep } from "./DidDocStep.svelte";
+1-1
frontend/src/lib/serverConfig.svelte.ts
···11-import { api } from "./api";
11+import { api } from "./api.ts";
2233interface ServerConfigState {
44 serverName: string | null;
···150150 "email": "Email",
151151 "emailAddress": "Email Address",
152152 "emailPlaceholder": "you@example.com",
153153+ "emailInUseWarning": "This email is already associated with another account. You can still use it, but for account recovery you may need to use your handle instead.",
153154 "discord": "Discord",
154155 "discordId": "Discord User ID",
155156 "discordIdPlaceholder": "Your Discord user ID",
156157 "discordIdHint": "Your numeric Discord user ID (enable Developer Mode to find it)",
158158+ "discordInUseWarning": "This Discord ID is already associated with another account.",
157159 "telegram": "Telegram",
158160 "telegramUsername": "Telegram Username",
159161 "telegramUsernamePlaceholder": "@yourusername",
162162+ "telegramInUseWarning": "This Telegram username is already associated with another account.",
160163 "signal": "Signal",
161164 "signalNumber": "Signal Phone Number",
162165 "signalNumberPlaceholder": "+1234567890",
163166 "signalNumberHint": "Include country code (eg., +1 for US)",
167167+ "signalInUseWarning": "This Signal number is already associated with another account.",
164168 "notConfigured": "not configured",
165169 "inviteCode": "Invite Code",
166170 "inviteCodePlaceholder": "Enter your invite code",
···275279 "currentEmail": "Current: {email}",
276280 "newEmail": "New Email",
277281 "newEmailPlaceholder": "new@example.com",
282282+ "emailInUseWarning": "This email is already used by another account. You can still use it, but account recovery may require your handle.",
278283 "changeEmailButton": "Change Email",
279284 "requesting": "Requesting...",
280285 "verificationCode": "Verification Code",
···437442 "noCodes": "No invite codes yet",
438443 "available": "Available",
439444 "used": "Used by @{handle}",
445445+ "spent": "Spent",
440446 "disabled": "Disabled",
441447 "usedBy": "Used by",
442448 "disableConfirm": "Disable this invite code? It can no longer be used.",
···577583 "hideHistory": "Hide History",
578584 "noMessages": "No messages found.",
579585 "sent": "sent",
580580- "failed": "failed"
586586+ "failed": "failed",
587587+ "discordInUseWarning": "This Discord ID is already associated with another account.",
588588+ "telegramInUseWarning": "This Telegram username is already associated with another account.",
589589+ "signalInUseWarning": "This Signal number is already associated with another account."
581590 },
582591 "repoExplorer": {
583592 "title": "Repository Explorer",
···777786 "subtitle": "Select an account to continue",
778787 "useAnother": "Use a different account"
779788 },
789789+ "register": {
790790+ "title": "Create Account",
791791+ "subtitle": "Create an account to continue to",
792792+ "subtitleGeneric": "Create an account to continue",
793793+ "haveAccount": "Already have an account? Sign in"
794794+ },
780795 "twoFactor": {
781796 "title": "Two-Factor Authentication",
782797 "subtitle": "Additional verification is required",
···887902 "sendCode": "Send Reset Code",
888903 "sending": "Sending...",
889904 "codeSent": "Password reset code sent! Check your preferred notification channel.",
905905+ "multipleAccountsWarning": "Multiple accounts share this email. The reset code was sent to the most recently created account. Use your handle instead for a specific account.",
890906 "enterCode": "Enter the code you received and your new password.",
891907 "code": "Reset Code",
892908 "codePlaceholder": "Enter reset code",
+24-2
frontend/src/locales/fi.json
···150150 "email": "Sähköposti",
151151 "emailAddress": "Sähköpostiosoite",
152152 "emailPlaceholder": "sinä@esimerkki.fi",
153153+ "emailInUseWarning": "Tämä sähköposti on jo yhdistetty toiseen tiliin. Voit silti käyttää sitä, mutta tilin palauttamiseen saatat joutua käyttämään käsittelynimeäsi.",
153154 "discord": "Discord",
154155 "discordId": "Discord-käyttäjätunnus",
155156 "discordIdPlaceholder": "Discord-käyttäjätunnuksesi",
156157 "discordIdHint": "Numeerinen Discord-käyttäjätunnuksesi (ota Kehittäjätila käyttöön löytääksesi sen)",
158158+ "discordInUseWarning": "Tämä Discord-tunnus on jo yhdistetty toiseen tiliin.",
157159 "telegram": "Telegram",
158160 "telegramUsername": "Telegram-käyttäjänimi",
159161 "telegramUsernamePlaceholder": "@käyttäjänimesi",
162162+ "telegramInUseWarning": "Tämä Telegram-käyttäjänimi on jo yhdistetty toiseen tiliin.",
160163 "signal": "Signal",
161164 "signalNumber": "Signal-puhelinnumero",
162165 "signalNumberPlaceholder": "+358401234567",
163166 "signalNumberHint": "Sisällytä maakoodi (esim. +358 Suomelle)",
167167+ "signalInUseWarning": "Tämä Signal-numero on jo yhdistetty toiseen tiliin.",
164168 "notConfigured": "ei määritetty",
165169 "inviteCode": "Kutsukoodi",
166170 "inviteCodePlaceholder": "Syötä kutsukoodisi",
···275279 "currentEmail": "Nykyinen: {email}",
276280 "newEmail": "Uusi sähköposti",
277281 "newEmailPlaceholder": "uusi@esimerkki.fi",
282282+ "emailInUseWarning": "Tämä sähköposti on jo toisen tilin käytössä. Voit silti käyttää sitä, mutta tilin palauttaminen voi vaatia käsittelynimeäsi.",
278283 "changeEmailButton": "Vaihda sähköposti",
279284 "requesting": "Pyydetään...",
280285 "verificationCode": "Vahvistuskoodi",
···437442 "noCodes": "Ei vielä kutsukoodeja",
438443 "available": "Saatavilla",
439444 "used": "Käyttänyt @{handle}",
445445+ "spent": "Käytetty",
440446 "disabled": "Poistettu käytöstä",
441447 "usedBy": "Käyttänyt",
442448 "disableConfirm": "Poista tämä kutsukoodi käytöstä? Sitä ei voi enää käyttää.",
···577583 "hideHistory": "Piilota historia",
578584 "noMessages": "Viestejä ei löytynyt.",
579585 "sent": "lähetetty",
580580- "failed": "epäonnistui"
586586+ "failed": "epäonnistui",
587587+ "discordInUseWarning": "Tämä Discord-tunnus on jo yhdistetty toiseen tiliin.",
588588+ "telegramInUseWarning": "Tämä Telegram-käyttäjänimi on jo yhdistetty toiseen tiliin.",
589589+ "signalInUseWarning": "Tämä Signal-numero on jo yhdistetty toiseen tiliin."
581590 },
582591 "repoExplorer": {
583592 "title": "Tietovarastoselaaja",
···696705 "orContinueWith": "Tai jatka käyttäen",
697706 "orUseCredentials": "Tai kirjaudu tunnuksilla"
698707 },
708708+ "register": {
709709+ "title": "Luo tili",
710710+ "subtitle": "Luo tili jatkaaksesi sovellukseen",
711711+ "subtitleGeneric": "Luo tili jatkaaksesi",
712712+ "haveAccount": "Onko sinulla jo tili? Kirjaudu sisään"
713713+ },
699714 "sso": {
700715 "linkedAccounts": "Linkitetyt tilit",
701716 "linkedAccountsDesc": "Ulkoiset tilit, jotka on linkitetty identiteettiisi kertakirjautumista varten.",
···829844 "error_expired": "Rekisteröintisessio on vanhentunut. Yritä uudelleen.",
830845 "error_handle_required": "Valitse käsittelynimi",
831846 "emailVerifiedByProvider": "Tämä sähköposti on vahvistettu {provider} kautta. Lisävahvistusta ei tarvita.",
832832- "emailChangedNeedsVerification": "Jos käytät eri sähköpostia, sinun täytyy vahvistaa se."
847847+ "emailChangedNeedsVerification": "Jos käytät eri sähköpostia, sinun täytyy vahvistaa se.",
848848+ "infoAfterTitle": "Tilin luomisen jälkeen",
849849+ "infoAddPassword": "Lisää salasana perinteistä kirjautumista varten",
850850+ "infoAddPasskey": "Määritä pääsyavain salasanattomaan kirjautumiseen",
851851+ "infoLinkProviders": "Linkitä lisää SSO-palveluntarjoajia",
852852+ "infoChangeHandle": "Vaihda käsittelynimesi tai käytä omaa verkkotunnusta",
853853+ "tryAgain": "Yritä uudelleen"
833854 },
834855 "verify": {
835856 "title": "Vahvista tilisi",
···881902 "sendCode": "Lähetä palautuskoodi",
882903 "sending": "Lähetetään...",
883904 "codeSent": "Palautuskoodi lähetetty! Tarkista ensisijainen ilmoituskanavasi.",
905905+ "multipleAccountsWarning": "Useampi tili käyttää tätä sähköpostia. Palautuskoodi lähetettiin viimeksi luodulle tilille. Käytä käsittelynimeäsi tietylle tilille.",
884906 "enterCode": "Syötä saamasi koodi ja uusi salasanasi.",
885907 "code": "Palautuskoodi",
886908 "codePlaceholder": "Syötä palautuskoodi",
···143143 "email": "이메일",
144144 "emailAddress": "이메일 주소",
145145 "emailPlaceholder": "you@example.com",
146146+ "emailInUseWarning": "이 이메일은 이미 다른 계정과 연결되어 있습니다. 계속 사용할 수 있지만, 계정 복구 시 핸들이 필요할 수 있습니다.",
146147 "discord": "Discord",
147148 "discordId": "Discord 사용자 ID",
148149 "discordIdPlaceholder": "Discord 사용자 ID",
149150 "discordIdHint": "숫자 Discord 사용자 ID (개발자 모드를 활성화하여 찾기)",
151151+ "discordInUseWarning": "이 Discord ID는 이미 다른 계정과 연결되어 있습니다.",
150152 "telegram": "Telegram",
151153 "telegramUsername": "Telegram 사용자 이름",
152154 "telegramUsernamePlaceholder": "@yourusername",
155155+ "telegramInUseWarning": "이 Telegram 사용자 이름은 이미 다른 계정과 연결되어 있습니다.",
153156 "signal": "Signal",
154157 "signalNumber": "Signal 전화번호",
155158 "signalNumberPlaceholder": "+821012345678",
156159 "signalNumberHint": "국가 코드 포함 (예: 한국 +82)",
160160+ "signalInUseWarning": "이 Signal 번호는 이미 다른 계정과 연결되어 있습니다.",
157161 "notConfigured": "구성되지 않음",
158162 "inviteCode": "초대 코드",
159163 "inviteCodePlaceholder": "초대 코드 입력",
···269273 "newEmail": "새 이메일",
270274 "newEmailPlaceholder": "new@example.com",
271275 "changeEmailButton": "이메일 변경",
276276+ "emailInUseWarning": "이 이메일은 이미 다른 계정과 연결되어 있습니다. 계속 사용하실 수 있지만, 계정 복구 시 이메일 대신 핸들을 사용해야 할 수 있습니다.",
272277 "requesting": "요청 중...",
273278 "verificationCode": "인증 코드",
274279 "verificationCodePlaceholder": "인증 코드 입력",
···430435 "noCodes": "초대 코드가 아직 없습니다",
431436 "available": "사용 가능",
432437 "used": "@{handle}이(가) 사용함",
438438+ "spent": "소진됨",
433439 "disabled": "비활성화됨",
434440 "usedBy": "사용자",
435441 "disableConfirm": "이 초대 코드를 비활성화하시겠습니까? 더 이상 사용할 수 없습니다.",
···570576 "hideHistory": "기록 숨기기",
571577 "noMessages": "메시지가 없습니다.",
572578 "sent": "전송됨",
573573- "failed": "실패"
579579+ "failed": "실패",
580580+ "discordInUseWarning": "이 Discord ID는 이미 다른 계정과 연결되어 있습니다.",
581581+ "telegramInUseWarning": "이 Telegram 사용자 이름은 이미 다른 계정과 연결되어 있습니다.",
582582+ "signalInUseWarning": "이 Signal 번호는 이미 다른 계정과 연결되어 있습니다."
574583 },
575584 "repoExplorer": {
576585 "title": "저장소 탐색기",
···689698 "orContinueWith": "또는 다음으로 계속",
690699 "orUseCredentials": "또는 자격 증명으로 로그인"
691700 },
701701+ "register": {
702702+ "title": "계정 만들기",
703703+ "subtitle": "계속하려면 계정을 만드세요",
704704+ "subtitleGeneric": "계속하려면 계정을 만드세요",
705705+ "haveAccount": "이미 계정이 있으신가요? 로그인"
706706+ },
692707 "sso": {
693708 "linkedAccounts": "연결된 계정",
694709 "linkedAccountsDesc": "싱글 사인온을 위해 연결된 외부 계정입니다.",
···822837 "error_expired": "등록 세션이 만료되었습니다. 다시 시도해 주세요.",
823838 "error_handle_required": "핸들을 선택해 주세요",
824839 "emailVerifiedByProvider": "이 이메일은 {provider}에서 인증되었습니다. 추가 인증이 필요하지 않습니다.",
825825- "emailChangedNeedsVerification": "다른 이메일을 사용하시면 인증이 필요합니다."
840840+ "emailChangedNeedsVerification": "다른 이메일을 사용하시면 인증이 필요합니다.",
841841+ "infoAfterTitle": "계정 생성 후",
842842+ "infoAddPassword": "기존 로그인을 위한 비밀번호 추가",
843843+ "infoAddPasskey": "비밀번호 없는 로그인을 위한 패스키 설정",
844844+ "infoLinkProviders": "추가 SSO 제공자 연결",
845845+ "infoChangeHandle": "핸들 변경 또는 사용자 정의 도메인 사용",
846846+ "tryAgain": "다시 시도"
826847 },
827848 "verify": {
828849 "title": "계정 인증",
···886907 "success": "비밀번호가 재설정되었습니다!",
887908 "requestNewCode": "새 코드 요청",
888909 "passwordsMismatch": "비밀번호가 일치하지 않습니다",
889889- "passwordLength": "비밀번호는 8자 이상이어야 합니다"
910910+ "passwordLength": "비밀번호는 8자 이상이어야 합니다",
911911+ "multipleAccountsWarning": "여러 계정에서 이 이메일을 공유하고 있습니다. 재설정 코드는 가장 최근에 생성된 계정으로 전송되었습니다. 특정 계정을 복구하려면 핸들을 사용하세요."
890912 },
891913 "recoverPasskey": {
892914 "title": "계정 복구",
+26-4
frontend/src/locales/sv.json
···147147 "discordId": "Discord användar-ID",
148148 "discordIdPlaceholder": "Ditt Discord användar-ID",
149149 "discordIdHint": "Ditt numeriska Discord användar-ID (aktivera Utvecklarläge för att hitta det)",
150150+ "discordInUseWarning": "Detta Discord-ID är redan kopplat till ett annat konto.",
150151 "telegram": "Telegram",
151152 "telegramUsername": "Telegram-användarnamn",
152153 "telegramUsernamePlaceholder": "@dittanvändarnamn",
154154+ "telegramInUseWarning": "Detta Telegram-användarnamn är redan kopplat till ett annat konto.",
153155 "signal": "Signal",
154156 "signalNumber": "Signal-telefonnummer",
155157 "signalNumberPlaceholder": "+46701234567",
156158 "signalNumberHint": "Inkludera landskod (t.ex. +46 för Sverige)",
159159+ "signalInUseWarning": "Detta Signal-nummer är redan kopplat till ett annat konto.",
157160 "notConfigured": "ej konfigurerad",
158161 "inviteCode": "Inbjudningskod",
159162 "inviteCodePlaceholder": "Ange din inbjudningskod",
···161164 "createButton": "Skapa konto",
162165 "alreadyHaveAccount": "Har du redan ett konto?",
163166 "signIn": "Logga in",
167167+ "emailInUseWarning": "Denna e-post är redan kopplad till ett annat konto. Du kan fortfarande använda den, men för kontoåterställning kan du behöva använda ditt användarnamn istället.",
164168 "passkeyAccount": "Nyckel",
165169 "passwordAccount": "Lösenord",
166170 "ssoAccount": "SSO",
···269273 "newEmail": "Ny e-post",
270274 "newEmailPlaceholder": "ny@exempel.se",
271275 "changeEmailButton": "Ändra e-post",
276276+ "emailInUseWarning": "Denna e-post används redan av ett annat konto. Du kan fortfarande använda den, men kontoåterställning kan kräva ditt användarnamn.",
272277 "requesting": "Begär...",
273278 "verificationCode": "Verifieringskod",
274279 "verificationCodePlaceholder": "Ange verifieringskod",
···435440 "disableConfirm": "Inaktivera denna inbjudningskod? Den kan inte längre användas.",
436441 "created": "Inbjudningskod skapad",
437442 "copy": "Kopiera",
438438- "createdOn": "Skapad {date}"
443443+ "createdOn": "Skapad {date}",
444444+ "spent": "Förbrukad"
439445 },
440446 "security": {
441447 "title": "Säkerhet",
···570576 "hideHistory": "Dölj historik",
571577 "noMessages": "Inga meddelanden hittades.",
572578 "sent": "skickad",
573573- "failed": "misslyckades"
579579+ "failed": "misslyckades",
580580+ "discordInUseWarning": "Detta Discord-ID är redan kopplat till ett annat konto.",
581581+ "telegramInUseWarning": "Detta Telegram-användarnamn är redan kopplat till ett annat konto.",
582582+ "signalInUseWarning": "Detta Signal-nummer är redan kopplat till ett annat konto."
574583 },
575584 "repoExplorer": {
576585 "title": "Dataförvarsutforskare",
···689698 "orContinueWith": "Eller fortsätt med",
690699 "orUseCredentials": "Eller logga in med uppgifter"
691700 },
701701+ "register": {
702702+ "title": "Skapa konto",
703703+ "subtitle": "Skapa ett konto med {app}",
704704+ "subtitleGeneric": "Skapa ett konto för att fortsätta",
705705+ "haveAccount": "Har du redan ett konto?"
706706+ },
692707 "sso": {
693708 "linkedAccounts": "Länkade konton",
694709 "linkedAccountsDesc": "Externa konton länkade till din identitet för enkel inloggning.",
···822837 "error_expired": "Registreringssessionen har löpt ut. Försök igen.",
823838 "error_handle_required": "Välj ett användarnamn",
824839 "emailVerifiedByProvider": "Denna e-post är verifierad av {provider}. Ingen ytterligare verifiering behövs.",
825825- "emailChangedNeedsVerification": "Om du använder en annan e-post måste du verifiera den."
840840+ "emailChangedNeedsVerification": "Om du använder en annan e-post måste du verifiera den.",
841841+ "infoAfterTitle": "Efter att du skapat ditt konto",
842842+ "infoAddPassword": "Lägg till ett lösenord för traditionell inloggning",
843843+ "infoAddPasskey": "Konfigurera en nyckel för lösenordsfri inloggning",
844844+ "infoLinkProviders": "Länka ytterligare SSO-leverantörer",
845845+ "infoChangeHandle": "Byt användarnamn eller använd en egen domän",
846846+ "tryAgain": "Försök igen"
826847 },
827848 "verify": {
828849 "title": "Verifiera ditt konto",
···886907 "success": "Lösenord återställt!",
887908 "requestNewCode": "Begär ny kod",
888909 "passwordsMismatch": "Lösenorden matchar inte",
889889- "passwordLength": "Lösenordet måste vara minst 8 tecken"
910910+ "passwordLength": "Lösenordet måste vara minst 8 tecken",
911911+ "multipleAccountsWarning": "Flera konton delar denna e-post. Återställningskoden skickades till det senast skapade kontot. Använd ditt användarnamn istället för ett specifikt konto."
890912 },
891913 "recoverPasskey": {
892914 "title": "Återställ ditt konto",