{"en":{"app":{"name":"Rehearsal","errors":{"unexpected":"Something went wrong. Try again.","load-members":"Could not load members. Try again.","load-invitations":"Could not load invitations. Try again.","load-roles":"Could not load roles. Try again.","invalid-code":"Please enter a valid 6-digit code.","unknown":"An unknown error occurred. Please try again.","invalid-email":"Please enter a valid email address.","required":"Required","save-preference":"Could not save your preference. Try again."},"logout":"Log out","roles":{"admin":"Admin","member":"Member","owner":"Owner"},"continue":"Continue","skip":"Skip","change":"Change","edit":"Edit","remove":"Remove","cancel":"Cancel","retry":"Try again","open-menu":"Open menu","login":"Log in","signup":"Sign up","legal":{"privacy":"Privacy Policy","terms-of-service":"Terms of Service"},"back":"Back","resend":"Resend","placeholders":{"email":"Enter your email"},"close":"Close","just-now":"just now","save":"Save","soon":"Soon"},"errors":{"generic":{"body":"Try again, or go back to Rehearsal.","tab-title":"Error","title":"Something went wrong"},"not-found":{"body":"Check the address, or go back to Rehearsal.","tab-title":"Page not found","title":"This page does not exist"},"server":{"body":"The problem is on our side. Try again in a moment.","tab-title":"Something went wrong","title":"Something went wrong"},"take-me-home":"Go to Rehearsal"},"feedback":{"title":"Give feedback","report":"Report a problem","close":"Close","placeholder":{"workspace":"What would you like us to know?","result":"What looks wrong in this result?","test":"What looks wrong here?"},"heading":{"partly":"What did it miss?","no":"What did you expect instead?"},"category":{"problem":"Problem","idea":"Idea","other":"Other"},"with":"With this report: {items}","only-listed":"Only what is listed here is sent.","context":{"page":"Page","workspace":"Workspace","plan":"Plan","version":"Version","time":"Time","run":"Run","test":"Test","app":"App","chat":"Chat"},"add":{"recording":"Recording","screenshot":"Screenshot at the last step","screenshot-step":"Screenshot at step {number}","trace":"Trace"},"ask-reply":"Ask for a reply","reply-to":"Reply to {email}","send":"Send","sending":"Sending","retry":"Retry","sent":"Feedback sent","sent-reply":"We will reply to {email} soon.","send-error":"Could not send. Your message is still here.","verdict":{"question":"Did this check what you meant?","yes":"Yes","partly":"Partly","no":"No","answered":"You said this checked what you meant.","change":"Change","error":"Could not save your answer. Try again."}},"permission":{"forbidden":"You don't have permission to do that. Your access may have changed."},"connection":{"reconnecting":"Connection lost. Reconnecting..."},"auth":{"back-to-login":"Back to login","email-check":{"didnt-get-email":"Didn’t get the email?","enter-code-manually":"Enter code manually","resent":"Sent again.","subtitle":"We sent a sign-in link to {email}.","title":"Check your email"},"email-code":{"didnt-get-email":"Didn’t get the code?","errors":{"invalid-code":"Enter the 6-digit code from the email."},"placeholder":"Enter your 6-digit code","subtitle":"We've sent a 6-digit code to {email}.","title":"Enter the code"},"error":{"action":"Log in again","link-subtitle":"Links work once and expire. Log in again to get a new one.","link-title":"That link did not work","state-mismatch":"It expired or was already used. Log in again.","subtitle":"Try again in a moment.","title":"That sign-in did not work"},"logged-in-as":"Logged in as {email}","logged-in":{"subtitle":"You logged in from another tab. Continue here, or close this tab.","title":"You’re logged in"},"logout-failed":"Couldn’t log you out. Try again.","magic-link-send-failed":"We couldn’t send the email. Try again.","login":{"email":{"subtitle":"Enter your email to log in.","title":"Continue to Rehearsal"},"no-account":{"different-account":"Log in with a different account","footnote":"Nothing was created. We only checked for an existing account.","signup":"Sign up for Rehearsal","subtitle":"There’s no Rehearsal account for {email} yet. Would you like to create one?","title":"We couldn’t find your account"},"picker":{"account":"Don’t have an account? {signup}","email":"Log in with email","google":"Log in with Google","google-unreachable":"Couldn’t reach Google sign-in. Check your connection and try again.","last-used":"Last used","passkey":"Log in with a passkey","passkey-not-found":"No passkey found for your account. Try another sign-in method.","subtitle":"How do you want to log in?","title":"Welcome back"}},"signup":{"email":{"subtitle":"We’ll email a link to verify this address.","title":"What’s your email address?"},"existing-account":{"continue":"Continue with this account","different-account":"Sign up with a different account","footnote":"Signing up with a different account logs this one out first.","subtitle":"You’re logged in as {email}.","title":"You already have an account"},"picker":{"account":"Already have an account? {login}","agreement":"By creating an account, you agree to our {terms} and {dpa}.","email":"Sign up with email","google":"Sign up with Google","legal-agreement-simple":"By creating an account, you agree to our {msa} and {privacy}.","subtitle":"How do you want to sign up?","title":"Let's get you set up"}}},"permissions":{"workspace":{"domain":"Workspace","billing-view":"View usage","billing-view-description":"See the plan and remaining test runs.","billing-manage":"Manage billing","billing-manage-description":"Change plans, payment details and additional spending.","roles-manage":"Manage roles","roles-manage-description":"Create, edit, and assign custom roles and permissions.","workspace-delete":"Delete workspace","workspace-delete-description":"Permanently delete the entire workspace.","workspace-manage-security":"Manage security","workspace-manage-security-description":"Configure authentication, sessions, and security policies.","workspace-update":"Edit workspace","workspace-update-description":"Change the workspace name, branding, and general settings.","workspace-view":"View workspace","workspace-view-description":"See the workspace and its general settings."},"members":{"domain":"Members and teams","members-invite":"Invite members","members-invite-description":"Send invitations to add new people to the workspace.","members-remove":"Remove members","members-remove-description":"Remove people from the workspace.","members-update-role":"Change member roles","members-update-role-description":"Assign roles and change what other members can do.","members-view":"View members","members-view-description":"See who belongs to the workspace."},"projects":{"domain":"Projects","projects-read":"View projects","projects-read-description":"View projects and their apps.","projects-manage":"Manage projects","projects-manage-description":"Add, update and remove projects and their apps."},"integrations":{"domain":"Integrations","integrations-manage":"Manage integrations","integrations-manage-description":"Connect GitHub and decide when tests run."},"ai":{"domain":"Re:agent","ai-use-agent":"Use Re:agent","ai-use-agent-description":"Chat with Re:agent in this workspace."}},"account":{"back":"Back","title":"Account","profile":{"description":"Your personal information visible to others.","title":"Profile","avatar":"Avatar","avatar-hint":"Recommended size: 256x256px","name-placeholder":"Alex Johnson","name":"Full name","display-name-placeholder":"e.g., Alex","display-name":"What should Rehearsal call you?","email-hint":"Contact support to change your email.","email":"Email","avatar-error":"Failed to upload avatar"},"workspaces":{"description":"Workspaces you are a member of.","title":"Your Workspaces","open":"Open","empty":{"title":"No Workspaces","description":"You are not a member of any workspaces yet.","create":"Create Workspace"}},"passkeys":{"name-placeholder":"e.g. MacBook Touch ID","errors":{"already-registered":"This device already has a passkey for your account. Use a different one.","registration-failed":"Could not add the passkey. Try again.","last-passkey-required":"Your workspace requires at least one passkey.","delete-failed":"Failed to delete passkey."},"description":"Secure your account with biometric authentication.","title":"Passkeys","unavailable":"Passkeys couldn't be loaded.","retry":"Try again","empty-title":"No passkeys","empty-description":"Add a passkey to sign in with biometrics.","default-name":"Passkey","synced":"Synced across your devices","device-only":"Saved on one device","required":"Required","delete":"Delete","add":"New passkey","delete-confirm":"Delete","delete-confirm-description":"This passkey will no longer be usable for sign-in.","delete-confirm-title":"Delete passkey?","created":"Added {date}","count":"{count} passkey | {count} passkeys","add-dialog":{"name-title":"Name your passkey","description":"Name this passkey so you can identify it later."},"name-label":"Passkey name"},"security":{"title":"Sessions","unavailable":"Sessions couldn't be loaded.","retry":"Try again","location-unknown":"Location unknown","signed-in":"Signed in {date}","expires":"Expires {date}","this-device":"This device","sign-out":"Sign out","only-this-device":"You're only signed in on this device.","other-devices":"{count} other device signed in | {count} other devices signed in","sign-out-all":"Sign out all other devices","keep-signed-in":"Keep signed in","sign-out-confirm-title":"Sign out this device?","sign-out-all-confirm":"Sign out all","sign-out-all-confirm-description":"Every device except this one will be signed out immediately.","sign-out-all-confirm-title":"Sign out all other devices?","unknown-device":"Unknown device","sign-out-confirm-description":"{device} will be signed out immediately and will need to sign in again.","sign-out-error":"Couldn't sign out that device.","sign-out-all-error":"Couldn't sign out the other devices."}},"projects":{"title":"Projects","empty":"No projects yet","empty-description":"Add a project to start checking your app.","name":"Project name","name-placeholder":"My app","url-placeholder":"https://example.com","url-invalid":"Enter a valid HTTP or HTTPS URL.","environment":"Environment","environments":{"production":"Production","preview":"Preview","staging":"Staging","local":"Local"},"load-error":"Could not load projects. Try again.","name-too-long":"Use 100 characters or fewer.","subtitle":"Pick a project to see its tests and runs.","new-project":"New project","empty-projects":"No projects yet","empty-projects-description":"A project holds the apps you test. It starts from one address.","open-project":"Open {name}","opening":"Opening the project","test-count":"{count} test | {count} tests","test-count-capped":"{count}+ tests","environment-count":"{count} environment | {count} environments","not-run-yet":"Not run yet","last-run-meta":"#{number} · {when}","last-run":{"queued":"Queued","running":"Running","passed":"Passed","failed":"Failed","blocked":"Blocked","cancelled":"Cancelled"},"new":"New project","new-description":"Start from one address. You can add more later.","address":"Address","name-optional":"Project name, optional","name-hint":"Leave it empty and the project is called {host}.","local-connect-next":"Create the project, then connect this app with the CLI.","new-error":"Could not create the project. Try again."},"settings":{"title":"Settings","danger-zone":{"description":"Irreversible and destructive actions.","title":"Danger zone","delete-description":"Permanently delete this workspace and all its data.","delete":"Delete workspace","delete-dialog":{"title":"Delete workspace","description":"This removes every project, test and run in the workspace. It cannot be undone.","confirm-prompt":"Type the following to permanently delete:"},"delete-error":"The workspace could not be deleted. Try again."},"name-and-visuals":{"title":"Name & visuals","workspace-details":{"title":"Workspace details"},"name":{"description":"The display name for your workspace.","title":"Workspace name","change-dialog":{"title":"Change workspace name","description":"Change the name your team sees.","name-label":"New name","error":"Failed to update workspace name.","placeholder":"My workspace"}},"logo":{"title":"Workspace logo","description":"Recommended size: 256x256px","upload-error":"Failed to upload logo"},"color":{"description":"Shown across your workspace, including the sidebar tint and live chat.","title":"Brand color"},"timezone":{"description":"Billing dates and emails use this time zone.","title":"Time zone","save-error":"The time zone could not be saved. Try again."}},"interface":{"title":"Interface and theme","theme":{"description":"Select your preferred color scheme","title":"Interface theme","system":"System","light":"Light","dark":"Dark"},"font-size":{"description":"Adjust the size of text across Rehearsal","title":"Font size","small":"Small","default":"Default","large":"Large"},"pointer-cursors":{"description":"Change the cursor to a pointer when hovering over any interactive elements","title":"Use pointer cursors"}},"security":{"title":"Security","passkeys-description":"Require members to use passkeys for secure access.","passkeys-title":"Passkeys","require-passkeys-description":"All members must register a passkey to access this workspace.","require-passkeys":"Require passkeys","confirm-enable":"Enable","confirm-enable-description":"This will require all members to register a passkey. Members without one will be prompted on their next visit.","confirm-enable-title":"Require passkeys?","update-error":"Failed to update security settings."},"save-state":{"error":"Failed to save","saved":"Saved","saving":"Saving..."},"revert":"Revert","sidebar":{"search-placeholder":"Search settings...","results":"Results","no-results":"No settings found","group-workspace":"Workspace","name-and-visuals":"Name & visuals","security":"Security","danger-zone":"Danger zone","group-project":"Project","repository":"Repository","group-members":"Members","members":"Members","invites":"Invitations","roles":"Roles & permissions","apps":"Apps"},"repository":{"title":"Repository","description":"The GitHub repository this project checks.","load-error":"Could not load the connection. Try again.","connected":{"title":"Connected repository","description":"Rules run on this repository. It covers the whole project."},"reads":{"title":"Rehearsal can read","description":"Rehearsal does not read your code.","details":"Repository details","deployments":"Deployments","pull-requests":"Pull requests","checks":"Checks Rehearsal writes"},"disconnect":{"title":"Disconnect","description":"Rules are removed. Runs that already finished keep their results.","action":"Disconnect","confirm-title":"Disconnect this repository?","confirm":"Rules are removed. Runs that already finished keep their results.","error":"Could not disconnect. Try again."},"not-connected":{"title":"No repository yet","description":"Connect GitHub to check the app you ship."},"installed":{"title":"GitHub account","description":"Rehearsal is installed here."}},"sections":"Settings sections","apps":{"title":"Apps","description":"A test runs on one of these addresses.","search":"Search apps","all-environments":"All environments","count-line":"{apps}, {environments}","app-count":"{count} app | {count} apps","app-count-narrowed":"{shown} of {count} apps","environment-count":"{count} environment | {count} environments","environment-count-narrowed":"{shown} of {count} environments","add":"Add","paste":"Paste an address","stop-adding":"Stop adding","add-environment":"Add environment","add-environment-error":"Could not add the address. Check it and try again.","app-menu":"App options","row-menu":"Environment options","name-app":"Name this app","rename-app":"Rename app","name-description":"A name tells this app apart from the others.","name-hint":"Leave it empty and the app stays known as {host}.","name-error":"Could not save the name. Try again.","remove-app":"Remove app","remove-app-error":"Could not remove the app. Try again.","remove-environment":"Remove environment","remove-environment-error":"Could not remove the address. Try again.","disconnect":"Disconnect","disconnect-error":"Could not disconnect this address. Try again.","close-unconfirmed":"Access was revoked. Could not confirm the connection closed.","connection":{"connected":"Connected","not-connected":"Not connected"},"kinds":{"your-computer":"Your computer","your-computer-hint":"Needs one command in your terminal"},"no-matches":"No apps match your search.","empty":"No apps yet. Add one to start.","add-app":{"name":"Name","name-optional":"Name (optional)","name-hint":"Leave empty to use {host}.","name-required-hint":"A local app needs a name, since its address is the same on every computer.","name-needed":"Give this app a name.","connect-below":"Connect it in the card below.","address-must-be-local":"Use an address on your computer, such as http://localhost:3000.","address-out-of-reach":"Rehearsal runs its browsers in the cloud. Use an address anyone can open."},"connect":{"title":"Test an app on your computer","description":"Keep this terminal command running so Rehearsal's cloud browsers can test your app.","address-label":"Local address","address-hint":"Where the app answers on your computer.","app-label":"App","app-hint":"Which app of this project answers there.","path-yourself":"Yourself","keep-open":"Keep this terminal open. Closing it disconnects.","connected":"Connected","connected-from":"Connected from {computer}","show-commands":"Show commands","hide-commands":"Hide commands","reason":"Connect the app running on your computer so Rehearsal's cloud browsers can reach this address.","read-only":"Connecting needs permission to manage projects.","unavailable":"Rehearsal cannot connect your computer yet."}}},"workspace":{"sidebar":{"keyboard-shortcuts":"Keyboard shortcuts","account":"Account","settings":"Settings","toggle":"Toggle sidebar","platform":"Platform","help":"Help","help-unavailable":"Help chat is not available right now. Try again in a moment.","give-feedback":"Give feedback"},"access-denied":{"title":"You don't have access to this workspace","description":"You aren't a member of this workspace. Ask an admin to invite you, or switch to a workspace you have access to.","switch-workspace":"Go to my workspaces"},"members":{"list":{"title":"Members","invite-members":"Invite someone","table":{"member":"Member","role":"Role","joined":"Joined"},"passkey-missing":"No passkey registered","actions":{"edit-role":"Edit role","remove":"Remove member"},"remove-dialog":{"title":"Remove Member","description":"Are you sure you want to remove {name} from this workspace? They will lose access to all workspace resources.","confirm":"Remove Member"},"toast":{"remove-error":"Failed to remove member","role-update-error":"Failed to update member role"},"edit-role-dialog":{"title":"Edit Member Role","description":"Change the role for {name}.","current":"Current","admin-description":"Full access and settings management","member-description":"Can view and collaborate","custom-roles-heading":"Custom roles","custom-role-tier-admin":"Custom role with admin-level access","custom-role-tier-member":"Custom role with member-level access"}},"invites":{"title":"Invitations","send-invite":"Invite someone","status":{"accepted":"Accepted","declined":"Declined","expired":"Expired","pending":"Pending","revoked":"Revoked"},"row-sent":"Sent {date}","row-expires":"Expires {date}","actions":{"revoke":"Revoke invite"},"empty":{"title":"No invitations waiting","description":"Invite someone by email. They join from the link."},"revoke-dialog":{"title":"Revoke Invitation","description":"Are you sure you want to revoke the invitation for {email}? They will no longer be able to join using this invitation.","confirm":"Revoke Invite"},"toast":{"revoke-error":"Failed to revoke invitation","send-error":"Failed to send invitations"},"dialog":{"title":"Invite Team Members","description":"Send invitations to add new members to your workspace.","emails-label":"Email addresses","remove-email":"Remove {email}","email-placeholder":"colleague{'@'}company.com","email-hint":"Separate multiple addresses with Enter or a comma, or paste a whole list.","role-label":"Invite as","expiry-hint":"Invites expire after 7 days.","send-button":"Send {count} Invite | Send {count} Invites","invalid-email":"That doesn't look like a valid email address.","already-in-list":"{email} is already in your list.","already-invited":"{email} already has an invite waiting.","already-member":"{email} is already a member.","member-description":"Can view and collaborate","admin-description":"Full access and settings"}}},"roles":{"subtitle":"Control what each role can do in this workspace.","title":"Roles and permissions","new-role":"New role","built-in-section":"Built-in roles","role-name":{"admin":"Admin","member":"Member","owner":"Owner"},"badge":{"owner":"Owner","built-in":"Built-in","custom":"Custom"},"member-count":"No members | {count} member | {count} members","full-access":"Full access","read-only-badge":"Read only","custom-section":"Custom roles","duplicate":"Duplicate","delete":"Delete","reset":"Reset to default","detail":{"not-found":"This role no longer exists.","go-back":"Back to roles"},"editor":{"name-label":"Role name","name-placeholder":"Support agent","description-label":"Description","description-placeholder":"What this role is for","permissions-heading":"Permissions","selected-count":"{count} selected","group-count":"{on} of {total}","tier-hint":{"admin":"Admin default","member":"Member default","owner":"Owner only"}},"edit":"Edit role","reset-dialog":{"title":"Reset to default?","description":"This restores the role's permissions to the built-in default. Any changes you made will be lost.","confirm":"Reset to default"},"cancel":"Cancel","reassign-dialog":{"target-label":"Move members to","target-placeholder":"Pick a role","target-builtin":"Their base tier","title":"Reassign members","description":"This role is assigned to members. Choose where to move them before deleting it.","confirm":"Reassign and delete"},"delete-dialog":{"title":"Delete role?","description":"This permanently deletes the role. This can't be undone.","confirm":"Delete role"},"permission-count":"{count} of {total} permissions","welcome":{"create-role":"Create your first custom role","wizard-hint":"Built-in roles cover most teams. Add a custom one when you need something in between.","title":"It's easy to tailor access with custom roles","step-1-title":"Start from a preset","step-1-description":"Pick a starting point like Support agent or Read only, instead of toggling every permission yourself.","step-2-title":"Fine-tune permissions","step-2-description":"Choose what this role can view and change.","step-3-title":"Assign it to members","step-3-description":"Give people the role from the Members page to grant exactly that access."},"duplicate-dialog":{"title":"Duplicate role","description":"Create a copy of this role that you can edit independently.","name-label":"New role name","name-placeholder":"Copy of role","submit":"Duplicate role"},"create-dialog":{"title":"Create a role","description":"Name it and pick a starting point. You'll fine-tune permissions next.","name-label":"Role name","name-placeholder":"Support agent","submit":"Create role"},"preset":{"blank":"Blank","blank-description":"Start with the base tier and add permissions yourself.","label":"Start from a preset","permission-count":"{count} permission | {count} permissions","read-only":"Read only","read-only-description":"Can view conversations and content without making changes.","member":"Member","member-description":"View projects and workspace members.","admin":"Admin","admin-description":"Manage projects and workspace settings."},"toast":{"create-failed":"Could not create the role. Try again.","update-failed":"Could not save the role. Try again.","reset-failed":"Could not reset the role. Try again.","delete-failed":"Could not delete the role. Try again.","duplicate-failed":"Could not duplicate the role. Try again."}}},"tests":{"title":"Tests","empty":"Create your first test","empty-description":"Tell Re:agent what you want to test in your app.","new-test":"New test","load-error":"Could not load tests. Try again.","search":"Search tests","load-more":"Show more tests","no-matches":"No tests match these filters","no-matches-description":"Change the status, the search or the filters.","narrowed-search":"The search is {words}","no-suite-empty":"Every test is in a suite","no-suite-empty-description":"A test you take out of every suite appears here.","views":{"all":"All tests","no-suite":"Not in a suite","no-suite-description":"Tests that no suite runs."},"filters":{"suite":"Suite","no-suite":"Not in a suite","environment":"Environment","readiness":"Readiness","last-run":"Last run","last-run-today":"Ran today","last-run-last7":"Ran in the last 7 days","last-run-last30":"Ran in the last 30 days","last-run-never":"Never run"},"columns":{"test":"Test","last-runs":"Last {count} runs"},"row":{"run":"Run","tape":"Run {number} · {when} · {status}"},"never-run":"Never run","menu":{"label":"Actions for {name}","add-to-suite":"Add to suite"},"run":{"action":"Run test","error":"Could not start the run. Try again.","refused-named":"{name} cannot run at this address.","started":"Run {number} started","started-on":"Run {number} started on {environment}","view":"View"},"run-destination":{"title":"Where should this run?","one-app":"This test can run on any address of its app. | These tests can run on any address of their app.","many-apps":"Pick an address for each app.","settled":"{app} runs on {address}, its only environment.","no-environments":"{app} has no address to run on.","offline":"{name} is not connected. Run this command on that computer.","offline-toast":"That computer is not connected, so nothing can run on it.","action":"Run test | Run tests"},"edit-in-chat":"Edit in chat","detail":{"full-description":"Full description","pick-run":"Choose a run to read","no-runs":"This test has not run yet. Run it to see what it does.","nothing-ran":"Nothing ran in this run, so there is nothing to watch."},"selection":{"count":"1 test selected | {count} tests selected","select":"Select {name}","select-all":"Select every test on this page","add":"Add to suite","add-to":"Add 1 test to | Add {count} tests to","run":"Run selected","run-note":"Run selected puts 1 test in one run. | Run selected puts {count} tests in one run.","none-ready":"None of these tests can run yet.","some-not-ready":"1 test is not ready, so it ends blocked. | {count} tests are not ready, so they end blocked.","add-error":"Could not add the tests. Try again.","clear":"Clear"},"state":{"draft":"Draft","approved":"Approved","needs-update":"Needs update","archived":"Archived"},"strip":{"label":"The newest runs of this test","square":"Run #{number} · {date} · {status}"},"missing":"Test not found","missing-description":"This test was removed or belongs to another project.","back-to-tests":"Back to tests","recent":{"title":"Recent runs","all":"View all"},"chart":{"title-all":"Every result","title-newest":"Results in the newest {count} runs","title-runs":"Run history | Results in the newest run | Results in the newest {count} runs","legend":"Height is how long the test took. Colour is the result.","runs-legend":"Height is how long the run took. Colour is the result.","failing-since":"Failing since {since}.","failing-since-after":"Failing since {since}, after passing once. | Failing since {since}, after passing {count} times in a row.","passing-for":"Passing for the last {count} runs.","no-results":"This test has not run yet.","few-results":"1 result so far. The chart starts at {minimum}. | {count} results so far. The chart starts at {minimum}.","no-runs":"Nothing has run yet.","few-runs":"1 run so far. The chart starts at {minimum}. | {count} runs so far. The chart starts at {minimum}."},"days-ago":"Today | Yesterday | {count} days ago","today":"Today","unknown-environment":"Unknown environment"},"suites":{"title":"Suites","load-error":"Could not load suites. Try again.","missing":"Suite not found","missing-description":"This suite was removed or belongs to another project.","name-taken":"That name is already used in this project.","refused":"That test cannot be added to this suite.","refused-named":"{name} cannot be added to this suite.","run":"Run suite","run-in-progress":"Run #{number} is still going. It keeps the tests it started with, so changes apply to the next run.","not-ready-notice":"1 test is not ready, so a run of this suite ends blocked. Fix it or remove it from the suite. | {count} tests are not ready, so a run of this suite ends blocked. Fix them or remove them from the suite.","readiness":{"empty":"No tests yet.","all-ready":"1 test, ready. | {count} tests, all ready.","some-ready":"{total} tests, {ready} ready. It ends blocked until 1 is fixed. | {total} tests, {ready} ready. It ends blocked until {count} are fixed.","ready":"Ready","draft":"Draft","needs-update":"Needs update","archived":"Archived","not-validated":"Not verified"},"reasons":{"ready":"Ready to run.","draft":"Not approved yet.","needs-update":"The page changed and nobody has accepted it yet.","archived":"This test was archived.","not-validated":"Nothing has proved this test works yet."},"new":{"title":"New suite","description":"A suite is a group of tests you run together.","name-label":"Name","name-placeholder":"Release smoke tests","name-required":"Enter a name.","name-too-long":"Use 100 characters or fewer.","description-label":"Description","description-placeholder":"What this suite covers.","description-too-long":"Use 500 characters or fewer.","submit":"New suite","error":"Could not create the suite. Try again."},"rename":{"action":"Rename","title":"Rename this suite","description":"This name appears wherever the suite does.","error":"Could not save the name. Try again."},"members":{"title":"Tests in this suite","count":"{count} of {total} tests","add":"Add tests","empty":"No tests in this suite yet.","remove":"Remove {name}","remove-note":"Removing a test here keeps it in the project.","remove-error":"Could not remove the test. Try again."},"picker":{"title":"Add tests","description":"Every test in this project.","search":"Search tests","chosen":"Nothing picked | 1 test picked | {count} tests picked","none":"No tests in this project yet.","no-match":"No tests match this search.","error":"Could not save the tests. Try again."},"remove":{"title":"Remove this suite","description":"Runs it started keep their results.","action":"Remove suite","confirm-title":"Remove this suite?","confirm":"Runs it started keep their results. The tests stay where they are.","error":"Could not remove the suite. Try again."}},"setup-passkey":{"title":"Add a passkey","subtitle":"Your workspace asks for a passkey to log in.","description":"A passkey uses your fingerprint, face or device lock instead of a password.","action":"Create passkey","name-title":"Passkey created","name-description":"Give it a name you will recognize later.","save-continue":"Save and continue"},"runs":{"title":"Runs","search":"Search runs","load-error":"Could not load runs. Try again.","load-more":"Show more runs","empty":"Run your first test","empty-description":"Start a run from a test or a test suite.","empty-action":"Open tests","no-matches":"No runs match these filters","no-matches-description":"Change the status, the search or the filters.","narrowed-search":"The search is {words}","columns":{"run":"Run","tests":"Tests","when":"When"},"row":{"number":"Run {number}","more-tests":"{name} and {count} more","test-count":"No tests | 1 test | {count} tests","and-more":"and {count} more","could-not-run":"Rehearsal could not finish this run. It costs nothing.","rerun":"Run again","open-test":"Open test","menu":"Actions for run {number}"},"filters":{"test":"Test","search-tests":"Search tests","suite":"Suite","environment":"Environment","started-by":"How it started","when":"When","when-today":"Started today","when-last7":"Started in the last 7 days","when-last30":"Started in the last 30 days"},"selection":{"count":"1 run selected | {count} runs selected","select":"Select run {number}","select-all":"Select every run on this page","run":"Run again","clear":"Clear","note":"Run again repeats 1 run. | Run again repeats {count} runs.","holds-verification":"A verification cannot start again. Take it out of the selection.","started":"1 run started. | {count} runs started.","error":"Could not start the runs. Try again."}},"onboarding":{"profile":{"title":"What's your name?","name-placeholder":"Full name","display-name-placeholder":"Preferred name","errors":{"name-too-long":"Use 100 characters or fewer.","display-name-too-long":"Use 50 characters or fewer.","failed":"Could not save your name. Try again."}},"workspace":{"title":"Name your workspace","name-placeholder":"Workspace name","url-placeholder":"Workspace URL","errors":{"required":"Enter a workspace name.","too-long":"Use 100 characters or fewer.","url-min-length":"Use at least 3 characters.","url-max-length":"Use 50 characters or fewer.","url-invalid":"Use lowercase letters, numbers and hyphens.","url-taken":"That address is taken. Try another.","url-unavailable":"That address is not available. Try another.","failed":"Could not save the workspace. Try again."}},"welcome":{"title":"Welcome to Rehearsal","subtitle":"Add your app, and Re:agent writes your first test.","submit":"Get started"},"app":{"title":"Let's test your app","subtitle":"Enter your web app's address to start your first test. A local address works too.","label":"Web app address","placeholder":"app.example.com","local":"This app runs on your computer. Rehearsal connects it through the CLI on the next step.","local-project-name":"My app","errors":{"required":"Enter an address.","invalid":"That is not a web address.","failed":"We could not save that address."}},"connect":{"title":"Connect your computer","subtitle":"Rehearsal reaches your app through this connection while it runs.","waiting":"Waiting for your computer to connect","keep":"Keep the terminal open. This page continues on its own.","any-port":"Use your app's port. Keep the terminal open.","public-instead":"Use a public address instead","done-title":"Your computer is connected","done-line":"Connected from {name}. Rehearsal reaches {address} through it while the test runs.","done-line-unnamed":"Rehearsal reaches {address} through this connection while the test runs.","submit":"Continue"},"reagent":{"title":"Meet Re:agent","subtitle":"It uses your app in a real browser and saves what it did as a test.","submit":"Create my first test","steps":{"explore":{"label":"Explore","line":"It opens your app and records every step it takes.","row":"Opening a browser on {host}","row-plain":"Opening a browser"},"write":{"label":"Write","line":"Those steps become a Playwright test you can read and run.","name":"Your first test"},"verify":{"label":"Verify","line":"Rehearsal runs the new test once, then again in a fresh browser."}},"errors":{"failed":"Could not create your first test."}},"first-test":{"task":"Make a smoke test for {host}: open it and check that it loads."},"login":{"errors":{"name-max-length":"Use fewer than 100 characters.","display-name-max-length":"Use fewer than 100 characters."}}},"shortcuts":{"cheat-sheet":{"description":"Keyboard shortcuts for moving around your workspace.","no-results":"No shortcuts found","search-placeholder":"Search shortcuts...","title":"Keyboard shortcuts","toggle":"Show keyboard shortcuts"},"command-palette":"Open command palette","dismiss":"Dismiss","go-settings":"Go to settings","groups":{"general":"General","navigation":"Navigation","composer":"Composer"},"search":"Search","go-projects":"Go to Projects","go-tests":"Go to Tests","go-runs":"Go to Runs","then":"then","composer-dictation":"Transcribe my speech","agent-composer-queue":"Keep a message back until the reply ends","agent-composer-steer":"Send a message into the reply being written","go-agent":"Go to Re:agent","go-deployments":"Go to Deployments","go-usage":"Go to Usage","list-filter":"Filter the list"},"invites":{"email-mismatch":{"title":"Wrong account","description":"This invitation was sent to {inviteEmail}, but you’re signed in as {userEmail}.","alert":"Sign in with the address the invitation was sent to.","switch-account":"Switch account","cancel":"Cancel"},"invalid":{"open-workspace":"Open Workspace","request-new":"Request a New Invite","go-home":"Go to Home"},"profile-setup":{"title":"Set Up Your Profile","description":"You’ve joined {workspaceName}. Complete your profile to get started.","name-placeholder":"Full name","display-name-placeholder":"Display name","continue":"Continue to Workspace"},"confirm":{"title":"Join {workspaceName}","description":"{inviterName} has invited you to join as {roleLabel}.","workspace":"Workspace","role":"Your Role","invited-by":"Invited by","accepting":"Joining...","accept":"Accept Invitation","declining":"Declining...","decline":"Decline"},"success":{"title":"Welcome to {workspaceName}!","description":"You’ve successfully joined the workspace.","open-workspace":"Open Workspace"},"already-member":{"title":"You’re Already a Member","description":"You’re already a member of {workspaceName}.","open-workspace":"Open Workspace"},"not-authenticated":{"title":"You are invited","description":"{inviterName} has invited you to join {workspaceName} as {roleLabel}.","alert":"Sign in with {email} to accept this invitation.","sign-in":"Sign in to continue","create-account":"Create an account"},"error":{"title":"Invalid Invitation","description":"This invitation link is invalid or has been removed.","go-home":"Go to Home"},"loading":{"title":"Verifying invitation..."},"roles":{"admin":"an Admin","member":"a Member"}},"common":{"timezone-select":{"search-placeholder":"Search timezones...","empty":"No timezone found.","placeholder":"Select timezone"}},"command-palette":{"description":"Find a page in your workspace.","placeholder":"Go to a page...","no-results":"No pages found.","go-to":"Go to {page}","which-environment":"Which environment?","groups":{"project":"Project"},"footer":{"navigate":"Navigate","select":"Select","close":"Close"}},"cheat-sheet":{"toggle":"Show keyboard shortcuts"},"color-picker":{"preset-name":{"blue":"Blue","cyan":"Cyan","emerald":"Emerald","gray":"Gray","orange":"Orange","pink":"Pink","red":"Red","violet":"Violet","yellow":"Yellow"},"custom":"Custom","presets":"Presets"},"uploads":{"invalid-image":"Choose a JPEG, PNG, GIF or WebP image.","image-too-large":"Choose an image smaller than 5 MB.","failed":"Could not upload the image. Try again."},"agent":{"composer":{"placeholder":"Message Re:agent","attach":"Attach files","dictate":"Transcribe my speech","send":"Send","stop":"Stop","expand":"Expand","collapse":"Collapse","thread-failed":"Could not start the chat. Try again.","disabled-hint":"Not available yet"},"title":"Re:agent","page":{"greeting":"What should we test?","intro":"Describe a flow in your app. Re:agent uses it the way a person would and saves what it did as a test.","placeholder":"Describe a flow to test","expand-threads":"Show chats","load-error":"Could not load this chat. Try again."},"threads":{"new-thread":"New test","untitled":"New chat","empty":"No chats yet","empty-description":"Start a new test to begin a chat.","menu":"Chat options","rename":"Rename","pin":"Pin","unpin":"Unpin","delete":"Delete","rename-hint":"Click to rename","rename-title":"Rename chat","rename-description":"Give this chat a name you will recognize.","title-label":"Chat title","title-placeholder":"Chat title","title-required":"Enter a title.","title-too-long":"Use 120 characters or fewer.","rename-error":"Could not rename the chat. Try again.","delete-title":"Delete this chat?","delete-description":"The messages in it are removed.","delete-error":"Could not delete the chat. Try again.","status-working":"Working","status-failed":"Reply failed","status-done":"Finished","status-idle":"Nothing new","groups":{"today":"Today","yesterday":"Yesterday","past-week":"Previous 7 days","past-month":"Previous 30 days","older":"Older"},"suggestion-loading":"Writing a suggestion","suggestion-use":"Use it"},"messages":{"error-title":"Rehearsal could not finish that.","error-body":"Your message is still here. Try again.","retrying":"Trying again","stopped":"Stopped","good-reply":"Good reply","bad-reply":"Bad reply","feedback-error":"Could not save your rating. Try again.","copy":"Copy","copied":"Copied","send-error":"Could not send the message. Try again.","wait-for-reply":"Wait for the current reply to finish.","stop-error":"Could not stop the reply. Try again.","feedback":{"question":"What was off about my reply?","reason":{"wrong_information":"Wrong information","did_wrong_thing":"Did the wrong thing","missed_step":"Missed a step","other":"Other"},"note-placeholder":"Tell me more (optional)","share-steps-one":"The 1 step of this turn","share-steps-many":"The {count} steps of this turn","share-before-one":"The 1 message before it","share-before-many":"The {count} messages before it","with":"With this rating: this reply, the chat it is in, your workspace, time","only-listed":"Only what is listed here is sent. The rest of the chat stays in the workspace.","send":"Send","close":"Close","saved":"You said: {reason}","change":"Change","remove":"Remove","save-error":"Could not save that. Try again."}},"resources":{"title":"Re:agent uses","remove":"Remove","more":"Show {count} more","shown":"{shown} of {total}","accounts":{"title":"Test accounts","add-title":"Add a test account","lead":"Re:agent uses these accounts to sign in to your app.","sign-up":"Tests that sign up need no account here. Each run uses a new address and reads the confirmation email.","empty":"Add your first test account","empty-description":"Re:agent signs in with it to reach the pages behind your login.","no-project":"Pick a project to see its accounts.","load-error":"Could not load the accounts. Try again.","search":"Search accounts","no-matches":"No accounts match your search.","add":"Add account","add-error":"Could not add the account. Try again.","kind":{"password":"Password","inbox":"Email code or link","fresh":"New account each run"},"code-chip":{"authenticator":"Authenticator code","email":"Email code"},"sign-in-label":"How does this account sign in?","sign-in":{"password":"With a password","inbox":"With an email code or link"},"label":"Name","label-placeholder":"admin","label-required":"Enter a name.","label-too-long":"Use 40 characters or fewer.","label-taken":"That name is already used in this workspace.","email":"Email, username or phone number","email-required":"Enter what this account signs in with.","password":"Password","password-hint":"Saved encrypted. It never goes in the chat.","password-required":"Enter a password.","needs-code":"This account also needs a code after the password","code-from":{"authenticator":"From an authenticator app","email":"Sent by email"},"secret-key":"Secret key","secret-key-hint":"Paste the secret key from your authenticator app. It is saved encrypted and never goes in the chat.","secret-key-required":"Paste the secret key.","secret-key-invalid":"Enter the secret key or the otpauth address from your authenticator.","code-by-email-hint":"The account gets its own address and Rehearsal reads the code sent to it.","address":"Email address","address-name":"name","address-hint":"Create the account in your app with this address once. Rehearsal reads codes and links sent here to sign in.","address-later":"Rehearsal makes the address when you add the account. Create the account in your app with it once.","sites":"Where it works","sites-hint":"Pick every environment it can sign in to.","sites-required":"Pick at least one environment.","copy-address":"Copy the address","show-messages":"Show the messages","hide-messages":"Hide the messages","messages-title":"Last messages received","messages-empty":"No messages yet.","messages-loading":"Reading the mailbox.","messages-error":"Could not read the mailbox. Try again.","code":"Code {code}","code-ending":"Code ending {code}","show-code":"Show","hide-code":"Hide","links-one":"1 link","links-many":"{count} links","remove-title":"Remove this account?","remove-description":"Re:agent can no longer sign in as {label}.","remove-error":"Could not remove the account. Try again.","outcome":{"today":"today","never":"Not used yet","signed-in":"Signed in {day}","selected":"Used {day}, selected, sign-in not used","stopped":"Used {day}, stopped at step {step}","stopped-unknown-step":"Used {day}, stopped","reported":"Re:agent said: {reason}"}},"files":{"title":"Files","description":"Files a test uploads while it runs: a CSV to import, an image to attach.","no-project":"Pick a project to see its files.","load-error":"Could not load the files. Try again.","empty":"No files yet","empty-description":"Add a file a test needs to upload, such as a spreadsheet.","drop":"Drop a file here","drop-hint":"Up to {size} MB. Images, documents, spreadsheets, audio or video.","choose":"Choose a file","uploading":"Uploading","search":"Search files","no-matches":"No files match your search.","today":"today","added":"{size} · added {day}","replaced":"{size} · replaced {day}","tests":"No tests | {count} test | {count} tests","no-tests":"No tests use this file yet.","download":"Download","download-error":"Could not open the file. Try again.","replace":"Replace","replace-notice":"Replacing a file changes tests saved after it. Tests saved before keep their file.","remove-title":"Remove this file?","remove-description":"Saved tests that use {name} keep working.","remove-error":"Could not remove the file. Try again.","error":{"too-large":"That file is over {size} MB. Choose a smaller one.","wrong-kind":"That kind of file is not supported. Choose another one.","upload-failed":"The upload did not finish. Try again."},"size-bytes":"{value} B","size-kb":"{value} KB","size-mb":"{value} MB"},"memory":{"title":"Memory"}},"preview":{"title":"Preview","show":"Show preview","hide":"Hide preview","close":"Close preview","resize":"Resize the preview","placeholder":"The browser appears here when a test is being created."},"live":{"title-browsers":"Browsers","title-recordings":"Recordings","stack-empty":"Browsers appear here when Re:agent opens one.","close":"Close this browser","close-error":"That browser did not close. Try again.","follow":"Follow Re:agent","state":{"opening":"Opening","waiting":"Waiting","closed":"Closed","unavailable":"Unavailable"},"nothing-yet":"Nothing yet","nothing-on-page":"Nothing on the page yet","last-picture":"Last picture at {at}","no-steps":"Waiting for the first step.","connecting":"Connecting to the browser.","reconnecting":"Reconnecting to the browser.","not-showing":"The browser is not being shown right now.","unavailable":"The live view is not available.","size-beside":"Beside the chat","size-large":"Bigger","size-full":"Full screen","acting-in":"Working in {name}"},"trace":{"working":"Working","status":"{label} · {seconds}s","run-count":"{count} times","page":{"opened-one":"opened the page","opened-many":"opened {count} pages","clicked":"clicked {name}","clicked-plain-one":"clicked something","clicked-plain-many":"clicked {count} things","filled-one":"filled a field","filled-many":"filled {count} fields","pressed-one":"pressed a key","pressed-many":"pressed {count} keys","chose-one":"chose an option","chose-many":"chose {count} options","scrolled-one":"scrolled the page","scrolled-many":"scrolled {count} times","waited-one":"waited for the page","waited-many":"waited {count} times","read-one":"read the page","read-many":"read the page {count} times","inbox-one":"read the test inbox","inbox-many":"read the test inbox {count} times","uploaded-one":"uploaded a file","uploaded-many":"uploaded {count} files","skipped-one":"skipped a step","skipped-many":"skipped {count} steps","worked-one":"took 1 step","worked-many":"took {count} steps","failed-one":"1 step did not work","failed-many":"{count} steps did not work"},"summary":{"line":"Worked for {duration} · {work}","line-more":"Worked for {duration} more · {work}","worked":"Worked for {duration}","worked-more":"Worked for {duration} more","work-only":"What it did: {work}","and":"and","browser-one":"opened a browser","browser-many":"opened {count} browsers","step-one":"took 1 step","step-many":"took {count} steps","flow-one":"saved the flow","flow-many":"saved {count} flows","run-one":"started a run","run-many":"started {count} runs","failed-one":"1 step did not work","failed-many":"{count} steps did not work"}},"queue":{"title":"Waiting to be sent","next":"Next","waiting":"{count} waiting","steer":"Steer","add-error":"Could not keep that message. It is back in the box.","steer-error":"Could not send that message. Try again.","steer-pending":"Read after the current step.","steer-unread":"Not read before you stopped. It goes with your next message.","edit":"Edit in the composer","remove":"Remove from the queue","menu":"More for this message","move-up":"Move up","move-down":"Move down","row-label":"Waiting: {message}","files-one":"1 file","files-many":"{count} files","queue-button":"Queue","to-queue":"to queue","to-steer":"to steer","full":"You can keep {count} messages waiting. Send or remove one first."},"question":{"head":"Question","hide":"Hide the question","show":"Show the question","status":"Waiting for your answer","own-words":"Or answer in your own words","skip":"Skip","send":"Send","add-account":"Add account","remember":"Remember this for {project}","answered-caption":"You answered the question.","skipped-caption":"You skipped the question.","answer-error":"Could not send your answer. Try again.","skip-error":"Could not skip the question. Try again."},"test-card":{"state":{"saved":"Saved","writing":"Writing the test","running-once":"Running it once","checking":"Checking it in a fresh browser"},"stage":{"saved":"Flow saved","written":"Test written","written-again":"Writing the test, attempt {number} of {total}","written-failed":"Test not written","written-blocked":"Writing blocked","first-run":"First run passed","first-run-pending":"First run","first-run-failed":"First run failed","first-run-blocked":"First run blocked","verified":"Verified in a fresh browser","verified-pending":"Check in a fresh browser","verified-failed":"Failed in a fresh browser","verified-blocked":"Verification blocked"},"work-summary":"Wrote and checked the test · {duration}","work-summary-plain":"Wrote and checked the test","steps-one":"1 step","steps-many":"{count} steps","edit":{"name-label":"Test name","name-placeholder":"Name this test","name-hint":"Enter saves. Escape cancels.","name-empty":"A test needs a name.","name-too-long":"A name can be up to 100 characters.","description-label":"Test description","description-placeholder":"What this test checks","description-hint":"Enter saves. Shift and Enter add a line.","description-too-long":"A description can be up to 500 characters.","revert":"Revert","save-failed":"Could not save your change. Try again."},"failure":"The test stopped at step {number}: {step}.","failure-unknown-step":"The test did not pass.","blocked":"The check could not finish.","failure-ours":"Something went wrong on our side, so the check did not finish. Retry runs it again.","write-blocked":"Writing the test stopped before it finished.","write-failed":"The test could not be written.","write-failed-twice":"The test could not be written. We tried twice.","write-failed-three":"The test could not be written. We tried three times.","run":"Run now","open":"Open test","watch":"Watch recording","retry":"Retry","run-error":"Could not start the run. Try again.","retry-error":"Could not write the test again. Try again.","validation-retry-error":"Could not start the retry. Try again."},"prompts":{"create-test":"Create a test for {url}: ","edit-test":"Change the test {name}: "},"explore":{"button":"Explore {app}","message":"Explore {app}","offer":"Your first test passed. Want me to find more flows worth testing in {app}?","caption":"Finds flows in your app worth testing.","caption-time":"Takes around 15 minutes. You can close this tab while it works.","add-account":"Add account","needs-account":"Add a test account first. Re:agent signs in with it to explore.","commands":"Commands","command":"Explore","command-hint":"Explore {app} and find flows to test","chip":"Explore","chip-remove":"Remove Explore","focus-placeholder":"Anything to focus on? Optional","again":"Explore {app} again","strip":{"exploring":"Exploring","seconds":"{count} s","minutes":"{count} min","pause":"Pause"}},"suggestions":{"label":"Tests to try"},"cards":{"act-error":"That did not go through. Try again.","not-now":"Not now","later":"Later","watch":"Watch","screen":{"desktop":"Desktop","tablet":"Tablet","phone":"Phone"},"suggestions":{"title":"Suggested tests","picked":"{chosen} of {total}","added-by-you":"Added by you","steps-one":"1 step","steps-many":"{count} steps","make-one":"Make 1 test","make-many":"Make {count} tests","placeholder":"Add a test or change one"},"screens":{"title":"Screens","size":"Screen size","browser":"Browser","soon":"Soon","emulated":"Tablet and phone run in Chromium at their screen size, with touch. They are not real devices.","tests-one":"1 test","tests-many":"{count} tests","screens-one":"1 screen","screens-many":"{count} screens","runs-one":"1 run","runs-many":"{count} runs","count":"{tests} on {screens} · {runs}","start":"Start"},"results":{"title":"Results","fact":"{runs} · {tests} on {screens}","finished-one":"The run finished: {outcome}.","finished-many":"All {runs} finished: {outcome}.","running":"Running {done} of {total}.","passed":"{count} passed","failed":"{count} failed","blocked":"{count} blocked","stopped":"{count} did not finish","failed-at":"Failed at step {number}, {step}","failed-plain":"Failed","status":{"passed":"passed","failed":"failed","blocked":"blocked","running":"still running","not-checked":"not checked"}},"suite":{"title":"New suite","name":"Name","tests":"Tests and screens","failed-on":"Failed on {screens}","summary":"{tests} · {runs} per suite run","screens-for":"Screens for {name}","add":"Add to suite","open":"Open suite"},"github":{"name":"GitHub","line":"Rehearsal reads deployments and writes checks. It never reads your code.","connect":"Connect GitHub","rule-title":"Run on pull requests","repository":"Repository","deployment":"Deployment","vercel":"Vercel preview","suite":"Suite","suite-placeholder":"Pick a suite","rule":"Run on every pull request","ruled":"{suite} runs on every pull request.","open-rules":"Open rules"},"batch":{"making-one":"Making 1 test.","making-many":"Making {count} tests. One that gets stuck does not stop the others.","ready-none":"No tests are ready.","ready-one":"1 test is ready.","ready-many":"{count} tests are ready.","blocked-one":"{names} is blocked; the others do not wait for it.","blocked-many":"{names} are blocked; the others do not wait for them.","failed-one":"{names} could not be made; the others do not wait for it.","failed-many":"{names} could not be made; the others do not wait for them.","failed-also":"{names} could not be made.","waiting":"Waiting","walking":"Following the flow","stopped-blocked":"Blocked","stopped-failed":"Could not follow the flow","retry":"Retry","retry-message":"Retry {name}."}}},"memory":{"title":"Memory","description":"What Re:agent has learned about {app}. It reads this every time it works on the app.","description-no-app":"What Re:agent has learned about your app. It reads this every time it works on the app.","no-project":"Pick a project to see what Re:agent knows about it.","no-app":"This project has no app yet.","load-error":"Could not load the memory. Try again.","apps":"Apps","explore":"Explore {app}","explore-again":"Explore again","empty":"Let Re:agent explore {app}","empty-description":"It takes notes on what it finds, and you can change them here.","sections":{"what":"What it is","features":"Features","who":"Who uses it","flows":"Flows that matter","know":"Things to know"},"assumed":"Assumed","tested":"Tested","footer":{"written":"Written by Re:agent from {sources}. What you change here stays.","stays":"What you change here stays.","updated":"Updated {time} from what you said.","updated-also":"Updated {time} from what you said. Also from {sources}.","exploration":"the exploration of {day}","tests":"{count} saved test | {count} saved tests","both":"{first} and {second}","assumed":"Assumed means Re:agent read it on a page but did not see it in the app."},"box":{"placeholder":"What should Re:agent remember or change?","send":"Send","send-error":"Could not send that. Try again.","reply-error":"Re:agent could not answer. Try again."}},"message":{"attachment":{"remove":"Remove","retry":"Retry","error":{"invalid-type":"This file type is not supported.","too-large":"Choose a file smaller than {size} MB.","too-many":"Add up to {count} files.","upload-failed":"Could not upload the file."}},"voice":{"transcribing":"Transcribing...","transcription-failed":"Could not transcribe.","retry":"Retry","microphone-denied":"Allow microphone access in your browser to dictate.","too-short":"Recording too short.","max-reached":"Recording stopped at the maximum length.","transcribe-to-box":"Put the words in the message","transcribe-and-send":"Transcribe and send"},"language":{"label":"Spoken language","auto-detect":"Auto-detect","search":"Search languages","no-matches":"No languages found"},"scroll-to-bottom":"Scroll to bottom"},"dictation":{"clean-up":"Clean up my words","discard":"Discard","done":"Done","undo":"Undo","undo-cleanup":"Undo cleanup","unavailable":"Dictation is not available right now. Type your message instead."},"status":{"passed":"Passed","failed":"Failed","blocked":"Blocked","needs-update":"Needs update","could-not-run":"Could not run","queued":"Queued","cancelled":"Cancelled","running":"Running","never":"Never run","pill":{"all":"All","passed":"Passed","failed":"Failed","passing":"Passing","failing":"Failing","blocked":"Blocked","could-not-run":"Could not run","running":"Running","never-run":"Never run"},"tape":{"label":"The last {count} runs"}},"list":{"row":{"select":"Select this row"},"selection":{"select":"Select"},"filter":{"open":"Filter","title":"Filter by","search":"Search {field}","nothing":"Nothing by that name.","clear-field":"Clear {field}","clear-all":"Clear all","remove":"Remove {filter}","chip":{"is":"{field} is {values}","or":"{first} or {second}","more":"{first} or {count} more"}}},"run":{"title":"Run {number}","opening":"Opening the run.","trigger":{"manual":"Started manually","github":"Started by GitHub","rerun":"Started as a rerun","validation":"Verifying the test"},"load-error":"Could not load this run. Try again.","not-found":"Run {number} is not in this project.","not-found-description":"Check the project named at the top of the page, or find the run in the list.","project-missing":"That project is not in this workspace.","project-missing-description":"Check the link, or open the projects page to find what you are looking for.","open-projects":"Open projects","back-to-runs":"Open runs","took":"took {duration}","menu":"More for run {number}","step-check":"Check","step-did-not-run":"did not run","no-steps":"No steps were recorded.","subject":{"tests":"1 test | {count} tests"},"verdict":{"when":"{when}","when-at-step":"{when} at step {number}","at-step":"at step {number}","of-tests":"{count} of its {total} tests","started":"started {when}","asked":"asked for {when}","trigger":{"manual":"started manually","github":"started by GitHub","rerun":"started as a rerun","validation":"verifying the test"}},"notice":{"could-not-run":"Something on our side stopped this run. It counts towards nothing, so run it again when you are ready.","blocked-run":"A test in this run was not ready, so Rehearsal could not check it.","blocked-result":"Rehearsal could not check this test. The reason is under its steps.","blocked-result-unknown":"Rehearsal could not check this test.","blocked-results":"Rehearsal could not check 1 test. Open it to see why. | Rehearsal could not check {count} tests. Open each one to see why.","needs-update":"The page changed where this test reads it, so the test needs an update."},"facts":{"address-count":"{count} addresses"},"rerun-of":"Re-run of #{number}","rerun":{"action":"Run again","error":"Could not start the re-run. Try again."},"stop":{"action":"Stop","keep-going":"Keep going","confirm-title":"Stop this run?","confirm":"The test that is running finishes first.","already-finished":"This run had already finished.","error":"Could not stop the run. Try again."},"entry":{"did-not-run":"Did not run","running":"Running","waiting":"Waiting","not-ready":"Not ready: {reason}","reasons":{"ready":"ready","draft":"draft","needs-update":"needs update","archived":"archived","not-validated":"not verified"}},"player":{"no-recording":"There is no recording for this test.","not-started":"The recording appears when the first test finishes.","nothing-ran":"Nothing ran, so there is no recording.","recording-missing":"The recording was not saved for this test.","recording-missing-step":"The recording was not saved for this test. This is the screenshot at step {number}.","screenshot-badge":"Screenshot, step {number}"},"problem":{"sentence":"It expected “{expected}”. The page showed “{observed}”.","show-screenshot":"Show the screenshot","show-recording":"Show the recording"},"actions":{"trace":"Download the trace","console":"Console log","open-test":"Open test"},"live":{"title":"Live view","gloss":"The browser as it is now","flag":{"live":"Live","connecting":"Connecting"},"waiting":"Waiting for the browser","step":"Step {number}","running-now":"This test is running now.","no-picture":"A local connection has no live picture.","evidence-later":"The recording appears when this test finishes."}},"player":{"play":"Play","pause":"Pause","replay":"Replay","position":"Recording position","time":"{elapsed} / {total}","speed":"{rate}x","speed-label":"Playback speed","step-line":"{number} · {label}","failed-here":"failed here","stopped-here":"stopped here","never-ran":"never ran","running-now":"running now","no-step":"no step here","recording-unavailable":"Recording not available.","loading-recording":"Loading the recording","screenshot-alt":"The page at the step that failed"},"results":{"status":{"passed":"Passed","failed":"Failed","blocked":"Blocked","could-not-run":"Could not run","could-not-run-detail":"Something went wrong on our side, so this run did not finish. We are sorry, and we are working on it.","cancelled":"Cancelled","queued":"Queued","running":"Running","needs-update":"Needs update"}},"deployments":{"title":"Deployments","load-error":"Could not load deployments. Try again.","connect-title":"Run tests on every deploy","connect-description":"Connect your repository and pick the tests to run every time your pipeline deploys.","connected":"Connected","rules":"Rules","search":"Search commits","filters":{"group":"Pull request or branch","pull-request":"Pull request #{number}","branch":"Branch {branch}","rule":{"label":"Rule","pull-request":"Pull requests into {branch}","branch":"Changes to {branch}","branch-pattern":"Branches matching {branch}"},"when":{"label":"When","today":"Started today","last7":"Started in the last 7 days","last30":"Started in the last 30 days"}},"group":{"run-count":"No runs | 1 run | {count} runs"},"empty":"No runs yet","empty-hint":"Runs appear here once a rule matches a commit.","no-matches":"No matching runs","no-matches-hint":"Try fewer filters, or a different commit.","cut-off":"Showing the newest {count} runs.","branch-group-hint":"Branch runs report here and block nothing","no-branch":"No branch","waiting":"Waiting for a deployment","open-check":"Open the check on GitHub","conclusion":{"success":"Passed","failure":"Failed","neutral":"Nothing to report","cancelled":"Cancelled","skipped":"Nothing was deployed","timed-out":"No deployment arrived","action-required":"Needs someone to look"}},"github":{"connect":"Connect GitHub","connect-needs-admin":"Ask a workspace admin to connect GitHub.","connect-error":"Could not open GitHub. Try again.","connected-repository":"Connected repository","not-configured":"GitHub is not set up on this server.","sentence":{"when":"When","when-pull-request-into":"When a pull request into","pull-request-opens":"opens or changes, run","when-branch-matching":"When a branch matching","branch-changes":"changes, run","comma-run":", run","all-approved-tests":"all approved tests","for":"for","on-vercel-preview":"on its Vercel preview","on-vercel-branch":"on Vercel's deployment of the branch","at-action-address":"at the address sent by GitHub Actions","at":"at","and-require-merge":"and require passing tests before merging.","and-report":"and report the result in GitHub.","full-stop":".","blank":{"something-changes":"something changes","the-tests":"the tests","somewhere":"somewhere","branch":"a branch","pattern":"a pattern","an-address":"an address"}},"folded":{"when-pull-request":"a pull request into {branch} opens or changes","when-branch":"{branch} changes","when-branch-pattern":"a branch matching {branch} changes","merging-required":"merging required, verified","merging-not-blocked":"merging not blocked yet","reports-only":"reports only","tests-suite":"{suite}","tests-all":"All approved tests","address-vercel-preview":"The pull request's Vercel preview","address-vercel-branch":"Vercel's deployment of the branch","address-action":"An address from GitHub Actions","address-fixed":"{url}"},"merge":{"require":"Require passing tests before merging","steps-title":"Set this up in GitHub","step-settings":"Open the repository's settings in GitHub.","step-rules":"Open Rules and choose the rule for your target branch.","step-require":"Require status checks and add \"{name}\".","not-blocked":"Merging is not blocked yet. Make \"{name}\" required in GitHub.","show-steps":"Show the steps","required":"GitHub requires the {name} check.","last-checked":"Last checked {when}.","not-checked":"Rehearsal has not read GitHub's rules for this branch yet.","check-now":"Check now","check-again":"Check again","check-after-save":"Rehearsal can read GitHub's rules once this rule is saved.","check-failed":"Could not read GitHub's rules. Try again."},"rule":{"paused":"Paused","pause":"Pause","resume":"Resume","last-checked":"Last checked {date}","last-run":"Run #{number}, {when}","not-run-yet":"Not run yet","strip-label":"The last runs of this rule","check-name-hint":"The name this rule reports under in GitHub."},"rules":{"title":"Rules","subtitle":"What Rehearsal runs by itself when you push.","add":"Add a rule","load-error":"Could not load rules. Try again.","empty":"No rules yet","empty-description":"A rule says when to run tests, which tests to run, and which address to test.","needs-repository":"This project has no repository yet.","open-settings":"Open repository settings","remove-title":"Remove this rule?","remove-description":"Rehearsal stops checking this branch. Runs that already finished keep their results.","remove-error":"Could not remove the rule. Try again.","toggle-error":"Could not change the rule. Try again.","missing":"Rule not found","missing-description":"It may have been removed.","back":"Back to rules"},"setup":{"title":"Set up GitHub checks","subtitle":"Choose when to run tests and which app to test.","edit-title":"Change the rule","edit-subtitle":"Choose when to run tests and which app to test.","when-title":"When should tests run?","when-pull-request":"When a pull request is opened or updated","when-branch":"When a branch is updated","when-pattern":"When a branch matching a pattern is updated","target-branch":"Target branch","target-branch-hint":"For pull requests into this branch.","branch":"Branch","branch-hint":"After a push or merge.","pattern":"Branch pattern","pattern-hint":"A * stands for the rest of the name, so release/* matches every branch that starts with release/.","tests-title":"Which tests should run?","website-label":"Address to test","website-placeholder":"Choose an address","suite-count":"{count} tests","all-tests":"All approved tests","no-suites":"This project has no suites yet. All approved tests still works.","address-title":"Which address should Rehearsal test?","address-description":"Choose where Rehearsal opens your app.","address-vercel-preview":"The pull request's Vercel preview","address-vercel-branch":"Vercel's deployment of the branch","address-vercel-hint":"Rehearsal tests the deployment when it is ready.","address-action":"An address from GitHub Actions","address-fixed":"The same address every time","address-fixed-hint":"Use this when the branch always deploys to the same address.","address-label":"Web app address","address-placeholder":"https://staging.example.com","save-rule":"Save rule","save-changes":"Save changes","errors":{"branch-required":"Write a branch name.","pattern-needs-star":"A pattern needs a * in it.","branch-no-star":"Only a pattern can use a *.","address-invalid":"Write a full address, starting with https.","situation-taken":"A rule already covers that branch at this address.","save-failed":"Could not save the rule. Try again."}},"bypass":{"title":"Access to Vercel previews","description":"If your previews require sign-in, add Vercel's secret for automated access. Find it under \"Protection Bypass for Automation\" in Vercel's project settings.","not-opened-yet":"Rehearsal cannot open protected previews yet. Make previews public for now.","label":"Vercel bypass secret, optional","placeholder":"Paste the secret","saved":"Saved","replace":"Replace","removed":"Removed when you save.","undo":"Keep it","dropped-on-change":"The saved Vercel secret is removed when you save, because this rule no longer opens a Vercel deployment."},"picker":{"title":"Choose a repository","description":"Rules run on this repository. One project has one repository.","search-placeholder":"Search repositories","connect":"Connect","empty":"No repositories yet. Add one to Rehearsal in GitHub.","no-matches":"No repositories match that.","this-project":"This project","another-project":"Another project","truncated":"This list stops at 500 repositories.","load-error":"Could not load repositories. Try again.","errors":{"taken":"That repository is already connected to another project.","already-connected":"This project already has a repository. Disconnect it first.","failed":"Could not connect the repository. Try again."}},"return":{"back":"Go to Rehearsal","working":"Connecting GitHub","working-description":"One moment.","cancelled":"Nothing was connected","cancelled-description":"The install was stopped on GitHub. You can start again from the project.","link-invalid":"That link no longer works","link-invalid-description":"A connection link lasts ten minutes, works once, and has to finish in the tab that started it. Start again from the project.","unreachable":"Your GitHub account cannot see this installation","unreachable-description":"Ask an owner of the GitHub account that has Rehearsal installed to connect it here.","bound-elsewhere":"This installation belongs to another workspace","bound-elsewhere-description":"Remove Rehearsal in GitHub, then install it again from this workspace.","suspended":"This installation is suspended in GitHub","suspended-description":"Turn it back on in GitHub, then connect it again.","not-configured":"GitHub is not set up on this server","not-configured-description":"Nothing can be connected until it is.","failed":"Could not finish connecting GitHub","failed-description":"Start again from the project."}},"usage":{"title":"Usage","load-error":"Usage could not be loaded.","delete-blocked":"Cancel billing for this workspace first. Delete it once the cancellation goes through.","show-more":"Show more","per-month":"a month","plan-section":"Your plan","plans":"Plans","allowance":{"free-low-title":"You have {count} run left this month | You have {count} runs left this month","free-low-body":"They come back on {date}.","free-low-body-soon":"They come back when this month ends.","free-gone-title":"No runs left this month","free-gone-body":"Your runs come back on {date}.","free-gone-body-soon":"Your runs come back when this month ends.","see-plans":"See plans","paid-gone-title":"No runs left this month","paid-gone-body":"Your plan renews on {date}. Allow additional runs to keep going before then.","paid-gone-body-soon":"Allow additional runs to keep going before your plan renews.","allow-extra":"Allow additional runs"},"contact":{"title":"Need more than the {plan} plan?","description":"Tell us how much you run and we will set limits that fit.","volume":"Higher volume","support":"Priority support","limits":"Custom limits","cta":"Contact us","panel-title":"Tell us what you need","sent":"Message sent","placeholder":"How many test runs do you expect, and what do you need from us?"},"period":{"first-run":"Your first test run starts a free week of unlimited runs.","free-renews":"Your free runs come back on {date}.","free-renews-soon":"Your free runs come back when this month ends.","renews":"Renews on {date}.","renews-soon":"Renews at the end of this period.","ending":"Paid until {date}.","ending-soon":"Paid until the end of this period."},"meter":{"left":"run left | runs left","of-allowance":"of {count}","used":"Used","in-progress":"In progress","remaining":"Left","extra-note":"{included} included, plus {extra} your spending limit allows.","hold-note":"A run in progress holds part of your allowance. Whatever it does not count comes back."},"trial":{"gift-week":"A free week on us","left":{"days":"day left | days left","hours":"hour left | hours left","minutes":"minute left | minutes left"},"over":"Your free week has ended.","unlimited":"Unlimited runs","on-us":"Every run this week is on us.","runs-label":"Runs so far","last-day":"Last day","after-free":"After the week you get {count} free run a month. | After the week you get {count} free runs a month.","after-chosen":"The {plan} plan starts when the week ends.","chosen":"You chose the {plan} plan.","chosen-priced":"You chose the {plan} plan at {price} a month.","payment-dated":"The first payment is on {date}.","payment-first-run":"Your free week starts on your first test run.","cancel-plan":"Cancel plan","selection-pending":"We are setting up your plan. This page updates when it is done.","selection-review":"We need to check your plan before it starts."},"complimentary":{"eyebrow":"A gift","title":"The {plan} plan is on us for {count} month | The {plan} plan is on us for {count} months","runs-until":"It is active now and runs until {date}.","normally":"Normally","you-pay":"You pay","monthly":"You get {count} test run a month. | You get {count} test runs a month.","after-week":"After that you get {count} test run a month. | After that you get {count} test runs a month.","resets":"They reset on {date}.","unlimited-until":"Runs are unlimited until the end of {date}.","week-first":"Runs this week are unlimited.","no-card":"No card needed. We charge nothing when it ends.","sign-off":"Make the most of it.","dismiss":"Got it","sidebar":"Complimentary plan","plans-note":"Nothing to buy while your gift runs. You can choose a plan when it ends.","period":"Complimentary until {date}.","gone-title":"No runs left this month","gone-body":"Your runs come back on {date}.","gone-body-soon":"Your runs come back when this month ends."},"plan":{"free":{"name":"Free"},"starter":{"name":"Starter"},"team":{"name":"Team"},"current":"Current plan","scheduled":"Starts at renewal","selected":"Chosen","included-runs":"{count} test run a month | {count} test runs a month","no-card":"No card needed.","extra-price":"{price} for each run after that","choose-action":"Choose the {plan} plan","switch-action":"Switch at renewal","cancel-action":"Cancel plan","best":"Recommended","at-volume":"At {count} runs a month","uncovered":"Not enough runs","volume-breakdown":"{base} plus {count} extra run | {base} plus {count} extra runs"},"notice":{"payments-off":"Payments are not set up yet, so plans cannot be changed here.","past-due":"A payment did not go through. Update your payment details to keep running tests.","cancelling":"This plan stops on {date}. Everything works until then.","cancelling-soon":"This plan stops at the end of this period. Everything works until then.","keep-plan":"Keep plan","scheduled":"You move to the {plan} plan on {date}.","scheduled-soon":"You move to the {plan} plan at the next renewal.","undo-change":"Undo","no-runs":"No runs left in this workspace.","limit-reached":"Your spending limit is used up."},"checkout":{"confirming":"Confirming your payment.","confirmed":"Your plan is active.","waiting":"Your payment is still being confirmed. This page updates when it is done.","cancelled":"Checkout was closed. Nothing was charged.","refresh":"Check again"},"additional":{"title":"Additional runs","description":"Run more tests than your plan includes. They are charged on your monthly invoice.","switch":"Allow additional runs","on-hint":"Runs past your included allowance are allowed up to your spending limit.","off-hint":"Runs stop once your included allowance is used up.","limit":"Spending limit","limit-hint":"Up to {count} more runs at {price} each.","committed":"Extra runs this period","committed-hint":"Runs counted or in progress past your included allowance."},"spending":{"on-title":"Allow additional runs","on-description":"Set the most you want to spend on runs past your included allowance.","amount-label":"Spending limit for this period","amount-invalid":"Enter an amount, such as 50.00.","amount-positive":"Enter an amount above zero.","amount-too-high":"Choose a smaller amount.","amount-too-low":"This period has already used {amount} of additional runs, so the limit cannot go below it.","buys":"This allows up to {count} more runs at {price} each.","invoice-note":"This is a maximum, not a purchase. You pay for the runs you use.","on-confirm":"Allow up to {amount}","off-title":"Turn off additional runs","off-description":"Runs will stop once your included allowance is used up.","off-note":"Runs already counted or in progress stay on this invoice.","off-confirm":"Turn off"},"plan-change":{"checkout-title":"Start the {plan} plan","checkout-body":"{price} a month for {runs} test runs. Runs after that cost {unit} each.","checkout-note":"Payment happens on Stripe. Your runs are added once the payment is confirmed.","checkout-confirm":"Continue to payment","checkout-trial-title":"Choose the {plan} plan","checkout-trial-body":"{price} a month for {runs} test runs. Payment starts after your free week.","checkout-trial-note":"Stripe saves your card now. We charge nothing during your free week.","checkout-trial-confirm":"Continue to Stripe","schedule-title":"Switch to the {plan} plan","schedule-body-dated":"You move to the {plan} plan on {date}.","schedule-body":"You move to the {plan} plan at the next renewal.","schedule-note":"You keep the {plan} plan and its runs until then.","schedule-confirm":"Switch at renewal","schedule-trial-body-dated":"You keep your free week. Payment for the {plan} plan starts on {date}.","schedule-trial-body":"You keep your free week. Payment for the {plan} plan starts when it ends.","schedule-trial-confirm":"Switch plan","cancel-title":"Cancel the {plan} plan","cancel-body-dated":"You keep the {plan} plan until {date}. After that the workspace is on the Free plan.","cancel-body":"You keep the {plan} plan until this period ends. After that the workspace is on the Free plan.","cancel-note":"The Free plan's test runs come back every month.","cancel-trial-body":"We have charged nothing for the {plan} plan. Your free week stays as it is.","cancel-trial-note":"When your free week ends, this workspace is on the Free plan.","cancel-confirm":"Cancel plan","keep":"Keep plan"},"payment":{"title":"Billing details","description":"Your card, billing contact and tax identifier are held by Stripe.","method":"Payment method","method-hint":"Change the card this workspace is charged on.","method-value":"{brand} ending {last4}","contact":"Billing contact","contact-hint":"The name, address and email your invoices are made out to.","tax":"Tax identifier","tax-hint":"Add a VAT or tax number to your invoices.","open":"Open payment settings"},"invoices":{"title":"Invoices","empty":"No invoices yet.","error":"Invoices could not be loaded.","unnumbered":"Invoice","open":"Open invoice","status":{"paid":"Paid","due":"Due","draft":"Not issued yet","unpaid":"Unpaid","cancelled":"Cancelled"},"description":"Every invoice this workspace has been issued.","view-all":"View all"},"limit":{"needs":"This needs {count} run. | This needs {count} runs.","left":"No runs are left. | {count} run is left. | {count} runs are left.","suite-note":"A suite runs every test in it, so all of them have to fit.","try-again":"Try again","see-plans":"See plans","add-runs":"Add runs","raise-limit":"Raise the limit","open-billing":"Open usage and plan","ask-admin-runs":"Ask an admin to add more runs to this workspace.","ask-admin-payment":"Ask an admin to check this workspace's payment.","advice-plan":"Pick a plan to keep running tests.","advice-additional":"Turn on additional runs to go past your included allowance.","advice-raise":"Raise your spending limit to allow more.","run-limit":{"title":"Not enough runs left","body":"This workspace shares one allowance for test runs."},"spending-limit":{"title":"This would pass your spending limit","body":"Your spending limit decides how many runs are allowed past your plan."},"payment-required":{"title":"Payment needs attention","body":"This workspace's payment is not confirmed. If you paid a moment ago, give it a minute and try again."},"period-changed":{"title":"Your billing period changed","body":"Start this again to confirm the price of the new period."},"participant-limit":{"title":"Too many browsers in this test","body":"A test can use up to four browsers. Edit the test to use fewer."}},"failure":{"not-configured":"Payments are not set up yet, so this cannot be changed here.","pending":"A change is already being made. Wait for it to finish, then try again.","invalid-state":"This change does not fit the current plan. Reload the page and try again.","unknown-price":"This plan is not available right now.","mode-mismatch":"Payments are not set up correctly for this workspace.","unavailable":"That did not go through. Try again."},"volume":{"label":"Test runs a month","value":"{count} test runs a month","and-up":"{count}+"}},"environments":{"production":"Production","staging":"Staging","preview":"Pull request previews","local":"Local"},"scope":{"workspaces":"Workspaces","projects":"Projects","apps":"Apps","app-count":"{count} app | {count} apps","all-apps":"All {count} apps","no-projects":"No projects yet.","all-projects":"All projects","project-settings":"Project settings","usage-and-plan":"Usage and plan","new-workspace":"New workspace","new-project":"New project","add-environment":"Add environment","terminal-and-agents":"Terminal and coding agents","new-test":"New test"},"apps":{"add":"Add app","add-description":"An app is one thing you test. Give it an address to start.","app":"App","name":"App name","name-placeholder":"Admin app","name-required":"Give the app a name.","name-too-long":"Use 100 characters or fewer.","name-taken":"This project already has an app with that name.","first-address":"First address","add-error":"Could not add the app. Try again.","add-environment-description":"Another address for this project.","add-environment-error":"Could not add the address. Try again."},"walk":{"title":"Your first test","skip":"Skip for now","reminder":"View your first test","reminder-dismiss":"Hide this","dock":{"passed-title":"Congratulations, your first test passed","back-title":"Welcome back. Your first test passed while you were away.","passed-line":"It runs on its own from now on. Take a look, then continue.","needs-look-title":"Your first test needs a look","needs-look-line":"Re:agent saved what it found. You can fix it later from Tests.","unfinished-title":"Your first test did not finish","unfinished-line":"Re:agent could not complete it this time. You can try again later from the chat."}},"celebration":{"free-week":{"title":"A free week of unlimited runs","days":"day | days","line-ahead":"It starts with your first test run.","line-running":"Your free week is running. Run as much as you like.","footnote":"No card needed. We charge nothing when it ends."},"free-runs":{"title":"{count} test run included | {count} test runs included","line":"Use them on the test you just made, or on the next one.","footnote":"No card needed."}},"improvement-program":{"title":"Help us improve Rehearsal","description":"May we record how you use Rehearsal? The recordings help us find and fix problems.","join":"Join","decline":"No thanks","change-later":"You can change this later in your account settings.","thanks":"Thanks for joining.","save-failed":"We could not save your answer. Try again.","save-failed-ask-again":"We could not save your answer. We will ask again next time.","account":{"title":"Improvement program","row-title":"Record how you use Rehearsal","row-description":"The recordings help us find and fix problems."}},"cli-approval":{"connect-title":"Connect to the CLI","connect-workspace":"Approve the terminal to connect to your Rehearsal workspace.","connect-workspaces":"Approve the terminal to connect to your Rehearsal workspaces.","workspace-heading":"Workspace","workspaces-heading":"Workspaces","workspaces-you-can-access":"Workspaces you can access","no-workspaces":"No workspaces available right now.","browser-description":"Approve this terminal to connect it to Rehearsal.","browser-review":"Allow this terminal to access your Rehearsal projects?","access-tunnel":"Connect an app running on this computer.","access-testing-read":"Read your projects, tests and runs.","access-testing-run":"Start runs of tests you choose.","approve-terminal":"Approve","missing-link":"Run rehearsal login in your terminal, then open its link.","checking-request":"Checking this terminal.","link-expired":"This link expired. Run rehearsal login again.","lookup-failed":"Could not check this link. Try again.","already-used":"This terminal was already approved. Return to your terminal.","decision-failed":"Could not save your choice. Try again.","title":"Connect the CLI","checking":"Checking local connections.","availability-error":"Could not check local connections. Try again.","unavailable":"Local connections are unavailable right now.","deny":"Deny","approved":"Device approved. Return to your terminal.","denied":"Device denied."},"cli-setup":{"lockup":"Rehearsal CLI","copy":"Copy","copy-prompt":"Copy prompt","copied":"Copied","package-manager":"Package manager","works-with":"Works with Claude Code, Codex, OpenCode and Cursor.","tabs":{"terminal":"Terminal","agent":"Coding agent"},"steps":{"install":"Install","login":"Log in","connect":"Connect","install-cli":"Install the CLI","paste-prompt":"Paste this prompt"},"walk":{"title":"Test while you build","line":"The Rehearsal CLI connects the app on your machine, so you can test before you deploy.","action":"Open Rehearsal"},"already":{"title":"You're already set up","line":"Your computer is connected through the Rehearsal CLI, so you can test while you build.","aside":"Your coding agent can use it too. Claude Code, Codex, OpenCode and Cursor learn it from {command}."}},"intro":{"action":"Got it","tests":"Run related tests together as a suite.","runs":"Open a run to see what happened.","deployments":"Rehearsal never reads your source code."}}}