[{"data":1,"prerenderedAt":851},["ShallowReactive",2],{"navigation_docs_en":3,"-en-developers-contributing":259,"-en-developers-contributing-surround":846},[4,38,110,190,232],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":-1},"Getting started","i-lucide-rocket","\u002Fen\u002Fgetting-started","en\u002F1.getting-started\u002Findex",[10,13,18,23,28,33],{"title":11,"path":7,"stem":8,"icon":12},"Overview","i-lucide-layout-grid",{"title":14,"path":15,"stem":16,"icon":17},"Installation","\u002Fen\u002Fgetting-started\u002Finstallation","en\u002F1.getting-started\u002F01.installation","i-lucide-download",{"title":19,"path":20,"stem":21,"icon":22},"Sign in","\u002Fen\u002Fgetting-started\u002Fsign-in","en\u002F1.getting-started\u002F02.sign-in","i-lucide-log-in",{"title":24,"path":25,"stem":26,"icon":27},"Your first instance","\u002Fen\u002Fgetting-started\u002Ffirst-instance","en\u002F1.getting-started\u002F03.first-instance","i-lucide-play",{"title":29,"path":30,"stem":31,"icon":32},"Android: install the APK","\u002Fen\u002Fgetting-started\u002Fandroid","en\u002F1.getting-started\u002F04.android","i-lucide-smartphone",{"title":34,"path":35,"stem":36,"icon":37},"iPhone\u002FiPad: install with AltStore\u002FSideStore","\u002Fen\u002Fgetting-started\u002Fiphone-ipad","en\u002F1.getting-started\u002F05.iphone-ipad","i-lucide-tablet-smartphone",{"title":39,"icon":40,"path":41,"stem":42,"children":43,"page":-1},"Launcher","i-lucide-app-window","\u002Fen\u002Flauncher","en\u002F2.launcher\u002Findex",[44,45,50,55,60,65,70,75,80,85,90,95,100,105],{"title":11,"path":41,"stem":42,"icon":12},{"title":46,"path":47,"stem":48,"icon":49},"Instances","\u002Fen\u002Flauncher\u002Finstances","en\u002F2.launcher\u002F01.instances","i-lucide-boxes",{"title":51,"path":52,"stem":53,"icon":54},"Mod loaders","\u002Fen\u002Flauncher\u002Fmod-loaders","en\u002F2.launcher\u002F02.mod-loaders","i-lucide-layers",{"title":56,"path":57,"stem":58,"icon":59},"Mods","\u002Fen\u002Flauncher\u002Fmods","en\u002F2.launcher\u002F03.mods","i-lucide-puzzle",{"title":61,"path":62,"stem":63,"icon":64},"Modpacks","\u002Fen\u002Flauncher\u002Fmodpacks","en\u002F2.launcher\u002F04.modpacks","i-lucide-package",{"title":66,"path":67,"stem":68,"icon":69},"Share modpacks","\u002Fen\u002Flauncher\u002Fshare-modpacks","en\u002F2.launcher\u002F05.share-modpacks","i-lucide-share-2",{"title":71,"path":72,"stem":73,"icon":74},"Import from other launchers","\u002Fen\u002Flauncher\u002Fimport","en\u002F2.launcher\u002F06.import","i-lucide-folder-input",{"title":76,"path":77,"stem":78,"icon":79},"Clips & screenshots","\u002Fen\u002Flauncher\u002Fclips","en\u002F2.launcher\u002F07.clips","i-lucide-clapperboard",{"title":81,"path":82,"stem":83,"icon":84},"Friends & chat","\u002Fen\u002Flauncher\u002Fsocial","en\u002F2.launcher\u002F08.social","i-lucide-messages-square",{"title":86,"path":87,"stem":88,"icon":89},"Achievements","\u002Fen\u002Flauncher\u002Fachievements","en\u002F2.launcher\u002F09.achievements","i-lucide-trophy",{"title":91,"path":92,"stem":93,"icon":94},"Skins & capes","\u002Fen\u002Flauncher\u002Fwardrobe","en\u002F2.launcher\u002F10.wardrobe","i-lucide-shirt",{"title":96,"path":97,"stem":98,"icon":99},"Settings","\u002Fen\u002Flauncher\u002Fsettings","en\u002F2.launcher\u002F11.settings","i-lucide-settings",{"title":101,"path":102,"stem":103,"icon":104},"Updates","\u002Fen\u002Flauncher\u002Fupdates","en\u002F2.launcher\u002F12.updates","i-lucide-refresh-cw",{"title":106,"path":107,"stem":108,"icon":109},"Servers","\u002Fen\u002Flauncher\u002Fservers","en\u002F2.launcher\u002F13.servers","i-lucide-server",{"title":111,"icon":112,"path":113,"stem":114,"children":115,"page":-1},"TRS Client","i-lucide-blocks","\u002Fen\u002Fclient","en\u002F3.client\u002Findex",[116,117,121,126,131,136,141,146,151,156,160,165,170,175,180,185],{"title":11,"path":113,"stem":114,"icon":12},{"title":118,"path":119,"stem":120,"icon":112},"What is the TRS Client?","\u002Fen\u002Fclient\u002Foverview","en\u002F3.client\u002F01.overview",{"title":122,"path":123,"stem":124,"icon":125},"TRS menu and HUD editor","\u002Fen\u002Fclient\u002Fmenu-and-hud-editor","en\u002F3.client\u002F02.menu-and-hud-editor","i-lucide-layout-dashboard",{"title":127,"path":128,"stem":129,"icon":130},"Performance and FPS","\u002Fen\u002Fclient\u002Fperformance","en\u002F3.client\u002F03.performance","i-lucide-gauge",{"title":132,"path":133,"stem":134,"icon":135},"PvP modules","\u002Fen\u002Fclient\u002Fpvp","en\u002F3.client\u002F04.pvp","i-lucide-swords",{"title":137,"path":138,"stem":139,"icon":140},"Zoom, freelook and toggle sprint","\u002Fen\u002Fclient\u002Fzoom-and-freelook","en\u002F3.client\u002F05.zoom-and-freelook","i-lucide-zoom-in",{"title":142,"path":143,"stem":144,"icon":145},"Minimap, waypoints and world map","\u002Fen\u002Fclient\u002Fminimap-and-world-map","en\u002F3.client\u002F06.minimap-and-world-map","i-lucide-map",{"title":147,"path":148,"stem":149,"icon":150},"Redstone tools","\u002Fen\u002Fclient\u002Fredstone-tools","en\u002F3.client\u002F07.redstone-tools","i-lucide-zap",{"title":152,"path":153,"stem":154,"icon":155},"Circuit library","\u002Fen\u002Fclient\u002Fcircuit-library","en\u002F3.client\u002F08.circuit-library","i-lucide-cpu",{"title":157,"path":158,"stem":159,"icon":94},"Emotes, capes, wardrobe and accounts","\u002Fen\u002Fclient\u002Femotes-and-capes","en\u002F3.client\u002F09.emotes-and-capes",{"title":161,"path":162,"stem":163,"icon":164},"Screenshots, clips and panoramas","\u002Fen\u002Fclient\u002Fscreenshots-and-clips","en\u002F3.client\u002F10.screenshots-and-clips","i-lucide-camera",{"title":166,"path":167,"stem":168,"icon":169},"World notes","\u002Fen\u002Fclient\u002Fnotes","en\u002F3.client\u002F11.notes","i-lucide-notebook-pen",{"title":171,"path":172,"stem":173,"icon":174},"Chat and comfort","\u002Fen\u002Fclient\u002Fchat-and-comfort","en\u002F3.client\u002F12.chat-and-comfort","i-lucide-message-square",{"title":176,"path":177,"stem":178,"icon":179},"Social in game","\u002Fen\u002Fclient\u002Fsocial-in-game","en\u002F3.client\u002F13.social-in-game","i-lucide-users",{"title":181,"path":182,"stem":183,"icon":184},"Default keys","\u002Fen\u002Fclient\u002Fkeybinds","en\u002F3.client\u002F14.keybinds","i-lucide-keyboard",{"title":186,"path":187,"stem":188,"icon":189},"Host a world for friends","\u002Fen\u002Fclient\u002Fworld-hosting","en\u002F3.client\u002F15.world-hosting","i-lucide-globe",{"title":191,"icon":192,"path":193,"stem":194,"children":195,"page":-1},"Help","i-lucide-life-buoy","\u002Fen\u002Fhelp","en\u002F4.help\u002Findex",[196,197,202,207,212,217,222,227],{"title":11,"path":193,"stem":194,"icon":12},{"title":198,"path":199,"stem":200,"icon":201},"Crash helper","\u002Fen\u002Fhelp\u002Fcrash-helper","en\u002F4.help\u002F01.crash-helper","i-lucide-heart-pulse",{"title":203,"path":204,"stem":205,"icon":206},"Common problems","\u002Fen\u002Fhelp\u002Fcommon-problems","en\u002F4.help\u002F02.common-problems","i-lucide-circle-help",{"title":208,"path":209,"stem":210,"icon":211},"Java & memory","\u002Fen\u002Fhelp\u002Fjava","en\u002F4.help\u002F03.java","i-lucide-coffee",{"title":213,"path":214,"stem":215,"icon":216},"Linux","\u002Fen\u002Fhelp\u002Flinux","en\u002F4.help\u002F04.linux","i-lucide-terminal",{"title":218,"path":219,"stem":220,"icon":221},"Logs","\u002Fen\u002Fhelp\u002Flogs","en\u002F4.help\u002F05.logs","i-lucide-scroll-text",{"title":223,"path":224,"stem":225,"icon":226},"Report a bug","\u002Fen\u002Fhelp\u002Freport-a-bug","en\u002F4.help\u002F06.report-a-bug","i-lucide-bug",{"title":228,"path":229,"stem":230,"icon":231},"Privacy","\u002Fen\u002Fhelp\u002Fprivacy","en\u002F4.help\u002F07.privacy","i-lucide-shield-check",{"title":233,"icon":234,"path":235,"stem":236,"children":237,"page":-1},"Developers","i-lucide-code-xml","\u002Fen\u002Fdevelopers","en\u002F5.developers\u002Findex",[238,239,244,249,254],{"title":11,"path":235,"stem":236,"icon":12},{"title":240,"path":241,"stem":242,"icon":243},"Build from source","\u002Fen\u002Fdevelopers\u002Fbuild-from-source","en\u002F5.developers\u002F01.build-from-source","i-lucide-hammer",{"title":245,"path":246,"stem":247,"icon":248},"Contributing","\u002Fen\u002Fdevelopers\u002Fcontributing","en\u002F5.developers\u002F02.contributing","i-lucide-git-pull-request",{"title":250,"path":251,"stem":252,"icon":253},"Translating","\u002Fen\u002Fdevelopers\u002Ftranslating","en\u002F5.developers\u002F03.translating","i-lucide-languages",{"title":255,"path":256,"stem":257,"icon":258},"Public API","\u002Fen\u002Fdevelopers\u002Fpublic-api","en\u002F5.developers\u002F04.public-api","i-lucide-braces",{"id":260,"title":245,"body":261,"description":840,"extension":719,"links":841,"meta":842,"navigation":843,"path":246,"seo":844,"stem":247,"__hash__":845},"docs_en\u002Fen\u002F5.developers\u002F02.contributing.md",{"type":262,"value":263,"toc":826},"minimark",[264,268,273,309,313,374,413,417,559,562,566,569,613,616,641,645,648,696,700,715,790,801,805,814,822],[265,266,267],"p",{},"Contributions are welcome – bug fixes, features, translations and docs. This page explains how the project is organized\nand what a pull request needs.",[269,270,272],"h2",{"id":271},"before-you-start","Before you start",[274,275,276,294,303],"ul",{},[277,278,279,280,287,288,293],"li",{},"Look at the ",[281,282,286],"a",{"href":283,"rel":284},"https:\u002F\u002Ftrs-launcher.theredstonee.de\u002Fissues",[285],"nofollow","issue tracker"," and the\n",[281,289,292],{"href":290,"rel":291},"https:\u002F\u002Ftrs-launcher.theredstonee.de\u002Froadmap",[285],"roadmap",". Maybe someone is already on it.",[277,295,296,297,302],{},"For bigger changes, open an issue or ask on ",[281,298,301],{"href":299,"rel":300},"https:\u002F\u002Fdc.theredstonee.de",[285],"Discord"," first, so the work fits the plan.",[277,304,305,306,308],{},"Set up your environment as described in ",[281,307,240],{"href":241},".",[269,310,312],{"id":311},"branches-and-pull-requests","Branches and pull requests",[314,315,316,329],"table",{},[317,318,319],"thead",{},[320,321,322,326],"tr",{},[323,324,325],"th",{},"Branch",[323,327,328],{},"Contains",[330,331,332,360],"tbody",{},[320,333,334,341],{},[335,336,337],"td",{},[338,339,340],"code",{},"main",[335,342,343,344,347,348,351,352,355,356,359],{},"The launcher (",[338,345,346],{},"app\u002F",", ",[338,349,350],{},"src-tauri\u002F",") and the TRS Client (",[338,353,354],{},"client-mod\u002F","). Releases are tagged ",[338,357,358],{},"v…"," from here.",[320,361,362,367],{},[335,363,364],{},[338,365,366],{},"website",[335,368,369,370,373],{},"The website and the TRS API (",[338,371,372],{},"api\u002F",").",[375,376,378,383,392,396,399,403,406,410],"steps",{"level":377},"3",[379,380,382],"h3",{"id":381},"create-a-branch","Create a branch",[265,384,385,386,388,389,391],{},"Fork the repository and create a branch from ",[338,387,340],{}," – or from ",[338,390,366],{}," if you change the website or the API.",[379,393,395],{"id":394},"make-your-change","Make your change",[265,397,398],{},"Keep a pull request to one topic. Write commit messages in English.",[379,400,402],{"id":401},"run-the-checks","Run the checks",[265,404,405],{},"Run the checks below for the part you changed. For the launcher, the CI runs them on every pull request as well. Fix\neverything before you ask for a review.",[379,407,409],{"id":408},"open-the-pull-request","Open the pull request",[265,411,412],{},"Target the branch you started from. Describe what changes for players and how you tested it.",[269,414,416],{"id":415},"checks","Checks",[418,419,420,503,523],"code-group",{},[421,422,427],"pre",{"className":423,"code":424,"filename":39,"language":425,"meta":426,"style":426},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm typecheck\npnpm test\npnpm generate\ncd src-tauri\ncargo clippy --workspace --all-targets -- -D warnings\ncargo test --workspace\n","bash","",[338,428,429,442,450,458,468,492],{"__ignoreMap":426},[430,431,434,438],"span",{"class":432,"line":433},"line",1,[430,435,437],{"class":436},"sBMFI","pnpm",[430,439,441],{"class":440},"sfazB"," typecheck\n",[430,443,445,447],{"class":432,"line":444},2,[430,446,437],{"class":436},[430,448,449],{"class":440}," test\n",[430,451,453,455],{"class":432,"line":452},3,[430,454,437],{"class":436},[430,456,457],{"class":440}," generate\n",[430,459,461,465],{"class":432,"line":460},4,[430,462,464],{"class":463},"s2Zo4","cd",[430,466,467],{"class":440}," src-tauri\n",[430,469,471,474,477,480,483,486,489],{"class":432,"line":470},5,[430,472,473],{"class":436},"cargo",[430,475,476],{"class":440}," clippy",[430,478,479],{"class":440}," --workspace",[430,481,482],{"class":440}," --all-targets",[430,484,485],{"class":440}," --",[430,487,488],{"class":440}," -D",[430,490,491],{"class":440}," warnings\n",[430,493,495,497,500],{"class":432,"line":494},6,[430,496,473],{"class":436},[430,498,499],{"class":440}," test",[430,501,502],{"class":440}," --workspace\n",[421,504,506],{"className":423,"code":505,"filename":111,"language":425,"meta":426,"style":426},"cd client-mod\n.\u002Fgradlew build\n",[338,507,508,515],{"__ignoreMap":426},[430,509,510,512],{"class":432,"line":433},[430,511,464],{"class":463},[430,513,514],{"class":440}," client-mod\n",[430,516,517,520],{"class":432,"line":444},[430,518,519],{"class":436},".\u002Fgradlew",[430,521,522],{"class":440}," build\n",[421,524,527],{"className":423,"code":525,"filename":526,"language":425,"meta":426,"style":426},"cd api\npnpm typecheck && pnpm lint && pnpm test\n","Website\u002FAPI",[338,528,529,536],{"__ignoreMap":426},[430,530,531,533],{"class":432,"line":433},[430,532,464],{"class":463},[430,534,535],{"class":440}," api\n",[430,537,538,540,543,547,550,553,555,557],{"class":432,"line":444},[430,539,437],{"class":436},[430,541,542],{"class":440}," typecheck",[430,544,546],{"class":545},"sMK4o"," &&",[430,548,549],{"class":436}," pnpm",[430,551,552],{"class":440}," lint",[430,554,546],{"class":545},[430,556,549],{"class":436},[430,558,449],{"class":440},[265,560,561],{},"Clippy warnings count as errors. The launcher CI runs on Windows and Linux.",[269,563,565],{"id":564},"how-the-code-is-built","How the code is built",[265,567,568],{},"The launcher follows a few rules. Please keep to them.",[274,570,571,585,591,604],{},[277,572,573,580,581,584],{},[574,575,576,577],"strong",{},"Logic lives in ",[338,578,579],{},"trs-core"," (",[338,582,583],{},"src-tauri\u002Fcrates\u002Fcore","). The Tauri layer stays thin, and the core checks every input\nitself.",[277,586,587,590],{},[574,588,589],{},"The webview gets no file system, network or shell permissions."," Everything goes through dedicated commands, under\na strict Content Security Policy.",[277,592,593,596,597,600,601,308],{},[574,594,595],{},"Only a stable error code and a readable message reach the interface."," Paths, URLs and error chains go to the log.\nErrors in the core are created with a translation code, for example\n",[338,598,599],{},"msg!(\"settings.memoryRange\", \"…\", min = 512, max = 4096)","; the interface shows the text from ",[338,602,603],{},"errors.\u003Ccode>",[277,605,606,609,610,612],{},[574,607,608],{},"No hard-coded text in the interface."," Every text is a key in the language files (see\n",[281,611,250],{"href":251},"). Keys are typed, so typos fail the type check.",[265,614,615],{},"For the TRS Client:",[274,617,618,629,635],{},[277,619,620,621,624,625,628],{},"Shared logic goes into ",[338,622,623],{},"client-mod\u002Fcommon"," and stays ",[574,626,627],{},"Java 8",", because it is compiled into every version.",[277,630,631,632,373],{},"Version-specific code is kept in a few places and written with Stonecutter comments (see ",[338,633,634],{},"client-mod\u002FREADME.md",[277,636,637,640],{},[574,638,639],{},"Fair play",": no reach or hitbox changes, no auto-clicking, and the minimap only shows loaded chunks, without cave\nview.",[269,642,644],{"id":643},"tests","Tests",[265,646,647],{},"Add tests for new logic:",[274,649,650,659,668,685],{},[277,651,652,655,656,308],{},[574,653,654],{},"Frontend",": Vitest files in ",[338,657,658],{},"tests\u002F",[277,660,661,664,665,308],{},[574,662,663],{},"Rust",": unit tests next to the code; run with ",[338,666,667],{},"cargo test --workspace",[277,669,670,672,673,676,677,680,681,684],{},[574,671,198],{},": a new rule needs a function in ",[338,674,675],{},"crash\u002Frules.rs",", a sample log in ",[338,678,679],{},"crash\u002Ffixtures\u002F",", a test and the\ntexts ",[338,682,683],{},"crashHelper.findings.\u003Ckind>.\u003Cvariant>"," in the language files.",[277,686,687,689,690,692,693,308],{},[574,688,111],{},": unit tests in ",[338,691,623],{},", for example ",[338,694,695],{},"I18nTest",[269,697,699],{"id":698},"changelog","Changelog",[265,701,702,703,706,707,710,711,714],{},"Every change that players notice gets an entry in ",[338,704,705],{},"CHANGELOG.md",", in ",[574,708,709],{},"English and German",". Collect it under\n",[338,712,713],{},"## Unreleased",":",[421,716,720],{"className":717,"code":718,"language":719,"meta":426,"style":426},"language-md shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","## Unreleased\n\n### English\n- **Log search.** The log view now finds text in folded stack traces too.\n\n### Deutsch\n- **Log-Suche.** Die Log-Ansicht findet Text jetzt auch in eingeklappten Stacktraces.\n","md",[338,721,722,730,736,744,764,768,775],{"__ignoreMap":426},[430,723,724,727],{"class":432,"line":433},[430,725,726],{"class":545},"## ",[430,728,729],{"class":436},"Unreleased\n",[430,731,732],{"class":432,"line":444},[430,733,735],{"emptyLinePlaceholder":734},true,"\n",[430,737,738,741],{"class":432,"line":452},[430,739,740],{"class":545},"### ",[430,742,743],{"class":436},"English\n",[430,745,746,749,753,757,760],{"class":432,"line":460},[430,747,748],{"class":545},"-",[430,750,752],{"class":751},"sHepR"," **",[430,754,756],{"class":755},"so75L","Log search.",[430,758,759],{"class":751},"**",[430,761,763],{"class":762},"sTEyZ"," The log view now finds text in folded stack traces too.\n",[430,765,766],{"class":432,"line":470},[430,767,735],{"emptyLinePlaceholder":734},[430,769,770,772],{"class":432,"line":494},[430,771,740],{"class":545},[430,773,774],{"class":436},"Deutsch\n",[430,776,778,780,782,785,787],{"class":432,"line":777},7,[430,779,748],{"class":545},[430,781,752],{"class":751},[430,783,784],{"class":755},"Log-Suche.",[430,786,759],{"class":751},[430,788,789],{"class":762}," Die Log-Ansicht findet Text jetzt auch in eingeklappten Stacktraces.\n",[274,791,792,795,798],{},[277,793,794],{},"Both languages have the same points.",[277,796,797],{},"Write for players, not for developers: what changes for them, in plain words, without file or function names.",[277,799,800],{},"The release build copies the section into the GitHub release and the \"What's new\" dialog the launcher shows after an update. It fails if a language is\nmissing.",[269,802,804],{"id":803},"license","License",[265,806,807,808,813],{},"The TRS Launcher and the TRS Client are licensed under the\n",[281,809,812],{"href":810,"rel":811},"https:\u002F\u002Fgithub.com\u002Ftheredstonee\u002FTRS-Launcher\u002Fblob\u002Fmain\u002FLICENSE",[285],"GNU General Public License v3.0"," (GPL-3.0-only). By\ncontributing, you agree that your contribution is released under the same license.",[815,816,817,818,821],"note",{},"Don't commit secrets, API keys or ",[338,819,820],{},".env"," files. The CurseForge key and the signing keys are only read from the\nenvironment or from files outside the repository.",[823,824,825],"style",{},"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 .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);}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sHepR, html code.shiki .sHepR{--shiki-light:#39ADB5;--shiki-light-font-weight:bold;--shiki-default:#89DDFF;--shiki-default-font-weight:bold;--shiki-dark:#89DDFF;--shiki-dark-font-weight:bold}html pre.shiki code .so75L, html code.shiki .so75L{--shiki-light:#E53935;--shiki-light-font-weight:bold;--shiki-default:#F07178;--shiki-default-font-weight:bold;--shiki-dark:#F07178;--shiki-dark-font-weight:bold}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}",{"title":426,"searchDepth":444,"depth":444,"links":827},[828,829,835,836,837,838,839],{"id":271,"depth":444,"text":272},{"id":311,"depth":444,"text":312,"children":830},[831,832,833,834],{"id":381,"depth":452,"text":382},{"id":394,"depth":452,"text":395},{"id":401,"depth":452,"text":402},{"id":408,"depth":452,"text":409},{"id":415,"depth":444,"text":416},{"id":564,"depth":444,"text":565},{"id":643,"depth":444,"text":644},{"id":698,"depth":444,"text":699},{"id":803,"depth":444,"text":804},"Branches and pull requests, code rules, tests, the English and German changelog, and the GPL-3.0 license.",null,{},{"icon":248},{"title":245,"description":840},"hTmk_MvY-0a1cayJoAo1Gzaiv47ow5c5Efw4aheDmJg",[847,849],{"title":240,"path":241,"stem":242,"description":848,"icon":243,"children":-1},"Set up Node, pnpm and Rust, run the launcher in dev mode, run the checks, build installers and build the TRS Client mod.",{"title":250,"path":251,"stem":252,"description":850,"icon":253,"children":-1},"How translations of the launcher, the TRS Client, the website and these docs are organized, and how to improve a language or add one.",1791894782407]