The send, the draft and the screenshots take the session's row lock, so an autosave or a paste during a send waits for it and then sees it, and two sends cannot open two issues. A save keeps the delivery's progress; a failed edit that shows the screenshots is finished by the retry; an answer that is not the tracker's API (a redirect, a proxy page) is refused, not a crash that loses the issue's record. Only an attempt that opened an issue counts toward the pace. Screenshots: deleting one after the send is refused, a user's storage is capped across sessions, new sessions and zip exports are paced, images are stored uncompressed in the zip. One liveness rule, one session view, one image type table. Logging: a session's elevation is tracked apart from the user's own, so the browser's own requests (no header) no longer lower the floor a session needs; Stop ends it at once. Composer: an image pasted anywhere is taken; what is still unsaved is saved on close, and "saved" is shown only when it is; the draft is held while it is sent; a failed screenshot read says so instead of reading as none; focus moves to what stays; the preview follows the text size. Pill: the step prompt and a running Stop survive the pill moving between hosts, the prompt keeps the dialog's Tab trap, the toast region lets clicks through, other tabs hear of a Start or Stop, the last seconds are sent before the cap, a capture with no frame is an error.
134 lines
5.1 KiB
JSON
134 lines
5.1 KiB
JSON
{
|
|
"start": {
|
|
"title": "Debug session",
|
|
"intro": "Start it, go through whatever breaks, then stop it. You get a draft bug report with the log attached, and you can review everything before it is sent.",
|
|
"level": "Detail",
|
|
"whatTitle": "What it records",
|
|
"what": {
|
|
"DEBUG": "Page changes, requests and errors, which button, filter and player control you use, and the filters' values.",
|
|
"TRACE": "Page changes, requests and errors, which button, filter and player control you use, the filters' values, and what you type into search."
|
|
},
|
|
"kept_one": "The server keeps it for {{count}} day.",
|
|
"kept_other": "The server keeps it for {{count}} days.",
|
|
"cap_one": "It runs for {{count}} minute at most, then stops on its own. When it stops, your previous log level is back.",
|
|
"cap_other": "It runs for {{count}} minutes at most, then stops on its own. When it stops, your previous log level is back.",
|
|
"confirm": "Start recording",
|
|
"failed": "Couldn't start recording"
|
|
},
|
|
"pill": {
|
|
"label": "Debug recording",
|
|
"recording": "Recording · {{time}}",
|
|
"step": "Step",
|
|
"screenshot": "Screenshot",
|
|
"stop": "Stop",
|
|
"stepPrompt": "Step {{n}} — what did you just do? (optional)",
|
|
"stepHint": "Enter: mark · Esc: cancel",
|
|
"mark": "Mark",
|
|
"stepMarked": "Step {{n}} marked",
|
|
"shotSaved": "Screenshot saved",
|
|
"shotFailed": "Couldn't save the screenshot",
|
|
"stopFailed": "Couldn't stop recording",
|
|
"stopped": "Recording stopped",
|
|
"expired_one": "The recording reached its {{count}}-minute limit and stopped.",
|
|
"expired_other": "The recording reached its {{count}}-minute limit and stopped."
|
|
},
|
|
"settings": {
|
|
"title": "Debug session",
|
|
"hint": "When something breaks: start recording, go through it again, then stop. A draft bug report is made from the log.",
|
|
"start": "Start recording",
|
|
"recording": "Recording · {{time}}",
|
|
"stop": "Stop"
|
|
},
|
|
"palette": {
|
|
"start": "Start a debug recording",
|
|
"step": "Mark a step in the recording",
|
|
"stop": "Stop the debug recording"
|
|
},
|
|
"composer": {
|
|
"title": "Bug report",
|
|
"meta": "{{start}} · {{minutes}} min · {{level}}",
|
|
"fieldTitle": "Title",
|
|
"titlePlaceholder": "What went wrong?",
|
|
"description": "Description",
|
|
"descriptionPlaceholder": "What did you expect, and what happened instead?",
|
|
"steps": "Steps — from your markers and page changes, editable",
|
|
"stepKind": {
|
|
"marker": "marker",
|
|
"nav": "page",
|
|
"manual": "added"
|
|
},
|
|
"stepLabel": "Step {{n}}",
|
|
"stepPlaceholder": "What did you do?",
|
|
"withShot": "image",
|
|
"addStep": "Add a step",
|
|
"removeStep": "Remove step {{n}}",
|
|
"environment": "Environment — automatic",
|
|
"attachments": "Attachments — what is sent, each one removable",
|
|
"clientLog": "Browser log",
|
|
"serverLog": "Server log",
|
|
"lines_one": "{{count}} line",
|
|
"lines_other": "{{count}} lines",
|
|
"linesKept": "{{kept}} of {{total}} lines",
|
|
"review": "Review",
|
|
"reviewTitle": "{{name}} — review",
|
|
"reviewHint": "An unticked line is not sent.",
|
|
"reviewDone": "Done",
|
|
"keepRow": "Keep line: {{event}} {{msg}}",
|
|
"screenshot": "Screenshot {{n}}",
|
|
"removeShot": "Remove screenshot {{n}}",
|
|
"drop": "Paste an image with Ctrl+V, drop it here, or",
|
|
"pick": "choose a file",
|
|
"close": "Close",
|
|
"export": "Download as zip",
|
|
"saving": "Saving…",
|
|
"saved": "Draft saved",
|
|
"saveFailed": "Couldn't save the draft",
|
|
"loadFailed": "Couldn't load the session",
|
|
"truncated": "The logs carry the first {{kept}} of {{total}} lines.",
|
|
"sent": "Sent as an issue.",
|
|
"openIssue": "Open the issue",
|
|
"env": {
|
|
"version": "Version",
|
|
"browser": "Browser",
|
|
"os": "System",
|
|
"window": "Window",
|
|
"language": "Language"
|
|
},
|
|
"send": "Create issue",
|
|
"sending": "Sending…",
|
|
"sentOk": "Issue created",
|
|
"sendFailed": "Couldn't send the report",
|
|
"target": "To: {{repo}} · private",
|
|
"partial": "The issue was created, but not every attachment went: {{files}}.",
|
|
"retry": "Send the missing ones",
|
|
"edit": "Edit",
|
|
"preview": "Preview",
|
|
"previewFailed": "Couldn't load the preview",
|
|
"previewTitle": "Preview of the report",
|
|
"previewLocal": "Without an issue tracker, this is the zip's issue.md.",
|
|
"shotsFailed": "Couldn't load the screenshots",
|
|
"removeShotFailed": "Couldn't remove the screenshot"
|
|
},
|
|
"issue": {
|
|
"steps": "Steps",
|
|
"environment": "Environment",
|
|
"screenshot": "screenshot",
|
|
"attachments": "Attachments",
|
|
"clientLog_one": "{{count}} line from the browser",
|
|
"clientLog_other": "{{count}} lines from the browser",
|
|
"serverLog_one": "{{count}} line from the server",
|
|
"serverLog_other": "{{count}} lines from the server",
|
|
"screenshots_one": "{{count}} screenshot",
|
|
"screenshots_other": "{{count}} screenshots"
|
|
},
|
|
"history": {
|
|
"title": "Past sessions",
|
|
"empty": "No session recorded yet.",
|
|
"open": "Open",
|
|
"sent": "Sent",
|
|
"draft": "Draft",
|
|
"unwritten": "Not written yet",
|
|
"failed": "Couldn't load the sessions"
|
|
}
|
|
}
|