[{"data":1,"prerenderedAt":585},["ShallowReactive",2],{"docs-navigation":3,"\u002Fdocs\u002Fdevelopment\u002Ferror-monitoring":231,"\u002Fdocs\u002Fdevelopment\u002Ferror-monitoring-surround":580},[4],{"title":5,"path":6,"stem":7,"children":8},"Docs","\u002Fdocs","docs",[9,12,16,20,69,90,123,144,165,190],{"title":10,"path":6,"stem":11},"Gerbtrace Documentation","docs\u002Findex",{"title":13,"path":14,"stem":15},"Getting Started","\u002Fdocs\u002Fgetting-started","docs\u002F1.getting-started",{"title":17,"path":18,"stem":19},"Licensing","\u002Fdocs\u002Flicensing","docs\u002F2.licensing",{"title":21,"path":22,"stem":23,"children":24,"page":68},"Viewer","\u002Fdocs\u002Fviewer","docs\u002F3.viewer",[25,29,33,37,41,45,49,53,56,60,64],{"title":26,"path":27,"stem":28},"Files","\u002Fdocs\u002Fviewer\u002Ffiles","docs\u002F3.viewer\u002F01.files",{"title":30,"path":31,"stem":32},"PCB","\u002Fdocs\u002Fviewer\u002Fpcb","docs\u002F3.viewer\u002F02.pcb",{"title":34,"path":35,"stem":36},"Panel","\u002Fdocs\u002Fviewer\u002Fpanel","docs\u002F3.viewer\u002F03.panel",{"title":38,"path":39,"stem":40},"Paste","\u002Fdocs\u002Fviewer\u002Fpaste","docs\u002F3.viewer\u002F04.paste",{"title":42,"path":43,"stem":44},"SMD","\u002Fdocs\u002Fviewer\u002Fsmd","docs\u002F3.viewer\u002F05.smd",{"title":46,"path":47,"stem":48},"THT","\u002Fdocs\u002Fviewer\u002Ftht","docs\u002F3.viewer\u002F06.tht",{"title":50,"path":51,"stem":52},"BOM","\u002Fdocs\u002Fviewer\u002Fbom","docs\u002F3.viewer\u002F07.bom",{"title":5,"path":54,"stem":55},"\u002Fdocs\u002Fviewer\u002Fdocs","docs\u002F3.viewer\u002F08.docs",{"title":57,"path":58,"stem":59},"Conversation","\u002Fdocs\u002Fviewer\u002Fconversation","docs\u002F3.viewer\u002F09.conversation",{"title":61,"path":62,"stem":63},"Summary","\u002Fdocs\u002Fviewer\u002Fsummary","docs\u002F3.viewer\u002F10.summary",{"title":65,"path":66,"stem":67},"Pricing","\u002Fdocs\u002Fviewer\u002Fpricing","docs\u002F3.viewer\u002F11.pricing",false,{"title":70,"path":71,"stem":72,"children":73,"page":68},"Tools","\u002Fdocs\u002Ftools","docs\u002F4.tools",[74,78,82,86],{"title":75,"path":76,"stem":77},"Exports","\u002Fdocs\u002Ftools\u002Fexports","docs\u002F4.tools\u002F1.exports",{"title":79,"path":80,"stem":81},"Compare","\u002Fdocs\u002Ftools\u002Fcompare","docs\u002F4.tools\u002F2.compare",{"title":83,"path":84,"stem":85},"Package Manager","\u002Fdocs\u002Ftools\u002Fpackage-manager","docs\u002F4.tools\u002F3.package-manager",{"title":87,"path":88,"stem":89},"Draw Tool","\u002Fdocs\u002Ftools\u002Fdraw-tool","docs\u002F4.tools\u002F4.draw-tool",{"title":91,"path":92,"stem":93,"children":94,"page":68},"Collaboration","\u002Fdocs\u002Fcollaboration","docs\u002F5.collaboration",[95,99,103,107,111,115,119],{"title":96,"path":97,"stem":98},"Team Settings","\u002Fdocs\u002Fcollaboration\u002Fteam-settings","docs\u002F5.collaboration\u002F1.team-settings",{"title":100,"path":101,"stem":102},"Team Members","\u002Fdocs\u002Fcollaboration\u002Fteam-members","docs\u002F5.collaboration\u002F2.team-members",{"title":104,"path":105,"stem":106},"User Profile","\u002Fdocs\u002Fcollaboration\u002Fuser-profile","docs\u002F5.collaboration\u002F3.user-profile",{"title":108,"path":109,"stem":110},"Spaces","\u002Fdocs\u002Fcollaboration\u002Fspaces","docs\u002F5.collaboration\u002F4.spaces",{"title":112,"path":113,"stem":114},"Notifications","\u002Fdocs\u002Fcollaboration\u002Fnotifications","docs\u002F5.collaboration\u002F6.notifications",{"title":116,"path":117,"stem":118},"Plans & Billing","\u002Fdocs\u002Fcollaboration\u002Fplans-and-billing","docs\u002F5.collaboration\u002F7.plans-and-billing",{"title":120,"path":121,"stem":122},"Connected Apps & MCP","\u002Fdocs\u002Fcollaboration\u002Fconnected-apps","docs\u002F5.collaboration\u002F8.connected-apps",{"title":124,"path":125,"stem":126,"children":127,"page":68},"App","\u002Fdocs\u002Fapp","docs\u002F6.app",[128,132,136,140],{"title":129,"path":130,"stem":131},"Desktop App","\u002Fdocs\u002Fapp\u002Fdesktop","docs\u002F6.app\u002F1.desktop",{"title":133,"path":134,"stem":135},"Light & Dark Mode","\u002Fdocs\u002Fapp\u002Flight-dark-mode","docs\u002F6.app\u002F2.light-dark-mode",{"title":137,"path":138,"stem":139},"Performance Monitor","\u002Fdocs\u002Fapp\u002Fperformance-monitor","docs\u002F6.app\u002F3.performance-monitor",{"title":141,"path":142,"stem":143},"Report a Bug","\u002Fdocs\u002Fapp\u002Freport-a-bug","docs\u002F6.app\u002F4.report-a-bug",{"title":145,"path":146,"stem":147,"children":148,"page":68},"Guides","\u002Fdocs\u002Fguides","docs\u002F7.guides",[149,153,157,161],{"title":150,"path":151,"stem":152},"Importing Files","\u002Fdocs\u002Fguides\u002Fimporting-files","docs\u002F7.guides\u002F1.importing-files",{"title":154,"path":155,"stem":156},"Supported Formats","\u002Fdocs\u002Fguides\u002Fsupported-formats","docs\u002F7.guides\u002F2.supported-formats",{"title":158,"path":159,"stem":160},"Package Library","\u002Fdocs\u002Fguides\u002Fpackage-library","docs\u002F7.guides\u002F3.package-library",{"title":162,"path":163,"stem":164},"Panel Checks","\u002Fdocs\u002Fguides\u002Fpanel-checks","docs\u002F7.guides\u002F4.panel-checks",{"title":166,"path":167,"stem":168,"children":169,"page":68},"Reference","\u002Fdocs\u002Freference","docs\u002F8.reference",[170,174,178,182,186],{"title":171,"path":172,"stem":173},"BOM File Format","\u002Fdocs\u002Freference\u002Fbom-format","docs\u002F8.reference\u002F1.bom-format",{"title":175,"path":176,"stem":177},"Package Definitions","\u002Fdocs\u002Freference\u002Fpackage-definitions","docs\u002F8.reference\u002F2.package-definitions",{"title":179,"path":180,"stem":181},"Package Naming","\u002Fdocs\u002Freference\u002Fpackage-naming","docs\u002F8.reference\u002F3.package-naming",{"title":183,"path":184,"stem":185},"TPSys Format","\u002Fdocs\u002Freference\u002Ftpsys-format","docs\u002F8.reference\u002F4.tpsys-format",{"title":187,"path":188,"stem":189},"Jet Printing","\u002Fdocs\u002Freference\u002Fjet-printing","docs\u002F8.reference\u002F5.jet-printing",{"title":191,"path":192,"stem":193,"children":194,"page":68},"Development","\u002Fdocs\u002Fdevelopment","docs\u002F9.development",[195,199,203,207,211,215,219,223,227],{"title":196,"path":197,"stem":198},"Development Setup","\u002Fdocs\u002Fdevelopment\u002Fsetup","docs\u002F9.development\u002F1.setup",{"title":200,"path":201,"stem":202},"Architecture","\u002Fdocs\u002Fdevelopment\u002Farchitecture","docs\u002F9.development\u002F2.architecture",{"title":204,"path":205,"stem":206},"CAD Libraries","\u002Fdocs\u002Fdevelopment\u002Fcad-libraries","docs\u002F9.development\u002F3.cad-libraries",{"title":208,"path":209,"stem":210},"Release Process","\u002Fdocs\u002Fdevelopment\u002Frelease-process","docs\u002F9.development\u002F4.release-process",{"title":212,"path":213,"stem":214},"Error Monitoring","\u002Fdocs\u002Fdevelopment\u002Ferror-monitoring","docs\u002F9.development\u002F5.error-monitoring",{"title":216,"path":217,"stem":218},"Contributing","\u002Fdocs\u002Fdevelopment\u002Fcontributing","docs\u002F9.development\u002F6.contributing",{"title":220,"path":221,"stem":222},"Commit Conventions","\u002Fdocs\u002Fdevelopment\u002Fcommit-conventions","docs\u002F9.development\u002F7.commit-conventions",{"title":224,"path":225,"stem":226},"Sidebar Design","\u002Fdocs\u002Fdevelopment\u002Fsidebar-design","docs\u002F9.development\u002F8.sidebar-design",{"title":228,"path":229,"stem":230},"Operational Runbooks","\u002Fdocs\u002Fdevelopment\u002Frunbooks","docs\u002F9.development\u002F9.runbooks",{"id":232,"title":212,"body":233,"description":574,"extension":575,"links":576,"meta":577,"navigation":445,"path":213,"seo":578,"stem":214,"__hash__":579},"docs\u002Fdocs\u002F9.development\u002F5.error-monitoring.md",{"type":234,"value":235,"toc":564},"minimark",[236,240,252,263,268,276,301,312,315,319,330,344,354,358,364,371,375,380,398,402,411,513,519,523,526,560],[237,238,212],"h1",{"id":239},"error-monitoring",[241,242,243,244,251],"p",{},"Gerbtrace uses ",[245,246,250],"a",{"href":247,"rel":248},"https:\u002F\u002Fsentry.io",[249],"nofollow","Sentry"," for error reporting and user feedback. The integration covers both the web app and the desktop app.",[241,253,254,255,259,260],{},"Organization: ",[256,257,258],"strong",{},"newmatik"," | Project: ",[256,261,262],{},"gerbtrace",[264,265,267],"h2",{"id":266},"web-app","Web app",[241,269,270,271,275],{},"The web app uses ",[272,273,274],"code",{},"@sentry\u002Fnuxt",". Configuration is split across:",[277,278,279,286,292],"ul",{},[280,281,282,285],"li",{},[272,283,284],{},"sentry.client.config.ts"," – client-side Sentry init",[280,287,288,291],{},[272,289,290],{},"sentry.server.config.ts"," – server-side Sentry init",[280,293,294,297,298],{},[272,295,296],{},"nuxt.config.ts"," – module registration and ",[272,299,300],{},"runtimeConfig.public.sentry",[241,302,303,304,307,308,311],{},"Set ",[272,305,306],{},"SENTRY_DSN"," in the environment when building. Optionally set ",[272,309,310],{},"SENTRY_AUTH_TOKEN"," for source map uploads.",[241,313,314],{},"The web deploy pipeline (currently Cloudflare Workers Builds unless replaced by\na checked-in deploy workflow) uses both secrets.",[264,316,318],{"id":317},"desktop-app","Desktop app",[241,320,321,322,325,326,329],{},"The desktop app uses the ",[272,323,324],{},"sentry"," Rust crate with the ",[256,327,328],{},"panic"," feature so native Rust panics are captured and sent to Sentry.",[241,331,332,333,335,336,339,340,343],{},"The DSN is set at build time via the ",[272,334,306],{}," environment variable. The binary reads it with ",[272,337,338],{},"option_env!(\"SENTRY_DSN\")"," and falls back to ",[272,341,342],{},"std::env::var(\"SENTRY_DSN\")"," at runtime.",[241,345,346,347,350,351,353],{},"The desktop build workflow (",[272,348,349],{},".github\u002Fworkflows\u002Fbuild-desktop.yml",") passes ",[272,352,306],{}," from GitHub secrets to the Tauri build.",[264,355,357],{"id":356},"user-bug-reports","User bug reports",[241,359,360,361,363],{},"Users open ",[256,362,141],{}," from the help menu in the app header (question-mark icon), including visitors who are not signed in. The same menu has Documentation and, on the website, Contact Support, which opens the Help Scout beacon. The desktop app hides Contact Support and keeps Report a Bug.",[241,365,366,367,370],{},"The form takes an optional email for anonymous visitors and a description. Submissions are sent with Sentry ",[272,368,369],{},"captureFeedback",".",[264,372,374],{"id":373},"setup","Setup",[376,377,379],"h3",{"id":378},"getting-dsn-and-auth-token","Getting DSN and auth token",[277,381,382,388],{},[280,383,384,387],{},[256,385,386],{},"DSN",": Sentry project settings > Client Keys (DSN)",[280,389,390,393,394,397],{},[256,391,392],{},"Auth token"," (optional): Sentry settings > Auth Tokens. Create a token with ",[272,395,396],{},"project:releases"," scope.",[376,399,401],{"id":400},"setting-github-secrets","Setting GitHub secrets",[241,403,404,405,410],{},"Using the ",[245,406,409],{"href":407,"rel":408},"https:\u002F\u002Fcli.github.com\u002F",[249],"GitHub CLI",":",[412,413,418],"pre",{"className":414,"code":415,"language":416,"meta":417,"style":417},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Interactive setup\nnode scripts\u002Fset-sentry-secrets.mjs\n\n# Or manually\necho -n \"YOUR_SENTRY_DSN\" | gh secret set SENTRY_DSN\necho -n \"YOUR_SENTRY_AUTH_TOKEN\" | gh secret set SENTRY_AUTH_TOKEN\n","bash","",[272,419,420,429,440,447,453,488],{"__ignoreMap":417},[421,422,425],"span",{"class":423,"line":424},"line",1,[421,426,428],{"class":427},"sHwdD","# Interactive setup\n",[421,430,432,436],{"class":423,"line":431},2,[421,433,435],{"class":434},"sBMFI","node",[421,437,439],{"class":438},"sfazB"," scripts\u002Fset-sentry-secrets.mjs\n",[421,441,443],{"class":423,"line":442},3,[421,444,446],{"emptyLinePlaceholder":445},true,"\n",[421,448,450],{"class":423,"line":449},4,[421,451,452],{"class":427},"# Or manually\n",[421,454,456,460,463,467,470,473,476,479,482,485],{"class":423,"line":455},5,[421,457,459],{"class":458},"s2Zo4","echo",[421,461,462],{"class":438}," -n",[421,464,466],{"class":465},"sMK4o"," \"",[421,468,469],{"class":438},"YOUR_SENTRY_DSN",[421,471,472],{"class":465},"\"",[421,474,475],{"class":465}," |",[421,477,478],{"class":434}," gh",[421,480,481],{"class":438}," secret",[421,483,484],{"class":438}," set",[421,486,487],{"class":438}," SENTRY_DSN\n",[421,489,491,493,495,497,500,502,504,506,508,510],{"class":423,"line":490},6,[421,492,459],{"class":458},[421,494,462],{"class":438},[421,496,466],{"class":465},[421,498,499],{"class":438},"YOUR_SENTRY_AUTH_TOKEN",[421,501,472],{"class":465},[421,503,475],{"class":465},[421,505,478],{"class":434},[421,507,481],{"class":438},[421,509,484],{"class":438},[421,511,512],{"class":438}," SENTRY_AUTH_TOKEN\n",[241,514,515,516,370],{},"Or set them in the GitHub UI: ",[256,517,518],{},"Repo > Settings > Secrets and variables > Actions",[376,520,522],{"id":521},"re-running-the-sentry-wizard","Re-running the Sentry wizard",[241,524,525],{},"The configuration is already in the repo, but to re-run or update:",[412,527,529],{"className":414,"code":528,"language":416,"meta":417,"style":417},"npx @sentry\u002Fwizard@latest -i nuxt --saas --org newmatik --project gerbtrace\n",[272,530,531],{"__ignoreMap":417},[421,532,533,536,539,542,545,548,551,554,557],{"class":423,"line":424},[421,534,535],{"class":434},"npx",[421,537,538],{"class":438}," @sentry\u002Fwizard@latest",[421,540,541],{"class":438}," -i",[421,543,544],{"class":438}," nuxt",[421,546,547],{"class":438}," --saas",[421,549,550],{"class":438}," --org",[421,552,553],{"class":438}," newmatik",[421,555,556],{"class":438}," --project",[421,558,559],{"class":438}," gerbtrace\n",[561,562,563],"style",{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":417,"searchDepth":442,"depth":431,"links":565},[566,567,568,569],{"id":266,"depth":431,"text":267},{"id":317,"depth":431,"text":318},{"id":356,"depth":431,"text":357},{"id":373,"depth":431,"text":374,"children":570},[571,572,573],{"id":378,"depth":442,"text":379},{"id":400,"depth":442,"text":401},{"id":521,"depth":442,"text":522},"Sentry integration for error reporting in web and desktop builds.","md",null,{},{"title":212,"description":574},"IxOSvn3I_yOX6fTG1PmjjZhogk7YfmFwDZ1Tz048uqk",[581,583],{"title":208,"path":209,"stem":210,"description":582,"children":-1},"Deployment architecture, environment variables, CI\u002FCD workflows, release checklist, and operational safety.",{"title":216,"path":217,"stem":218,"description":584,"children":-1},"Coding conventions, design system guidelines, and how to contribute to Gerbtrace.",1790998747207]