diff --git a/frontend/src/io-managers/panic.ts b/frontend/src/io-managers/panic.ts index 34324ab0..8bd72b08 100644 --- a/frontend/src/io-managers/panic.ts +++ b/frontend/src/io-managers/panic.ts @@ -23,45 +23,58 @@ export function createPanicManager(editor: Editor, dialogState: DialogState) { export function githubUrl(panicDetails: string): string { const url = new URL("https://github.com/GraphiteEditor/Graphite/issues/new"); - let body = stripIndents` - **Describe the Crash** - Explain clearly what you were doing when the crash occurred. + const buildUrl = (includeCrashReport: boolean) => { + let body = stripIndents` + **Describe the Crash** + Explain clearly what you were doing when the crash occurred. - **Steps To Reproduce** - Describe precisely how the crash occurred, step by step, starting with a new editor window. - 1. Open the Graphite editor at https://editor.graphite.rs - 2. - 3. - 4. - 5. + **Steps To Reproduce** + Describe precisely how the crash occurred, step by step, starting with a new editor window. + 1. Open the Graphite editor at https://editor.graphite.rs + 2. + 3. + 4. + 5. - **Additional Details** - Provide any further information or context that you think would be helpful in fixing the issue. Screenshots or video can be linked or attached to this issue. + **Additional Details** + Provide any further information or context that you think would be helpful in fixing the issue. Screenshots or video can be linked or attached to this issue. - **Browser and OS** - ${browserVersion()}, ${operatingSystem(true).replace("Unknown", "YOUR OPERATING SYSTEM")} + **Browser and OS** + ${browserVersion()}, ${operatingSystem(true).replace("Unknown", "YOUR OPERATING SYSTEM")} - **Stack Trace** - Copied from the crash dialog in the Graphite editor: - `; + **Stack Trace** + Copied from the crash dialog in the Graphite editor: + `; - body += "\n\n```\n"; - body += panicDetails.trimEnd(); - body += "\n```"; + const manualCopyStackTraceNotice = stripIndents` + Before submitting this bug, REPLACE THIS WITH THE LOG. Return to the editor and click "Copy Error Log" in the crash dialog and paste it in place of this text. + `; - const fields = { - title: "[Crash Report] ", - body, - labels: ["Crash"].join(","), - projects: [].join(","), - milestone: "", - assignee: "", - template: "", + body += "\n\n```\n"; + body += includeCrashReport ? panicDetails.trimEnd() : manualCopyStackTraceNotice; + body += "\n```"; + + const fields = { + title: "[Crash Report] ", + body, + labels: ["Crash"].join(","), + projects: [].join(","), + milestone: "", + assignee: "", + template: "", + }; + + Object.entries(fields).forEach(([field, value]) => { + if (value) url.searchParams.set(field, value); + }); + + return url.toString(); }; - Object.entries(fields).forEach(([field, value]) => { - if (value) url.searchParams.set(field, value); - }); - - return url.toString(); + let urlString = buildUrl(true); + if (urlString.length >= 8192) { + // Fall back to a shorter version if it exceeds GitHub limits of 8192 total characters + urlString = buildUrl(false); + } + return urlString; }