[{"data":1,"prerenderedAt":571},["ShallowReactive",2],{"/docs/jobs/mechanicjob/changelog":3,"/docs/jobs/mechanicjob/changelog-surround":559},{"id":4,"title":5,"body":6,"description":548,"extension":549,"head":550,"meta":551,"navigation":552,"path":554,"schemaOrg":550,"seo":555,"sitemap":556,"stem":557,"__hash__":558},"docs/1.docs/0.jobs/2.mechanicjob/6.changelog.md","Changelog",{"type":7,"value":8,"toc":546},"minimark",[9,542],[10,11,12,470],"u-changelog-versions",{},[13,14,18],"u-changelog-version",{"date":15,"title":16,"badge":17},"2026-04-20","Version 0.2.0","Latest",[19,20,22,40,45,70,75,95,100,131],"template",{"v-slot:body":21},"",[23,24,27],"callout",{"color":25,"icon":26},"warning","i-lucide-triangle-alert",[28,29,30,31,35,36,39],"p",{},"Before updating, make sure ",[32,33,34],"strong",{},"sky_base"," and ",[32,37,38],{},"sky_jobs_base"," is up to date.",[28,41,42],{},[32,43,44],{},"Highlights",[46,47,48,52,60],"ul",{},[49,50,51],"li",{},"Added the Vehicles App to the mechanic tablet with searchable, paginated vehicle records, linked tuning orders, service history, tags, notes, and gallery image assignment.",[49,53,54,55,59],{},"Added automatic database migration support through ",[56,57,58],"code",{},"Config.AutoExecuteQuery",".",[49,61,62,63,66,67,59],{},"Added ",[56,64,65],{},"/migrate"," command for importing tuning data from previous mechanic scripts such as ",[56,68,69],{},"jg-mechanic",[28,71,72],{},[32,73,74],{},"Notable Changes",[46,76,77,80,83,86,89,92],{},[49,78,79],{},"Vehicle history is now logged for order installs, nitro installs/refills, and wear repairs, including used items, mechanic details, duty state, and action metadata.",[49,81,82],{},"Tuning orders can now link back into the Vehicles App, and vehicle records only list vehicles that have mechanic orders.",[49,84,85],{},"Tablet apps now reopen and close more reliably, including direct order selection from linked vehicle records.",[49,87,88],{},"Self-service tuning now supports multiple placement points and requires the player to be the driver.",[49,90,91],{},"Added optional off-duty job configuration per mechanic job.",[49,93,94],{},"Xenon color changes now calculate order pricing correctly.",[28,96,97],{},[32,98,99],{},"Other Changes",[46,101,102,111,116,121,128],{},[49,103,62,104,35,107,110],{},[56,105,106],{},"sky_mechanic_vehicle_profiles",[56,108,109],{},"sky_mechanic_vehicle_history"," database tables.",[49,112,62,113,115],{},[56,114,65],{}," command permission.",[49,117,62,118,59],{},[56,119,120],{},"Config.Interactions.self_service_tuning.unique",[49,122,123,124,127],{},"Removed the example ",[56,125,126],{},"cardealer"," job from the default config.",[49,129,130],{},"Improved wear database readiness handling by moving schema setup into the shared mechanic migration flow.",[132,133,134],"accordion",{},[135,136,138,180,212,226,280,289,350,355,448],"accordion-item",{"label":137},"Update Instructions",[139,140,141,148,151,158,163,170,173],"ol",{},[49,142,143,144,147],{},"Download ",[32,145,146],{},"sky_mechanicjob"," from the CFX Portal.",[49,149,150],{},"Create a backup.",[49,152,153,154,157],{},"Replace the ",[56,155,156],{},"/source"," folder.",[49,159,153,160,157],{},[56,161,162],{},"/config/locales",[49,164,165,166,169],{},"Replace ",[56,167,168],{},"fxmanifest.lua"," so the new client/server files are loaded.",[49,171,172],{},"If you use custom locale files, copy the new translation keys from the updated locale files.",[49,174,175,176,179],{},"Add in ",[56,177,178],{},"config/config.lua",":",[181,182,186],"pre",{"className":183,"code":184,"language":185,"meta":21,"style":21},"language-lua shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","Config.AutoExecuteQuery = true -- Automatically creates/updates database tables on start. Set to false to disable.\n","lua",[56,187,188],{"__ignoreMap":21},[189,190,193,197,201,205,208],"span",{"class":191,"line":192},"line",1,[189,194,196],{"class":195},"sTEyZ","Config.",[189,198,200],{"class":199},"sBMFI","AutoExecuteQuery",[189,202,204],{"class":203},"sMK4o"," =",[189,206,207],{"class":203}," true",[189,209,211],{"class":210},"sHwdD"," -- Automatically creates/updates database tables on start. Set to false to disable.\n",[139,213,215],{"start":214},8,[49,216,217,218,221,222,225],{},"Add ",[56,219,220],{},"offDutyJob"," to each mechanic job in ",[56,223,224],{},"Config.Jobs"," if you want off-duty job support:",[181,227,229],{"className":183,"code":228,"language":185,"meta":21,"style":21},"offDutyJob = {\n    enabled = false,\n    job = \"off_mechanic\"\n},\n",[56,230,231,242,256,274],{"__ignoreMap":21},[189,232,233,236,239],{"class":191,"line":192},[189,234,235],{"class":195},"offDutyJob ",[189,237,238],{"class":203},"=",[189,240,241],{"class":195}," {\n",[189,243,245,248,250,253],{"class":191,"line":244},2,[189,246,247],{"class":195},"    enabled ",[189,249,238],{"class":203},[189,251,252],{"class":203}," false",[189,254,255],{"class":195},",\n",[189,257,259,262,264,267,271],{"class":191,"line":258},3,[189,260,261],{"class":195},"    job ",[189,263,238],{"class":203},[189,265,266],{"class":203}," \"",[189,268,270],{"class":269},"sfazB","off_mechanic",[189,272,273],{"class":203},"\"\n",[189,275,277],{"class":191,"line":276},4,[189,278,279],{"class":195},"},\n",[139,281,283],{"start":282},9,[49,284,285,286,179],{},"Update ",[56,287,288],{},"Config.Interactions.self_service_tuning",[181,290,294],{"className":291,"code":292,"language":293,"meta":21,"style":21},"language-diff shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","Config.Interactions = {\n    self_service_tuning = {\n        public = true,\n+       unique = false,\n        marker = {\n            enabled = true,\n            type = 1,\n        }\n    }\n}\n","diff",[56,295,296,301,306,311,316,322,328,334,339,344],{"__ignoreMap":21},[189,297,298],{"class":191,"line":192},[189,299,300],{},"Config.Interactions = {\n",[189,302,303],{"class":191,"line":244},[189,304,305],{},"    self_service_tuning = {\n",[189,307,308],{"class":191,"line":258},[189,309,310],{},"        public = true,\n",[189,312,313],{"class":191,"line":276},[189,314,315],{},"+       unique = false,\n",[189,317,319],{"class":191,"line":318},5,[189,320,321],{},"        marker = {\n",[189,323,325],{"class":191,"line":324},6,[189,326,327],{},"            enabled = true,\n",[189,329,331],{"class":191,"line":330},7,[189,332,333],{},"            type = 1,\n",[189,335,336],{"class":191,"line":214},[189,337,338],{},"        }\n",[189,340,341],{"class":191,"line":282},[189,342,343],{},"    }\n",[189,345,347],{"class":191,"line":346},10,[189,348,349],{},"}\n",[139,351,352],{"start":346},[49,353,354],{},"Add the new command permission:",[181,356,358],{"className":183,"code":357,"language":185,"meta":21,"style":21},"Config.CommandPermissions = {\n    admintuning = { \"god\", \"superadmin\", \"admin\" },\n    migrate = { \"god\", \"superadmin\", \"admin\" },\n}\n",[56,359,360,371,411,444],{"__ignoreMap":21},[189,361,362,364,367,369],{"class":191,"line":192},[189,363,196],{"class":195},[189,365,366],{"class":199},"CommandPermissions",[189,368,204],{"class":203},[189,370,241],{"class":195},[189,372,373,376,378,381,384,387,389,392,394,397,399,401,403,406,409],{"class":191,"line":244},[189,374,375],{"class":195},"    admintuning ",[189,377,238],{"class":203},[189,379,380],{"class":195}," { ",[189,382,383],{"class":203},"\"",[189,385,386],{"class":269},"god",[189,388,383],{"class":203},[189,390,391],{"class":195},", ",[189,393,383],{"class":203},[189,395,396],{"class":269},"superadmin",[189,398,383],{"class":203},[189,400,391],{"class":195},[189,402,383],{"class":203},[189,404,405],{"class":269},"admin",[189,407,408],{"class":203},"\" ",[189,410,279],{"class":195},[189,412,413,416,418,420,422,424,426,428,430,432,434,436,438,440,442],{"class":191,"line":258},[189,414,415],{"class":195},"    migrate ",[189,417,238],{"class":203},[189,419,380],{"class":195},[189,421,383],{"class":203},[189,423,386],{"class":269},[189,425,383],{"class":203},[189,427,391],{"class":195},[189,429,383],{"class":203},[189,431,396],{"class":269},[189,433,383],{"class":203},[189,435,391],{"class":195},[189,437,383],{"class":203},[189,439,405],{"class":269},[189,441,408],{"class":203},[189,443,279],{"class":195},[189,445,446],{"class":191,"line":276},[189,447,349],{"class":195},[139,449,451,462],{"start":450},11,[49,452,453,454,457,458,461],{},"If ",[56,455,456],{},"Config.AutoExecuteQuery = false",", run the updated ",[56,459,460],{},"import.sql"," manually so the new profile and history tables are created.",[49,463,464,465,467,468,59],{},"Optional: run ",[56,466,65],{}," once if you need to import tuning data from a previous mechanic script such as ",[56,469,69],{},[13,471,474],{"date":472,"title":473},"2026-04-15","Version 0.1.0",[19,475,476,480,493,497,520,524],{"v-slot:body":21},[28,477,478],{},[32,479,44],{},[46,481,482,485,490],{},[49,483,484],{},"Initial release of Sky Mechanic Job.",[49,486,487,488,59],{},"Added full workshop-based tuning flow with creator placement support through ",[56,489,38],{},[49,491,492],{},"Added persistent tuning, tuning orders, mileage tracking, and vehicle wear.",[28,494,495],{},[32,496,74],{},[46,498,499,502,505,508,514],{},[49,500,501],{},"Added self-service tuning and mechanic workshop interactions.",[49,503,504],{},"Added engine swaps, repaint flow, wheel changes, workshop lifts, and engine hoists.",[49,506,507],{},"Added nitro, anti-lag, two-step, RGB controller support, and custom handling options.",[49,509,510,511,59],{},"Added persistent storage of tuning data in ",[56,512,513],{},"sky_mechanic_vehicle_tuning",[49,515,516,517,59],{},"Added tuning order persistence in ",[56,518,519],{},"sky_mechanic_tuning_orders",[28,521,522],{},[32,523,99],{},[46,525,526],{},[49,527,528,529,391,532,391,535,538,539,59],{},"Added admin tools: ",[56,530,531],{},"/admintuning",[56,533,534],{},"/debugwearzero",[56,536,537],{},"/debugwearzeroall",", and ",[56,540,541],{},"/workshopcreator",[543,544,545],"style",{},"html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}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 .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 .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}",{"title":21,"searchDepth":192,"depth":244,"links":547},[],"Full change history for Sky Mechanic Job.","md",null,{},{"icon":553},"i-lucide-history","/docs/jobs/mechanicjob/changelog",{"title":5,"description":548},{"loc":554},"1.docs/0.jobs/2.mechanicjob/6.changelog","YI93ZOQiO0jWVDBzvsmXUWHk-XyHpsB1zmsrPa_txUA",[560,565],{"title":561,"path":562,"stem":563,"description":564,"children":-1},"Commands","/docs/jobs/mechanicjob/commands","1.docs/0.jobs/2.mechanicjob/5.commands","Command reference for the Sky Mechanic Job resource.",{"title":566,"path":567,"stem":568,"description":569,"icon":570,"children":-1},"Introduction","/docs/base/introduction","1.docs/base/1.introduction","sky_base is a crucial component for all Sky-Systems scripts, designed to enhance performance, streamline configuration, and provide a unified framework for easier management. This guide will introduce you to sky_base and walk you through its configuration and use.","i-lucide-info",1776765825129]