Unify remote address resolution so startup logging, primary remote URL selection, and /api/meta all consume the same server-side policy. Keep all external addresses user-visible, preserve stable interface ordering, and only de-prioritize link-local addresses when choosing the primary recommended remote URL. On the UI side, introduce a shared helper that keeps the first remote address visible by default and collapses the remaining addresses behind a reveal action, with i18n coverage and targeted tests for the new selection behavior.
54 lines
3.4 KiB
TypeScript
54 lines
3.4 KiB
TypeScript
export const remoteAccessMessages = {
|
|
"remoteAccess.eyebrow": "Remote handover",
|
|
"remoteAccess.title": "Connect to CodeNomad remotely",
|
|
"remoteAccess.subtitle": "Use the addresses below to open CodeNomad from another device.",
|
|
"remoteAccess.close": "Close remote access",
|
|
"remoteAccess.refresh": "Refresh",
|
|
|
|
"remoteAccess.sections.listeningMode.label": "Listening mode",
|
|
"remoteAccess.sections.listeningMode.help": "Allow or limit remote handovers by binding to all interfaces or just localhost.",
|
|
"remoteAccess.toggle.on": "On",
|
|
"remoteAccess.toggle.off": "Off",
|
|
"remoteAccess.toggle.title": "Allow connections from other IPs",
|
|
"remoteAccess.toggle.caption.all": "Binding to 0.0.0.0",
|
|
"remoteAccess.toggle.caption.local": "Binding to 127.0.0.1",
|
|
"remoteAccess.toggle.note": "Changing this requires a restart and temporarily stops all active instances. Share the addresses below once the server restarts.",
|
|
"remoteAccess.listeningMode.restartConfirm.message": "Restart to apply listening mode? This will stop all running instances.",
|
|
"remoteAccess.listeningMode.restartConfirm.title.all": "Open to other devices",
|
|
"remoteAccess.listeningMode.restartConfirm.title.local": "Limit to this device",
|
|
"remoteAccess.listeningMode.restartConfirm.confirmLabel": "Restart now",
|
|
"remoteAccess.listeningMode.restartConfirm.cancelLabel": "Cancel",
|
|
"remoteAccess.restart.errorManual": "Unable to restart automatically. Please restart the app to apply the change.",
|
|
|
|
"remoteAccess.sections.serverPassword.label": "Server password",
|
|
"remoteAccess.sections.serverPassword.help": "Remote handovers require a password. Set a memorable one to enable logins from other devices.",
|
|
"remoteAccess.authStatus.unavailable": "Authentication status unavailable.",
|
|
"remoteAccess.username": "Username: {username}",
|
|
"remoteAccess.password.status.set": "A password is set for remote access.",
|
|
"remoteAccess.password.status.unset": "No memorable password is set yet. Set one to allow remote handover logins.",
|
|
"remoteAccess.password.actions.cancel": "Cancel",
|
|
"remoteAccess.password.actions.change": "Change password",
|
|
"remoteAccess.password.actions.set": "Set password",
|
|
"remoteAccess.password.form.newPassword": "New password",
|
|
"remoteAccess.password.form.confirmPassword": "Confirm password",
|
|
"remoteAccess.password.form.placeholder": "At least 8 characters",
|
|
"remoteAccess.password.error.tooShort": "Password must be at least 8 characters.",
|
|
"remoteAccess.password.error.mismatch": "Passwords do not match.",
|
|
"remoteAccess.password.save.saving": "Saving…",
|
|
"remoteAccess.password.save.label": "Save password",
|
|
|
|
"remoteAccess.sections.addresses.label": "Reachable addresses",
|
|
"remoteAccess.sections.addresses.help": "Launch or scan from another machine to hand over control.",
|
|
"remoteAccess.addresses.loading": "Loading addresses…",
|
|
"remoteAccess.addresses.none": "No addresses available yet.",
|
|
"remoteAccess.addresses.actions.showOther": "Show {count} other addresses",
|
|
"remoteAccess.addresses.actions.hideOther": "Hide other addresses",
|
|
"remoteAccess.address.scope.network": "Network",
|
|
"remoteAccess.address.scope.loopback": "Loopback",
|
|
"remoteAccess.address.scope.internal": "Internal",
|
|
"remoteAccess.address.open": "Open",
|
|
"remoteAccess.address.showQr": "Show QR",
|
|
"remoteAccess.address.hideQr": "Hide QR",
|
|
"remoteAccess.address.qrAlt": "QR for {url}",
|
|
} as const
|