mirror of
https://github.com/Shik3i/KoalaSync.git
synced 2026-08-07 01:43:15 +00:00
8cc622bda0
- Fix: CONNECT/RETRY_CONNECT always force-disconnect before reconnecting (prevents JOIN_ROOM going to official server when custom is selected) - Add forceDisconnect() helper: clears socket, eventQueue, episodeLobby, expectedAcksCount, broadcast status, persists cleanup to storage - Fix: save useCustomServer to storage on Join Room click (no race condition) - Fix: trigger RETRY_CONNECT on server mode toggle and custom URL change - Fix: show error when Custom selected but no URL entered (no silent fallback) - Fix: button label changed to 'Join / Create Room' in all 6 locales - Rewrite scheduleReconnect() for two-phase strategy: Phase 1 (aggressive): 500ms-5s backoff, max 20 attempts or 5 minutes Phase 2 (slow): retry every 5 minutes indefinitely, never give up - Persist reconnectAttempts/reconnectStartTime/reconnectFailed to session storage - Remove 'reconnect_failed' status; slow mode shows as 'reconnecting' with retry button - Add scheduleReconnect() call on offline path to continue retry cycle
181 lines
9.1 KiB
JSON
181 lines
9.1 KiB
JSON
{
|
|
"LANG_CODE": "en",
|
|
"HTML_CLASS": "lang-en",
|
|
"APP_TITLE": "KoalaSync",
|
|
"TAB_ROOM": "Room",
|
|
"TAB_ROOM_TOOLTIP": "Room settings and connection",
|
|
"TAB_SYNC": "Sync",
|
|
"TAB_SYNC_TOOLTIP": "Video sync controls and remote actions",
|
|
"TAB_SETTINGS": "Settings",
|
|
"TAB_SETTINGS_TOOLTIP": "Extension preferences",
|
|
"TAB_STATUS": "Status",
|
|
"TAB_STATUS_TOOLTIP": "Advanced Diagnostics & Logs",
|
|
"BTN_CREATE_ROOM": "+ Create New Room",
|
|
"MANUAL_CONNECT_HEADER": "Manual Connect / Advanced",
|
|
"LABEL_SERVER": "Server",
|
|
"BTN_SERVER_OFFICIAL": "Official",
|
|
"BTN_SERVER_OFFICIAL_TOOLTIP": "Use the official reliable server",
|
|
"BTN_SERVER_CUSTOM": "Custom",
|
|
"BTN_SERVER_CUSTOM_TOOLTIP": "Connect to your own self-hosted server",
|
|
"PLACEHOLDER_SERVER_URL": "wss://your-server:3000",
|
|
"LABEL_ROOM_ID": "Room ID",
|
|
"LABEL_ROOM_ID_TOOLTIP": "The unique identifier for your sync room",
|
|
"PLACEHOLDER_ROOM_ID": "Enter Room ID",
|
|
"PLACEHOLDER_ROOM_ID_TOOLTIP": "The unique ID of the room you want to join",
|
|
"LABEL_PASSWORD": "Password (Optional)",
|
|
"LABEL_PASSWORD_TOOLTIP": "Optional password to restrict room access",
|
|
"PLACEHOLDER_PASSWORD": "Room Password (optional)",
|
|
"PLACEHOLDER_PASSWORD_TOOLTIP": "Password for the room (leave empty if none)",
|
|
"BTN_JOIN_ROOM": "Join / Create Room",
|
|
"BTN_JOIN_ROOM_TOOLTIP": "Connect to the room",
|
|
"LABEL_PUBLIC_ROOMS": "Public Rooms",
|
|
"LABEL_PUBLIC_ROOMS_TOOLTIP": "List of publicly available rooms on this server",
|
|
"BTN_REFRESH": "REFRESH",
|
|
"BTN_REFRESH_TOOLTIP": "Refresh the list of public rooms",
|
|
"PUBLIC_ROOMS_REFRESHING": "Refreshing...",
|
|
"LABEL_ACTIVE_ROOM": "Active Room",
|
|
"LABEL_ACTIVE_ROOM_TOOLTIP": "The room you are currently connected to",
|
|
"ACTIVE_ROOM_NONE": "NONE",
|
|
"ACTIVE_SERVER_OFFICIAL": "Official Server",
|
|
"LABEL_INVITE_LINK": "Invite Link",
|
|
"LABEL_INVITE_LINK_TOOLTIP": "Share this link with friends so they can join",
|
|
"LABEL_PEERS_IN_ROOM": "Peers in Room",
|
|
"LABEL_PEERS_IN_ROOM_TOOLTIP": "Other users currently connected to this room",
|
|
"NO_PEERS_CONNECTED": "No peers connected",
|
|
"BTN_LEAVE_ROOM": "Leave Room",
|
|
"LABEL_SELECT_VIDEO": "Select Video",
|
|
"LABEL_SELECT_VIDEO_TOOLTIP": "Choose the browser tab containing the video to sync",
|
|
"OPTION_SELECT_TAB": "-- Select a Tab --",
|
|
"LABEL_REMOTE_CONTROL": "Remote Control",
|
|
"BTN_COPY_INVITE": "📋 Invite Link",
|
|
"BTN_COPY_INVITE_TOOLTIP": "Copy Invite Link",
|
|
"BTN_PLAY": "▶ Play",
|
|
"BTN_PLAY_TOOLTIP": "Send a Play command to everyone",
|
|
"BTN_PAUSE": "⏸ Pause",
|
|
"BTN_PAUSE_TOOLTIP": "Send a Pause command to everyone",
|
|
"BTN_SYNC": "⚡ SYNC",
|
|
"BTN_SYNC_TOOLTIP": "Force all users to sync up",
|
|
"OPTION_JUMP_TO_OTHERS": "Jump to Others",
|
|
"OPTION_JUMP_TO_ME": "Jump to Me",
|
|
"OPTION_JUMP_MODE_TOOLTIP": "Choose sync target",
|
|
"LABEL_LAST_ACTIVITY": "Last Activity Status",
|
|
"LABEL_LAST_ACTIVITY_TOOLTIP": "Shows the most recent play, pause, or seek command",
|
|
"NO_RECENT_COMMANDS": "No recent commands",
|
|
"LOBBY_HEADER": "EPISODE LOBBY",
|
|
"LOBBY_WAITING_FOR": "🎬 Waiting for: \"{title}\"",
|
|
"LOBBY_WAITING_PEERS": "Waiting for peers...",
|
|
"BTN_SKIP_PLAY": "Skip & Play anyway",
|
|
"BTN_SKIP_PLAY_TOOLTIP": "Cancel lobby and play anyway",
|
|
"LOBBY_CONNECT_FIRST": "Connect to a room first",
|
|
"LOBBY_CONNECT_FIRST_DESC": "You need to join a room via an invite link or create a new one to sync videos.",
|
|
"BTN_CREATE_ROOM_ALT": "Create New Room",
|
|
"BTN_CREATE_ROOM_ALT_TOOLTIP": "Create a new random room and join it",
|
|
"LABEL_USERNAME": "Your Username",
|
|
"LABEL_USERNAME_TOOLTIP": "Username helps others identify you.",
|
|
"PLACEHOLDER_USERNAME": "Anonymous Koala",
|
|
"LABEL_HIDE_CLUTTER": "Hide Clutter Tabs",
|
|
"LABEL_HIDE_CLUTTER_TOOLTIP": "Filters out non-video tabs and unrelated domains to keep the list clean",
|
|
"LABEL_AUTO_SYNC_NEXT": "Auto-Sync Next Episode",
|
|
"LABEL_AUTO_SYNC_NEXT_TOOLTIP": "Pauses automatically and waits for all peers when an episode changes, then sync-starts together.",
|
|
"LABEL_AUTO_COPY_INVITE": "Auto-Copy Invite Link",
|
|
"LABEL_AUTO_COPY_INVITE_TOOLTIP": "Automatically copies the invite link to your clipboard when creating a new room.",
|
|
"LABEL_NOTIFICATIONS": "Browser Notifications",
|
|
"LABEL_NOTIFICATIONS_TOOLTIP": "Shows native system notifications when someone joins/leaves or plays/pauses.",
|
|
"LABEL_LANGUAGE": "App Language",
|
|
"LABEL_LANGUAGE_TOOLTIP": "Choose your preferred extension language",
|
|
"LABEL_TROUBLESHOOTING": "Troubleshooting",
|
|
"LABEL_TROUBLESHOOTING_TOOLTIP": "Tools for fixing connection issues",
|
|
"BTN_REGEN_ID": "Regenerate Peer ID",
|
|
"BTN_REGEN_ID_TOOLTIP": "Regenerate your internal ID and reconnect",
|
|
"REGEN_ID_DESC": "Use this if you see \"Duplicate Identity\" errors.",
|
|
"LABEL_CONN_STATUS": "Connection Status",
|
|
"LABEL_CONN_STATUS_TOOLTIP": "Current WebSocket connection state",
|
|
"CONN_STATUS_DISCONNECTED": "Disconnected",
|
|
"BTN_RETRY": "RETRY",
|
|
"BTN_RETRY_TOOLTIP": "Attempt to reconnect to the server",
|
|
"BTN_COPY_LOGS": "Copy Logs",
|
|
"BTN_COPY_LOGS_TOOLTIP": "Copy logs to clipboard for sharing",
|
|
"LABEL_VIDEO_DEBUG": "Video Debug Info",
|
|
"LABEL_VIDEO_DEBUG_TOOLTIP": "Technical details about the currently selected video element",
|
|
"VIDEO_DEBUG_EMPTY": "No tab selected or video detected.",
|
|
"LABEL_HISTORY": "Full Action History",
|
|
"LABEL_HISTORY_TOOLTIP": "Chronological log of all sync commands in the room",
|
|
"HISTORY_EMPTY": "No activity yet",
|
|
"LABEL_LOGS": "Logs (Last 50)",
|
|
"LABEL_LOGS_TOOLTIP": "Technical connection logs for debugging",
|
|
"BTN_CLEAR": "CLEAR",
|
|
"BTN_CLEAR_TOOLTIP": "Clear log output",
|
|
"LABEL_GITHUB": "GitHub Repository",
|
|
"BTN_ONBOARDING_SKIP": "Skip",
|
|
"BTN_ONBOARDING_SKIP_TOOLTIP": "Skip the tutorial",
|
|
"BTN_ONBOARDING_NEXT": "Next",
|
|
"BTN_ONBOARDING_NEXT_TOOLTIP": "Go to next step",
|
|
"ONBOARDING_1_TITLE": "Welcome to KoalaSync!",
|
|
"ONBOARDING_1_TEXT": "Watch videos together in perfect sync — no matter where you are. Let's take a quick tour!",
|
|
"ONBOARDING_2_TITLE": "1. Create a Room",
|
|
"ONBOARDING_2_TEXT": "Start here. Create a room and share the invite link with your friends.",
|
|
"ONBOARDING_3_TITLE": "2. Select Video",
|
|
"ONBOARDING_3_TEXT": "Navigate here to select the video you want to sync. Play, pause, and seek — everyone stays in sync.",
|
|
"ONBOARDING_4_TITLE": "3. Personalize",
|
|
"ONBOARDING_4_TEXT": "Pick a fun username so your friends know who you are.",
|
|
"ONBOARDING_5_TITLE": "You're all set!",
|
|
"ONBOARDING_5_TEXT": "Time to grab some popcorn. Enjoy watching together!",
|
|
"ERR_CONN_TIMEOUT": "Connection timed out. Please try again.",
|
|
"ERR_INVALID_SERVER_URL": "Invalid Server URL format.",
|
|
"ERR_IDENTITY_NOT_LOADED": "Identity not yet loaded. Wait a moment and try again.",
|
|
"ERR_NO_PEERS_TIME": "No other peers with a known time. Switch to 'Jump to Me'.",
|
|
"ERR_NO_VIDEO_TAB": "Could not connect to video tab.",
|
|
"ERR_SELECT_VIDEO": "Please select a video first!",
|
|
"TOAST_INVITE_COPIED": "Invite link copied!",
|
|
"TOAST_COPY_FAILED": "Failed to copy to clipboard",
|
|
"TOAST_LOBBY_SKIPPED": "Episode Lobby skipped.",
|
|
"TOAST_LOBBY_SKIP_FAILED": "Failed to skip lobby.",
|
|
"TOAST_LOGS_COPIED": "Copied!",
|
|
"TOAST_PEER_JOINED": "{name} joined the room",
|
|
"TOAST_PEER_LEFT": "{name} left the room",
|
|
"TOAST_PEER_ACTION": "{name} {action}",
|
|
"STATUS_CONNECTED": "Connected",
|
|
"STATUS_RECONNECTING": "Reconnecting...",
|
|
"STATUS_CONNECTING": "Connecting...",
|
|
"STATUS_FAILED": "Failed",
|
|
"STATUS_DISCONNECTED": "Disconnected",
|
|
"BTN_STATE_JOINING": "🚀 Joining...",
|
|
"BTN_STATE_RECONNECTING": "🔄 Reconnecting...",
|
|
"BTN_STATE_PLAYING": "▶ Playing...",
|
|
"BTN_STATE_PAUSING": "⏸ Pausing...",
|
|
"BTN_STATE_SYNCING_GROUP": "Syncing to group ({time})...",
|
|
"BTN_STATE_SYNCING": "Syncing...",
|
|
"BTN_STATE_SYNCED": "✅ Synced!",
|
|
"NOTIF_PLAY": "started playback",
|
|
"NOTIF_PAUSE": "paused playback",
|
|
"NOTIF_SEEK": "seeked the video",
|
|
"NOTIF_FORCE_PREPARE": "started force sync",
|
|
"NOTIF_FORCE_EXECUTE": "synchronized everyone",
|
|
"DEBUG_NO_TAB": "No target tab selected.",
|
|
"DEBUG_COMM_FAIL": "Could not communicate with tab video.",
|
|
"EMPTY_PEERS_TITLE": "No peers yet",
|
|
"EMPTY_PEERS_HINT": "Share your invite link to get started",
|
|
"EMPTY_HISTORY_TITLE": "No activity yet",
|
|
"EMPTY_HISTORY_HINT": "Play, pause, or seek to see history",
|
|
"EMPTY_LOGS_TITLE": "No logs",
|
|
"EMPTY_LOGS_HINT": "Connection events will appear here",
|
|
"EMPTY_ROOMS_TITLE": "No active rooms",
|
|
"EMPTY_ROOMS_HINT": "Create a room or refresh to find public ones",
|
|
"LABEL_YOU": "You",
|
|
"ONBOARDING_DONE": "Done!",
|
|
"LABEL_LOBBY_PEER_READY": "Ready",
|
|
"LABEL_LOBBY_PEER_LOADING": "Loading...",
|
|
"LABEL_PASSWORD_PROTECTED": "Password Protected",
|
|
"LABEL_PEERS_COUNT": "{count} peers",
|
|
"LABEL_CUSTOM_SERVER": "Custom Server",
|
|
"BTN_STATE_CREATING": "🚀 Creating Room...",
|
|
"NOTIF_LOBBY_CANCEL_TITLE": "KoalaSync — Episode Sync Failed",
|
|
"NOTIF_LOBBY_CANCEL_MSG": "Auto-sync cancelled: {reason}. You may need to manually sync.",
|
|
"LOBBY_CANCEL_TIMEOUT": "Timeout",
|
|
"LOBBY_CANCEL_TIMEOUT_RECOVERED": "Timeout (recovered)",
|
|
"LOBBY_CANCEL_PEERS_LEFT": "All other peers left",
|
|
"LOBBY_CANCEL_TIMEOUT_PEERS_LOAD": "Timeout — not all peers loaded the episode",
|
|
"LOBBY_CANCEL_USER": "Cancelled by user",
|
|
"NOTIF_ERROR_TITLE": "KoalaSync Error"
|
|
}
|