[{"data":1,"prerenderedAt":9452},["ShallowReactive",2],{"navigation":3,"changelog":213,"mdc-ugcgms-key":439,"mdc-hck6s8-key":741,"mdc-xd4s7r-key":824,"mdc--ylc52m-key":1043,"mdc--4px2cs-key":1464,"mdc-ypdt3d-key":1674,"mdc--630wna-key":1735,"mdc--ap62hy-key":2071,"mdc-feveug-key":2557,"mdc-ks8i4j-key":2658,"mdc--rxphjv-key":3110,"mdc-71a8y4-key":3368,"mdc-uhvaru-key":3596,"mdc--ewgtd8-key":4007,"mdc--riog3o-key":4155,"mdc-4osjs-key":4287,"mdc-3t4f89-key":4425,"mdc-jv5k4e-key":4598,"mdc--nckqv5-key":4864,"mdc-obhzhg-key":5578,"mdc--fl3mg8-key":5594,"mdc--jtw59o-key":5620,"mdc--jmb3j4-key":5936,"mdc--xs83iz-key":6130,"mdc--22v2cu-key":6393,"mdc--ovn524-key":6433,"mdc-ua436w-key":6636,"mdc-tvlbde-key":6900,"mdc--2isp6-key":6990,"mdc-fd88i2-key":7542,"mdc--czpfah-key":7565,"mdc-byu14s-key":7745,"mdc-chvurn-key":7852,"mdc--totldz-key":8199,"mdc--wsil3y-key":8321,"mdc-lgvrss-key":8356,"mdc--fdv6jr-key":8418,"mdc-vlvuo6-key":8514,"mdc-4i3ka3-key":8535,"mdc-wme8zs-key":8571,"mdc-tbx705-key":8583,"mdc--kwa1nl-key":8667,"mdc-nud043-key":8702,"mdc-qlxky5-key":8737,"mdc-1l41ow-key":9269},[4,102,162,183],{"title":5,"path":6,"stem":7,"children":8,"page":-1},"Getting Started","\u002Fgetting-started","1.getting-started",[9,11,15,19,23,27,31,57,86],{"title":5,"path":6,"stem":10},"1.getting-started\u002F1.index",{"title":12,"path":13,"stem":14},"Features","\u002Fgetting-started\u002Ffeatures","1.getting-started\u002F1.features",{"title":16,"path":17,"stem":18},"Demo","\u002Fgetting-started\u002Fdemo","1.getting-started\u002F2.demo",{"title":20,"path":21,"stem":22},"Requirements","\u002Fgetting-started\u002Frequirements","1.getting-started\u002F2.requirements",{"title":24,"path":25,"stem":26},"Components","\u002Fgetting-started\u002Fcomponents","1.getting-started\u002F3.components",{"title":28,"path":29,"stem":30},"Versioning","\u002Fgetting-started\u002Fversioning","1.getting-started\u002F3.versioning",{"title":32,"path":33,"stem":34,"children":35,"page":56},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F4.installation",[36,40,44,48,52],{"title":37,"path":38,"stem":39},"Installation Methods","\u002Fgetting-started\u002Finstallation\u002Fmethods","1.getting-started\u002F4.installation\u002F1.methods",{"title":41,"path":42,"stem":43},"Cloud","\u002Fgetting-started\u002Finstallation\u002Fcloud","1.getting-started\u002F4.installation\u002F2.cloud",{"title":45,"path":46,"stem":47},"Using Docker","\u002Fgetting-started\u002Finstallation\u002Fcontainer-docker","1.getting-started\u002F4.installation\u002F3.container-docker",{"title":49,"path":50,"stem":51},"Kubernetes: Using Helm","\u002Fgetting-started\u002Finstallation\u002Fkubernetes-helm","1.getting-started\u002F4.installation\u002F4.kubernetes-helm",{"title":53,"path":54,"stem":55},"Post-Installation Steps","\u002Fgetting-started\u002Finstallation\u002Fpost-install-steps","1.getting-started\u002F4.installation\u002F6.post-install-steps",false,{"title":58,"path":59,"stem":60,"children":61,"page":56},"Configuration","\u002Fgetting-started\u002Fconfiguration","1.getting-started\u002F5.configuration",[62,66,70,74,78,82],{"title":63,"path":64,"stem":65},"Config File Reference","\u002Fgetting-started\u002Fconfiguration\u002Fconfig-reference","1.getting-started\u002F5.configuration\u002F1.config-reference",{"title":67,"path":68,"stem":69},"DBSync","\u002Fgetting-started\u002Fconfiguration\u002Fdbsync","1.getting-started\u002F5.configuration\u002F3.dbsync",{"title":71,"path":72,"stem":73},"Command Flags","\u002Fgetting-started\u002Fconfiguration\u002Fflags","1.getting-started\u002F5.configuration\u002F5.flags",{"title":75,"path":76,"stem":77},"Database Basics","\u002Fgetting-started\u002Fconfiguration\u002Fdatabase-basics","1.getting-started\u002F5.configuration\u002F6.database-basics",{"title":79,"path":80,"stem":81},"Advanced Configuration","\u002Fgetting-started\u002Fconfiguration\u002Fadvanced","1.getting-started\u002F5.configuration\u002F7.advanced",{"title":83,"path":84,"stem":85},"Common Installation Issues","\u002Fgetting-started\u002Fconfiguration\u002Fcommon-installation-issues","1.getting-started\u002F5.configuration\u002Fcommon-installation-issues",{"title":87,"path":88,"stem":89,"children":90,"page":56},"Gameserver","\u002Fgetting-started\u002Fgameserver","1.getting-started\u002F6.gameserver",[91],{"title":92,"path":93,"stem":94,"children":95,"page":56},"FiveM Plugin","\u002Fgetting-started\u002Fgameserver\u002Ffivem-plugin","1.getting-started\u002F6.gameserver\u002F1.fivem-plugin",[96,99],{"title":32,"path":97,"stem":98},"\u002Fgetting-started\u002Fgameserver\u002Ffivem-plugin\u002Finstallation","1.getting-started\u002F6.gameserver\u002F1.fivem-plugin\u002F1.installation",{"title":58,"path":100,"stem":101},"\u002Fgetting-started\u002Fgameserver\u002Ffivem-plugin\u002Fconfiguration","1.getting-started\u002F6.gameserver\u002F1.fivem-plugin\u002F2.configuration",{"title":103,"path":104,"stem":105,"children":106},"User Guides","\u002Fuser-guides","3.user-guides\u002F0.index",[107,108,112,116,120,130,134,138,142,146,150,154,158],{"title":103,"path":104,"stem":105},{"title":109,"path":110,"stem":111},"System Requirements","\u002Fuser-guides\u002Fsystem-requirements","3.user-guides\u002F0.system-requirements",{"title":113,"path":114,"stem":115},"Citizens","\u002Fuser-guides\u002Fcitizens","3.user-guides\u002F1.citizens",{"title":117,"path":118,"stem":119},"Vehicles","\u002Fuser-guides\u002Fvehicles","3.user-guides\u002F2.vehicles",{"title":121,"path":122,"stem":123,"children":124},"Documents","\u002Fuser-guides\u002Fdocuments","3.user-guides\u002F3.documents\u002Findex",[125,126],{"title":121,"path":122,"stem":123},{"title":127,"path":128,"stem":129},"Templates","\u002Fuser-guides\u002Fdocuments\u002Ftemplates","3.user-guides\u002F3.documents\u002Ftemplates",{"title":131,"path":132,"stem":133},"Jobs","\u002Fuser-guides\u002Fjobs","3.user-guides\u002F3.jobs",{"title":135,"path":136,"stem":137},"Calendar","\u002Fuser-guides\u002Fcalendar","3.user-guides\u002F4.calendar",{"title":139,"path":140,"stem":141},"Livemap","\u002Fuser-guides\u002Flivemap","3.user-guides\u002F5.livemap",{"title":143,"path":144,"stem":145},"Dispatch Center","\u002Fuser-guides\u002Fcentrum","3.user-guides\u002F6.centrum",{"title":147,"path":148,"stem":149},"Mailer","\u002Fuser-guides\u002Fmailer","3.user-guides\u002F6.mailer",{"title":151,"path":152,"stem":153},"Settings","\u002Fuser-guides\u002Fsettings","3.user-guides\u002F7.settings",{"title":155,"path":156,"stem":157},"Languages (i18n)","\u002Fuser-guides\u002Fi18n","3.user-guides\u002F8.i18n",{"title":159,"path":160,"stem":161},"iOS App","\u002Fuser-guides\u002Fios-app","3.user-guides\u002F9.ios-app",{"title":163,"path":164,"stem":165,"children":166},"Development","\u002Fdevelopment","8.development\u002F1.index",[167,168,172,176,180],{"title":163,"path":164,"stem":165},{"title":169,"path":170,"stem":171},"GRPC Protobuf Documentation","\u002Fdevelopment\u002Fgrpc-api","8.development\u002F3.grpc-api",{"title":173,"path":174,"stem":175},"Release Process","\u002Fdevelopment\u002Frelease","8.development\u002F4.release",{"title":177,"path":178,"stem":179},"User Activity","\u002Fdevelopment\u002Fuser-activity","8.development\u002F5.user-activity",{"title":155,"path":181,"stem":182},"\u002Fdevelopment\u002Fi18n","8.development\u002Fi18n",{"title":184,"path":185,"stem":186,"children":187},"Design Docs","\u002Fdesign","9.design\u002F1.index",[188,190,194,198,201,205,209],{"title":189,"path":185,"stem":186},"Designs",{"title":191,"path":192,"stem":193},"Improving Data Separation and Management for Users and Citizens","\u002Fdesign\u002Fdata-separation-management","9.design\u002Fdata-separation-management",{"title":195,"path":196,"stem":197},"DB Sync","\u002Fdesign\u002Fdb-sync","9.design\u002Fdb-sync",{"title":143,"path":199,"stem":200},"\u002Fdesign\u002Fdispatch-center","9.design\u002Fdispatch-center",{"title":202,"path":203,"stem":204},"Employee Management","\u002Fdesign\u002Femployee-management","9.design\u002Femployee-management",{"title":206,"path":207,"stem":208},"Player Tracker Rework","\u002Fdesign\u002Fplayer-tracker-rework","9.design\u002Fplayer-tracker-rework",{"title":210,"path":211,"stem":212},"Qualifications","\u002Fdesign\u002Fqualifications","9.design\u002Fqualifications",[214,219,224,229,234,239,244,249,254,259,264,269,274,279,284,289,294,299,304,309,314,319,324,329,334,339,344,349,354,359,364,369,374,379,384,389,394,399,404,409,414,419,424,429,434],{"title":215,"body":216,"date":217,"url":218,"prerelease":56},"v2026.8.4","### 🚀 Features\n\n- *(jobs)* Paginate group item endpoints\n- *(centrum)* Remove splitpanes for nuxt ui Splitter components and add\n- *(ci)* Generate go test coverage, add action summary and pr comment\n- *(dispatch)* Add four-way centrum sidebar placement\n- *(calendar)* Add icon to calendar and entries\n\n### 🐛 Bug Fixes\n\n- *(errors)* Adjust error wrap to use dot instead of colon\n- *(container)* Install pkgconfig in node build step\n- *(discord)* Calendar reminder using wrong icon url for job props logos\n- *(app)* Improve superuser job toggle for collapsed sidebar\n- *(discord)* Update job logo filestore URL expectations\n- *(sanitizer)* Issue with oneof message sanitize calls\n- *(jobs)* Use itemslen instead of \"manual\" pagination update for group\n- *(citizens)* Add blocked label access level\n- Remove\u002Freplace db and acl subject FIXME comments\n- *(documents)* Block status toggle in editor if no perms\n- Lint issue and make demo text suffix for job activity entries\n- *(demo)* Improve demo system banner message format\n- *(livemap)* Layout popover spacing\n- *(nats)* Use different context for store start\n- *(sync)* Actually return marker created at date\n- *(livemap)* Markers transition time being wrong in style\n- *(user)* Remove user\u002Fchar group column\n- *(tests)* Base data issue due to column removal\n- *(demo)* Duplicate calendar creation\n- *(mailer)* Settings signature insert query test\n- *(nats)* Ignore invalid subscription on cancel\u002Fstop\n- *(tracker)* Using user group column in test query\n- *(tracker)* Manager test case\n- *(tests)* Intermittent issue in nats test\n\n\u003C!-- generated by git-cliff -->","2026-08-23T21:04:12Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2026.8.4",{"title":220,"body":221,"date":222,"url":223,"prerelease":56},"v2026.8.3","### 🚀 Features\n\n- *(demo)* Generate demo calendar + entries\n\n### 🐛 Bug Fixes\n\n- *(tiptap)* Add map and penaltycalculator blocks to text diff render\n- *(app)* Cleanup activity feed diff legend and diff colors\n- *(auth)* System message banner missing from auth pages\n- *(auth)* Attempt to add padding to auth pages\n- *(demo)* Increase demo entries\n- *(calendar)* Show empty calendar in favor of no data block\n\n\u003C!-- generated by git-cliff -->","2026-08-21T17:35:26Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2026.8.3",{"title":225,"body":226,"date":227,"url":228,"prerelease":56},"v2026.8.2","### 🚀 Features\n\n- *(demo)* Create role for lowest job grade\n- *(overview)* Add quick access bar with pinning context menu\n- Add bw\u002Fgray fivenet logo variant\n- *(jobs)* Hide group selectors without list permission\n- *(calendar)* Rework ui to be more sleek heavily inspired by Nuxt UI's\n\n### 🐛 Bug Fixes\n\n- Version in VERSION file\n- Pkg version\n- Remove v2026.8.2 version from changelog\n- Use fontsource for local font loading\n- App config default perms methods label issue\n- Cleanup unnamed logger usage and debug info formatting\n- Improve banner display by adding padding to root of dashboardpanels\n- Cleanup error page info\n- Banner not appearing again when system message doesn't have\n- *(tiptap)* Search and replace extension type issue\n- Apply padding-bottom to all UDashboardPanel main pages\u002Fcomponents\n- Add imagemagick as utility for image handling\n- Rename bottom offset css vars and cleanup CardElement type\n- *(demo,perms)* Reload RBAC cache after demo data seeding\n- *(auth)* Forgot password not requiring a fully registered account\n- *(demo)* Seed rbac test issue due to rng not initialized\n- *(config)* Switch system banner to sha256\n- *(ui)* Tighten shared modal and overview spacing\n- *(auth)* Standardize auth errors and add failure audit metadata\n- *(tracker)* Make refresh user location test deterministic\n- Cleanup hero bg usage and rework about and licenses pages\n- *(jobs)* Rename jobspolicy pkg to groupspolicy\n- *(channels)* Update helm chart version\n\n\u003C!-- generated by git-cliff -->","2026-08-20T16:57:06Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2026.8.2",{"title":230,"body":231,"date":232,"url":233,"prerelease":56},"v2026.8.1","### 🚀 Features\n\n- Split ManageLabels jobs labels API\n- *(documents)* Record workflow cron stats\n- *(cron)* Report cron run metrics\n- *(cron)* Add more attributes to cron handlers\n- *(demo)* Enable and set system banner message with crendetials\n- Add cron job prometheus metrics\n- Use tiptap new decorations api for SearchAndReplace extension\n- *(tests)* Clone MySQL test DBs from shared seed schema\n- *(jobs)* Start work on groups api\n- *(jobs)* Add group access control\n- *(jobs)* Use user selectors in listings\n- *(jobs)* Redesign group details ui screens\n- *(access)* Add typed object access wrappers\n- *(jobs)* Gate group mutations by group view access\n- *(access)* Wire typed access into remaining services\n- *(jobs)* Refresh group access editor and list ui\n- *(jobs)* Add group policy enforcement\n- *(jobs)* Add cron job to recount group members every 5 minutes\n\n### 🐛 Bug Fixes\n\n- *(centrum)* Adjust un-\u002Fassigned dispatch status handling\n- *(jobs)* Colleages labels stats not checking user job\n- *(jobs)* Add tree map graph style for label stats\n- Clean up initializations in app.vue by using plugins\n- *(tracker)* Keep dispatcher state in sync\n- *(centrum)* Sync job mappings on KV updates\n- *(centrum)* Add coverage for KV job mapping changes\n- *(tracker)* Tracker missing comments about behavior and centrum tests\n- *(centrum)* Decouple unit assignment cache updates from DB transaction\n- *(centrum)* Resync unit membership and dispatch state\n- Update readme badges\n- Run golangci-lint fix\n- *(centrum)* Test issues\n- *(tracker)* Manager test setup\n- Tracker interface issue in tracker tests\n- *(centrum)* Show coords in dispatch create\u002Fupdate slideover\n- *(tests)* Add missing fivenet_user_jobs initial data\n- *(centrum)* Fix settings bug causing test failures\n- Disable attr jobs when N\u002FA value is sent\n- Go test failures and archive\u002Frestore group acl issue\n- *(jobs)* User group selection\u002Fsearch filter\n- *(ui)* Restore SelectMenu attrs and static items fallback\n- *(tests)* Dbmanager context issue during cleanup\n- *(jobs)* Preserve conduct filters and exclude stale group members\n- *(tests)* Parallel issues with dbmanager\n- *(jobs)* Handle archived group detail reads and read-only state\n- *(jobs)* Seed default access when creating groups\n- *(jobs)* Authorize qualification IDs in group rules\n- *(jobs)* Ensure job groups feature migrations are run\n\n### ⚙️ Miscellaneous Tasks\n\n- Nix flake update + switch to staging-next-26.05\n\n\u003C!-- generated by git-cliff -->","2026-08-14T18:38:51Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2026.8.1",{"title":235,"body":236,"date":237,"url":238,"prerelease":56},"v2026.8.0","### 🚀 Features\n\n- Use nuxt ui for livemap context menu\n- Add drag'n'drop document template ordering\n- Use genric rank logic to reduce duplicated code\n- *(auth)* Use PinInput for registration token input\n- *(audit)* Add account id column\n- *(livemap)* Add debug info to settings drawer\n- Add get user props sync api endpoint\n\n### 🐛 Bug Fixes\n\n- Centrum dispatch activity feed and improve color polyfills\n- Amber color usage and polyfills colors\n- Improve color palette change funcs\n- Marker unit text color\n- *(templates)* Hide approval task add button in view when disabled\n- Testdata base data issue caused by templates ordering change\n- Documents base test data\n- *(livemap)* Heatmap perms check missing causing perm denied\n- Heatmap livemap error for good and improve server auth errors\n- Postcss plugin imported assets warning\n- Small ui\u002Fux cleanups and improve stream msg var naming\n- *(input)* Show\u002Fhide hours:minutes in input date range based on width\n- *(audit)* Skip sync service calls authed by api token\n- Audit log correct user_job column as well\n- *(audit)* Use auth kind as consideration for skipping log\n- Add shellcheck to flake.nix\n- *(audit)* Null user job in audit if empty\n- Livemap own marker and empty phone number handling\n- *(livemap)* Prevent user marker stream stalls\n- *(livemap)* Using wrong jobs list for visibility checks\n- *(lint)* Assert equal vs true usage\n\n\u003C!-- generated by git-cliff -->","2026-08-04T20:30:59Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2026.8.0",{"title":240,"body":241,"date":242,"url":243,"prerelease":56},"v2026.7.3","### 🚀 Features\n\n- *(sync)* Add user dispatch auto-close RPC\n\n### 🐛 Bug Fixes\n\n- Css color var issue and circle radius sizing\n- *(marker)* Perms check for editing public markers\n- Sync api marker creation missing job label and improve public\n- Run linters and formatters\n- *(livemap)* Store markers tests\n\n\u003C!-- generated by git-cliff -->","2026-07-28T20:30:18Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2026.7.3",{"title":245,"body":246,"date":247,"url":248,"prerelease":56},"v2026.7.2","### 🚀 Features\n\n- *(vehicles)* Add wanted activity backend\n- *(vehicles)* Add activity feed UI\n- *(sync)* Add EndActiveJobTimeclocks api method\n- *(laws)* Notify clients on laws changes\n\n### 🐛 Bug Fixes\n\n- *(sync)* Use job names for job grade syncing\n- *(mailer)* Thread list refs issue\n- *(mailer)* Thread list and page param issue\n- *(filestore)* Use alias tags for Jet scans\n- *(vehicles)* Cleanup activity feed style and safe job info enrich entries\n- Timeclock query issues\n- Better-sqlite3 build issues\n- *(timeclock)* Cleanup sorting and list\n- *(dbsync)* Normalize user jobs from jobs list\n- *(auth)* Restore account session without reopening websocket on refresh\n- *(notifications)* Avoid empty job subjects\n- *(auth)* Add session restore regression test\n- *(jobs)* Align timeclock test with query shape\n- *(cookies)* Use 1970 expires time value and use utc time\n- Job select menu not being full width\n- *(sync)* Phone_number and more correctly set to null on insert\n- *(centrum)* Dispatchers job not checked in cleanup logic\n- *(grpc)* Gracefully handle context canceled in streams\n- *(streams)* Treat canceled NATS-backed streams as clean shutdowns\n- *(demo)* Block until base data has been seeded\n- *(demo)* Refresh jobs when demo data generation is done\n- *(auth)* Hide chooseCharacter error on restore by account token only\n- Drawers having 2 close buttons due to nuxt ui changes\n- Version info being different between backend and frontend\n- *(query)* Reduce line length of fk constraints\n- Cleanup utils package\n- Law page ref undefined issue by updating nuxt\n- *(laws)* Law hint not spaced properly with the description\n- *(sync)* Updating hashes before data send was successful\n- *(oauth2)* Move account token helpers out of generated package\n- *(auth)* Revalidate current route after permission refresh\n- Cleanup padding\u002Fmargin for Data*Block components\n- *(colors)* Improve polyfill colors and use buttons for design color\n- App utils color tests\n\n\u003C!-- generated by git-cliff -->","2026-07-28T09:45:43Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2026.7.2",{"title":250,"body":251,"date":252,"url":253,"prerelease":56},"v2026.7.1","### 🚀 Features\n\n- *(livemap)* Add circle blink controls\n- *(sync)* Add marker activity sync\n- Support public livemap markers\n- *(config)* Add setup_complete bootstrap state and setup redirect flow\n- *(config)* Introduce first-time setup wizard\n- *(setup)* Centralize client config sync after setup\n- *(notifications)* Account-first stream with char-scope upgrade\n- *(notifications)* Add send test notification sub command\n- *(fabric)* Add more shapes to editor\n- *(jobs)* Add conduct entry restore permission\n- *(editor)* Add spoiler details support\n- Add new tailwindcss 4.2 colors\n\n### 🐛 Bug Fixes\n\n- Jobs id resolver\n- Remove group field from users select\n- Storage metrics ttl timeout and log messages\n- Use more proto setters\n- *(documents)* Reference and relation creation handling for edit access\n- *(oauth2)* Add oauth2 provider name limit and cleanup logs\n- File list preview image not re-rendering on changes\n- Nats store\u002Fstream registration issue in userinfo usage in tests\n- *(livemap)* Move events logic to store and add DeleteMarker sync api\n- *(livemap)* Improve marker public cleanup and creator handling\n- *(sync)* Add missing protovalidate required field flags for sync api\n- *(livemap)* Update cache for sync-created markers\n- *(livemap)* Keep public marker updates visible for allowed jobs\n- *(livemap)* Make circle blink overlay non-interactive\n- *(perms)* Frontend generating aliased permissions\n- *(config)* Properly reload app config on first-time setup\n- *(protoc)* Add tests to frontend permify generator\n- Change app config update order in first-time setup\n- *(auth)* Validate config-admin with live account state\n- Add icons to error page buttons\n- Add description text to stats page app config toggle\n- *(completor)* Allow CompleteJobs with account token only\n- Use label for default perm entries\n- *(grpcws)* Clear stale char auth for account-only notifications\n- *(grpcws)* Clear char token on account-only reauth\n- *(grpcws)* Auth scope for account-only switches\n- *(websocket)* Prevent stale auth and stream frame replay\n- *(grpcws)* Keep tokenless reauth and clean up websocket tests\n- *(grpcws)* Improve handling of cancel frames in the current system\n- *(notifications)* Unread count var name on client side\n- Add analyze dir to .gitignore\n- Cleanup jobprops logo sql condition and click event handlers\n- *(auth)* Restore char session state on reload\n- Add Unwrap to errswrap pkg\n- Correct set user token + activeChar order\n- Auth superuser test issue\n- Keep account-only RPCs tokenless while preserving character restore\n- Skip websocket token reauth until connected\n- *(auth)* Bind restored character tokens to selected character\n- Refine backend error wrapping\n- Refine frontend gRPC error handling\n- Conduct list auto refresh not working\n- Re-order settings page items\n- *(app)* Configure bundled Nuxt UI icons\n- *(notifications)* Preserve durable stream consumers\n- *(testdata)* Sql foreign key import issues and missing doc fields\n- *(grpcws)* Add websocket status to error logs\n- Add new colors as rgb to css polyfills\n- Remove unused culori js package\n- Pin vue to 3.5.40 to fix nuxt vitest issue\n- Js linter complaint\n\n\u003C!-- generated by git-cliff -->","2026-07-21T07:21:22Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2026.7.1",{"title":255,"body":256,"date":257,"url":258,"prerelease":56},"v2026.7.0","### 🚀 Features\n\n- Handle and notify on user primary job and groups changes\n- Split superuser access into two based on account groups\n- Switch logout page design to use auth card design\n\n### 🐛 Bug Fixes\n\n- Make jobs id and job_id for grades optional\n- Centrum dispatchers cleanup and protogetter linter\n- Notification provider reliability and lint issues\n- Display notification when user job\u002Fgrade changed\n- Add missing fallback to unemployed job when user has no jobs\n- *(notifications)* Restore original job on superuser revocation\n- Only clean up user data once\n- Cron list template type issues\n- Improve config admin access separation\n- *(auth)* Refresh config-admin state on account group changes\n- Update helm chart in channels.json\n- Demo delete jobs query on start\n\n\u003C!-- generated by git-cliff -->","2026-07-03T18:27:56Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2026.7.0",{"title":260,"body":261,"date":262,"url":263,"prerelease":56},"v2026.6.3","### 🚀 Features\n\n- Switch to subject based access control\n- *(documents)* Add required access helper\n- *(wiki)* Add drag'n'drop to page reorder list\n- Switch to UEmpty for DataNoDataBlock component\n\n### 🐛 Bug Fixes\n\n- *(calendar)* Issues with access control to entries\n- *(calendar)* Max length of calendar and entry description fields\n- *(sanitizer)* Unescpae sanitized strings by default\n- *(cookies)* Go back to same site none header\n- *(livemap)* Issues with async\u002Fdynamic icons not showing on hide\n- *(livemap)* User icon missing\n- *(livemap)* User marker icon issue with sizing\n- *(wki)* Index page containing debug output\n- *(ui)* Cleanup and deduplicate code\n- *(calendar)* Improve discord reminders code\n- Notifications issues and fx DI opts\n- Some query table alias issues\n- *(editor)* Required access ui changes\n- *(access)* Cleanup and fix subject-based access control\n- *(sql)* Make gen-sql\n- New access type not used everywhere yet\n- Documents update issue caused by get query using wrong condition\n- Continue cleanup and acl fixes\n- Tests and add more methods to stores\n- Cleanup documents store and nil issues\n- Required missing from input fields of document request drawer\n- *(calendar)* Discord reminder setting test issue\n- *(document)* Transfer relations + references on owner change\n- *(acl)* Deny condition in sql based visibility backend\n- *(citizens)* Get user label condition issue\n- *(documents)* Add soft-delete to stamps\n- *(calendar)* Add pagination to sidebar calendar list\n- Job props retrieval issues\n- General table alias issues\n- Switch German Lexikon to Wiki\n- *(queries)* Table alias issues for sql INSERT, UPDATE and DELETE\n- Add clear accounts groups for accounts sync\n- *(calendar)* Query table aliases issue\n- *(calendar)* Update query using wrong table alias\n- More queries using wrong table alias\n- Doc approval task decidedTask var not correctly assigned for given\n- *(calendar)* List calendar entries private entries missing\n- *(calendar)* Correct entry access filtering\n- *(calendar)* Show deleted icon for deleted entries\n- Visibility CTE handling in calendar and qualification queries\n- *(qualifications)* Requests and results issues\n- *(citizens)* Labels job column cte alias issue\n- Timeclock query\n- *(timeclock)* Column naming issues\n- More insert\u002Fupdate\u002Fdelete queries using aliased tables\n- Cleanup centrum housekeeper code and fix accounts retrieval for\n- *(accounts)* User accounts mapping issues\n- Phone number blur when streamer mode is enabled\n- Cleanup discord calendar reminder embed and use job logo if\n- *(documents)* Allow edit if user has access but no permission\n- *(jobs)* Add id to jobs and job_id to job_grades\n- Update accounts sync example for groups in esx\n\n### 🏭 Refactor\n\n- Extract store query methods from services\n\n\u003C!-- generated by git-cliff -->","2026-06-28T14:56:22Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2026.6.3",{"title":265,"body":266,"date":267,"url":268,"prerelease":56},"v2026.6.2","### 🚀 Features\n\n- *(editor)* Add fullscreen modal for images in document view\n- *(wiki)* Add rank-based page ordering\n- *(wiki)* Reuse shared client helpers\n- *(wiki)* Change MovePage to be a standalone permission\n\n### 🐛 Bug Fixes\n\n- *(livemap)* Satelite -> satelitte typo\n- *(discord)* Custom error for expired discord token\n- *(docs)* De-duplicate screenshot for readme\n- *(mailer)* Private email creation and confirm leave issues with new\n- *(calendar)* Description not using content message and no default access being set for calendar\n- *(calendar)* Access level for entry deletion not being EDIT\n- *(calendar)* Hide all day label for birthdays\n- Livemap satelite -> satelitte issue and calendar description\n- *(editor)* Image height\u002Fwidth + align handling in node\n- *(centrum)* Dispatch sidebar always being shown\n- *(i18n)* German calendar translation\n- *(calendar)* Recurring entries query logic\n- *(sanitizer)* Tiptap image test case\n- *(calendar)* Use separate occurence version for rsvp logic\n- Cleanup some type issues and add shortucts\n- *(discord)* Add helper to check error\n- *(calendar)* Recurrence version missing from query\n- File fomatting\n- Address some golangci-linit complaints\n- *(wiki)* Keep active page highlighted\n- Linter complaints\n- Wiki page view ui permission checks\n- *(documents)* Stats not returning results for other jobs\n- *(calendar)* Cal\u002Fentry deletion not closing view slideover\n- Update limiter templates to include wiki reoder page permission\n- Update zxcvbn-ts to v4.1.0\n\n\u003C!-- generated by git-cliff -->","2026-06-12T11:32:47Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2026.6.2",{"title":270,"body":271,"date":272,"url":273,"prerelease":56},"v2026.6.1","### 🚀 Features\n\n- Add shared unsaved-changes handling\n- Add polyline support for livemap markers\n- Validate list\u002Fsearch requests using composable and form state\n- *(tiptap)* Add map block embeds\n- Add map location block extension to editor\n- Use beforeunload event to block refresh for unsaved changes\n- *(calendar)* Add birthday system calendars\n- *(calendar)* Support birthday occurrences in ui\n- *(documents)* Add menu with predefined times as the reminder button\n- *(calendar)* Finish calendar recurring appointments and discord\n\n### 🐛 Bug Fixes\n\n- Use typed string list in backend code where possible\n- *(frontend)* Add typed frontend permission attributes\n- Add missing name attribute to UFormFields\n- UseFormSearchValidation issue for nested proxy in objects\n- Wrong import path for maker creat\u002Fupdate dialog\n- Adjut vscode settings to prefer non-relative import paths\n- Ts lint issues\n- Mapblock vitest case\n- Livemap background color issue\n- General UI and transport cleanup\n- Lint issue and MapBlock test\n- Update html and tiptap sanitizer for new extensions\n- Go fmt files and use assert\u002Frequire for new calendar tests\n- Improve mapblock inline behavior\n- Change birthday default color\n- *(calendar)* Cleanup birthday entry view\n- *(calendar)* Handle birthday occurrences and legacy system kinds\n- *(calendar)* Summary list missing entry icon\n- *(calendar)* Reorganize calendar components\n- *(calendar)* Remove unused code path\n- Improve tiptap empty check and tiptap to text\n- Gosec warning\n- Run discord calendar reminders as standalone loop and not cronjob\n\n\u003C!-- generated by git-cliff -->","2026-06-09T23:26:59Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2026.6.1",{"title":275,"body":276,"date":277,"url":278,"prerelease":56},"v2026.6.0","### 🚀 Features\n\n- Add basic private discord message handler to bot and add i18n\n- Add more buttons for table edit popover in tiptap editor\n- Add image removal to file list modal\n- Add proper file limit logic to filestore\n- Split job colleague labels into separate page and fix labels not\n- Add creator filter for dispatches archive and add repeated proto\n- Add enum defined only validation where missing from proto files\n- Add centrum units reorder api and ui\n- Add dispatcher removal button and highlight current user\n- Add no dispatches list to dispatch center\n- Add citizen labels sorting\n- Add job selection to documents stats\n- (re-)store dispatch center pane sizes\n- Detect and filter content type of uploaded files\n- Introduce re-useable DraggablHandle and ReorderButtons components\n- *(livemap)* Add rectangle and polygon marker proto types\n- *(livemap)* Add interactive marker geometry editing on map\n- Add laws sort_order column and re-gen sql and proto\n- Add laws order sort_order ui handling\n- Add maker search drawer to livemap\n- Color document activity icons for approval entries\n\n### 🐛 Bug Fixes\n\n- Add limits to most UPDATE and DELETE queries\n- Some perm translations and autocomplete change in nuxt\u002Fui 4.8.0\n- Update config example comments\n- Upsert stamps call issues\n- Continue documents stamps work\n- Improve discord private message text\n- Tiptap editor files not giving file limit feedback\n- Sql query tests caused by jet paranthesis changes\n- Tiptap image removal when image doesn't exist in editor\n- Add action successful notification to file removal in file list\n- Consistently use stretchr\u002Ftestify\u002Fassert and require packages for\n- Duplicate SetUserProps perm in citizens.LabelsService\n- Penalty calculator view difference between html and tiptap json\n- Remove case_count metric from documents\n- Input time picker and remove delete penalty calculator button from\n- Qualifications labels sync creating label without color\n- Doc stats generation tests\n- Jobs stats returning empty list\n- Jobs colleagues stats average vacation\n- Use minimum release age to 1 day\n- Remove exclude flag from git describe calls\n- Centralize user locale logic in a composable\n- App config penalty calculator max leeway validation issue\n- Client config json field name for stats page setting\n- Cleanup http server and improve iconify proxy request building\n- Run golangci-lint --fix\n- Add more created_at columns and check int size in reorder units api\n- Unit list ordering\n- Unit list sorting\n- Update sortOrder in client centrum store\n- Type issue due to job labels order -> sortOrder\n- Icon select menu performance and other general issues\n- \"conflicting\" citizens labels permission and cleanup components\n- Colleagues list cards labels list overflowing\n- Citizen labels access table naming\n- Some dispatch center automatic statuses not having creator job and\n- Dispatch list card view created at time badge\n- Debug output in dispatch list card view\n- Centrum -> dispatch pages rename issue\n- OnBeforeRouteLeave handler for centrum\u002Fdispatch pages\n- Centrum to dispatch rename\n- Cleanup some ui and status creation issues for dispatch center\n- Ensure own job's doc categories on top of completor results\n- Dispatch center unit icon\u002Fcolor usage\n- Remove debug output from centrum store\n- Improve filestore upload filter error handling on client-side\n- Remove dispatcher perm check in dispatcher drawer\n- Documents stats categories not being returned correctly\n- Replace table header buttons with generic component\n- Add go vscode extension to recommendations\n- Remove old excluded tables from gen-sql\n- Cleanup kong command handling logic\n- Convert stats backfill query to use go-jet tables\n- Check edit access to livemap marker\n- Jobs colleagues labels query issue\n- Improve document approval status logic and badge\n\n\u003C!-- generated by git-cliff -->","2026-06-05T09:48:24Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2026.6.0",{"title":280,"body":281,"date":282,"url":283,"prerelease":56},"v2026.5.1","### 🚀 Features\n\n- Add log to stderr option\n- Remove custom code in favor of packages\n- Rework permissions structure and views\n- Add citizen labels housekeeper logic and feed entry\n- Add self update command to fivenet binary\n- Rework InputDate* and add dedicated InputTimePicker component\n- Add typed string-list permission references\n- Add soft-delete accounts and laws with updated service contracts\n- Improve citizen label access handling and UI\n- Apply lifecycle hook updates and assorted UI fixes\n\n### 🐛 Bug Fixes\n\n- Rename completor citizen label into citizens labels service\n- Adjust hero pattern background color and remove gradient\n- Rbac test data\n- Node lint issues\n- Auth flow test issues\n- Superuser perms test for non-existing permissions\n- Golangci-lint complaints\n- Label expiration not being inserted for citizen labels\n- Setting and retrieving citizen labels\n- Update .gitignore\n- Input duration picker test\n- Remove todo comment from citizens set labels\n- App config default perms translations using wrong key\n- Remove deprecated permissions from app config on load\n- Tiptap is empty doc check\n- Jobs colleagues service permission icon\n\n\u003C!-- generated by git-cliff -->","2026-05-21T00:27:34Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2026.5.1",{"title":285,"body":286,"date":287,"url":288,"prerelease":56},"v2026.5.0","### 🚀 Features\n\n- Add run cronjob manually function\n- Warn about config location and add restart command for dbsync\n- Return last activity\u002Fdata time in getstatus sync api\n- Add basic tests to pkg\u002Fperms\n- Continue work on citizens labels settings\n- Add log to stderr option\n\n### 🐛 Bug Fixes\n\n- Ensure ids are set for vue-timeline-chart groups, items and markers\n- Show color code in color picker input\n- Label settings validation\n- Document editor data issue with penalty calculator\n- Penalty calculator editor and view not in sync and doc stats query\n- Stamps create page perm\n- Pnpm lock file outdated\n- Change citizens labels structure\n- Adjust dbsync install config file warning text\n- Use single delete query instead of per grade execution\n- Remove reason from citizen label and fix duration pair validation\n- Cleanup spa loading template and experimental nuxt opts\n- Log to file not working correctly and added log rotation interval\n- Use label\u002Fvalue attribute for more components\n- Adjust add notification arg\n- Split up grpc services into more manageable apis\n- Tweak german translation\n\n\u003C!-- generated by git-cliff -->","2026-05-03T16:37:31Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2026.5.0",{"title":290,"body":291,"date":292,"url":293,"prerelease":56},"v2026.4.0","### 🚀 Features\n\n- Enable pagination edge buttons\n- Add InputDurationPicker and improve duration selection\n- Merge sync v2 into main api\n- Merge CompleteDocumentCategories to ListCategories perm\n\n### 🐛 Bug Fixes\n\n- Citizens errors key\n- Split dbsync user hash check to separate func\n- Attempt to improve dbsync syncers for users and vehicles\n- Don't select data json in users sync\n- Attempt to use per sync run now guard to improve sync performance\n- Don't rely on UTC use time directly for dbsync queries\n- Dbsync timestamp timezone issue\n- Jobs timeclock inactive list group by issue\n- Timeclock list time issue\n- Further increase vitest hook timeout\n- Send users in chunks in dbsync\n- Ignore vitest updates\n- Update dockertest pkg to v4 and update go-grpc-middleware dep\n- Check if custom query is not nil and not empty\n- Missing ORDER BY for example vehicles custom dbsync query\n- Update sync api limits and chunk accounts data if needed\n- Vitest upgrade issue caused by vitest 8 being pulled in\n- Tiptap json to html and back conversion causing spaces to disappear\n- Return missing citizen labels settings\n- Add fivenet version to system status title\n\n\u003C!-- generated by git-cliff -->","2026-04-23T18:01:43Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2026.4.0",{"title":295,"body":296,"date":297,"url":298,"prerelease":56},"v2026.3.2","### 🚀 Features\n\n- Add demo content like jobs, licenses and laws\n- Add centrum and jobs activity demo data\n- Add demo data generation for vehicles\n- Add settings to citizen\u002Fuser labels\n- Add icon to labels and change citizen label api\n\n### 🐛 Bug Fixes\n\n- Implement demo mode feedback\n- Demo account identifier\u002Flicense mixup\n- Prefix error translation keys by service\u002Fdir\n- Dbsync user jobs cleanup\u002Ffiltering\n- Add deleted label handling for superuser\n- Icon select search being overly strict\n- Label icon not clearable and insert\u002Fupdate query issue\n- Sql mode ONLY_FULL_GROUP_BY timeclock for total time queries\n- Superuser job select menu label issue\n- Update nats image to 2.12.6 in docker-compose.ymls\n- Update overview screenshot\n- Typo in docker-compose.yml\n- Doc approval decline not working due to \"empty\" payload svg\n- Cleanup linter issues\n- Frontend linter issues\n- Replace vueuse `useVModel()` with vue `defineModel()`\n- Enable additional linters and fix context linter issues\n- Truncate grpc web response trailer bytes to max if truncated\n- Audit log grpc interceptor arg change causing error to be lost\n- Address gosec linter failures\n- Make all CommandPaletteGroup arrays computed and fix type of\n- Pnpm install issue caused by mdc\u002Fshikijs dependency\n- Dbsync for single user with custom query\n\n\u003C!-- generated by git-cliff -->","2026-03-29T15:09:46Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2026.3.2",{"title":300,"body":301,"date":302,"url":303,"prerelease":56},"v2026.3.1","### 🚀 Features\n\n- Add name override for user marker\n- Add stats for documents\n- Add per job employee count metric generation\n- Add sex value mapping for citizen profile\n\n### 🐛 Bug Fixes\n\n- Ensure penalty calculator data set\u002Funset according to block's\n- Clear user props when name override set on user location\n- Improve audit log services\u002Fmethods selection\n- Audit log methods clear for unselected services\n- User marker not \"merging\" user marker data\n- Clear user marker name override data\n- Centrum enabled notification popping up when it shouldn't\n- Audit log methods select menu items\n- Audit service name (strip `services.` prefix)\n- Missing translation for citizens labels page\n- Add title to ErrClosedDoc error\n- Add toggle all to role view for superusers\n- Add total data to penaltycalculator document data\n- Adjust doc stats charts display on client\n- Adjust documents metrics table default\n- Address feedback for composable changes\n- Penaltystats detention unit\n- Stats feedback and stats rebuild mutex lock\n- Add min\u002Fmax date to stats date range picker\n- Update dbuitls StringPEmpty comment\n- Stats date range picker icons\n- Stats doc categories restricting categories by job\n- Add missing stats categories perms check\n- Use category badge for documents by category stats\n- Penalty stats detention time unit display\n- Update optimizeDeps list\n- Missing stats perms service translations\n- Stats metrics table foreign key name consistency\n- Update nuxt.config.ts optimizeDeps list\n- Use DI docstats for jobs metrics cron\n- Add employee count metrics\n- Dbsync \"double\" quote for columns with backticks\n- Data*block padding\u002Fmargin and comments field not reset on send\n- Colleagues stats chart\n- Stats service perms still showing\n- Update nats container image to 2.12.5-alpine3.22\n- Add breadcrumbs to stats pages\n- Mstlystcdata docscategories not loading categories as expected\n- Template editor scroll\u002Foverflow issue\n- Jobs nav menu not checking perms properly\n- Jobs colleagues stats perm\n- Add visarea to visline for absent employees chart\n- Add missing display intlLocale and currency settings to app config\n- Cleanup clientconfig proto messages\n\n\u003C!-- generated by git-cliff -->","2026-03-16T19:15:59Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2026.3.1",{"title":305,"body":306,"date":307,"url":308,"prerelease":56},"v2026.3.0","### 🏗️ Breaking changes\n\n- V2026.2.0 changelog and update breaking changes steps\n\n### 🚀 Features\n\n- Add max duration for citizens and vehicles to UI\n- Add max wanted duration for citizens and vehicles\n- Make citizen height searchable\n- Add browser topic to discord bot \u002Fhelp command\n- Add all and own documents tabs to doc list\n- Add id copy badge to account list\n- Add trigger user sync to settings system service\n- Add tiptap suggestion menu and re-gen proto ts files\n- Add sync user table for debugging\n- Add xxhash logic to dbsync users and vehicles syncers\n- Add custom useSounds to replace @vueuse\u002Fsound and add custom\n- Add search bar to document templates list\n- Replace qualifications tabs into separate pages\n- Add metrics to dbsync\n- Add penalty calculator integration for editor\n- Store penaltycalculator data in document\n\n### 🐛 Bug Fixes\n\n- Change impersonation to original job in auth tokens\n- Add original job to debug info\n- Pinned document list not appearing on wide screens (2xl)\n- Add button component to \u002Ffivenet command\n- Discord bot modules to use new fivenet_user_jobs table\n- Test data type\n- Add test case for userinfo discord bot module\n- Length based comparisons off by one\n- Default config default values for discord bot section\n- Dbsync accounts column names\n- Nil issue in dbsync state logic\n- Dbsync state file upgrades\n- Single account group not converted to groups for accounts table\n- Dbsync accounts groups issues\n- Data separation migration queries\n- Account update activity sync\n- Discord bot group sync group query\n- Document view empty when first child content is empty\n- User claims and user info \"merge\"\n- Conduct entry creation\n- Colleague info popover causing error notification\n- Discord groupsync issues\n- Show offset in dbsync log messages\n- Add license field to users for faster lookups\n- Improve dbsync log fields\n- Dbsync user updates not updating license\n- Increase tiptap doc limit for now due to base64 images\n- Conduct register editor issues\n- Adjust sync api user id\u002Fidentifier \"override\" logic\n- Attempt to fix user sync issue\n- Override all columns even for \"new\" users in sync api\n- Issues with source code modal in template editor\n- Remove rounding of document list tabs\n- Move doc tabs to a toolbar\n- Start to streamline dbsync syncer logic\n- Db migration info missing when migrations are skipped\n- Add debug log for single user sync calls\n- Dbsync state init order issue\n- Dbsync stream message forwarding\n- Dbsync single user sync query\n- Sync api incorrectly updating users\n- Set user blood type on create in sync api\n- Improve user duplication handling logic\n- Remove debug output from sync logic\n- Vehicle owner identifier not selected correctly for auto query\n- Dbsync sync client causing issues on restart\n- Add tests to groupsync module for planUser logic\n- Rename dbsync tablemanager files\n- Improve discord qualifications module\n- Improve discord bot base module handling\n- Discord qualifications module query issue\n- Add tests for leaderelection\n- Cleanup foreign key to esx users references\n- Groupsync only using account id at the moment\n- Discord user's roles sum merging\n- Example for dbsync user sex mapping\n- Use partial json unmarshal as default\n- Only show documents pinned list for xl\n- Oauth2 login\n- Dbsync user jobs comparison\n- Dbsync user jobs and phone number comparison + add tests\n- Dbsync single user query issue\n- Colleague info page prefix\u002Fsuffix not having any distance\n- Auth password forgot form not unlocking form\n- Discord oauth2 connect not working\n- Oauth2 connect test case\n- Improve yjs editor reconnection not resetting loading state\n- Use configured limits for syncers\n- Cleanup centrum color funcs\n- Remove sound config from nuxt.config.ts\n- Dbsync hashes length check issue\n- Remove z.coerce()...optional() calls\n- Dbsync vehicles hash check not re-checking length after delete\n- Livemap marker deletion causing all to disappear\n- Attempt to fix infinite document workflow reminders\n- Update code comments\n- Update code workspace settings to fix code vitest extension\n- Qualification view toolbar showing when empty\n- Cleanup qualification exam ui handling\n- Superuser mode toggle\n- Improve auth info box texts when in-game (NUI is enabled)\n- Discord qualifications role sync\n- Improve auth service error messages\n- Oauth2 user store not updating tokens correctly\n- Make discord guild\u002Fserver select menu full width\n- Use user jobs table for timeclock colleague job\n- Remove debug output\n- Change field names of auth service Change* methods\n- Discord qualifications module user account id query\n- Discord qualifications role user plan logic\n- Correctly query accounts and user jobs table in discord\n- Fabricjs center\u002Fzoom issues\n- Contine refining fabric editor components\n- Is empty rich content doc check\n- Remove synced up state from dbsync state\n- Move to db cursor based paging for dbsync users and vehicles data\n- Add Resync() func for single syncs\n- User phone numbers insert on update query issue\n- Make gen-sql\n- Cleanup user phone numbers in user dbsync syncer\n- Dbsync user sync not running as expected\n- Simple dbsync query order by columns\n- Improve dbsync batch loop limitation\n- Cleanup dbsync log fields\n- Dbsync accounts setting last check\n- Handle duplicate user in dbsync user creation\n- Drop overlapping indexes\n- Duplicate indexes migration\n- Cleanup otel noop module\n- Role deletion not working and add reset role button\n- Dispatches not appearing in map cluster picker list\n- Get colleague using correct user jobs job condition\n- Replace mysql.*Exp(mysql.Raw*()) with mysql.Raw*() directly\n- Move to livemap dispatches_job_JOB layers instead of dispatches_all\n- Hide penalty calc button for documents editor\n- Missing tooltip in penalty calc view\n- Normalize groupsync map\n- Search and replace popover result view\n- Penalty calculator view showing alert box\n\n\u003C!-- generated by git-cliff -->","2026-03-08T22:35:48Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2026.3.0",{"title":310,"body":311,"date":312,"url":313,"prerelease":56},"v2026.2.0","This version includes changes from v2026.1.3 that had been created to fix module versioning issues.\n\n### 🏗️ Breaking changes\n\n- ESX Compatibility mode has been removed in favor of DBSync.\n\t1. You need to setup the DBSync to query and sync your gameserver's data.\n\t2. Update FiveNet to at least this release.\n\t3. Start up your FiveNet server with the new version\u002Frelease so it runs the latest database migrations.\n \t4. Stop your FiveNet instance and stop the DBSync before continuing.\n\t5. Take a data only (no `CREATE TABLE` statements) dump of the `fivenet_*` database tables.\n\t6. You can use the following queries to migrate ESX data to FiveNet directly:\n\t\t```sql\n\t\t-- Users\n\t\tINSERT INTO `fivenet_user` (\n\t\t    id,\n\t\t    identifier,\n\t\t    `group`,\n\t\t    job,\n\t\t    job_grade,\n\t\t    firstname,\n\t\t    lastname,\n\t\t    dateofbirth,\n\t\t    sex,\n\t\t    height,\n\t\t    phone_number,\n\t\t    disabled,\n\t\t    visum,\n\t\t    playtime,\n\t\t    created_at,\n\t\t    last_seen\n\t\t)\n\t\tSELECT\n\t\t    id,\n\t\t    identifier,\n\t\t    `group`,\n\t\t    job,\n\t\t    job_grade,\n\t\t    firstname,\n\t\t    lastname,\n\t\t    dateofbirth,\n\t\t    sex,\n\t\t    height,\n\t\t    phone_number,\n\t\t    disabled,\n\t\t    visum,\n\t\t    playtime,\n\t\t    created_at,\n\t\t    last_seen\n\t\tFROM `users`;\n\n        -- Licenses\n        INSERT INTO fivenet_licenses (`type`, `label`) SELECT `type`, `label` FROM licenses;\n\t\t-- User Licenses\n\t\tINSERT\n\t\t\tINTO\n\t\t\tfivenet_user_licenses (`user_id`,\n\t\t\t`type`,\n\t\t\t`owner`)\n\t\tSELECT\n\t\t\tu.id,\n\t\t\tul.`type`,\n\t\t\tul.`owner`\n\t\tFROM\n\t\t\tuser_licenses ul\n\t\tINNER JOIN users u ON (u.identifier = ul.`owner`);\n\n\t\t-- Owned Vehicles\n\t\tINSERT INTO `fivenet_owned_vehicles` (`owner`, `user_id`, `job`, `plate`, `model`, `type`)\n\t\tSELECT `owner`, NULL, NULL, `plate`, `model`, `type` FROM `owned_vehicles`;\n\t\t```\n\t7. Run the DBSync and wait for all data (e.g., users, vehicles) to be synced to the FiveNet table (e.g., `fivenet_user`).\n\t8. Now you should be able to restore the data only dump of the `fivenet_*` tables.\n\n- Document Editor now uses Tiptap JSON format (wrapped in a basic Proto message).\n\t- It is recommended to migrate any HTML documents to the JSON format, example command: `fivenet migrations docstojson --dry-run`, when you are sure that the affected documents are correct, run `fivenet migrations docstojson --no-dry-run` to actually apply the migrations.\n\n### 🚀 Features\n\n- Data separation and management design implemented\n- Re-organize and split proto files\n- Cleanup proto messages and structure\n- Update go generated sql models\u002Ftables\n- Improve account editing logic and data separation migrations\n- Add superuser jobs list\n- Add table update logic (adding\u002Fdeleting columns\u002Frows)\n- Add basic limiter role perms and attrs templates\n- Restructure dbsync code\n- Improve jwt token usage on client-side\n- Add cayo perico island livemap app toggle\n- Introduce user jobs sync for multi job systems\n- Add dbsync logic for user phone numbers\n- Create index in dbsync tablemanager\n\n### 🐛 Bug Fixes\n\n- Cleanup oauth2 providers\n- Oauth2 test case\n- Tablemanager and i18n tests after %s -> %q changes\n- Ui inconsistencies and doc post comment error\n- Doc comment editing button not showing\n- Improve access badges format and info shown\n- More translations for fabric editor components\n- Improve impersonation integration with superuser\n- Move impersonating banner to top and make it slimmer\n- Split superuser mode activated\u002Fdeactivated notification\n- Color \"green\" used where it should \"success\" color instead\n- Remove outdated hint\n- Add base html\u002Fcss named colors to sanitizer\n- Doc approval snap date issues and task selection\n- Approval task inbox list\n- Remove debug print log\n- Change housekeeper units comment to FIXME instead of TODO\n- Start replacing typed routes and cleanup content funcs on client-\n- Use user_id for user locations instead of identifier\n- Sql migrations and change test cases as needed\n- Sql testdata\n- Send ErrNoUserInfo when no account is found\n- Add titles to more auth service errors\n- Add missing db conn parameter example and add wip v2 sync api\n- Proto generated clients.ts using wrong import\n- Users sync and add comments count to document meta\n- Improve audit log entry copy text button\n- Jobs pages permissions\n- Citizen activity reason\n- Auth perms check superuser logic\n- Restart notifications stream on superuser mode switch\n- Websocket re-auth logic missing\n- Link chars to account ids on login for now\n- Improve document references and relations tables\n- Update .nuxtrc\n- Cleanup app plugins and update nuxt-update\n- Move cayo perico overlay coords to separate file\n- Split timeclock stats drawer into separate component\n- Correct cluster picker hidden marker count\n- Add missing icons for document approval feature\n- Typecheck complaints\n- Js jwt tests\n- Issues with user licenses and jobs sync\n- Update dbsync example config\n- Move sync api details to separate struct in config\n- Grpc transport insecure logic\n- Document relations by default including documens the user created\n- Comment count display in doc view\n- Calendar creation issue and add all day events\n- Nil issue in dbsync\n- Issues with docs not having a meta entry\n- Add sync getstatus call on start\n- Log synced count\n- Dbsync subtract from last check time to prevent data loss\n- Livemap overlays not included in images\n- Dbsync tablemanager test case\n- Update livemap tiles submodule\n- Add apple-touch-icon to rel entries\n- Filestore admin file list\n- Dbsync tablemanager test case failure\n- Get mysql image for tests from docker-compose.dev.yaml\n\n\u003C!-- generated by git-cliff -->","2026-02-16T17:27:48Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2026.2.0",{"title":315,"body":316,"date":317,"url":318,"prerelease":56},"v2026.1.2","### 🐛 Bug Fixes\n\n- Content type enum sql issue\n\n\u003C!-- generated by git-cliff -->","2026-01-18T21:05:34Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2026.1.2",{"title":320,"body":321,"date":322,"url":323,"prerelease":56},"v2026.1.1","### 🐛 Bug Fixes\n\n- Git release notes showing wrong version\n- Http server always returning 400\n- Api routes grouping\n\n\u003C!-- generated by git-cliff -->","2026-01-18T15:06:39Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2026.1.1",{"title":325,"body":326,"date":327,"url":328,"prerelease":56},"v2026.1.0","# Changelog\n\nAll notable changes to this project will be documented in this file.\n\n## [2025.12.0] - 2026-01-17\n\n### 🚀 Features\n\n- Add aligning guidelines to fabric\n- Add copy debug info button\n- Add registered since time to account info\n- Migrate html json legacy to tiptap json format\n- Add \"focus\" mode (highlight current block) to tiptap\n- Add notification for editor file upload\n- Dbsync service arguments and added status command\n- Add basic data mode structure\n- Add timeclock entry generation to demo data\n- Image proxy + iconify api always enabled\n- Add v-model to fabricjs editor component\n- Add basics for config validation and image proxy minimum cache\n\n### 🐛 Bug Fixes\n\n- Wiki page toc not showing correctly and cleanup path logic\n- Doc relation and reference addition\u002Fremoval not working\n- Penalty calculator warning not respecting new lines\n- Port filesystem storage and wrapper changes from feature branch\n- Implement tiptap json for more editors\n- Continue work on implementing new tiptap json content format\n- Filesystem storage test issues\n- Fixup issues caused by switch to tiptap json format\n- Editor version diff\u002Fhistory modal\n- Content detection in content query logic\n- Dbsync config loading\n- Dbsync not adding database config to base config\n- Dbsync applying migrations due to table manager\n- Dbsync query issues with \"empty\" conditions\n- Dbsync jobs query issues\n- Allow columns to be disabled in dbsync\n- Dbsync sql not ignoring columns\n- Add missing dbsync started log message\n- Dbsync jobs filter causing out of bounds\n- UseLogger prefix type check\n- Improve dbsync table manager\n- Fx opts issue caused by dbsync module changes\n- Update fx modules ordering\n- Add missing tests-js makefile target\n- Add fx modules and re-order in list\n- Change dbsync stream \"dropped\" to warn\n- Test issues caused by recent db migrations\n- Add char limits to editors\n- Show timeclock entries regardless of user's actual job as long as\n- Approval signatures getting inserted with \"different\" snapshot date\n- Return document meta with ListApprovalPolicies response\n- Update eslint config to ignore no multiple template root errors\n- Broken image url\n- Backend filestore routing and change some modals to drawers\n- Issues with job logo and switch to rounded-md for avatars\n- Center document state and approved badges in doc list\n- Add line-clamp to qualification tutor list comment and summary\n- Qualifications toolbar missing classes\n- Start fixing button colors and improve template selection\n- Switch to xsync map All() in favor of Range() with funcs\n\n### ⚙️ Miscellaneous Tasks\n\n- Remove container-build step in favor of matrix container build\n\n\u003C!-- generated by git-cliff -->","2026-01-17T22:55:37Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2026.1.0",{"title":330,"body":331,"date":332,"url":333,"prerelease":56},"v2025.12.0","# Changelog\n\nAll notable changes to this project will be documented in this file.\n\n## [2025.11.0] - 2025-12-30\n\n### 🏗️ Breaking changes\n\n- Add otelsql breaking changes\n\n### 🚀 Features\n\n- Add duplicate validation for access entries\n- Continue document layouts work\n- Use fabricjs to create a svg editor\n- Rename layouts pages to forms\n- Add basic page structure for forms\n- Add wip curved text to fabric editor\n- Add toggle to disable event effects in user settings\n- Add snow (event) effect to all layouts\n- Implement notepad saving and auto save\n- Add kbd shortcut to clipboard modal\n- Add licenses for images\u002Ficons, fonts and update sounds\n\n### 🐛 Bug Fixes\n\n- Access entry issues and centrum sidebar unit header\n- Adjust duplicate access entry warning texts\n- Some ui logic issues\n- Add hint for snow\u002Fholiday effect user settings toggle\n- Jobs conduct deletion and restore not working as expected\n- Disable notepad feature (still WIP)\n- Remove .env.example\n- Dashboard shortcuts not working and finalize notepad\n- History store not correctly storing entries\n- Editor source code textarea height not fitting to modal\n- Re-gen proto gen files and show mathcalculator for all users\n- Remove mathcalculator quickbutton\n- Quickbuttons type issue caused by changes\n- Job props proto unmarshal issue\n- Fabric editor sidebar type issues\n- Use links for templates in templates list page\n- Ui job access check not using creatorJob override as expected\n- Cleanup some log calls\n\n\u003C!-- generated by git-cliff -->","2025-12-30T17:18:49Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2025.12.0",{"title":335,"body":336,"date":337,"url":338,"prerelease":56},"v2025.11.0","### 🚀 Features\n\n- Add follow user location to livemap user marker\n- Add livemap \"smart select\" for when a lot of markers are at the\n- Replace nanoid with crypto.randomUUID in format builder\n- Add document self approve option for approval policies\n- Add self approve allowed to approval ui elements\n- Hide markers of invisible layers in multi select picker\n- Update to nuxt 4.2.1 and nuxt ui 4.1.0\n- Improve math and penalty calculator logic\n- Query builder using columns + table name for dbsync\n- Cleanup app config structure and approval calculation logic\n- Add more tests to utils functions\n- Add penalty calculator settings and warn message with thresholds\n\n### 🐛 Bug Fixes\n\n- Remove approval service todo comment\n- Generic img disabled style when popover is disabled\n- Calendar access check\n- Approval policy creation issue from template data\n- User marker self follow and unmarshal in userinfo retriever\n- Notification stream not being started anymore\n- Change livemap multi hit group order\n- Livemap single marker not showing popup anymore\n- Allow log level toggle in debug info for anyone\n- Remove unused vars from debug info\n- Jsdoc comments in stores and fine grained livemap subject filters\n- Go format issues\n- Missing wiki page activity translation and traffic points modal\n- Citizens actions double sidebar issue\n- Notification list html ui structure\n- Don't compile i18n vars replacement regex every call\n- Qualification tutor view user search\n- Add missing filters logic for users job\n- Change self approve default value of table column\n- Improve config structs to avoid duplication in dbsync\n- Timestamp\u002Fdatetime mixup\n- Approval time\u002Ftimestamp insert\n- Add renamed components\n- Cleanup type issues and add basic penaltycalculator config\n- Remove leftover generated file\n- Livemap centrum sidebar issue on small screens\n- Pinned list sizing and showing when it should be closed\n- Livemap centrum sidebar showing when it shouldn't\n- Check can stream to centrum sidebar\n- Update css path for prettier plugin\n- Format app files\n- Bump helm chart version\n- Add additional indexes for user locations table\n- Import issue caused by utils import usage\n- Add missing description text to penalty calculator app config\n- Use intl format options for more number inputs\n- Unused trailing-icon attribute\n\n\u003C!-- generated by git-cliff -->","2025-11-30T00:33:03Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2025.11.0",{"title":340,"body":341,"date":342,"url":343,"prerelease":56},"v2025.10.2","# Changelog\n\nAll notable changes to this project will be documented in this file.\n\n## [2025.10.1] - 2025-10-24\n\n### 🐛 Bug Fixes\n\n- Aliased permissions appearing and type issues\n- Approval recalculation and badges in ui\n\n\u003C!-- generated by git-cliff -->","2025-10-24T19:13:39Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2025.10.2",{"title":345,"body":346,"date":347,"url":348,"prerelease":56},"v2025.10.1","# Changelog\n\nAll notable changes to this project will be documented in this file.\n\n## [2025.10.0] - 2025-10-24\n\n### 🚀 Features\n\n- Add toggle all layers button to livemap controls\n- Add content nav to wiki smaller screens\n- Add option to use unit color for user marker icon\n- Allow multiple root wiki pages and improve wiki nav ui\n- Add file list to wiki page view\n\n### 🐛 Bug Fixes\n\n- Document approved state calculation\n- Approval badge showing in ui when it shouldn't\n- Approval policy template form issue\n- Pagination and sorting issues\n- Doc deletion error and wiki root only acces check\n- Tiptap editor table popover and add link display\n- Remove signature-related columns and fields\n- Wiki root only page listing using wrong page\n- Wiki page list not showing all accessible pages\n- Wiki startpage selection not ordering by parent id nulls first\n- Remove debug output from list pages in wiki\n- Citizen user docs sorting not working\n- Select menu search not working due to key\n- Citizen vehicles list showing all vehicles and qol fixes\n- Vehicle list user id override\n- Document template not creating policy on publish\n- Livemap layer issue with users\n- Unit housekeeping for unavailable not adding unit data to status\n- Editor font selection showing untranslated value\n- Grpc permission interceptor test\n- Approval data not showing in template editor\n- Wiki nav showing dummy page\n- Permission multiple names screw up\n- Perms cleanup migration\n- Remove test json file\n- Update helm version in channels file\n\n### ⚙️ Miscellaneous Tasks\n\n- Remove lucide icon pack\n\n\u003C!-- generated by git-cliff -->","2025-10-24T16:09:11Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2025.10.1",{"title":350,"body":351,"date":352,"url":353,"prerelease":56},"v2025.10.0","### 🚀 Features\n\n- Major refinement of the **documents approval and signature system**  \n  (merged signatures into approvals, added expiration, improved UI\u002FUX, and created approval\u002Fsigning tasks inbox)\n- Added **navigation menu** with new document pages and filters for jobs and user’s job\n- Revamped **audit log system** using gRPC interceptor and added related activity entries\n- Added **permissions order and icons**, plus title toggle in document view\n- Enhanced **dbsync configuration** and validation (filters, access checks, load logic)\n- Added **approvals to templates** and refined related API\u002Fservice behaviors\n- Improved **editor performance** by optimizing toolbar state handling\n- Improved **FiveM NUI\u002FCEF browser compatibility** (styling, transparency, and color handling)\n- Added **basic jobs access validation**\n- Removed unused **layout code** and internal debug output\n\n### 🐛 Bug Fixes\n\n- Fixed multiple **approval\u002Fsigning migration** issues (cascade, duplicate queries, ordering)\n- Resolved **document deletion reason** field causing permission errors\n- Fixed **Tiptap editor** validation and computed error handling\n- Corrected **template HTML entity escaping** (Go HTML template compatibility)\n- Fixed **wiki pages** issues (pagination, logo visibility, access checks, grid layout)\n- Addressed **CEF 103 BYOB reader pagination** and **clipboard API** compatibility problems\n- Fixed **dispatch sidebar** rendering and **livemap superuser** logic\n- Corrected **MySQL helper\u002Fmigration typos** and improved `dbutils` package\n- Fixed various **UI inconsistencies** (task drawers, colors, labels, and design polish)\n\n\u003C!-- generated by git-cliff -->","2025-10-19T18:58:51Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2025.10.0",{"title":355,"body":356,"date":357,"url":358,"prerelease":56},"v2025.9.1","# Changelog\n\nAll notable changes to this project will be documented in this file.\n\n## [2025.9.0] - 2025-09-19\n\n### 🐛 Bug Fixes\n\n- Update channels.json stable appVersion\n- Qualifications access check in list queries\n- Id badge showing 0 in qualification view on error\n- New EXISTS based access checks\n- Remove debug output from list qualifications method\n- Adjust calendar list buttons\n- Qualification requirements not being deleted and exam issues\n- Discord absent command register issue\n- Documents request drawer being full width and not constrained\n- Dispatch list padding\n- Center time and status badge in dispatch table\n- Increase badge size in dispatch list\n\n\u003C!-- generated by git-cliff -->","2025-09-19T20:18:30Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2025.9.1",{"title":360,"body":361,"date":362,"url":363,"prerelease":56},"v2025.9.0","# Changelog\r\n\r\nAll notable changes to this project will be documented in this file.\r\n\r\n## [2025.8.1] - 2025-09-19\r\n\r\n### 🚀 Features\r\n\r\n- Add service management to dbsync command\r\n- Improve multi job dispatch creation\r\n- Use forked go-grpc-middleware lib to fix log fields missing\r\n- Add golangci-lint and resolve many issues\r\n- Protogetter fixes causing wrong data to be inserted\r\n- Move from uint64 to int64 in API\u002Fproto types\r\n- Add drag handle to tiptap editor\r\n- Use dashboard section for settings index\r\n- Improve multi-job dispatch handling\r\n- Cleanup multi-job dispatch handling\r\n- Show profile picture of dispatchers\r\n- Add max reminder count to document workflow state\r\n- Finalize public job list api for dispatch creation\r\n- Use big.js instead of eval for the math calculator quick button\r\n- Add file logging with rotation\r\n- Work through first part of migrations for nuxt ui v3\r\n- Pagination is now a list and more changes\r\n- Continue upgrade to nuxt ui v3\r\n- Continue reworking design to fit nuxt ui v3\r\n- Continue refining design to work with nuxt v3\r\n- Use go-dateparser to parse discord bot command date\r\n- Use ServiceOptions for permify proto generation\r\n- Improve document listing performance\r\n- Add job props and roles to sidebar settings item\r\n- Switch to galexrt\u002Ficonify-go pkg for simpler caching\r\n- Add qualification editor exam form validation\r\n- Copy and modify insecure credentials level for insecure grpc\r\n- Add basic central display locale settings\r\n- Use proto extension options for dbscanner and sanitizer\r\n\r\n### 🐛 Bug Fixes\r\n\r\n- Remove duplicated image extension component\r\n- Adjust dispatch target jobs select menu condition\r\n- Use different context for notification consumer deletion\r\n- Log collab room consumer deletion error\r\n- Cleanup for idle dispatches and unit pings for housekeeper\r\n- Switch trace attributes to log InjectFields\r\n- Add missing help text to filestore migrations subcommand\r\n- Attempt to fix context deadline issues caused by leader election\r\n- Grpc websocket tests caused by renames\r\n- Missing claim\u002Fuser info when userinfo retrieval fails\r\n- Start work on nestif linter complaints\r\n- More gosec fixess\r\n- Last gosec complaints\r\n- Polish multi job dispatch ui logic\r\n- Dispatchers not having job label properly set\r\n- Nil issue in centrum settings access logic\r\n- De locale file formatting\r\n- Ignore logger sync error\r\n- Transition warn issue\r\n- Continue fixing design issues caused by nuxt ui v3\r\n- Design issues caused by nuxt v3 upgrade\r\n- Design issues caused by nuxt v3 upgrade\r\n- Continue fixing ui upgrade issues\r\n- Continue fixing design issues caused by nuxt ui v3 upgrade\r\n- Continue fixing design issues caused by nuxt ui upgrade\r\n- Ui issues caused by nuxt ui v3 upgrade\r\n- Adjust ui based on changes caused by nuxt ui v3 upgrade\r\n- Move find calendar modal to drawer\r\n- Wrong context used for errgroup groups\r\n- Use errgroup for sync service stream with context\r\n- Use latitude\u002Flongtitude short form for screens smaller than lg\r\n- Use 3 seconds for jetstream fetch max wait\r\n- Protoc svcs ts list listing all proto files\r\n- Personal document pin color not changing\r\n- Import type lint issue\r\n- Container build issue caused by nuxt\u002Fcontent upgrade\r\n- Lru cache tests\r\n- Adjust unique id tiptap extension\r\n- Oklch color issue in fivem nui (cef v103)\r\n- Document list entry padding\r\n- Cleanup component names\r\n- Intermittent superuser job changing issue\r\n- Activity feed text color\r\n- Tweak template padding\u002Fmargin differences\r\n- Input fields, editor issues and improve template view + editor\r\n- Tailwindcss v4 color issue due to oklch and fivem nui cef v103\r\n- Improve dbsync cli logging\r\n- Users dbsync offsset not changing\r\n- Found design padding and ux issues\r\n- Sql_mode ONLY_FULL_GROUP_BY issue with group_by\r\n- Add no data block to join unit slideover\r\n- Improve zod error handling in search forms\r\n- Filestore list not having prefix search\r\n- Cleanup UFileUpload attrs orders a bit\r\n- Leftover type and lint issues\r\n- Timeclock list full order by sql_mode issue\r\n- Removed ANY_VALUE, not available in Mariadb\r\n- Improve livemap layer selector on small screens\r\n- Cleanup divide to use default color\r\n- Cleanup utils and shared types folders\r\n- Rely on itemslen proto interceptor where used\r\n- Remove \"true\" value from boolean attrs and fix dashboard panels\r\n- Exam auto grade translation warning\r\n- Exam editor auto grade default value\r\n- Remove debug sql outputs\r\n- Improve tutor view list paddings and margins\r\n- Improve qualifications lists footer padding\r\n- Iconify server issues and icon select menu\r\n- Rename RequestModal to RequestDrawer\r\n- Clone retrieved userinfo object\r\n- Override renovate bot schedule\r\n\r\n### ⚙️ Miscellaneous Tasks\r\n\r\n- Remove internet feature for future revival\r\n- Rename jet package usages to mysql\r\n\r\n\u003C!-- generated by git-cliff -->","2025-09-19T11:57:46Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2025.9.0",{"title":365,"body":366,"date":367,"url":368,"prerelease":56},"v2025.8.1","# Changelog\n\nAll notable changes to this project will be documented in this file.\n\n## [2025.8.0] - 2025-08-07\n\n\u003C!-- generated by git-cliff -->","2025-08-07T19:18:50Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2025.8.1",{"title":370,"body":371,"date":372,"url":373,"prerelease":56},"v2025.8.0","# Changelog\n\nAll notable changes to this project will be documented in this file.\n\n## [2025.7.1] - 2025-08-07\n\n### 🚀 Features\n\n- Add option to ignore empty names to users dbsync\n- Add basic system status info to settings page\n- Add last char id for dbsync api\n- Update tiptap to v3.0.7\n- Update nuxt i18n\n- Switch to useLazy*Data `status` instead of `pending`\n- Move auth server and grpc auth errors to separate package\n- Refresh user info on character choose\n- Add basic update check and last seen dbsync version\n- Add \"internal\" iconify api to make hosting fivenet easier\n\n### 🐛 Bug Fixes\n\n- Release channel update for release builds\n- Manually bump channels.json due to ci error\n- Banner message validation\n- Update release channels from develop branch only\n- Tweak dockerignore\n- Nil pointer due to reqs\n- Db reqs error message\n- Db reqs nil pointer\n- System status dbsync showing on wrong condition\n- Update dbsync example config vehicles columns\n- Update release channels\n- Types not being included correctly\n- Tiptap editor duplicate extensions\n- Mock userinfo retriever missing function\n- Bump fivenet chart to 0.20.1\n- Improve client app config error handling\n\n\u003C!-- generated by git-cliff -->","2025-08-07T19:06:08Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2025.8.0",{"title":375,"body":376,"date":377,"url":378,"prerelease":56},"v2025.7.1","# Changelog\r\n\r\nAll notable changes to this project will be documented in this file.\r\n\r\n## [2025.7.0] - 2025-07-17\r\n\r\n### 🚀 Features\r\n\r\n- Add release channels.json file\r\n- Add config option to disable database locking during migrations\r\n- Set transaction isolation to REPEATABLE READ when locking is disasbled\r\n\r\n### 🐛 Bug Fixes\r\n\r\n- Channel update issue\r\n- Use reuseable workflow directly for channel update\r\n- Update channel flow not working due to a needs list\r\n- Update-channel not invoking update channel script\r\n- Update-channel script name\r\n- Sestting dsn transaction_isolation level\r\n- Tweak transaction isolation dsn\r\n- Db dsn test\r\n- Tools db up command\r\n- Older migration causing issues with clustered dbs\r\n- Internet basse up feature migrations","2025-07-17T12:04:23Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2025.7.1",{"title":380,"body":381,"date":382,"url":383,"prerelease":56},"v2025.7.0","# Changelog\n\nAll notable changes to this project will be documented in this file.\n\n## [2025.6.5] - 2025-07-15\n\n### 🚀 Features\n\n- Add icon field to units\n- Display unit icon as user marker icon\n- Add vehicles activity proto messages\n- Use function to calculate pagination offset and cleanup creator\n- Add storage space usage metrics\n- Increase exam questions to 100\n- Add draggable tooltip to vue-draggable icon indicators\n- Add arrow controls for draggables and fix answer fields for exam\n- Conversion of single to multiple and reverse on question type\n- Add creds file nats connect option\n- Add missing apis for vehicle props\n- Refine vehicless properties ui\n- Add active user sessions metric\n\n### 🐛 Bug Fixes\n\n- Unregister notifications consumers via defer for now\n- Missing nats stream\u002Fkv descriptions\n- Lru cache janitor interval\n- Prevent lru cache to be copied\n- Adjust anypb empty state creation\n- Collab rooms consumer's being revived\n- Collab room consumer name being \"wrong\"\n- Tweak cron data logic\n- Housekeper dispatches attributes nil panic\n- Load dispatches housekeeper nil panic\n- Cron attributes anypb usage\n- Adjust timing for removal of dispatches from kv\n- Cron data nil issue\n- Delete old dispatches from kv id\u002Fkey logic\n- Nats store warpper using * instead of >\n- Add info log to leadelection start call\n- Filestore housekeeper setting \"loaded_dispatches\" as attribute\n- Tracker manager tests\n- Tracker manager test by adding last missing dep\n- Use embed funcs for cron data wrapping\n- Rewrite leader election logic to be more resilient\n- Access manager issue when id is 0 and reimplement enhanced image\n- Buf validate ignore uses in users.proto\n- Access entries containing user data that might be invalid\n- Cron data marshal\u002Funmarshal in other cron jobs\n- Collab state kv name and disabled state for editor image popover\n- Improve grpcws limits\n- Collab client room id keys\n- Collab deleting wrong old kv\n- Old collab state kv name\n- Yjs sync for secondary clients\n- Colleague activity not setting colleage when prop is set\n- Colleague profile activity showing all activity\n- Import lint issue and add font-family regex to htmlsanitizer\n- Yjs sync issues on reconnect\n- Collab disconnect not happening correctly\n- Reduce leaderelection log spam\n- Base64 encode image urls in sanitizer for image proxy\n- Centrum access up sql migration\n- Storage metrics collector missing from fx\n- Add random delay to storage metrics colletor\n- Register storage metric only when enabled\n- Leaderelection not started for metrics collector\n- Metrics collector not having storage set\n- Conduct update of type and create\u002Fupdate status select not using\n- Increase exam question limit in ui\n- Qualification tutor answer issues\n- Vehicle info layout when empty\n- License plate width for bigger screens\n\n\u003C!-- generated by git-cliff -->","2025-07-15T19:24:34Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2025.7.0",{"title":385,"body":386,"date":387,"url":388,"prerelease":56},"v2025.6.5","# Changelog\n\nAll notable changes to this project will be documented in this file.\n\n## [2025.6.4] - 2025-06-27\n\n### 🚀 Features\n\n- Upgrade nats locks system to use per key ttls\n- Improve centrum housekeeper logic\n- Improve dispatch deduping and add dedupe settings\n\n### 🐛 Bug Fixes\n\n- Access attribute names\n- Remove debug log\n- Dispatch layer job grouping issue\n- Remove unused ref\n- Add missing jobs check to list dispatches\n- Migration for mariadb\n- Skip of mariadb incompatible json index\n- Disable locsk for job id mapping stores\n- Switch centrum housekeeper to a more event-based approach\n- App config from being incorrectly read in client due to json tags\n- German document title notifications showing \\\" as a result\n- Document not closing on toggle and missing object events\n- Centrum dispatches jobs migration for good\n- Correct italic usage in draft pages and qualifications\n\n\u003C!-- generated by git-cliff -->","2025-06-27T16:14:40Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2025.6.5",{"title":390,"body":391,"date":392,"url":393,"prerelease":56},"v2025.6.4","# Changelog\r\n\r\nAll notable changes to this project will be documented in this file.\r\n\r\n## [2025.6.3] - 2025-06-24\r\n\r\n### 🐛 Bug Fixes\r\n\r\n- Switch to leader election for cron scheduler and add nats\r\n\r\n\u003C!-- generated by git-cliff -->","2025-06-24T19:00:04Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2025.6.4",{"title":395,"body":396,"date":397,"url":398,"prerelease":56},"v2025.6.3","# Changelog\n\nAll notable changes to this project will be documented in this file.\n\n## [2025.6.2] - 2025-06-21\n\n### 🚀 Features\n\n- Make client app config into protobuf messages and add client view\n\n### 🐛 Bug Fixes\n\n- Filestore migration command skipping every job logo after one\n- Template clipboard selection for more than one with max spec\n- Add log to tiptap editor sync event\n- Adjust yjs content set logic and add context menu for calendar\n\n\u003C!-- generated by git-cliff -->","2025-06-21T11:00:53Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2025.6.3",{"title":400,"body":401,"date":402,"url":403,"prerelease":56},"v2025.6.1","# Changelog\r\n\r\nAll notable changes to this project will be documented in this file.\r\n\r\n## [2025.5.5] to [2025.6.1] - 2025-06-07\r\n\r\n### 🚀 Features\r\n\r\n- Add collab editor to wiki pages\r\n- Add filestore migrations command and cleanup otlp usage\r\n- Add auto grading to qualifications\r\n- Store discord user token for guild list and other functionality in\r\n\r\n### 🐛 Bug Fixes\r\n\r\n- Perms events issues by reducing amount of events\r\n- Db migrations using \"wrong\" fivenet_users table when esxcompat\r\n- Oauth2 tokens migration\r\n- Image inserted as base64 when file upload is enabled and other\r\n\r\n### ⚙️ Miscellaneous Tasks\r\n\r\n- Improve github actions image buid by using arm64 runner for arm64\r\n\r\n\u003C!-- generated by git-cliff -->","2025-06-08T12:15:01Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2025.6.1",{"title":405,"body":406,"date":407,"url":408,"prerelease":56},"v2025.6.0","# Changelog\n\nAll notable changes to this project will be documented in this file.\n\n## [2025.5.5] - 2025-06-07\n\n\u003C!-- generated by git-cliff -->","2025-06-07T19:09:59Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2025.6.0",{"title":410,"body":411,"date":412,"url":413,"prerelease":56},"v2025.5.5","# Changelog\n\nAll notable changes to this project will be documented in this file.\n\n## [2025.5.4] - 2025-05-29\n\n### 🐛 Fixes\n\n- Perms events issues by reducing amount of events\n\n\u003C!-- generated by git-cliff -->","2025-05-29T00:43:27Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2025.5.5",{"title":415,"body":416,"date":417,"url":418,"prerelease":56},"v2025.5.4","# Changelog\n\nAll notable changes to this project will be documented in this file.\n\n\u003C!-- generated by git-cliff -->","2025-05-28T21:26:52Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2025.5.4",{"title":420,"body":421,"date":422,"url":423,"prerelease":56},"v2025.5.3","# Changelog\r\n\r\nAll notable changes to this project will be documented in this file.\r\n\r\n## [2025.5.2] - 2025-05-24\r\n\r\n### 🏗️ Breaking changes\r\n\r\n- Removed Body Checkup Quick Button\r\n- \"User Settings\" have been moved to `\u002Fuser-settings` URL to not overlap with the `\u002Fsettings\u002F...` pages (previously named `\u002Frector\u002F...)`\r\n\r\n### ⚙️ Miscellaneous Tasks\r\n\r\n- Improved banner message handling on client and server side\r\n- Fix release-it issue with git-cliff caused by fetch-depth in\r\n- Fix Colleague Activity not being correctly queried\r\n\r\n\u003C!-- generated by git-cliff -->","2025-05-24T22:05:41Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2025.5.3",{"title":425,"body":426,"date":427,"url":428,"prerelease":56},"v2025.5.2","## [2025.5.2] - 2025-05-24\r\n\r\n### **Important Notes**\r\n\r\n**Take a backup of your FiveNet database! This update changes the database structure quite a bit.**\r\n\r\n1. Make sure to stop all FiveNet components.\r\n2. Clear the NATS key value stores with this command (if you use this NATS for more than FiveNet, you need to edit the command to only delete the key value stores of FiveNet):\r\n\t```shell\r\n\tnats kv ls -n | xargs -n 1 nats kv del --force\r\n\t```\r\n3. Now you can start the FiveNet server and other components (e.g., worker) again.\r\n4. In the FiveNet app config, update the default permissions, to update\u002Fadd permissions you can use this list of permissions [here](https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Fblob\u002Fmain\u002Fgen\u002Fts\u002Fperms.ts#L103).\r\n\r\n### Should you run into database migration issues, read this\r\n\r\nPlease save the container logs and [open an issue](https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Fissues\u002Fnew?template=bug_report.md) so we can figure out what went wrong and how to fix it.\r\n\r\n### 🐛 Fixes\r\n\r\n- Add validation for negative value\u002Fvalid value in job grade list\r\n- Document view issues caused by content rendered nuxtimg component\r\n- Sync api error handling improvements\r\n- Issues with html nuxtimg tag and citizen documents list\r\n\r\n### 🚀 Features\r\n\r\n- Add basic `fivenet tools sync status` subcommand\r\n- Use NuxtImg for lazy loading images\r\n- Rework index page\r\n- Add custom i18n logic for backend\r\n- Citizen documents improvements\r\n- Cleanup naming schema of apis, perms and more\r\n\r\n### 📚 Documentation\r\n\r\n- Add github issues templates","2025-05-24T19:40:21Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2025.5.2",{"title":430,"body":431,"date":432,"url":433,"prerelease":56},"v2025.5.1","# Changelog\n\nAll notable changes to this project will be documented in this file.\n\n## [2025.5.0] - 2025-05-10\n\n### 🐛 Fixes\n\n- Add missing restore button to document categories modal\n\n\u003C!-- generated by git-cliff -->","2025-05-10T15:44:18Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2025.5.1",{"title":435,"body":436,"date":437,"url":438,"prerelease":56},"v2025.5.0","# Changelog\n\nAll notable changes to this project will be documented in this file.\n\n## [2025.4.8] - 2025-05-09\n\n### 🐛 Fixes\n\n- Use github pat for release-it checkout\n\n\u003C!-- generated by git-cliff -->","2025-05-09T20:03:27Z","https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Freleases\u002Ftag\u002Fv2025.5.0",{"data":440,"body":441},{},{"type":442,"children":443},"root",[444,453,509,515],{"type":445,"tag":446,"props":447,"children":449},"element","h3",{"id":448},"features",[450],{"type":451,"value":452},"text","🚀 Features",{"type":445,"tag":454,"props":455,"children":456},"ul",{},[457,469,479,489,499],{"type":445,"tag":458,"props":459,"children":460},"li",{},[461,467],{"type":445,"tag":462,"props":463,"children":464},"em",{},[465],{"type":451,"value":466},"(jobs)",{"type":451,"value":468}," Paginate group item endpoints",{"type":445,"tag":458,"props":470,"children":471},{},[472,477],{"type":445,"tag":462,"props":473,"children":474},{},[475],{"type":451,"value":476},"(centrum)",{"type":451,"value":478}," Remove splitpanes for nuxt ui Splitter components and add",{"type":445,"tag":458,"props":480,"children":481},{},[482,487],{"type":445,"tag":462,"props":483,"children":484},{},[485],{"type":451,"value":486},"(ci)",{"type":451,"value":488}," Generate go test coverage, add action summary and pr comment",{"type":445,"tag":458,"props":490,"children":491},{},[492,497],{"type":445,"tag":462,"props":493,"children":494},{},[495],{"type":451,"value":496},"(dispatch)",{"type":451,"value":498}," Add four-way centrum sidebar placement",{"type":445,"tag":458,"props":500,"children":501},{},[502,507],{"type":445,"tag":462,"props":503,"children":504},{},[505],{"type":451,"value":506},"(calendar)",{"type":451,"value":508}," Add icon to calendar and entries",{"type":445,"tag":446,"props":510,"children":512},{"id":511},"bug-fixes",[513],{"type":451,"value":514},"🐛 Bug Fixes",{"type":445,"tag":454,"props":516,"children":517},{},[518,528,538,548,558,567,577,586,596,601,611,616,626,636,646,656,665,675,685,694,704,713,723,732],{"type":445,"tag":458,"props":519,"children":520},{},[521,526],{"type":445,"tag":462,"props":522,"children":523},{},[524],{"type":451,"value":525},"(errors)",{"type":451,"value":527}," Adjust error wrap to use dot instead of colon",{"type":445,"tag":458,"props":529,"children":530},{},[531,536],{"type":445,"tag":462,"props":532,"children":533},{},[534],{"type":451,"value":535},"(container)",{"type":451,"value":537}," Install pkgconfig in node build step",{"type":445,"tag":458,"props":539,"children":540},{},[541,546],{"type":445,"tag":462,"props":542,"children":543},{},[544],{"type":451,"value":545},"(discord)",{"type":451,"value":547}," Calendar reminder using wrong icon url for job props logos",{"type":445,"tag":458,"props":549,"children":550},{},[551,556],{"type":445,"tag":462,"props":552,"children":553},{},[554],{"type":451,"value":555},"(app)",{"type":451,"value":557}," Improve superuser job toggle for collapsed sidebar",{"type":445,"tag":458,"props":559,"children":560},{},[561,565],{"type":445,"tag":462,"props":562,"children":563},{},[564],{"type":451,"value":545},{"type":451,"value":566}," Update job logo filestore URL expectations",{"type":445,"tag":458,"props":568,"children":569},{},[570,575],{"type":445,"tag":462,"props":571,"children":572},{},[573],{"type":451,"value":574},"(sanitizer)",{"type":451,"value":576}," Issue with oneof message sanitize calls",{"type":445,"tag":458,"props":578,"children":579},{},[580,584],{"type":445,"tag":462,"props":581,"children":582},{},[583],{"type":451,"value":466},{"type":451,"value":585}," Use itemslen instead of \"manual\" pagination update for group",{"type":445,"tag":458,"props":587,"children":588},{},[589,594],{"type":445,"tag":462,"props":590,"children":591},{},[592],{"type":451,"value":593},"(citizens)",{"type":451,"value":595}," Add blocked label access level",{"type":445,"tag":458,"props":597,"children":598},{},[599],{"type":451,"value":600},"Remove\u002Freplace db and acl subject FIXME comments",{"type":445,"tag":458,"props":602,"children":603},{},[604,609],{"type":445,"tag":462,"props":605,"children":606},{},[607],{"type":451,"value":608},"(documents)",{"type":451,"value":610}," Block status toggle in editor if no perms",{"type":445,"tag":458,"props":612,"children":613},{},[614],{"type":451,"value":615},"Lint issue and make demo text suffix for job activity entries",{"type":445,"tag":458,"props":617,"children":618},{},[619,624],{"type":445,"tag":462,"props":620,"children":621},{},[622],{"type":451,"value":623},"(demo)",{"type":451,"value":625}," Improve demo system banner message format",{"type":445,"tag":458,"props":627,"children":628},{},[629,634],{"type":445,"tag":462,"props":630,"children":631},{},[632],{"type":451,"value":633},"(livemap)",{"type":451,"value":635}," Layout popover spacing",{"type":445,"tag":458,"props":637,"children":638},{},[639,644],{"type":445,"tag":462,"props":640,"children":641},{},[642],{"type":451,"value":643},"(nats)",{"type":451,"value":645}," Use different context for store start",{"type":445,"tag":458,"props":647,"children":648},{},[649,654],{"type":445,"tag":462,"props":650,"children":651},{},[652],{"type":451,"value":653},"(sync)",{"type":451,"value":655}," Actually return marker created at date",{"type":445,"tag":458,"props":657,"children":658},{},[659,663],{"type":445,"tag":462,"props":660,"children":661},{},[662],{"type":451,"value":633},{"type":451,"value":664}," Markers transition time being wrong in style",{"type":445,"tag":458,"props":666,"children":667},{},[668,673],{"type":445,"tag":462,"props":669,"children":670},{},[671],{"type":451,"value":672},"(user)",{"type":451,"value":674}," Remove user\u002Fchar group column",{"type":445,"tag":458,"props":676,"children":677},{},[678,683],{"type":445,"tag":462,"props":679,"children":680},{},[681],{"type":451,"value":682},"(tests)",{"type":451,"value":684}," Base data issue due to column removal",{"type":445,"tag":458,"props":686,"children":687},{},[688,692],{"type":445,"tag":462,"props":689,"children":690},{},[691],{"type":451,"value":623},{"type":451,"value":693}," Duplicate calendar creation",{"type":445,"tag":458,"props":695,"children":696},{},[697,702],{"type":445,"tag":462,"props":698,"children":699},{},[700],{"type":451,"value":701},"(mailer)",{"type":451,"value":703}," Settings signature insert query test",{"type":445,"tag":458,"props":705,"children":706},{},[707,711],{"type":445,"tag":462,"props":708,"children":709},{},[710],{"type":451,"value":643},{"type":451,"value":712}," Ignore invalid subscription on cancel\u002Fstop",{"type":445,"tag":458,"props":714,"children":715},{},[716,721],{"type":445,"tag":462,"props":717,"children":718},{},[719],{"type":451,"value":720},"(tracker)",{"type":451,"value":722}," Using user group column in test query",{"type":445,"tag":458,"props":724,"children":725},{},[726,730],{"type":445,"tag":462,"props":727,"children":728},{},[729],{"type":451,"value":720},{"type":451,"value":731}," Manager test case",{"type":445,"tag":458,"props":733,"children":734},{},[735,739],{"type":445,"tag":462,"props":736,"children":737},{},[738],{"type":451,"value":682},{"type":451,"value":740}," Intermittent issue in nats test",{"data":742,"body":743},{},{"type":442,"children":744},[745,749,761,765],{"type":445,"tag":446,"props":746,"children":747},{"id":448},[748],{"type":451,"value":452},{"type":445,"tag":454,"props":750,"children":751},{},[752],{"type":445,"tag":458,"props":753,"children":754},{},[755,759],{"type":445,"tag":462,"props":756,"children":757},{},[758],{"type":451,"value":623},{"type":451,"value":760}," Generate demo calendar + entries",{"type":445,"tag":446,"props":762,"children":763},{"id":511},[764],{"type":451,"value":514},{"type":445,"tag":454,"props":766,"children":767},{},[768,778,787,797,806,815],{"type":445,"tag":458,"props":769,"children":770},{},[771,776],{"type":445,"tag":462,"props":772,"children":773},{},[774],{"type":451,"value":775},"(tiptap)",{"type":451,"value":777}," Add map and penaltycalculator blocks to text diff render",{"type":445,"tag":458,"props":779,"children":780},{},[781,785],{"type":445,"tag":462,"props":782,"children":783},{},[784],{"type":451,"value":555},{"type":451,"value":786}," Cleanup activity feed diff legend and diff colors",{"type":445,"tag":458,"props":788,"children":789},{},[790,795],{"type":445,"tag":462,"props":791,"children":792},{},[793],{"type":451,"value":794},"(auth)",{"type":451,"value":796}," System message banner missing from auth pages",{"type":445,"tag":458,"props":798,"children":799},{},[800,804],{"type":445,"tag":462,"props":801,"children":802},{},[803],{"type":451,"value":794},{"type":451,"value":805}," Attempt to add padding to auth pages",{"type":445,"tag":458,"props":807,"children":808},{},[809,813],{"type":445,"tag":462,"props":810,"children":811},{},[812],{"type":451,"value":623},{"type":451,"value":814}," Increase demo entries",{"type":445,"tag":458,"props":816,"children":817},{},[818,822],{"type":445,"tag":462,"props":819,"children":820},{},[821],{"type":451,"value":506},{"type":451,"value":823}," Show empty calendar in favor of no data block",{"data":825,"body":826},{},{"type":442,"children":827},[828,832,877,881],{"type":445,"tag":446,"props":829,"children":830},{"id":448},[831],{"type":451,"value":452},{"type":445,"tag":454,"props":833,"children":834},{},[835,844,854,859,868],{"type":445,"tag":458,"props":836,"children":837},{},[838,842],{"type":445,"tag":462,"props":839,"children":840},{},[841],{"type":451,"value":623},{"type":451,"value":843}," Create role for lowest job grade",{"type":445,"tag":458,"props":845,"children":846},{},[847,852],{"type":445,"tag":462,"props":848,"children":849},{},[850],{"type":451,"value":851},"(overview)",{"type":451,"value":853}," Add quick access bar with pinning context menu",{"type":445,"tag":458,"props":855,"children":856},{},[857],{"type":451,"value":858},"Add bw\u002Fgray fivenet logo variant",{"type":445,"tag":458,"props":860,"children":861},{},[862,866],{"type":445,"tag":462,"props":863,"children":864},{},[865],{"type":451,"value":466},{"type":451,"value":867}," Hide group selectors without list permission",{"type":445,"tag":458,"props":869,"children":870},{},[871,875],{"type":445,"tag":462,"props":872,"children":873},{},[874],{"type":451,"value":506},{"type":451,"value":876}," Rework ui to be more sleek heavily inspired by Nuxt UI's",{"type":445,"tag":446,"props":878,"children":879},{"id":511},[880],{"type":451,"value":514},{"type":445,"tag":454,"props":882,"children":883},{},[884,889,894,899,904,909,914,919,924,929,938,943,948,953,963,972,981,991,1001,1010,1019,1024,1033],{"type":445,"tag":458,"props":885,"children":886},{},[887],{"type":451,"value":888},"Version in VERSION file",{"type":445,"tag":458,"props":890,"children":891},{},[892],{"type":451,"value":893},"Pkg version",{"type":445,"tag":458,"props":895,"children":896},{},[897],{"type":451,"value":898},"Remove v2026.8.2 version from changelog",{"type":445,"tag":458,"props":900,"children":901},{},[902],{"type":451,"value":903},"Use fontsource for local font loading",{"type":445,"tag":458,"props":905,"children":906},{},[907],{"type":451,"value":908},"App config default perms methods label issue",{"type":445,"tag":458,"props":910,"children":911},{},[912],{"type":451,"value":913},"Cleanup unnamed logger usage and debug info formatting",{"type":445,"tag":458,"props":915,"children":916},{},[917],{"type":451,"value":918},"Improve banner display by adding padding to root of dashboardpanels",{"type":445,"tag":458,"props":920,"children":921},{},[922],{"type":451,"value":923},"Cleanup error page info",{"type":445,"tag":458,"props":925,"children":926},{},[927],{"type":451,"value":928},"Banner not appearing again when system message doesn't have",{"type":445,"tag":458,"props":930,"children":931},{},[932,936],{"type":445,"tag":462,"props":933,"children":934},{},[935],{"type":451,"value":775},{"type":451,"value":937}," Search and replace extension type issue",{"type":445,"tag":458,"props":939,"children":940},{},[941],{"type":451,"value":942},"Apply padding-bottom to all UDashboardPanel main pages\u002Fcomponents",{"type":445,"tag":458,"props":944,"children":945},{},[946],{"type":451,"value":947},"Add imagemagick as utility for image handling",{"type":445,"tag":458,"props":949,"children":950},{},[951],{"type":451,"value":952},"Rename bottom offset css vars and cleanup CardElement type",{"type":445,"tag":458,"props":954,"children":955},{},[956,961],{"type":445,"tag":462,"props":957,"children":958},{},[959],{"type":451,"value":960},"(demo,perms)",{"type":451,"value":962}," Reload RBAC cache after demo data seeding",{"type":445,"tag":458,"props":964,"children":965},{},[966,970],{"type":445,"tag":462,"props":967,"children":968},{},[969],{"type":451,"value":794},{"type":451,"value":971}," Forgot password not requiring a fully registered account",{"type":445,"tag":458,"props":973,"children":974},{},[975,979],{"type":445,"tag":462,"props":976,"children":977},{},[978],{"type":451,"value":623},{"type":451,"value":980}," Seed rbac test issue due to rng not initialized",{"type":445,"tag":458,"props":982,"children":983},{},[984,989],{"type":445,"tag":462,"props":985,"children":986},{},[987],{"type":451,"value":988},"(config)",{"type":451,"value":990}," Switch system banner to sha256",{"type":445,"tag":458,"props":992,"children":993},{},[994,999],{"type":445,"tag":462,"props":995,"children":996},{},[997],{"type":451,"value":998},"(ui)",{"type":451,"value":1000}," Tighten shared modal and overview spacing",{"type":445,"tag":458,"props":1002,"children":1003},{},[1004,1008],{"type":445,"tag":462,"props":1005,"children":1006},{},[1007],{"type":451,"value":794},{"type":451,"value":1009}," Standardize auth errors and add failure audit metadata",{"type":445,"tag":458,"props":1011,"children":1012},{},[1013,1017],{"type":445,"tag":462,"props":1014,"children":1015},{},[1016],{"type":451,"value":720},{"type":451,"value":1018}," Make refresh user location test deterministic",{"type":445,"tag":458,"props":1020,"children":1021},{},[1022],{"type":451,"value":1023},"Cleanup hero bg usage and rework about and licenses pages",{"type":445,"tag":458,"props":1025,"children":1026},{},[1027,1031],{"type":445,"tag":462,"props":1028,"children":1029},{},[1030],{"type":451,"value":466},{"type":451,"value":1032}," Rename jobspolicy pkg to groupspolicy",{"type":445,"tag":458,"props":1034,"children":1035},{},[1036,1041],{"type":445,"tag":462,"props":1037,"children":1038},{},[1039],{"type":451,"value":1040},"(channels)",{"type":451,"value":1042}," Update helm chart version",{"data":1044,"body":1045},{},{"type":442,"children":1046},[1047,1051,1206,1210,1450,1456],{"type":445,"tag":446,"props":1048,"children":1049},{"id":448},[1050],{"type":451,"value":452},{"type":445,"tag":454,"props":1052,"children":1053},{},[1054,1059,1068,1078,1087,1096,1101,1106,1115,1124,1133,1142,1151,1161,1170,1179,1188,1197],{"type":445,"tag":458,"props":1055,"children":1056},{},[1057],{"type":451,"value":1058},"Split ManageLabels jobs labels API",{"type":445,"tag":458,"props":1060,"children":1061},{},[1062,1066],{"type":445,"tag":462,"props":1063,"children":1064},{},[1065],{"type":451,"value":608},{"type":451,"value":1067}," Record workflow cron stats",{"type":445,"tag":458,"props":1069,"children":1070},{},[1071,1076],{"type":445,"tag":462,"props":1072,"children":1073},{},[1074],{"type":451,"value":1075},"(cron)",{"type":451,"value":1077}," Report cron run metrics",{"type":445,"tag":458,"props":1079,"children":1080},{},[1081,1085],{"type":445,"tag":462,"props":1082,"children":1083},{},[1084],{"type":451,"value":1075},{"type":451,"value":1086}," Add more attributes to cron handlers",{"type":445,"tag":458,"props":1088,"children":1089},{},[1090,1094],{"type":445,"tag":462,"props":1091,"children":1092},{},[1093],{"type":451,"value":623},{"type":451,"value":1095}," Enable and set system banner message with crendetials",{"type":445,"tag":458,"props":1097,"children":1098},{},[1099],{"type":451,"value":1100},"Add cron job prometheus metrics",{"type":445,"tag":458,"props":1102,"children":1103},{},[1104],{"type":451,"value":1105},"Use tiptap new decorations api for SearchAndReplace extension",{"type":445,"tag":458,"props":1107,"children":1108},{},[1109,1113],{"type":445,"tag":462,"props":1110,"children":1111},{},[1112],{"type":451,"value":682},{"type":451,"value":1114}," Clone MySQL test DBs from shared seed schema",{"type":445,"tag":458,"props":1116,"children":1117},{},[1118,1122],{"type":445,"tag":462,"props":1119,"children":1120},{},[1121],{"type":451,"value":466},{"type":451,"value":1123}," Start work on groups api",{"type":445,"tag":458,"props":1125,"children":1126},{},[1127,1131],{"type":445,"tag":462,"props":1128,"children":1129},{},[1130],{"type":451,"value":466},{"type":451,"value":1132}," Add group access control",{"type":445,"tag":458,"props":1134,"children":1135},{},[1136,1140],{"type":445,"tag":462,"props":1137,"children":1138},{},[1139],{"type":451,"value":466},{"type":451,"value":1141}," Use user selectors in listings",{"type":445,"tag":458,"props":1143,"children":1144},{},[1145,1149],{"type":445,"tag":462,"props":1146,"children":1147},{},[1148],{"type":451,"value":466},{"type":451,"value":1150}," Redesign group details ui screens",{"type":445,"tag":458,"props":1152,"children":1153},{},[1154,1159],{"type":445,"tag":462,"props":1155,"children":1156},{},[1157],{"type":451,"value":1158},"(access)",{"type":451,"value":1160}," Add typed object access wrappers",{"type":445,"tag":458,"props":1162,"children":1163},{},[1164,1168],{"type":445,"tag":462,"props":1165,"children":1166},{},[1167],{"type":451,"value":466},{"type":451,"value":1169}," Gate group mutations by group view access",{"type":445,"tag":458,"props":1171,"children":1172},{},[1173,1177],{"type":445,"tag":462,"props":1174,"children":1175},{},[1176],{"type":451,"value":1158},{"type":451,"value":1178}," Wire typed access into remaining services",{"type":445,"tag":458,"props":1180,"children":1181},{},[1182,1186],{"type":445,"tag":462,"props":1183,"children":1184},{},[1185],{"type":451,"value":466},{"type":451,"value":1187}," Refresh group access editor and list ui",{"type":445,"tag":458,"props":1189,"children":1190},{},[1191,1195],{"type":445,"tag":462,"props":1192,"children":1193},{},[1194],{"type":451,"value":466},{"type":451,"value":1196}," Add group policy enforcement",{"type":445,"tag":458,"props":1198,"children":1199},{},[1200,1204],{"type":445,"tag":462,"props":1201,"children":1202},{},[1203],{"type":451,"value":466},{"type":451,"value":1205}," Add cron job to recount group members every 5 minutes",{"type":445,"tag":446,"props":1207,"children":1208},{"id":511},[1209],{"type":451,"value":514},{"type":445,"tag":454,"props":1211,"children":1212},{},[1213,1222,1231,1240,1245,1254,1263,1272,1281,1290,1299,1304,1309,1318,1327,1332,1341,1350,1359,1364,1369,1378,1387,1396,1405,1414,1423,1432,1441],{"type":445,"tag":458,"props":1214,"children":1215},{},[1216,1220],{"type":445,"tag":462,"props":1217,"children":1218},{},[1219],{"type":451,"value":476},{"type":451,"value":1221}," Adjust un-\u002Fassigned dispatch status handling",{"type":445,"tag":458,"props":1223,"children":1224},{},[1225,1229],{"type":445,"tag":462,"props":1226,"children":1227},{},[1228],{"type":451,"value":466},{"type":451,"value":1230}," Colleages labels stats not checking user job",{"type":445,"tag":458,"props":1232,"children":1233},{},[1234,1238],{"type":445,"tag":462,"props":1235,"children":1236},{},[1237],{"type":451,"value":466},{"type":451,"value":1239}," Add tree map graph style for label stats",{"type":445,"tag":458,"props":1241,"children":1242},{},[1243],{"type":451,"value":1244},"Clean up initializations in app.vue by using plugins",{"type":445,"tag":458,"props":1246,"children":1247},{},[1248,1252],{"type":445,"tag":462,"props":1249,"children":1250},{},[1251],{"type":451,"value":720},{"type":451,"value":1253}," Keep dispatcher state in sync",{"type":445,"tag":458,"props":1255,"children":1256},{},[1257,1261],{"type":445,"tag":462,"props":1258,"children":1259},{},[1260],{"type":451,"value":476},{"type":451,"value":1262}," Sync job mappings on KV updates",{"type":445,"tag":458,"props":1264,"children":1265},{},[1266,1270],{"type":445,"tag":462,"props":1267,"children":1268},{},[1269],{"type":451,"value":476},{"type":451,"value":1271}," Add coverage for KV job mapping changes",{"type":445,"tag":458,"props":1273,"children":1274},{},[1275,1279],{"type":445,"tag":462,"props":1276,"children":1277},{},[1278],{"type":451,"value":720},{"type":451,"value":1280}," Tracker missing comments about behavior and centrum tests",{"type":445,"tag":458,"props":1282,"children":1283},{},[1284,1288],{"type":445,"tag":462,"props":1285,"children":1286},{},[1287],{"type":451,"value":476},{"type":451,"value":1289}," Decouple unit assignment cache updates from DB transaction",{"type":445,"tag":458,"props":1291,"children":1292},{},[1293,1297],{"type":445,"tag":462,"props":1294,"children":1295},{},[1296],{"type":451,"value":476},{"type":451,"value":1298}," Resync unit membership and dispatch state",{"type":445,"tag":458,"props":1300,"children":1301},{},[1302],{"type":451,"value":1303},"Update readme badges",{"type":445,"tag":458,"props":1305,"children":1306},{},[1307],{"type":451,"value":1308},"Run golangci-lint fix",{"type":445,"tag":458,"props":1310,"children":1311},{},[1312,1316],{"type":445,"tag":462,"props":1313,"children":1314},{},[1315],{"type":451,"value":476},{"type":451,"value":1317}," Test issues",{"type":445,"tag":458,"props":1319,"children":1320},{},[1321,1325],{"type":445,"tag":462,"props":1322,"children":1323},{},[1324],{"type":451,"value":720},{"type":451,"value":1326}," Manager test setup",{"type":445,"tag":458,"props":1328,"children":1329},{},[1330],{"type":451,"value":1331},"Tracker interface issue in tracker tests",{"type":445,"tag":458,"props":1333,"children":1334},{},[1335,1339],{"type":445,"tag":462,"props":1336,"children":1337},{},[1338],{"type":451,"value":476},{"type":451,"value":1340}," Show coords in dispatch create\u002Fupdate slideover",{"type":445,"tag":458,"props":1342,"children":1343},{},[1344,1348],{"type":445,"tag":462,"props":1345,"children":1346},{},[1347],{"type":451,"value":682},{"type":451,"value":1349}," Add missing fivenet_user_jobs initial data",{"type":445,"tag":458,"props":1351,"children":1352},{},[1353,1357],{"type":445,"tag":462,"props":1354,"children":1355},{},[1356],{"type":451,"value":476},{"type":451,"value":1358}," Fix settings bug causing test failures",{"type":445,"tag":458,"props":1360,"children":1361},{},[1362],{"type":451,"value":1363},"Disable attr jobs when N\u002FA value is sent",{"type":445,"tag":458,"props":1365,"children":1366},{},[1367],{"type":451,"value":1368},"Go test failures and archive\u002Frestore group acl issue",{"type":445,"tag":458,"props":1370,"children":1371},{},[1372,1376],{"type":445,"tag":462,"props":1373,"children":1374},{},[1375],{"type":451,"value":466},{"type":451,"value":1377}," User group selection\u002Fsearch filter",{"type":445,"tag":458,"props":1379,"children":1380},{},[1381,1385],{"type":445,"tag":462,"props":1382,"children":1383},{},[1384],{"type":451,"value":998},{"type":451,"value":1386}," Restore SelectMenu attrs and static items fallback",{"type":445,"tag":458,"props":1388,"children":1389},{},[1390,1394],{"type":445,"tag":462,"props":1391,"children":1392},{},[1393],{"type":451,"value":682},{"type":451,"value":1395}," Dbmanager context issue during cleanup",{"type":445,"tag":458,"props":1397,"children":1398},{},[1399,1403],{"type":445,"tag":462,"props":1400,"children":1401},{},[1402],{"type":451,"value":466},{"type":451,"value":1404}," Preserve conduct filters and exclude stale group members",{"type":445,"tag":458,"props":1406,"children":1407},{},[1408,1412],{"type":445,"tag":462,"props":1409,"children":1410},{},[1411],{"type":451,"value":682},{"type":451,"value":1413}," Parallel issues with dbmanager",{"type":445,"tag":458,"props":1415,"children":1416},{},[1417,1421],{"type":445,"tag":462,"props":1418,"children":1419},{},[1420],{"type":451,"value":466},{"type":451,"value":1422}," Handle archived group detail reads and read-only state",{"type":445,"tag":458,"props":1424,"children":1425},{},[1426,1430],{"type":445,"tag":462,"props":1427,"children":1428},{},[1429],{"type":451,"value":466},{"type":451,"value":1431}," Seed default access when creating groups",{"type":445,"tag":458,"props":1433,"children":1434},{},[1435,1439],{"type":445,"tag":462,"props":1436,"children":1437},{},[1438],{"type":451,"value":466},{"type":451,"value":1440}," Authorize qualification IDs in group rules",{"type":445,"tag":458,"props":1442,"children":1443},{},[1444,1448],{"type":445,"tag":462,"props":1445,"children":1446},{},[1447],{"type":451,"value":466},{"type":451,"value":1449}," Ensure job groups feature migrations are run",{"type":445,"tag":446,"props":1451,"children":1453},{"id":1452},"️-miscellaneous-tasks",[1454],{"type":451,"value":1455},"⚙️ Miscellaneous Tasks",{"type":445,"tag":454,"props":1457,"children":1458},{},[1459],{"type":445,"tag":458,"props":1460,"children":1461},{},[1462],{"type":451,"value":1463},"Nix flake update + switch to staging-next-26.05",{"data":1465,"body":1466},{},{"type":442,"children":1467},[1468,1472,1523,1527],{"type":445,"tag":446,"props":1469,"children":1470},{"id":448},[1471],{"type":451,"value":452},{"type":445,"tag":454,"props":1473,"children":1474},{},[1475,1480,1485,1490,1499,1509,1518],{"type":445,"tag":458,"props":1476,"children":1477},{},[1478],{"type":451,"value":1479},"Use nuxt ui for livemap context menu",{"type":445,"tag":458,"props":1481,"children":1482},{},[1483],{"type":451,"value":1484},"Add drag'n'drop document template ordering",{"type":445,"tag":458,"props":1486,"children":1487},{},[1488],{"type":451,"value":1489},"Use genric rank logic to reduce duplicated code",{"type":445,"tag":458,"props":1491,"children":1492},{},[1493,1497],{"type":445,"tag":462,"props":1494,"children":1495},{},[1496],{"type":451,"value":794},{"type":451,"value":1498}," Use PinInput for registration token input",{"type":445,"tag":458,"props":1500,"children":1501},{},[1502,1507],{"type":445,"tag":462,"props":1503,"children":1504},{},[1505],{"type":451,"value":1506},"(audit)",{"type":451,"value":1508}," Add account id column",{"type":445,"tag":458,"props":1510,"children":1511},{},[1512,1516],{"type":445,"tag":462,"props":1513,"children":1514},{},[1515],{"type":451,"value":633},{"type":451,"value":1517}," Add debug info to settings drawer",{"type":445,"tag":458,"props":1519,"children":1520},{},[1521],{"type":451,"value":1522},"Add get user props sync api endpoint",{"type":445,"tag":446,"props":1524,"children":1525},{"id":511},[1526],{"type":451,"value":514},{"type":445,"tag":454,"props":1528,"children":1529},{},[1530,1535,1540,1545,1550,1560,1565,1570,1579,1584,1589,1594,1604,1613,1618,1627,1632,1641,1646,1655,1664],{"type":445,"tag":458,"props":1531,"children":1532},{},[1533],{"type":451,"value":1534},"Centrum dispatch activity feed and improve color polyfills",{"type":445,"tag":458,"props":1536,"children":1537},{},[1538],{"type":451,"value":1539},"Amber color usage and polyfills colors",{"type":445,"tag":458,"props":1541,"children":1542},{},[1543],{"type":451,"value":1544},"Improve color palette change funcs",{"type":445,"tag":458,"props":1546,"children":1547},{},[1548],{"type":451,"value":1549},"Marker unit text color",{"type":445,"tag":458,"props":1551,"children":1552},{},[1553,1558],{"type":445,"tag":462,"props":1554,"children":1555},{},[1556],{"type":451,"value":1557},"(templates)",{"type":451,"value":1559}," Hide approval task add button in view when disabled",{"type":445,"tag":458,"props":1561,"children":1562},{},[1563],{"type":451,"value":1564},"Testdata base data issue caused by templates ordering change",{"type":445,"tag":458,"props":1566,"children":1567},{},[1568],{"type":451,"value":1569},"Documents base test data",{"type":445,"tag":458,"props":1571,"children":1572},{},[1573,1577],{"type":445,"tag":462,"props":1574,"children":1575},{},[1576],{"type":451,"value":633},{"type":451,"value":1578}," Heatmap perms check missing causing perm denied",{"type":445,"tag":458,"props":1580,"children":1581},{},[1582],{"type":451,"value":1583},"Heatmap livemap error for good and improve server auth errors",{"type":445,"tag":458,"props":1585,"children":1586},{},[1587],{"type":451,"value":1588},"Postcss plugin imported assets warning",{"type":445,"tag":458,"props":1590,"children":1591},{},[1592],{"type":451,"value":1593},"Small ui\u002Fux cleanups and improve stream msg var naming",{"type":445,"tag":458,"props":1595,"children":1596},{},[1597,1602],{"type":445,"tag":462,"props":1598,"children":1599},{},[1600],{"type":451,"value":1601},"(input)",{"type":451,"value":1603}," Show\u002Fhide hours:minutes in input date range based on width",{"type":445,"tag":458,"props":1605,"children":1606},{},[1607,1611],{"type":445,"tag":462,"props":1608,"children":1609},{},[1610],{"type":451,"value":1506},{"type":451,"value":1612}," Skip sync service calls authed by api token",{"type":445,"tag":458,"props":1614,"children":1615},{},[1616],{"type":451,"value":1617},"Audit log correct user_job column as well",{"type":445,"tag":458,"props":1619,"children":1620},{},[1621,1625],{"type":445,"tag":462,"props":1622,"children":1623},{},[1624],{"type":451,"value":1506},{"type":451,"value":1626}," Use auth kind as consideration for skipping log",{"type":445,"tag":458,"props":1628,"children":1629},{},[1630],{"type":451,"value":1631},"Add shellcheck to flake.nix",{"type":445,"tag":458,"props":1633,"children":1634},{},[1635,1639],{"type":445,"tag":462,"props":1636,"children":1637},{},[1638],{"type":451,"value":1506},{"type":451,"value":1640}," Null user job in audit if empty",{"type":445,"tag":458,"props":1642,"children":1643},{},[1644],{"type":451,"value":1645},"Livemap own marker and empty phone number handling",{"type":445,"tag":458,"props":1647,"children":1648},{},[1649,1653],{"type":445,"tag":462,"props":1650,"children":1651},{},[1652],{"type":451,"value":633},{"type":451,"value":1654}," Prevent user marker stream stalls",{"type":445,"tag":458,"props":1656,"children":1657},{},[1658,1662],{"type":445,"tag":462,"props":1659,"children":1660},{},[1661],{"type":451,"value":633},{"type":451,"value":1663}," Using wrong jobs list for visibility checks",{"type":445,"tag":458,"props":1665,"children":1666},{},[1667,1672],{"type":445,"tag":462,"props":1668,"children":1669},{},[1670],{"type":451,"value":1671},"(lint)",{"type":451,"value":1673}," Assert equal vs true usage",{"data":1675,"body":1676},{},{"type":442,"children":1677},[1678,1682,1694,1698],{"type":445,"tag":446,"props":1679,"children":1680},{"id":448},[1681],{"type":451,"value":452},{"type":445,"tag":454,"props":1683,"children":1684},{},[1685],{"type":445,"tag":458,"props":1686,"children":1687},{},[1688,1692],{"type":445,"tag":462,"props":1689,"children":1690},{},[1691],{"type":451,"value":653},{"type":451,"value":1693}," Add user dispatch auto-close RPC",{"type":445,"tag":446,"props":1695,"children":1696},{"id":511},[1697],{"type":451,"value":514},{"type":445,"tag":454,"props":1699,"children":1700},{},[1701,1706,1716,1721,1726],{"type":445,"tag":458,"props":1702,"children":1703},{},[1704],{"type":451,"value":1705},"Css color var issue and circle radius sizing",{"type":445,"tag":458,"props":1707,"children":1708},{},[1709,1714],{"type":445,"tag":462,"props":1710,"children":1711},{},[1712],{"type":451,"value":1713},"(marker)",{"type":451,"value":1715}," Perms check for editing public markers",{"type":445,"tag":458,"props":1717,"children":1718},{},[1719],{"type":451,"value":1720},"Sync api marker creation missing job label and improve public",{"type":445,"tag":458,"props":1722,"children":1723},{},[1724],{"type":451,"value":1725},"Run linters and formatters",{"type":445,"tag":458,"props":1727,"children":1728},{},[1729,1733],{"type":445,"tag":462,"props":1730,"children":1731},{},[1732],{"type":451,"value":633},{"type":451,"value":1734}," Store markers tests",{"data":1736,"body":1737},{},{"type":442,"children":1738},[1739,1743,1784,1788],{"type":445,"tag":446,"props":1740,"children":1741},{"id":448},[1742],{"type":451,"value":452},{"type":445,"tag":454,"props":1744,"children":1745},{},[1746,1756,1765,1774],{"type":445,"tag":458,"props":1747,"children":1748},{},[1749,1754],{"type":445,"tag":462,"props":1750,"children":1751},{},[1752],{"type":451,"value":1753},"(vehicles)",{"type":451,"value":1755}," Add wanted activity backend",{"type":445,"tag":458,"props":1757,"children":1758},{},[1759,1763],{"type":445,"tag":462,"props":1760,"children":1761},{},[1762],{"type":451,"value":1753},{"type":451,"value":1764}," Add activity feed UI",{"type":445,"tag":458,"props":1766,"children":1767},{},[1768,1772],{"type":445,"tag":462,"props":1769,"children":1770},{},[1771],{"type":451,"value":653},{"type":451,"value":1773}," Add EndActiveJobTimeclocks api method",{"type":445,"tag":458,"props":1775,"children":1776},{},[1777,1782],{"type":445,"tag":462,"props":1778,"children":1779},{},[1780],{"type":451,"value":1781},"(laws)",{"type":451,"value":1783}," Notify clients on laws changes",{"type":445,"tag":446,"props":1785,"children":1786},{"id":511},[1787],{"type":451,"value":514},{"type":445,"tag":454,"props":1789,"children":1790},{},[1791,1800,1809,1818,1828,1837,1842,1847,1857,1867,1876,1886,1895,1904,1914,1919,1928,1937,1947,1957,1966,1975,1984,1989,1994,2004,2009,2014,2023,2032,2042,2051,2056,2066],{"type":445,"tag":458,"props":1792,"children":1793},{},[1794,1798],{"type":445,"tag":462,"props":1795,"children":1796},{},[1797],{"type":451,"value":653},{"type":451,"value":1799}," Use job names for job grade syncing",{"type":445,"tag":458,"props":1801,"children":1802},{},[1803,1807],{"type":445,"tag":462,"props":1804,"children":1805},{},[1806],{"type":451,"value":701},{"type":451,"value":1808}," Thread list refs issue",{"type":445,"tag":458,"props":1810,"children":1811},{},[1812,1816],{"type":445,"tag":462,"props":1813,"children":1814},{},[1815],{"type":451,"value":701},{"type":451,"value":1817}," Thread list and page param issue",{"type":445,"tag":458,"props":1819,"children":1820},{},[1821,1826],{"type":445,"tag":462,"props":1822,"children":1823},{},[1824],{"type":451,"value":1825},"(filestore)",{"type":451,"value":1827}," Use alias tags for Jet scans",{"type":445,"tag":458,"props":1829,"children":1830},{},[1831,1835],{"type":445,"tag":462,"props":1832,"children":1833},{},[1834],{"type":451,"value":1753},{"type":451,"value":1836}," Cleanup activity feed style and safe job info enrich entries",{"type":445,"tag":458,"props":1838,"children":1839},{},[1840],{"type":451,"value":1841},"Timeclock query issues",{"type":445,"tag":458,"props":1843,"children":1844},{},[1845],{"type":451,"value":1846},"Better-sqlite3 build issues",{"type":445,"tag":458,"props":1848,"children":1849},{},[1850,1855],{"type":445,"tag":462,"props":1851,"children":1852},{},[1853],{"type":451,"value":1854},"(timeclock)",{"type":451,"value":1856}," Cleanup sorting and list",{"type":445,"tag":458,"props":1858,"children":1859},{},[1860,1865],{"type":445,"tag":462,"props":1861,"children":1862},{},[1863],{"type":451,"value":1864},"(dbsync)",{"type":451,"value":1866}," Normalize user jobs from jobs list",{"type":445,"tag":458,"props":1868,"children":1869},{},[1870,1874],{"type":445,"tag":462,"props":1871,"children":1872},{},[1873],{"type":451,"value":794},{"type":451,"value":1875}," Restore account session without reopening websocket on refresh",{"type":445,"tag":458,"props":1877,"children":1878},{},[1879,1884],{"type":445,"tag":462,"props":1880,"children":1881},{},[1882],{"type":451,"value":1883},"(notifications)",{"type":451,"value":1885}," Avoid empty job subjects",{"type":445,"tag":458,"props":1887,"children":1888},{},[1889,1893],{"type":445,"tag":462,"props":1890,"children":1891},{},[1892],{"type":451,"value":794},{"type":451,"value":1894}," Add session restore regression test",{"type":445,"tag":458,"props":1896,"children":1897},{},[1898,1902],{"type":445,"tag":462,"props":1899,"children":1900},{},[1901],{"type":451,"value":466},{"type":451,"value":1903}," Align timeclock test with query shape",{"type":445,"tag":458,"props":1905,"children":1906},{},[1907,1912],{"type":445,"tag":462,"props":1908,"children":1909},{},[1910],{"type":451,"value":1911},"(cookies)",{"type":451,"value":1913}," Use 1970 expires time value and use utc time",{"type":445,"tag":458,"props":1915,"children":1916},{},[1917],{"type":451,"value":1918},"Job select menu not being full width",{"type":445,"tag":458,"props":1920,"children":1921},{},[1922,1926],{"type":445,"tag":462,"props":1923,"children":1924},{},[1925],{"type":451,"value":653},{"type":451,"value":1927}," Phone_number and more correctly set to null on insert",{"type":445,"tag":458,"props":1929,"children":1930},{},[1931,1935],{"type":445,"tag":462,"props":1932,"children":1933},{},[1934],{"type":451,"value":476},{"type":451,"value":1936}," Dispatchers job not checked in cleanup logic",{"type":445,"tag":458,"props":1938,"children":1939},{},[1940,1945],{"type":445,"tag":462,"props":1941,"children":1942},{},[1943],{"type":451,"value":1944},"(grpc)",{"type":451,"value":1946}," Gracefully handle context canceled in streams",{"type":445,"tag":458,"props":1948,"children":1949},{},[1950,1955],{"type":445,"tag":462,"props":1951,"children":1952},{},[1953],{"type":451,"value":1954},"(streams)",{"type":451,"value":1956}," Treat canceled NATS-backed streams as clean shutdowns",{"type":445,"tag":458,"props":1958,"children":1959},{},[1960,1964],{"type":445,"tag":462,"props":1961,"children":1962},{},[1963],{"type":451,"value":623},{"type":451,"value":1965}," Block until base data has been seeded",{"type":445,"tag":458,"props":1967,"children":1968},{},[1969,1973],{"type":445,"tag":462,"props":1970,"children":1971},{},[1972],{"type":451,"value":623},{"type":451,"value":1974}," Refresh jobs when demo data generation is done",{"type":445,"tag":458,"props":1976,"children":1977},{},[1978,1982],{"type":445,"tag":462,"props":1979,"children":1980},{},[1981],{"type":451,"value":794},{"type":451,"value":1983}," Hide chooseCharacter error on restore by account token only",{"type":445,"tag":458,"props":1985,"children":1986},{},[1987],{"type":451,"value":1988},"Drawers having 2 close buttons due to nuxt ui changes",{"type":445,"tag":458,"props":1990,"children":1991},{},[1992],{"type":451,"value":1993},"Version info being different between backend and frontend",{"type":445,"tag":458,"props":1995,"children":1996},{},[1997,2002],{"type":445,"tag":462,"props":1998,"children":1999},{},[2000],{"type":451,"value":2001},"(query)",{"type":451,"value":2003}," Reduce line length of fk constraints",{"type":445,"tag":458,"props":2005,"children":2006},{},[2007],{"type":451,"value":2008},"Cleanup utils package",{"type":445,"tag":458,"props":2010,"children":2011},{},[2012],{"type":451,"value":2013},"Law page ref undefined issue by updating nuxt",{"type":445,"tag":458,"props":2015,"children":2016},{},[2017,2021],{"type":445,"tag":462,"props":2018,"children":2019},{},[2020],{"type":451,"value":1781},{"type":451,"value":2022}," Law hint not spaced properly with the description",{"type":445,"tag":458,"props":2024,"children":2025},{},[2026,2030],{"type":445,"tag":462,"props":2027,"children":2028},{},[2029],{"type":451,"value":653},{"type":451,"value":2031}," Updating hashes before data send was successful",{"type":445,"tag":458,"props":2033,"children":2034},{},[2035,2040],{"type":445,"tag":462,"props":2036,"children":2037},{},[2038],{"type":451,"value":2039},"(oauth2)",{"type":451,"value":2041}," Move account token helpers out of generated package",{"type":445,"tag":458,"props":2043,"children":2044},{},[2045,2049],{"type":445,"tag":462,"props":2046,"children":2047},{},[2048],{"type":451,"value":794},{"type":451,"value":2050}," Revalidate current route after permission refresh",{"type":445,"tag":458,"props":2052,"children":2053},{},[2054],{"type":451,"value":2055},"Cleanup padding\u002Fmargin for Data*Block components",{"type":445,"tag":458,"props":2057,"children":2058},{},[2059,2064],{"type":445,"tag":462,"props":2060,"children":2061},{},[2062],{"type":451,"value":2063},"(colors)",{"type":451,"value":2065}," Improve polyfill colors and use buttons for design color",{"type":445,"tag":458,"props":2067,"children":2068},{},[2069],{"type":451,"value":2070},"App utils color tests",{"data":2072,"body":2073},{},{"type":442,"children":2074},[2075,2079,2185,2189],{"type":445,"tag":446,"props":2076,"children":2077},{"id":448},[2078],{"type":451,"value":452},{"type":445,"tag":454,"props":2080,"children":2081},{},[2082,2091,2100,2105,2114,2123,2133,2142,2151,2161,2170,2180],{"type":445,"tag":458,"props":2083,"children":2084},{},[2085,2089],{"type":445,"tag":462,"props":2086,"children":2087},{},[2088],{"type":451,"value":633},{"type":451,"value":2090}," Add circle blink controls",{"type":445,"tag":458,"props":2092,"children":2093},{},[2094,2098],{"type":445,"tag":462,"props":2095,"children":2096},{},[2097],{"type":451,"value":653},{"type":451,"value":2099}," Add marker activity sync",{"type":445,"tag":458,"props":2101,"children":2102},{},[2103],{"type":451,"value":2104},"Support public livemap markers",{"type":445,"tag":458,"props":2106,"children":2107},{},[2108,2112],{"type":445,"tag":462,"props":2109,"children":2110},{},[2111],{"type":451,"value":988},{"type":451,"value":2113}," Add setup_complete bootstrap state and setup redirect flow",{"type":445,"tag":458,"props":2115,"children":2116},{},[2117,2121],{"type":445,"tag":462,"props":2118,"children":2119},{},[2120],{"type":451,"value":988},{"type":451,"value":2122}," Introduce first-time setup wizard",{"type":445,"tag":458,"props":2124,"children":2125},{},[2126,2131],{"type":445,"tag":462,"props":2127,"children":2128},{},[2129],{"type":451,"value":2130},"(setup)",{"type":451,"value":2132}," Centralize client config sync after setup",{"type":445,"tag":458,"props":2134,"children":2135},{},[2136,2140],{"type":445,"tag":462,"props":2137,"children":2138},{},[2139],{"type":451,"value":1883},{"type":451,"value":2141}," Account-first stream with char-scope upgrade",{"type":445,"tag":458,"props":2143,"children":2144},{},[2145,2149],{"type":445,"tag":462,"props":2146,"children":2147},{},[2148],{"type":451,"value":1883},{"type":451,"value":2150}," Add send test notification sub command",{"type":445,"tag":458,"props":2152,"children":2153},{},[2154,2159],{"type":445,"tag":462,"props":2155,"children":2156},{},[2157],{"type":451,"value":2158},"(fabric)",{"type":451,"value":2160}," Add more shapes to editor",{"type":445,"tag":458,"props":2162,"children":2163},{},[2164,2168],{"type":445,"tag":462,"props":2165,"children":2166},{},[2167],{"type":451,"value":466},{"type":451,"value":2169}," Add conduct entry restore permission",{"type":445,"tag":458,"props":2171,"children":2172},{},[2173,2178],{"type":445,"tag":462,"props":2174,"children":2175},{},[2176],{"type":451,"value":2177},"(editor)",{"type":451,"value":2179}," Add spoiler details support",{"type":445,"tag":458,"props":2181,"children":2182},{},[2183],{"type":451,"value":2184},"Add new tailwindcss 4.2 colors",{"type":445,"tag":446,"props":2186,"children":2187},{"id":511},[2188],{"type":451,"value":514},{"type":445,"tag":454,"props":2190,"children":2191},{},[2192,2197,2202,2207,2212,2221,2230,2235,2240,2249,2258,2267,2276,2285,2294,2304,2313,2323,2328,2337,2342,2347,2357,2362,2372,2381,2390,2400,2409,2418,2427,2432,2437,2446,2451,2456,2461,2466,2471,2480,2485,2490,2495,2500,2509,2518,2528,2537,2542,2547,2552],{"type":445,"tag":458,"props":2193,"children":2194},{},[2195],{"type":451,"value":2196},"Jobs id resolver",{"type":445,"tag":458,"props":2198,"children":2199},{},[2200],{"type":451,"value":2201},"Remove group field from users select",{"type":445,"tag":458,"props":2203,"children":2204},{},[2205],{"type":451,"value":2206},"Storage metrics ttl timeout and log messages",{"type":445,"tag":458,"props":2208,"children":2209},{},[2210],{"type":451,"value":2211},"Use more proto setters",{"type":445,"tag":458,"props":2213,"children":2214},{},[2215,2219],{"type":445,"tag":462,"props":2216,"children":2217},{},[2218],{"type":451,"value":608},{"type":451,"value":2220}," Reference and relation creation handling for edit access",{"type":445,"tag":458,"props":2222,"children":2223},{},[2224,2228],{"type":445,"tag":462,"props":2225,"children":2226},{},[2227],{"type":451,"value":2039},{"type":451,"value":2229}," Add oauth2 provider name limit and cleanup logs",{"type":445,"tag":458,"props":2231,"children":2232},{},[2233],{"type":451,"value":2234},"File list preview image not re-rendering on changes",{"type":445,"tag":458,"props":2236,"children":2237},{},[2238],{"type":451,"value":2239},"Nats store\u002Fstream registration issue in userinfo usage in tests",{"type":445,"tag":458,"props":2241,"children":2242},{},[2243,2247],{"type":445,"tag":462,"props":2244,"children":2245},{},[2246],{"type":451,"value":633},{"type":451,"value":2248}," Move events logic to store and add DeleteMarker sync api",{"type":445,"tag":458,"props":2250,"children":2251},{},[2252,2256],{"type":445,"tag":462,"props":2253,"children":2254},{},[2255],{"type":451,"value":633},{"type":451,"value":2257}," Improve marker public cleanup and creator handling",{"type":445,"tag":458,"props":2259,"children":2260},{},[2261,2265],{"type":445,"tag":462,"props":2262,"children":2263},{},[2264],{"type":451,"value":653},{"type":451,"value":2266}," Add missing protovalidate required field flags for sync api",{"type":445,"tag":458,"props":2268,"children":2269},{},[2270,2274],{"type":445,"tag":462,"props":2271,"children":2272},{},[2273],{"type":451,"value":633},{"type":451,"value":2275}," Update cache for sync-created markers",{"type":445,"tag":458,"props":2277,"children":2278},{},[2279,2283],{"type":445,"tag":462,"props":2280,"children":2281},{},[2282],{"type":451,"value":633},{"type":451,"value":2284}," Keep public marker updates visible for allowed jobs",{"type":445,"tag":458,"props":2286,"children":2287},{},[2288,2292],{"type":445,"tag":462,"props":2289,"children":2290},{},[2291],{"type":451,"value":633},{"type":451,"value":2293}," Make circle blink overlay non-interactive",{"type":445,"tag":458,"props":2295,"children":2296},{},[2297,2302],{"type":445,"tag":462,"props":2298,"children":2299},{},[2300],{"type":451,"value":2301},"(perms)",{"type":451,"value":2303}," Frontend generating aliased permissions",{"type":445,"tag":458,"props":2305,"children":2306},{},[2307,2311],{"type":445,"tag":462,"props":2308,"children":2309},{},[2310],{"type":451,"value":988},{"type":451,"value":2312}," Properly reload app config on first-time setup",{"type":445,"tag":458,"props":2314,"children":2315},{},[2316,2321],{"type":445,"tag":462,"props":2317,"children":2318},{},[2319],{"type":451,"value":2320},"(protoc)",{"type":451,"value":2322}," Add tests to frontend permify generator",{"type":445,"tag":458,"props":2324,"children":2325},{},[2326],{"type":451,"value":2327},"Change app config update order in first-time setup",{"type":445,"tag":458,"props":2329,"children":2330},{},[2331,2335],{"type":445,"tag":462,"props":2332,"children":2333},{},[2334],{"type":451,"value":794},{"type":451,"value":2336}," Validate config-admin with live account state",{"type":445,"tag":458,"props":2338,"children":2339},{},[2340],{"type":451,"value":2341},"Add icons to error page buttons",{"type":445,"tag":458,"props":2343,"children":2344},{},[2345],{"type":451,"value":2346},"Add description text to stats page app config toggle",{"type":445,"tag":458,"props":2348,"children":2349},{},[2350,2355],{"type":445,"tag":462,"props":2351,"children":2352},{},[2353],{"type":451,"value":2354},"(completor)",{"type":451,"value":2356}," Allow CompleteJobs with account token only",{"type":445,"tag":458,"props":2358,"children":2359},{},[2360],{"type":451,"value":2361},"Use label for default perm entries",{"type":445,"tag":458,"props":2363,"children":2364},{},[2365,2370],{"type":445,"tag":462,"props":2366,"children":2367},{},[2368],{"type":451,"value":2369},"(grpcws)",{"type":451,"value":2371}," Clear stale char auth for account-only notifications",{"type":445,"tag":458,"props":2373,"children":2374},{},[2375,2379],{"type":445,"tag":462,"props":2376,"children":2377},{},[2378],{"type":451,"value":2369},{"type":451,"value":2380}," Clear char token on account-only reauth",{"type":445,"tag":458,"props":2382,"children":2383},{},[2384,2388],{"type":445,"tag":462,"props":2385,"children":2386},{},[2387],{"type":451,"value":2369},{"type":451,"value":2389}," Auth scope for account-only switches",{"type":445,"tag":458,"props":2391,"children":2392},{},[2393,2398],{"type":445,"tag":462,"props":2394,"children":2395},{},[2396],{"type":451,"value":2397},"(websocket)",{"type":451,"value":2399}," Prevent stale auth and stream frame replay",{"type":445,"tag":458,"props":2401,"children":2402},{},[2403,2407],{"type":445,"tag":462,"props":2404,"children":2405},{},[2406],{"type":451,"value":2369},{"type":451,"value":2408}," Keep tokenless reauth and clean up websocket tests",{"type":445,"tag":458,"props":2410,"children":2411},{},[2412,2416],{"type":445,"tag":462,"props":2413,"children":2414},{},[2415],{"type":451,"value":2369},{"type":451,"value":2417}," Improve handling of cancel frames in the current system",{"type":445,"tag":458,"props":2419,"children":2420},{},[2421,2425],{"type":445,"tag":462,"props":2422,"children":2423},{},[2424],{"type":451,"value":1883},{"type":451,"value":2426}," Unread count var name on client side",{"type":445,"tag":458,"props":2428,"children":2429},{},[2430],{"type":451,"value":2431},"Add analyze dir to .gitignore",{"type":445,"tag":458,"props":2433,"children":2434},{},[2435],{"type":451,"value":2436},"Cleanup jobprops logo sql condition and click event handlers",{"type":445,"tag":458,"props":2438,"children":2439},{},[2440,2444],{"type":445,"tag":462,"props":2441,"children":2442},{},[2443],{"type":451,"value":794},{"type":451,"value":2445}," Restore char session state on reload",{"type":445,"tag":458,"props":2447,"children":2448},{},[2449],{"type":451,"value":2450},"Add Unwrap to errswrap pkg",{"type":445,"tag":458,"props":2452,"children":2453},{},[2454],{"type":451,"value":2455},"Correct set user token + activeChar order",{"type":445,"tag":458,"props":2457,"children":2458},{},[2459],{"type":451,"value":2460},"Auth superuser test issue",{"type":445,"tag":458,"props":2462,"children":2463},{},[2464],{"type":451,"value":2465},"Keep account-only RPCs tokenless while preserving character restore",{"type":445,"tag":458,"props":2467,"children":2468},{},[2469],{"type":451,"value":2470},"Skip websocket token reauth until connected",{"type":445,"tag":458,"props":2472,"children":2473},{},[2474,2478],{"type":445,"tag":462,"props":2475,"children":2476},{},[2477],{"type":451,"value":794},{"type":451,"value":2479}," Bind restored character tokens to selected character",{"type":445,"tag":458,"props":2481,"children":2482},{},[2483],{"type":451,"value":2484},"Refine backend error wrapping",{"type":445,"tag":458,"props":2486,"children":2487},{},[2488],{"type":451,"value":2489},"Refine frontend gRPC error handling",{"type":445,"tag":458,"props":2491,"children":2492},{},[2493],{"type":451,"value":2494},"Conduct list auto refresh not working",{"type":445,"tag":458,"props":2496,"children":2497},{},[2498],{"type":451,"value":2499},"Re-order settings page items",{"type":445,"tag":458,"props":2501,"children":2502},{},[2503,2507],{"type":445,"tag":462,"props":2504,"children":2505},{},[2506],{"type":451,"value":555},{"type":451,"value":2508}," Configure bundled Nuxt UI icons",{"type":445,"tag":458,"props":2510,"children":2511},{},[2512,2516],{"type":445,"tag":462,"props":2513,"children":2514},{},[2515],{"type":451,"value":1883},{"type":451,"value":2517}," Preserve durable stream consumers",{"type":445,"tag":458,"props":2519,"children":2520},{},[2521,2526],{"type":445,"tag":462,"props":2522,"children":2523},{},[2524],{"type":451,"value":2525},"(testdata)",{"type":451,"value":2527}," Sql foreign key import issues and missing doc fields",{"type":445,"tag":458,"props":2529,"children":2530},{},[2531,2535],{"type":445,"tag":462,"props":2532,"children":2533},{},[2534],{"type":451,"value":2369},{"type":451,"value":2536}," Add websocket status to error logs",{"type":445,"tag":458,"props":2538,"children":2539},{},[2540],{"type":451,"value":2541},"Add new colors as rgb to css polyfills",{"type":445,"tag":458,"props":2543,"children":2544},{},[2545],{"type":451,"value":2546},"Remove unused culori js package",{"type":445,"tag":458,"props":2548,"children":2549},{},[2550],{"type":451,"value":2551},"Pin vue to 3.5.40 to fix nuxt vitest issue",{"type":445,"tag":458,"props":2553,"children":2554},{},[2555],{"type":451,"value":2556},"Js linter complaint",{"data":2558,"body":2559},{},{"type":442,"children":2560},[2561,2565,2583,2587],{"type":445,"tag":446,"props":2562,"children":2563},{"id":448},[2564],{"type":451,"value":452},{"type":445,"tag":454,"props":2566,"children":2567},{},[2568,2573,2578],{"type":445,"tag":458,"props":2569,"children":2570},{},[2571],{"type":451,"value":2572},"Handle and notify on user primary job and groups changes",{"type":445,"tag":458,"props":2574,"children":2575},{},[2576],{"type":451,"value":2577},"Split superuser access into two based on account groups",{"type":445,"tag":458,"props":2579,"children":2580},{},[2581],{"type":451,"value":2582},"Switch logout page design to use auth card design",{"type":445,"tag":446,"props":2584,"children":2585},{"id":511},[2586],{"type":451,"value":514},{"type":445,"tag":454,"props":2588,"children":2589},{},[2590,2595,2600,2605,2610,2615,2624,2629,2634,2639,2648,2653],{"type":445,"tag":458,"props":2591,"children":2592},{},[2593],{"type":451,"value":2594},"Make jobs id and job_id for grades optional",{"type":445,"tag":458,"props":2596,"children":2597},{},[2598],{"type":451,"value":2599},"Centrum dispatchers cleanup and protogetter linter",{"type":445,"tag":458,"props":2601,"children":2602},{},[2603],{"type":451,"value":2604},"Notification provider reliability and lint issues",{"type":445,"tag":458,"props":2606,"children":2607},{},[2608],{"type":451,"value":2609},"Display notification when user job\u002Fgrade changed",{"type":445,"tag":458,"props":2611,"children":2612},{},[2613],{"type":451,"value":2614},"Add missing fallback to unemployed job when user has no jobs",{"type":445,"tag":458,"props":2616,"children":2617},{},[2618,2622],{"type":445,"tag":462,"props":2619,"children":2620},{},[2621],{"type":451,"value":1883},{"type":451,"value":2623}," Restore original job on superuser revocation",{"type":445,"tag":458,"props":2625,"children":2626},{},[2627],{"type":451,"value":2628},"Only clean up user data once",{"type":445,"tag":458,"props":2630,"children":2631},{},[2632],{"type":451,"value":2633},"Cron list template type issues",{"type":445,"tag":458,"props":2635,"children":2636},{},[2637],{"type":451,"value":2638},"Improve config admin access separation",{"type":445,"tag":458,"props":2640,"children":2641},{},[2642,2646],{"type":445,"tag":462,"props":2643,"children":2644},{},[2645],{"type":451,"value":794},{"type":451,"value":2647}," Refresh config-admin state on account group changes",{"type":445,"tag":458,"props":2649,"children":2650},{},[2651],{"type":451,"value":2652},"Update helm chart in channels.json",{"type":445,"tag":458,"props":2654,"children":2655},{},[2656],{"type":451,"value":2657},"Demo delete jobs query on start",{"data":2659,"body":2660},{},{"type":442,"children":2661},[2662,2666,2698,2702,3096,3102],{"type":445,"tag":446,"props":2663,"children":2664},{"id":448},[2665],{"type":451,"value":452},{"type":445,"tag":454,"props":2667,"children":2668},{},[2669,2674,2683,2693],{"type":445,"tag":458,"props":2670,"children":2671},{},[2672],{"type":451,"value":2673},"Switch to subject based access control",{"type":445,"tag":458,"props":2675,"children":2676},{},[2677,2681],{"type":445,"tag":462,"props":2678,"children":2679},{},[2680],{"type":451,"value":608},{"type":451,"value":2682}," Add required access helper",{"type":445,"tag":458,"props":2684,"children":2685},{},[2686,2691],{"type":445,"tag":462,"props":2687,"children":2688},{},[2689],{"type":451,"value":2690},"(wiki)",{"type":451,"value":2692}," Add drag'n'drop to page reorder list",{"type":445,"tag":458,"props":2694,"children":2695},{},[2696],{"type":451,"value":2697},"Switch to UEmpty for DataNoDataBlock component",{"type":445,"tag":446,"props":2699,"children":2700},{"id":511},[2701],{"type":451,"value":514},{"type":445,"tag":454,"props":2703,"children":2704},{},[2705,2714,2723,2732,2741,2750,2759,2768,2778,2787,2796,2801,2806,2815,2824,2834,2839,2844,2849,2854,2859,2864,2873,2883,2893,2902,2911,2920,2925,2930,2935,2945,2950,2959,2968,2973,2978,2987,2996,3005,3010,3020,3029,3034,3043,3048,3053,3063,3068,3073,3082,3091],{"type":445,"tag":458,"props":2706,"children":2707},{},[2708,2712],{"type":445,"tag":462,"props":2709,"children":2710},{},[2711],{"type":451,"value":506},{"type":451,"value":2713}," Issues with access control to entries",{"type":445,"tag":458,"props":2715,"children":2716},{},[2717,2721],{"type":445,"tag":462,"props":2718,"children":2719},{},[2720],{"type":451,"value":506},{"type":451,"value":2722}," Max length of calendar and entry description fields",{"type":445,"tag":458,"props":2724,"children":2725},{},[2726,2730],{"type":445,"tag":462,"props":2727,"children":2728},{},[2729],{"type":451,"value":574},{"type":451,"value":2731}," Unescpae sanitized strings by default",{"type":445,"tag":458,"props":2733,"children":2734},{},[2735,2739],{"type":445,"tag":462,"props":2736,"children":2737},{},[2738],{"type":451,"value":1911},{"type":451,"value":2740}," Go back to same site none header",{"type":445,"tag":458,"props":2742,"children":2743},{},[2744,2748],{"type":445,"tag":462,"props":2745,"children":2746},{},[2747],{"type":451,"value":633},{"type":451,"value":2749}," Issues with async\u002Fdynamic icons not showing on hide",{"type":445,"tag":458,"props":2751,"children":2752},{},[2753,2757],{"type":445,"tag":462,"props":2754,"children":2755},{},[2756],{"type":451,"value":633},{"type":451,"value":2758}," User icon missing",{"type":445,"tag":458,"props":2760,"children":2761},{},[2762,2766],{"type":445,"tag":462,"props":2763,"children":2764},{},[2765],{"type":451,"value":633},{"type":451,"value":2767}," User marker icon issue with sizing",{"type":445,"tag":458,"props":2769,"children":2770},{},[2771,2776],{"type":445,"tag":462,"props":2772,"children":2773},{},[2774],{"type":451,"value":2775},"(wki)",{"type":451,"value":2777}," Index page containing debug output",{"type":445,"tag":458,"props":2779,"children":2780},{},[2781,2785],{"type":445,"tag":462,"props":2782,"children":2783},{},[2784],{"type":451,"value":998},{"type":451,"value":2786}," Cleanup and deduplicate code",{"type":445,"tag":458,"props":2788,"children":2789},{},[2790,2794],{"type":445,"tag":462,"props":2791,"children":2792},{},[2793],{"type":451,"value":506},{"type":451,"value":2795}," Improve discord reminders code",{"type":445,"tag":458,"props":2797,"children":2798},{},[2799],{"type":451,"value":2800},"Notifications issues and fx DI opts",{"type":445,"tag":458,"props":2802,"children":2803},{},[2804],{"type":451,"value":2805},"Some query table alias issues",{"type":445,"tag":458,"props":2807,"children":2808},{},[2809,2813],{"type":445,"tag":462,"props":2810,"children":2811},{},[2812],{"type":451,"value":2177},{"type":451,"value":2814}," Required access ui changes",{"type":445,"tag":458,"props":2816,"children":2817},{},[2818,2822],{"type":445,"tag":462,"props":2819,"children":2820},{},[2821],{"type":451,"value":1158},{"type":451,"value":2823}," Cleanup and fix subject-based access control",{"type":445,"tag":458,"props":2825,"children":2826},{},[2827,2832],{"type":445,"tag":462,"props":2828,"children":2829},{},[2830],{"type":451,"value":2831},"(sql)",{"type":451,"value":2833}," Make gen-sql",{"type":445,"tag":458,"props":2835,"children":2836},{},[2837],{"type":451,"value":2838},"New access type not used everywhere yet",{"type":445,"tag":458,"props":2840,"children":2841},{},[2842],{"type":451,"value":2843},"Documents update issue caused by get query using wrong condition",{"type":445,"tag":458,"props":2845,"children":2846},{},[2847],{"type":451,"value":2848},"Continue cleanup and acl fixes",{"type":445,"tag":458,"props":2850,"children":2851},{},[2852],{"type":451,"value":2853},"Tests and add more methods to stores",{"type":445,"tag":458,"props":2855,"children":2856},{},[2857],{"type":451,"value":2858},"Cleanup documents store and nil issues",{"type":445,"tag":458,"props":2860,"children":2861},{},[2862],{"type":451,"value":2863},"Required missing from input fields of document request drawer",{"type":445,"tag":458,"props":2865,"children":2866},{},[2867,2871],{"type":445,"tag":462,"props":2868,"children":2869},{},[2870],{"type":451,"value":506},{"type":451,"value":2872}," Discord reminder setting test issue",{"type":445,"tag":458,"props":2874,"children":2875},{},[2876,2881],{"type":445,"tag":462,"props":2877,"children":2878},{},[2879],{"type":451,"value":2880},"(document)",{"type":451,"value":2882}," Transfer relations + references on owner change",{"type":445,"tag":458,"props":2884,"children":2885},{},[2886,2891],{"type":445,"tag":462,"props":2887,"children":2888},{},[2889],{"type":451,"value":2890},"(acl)",{"type":451,"value":2892}," Deny condition in sql based visibility backend",{"type":445,"tag":458,"props":2894,"children":2895},{},[2896,2900],{"type":445,"tag":462,"props":2897,"children":2898},{},[2899],{"type":451,"value":593},{"type":451,"value":2901}," Get user label condition issue",{"type":445,"tag":458,"props":2903,"children":2904},{},[2905,2909],{"type":445,"tag":462,"props":2906,"children":2907},{},[2908],{"type":451,"value":608},{"type":451,"value":2910}," Add soft-delete to stamps",{"type":445,"tag":458,"props":2912,"children":2913},{},[2914,2918],{"type":445,"tag":462,"props":2915,"children":2916},{},[2917],{"type":451,"value":506},{"type":451,"value":2919}," Add pagination to sidebar calendar list",{"type":445,"tag":458,"props":2921,"children":2922},{},[2923],{"type":451,"value":2924},"Job props retrieval issues",{"type":445,"tag":458,"props":2926,"children":2927},{},[2928],{"type":451,"value":2929},"General table alias issues",{"type":445,"tag":458,"props":2931,"children":2932},{},[2933],{"type":451,"value":2934},"Switch German Lexikon to Wiki",{"type":445,"tag":458,"props":2936,"children":2937},{},[2938,2943],{"type":445,"tag":462,"props":2939,"children":2940},{},[2941],{"type":451,"value":2942},"(queries)",{"type":451,"value":2944}," Table alias issues for sql INSERT, UPDATE and DELETE",{"type":445,"tag":458,"props":2946,"children":2947},{},[2948],{"type":451,"value":2949},"Add clear accounts groups for accounts sync",{"type":445,"tag":458,"props":2951,"children":2952},{},[2953,2957],{"type":445,"tag":462,"props":2954,"children":2955},{},[2956],{"type":451,"value":506},{"type":451,"value":2958}," Query table aliases issue",{"type":445,"tag":458,"props":2960,"children":2961},{},[2962,2966],{"type":445,"tag":462,"props":2963,"children":2964},{},[2965],{"type":451,"value":506},{"type":451,"value":2967}," Update query using wrong table alias",{"type":445,"tag":458,"props":2969,"children":2970},{},[2971],{"type":451,"value":2972},"More queries using wrong table alias",{"type":445,"tag":458,"props":2974,"children":2975},{},[2976],{"type":451,"value":2977},"Doc approval task decidedTask var not correctly assigned for given",{"type":445,"tag":458,"props":2979,"children":2980},{},[2981,2985],{"type":445,"tag":462,"props":2982,"children":2983},{},[2984],{"type":451,"value":506},{"type":451,"value":2986}," List calendar entries private entries missing",{"type":445,"tag":458,"props":2988,"children":2989},{},[2990,2994],{"type":445,"tag":462,"props":2991,"children":2992},{},[2993],{"type":451,"value":506},{"type":451,"value":2995}," Correct entry access filtering",{"type":445,"tag":458,"props":2997,"children":2998},{},[2999,3003],{"type":445,"tag":462,"props":3000,"children":3001},{},[3002],{"type":451,"value":506},{"type":451,"value":3004}," Show deleted icon for deleted entries",{"type":445,"tag":458,"props":3006,"children":3007},{},[3008],{"type":451,"value":3009},"Visibility CTE handling in calendar and qualification queries",{"type":445,"tag":458,"props":3011,"children":3012},{},[3013,3018],{"type":445,"tag":462,"props":3014,"children":3015},{},[3016],{"type":451,"value":3017},"(qualifications)",{"type":451,"value":3019}," Requests and results issues",{"type":445,"tag":458,"props":3021,"children":3022},{},[3023,3027],{"type":445,"tag":462,"props":3024,"children":3025},{},[3026],{"type":451,"value":593},{"type":451,"value":3028}," Labels job column cte alias issue",{"type":445,"tag":458,"props":3030,"children":3031},{},[3032],{"type":451,"value":3033},"Timeclock query",{"type":445,"tag":458,"props":3035,"children":3036},{},[3037,3041],{"type":445,"tag":462,"props":3038,"children":3039},{},[3040],{"type":451,"value":1854},{"type":451,"value":3042}," Column naming issues",{"type":445,"tag":458,"props":3044,"children":3045},{},[3046],{"type":451,"value":3047},"More insert\u002Fupdate\u002Fdelete queries using aliased tables",{"type":445,"tag":458,"props":3049,"children":3050},{},[3051],{"type":451,"value":3052},"Cleanup centrum housekeeper code and fix accounts retrieval for",{"type":445,"tag":458,"props":3054,"children":3055},{},[3056,3061],{"type":445,"tag":462,"props":3057,"children":3058},{},[3059],{"type":451,"value":3060},"(accounts)",{"type":451,"value":3062}," User accounts mapping issues",{"type":445,"tag":458,"props":3064,"children":3065},{},[3066],{"type":451,"value":3067},"Phone number blur when streamer mode is enabled",{"type":445,"tag":458,"props":3069,"children":3070},{},[3071],{"type":451,"value":3072},"Cleanup discord calendar reminder embed and use job logo if",{"type":445,"tag":458,"props":3074,"children":3075},{},[3076,3080],{"type":445,"tag":462,"props":3077,"children":3078},{},[3079],{"type":451,"value":608},{"type":451,"value":3081}," Allow edit if user has access but no permission",{"type":445,"tag":458,"props":3083,"children":3084},{},[3085,3089],{"type":445,"tag":462,"props":3086,"children":3087},{},[3088],{"type":451,"value":466},{"type":451,"value":3090}," Add id to jobs and job_id to job_grades",{"type":445,"tag":458,"props":3092,"children":3093},{},[3094],{"type":451,"value":3095},"Update accounts sync example for groups in esx",{"type":445,"tag":446,"props":3097,"children":3099},{"id":3098},"refactor",[3100],{"type":451,"value":3101},"🏭 Refactor",{"type":445,"tag":454,"props":3103,"children":3104},{},[3105],{"type":445,"tag":458,"props":3106,"children":3107},{},[3108],{"type":451,"value":3109},"Extract store query methods from services",{"data":3111,"body":3112},{},{"type":442,"children":3113},[3114,3118,3157,3161],{"type":445,"tag":446,"props":3115,"children":3116},{"id":448},[3117],{"type":451,"value":452},{"type":445,"tag":454,"props":3119,"children":3120},{},[3121,3130,3139,3148],{"type":445,"tag":458,"props":3122,"children":3123},{},[3124,3128],{"type":445,"tag":462,"props":3125,"children":3126},{},[3127],{"type":451,"value":2177},{"type":451,"value":3129}," Add fullscreen modal for images in document view",{"type":445,"tag":458,"props":3131,"children":3132},{},[3133,3137],{"type":445,"tag":462,"props":3134,"children":3135},{},[3136],{"type":451,"value":2690},{"type":451,"value":3138}," Add rank-based page ordering",{"type":445,"tag":458,"props":3140,"children":3141},{},[3142,3146],{"type":445,"tag":462,"props":3143,"children":3144},{},[3145],{"type":451,"value":2690},{"type":451,"value":3147}," Reuse shared client helpers",{"type":445,"tag":458,"props":3149,"children":3150},{},[3151,3155],{"type":445,"tag":462,"props":3152,"children":3153},{},[3154],{"type":451,"value":2690},{"type":451,"value":3156}," Change MovePage to be a standalone permission",{"type":445,"tag":446,"props":3158,"children":3159},{"id":511},[3160],{"type":451,"value":514},{"type":445,"tag":454,"props":3162,"children":3163},{},[3164,3173,3182,3192,3201,3210,3219,3228,3233,3242,3251,3261,3270,3279,3288,3293,3302,3311,3316,3321,3330,3335,3340,3349,3358,3363],{"type":445,"tag":458,"props":3165,"children":3166},{},[3167,3171],{"type":445,"tag":462,"props":3168,"children":3169},{},[3170],{"type":451,"value":633},{"type":451,"value":3172}," Satelite -> satelitte typo",{"type":445,"tag":458,"props":3174,"children":3175},{},[3176,3180],{"type":445,"tag":462,"props":3177,"children":3178},{},[3179],{"type":451,"value":545},{"type":451,"value":3181}," Custom error for expired discord token",{"type":445,"tag":458,"props":3183,"children":3184},{},[3185,3190],{"type":445,"tag":462,"props":3186,"children":3187},{},[3188],{"type":451,"value":3189},"(docs)",{"type":451,"value":3191}," De-duplicate screenshot for readme",{"type":445,"tag":458,"props":3193,"children":3194},{},[3195,3199],{"type":445,"tag":462,"props":3196,"children":3197},{},[3198],{"type":451,"value":701},{"type":451,"value":3200}," Private email creation and confirm leave issues with new",{"type":445,"tag":458,"props":3202,"children":3203},{},[3204,3208],{"type":445,"tag":462,"props":3205,"children":3206},{},[3207],{"type":451,"value":506},{"type":451,"value":3209}," Description not using content message and no default access being set for calendar",{"type":445,"tag":458,"props":3211,"children":3212},{},[3213,3217],{"type":445,"tag":462,"props":3214,"children":3215},{},[3216],{"type":451,"value":506},{"type":451,"value":3218}," Access level for entry deletion not being EDIT",{"type":445,"tag":458,"props":3220,"children":3221},{},[3222,3226],{"type":445,"tag":462,"props":3223,"children":3224},{},[3225],{"type":451,"value":506},{"type":451,"value":3227}," Hide all day label for birthdays",{"type":445,"tag":458,"props":3229,"children":3230},{},[3231],{"type":451,"value":3232},"Livemap satelite -> satelitte issue and calendar description",{"type":445,"tag":458,"props":3234,"children":3235},{},[3236,3240],{"type":445,"tag":462,"props":3237,"children":3238},{},[3239],{"type":451,"value":2177},{"type":451,"value":3241}," Image height\u002Fwidth + align handling in node",{"type":445,"tag":458,"props":3243,"children":3244},{},[3245,3249],{"type":445,"tag":462,"props":3246,"children":3247},{},[3248],{"type":451,"value":476},{"type":451,"value":3250}," Dispatch sidebar always being shown",{"type":445,"tag":458,"props":3252,"children":3253},{},[3254,3259],{"type":445,"tag":462,"props":3255,"children":3256},{},[3257],{"type":451,"value":3258},"(i18n)",{"type":451,"value":3260}," German calendar translation",{"type":445,"tag":458,"props":3262,"children":3263},{},[3264,3268],{"type":445,"tag":462,"props":3265,"children":3266},{},[3267],{"type":451,"value":506},{"type":451,"value":3269}," Recurring entries query logic",{"type":445,"tag":458,"props":3271,"children":3272},{},[3273,3277],{"type":445,"tag":462,"props":3274,"children":3275},{},[3276],{"type":451,"value":574},{"type":451,"value":3278}," Tiptap image test case",{"type":445,"tag":458,"props":3280,"children":3281},{},[3282,3286],{"type":445,"tag":462,"props":3283,"children":3284},{},[3285],{"type":451,"value":506},{"type":451,"value":3287}," Use separate occurence version for rsvp logic",{"type":445,"tag":458,"props":3289,"children":3290},{},[3291],{"type":451,"value":3292},"Cleanup some type issues and add shortucts",{"type":445,"tag":458,"props":3294,"children":3295},{},[3296,3300],{"type":445,"tag":462,"props":3297,"children":3298},{},[3299],{"type":451,"value":545},{"type":451,"value":3301}," Add helper to check error",{"type":445,"tag":458,"props":3303,"children":3304},{},[3305,3309],{"type":445,"tag":462,"props":3306,"children":3307},{},[3308],{"type":451,"value":506},{"type":451,"value":3310}," Recurrence version missing from query",{"type":445,"tag":458,"props":3312,"children":3313},{},[3314],{"type":451,"value":3315},"File fomatting",{"type":445,"tag":458,"props":3317,"children":3318},{},[3319],{"type":451,"value":3320},"Address some golangci-linit complaints",{"type":445,"tag":458,"props":3322,"children":3323},{},[3324,3328],{"type":445,"tag":462,"props":3325,"children":3326},{},[3327],{"type":451,"value":2690},{"type":451,"value":3329}," Keep active page highlighted",{"type":445,"tag":458,"props":3331,"children":3332},{},[3333],{"type":451,"value":3334},"Linter complaints",{"type":445,"tag":458,"props":3336,"children":3337},{},[3338],{"type":451,"value":3339},"Wiki page view ui permission checks",{"type":445,"tag":458,"props":3341,"children":3342},{},[3343,3347],{"type":445,"tag":462,"props":3344,"children":3345},{},[3346],{"type":451,"value":608},{"type":451,"value":3348}," Stats not returning results for other jobs",{"type":445,"tag":458,"props":3350,"children":3351},{},[3352,3356],{"type":445,"tag":462,"props":3353,"children":3354},{},[3355],{"type":451,"value":506},{"type":451,"value":3357}," Cal\u002Fentry deletion not closing view slideover",{"type":445,"tag":458,"props":3359,"children":3360},{},[3361],{"type":451,"value":3362},"Update limiter templates to include wiki reoder page permission",{"type":445,"tag":458,"props":3364,"children":3365},{},[3366],{"type":451,"value":3367},"Update zxcvbn-ts to v4.1.0",{"data":3369,"body":3370},{},{"type":442,"children":3371},[3372,3376,3449,3453],{"type":445,"tag":446,"props":3373,"children":3374},{"id":448},[3375],{"type":451,"value":452},{"type":445,"tag":454,"props":3377,"children":3378},{},[3379,3384,3389,3394,3403,3408,3413,3422,3431,3440],{"type":445,"tag":458,"props":3380,"children":3381},{},[3382],{"type":451,"value":3383},"Add shared unsaved-changes handling",{"type":445,"tag":458,"props":3385,"children":3386},{},[3387],{"type":451,"value":3388},"Add polyline support for livemap markers",{"type":445,"tag":458,"props":3390,"children":3391},{},[3392],{"type":451,"value":3393},"Validate list\u002Fsearch requests using composable and form state",{"type":445,"tag":458,"props":3395,"children":3396},{},[3397,3401],{"type":445,"tag":462,"props":3398,"children":3399},{},[3400],{"type":451,"value":775},{"type":451,"value":3402}," Add map block embeds",{"type":445,"tag":458,"props":3404,"children":3405},{},[3406],{"type":451,"value":3407},"Add map location block extension to editor",{"type":445,"tag":458,"props":3409,"children":3410},{},[3411],{"type":451,"value":3412},"Use beforeunload event to block refresh for unsaved changes",{"type":445,"tag":458,"props":3414,"children":3415},{},[3416,3420],{"type":445,"tag":462,"props":3417,"children":3418},{},[3419],{"type":451,"value":506},{"type":451,"value":3421}," Add birthday system calendars",{"type":445,"tag":458,"props":3423,"children":3424},{},[3425,3429],{"type":445,"tag":462,"props":3426,"children":3427},{},[3428],{"type":451,"value":506},{"type":451,"value":3430}," Support birthday occurrences in ui",{"type":445,"tag":458,"props":3432,"children":3433},{},[3434,3438],{"type":445,"tag":462,"props":3435,"children":3436},{},[3437],{"type":451,"value":608},{"type":451,"value":3439}," Add menu with predefined times as the reminder button",{"type":445,"tag":458,"props":3441,"children":3442},{},[3443,3447],{"type":445,"tag":462,"props":3444,"children":3445},{},[3446],{"type":451,"value":506},{"type":451,"value":3448}," Finish calendar recurring appointments and discord",{"type":445,"tag":446,"props":3450,"children":3451},{"id":511},[3452],{"type":451,"value":514},{"type":445,"tag":454,"props":3454,"children":3455},{},[3456,3461,3471,3476,3481,3486,3491,3496,3501,3506,3511,3516,3521,3526,3531,3536,3545,3554,3563,3572,3581,3586,3591],{"type":445,"tag":458,"props":3457,"children":3458},{},[3459],{"type":451,"value":3460},"Use typed string list in backend code where possible",{"type":445,"tag":458,"props":3462,"children":3463},{},[3464,3469],{"type":445,"tag":462,"props":3465,"children":3466},{},[3467],{"type":451,"value":3468},"(frontend)",{"type":451,"value":3470}," Add typed frontend permission attributes",{"type":445,"tag":458,"props":3472,"children":3473},{},[3474],{"type":451,"value":3475},"Add missing name attribute to UFormFields",{"type":445,"tag":458,"props":3477,"children":3478},{},[3479],{"type":451,"value":3480},"UseFormSearchValidation issue for nested proxy in objects",{"type":445,"tag":458,"props":3482,"children":3483},{},[3484],{"type":451,"value":3485},"Wrong import path for maker creat\u002Fupdate dialog",{"type":445,"tag":458,"props":3487,"children":3488},{},[3489],{"type":451,"value":3490},"Adjut vscode settings to prefer non-relative import paths",{"type":445,"tag":458,"props":3492,"children":3493},{},[3494],{"type":451,"value":3495},"Ts lint issues",{"type":445,"tag":458,"props":3497,"children":3498},{},[3499],{"type":451,"value":3500},"Mapblock vitest case",{"type":445,"tag":458,"props":3502,"children":3503},{},[3504],{"type":451,"value":3505},"Livemap background color issue",{"type":445,"tag":458,"props":3507,"children":3508},{},[3509],{"type":451,"value":3510},"General UI and transport cleanup",{"type":445,"tag":458,"props":3512,"children":3513},{},[3514],{"type":451,"value":3515},"Lint issue and MapBlock test",{"type":445,"tag":458,"props":3517,"children":3518},{},[3519],{"type":451,"value":3520},"Update html and tiptap sanitizer for new extensions",{"type":445,"tag":458,"props":3522,"children":3523},{},[3524],{"type":451,"value":3525},"Go fmt files and use assert\u002Frequire for new calendar tests",{"type":445,"tag":458,"props":3527,"children":3528},{},[3529],{"type":451,"value":3530},"Improve mapblock inline behavior",{"type":445,"tag":458,"props":3532,"children":3533},{},[3534],{"type":451,"value":3535},"Change birthday default color",{"type":445,"tag":458,"props":3537,"children":3538},{},[3539,3543],{"type":445,"tag":462,"props":3540,"children":3541},{},[3542],{"type":451,"value":506},{"type":451,"value":3544}," Cleanup birthday entry view",{"type":445,"tag":458,"props":3546,"children":3547},{},[3548,3552],{"type":445,"tag":462,"props":3549,"children":3550},{},[3551],{"type":451,"value":506},{"type":451,"value":3553}," Handle birthday occurrences and legacy system kinds",{"type":445,"tag":458,"props":3555,"children":3556},{},[3557,3561],{"type":445,"tag":462,"props":3558,"children":3559},{},[3560],{"type":451,"value":506},{"type":451,"value":3562}," Summary list missing entry icon",{"type":445,"tag":458,"props":3564,"children":3565},{},[3566,3570],{"type":445,"tag":462,"props":3567,"children":3568},{},[3569],{"type":451,"value":506},{"type":451,"value":3571}," Reorganize calendar components",{"type":445,"tag":458,"props":3573,"children":3574},{},[3575,3579],{"type":445,"tag":462,"props":3576,"children":3577},{},[3578],{"type":451,"value":506},{"type":451,"value":3580}," Remove unused code path",{"type":445,"tag":458,"props":3582,"children":3583},{},[3584],{"type":451,"value":3585},"Improve tiptap empty check and tiptap to text",{"type":445,"tag":458,"props":3587,"children":3588},{},[3589],{"type":451,"value":3590},"Gosec warning",{"type":445,"tag":458,"props":3592,"children":3593},{},[3594],{"type":451,"value":3595},"Run discord calendar reminders as standalone loop and not cronjob",{"data":3597,"body":3598},{},{"type":442,"children":3599},[3600,3604,3720,3724],{"type":445,"tag":446,"props":3601,"children":3602},{"id":448},[3603],{"type":451,"value":452},{"type":445,"tag":454,"props":3605,"children":3606},{},[3607,3612,3617,3622,3627,3632,3637,3642,3647,3652,3657,3662,3667,3672,3677,3682,3691,3700,3705,3710,3715],{"type":445,"tag":458,"props":3608,"children":3609},{},[3610],{"type":451,"value":3611},"Add basic private discord message handler to bot and add i18n",{"type":445,"tag":458,"props":3613,"children":3614},{},[3615],{"type":451,"value":3616},"Add more buttons for table edit popover in tiptap editor",{"type":445,"tag":458,"props":3618,"children":3619},{},[3620],{"type":451,"value":3621},"Add image removal to file list modal",{"type":445,"tag":458,"props":3623,"children":3624},{},[3625],{"type":451,"value":3626},"Add proper file limit logic to filestore",{"type":445,"tag":458,"props":3628,"children":3629},{},[3630],{"type":451,"value":3631},"Split job colleague labels into separate page and fix labels not",{"type":445,"tag":458,"props":3633,"children":3634},{},[3635],{"type":451,"value":3636},"Add creator filter for dispatches archive and add repeated proto",{"type":445,"tag":458,"props":3638,"children":3639},{},[3640],{"type":451,"value":3641},"Add enum defined only validation where missing from proto files",{"type":445,"tag":458,"props":3643,"children":3644},{},[3645],{"type":451,"value":3646},"Add centrum units reorder api and ui",{"type":445,"tag":458,"props":3648,"children":3649},{},[3650],{"type":451,"value":3651},"Add dispatcher removal button and highlight current user",{"type":445,"tag":458,"props":3653,"children":3654},{},[3655],{"type":451,"value":3656},"Add no dispatches list to dispatch center",{"type":445,"tag":458,"props":3658,"children":3659},{},[3660],{"type":451,"value":3661},"Add citizen labels sorting",{"type":445,"tag":458,"props":3663,"children":3664},{},[3665],{"type":451,"value":3666},"Add job selection to documents stats",{"type":445,"tag":458,"props":3668,"children":3669},{},[3670],{"type":451,"value":3671},"(re-)store dispatch center pane sizes",{"type":445,"tag":458,"props":3673,"children":3674},{},[3675],{"type":451,"value":3676},"Detect and filter content type of uploaded files",{"type":445,"tag":458,"props":3678,"children":3679},{},[3680],{"type":451,"value":3681},"Introduce re-useable DraggablHandle and ReorderButtons components",{"type":445,"tag":458,"props":3683,"children":3684},{},[3685,3689],{"type":445,"tag":462,"props":3686,"children":3687},{},[3688],{"type":451,"value":633},{"type":451,"value":3690}," Add rectangle and polygon marker proto types",{"type":445,"tag":458,"props":3692,"children":3693},{},[3694,3698],{"type":445,"tag":462,"props":3695,"children":3696},{},[3697],{"type":451,"value":633},{"type":451,"value":3699}," Add interactive marker geometry editing on map",{"type":445,"tag":458,"props":3701,"children":3702},{},[3703],{"type":451,"value":3704},"Add laws sort_order column and re-gen sql and proto",{"type":445,"tag":458,"props":3706,"children":3707},{},[3708],{"type":451,"value":3709},"Add laws order sort_order ui handling",{"type":445,"tag":458,"props":3711,"children":3712},{},[3713],{"type":451,"value":3714},"Add maker search drawer to livemap",{"type":445,"tag":458,"props":3716,"children":3717},{},[3718],{"type":451,"value":3719},"Color document activity icons for approval entries",{"type":445,"tag":446,"props":3721,"children":3722},{"id":511},[3723],{"type":451,"value":514},{"type":445,"tag":454,"props":3725,"children":3726},{},[3727,3732,3737,3742,3747,3752,3757,3762,3767,3772,3777,3782,3787,3792,3797,3802,3807,3812,3817,3822,3827,3832,3837,3842,3847,3852,3857,3862,3867,3872,3877,3882,3887,3892,3897,3902,3907,3912,3917,3922,3927,3932,3937,3942,3947,3952,3957,3962,3967,3972,3977,3982,3987,3992,3997,4002],{"type":445,"tag":458,"props":3728,"children":3729},{},[3730],{"type":451,"value":3731},"Add limits to most UPDATE and DELETE queries",{"type":445,"tag":458,"props":3733,"children":3734},{},[3735],{"type":451,"value":3736},"Some perm translations and autocomplete change in nuxt\u002Fui 4.8.0",{"type":445,"tag":458,"props":3738,"children":3739},{},[3740],{"type":451,"value":3741},"Update config example comments",{"type":445,"tag":458,"props":3743,"children":3744},{},[3745],{"type":451,"value":3746},"Upsert stamps call issues",{"type":445,"tag":458,"props":3748,"children":3749},{},[3750],{"type":451,"value":3751},"Continue documents stamps work",{"type":445,"tag":458,"props":3753,"children":3754},{},[3755],{"type":451,"value":3756},"Improve discord private message text",{"type":445,"tag":458,"props":3758,"children":3759},{},[3760],{"type":451,"value":3761},"Tiptap editor files not giving file limit feedback",{"type":445,"tag":458,"props":3763,"children":3764},{},[3765],{"type":451,"value":3766},"Sql query tests caused by jet paranthesis changes",{"type":445,"tag":458,"props":3768,"children":3769},{},[3770],{"type":451,"value":3771},"Tiptap image removal when image doesn't exist in editor",{"type":445,"tag":458,"props":3773,"children":3774},{},[3775],{"type":451,"value":3776},"Add action successful notification to file removal in file list",{"type":445,"tag":458,"props":3778,"children":3779},{},[3780],{"type":451,"value":3781},"Consistently use stretchr\u002Ftestify\u002Fassert and require packages for",{"type":445,"tag":458,"props":3783,"children":3784},{},[3785],{"type":451,"value":3786},"Duplicate SetUserProps perm in citizens.LabelsService",{"type":445,"tag":458,"props":3788,"children":3789},{},[3790],{"type":451,"value":3791},"Penalty calculator view difference between html and tiptap json",{"type":445,"tag":458,"props":3793,"children":3794},{},[3795],{"type":451,"value":3796},"Remove case_count metric from documents",{"type":445,"tag":458,"props":3798,"children":3799},{},[3800],{"type":451,"value":3801},"Input time picker and remove delete penalty calculator button from",{"type":445,"tag":458,"props":3803,"children":3804},{},[3805],{"type":451,"value":3806},"Qualifications labels sync creating label without color",{"type":445,"tag":458,"props":3808,"children":3809},{},[3810],{"type":451,"value":3811},"Doc stats generation tests",{"type":445,"tag":458,"props":3813,"children":3814},{},[3815],{"type":451,"value":3816},"Jobs stats returning empty list",{"type":445,"tag":458,"props":3818,"children":3819},{},[3820],{"type":451,"value":3821},"Jobs colleagues stats average vacation",{"type":445,"tag":458,"props":3823,"children":3824},{},[3825],{"type":451,"value":3826},"Use minimum release age to 1 day",{"type":445,"tag":458,"props":3828,"children":3829},{},[3830],{"type":451,"value":3831},"Remove exclude flag from git describe calls",{"type":445,"tag":458,"props":3833,"children":3834},{},[3835],{"type":451,"value":3836},"Centralize user locale logic in a composable",{"type":445,"tag":458,"props":3838,"children":3839},{},[3840],{"type":451,"value":3841},"App config penalty calculator max leeway validation issue",{"type":445,"tag":458,"props":3843,"children":3844},{},[3845],{"type":451,"value":3846},"Client config json field name for stats page setting",{"type":445,"tag":458,"props":3848,"children":3849},{},[3850],{"type":451,"value":3851},"Cleanup http server and improve iconify proxy request building",{"type":445,"tag":458,"props":3853,"children":3854},{},[3855],{"type":451,"value":3856},"Run golangci-lint --fix",{"type":445,"tag":458,"props":3858,"children":3859},{},[3860],{"type":451,"value":3861},"Add more created_at columns and check int size in reorder units api",{"type":445,"tag":458,"props":3863,"children":3864},{},[3865],{"type":451,"value":3866},"Unit list ordering",{"type":445,"tag":458,"props":3868,"children":3869},{},[3870],{"type":451,"value":3871},"Unit list sorting",{"type":445,"tag":458,"props":3873,"children":3874},{},[3875],{"type":451,"value":3876},"Update sortOrder in client centrum store",{"type":445,"tag":458,"props":3878,"children":3879},{},[3880],{"type":451,"value":3881},"Type issue due to job labels order -> sortOrder",{"type":445,"tag":458,"props":3883,"children":3884},{},[3885],{"type":451,"value":3886},"Icon select menu performance and other general issues",{"type":445,"tag":458,"props":3888,"children":3889},{},[3890],{"type":451,"value":3891},"\"conflicting\" citizens labels permission and cleanup components",{"type":445,"tag":458,"props":3893,"children":3894},{},[3895],{"type":451,"value":3896},"Colleagues list cards labels list overflowing",{"type":445,"tag":458,"props":3898,"children":3899},{},[3900],{"type":451,"value":3901},"Citizen labels access table naming",{"type":445,"tag":458,"props":3903,"children":3904},{},[3905],{"type":451,"value":3906},"Some dispatch center automatic statuses not having creator job and",{"type":445,"tag":458,"props":3908,"children":3909},{},[3910],{"type":451,"value":3911},"Dispatch list card view created at time badge",{"type":445,"tag":458,"props":3913,"children":3914},{},[3915],{"type":451,"value":3916},"Debug output in dispatch list card view",{"type":445,"tag":458,"props":3918,"children":3919},{},[3920],{"type":451,"value":3921},"Centrum -> dispatch pages rename issue",{"type":445,"tag":458,"props":3923,"children":3924},{},[3925],{"type":451,"value":3926},"OnBeforeRouteLeave handler for centrum\u002Fdispatch pages",{"type":445,"tag":458,"props":3928,"children":3929},{},[3930],{"type":451,"value":3931},"Centrum to dispatch rename",{"type":445,"tag":458,"props":3933,"children":3934},{},[3935],{"type":451,"value":3936},"Cleanup some ui and status creation issues for dispatch center",{"type":445,"tag":458,"props":3938,"children":3939},{},[3940],{"type":451,"value":3941},"Ensure own job's doc categories on top of completor results",{"type":445,"tag":458,"props":3943,"children":3944},{},[3945],{"type":451,"value":3946},"Dispatch center unit icon\u002Fcolor usage",{"type":445,"tag":458,"props":3948,"children":3949},{},[3950],{"type":451,"value":3951},"Remove debug output from centrum store",{"type":445,"tag":458,"props":3953,"children":3954},{},[3955],{"type":451,"value":3956},"Improve filestore upload filter error handling on client-side",{"type":445,"tag":458,"props":3958,"children":3959},{},[3960],{"type":451,"value":3961},"Remove dispatcher perm check in dispatcher drawer",{"type":445,"tag":458,"props":3963,"children":3964},{},[3965],{"type":451,"value":3966},"Documents stats categories not being returned correctly",{"type":445,"tag":458,"props":3968,"children":3969},{},[3970],{"type":451,"value":3971},"Replace table header buttons with generic component",{"type":445,"tag":458,"props":3973,"children":3974},{},[3975],{"type":451,"value":3976},"Add go vscode extension to recommendations",{"type":445,"tag":458,"props":3978,"children":3979},{},[3980],{"type":451,"value":3981},"Remove old excluded tables from gen-sql",{"type":445,"tag":458,"props":3983,"children":3984},{},[3985],{"type":451,"value":3986},"Cleanup kong command handling logic",{"type":445,"tag":458,"props":3988,"children":3989},{},[3990],{"type":451,"value":3991},"Convert stats backfill query to use go-jet tables",{"type":445,"tag":458,"props":3993,"children":3994},{},[3995],{"type":451,"value":3996},"Check edit access to livemap marker",{"type":445,"tag":458,"props":3998,"children":3999},{},[4000],{"type":451,"value":4001},"Jobs colleagues labels query issue",{"type":445,"tag":458,"props":4003,"children":4004},{},[4005],{"type":451,"value":4006},"Improve document approval status logic and badge",{"data":4008,"body":4009},{},{"type":442,"children":4010},[4011,4015,4068,4072],{"type":445,"tag":446,"props":4012,"children":4013},{"id":448},[4014],{"type":451,"value":452},{"type":445,"tag":454,"props":4016,"children":4017},{},[4018,4023,4028,4033,4038,4043,4048,4053,4058,4063],{"type":445,"tag":458,"props":4019,"children":4020},{},[4021],{"type":451,"value":4022},"Add log to stderr option",{"type":445,"tag":458,"props":4024,"children":4025},{},[4026],{"type":451,"value":4027},"Remove custom code in favor of packages",{"type":445,"tag":458,"props":4029,"children":4030},{},[4031],{"type":451,"value":4032},"Rework permissions structure and views",{"type":445,"tag":458,"props":4034,"children":4035},{},[4036],{"type":451,"value":4037},"Add citizen labels housekeeper logic and feed entry",{"type":445,"tag":458,"props":4039,"children":4040},{},[4041],{"type":451,"value":4042},"Add self update command to fivenet binary",{"type":445,"tag":458,"props":4044,"children":4045},{},[4046],{"type":451,"value":4047},"Rework InputDate* and add dedicated InputTimePicker component",{"type":445,"tag":458,"props":4049,"children":4050},{},[4051],{"type":451,"value":4052},"Add typed string-list permission references",{"type":445,"tag":458,"props":4054,"children":4055},{},[4056],{"type":451,"value":4057},"Add soft-delete accounts and laws with updated service contracts",{"type":445,"tag":458,"props":4059,"children":4060},{},[4061],{"type":451,"value":4062},"Improve citizen label access handling and UI",{"type":445,"tag":458,"props":4064,"children":4065},{},[4066],{"type":451,"value":4067},"Apply lifecycle hook updates and assorted UI fixes",{"type":445,"tag":446,"props":4069,"children":4070},{"id":511},[4071],{"type":451,"value":514},{"type":445,"tag":454,"props":4073,"children":4074},{},[4075,4080,4085,4090,4095,4100,4105,4110,4115,4120,4125,4130,4135,4140,4145,4150],{"type":445,"tag":458,"props":4076,"children":4077},{},[4078],{"type":451,"value":4079},"Rename completor citizen label into citizens labels service",{"type":445,"tag":458,"props":4081,"children":4082},{},[4083],{"type":451,"value":4084},"Adjust hero pattern background color and remove gradient",{"type":445,"tag":458,"props":4086,"children":4087},{},[4088],{"type":451,"value":4089},"Rbac test data",{"type":445,"tag":458,"props":4091,"children":4092},{},[4093],{"type":451,"value":4094},"Node lint issues",{"type":445,"tag":458,"props":4096,"children":4097},{},[4098],{"type":451,"value":4099},"Auth flow test issues",{"type":445,"tag":458,"props":4101,"children":4102},{},[4103],{"type":451,"value":4104},"Superuser perms test for non-existing permissions",{"type":445,"tag":458,"props":4106,"children":4107},{},[4108],{"type":451,"value":4109},"Golangci-lint complaints",{"type":445,"tag":458,"props":4111,"children":4112},{},[4113],{"type":451,"value":4114},"Label expiration not being inserted for citizen labels",{"type":445,"tag":458,"props":4116,"children":4117},{},[4118],{"type":451,"value":4119},"Setting and retrieving citizen labels",{"type":445,"tag":458,"props":4121,"children":4122},{},[4123],{"type":451,"value":4124},"Update .gitignore",{"type":445,"tag":458,"props":4126,"children":4127},{},[4128],{"type":451,"value":4129},"Input duration picker test",{"type":445,"tag":458,"props":4131,"children":4132},{},[4133],{"type":451,"value":4134},"Remove todo comment from citizens set labels",{"type":445,"tag":458,"props":4136,"children":4137},{},[4138],{"type":451,"value":4139},"App config default perms translations using wrong key",{"type":445,"tag":458,"props":4141,"children":4142},{},[4143],{"type":451,"value":4144},"Remove deprecated permissions from app config on load",{"type":445,"tag":458,"props":4146,"children":4147},{},[4148],{"type":451,"value":4149},"Tiptap is empty doc check",{"type":445,"tag":458,"props":4151,"children":4152},{},[4153],{"type":451,"value":4154},"Jobs colleagues service permission icon",{"data":4156,"body":4157},{},{"type":442,"children":4158},[4159,4163,4195,4199],{"type":445,"tag":446,"props":4160,"children":4161},{"id":448},[4162],{"type":451,"value":452},{"type":445,"tag":454,"props":4164,"children":4165},{},[4166,4171,4176,4181,4186,4191],{"type":445,"tag":458,"props":4167,"children":4168},{},[4169],{"type":451,"value":4170},"Add run cronjob manually function",{"type":445,"tag":458,"props":4172,"children":4173},{},[4174],{"type":451,"value":4175},"Warn about config location and add restart command for dbsync",{"type":445,"tag":458,"props":4177,"children":4178},{},[4179],{"type":451,"value":4180},"Return last activity\u002Fdata time in getstatus sync api",{"type":445,"tag":458,"props":4182,"children":4183},{},[4184],{"type":451,"value":4185},"Add basic tests to pkg\u002Fperms",{"type":445,"tag":458,"props":4187,"children":4188},{},[4189],{"type":451,"value":4190},"Continue work on citizens labels settings",{"type":445,"tag":458,"props":4192,"children":4193},{},[4194],{"type":451,"value":4022},{"type":445,"tag":446,"props":4196,"children":4197},{"id":511},[4198],{"type":451,"value":514},{"type":445,"tag":454,"props":4200,"children":4201},{},[4202,4207,4212,4217,4222,4227,4232,4237,4242,4247,4252,4257,4262,4267,4272,4277,4282],{"type":445,"tag":458,"props":4203,"children":4204},{},[4205],{"type":451,"value":4206},"Ensure ids are set for vue-timeline-chart groups, items and markers",{"type":445,"tag":458,"props":4208,"children":4209},{},[4210],{"type":451,"value":4211},"Show color code in color picker input",{"type":445,"tag":458,"props":4213,"children":4214},{},[4215],{"type":451,"value":4216},"Label settings validation",{"type":445,"tag":458,"props":4218,"children":4219},{},[4220],{"type":451,"value":4221},"Document editor data issue with penalty calculator",{"type":445,"tag":458,"props":4223,"children":4224},{},[4225],{"type":451,"value":4226},"Penalty calculator editor and view not in sync and doc stats query",{"type":445,"tag":458,"props":4228,"children":4229},{},[4230],{"type":451,"value":4231},"Stamps create page perm",{"type":445,"tag":458,"props":4233,"children":4234},{},[4235],{"type":451,"value":4236},"Pnpm lock file outdated",{"type":445,"tag":458,"props":4238,"children":4239},{},[4240],{"type":451,"value":4241},"Change citizens labels structure",{"type":445,"tag":458,"props":4243,"children":4244},{},[4245],{"type":451,"value":4246},"Adjust dbsync install config file warning text",{"type":445,"tag":458,"props":4248,"children":4249},{},[4250],{"type":451,"value":4251},"Use single delete query instead of per grade execution",{"type":445,"tag":458,"props":4253,"children":4254},{},[4255],{"type":451,"value":4256},"Remove reason from citizen label and fix duration pair validation",{"type":445,"tag":458,"props":4258,"children":4259},{},[4260],{"type":451,"value":4261},"Cleanup spa loading template and experimental nuxt opts",{"type":445,"tag":458,"props":4263,"children":4264},{},[4265],{"type":451,"value":4266},"Log to file not working correctly and added log rotation interval",{"type":445,"tag":458,"props":4268,"children":4269},{},[4270],{"type":451,"value":4271},"Use label\u002Fvalue attribute for more components",{"type":445,"tag":458,"props":4273,"children":4274},{},[4275],{"type":451,"value":4276},"Adjust add notification arg",{"type":445,"tag":458,"props":4278,"children":4279},{},[4280],{"type":451,"value":4281},"Split up grpc services into more manageable apis",{"type":445,"tag":458,"props":4283,"children":4284},{},[4285],{"type":451,"value":4286},"Tweak german translation",{"data":4288,"body":4289},{},{"type":442,"children":4290},[4291,4295,4318,4322],{"type":445,"tag":446,"props":4292,"children":4293},{"id":448},[4294],{"type":451,"value":452},{"type":445,"tag":454,"props":4296,"children":4297},{},[4298,4303,4308,4313],{"type":445,"tag":458,"props":4299,"children":4300},{},[4301],{"type":451,"value":4302},"Enable pagination edge buttons",{"type":445,"tag":458,"props":4304,"children":4305},{},[4306],{"type":451,"value":4307},"Add InputDurationPicker and improve duration selection",{"type":445,"tag":458,"props":4309,"children":4310},{},[4311],{"type":451,"value":4312},"Merge sync v2 into main api",{"type":445,"tag":458,"props":4314,"children":4315},{},[4316],{"type":451,"value":4317},"Merge CompleteDocumentCategories to ListCategories perm",{"type":445,"tag":446,"props":4319,"children":4320},{"id":511},[4321],{"type":451,"value":514},{"type":445,"tag":454,"props":4323,"children":4324},{},[4325,4330,4335,4340,4345,4350,4355,4360,4365,4370,4375,4380,4385,4390,4395,4400,4405,4410,4415,4420],{"type":445,"tag":458,"props":4326,"children":4327},{},[4328],{"type":451,"value":4329},"Citizens errors key",{"type":445,"tag":458,"props":4331,"children":4332},{},[4333],{"type":451,"value":4334},"Split dbsync user hash check to separate func",{"type":445,"tag":458,"props":4336,"children":4337},{},[4338],{"type":451,"value":4339},"Attempt to improve dbsync syncers for users and vehicles",{"type":445,"tag":458,"props":4341,"children":4342},{},[4343],{"type":451,"value":4344},"Don't select data json in users sync",{"type":445,"tag":458,"props":4346,"children":4347},{},[4348],{"type":451,"value":4349},"Attempt to use per sync run now guard to improve sync performance",{"type":445,"tag":458,"props":4351,"children":4352},{},[4353],{"type":451,"value":4354},"Don't rely on UTC use time directly for dbsync queries",{"type":445,"tag":458,"props":4356,"children":4357},{},[4358],{"type":451,"value":4359},"Dbsync timestamp timezone issue",{"type":445,"tag":458,"props":4361,"children":4362},{},[4363],{"type":451,"value":4364},"Jobs timeclock inactive list group by issue",{"type":445,"tag":458,"props":4366,"children":4367},{},[4368],{"type":451,"value":4369},"Timeclock list time issue",{"type":445,"tag":458,"props":4371,"children":4372},{},[4373],{"type":451,"value":4374},"Further increase vitest hook timeout",{"type":445,"tag":458,"props":4376,"children":4377},{},[4378],{"type":451,"value":4379},"Send users in chunks in dbsync",{"type":445,"tag":458,"props":4381,"children":4382},{},[4383],{"type":451,"value":4384},"Ignore vitest updates",{"type":445,"tag":458,"props":4386,"children":4387},{},[4388],{"type":451,"value":4389},"Update dockertest pkg to v4 and update go-grpc-middleware dep",{"type":445,"tag":458,"props":4391,"children":4392},{},[4393],{"type":451,"value":4394},"Check if custom query is not nil and not empty",{"type":445,"tag":458,"props":4396,"children":4397},{},[4398],{"type":451,"value":4399},"Missing ORDER BY for example vehicles custom dbsync query",{"type":445,"tag":458,"props":4401,"children":4402},{},[4403],{"type":451,"value":4404},"Update sync api limits and chunk accounts data if needed",{"type":445,"tag":458,"props":4406,"children":4407},{},[4408],{"type":451,"value":4409},"Vitest upgrade issue caused by vitest 8 being pulled in",{"type":445,"tag":458,"props":4411,"children":4412},{},[4413],{"type":451,"value":4414},"Tiptap json to html and back conversion causing spaces to disappear",{"type":445,"tag":458,"props":4416,"children":4417},{},[4418],{"type":451,"value":4419},"Return missing citizen labels settings",{"type":445,"tag":458,"props":4421,"children":4422},{},[4423],{"type":451,"value":4424},"Add fivenet version to system status title",{"data":4426,"body":4427},{},{"type":442,"children":4428},[4429,4433,4461,4465],{"type":445,"tag":446,"props":4430,"children":4431},{"id":448},[4432],{"type":451,"value":452},{"type":445,"tag":454,"props":4434,"children":4435},{},[4436,4441,4446,4451,4456],{"type":445,"tag":458,"props":4437,"children":4438},{},[4439],{"type":451,"value":4440},"Add demo content like jobs, licenses and laws",{"type":445,"tag":458,"props":4442,"children":4443},{},[4444],{"type":451,"value":4445},"Add centrum and jobs activity demo data",{"type":445,"tag":458,"props":4447,"children":4448},{},[4449],{"type":451,"value":4450},"Add demo data generation for vehicles",{"type":445,"tag":458,"props":4452,"children":4453},{},[4454],{"type":451,"value":4455},"Add settings to citizen\u002Fuser labels",{"type":445,"tag":458,"props":4457,"children":4458},{},[4459],{"type":451,"value":4460},"Add icon to labels and change citizen label api",{"type":445,"tag":446,"props":4462,"children":4463},{"id":511},[4464],{"type":451,"value":514},{"type":445,"tag":454,"props":4466,"children":4467},{},[4468,4473,4478,4483,4488,4493,4498,4503,4508,4513,4518,4523,4528,4533,4538,4543,4563,4568,4573,4578,4583,4588,4593],{"type":445,"tag":458,"props":4469,"children":4470},{},[4471],{"type":451,"value":4472},"Implement demo mode feedback",{"type":445,"tag":458,"props":4474,"children":4475},{},[4476],{"type":451,"value":4477},"Demo account identifier\u002Flicense mixup",{"type":445,"tag":458,"props":4479,"children":4480},{},[4481],{"type":451,"value":4482},"Prefix error translation keys by service\u002Fdir",{"type":445,"tag":458,"props":4484,"children":4485},{},[4486],{"type":451,"value":4487},"Dbsync user jobs cleanup\u002Ffiltering",{"type":445,"tag":458,"props":4489,"children":4490},{},[4491],{"type":451,"value":4492},"Add deleted label handling for superuser",{"type":445,"tag":458,"props":4494,"children":4495},{},[4496],{"type":451,"value":4497},"Icon select search being overly strict",{"type":445,"tag":458,"props":4499,"children":4500},{},[4501],{"type":451,"value":4502},"Label icon not clearable and insert\u002Fupdate query issue",{"type":445,"tag":458,"props":4504,"children":4505},{},[4506],{"type":451,"value":4507},"Sql mode ONLY_FULL_GROUP_BY timeclock for total time queries",{"type":445,"tag":458,"props":4509,"children":4510},{},[4511],{"type":451,"value":4512},"Superuser job select menu label issue",{"type":445,"tag":458,"props":4514,"children":4515},{},[4516],{"type":451,"value":4517},"Update nats image to 2.12.6 in docker-compose.ymls",{"type":445,"tag":458,"props":4519,"children":4520},{},[4521],{"type":451,"value":4522},"Update overview screenshot",{"type":445,"tag":458,"props":4524,"children":4525},{},[4526],{"type":451,"value":4527},"Typo in docker-compose.yml",{"type":445,"tag":458,"props":4529,"children":4530},{},[4531],{"type":451,"value":4532},"Doc approval decline not working due to \"empty\" payload svg",{"type":445,"tag":458,"props":4534,"children":4535},{},[4536],{"type":451,"value":4537},"Cleanup linter issues",{"type":445,"tag":458,"props":4539,"children":4540},{},[4541],{"type":451,"value":4542},"Frontend linter issues",{"type":445,"tag":458,"props":4544,"children":4545},{},[4546,4548,4555,4557],{"type":451,"value":4547},"Replace vueuse ",{"type":445,"tag":4549,"props":4550,"children":4552},"code",{"className":4551},[],[4553],{"type":451,"value":4554},"useVModel()",{"type":451,"value":4556}," with vue ",{"type":445,"tag":4549,"props":4558,"children":4560},{"className":4559},[],[4561],{"type":451,"value":4562},"defineModel()",{"type":445,"tag":458,"props":4564,"children":4565},{},[4566],{"type":451,"value":4567},"Enable additional linters and fix context linter issues",{"type":445,"tag":458,"props":4569,"children":4570},{},[4571],{"type":451,"value":4572},"Truncate grpc web response trailer bytes to max if truncated",{"type":445,"tag":458,"props":4574,"children":4575},{},[4576],{"type":451,"value":4577},"Audit log grpc interceptor arg change causing error to be lost",{"type":445,"tag":458,"props":4579,"children":4580},{},[4581],{"type":451,"value":4582},"Address gosec linter failures",{"type":445,"tag":458,"props":4584,"children":4585},{},[4586],{"type":451,"value":4587},"Make all CommandPaletteGroup arrays computed and fix type of",{"type":445,"tag":458,"props":4589,"children":4590},{},[4591],{"type":451,"value":4592},"Pnpm install issue caused by mdc\u002Fshikijs dependency",{"type":445,"tag":458,"props":4594,"children":4595},{},[4596],{"type":451,"value":4597},"Dbsync for single user with custom query",{"data":4599,"body":4600},{},{"type":442,"children":4601},[4602,4606,4629,4633],{"type":445,"tag":446,"props":4603,"children":4604},{"id":448},[4605],{"type":451,"value":452},{"type":445,"tag":454,"props":4607,"children":4608},{},[4609,4614,4619,4624],{"type":445,"tag":458,"props":4610,"children":4611},{},[4612],{"type":451,"value":4613},"Add name override for user marker",{"type":445,"tag":458,"props":4615,"children":4616},{},[4617],{"type":451,"value":4618},"Add stats for documents",{"type":445,"tag":458,"props":4620,"children":4621},{},[4622],{"type":451,"value":4623},"Add per job employee count metric generation",{"type":445,"tag":458,"props":4625,"children":4626},{},[4627],{"type":451,"value":4628},"Add sex value mapping for citizen profile",{"type":445,"tag":446,"props":4630,"children":4631},{"id":511},[4632],{"type":451,"value":514},{"type":445,"tag":454,"props":4634,"children":4635},{},[4636,4641,4646,4651,4656,4661,4666,4671,4676,4689,4694,4699,4704,4709,4714,4719,4724,4729,4734,4739,4744,4749,4754,4759,4764,4769,4774,4779,4784,4789,4794,4799,4804,4809,4814,4819,4824,4829,4834,4839,4844,4849,4854,4859],{"type":445,"tag":458,"props":4637,"children":4638},{},[4639],{"type":451,"value":4640},"Ensure penalty calculator data set\u002Funset according to block's",{"type":445,"tag":458,"props":4642,"children":4643},{},[4644],{"type":451,"value":4645},"Clear user props when name override set on user location",{"type":445,"tag":458,"props":4647,"children":4648},{},[4649],{"type":451,"value":4650},"Improve audit log services\u002Fmethods selection",{"type":445,"tag":458,"props":4652,"children":4653},{},[4654],{"type":451,"value":4655},"Audit log methods clear for unselected services",{"type":445,"tag":458,"props":4657,"children":4658},{},[4659],{"type":451,"value":4660},"User marker not \"merging\" user marker data",{"type":445,"tag":458,"props":4662,"children":4663},{},[4664],{"type":451,"value":4665},"Clear user marker name override data",{"type":445,"tag":458,"props":4667,"children":4668},{},[4669],{"type":451,"value":4670},"Centrum enabled notification popping up when it shouldn't",{"type":445,"tag":458,"props":4672,"children":4673},{},[4674],{"type":451,"value":4675},"Audit log methods select menu items",{"type":445,"tag":458,"props":4677,"children":4678},{},[4679,4681,4687],{"type":451,"value":4680},"Audit service name (strip ",{"type":445,"tag":4549,"props":4682,"children":4684},{"className":4683},[],[4685],{"type":451,"value":4686},"services.",{"type":451,"value":4688}," prefix)",{"type":445,"tag":458,"props":4690,"children":4691},{},[4692],{"type":451,"value":4693},"Missing translation for citizens labels page",{"type":445,"tag":458,"props":4695,"children":4696},{},[4697],{"type":451,"value":4698},"Add title to ErrClosedDoc error",{"type":445,"tag":458,"props":4700,"children":4701},{},[4702],{"type":451,"value":4703},"Add toggle all to role view for superusers",{"type":445,"tag":458,"props":4705,"children":4706},{},[4707],{"type":451,"value":4708},"Add total data to penaltycalculator document data",{"type":445,"tag":458,"props":4710,"children":4711},{},[4712],{"type":451,"value":4713},"Adjust doc stats charts display on client",{"type":445,"tag":458,"props":4715,"children":4716},{},[4717],{"type":451,"value":4718},"Adjust documents metrics table default",{"type":445,"tag":458,"props":4720,"children":4721},{},[4722],{"type":451,"value":4723},"Address feedback for composable changes",{"type":445,"tag":458,"props":4725,"children":4726},{},[4727],{"type":451,"value":4728},"Penaltystats detention unit",{"type":445,"tag":458,"props":4730,"children":4731},{},[4732],{"type":451,"value":4733},"Stats feedback and stats rebuild mutex lock",{"type":445,"tag":458,"props":4735,"children":4736},{},[4737],{"type":451,"value":4738},"Add min\u002Fmax date to stats date range picker",{"type":445,"tag":458,"props":4740,"children":4741},{},[4742],{"type":451,"value":4743},"Update dbuitls StringPEmpty comment",{"type":445,"tag":458,"props":4745,"children":4746},{},[4747],{"type":451,"value":4748},"Stats date range picker icons",{"type":445,"tag":458,"props":4750,"children":4751},{},[4752],{"type":451,"value":4753},"Stats doc categories restricting categories by job",{"type":445,"tag":458,"props":4755,"children":4756},{},[4757],{"type":451,"value":4758},"Add missing stats categories perms check",{"type":445,"tag":458,"props":4760,"children":4761},{},[4762],{"type":451,"value":4763},"Use category badge for documents by category stats",{"type":445,"tag":458,"props":4765,"children":4766},{},[4767],{"type":451,"value":4768},"Penalty stats detention time unit display",{"type":445,"tag":458,"props":4770,"children":4771},{},[4772],{"type":451,"value":4773},"Update optimizeDeps list",{"type":445,"tag":458,"props":4775,"children":4776},{},[4777],{"type":451,"value":4778},"Missing stats perms service translations",{"type":445,"tag":458,"props":4780,"children":4781},{},[4782],{"type":451,"value":4783},"Stats metrics table foreign key name consistency",{"type":445,"tag":458,"props":4785,"children":4786},{},[4787],{"type":451,"value":4788},"Update nuxt.config.ts optimizeDeps list",{"type":445,"tag":458,"props":4790,"children":4791},{},[4792],{"type":451,"value":4793},"Use DI docstats for jobs metrics cron",{"type":445,"tag":458,"props":4795,"children":4796},{},[4797],{"type":451,"value":4798},"Add employee count metrics",{"type":445,"tag":458,"props":4800,"children":4801},{},[4802],{"type":451,"value":4803},"Dbsync \"double\" quote for columns with backticks",{"type":445,"tag":458,"props":4805,"children":4806},{},[4807],{"type":451,"value":4808},"Data*block padding\u002Fmargin and comments field not reset on send",{"type":445,"tag":458,"props":4810,"children":4811},{},[4812],{"type":451,"value":4813},"Colleagues stats chart",{"type":445,"tag":458,"props":4815,"children":4816},{},[4817],{"type":451,"value":4818},"Stats service perms still showing",{"type":445,"tag":458,"props":4820,"children":4821},{},[4822],{"type":451,"value":4823},"Update nats container image to 2.12.5-alpine3.22",{"type":445,"tag":458,"props":4825,"children":4826},{},[4827],{"type":451,"value":4828},"Add breadcrumbs to stats pages",{"type":445,"tag":458,"props":4830,"children":4831},{},[4832],{"type":451,"value":4833},"Mstlystcdata docscategories not loading categories as expected",{"type":445,"tag":458,"props":4835,"children":4836},{},[4837],{"type":451,"value":4838},"Template editor scroll\u002Foverflow issue",{"type":445,"tag":458,"props":4840,"children":4841},{},[4842],{"type":451,"value":4843},"Jobs nav menu not checking perms properly",{"type":445,"tag":458,"props":4845,"children":4846},{},[4847],{"type":451,"value":4848},"Jobs colleagues stats perm",{"type":445,"tag":458,"props":4850,"children":4851},{},[4852],{"type":451,"value":4853},"Add visarea to visline for absent employees chart",{"type":445,"tag":458,"props":4855,"children":4856},{},[4857],{"type":451,"value":4858},"Add missing display intlLocale and currency settings to app config",{"type":445,"tag":458,"props":4860,"children":4861},{},[4862],{"type":451,"value":4863},"Cleanup clientconfig proto messages",{"data":4865,"body":4866},{},{"type":442,"children":4867},[4868,4874,4882,4886,4969,4973],{"type":445,"tag":446,"props":4869,"children":4871},{"id":4870},"️-breaking-changes",[4872],{"type":451,"value":4873},"🏗️ Breaking changes",{"type":445,"tag":454,"props":4875,"children":4876},{},[4877],{"type":445,"tag":458,"props":4878,"children":4879},{},[4880],{"type":451,"value":4881},"V2026.2.0 changelog and update breaking changes steps",{"type":445,"tag":446,"props":4883,"children":4884},{"id":448},[4885],{"type":451,"value":452},{"type":445,"tag":454,"props":4887,"children":4888},{},[4889,4894,4899,4904,4909,4914,4919,4924,4929,4934,4939,4944,4949,4954,4959,4964],{"type":445,"tag":458,"props":4890,"children":4891},{},[4892],{"type":451,"value":4893},"Add max duration for citizens and vehicles to UI",{"type":445,"tag":458,"props":4895,"children":4896},{},[4897],{"type":451,"value":4898},"Add max wanted duration for citizens and vehicles",{"type":445,"tag":458,"props":4900,"children":4901},{},[4902],{"type":451,"value":4903},"Make citizen height searchable",{"type":445,"tag":458,"props":4905,"children":4906},{},[4907],{"type":451,"value":4908},"Add browser topic to discord bot \u002Fhelp command",{"type":445,"tag":458,"props":4910,"children":4911},{},[4912],{"type":451,"value":4913},"Add all and own documents tabs to doc list",{"type":445,"tag":458,"props":4915,"children":4916},{},[4917],{"type":451,"value":4918},"Add id copy badge to account list",{"type":445,"tag":458,"props":4920,"children":4921},{},[4922],{"type":451,"value":4923},"Add trigger user sync to settings system service",{"type":445,"tag":458,"props":4925,"children":4926},{},[4927],{"type":451,"value":4928},"Add tiptap suggestion menu and re-gen proto ts files",{"type":445,"tag":458,"props":4930,"children":4931},{},[4932],{"type":451,"value":4933},"Add sync user table for debugging",{"type":445,"tag":458,"props":4935,"children":4936},{},[4937],{"type":451,"value":4938},"Add xxhash logic to dbsync users and vehicles syncers",{"type":445,"tag":458,"props":4940,"children":4941},{},[4942],{"type":451,"value":4943},"Add custom useSounds to replace @vueuse\u002Fsound and add custom",{"type":445,"tag":458,"props":4945,"children":4946},{},[4947],{"type":451,"value":4948},"Add search bar to document templates list",{"type":445,"tag":458,"props":4950,"children":4951},{},[4952],{"type":451,"value":4953},"Replace qualifications tabs into separate pages",{"type":445,"tag":458,"props":4955,"children":4956},{},[4957],{"type":451,"value":4958},"Add metrics to dbsync",{"type":445,"tag":458,"props":4960,"children":4961},{},[4962],{"type":451,"value":4963},"Add penalty calculator integration for editor",{"type":445,"tag":458,"props":4965,"children":4966},{},[4967],{"type":451,"value":4968},"Store penaltycalculator data in document",{"type":445,"tag":446,"props":4970,"children":4971},{"id":511},[4972],{"type":451,"value":514},{"type":445,"tag":454,"props":4974,"children":4975},{},[4976,4981,4986,4991,4996,5001,5006,5011,5016,5021,5026,5031,5036,5041,5046,5051,5056,5061,5066,5071,5076,5081,5086,5091,5096,5101,5106,5111,5116,5121,5126,5131,5136,5141,5146,5151,5156,5161,5166,5171,5176,5181,5186,5191,5196,5201,5206,5211,5216,5221,5226,5231,5236,5241,5246,5251,5256,5261,5266,5271,5276,5281,5286,5291,5296,5301,5306,5311,5316,5321,5326,5331,5336,5341,5346,5351,5356,5361,5366,5371,5376,5381,5386,5391,5396,5401,5406,5411,5416,5421,5426,5431,5436,5441,5446,5451,5456,5461,5466,5471,5476,5481,5486,5491,5496,5501,5506,5511,5516,5521,5526,5531,5536,5548,5553,5558,5563,5568,5573],{"type":445,"tag":458,"props":4977,"children":4978},{},[4979],{"type":451,"value":4980},"Change impersonation to original job in auth tokens",{"type":445,"tag":458,"props":4982,"children":4983},{},[4984],{"type":451,"value":4985},"Add original job to debug info",{"type":445,"tag":458,"props":4987,"children":4988},{},[4989],{"type":451,"value":4990},"Pinned document list not appearing on wide screens (2xl)",{"type":445,"tag":458,"props":4992,"children":4993},{},[4994],{"type":451,"value":4995},"Add button component to \u002Ffivenet command",{"type":445,"tag":458,"props":4997,"children":4998},{},[4999],{"type":451,"value":5000},"Discord bot modules to use new fivenet_user_jobs table",{"type":445,"tag":458,"props":5002,"children":5003},{},[5004],{"type":451,"value":5005},"Test data type",{"type":445,"tag":458,"props":5007,"children":5008},{},[5009],{"type":451,"value":5010},"Add test case for userinfo discord bot module",{"type":445,"tag":458,"props":5012,"children":5013},{},[5014],{"type":451,"value":5015},"Length based comparisons off by one",{"type":445,"tag":458,"props":5017,"children":5018},{},[5019],{"type":451,"value":5020},"Default config default values for discord bot section",{"type":445,"tag":458,"props":5022,"children":5023},{},[5024],{"type":451,"value":5025},"Dbsync accounts column names",{"type":445,"tag":458,"props":5027,"children":5028},{},[5029],{"type":451,"value":5030},"Nil issue in dbsync state logic",{"type":445,"tag":458,"props":5032,"children":5033},{},[5034],{"type":451,"value":5035},"Dbsync state file upgrades",{"type":445,"tag":458,"props":5037,"children":5038},{},[5039],{"type":451,"value":5040},"Single account group not converted to groups for accounts table",{"type":445,"tag":458,"props":5042,"children":5043},{},[5044],{"type":451,"value":5045},"Dbsync accounts groups issues",{"type":445,"tag":458,"props":5047,"children":5048},{},[5049],{"type":451,"value":5050},"Data separation migration queries",{"type":445,"tag":458,"props":5052,"children":5053},{},[5054],{"type":451,"value":5055},"Account update activity sync",{"type":445,"tag":458,"props":5057,"children":5058},{},[5059],{"type":451,"value":5060},"Discord bot group sync group query",{"type":445,"tag":458,"props":5062,"children":5063},{},[5064],{"type":451,"value":5065},"Document view empty when first child content is empty",{"type":445,"tag":458,"props":5067,"children":5068},{},[5069],{"type":451,"value":5070},"User claims and user info \"merge\"",{"type":445,"tag":458,"props":5072,"children":5073},{},[5074],{"type":451,"value":5075},"Conduct entry creation",{"type":445,"tag":458,"props":5077,"children":5078},{},[5079],{"type":451,"value":5080},"Colleague info popover causing error notification",{"type":445,"tag":458,"props":5082,"children":5083},{},[5084],{"type":451,"value":5085},"Discord groupsync issues",{"type":445,"tag":458,"props":5087,"children":5088},{},[5089],{"type":451,"value":5090},"Show offset in dbsync log messages",{"type":445,"tag":458,"props":5092,"children":5093},{},[5094],{"type":451,"value":5095},"Add license field to users for faster lookups",{"type":445,"tag":458,"props":5097,"children":5098},{},[5099],{"type":451,"value":5100},"Improve dbsync log fields",{"type":445,"tag":458,"props":5102,"children":5103},{},[5104],{"type":451,"value":5105},"Dbsync user updates not updating license",{"type":445,"tag":458,"props":5107,"children":5108},{},[5109],{"type":451,"value":5110},"Increase tiptap doc limit for now due to base64 images",{"type":445,"tag":458,"props":5112,"children":5113},{},[5114],{"type":451,"value":5115},"Conduct register editor issues",{"type":445,"tag":458,"props":5117,"children":5118},{},[5119],{"type":451,"value":5120},"Adjust sync api user id\u002Fidentifier \"override\" logic",{"type":445,"tag":458,"props":5122,"children":5123},{},[5124],{"type":451,"value":5125},"Attempt to fix user sync issue",{"type":445,"tag":458,"props":5127,"children":5128},{},[5129],{"type":451,"value":5130},"Override all columns even for \"new\" users in sync api",{"type":445,"tag":458,"props":5132,"children":5133},{},[5134],{"type":451,"value":5135},"Issues with source code modal in template editor",{"type":445,"tag":458,"props":5137,"children":5138},{},[5139],{"type":451,"value":5140},"Remove rounding of document list tabs",{"type":445,"tag":458,"props":5142,"children":5143},{},[5144],{"type":451,"value":5145},"Move doc tabs to a toolbar",{"type":445,"tag":458,"props":5147,"children":5148},{},[5149],{"type":451,"value":5150},"Start to streamline dbsync syncer logic",{"type":445,"tag":458,"props":5152,"children":5153},{},[5154],{"type":451,"value":5155},"Db migration info missing when migrations are skipped",{"type":445,"tag":458,"props":5157,"children":5158},{},[5159],{"type":451,"value":5160},"Add debug log for single user sync calls",{"type":445,"tag":458,"props":5162,"children":5163},{},[5164],{"type":451,"value":5165},"Dbsync state init order issue",{"type":445,"tag":458,"props":5167,"children":5168},{},[5169],{"type":451,"value":5170},"Dbsync stream message forwarding",{"type":445,"tag":458,"props":5172,"children":5173},{},[5174],{"type":451,"value":5175},"Dbsync single user sync query",{"type":445,"tag":458,"props":5177,"children":5178},{},[5179],{"type":451,"value":5180},"Sync api incorrectly updating users",{"type":445,"tag":458,"props":5182,"children":5183},{},[5184],{"type":451,"value":5185},"Set user blood type on create in sync api",{"type":445,"tag":458,"props":5187,"children":5188},{},[5189],{"type":451,"value":5190},"Improve user duplication handling logic",{"type":445,"tag":458,"props":5192,"children":5193},{},[5194],{"type":451,"value":5195},"Remove debug output from sync logic",{"type":445,"tag":458,"props":5197,"children":5198},{},[5199],{"type":451,"value":5200},"Vehicle owner identifier not selected correctly for auto query",{"type":445,"tag":458,"props":5202,"children":5203},{},[5204],{"type":451,"value":5205},"Dbsync sync client causing issues on restart",{"type":445,"tag":458,"props":5207,"children":5208},{},[5209],{"type":451,"value":5210},"Add tests to groupsync module for planUser logic",{"type":445,"tag":458,"props":5212,"children":5213},{},[5214],{"type":451,"value":5215},"Rename dbsync tablemanager files",{"type":445,"tag":458,"props":5217,"children":5218},{},[5219],{"type":451,"value":5220},"Improve discord qualifications module",{"type":445,"tag":458,"props":5222,"children":5223},{},[5224],{"type":451,"value":5225},"Improve discord bot base module handling",{"type":445,"tag":458,"props":5227,"children":5228},{},[5229],{"type":451,"value":5230},"Discord qualifications module query issue",{"type":445,"tag":458,"props":5232,"children":5233},{},[5234],{"type":451,"value":5235},"Add tests for leaderelection",{"type":445,"tag":458,"props":5237,"children":5238},{},[5239],{"type":451,"value":5240},"Cleanup foreign key to esx users references",{"type":445,"tag":458,"props":5242,"children":5243},{},[5244],{"type":451,"value":5245},"Groupsync only using account id at the moment",{"type":445,"tag":458,"props":5247,"children":5248},{},[5249],{"type":451,"value":5250},"Discord user's roles sum merging",{"type":445,"tag":458,"props":5252,"children":5253},{},[5254],{"type":451,"value":5255},"Example for dbsync user sex mapping",{"type":445,"tag":458,"props":5257,"children":5258},{},[5259],{"type":451,"value":5260},"Use partial json unmarshal as default",{"type":445,"tag":458,"props":5262,"children":5263},{},[5264],{"type":451,"value":5265},"Only show documents pinned list for xl",{"type":445,"tag":458,"props":5267,"children":5268},{},[5269],{"type":451,"value":5270},"Oauth2 login",{"type":445,"tag":458,"props":5272,"children":5273},{},[5274],{"type":451,"value":5275},"Dbsync user jobs comparison",{"type":445,"tag":458,"props":5277,"children":5278},{},[5279],{"type":451,"value":5280},"Dbsync user jobs and phone number comparison + add tests",{"type":445,"tag":458,"props":5282,"children":5283},{},[5284],{"type":451,"value":5285},"Dbsync single user query issue",{"type":445,"tag":458,"props":5287,"children":5288},{},[5289],{"type":451,"value":5290},"Colleague info page prefix\u002Fsuffix not having any distance",{"type":445,"tag":458,"props":5292,"children":5293},{},[5294],{"type":451,"value":5295},"Auth password forgot form not unlocking form",{"type":445,"tag":458,"props":5297,"children":5298},{},[5299],{"type":451,"value":5300},"Discord oauth2 connect not working",{"type":445,"tag":458,"props":5302,"children":5303},{},[5304],{"type":451,"value":5305},"Oauth2 connect test case",{"type":445,"tag":458,"props":5307,"children":5308},{},[5309],{"type":451,"value":5310},"Improve yjs editor reconnection not resetting loading state",{"type":445,"tag":458,"props":5312,"children":5313},{},[5314],{"type":451,"value":5315},"Use configured limits for syncers",{"type":445,"tag":458,"props":5317,"children":5318},{},[5319],{"type":451,"value":5320},"Cleanup centrum color funcs",{"type":445,"tag":458,"props":5322,"children":5323},{},[5324],{"type":451,"value":5325},"Remove sound config from nuxt.config.ts",{"type":445,"tag":458,"props":5327,"children":5328},{},[5329],{"type":451,"value":5330},"Dbsync hashes length check issue",{"type":445,"tag":458,"props":5332,"children":5333},{},[5334],{"type":451,"value":5335},"Remove z.coerce()...optional() calls",{"type":445,"tag":458,"props":5337,"children":5338},{},[5339],{"type":451,"value":5340},"Dbsync vehicles hash check not re-checking length after delete",{"type":445,"tag":458,"props":5342,"children":5343},{},[5344],{"type":451,"value":5345},"Livemap marker deletion causing all to disappear",{"type":445,"tag":458,"props":5347,"children":5348},{},[5349],{"type":451,"value":5350},"Attempt to fix infinite document workflow reminders",{"type":445,"tag":458,"props":5352,"children":5353},{},[5354],{"type":451,"value":5355},"Update code comments",{"type":445,"tag":458,"props":5357,"children":5358},{},[5359],{"type":451,"value":5360},"Update code workspace settings to fix code vitest extension",{"type":445,"tag":458,"props":5362,"children":5363},{},[5364],{"type":451,"value":5365},"Qualification view toolbar showing when empty",{"type":445,"tag":458,"props":5367,"children":5368},{},[5369],{"type":451,"value":5370},"Cleanup qualification exam ui handling",{"type":445,"tag":458,"props":5372,"children":5373},{},[5374],{"type":451,"value":5375},"Superuser mode toggle",{"type":445,"tag":458,"props":5377,"children":5378},{},[5379],{"type":451,"value":5380},"Improve auth info box texts when in-game (NUI is enabled)",{"type":445,"tag":458,"props":5382,"children":5383},{},[5384],{"type":451,"value":5385},"Discord qualifications role sync",{"type":445,"tag":458,"props":5387,"children":5388},{},[5389],{"type":451,"value":5390},"Improve auth service error messages",{"type":445,"tag":458,"props":5392,"children":5393},{},[5394],{"type":451,"value":5395},"Oauth2 user store not updating tokens correctly",{"type":445,"tag":458,"props":5397,"children":5398},{},[5399],{"type":451,"value":5400},"Make discord guild\u002Fserver select menu full width",{"type":445,"tag":458,"props":5402,"children":5403},{},[5404],{"type":451,"value":5405},"Use user jobs table for timeclock colleague job",{"type":445,"tag":458,"props":5407,"children":5408},{},[5409],{"type":451,"value":5410},"Remove debug output",{"type":445,"tag":458,"props":5412,"children":5413},{},[5414],{"type":451,"value":5415},"Change field names of auth service Change* methods",{"type":445,"tag":458,"props":5417,"children":5418},{},[5419],{"type":451,"value":5420},"Discord qualifications module user account id query",{"type":445,"tag":458,"props":5422,"children":5423},{},[5424],{"type":451,"value":5425},"Discord qualifications role user plan logic",{"type":445,"tag":458,"props":5427,"children":5428},{},[5429],{"type":451,"value":5430},"Correctly query accounts and user jobs table in discord",{"type":445,"tag":458,"props":5432,"children":5433},{},[5434],{"type":451,"value":5435},"Fabricjs center\u002Fzoom issues",{"type":445,"tag":458,"props":5437,"children":5438},{},[5439],{"type":451,"value":5440},"Contine refining fabric editor components",{"type":445,"tag":458,"props":5442,"children":5443},{},[5444],{"type":451,"value":5445},"Is empty rich content doc check",{"type":445,"tag":458,"props":5447,"children":5448},{},[5449],{"type":451,"value":5450},"Remove synced up state from dbsync state",{"type":445,"tag":458,"props":5452,"children":5453},{},[5454],{"type":451,"value":5455},"Move to db cursor based paging for dbsync users and vehicles data",{"type":445,"tag":458,"props":5457,"children":5458},{},[5459],{"type":451,"value":5460},"Add Resync() func for single syncs",{"type":445,"tag":458,"props":5462,"children":5463},{},[5464],{"type":451,"value":5465},"User phone numbers insert on update query issue",{"type":445,"tag":458,"props":5467,"children":5468},{},[5469],{"type":451,"value":5470},"Make gen-sql",{"type":445,"tag":458,"props":5472,"children":5473},{},[5474],{"type":451,"value":5475},"Cleanup user phone numbers in user dbsync syncer",{"type":445,"tag":458,"props":5477,"children":5478},{},[5479],{"type":451,"value":5480},"Dbsync user sync not running as expected",{"type":445,"tag":458,"props":5482,"children":5483},{},[5484],{"type":451,"value":5485},"Simple dbsync query order by columns",{"type":445,"tag":458,"props":5487,"children":5488},{},[5489],{"type":451,"value":5490},"Improve dbsync batch loop limitation",{"type":445,"tag":458,"props":5492,"children":5493},{},[5494],{"type":451,"value":5495},"Cleanup dbsync log fields",{"type":445,"tag":458,"props":5497,"children":5498},{},[5499],{"type":451,"value":5500},"Dbsync accounts setting last check",{"type":445,"tag":458,"props":5502,"children":5503},{},[5504],{"type":451,"value":5505},"Handle duplicate user in dbsync user creation",{"type":445,"tag":458,"props":5507,"children":5508},{},[5509],{"type":451,"value":5510},"Drop overlapping indexes",{"type":445,"tag":458,"props":5512,"children":5513},{},[5514],{"type":451,"value":5515},"Duplicate indexes migration",{"type":445,"tag":458,"props":5517,"children":5518},{},[5519],{"type":451,"value":5520},"Cleanup otel noop module",{"type":445,"tag":458,"props":5522,"children":5523},{},[5524],{"type":451,"value":5525},"Role deletion not working and add reset role button",{"type":445,"tag":458,"props":5527,"children":5528},{},[5529],{"type":451,"value":5530},"Dispatches not appearing in map cluster picker list",{"type":445,"tag":458,"props":5532,"children":5533},{},[5534],{"type":451,"value":5535},"Get colleague using correct user jobs job condition",{"type":445,"tag":458,"props":5537,"children":5538},{},[5539,5541,5546],{"type":451,"value":5540},"Replace mysql.",{"type":445,"tag":462,"props":5542,"children":5543},{},[5544],{"type":451,"value":5545},"Exp(mysql.Raw",{"type":451,"value":5547},"()) with mysql.Raw*() directly",{"type":445,"tag":458,"props":5549,"children":5550},{},[5551],{"type":451,"value":5552},"Move to livemap dispatches_job_JOB layers instead of dispatches_all",{"type":445,"tag":458,"props":5554,"children":5555},{},[5556],{"type":451,"value":5557},"Hide penalty calc button for documents editor",{"type":445,"tag":458,"props":5559,"children":5560},{},[5561],{"type":451,"value":5562},"Missing tooltip in penalty calc view",{"type":445,"tag":458,"props":5564,"children":5565},{},[5566],{"type":451,"value":5567},"Normalize groupsync map",{"type":445,"tag":458,"props":5569,"children":5570},{},[5571],{"type":451,"value":5572},"Search and replace popover result view",{"type":445,"tag":458,"props":5574,"children":5575},{},[5576],{"type":451,"value":5577},"Penalty calculator view showing alert box",{"data":5579,"body":5580},{},{"type":442,"children":5581},[5582,5586],{"type":445,"tag":446,"props":5583,"children":5584},{"id":511},[5585],{"type":451,"value":514},{"type":445,"tag":454,"props":5587,"children":5588},{},[5589],{"type":445,"tag":458,"props":5590,"children":5591},{},[5592],{"type":451,"value":5593},"Content type enum sql issue",{"data":5595,"body":5596},{},{"type":442,"children":5597},[5598,5602],{"type":445,"tag":446,"props":5599,"children":5600},{"id":511},[5601],{"type":451,"value":514},{"type":445,"tag":454,"props":5603,"children":5604},{},[5605,5610,5615],{"type":445,"tag":458,"props":5606,"children":5607},{},[5608],{"type":451,"value":5609},"Git release notes showing wrong version",{"type":445,"tag":458,"props":5611,"children":5612},{},[5613],{"type":451,"value":5614},"Http server always returning 400",{"type":445,"tag":458,"props":5616,"children":5617},{},[5618],{"type":451,"value":5619},"Api routes grouping",{"data":5621,"body":5622},{},{"type":442,"children":5623},[5624,5631,5637,5650,5654,5717,5721,5924,5928],{"type":445,"tag":5625,"props":5626,"children":5628},"h1",{"id":5627},"changelog",[5629],{"type":451,"value":5630},"Changelog",{"type":445,"tag":5632,"props":5633,"children":5634},"p",{},[5635],{"type":451,"value":5636},"All notable changes to this project will be documented in this file.",{"type":445,"tag":5638,"props":5639,"children":5641},"h2",{"id":5640},"_2025120-2026-01-17",[5642,5648],{"type":445,"tag":5643,"props":5644,"children":5645},"span",{},[5646],{"type":451,"value":5647},"2025.12.0",{"type":451,"value":5649}," - 2026-01-17",{"type":445,"tag":446,"props":5651,"children":5652},{"id":448},[5653],{"type":451,"value":452},{"type":445,"tag":454,"props":5655,"children":5656},{},[5657,5662,5667,5672,5677,5682,5687,5692,5697,5702,5707,5712],{"type":445,"tag":458,"props":5658,"children":5659},{},[5660],{"type":451,"value":5661},"Add aligning guidelines to fabric",{"type":445,"tag":458,"props":5663,"children":5664},{},[5665],{"type":451,"value":5666},"Add copy debug info button",{"type":445,"tag":458,"props":5668,"children":5669},{},[5670],{"type":451,"value":5671},"Add registered since time to account info",{"type":445,"tag":458,"props":5673,"children":5674},{},[5675],{"type":451,"value":5676},"Migrate html json legacy to tiptap json format",{"type":445,"tag":458,"props":5678,"children":5679},{},[5680],{"type":451,"value":5681},"Add \"focus\" mode (highlight current block) to tiptap",{"type":445,"tag":458,"props":5683,"children":5684},{},[5685],{"type":451,"value":5686},"Add notification for editor file upload",{"type":445,"tag":458,"props":5688,"children":5689},{},[5690],{"type":451,"value":5691},"Dbsync service arguments and added status command",{"type":445,"tag":458,"props":5693,"children":5694},{},[5695],{"type":451,"value":5696},"Add basic data mode structure",{"type":445,"tag":458,"props":5698,"children":5699},{},[5700],{"type":451,"value":5701},"Add timeclock entry generation to demo data",{"type":445,"tag":458,"props":5703,"children":5704},{},[5705],{"type":451,"value":5706},"Image proxy + iconify api always enabled",{"type":445,"tag":458,"props":5708,"children":5709},{},[5710],{"type":451,"value":5711},"Add v-model to fabricjs editor component",{"type":445,"tag":458,"props":5713,"children":5714},{},[5715],{"type":451,"value":5716},"Add basics for config validation and image proxy minimum cache",{"type":445,"tag":446,"props":5718,"children":5719},{"id":511},[5720],{"type":451,"value":514},{"type":445,"tag":454,"props":5722,"children":5723},{},[5724,5729,5734,5739,5744,5749,5754,5759,5764,5769,5774,5779,5784,5789,5794,5799,5804,5809,5814,5819,5824,5829,5834,5839,5844,5849,5854,5859,5864,5869,5874,5879,5884,5889,5894,5899,5904,5909,5914,5919],{"type":445,"tag":458,"props":5725,"children":5726},{},[5727],{"type":451,"value":5728},"Wiki page toc not showing correctly and cleanup path logic",{"type":445,"tag":458,"props":5730,"children":5731},{},[5732],{"type":451,"value":5733},"Doc relation and reference addition\u002Fremoval not working",{"type":445,"tag":458,"props":5735,"children":5736},{},[5737],{"type":451,"value":5738},"Penalty calculator warning not respecting new lines",{"type":445,"tag":458,"props":5740,"children":5741},{},[5742],{"type":451,"value":5743},"Port filesystem storage and wrapper changes from feature branch",{"type":445,"tag":458,"props":5745,"children":5746},{},[5747],{"type":451,"value":5748},"Implement tiptap json for more editors",{"type":445,"tag":458,"props":5750,"children":5751},{},[5752],{"type":451,"value":5753},"Continue work on implementing new tiptap json content format",{"type":445,"tag":458,"props":5755,"children":5756},{},[5757],{"type":451,"value":5758},"Filesystem storage test issues",{"type":445,"tag":458,"props":5760,"children":5761},{},[5762],{"type":451,"value":5763},"Fixup issues caused by switch to tiptap json format",{"type":445,"tag":458,"props":5765,"children":5766},{},[5767],{"type":451,"value":5768},"Editor version diff\u002Fhistory modal",{"type":445,"tag":458,"props":5770,"children":5771},{},[5772],{"type":451,"value":5773},"Content detection in content query logic",{"type":445,"tag":458,"props":5775,"children":5776},{},[5777],{"type":451,"value":5778},"Dbsync config loading",{"type":445,"tag":458,"props":5780,"children":5781},{},[5782],{"type":451,"value":5783},"Dbsync not adding database config to base config",{"type":445,"tag":458,"props":5785,"children":5786},{},[5787],{"type":451,"value":5788},"Dbsync applying migrations due to table manager",{"type":445,"tag":458,"props":5790,"children":5791},{},[5792],{"type":451,"value":5793},"Dbsync query issues with \"empty\" conditions",{"type":445,"tag":458,"props":5795,"children":5796},{},[5797],{"type":451,"value":5798},"Dbsync jobs query issues",{"type":445,"tag":458,"props":5800,"children":5801},{},[5802],{"type":451,"value":5803},"Allow columns to be disabled in dbsync",{"type":445,"tag":458,"props":5805,"children":5806},{},[5807],{"type":451,"value":5808},"Dbsync sql not ignoring columns",{"type":445,"tag":458,"props":5810,"children":5811},{},[5812],{"type":451,"value":5813},"Add missing dbsync started log message",{"type":445,"tag":458,"props":5815,"children":5816},{},[5817],{"type":451,"value":5818},"Dbsync jobs filter causing out of bounds",{"type":445,"tag":458,"props":5820,"children":5821},{},[5822],{"type":451,"value":5823},"UseLogger prefix type check",{"type":445,"tag":458,"props":5825,"children":5826},{},[5827],{"type":451,"value":5828},"Improve dbsync table manager",{"type":445,"tag":458,"props":5830,"children":5831},{},[5832],{"type":451,"value":5833},"Fx opts issue caused by dbsync module changes",{"type":445,"tag":458,"props":5835,"children":5836},{},[5837],{"type":451,"value":5838},"Update fx modules ordering",{"type":445,"tag":458,"props":5840,"children":5841},{},[5842],{"type":451,"value":5843},"Add missing tests-js makefile target",{"type":445,"tag":458,"props":5845,"children":5846},{},[5847],{"type":451,"value":5848},"Add fx modules and re-order in list",{"type":445,"tag":458,"props":5850,"children":5851},{},[5852],{"type":451,"value":5853},"Change dbsync stream \"dropped\" to warn",{"type":445,"tag":458,"props":5855,"children":5856},{},[5857],{"type":451,"value":5858},"Test issues caused by recent db migrations",{"type":445,"tag":458,"props":5860,"children":5861},{},[5862],{"type":451,"value":5863},"Add char limits to editors",{"type":445,"tag":458,"props":5865,"children":5866},{},[5867],{"type":451,"value":5868},"Show timeclock entries regardless of user's actual job as long as",{"type":445,"tag":458,"props":5870,"children":5871},{},[5872],{"type":451,"value":5873},"Approval signatures getting inserted with \"different\" snapshot date",{"type":445,"tag":458,"props":5875,"children":5876},{},[5877],{"type":451,"value":5878},"Return document meta with ListApprovalPolicies response",{"type":445,"tag":458,"props":5880,"children":5881},{},[5882],{"type":451,"value":5883},"Update eslint config to ignore no multiple template root errors",{"type":445,"tag":458,"props":5885,"children":5886},{},[5887],{"type":451,"value":5888},"Broken image url",{"type":445,"tag":458,"props":5890,"children":5891},{},[5892],{"type":451,"value":5893},"Backend filestore routing and change some modals to drawers",{"type":445,"tag":458,"props":5895,"children":5896},{},[5897],{"type":451,"value":5898},"Issues with job logo and switch to rounded-md for avatars",{"type":445,"tag":458,"props":5900,"children":5901},{},[5902],{"type":451,"value":5903},"Center document state and approved badges in doc list",{"type":445,"tag":458,"props":5905,"children":5906},{},[5907],{"type":451,"value":5908},"Add line-clamp to qualification tutor list comment and summary",{"type":445,"tag":458,"props":5910,"children":5911},{},[5912],{"type":451,"value":5913},"Qualifications toolbar missing classes",{"type":445,"tag":458,"props":5915,"children":5916},{},[5917],{"type":451,"value":5918},"Start fixing button colors and improve template selection",{"type":445,"tag":458,"props":5920,"children":5921},{},[5922],{"type":451,"value":5923},"Switch to xsync map All() in favor of Range() with funcs",{"type":445,"tag":446,"props":5925,"children":5926},{"id":1452},[5927],{"type":451,"value":1455},{"type":445,"tag":454,"props":5929,"children":5930},{},[5931],{"type":445,"tag":458,"props":5932,"children":5933},{},[5934],{"type":451,"value":5935},"Remove container-build step in favor of matrix container build",{"data":5937,"body":5938},{},{"type":442,"children":5939},[5940,5944,5948,5959,5963,5971,5975,6033,6037],{"type":445,"tag":5625,"props":5941,"children":5942},{"id":5627},[5943],{"type":451,"value":5630},{"type":445,"tag":5632,"props":5945,"children":5946},{},[5947],{"type":451,"value":5636},{"type":445,"tag":5638,"props":5949,"children":5951},{"id":5950},"_2025110-2025-12-30",[5952,5957],{"type":445,"tag":5643,"props":5953,"children":5954},{},[5955],{"type":451,"value":5956},"2025.11.0",{"type":451,"value":5958}," - 2025-12-30",{"type":445,"tag":446,"props":5960,"children":5961},{"id":4870},[5962],{"type":451,"value":4873},{"type":445,"tag":454,"props":5964,"children":5965},{},[5966],{"type":445,"tag":458,"props":5967,"children":5968},{},[5969],{"type":451,"value":5970},"Add otelsql breaking changes",{"type":445,"tag":446,"props":5972,"children":5973},{"id":448},[5974],{"type":451,"value":452},{"type":445,"tag":454,"props":5976,"children":5977},{},[5978,5983,5988,5993,5998,6003,6008,6013,6018,6023,6028],{"type":445,"tag":458,"props":5979,"children":5980},{},[5981],{"type":451,"value":5982},"Add duplicate validation for access entries",{"type":445,"tag":458,"props":5984,"children":5985},{},[5986],{"type":451,"value":5987},"Continue document layouts work",{"type":445,"tag":458,"props":5989,"children":5990},{},[5991],{"type":451,"value":5992},"Use fabricjs to create a svg editor",{"type":445,"tag":458,"props":5994,"children":5995},{},[5996],{"type":451,"value":5997},"Rename layouts pages to forms",{"type":445,"tag":458,"props":5999,"children":6000},{},[6001],{"type":451,"value":6002},"Add basic page structure for forms",{"type":445,"tag":458,"props":6004,"children":6005},{},[6006],{"type":451,"value":6007},"Add wip curved text to fabric editor",{"type":445,"tag":458,"props":6009,"children":6010},{},[6011],{"type":451,"value":6012},"Add toggle to disable event effects in user settings",{"type":445,"tag":458,"props":6014,"children":6015},{},[6016],{"type":451,"value":6017},"Add snow (event) effect to all layouts",{"type":445,"tag":458,"props":6019,"children":6020},{},[6021],{"type":451,"value":6022},"Implement notepad saving and auto save",{"type":445,"tag":458,"props":6024,"children":6025},{},[6026],{"type":451,"value":6027},"Add kbd shortcut to clipboard modal",{"type":445,"tag":458,"props":6029,"children":6030},{},[6031],{"type":451,"value":6032},"Add licenses for images\u002Ficons, fonts and update sounds",{"type":445,"tag":446,"props":6034,"children":6035},{"id":511},[6036],{"type":451,"value":514},{"type":445,"tag":454,"props":6038,"children":6039},{},[6040,6045,6050,6055,6060,6065,6070,6075,6080,6085,6090,6095,6100,6105,6110,6115,6120,6125],{"type":445,"tag":458,"props":6041,"children":6042},{},[6043],{"type":451,"value":6044},"Access entry issues and centrum sidebar unit header",{"type":445,"tag":458,"props":6046,"children":6047},{},[6048],{"type":451,"value":6049},"Adjust duplicate access entry warning texts",{"type":445,"tag":458,"props":6051,"children":6052},{},[6053],{"type":451,"value":6054},"Some ui logic issues",{"type":445,"tag":458,"props":6056,"children":6057},{},[6058],{"type":451,"value":6059},"Add hint for snow\u002Fholiday effect user settings toggle",{"type":445,"tag":458,"props":6061,"children":6062},{},[6063],{"type":451,"value":6064},"Jobs conduct deletion and restore not working as expected",{"type":445,"tag":458,"props":6066,"children":6067},{},[6068],{"type":451,"value":6069},"Disable notepad feature (still WIP)",{"type":445,"tag":458,"props":6071,"children":6072},{},[6073],{"type":451,"value":6074},"Remove .env.example",{"type":445,"tag":458,"props":6076,"children":6077},{},[6078],{"type":451,"value":6079},"Dashboard shortcuts not working and finalize notepad",{"type":445,"tag":458,"props":6081,"children":6082},{},[6083],{"type":451,"value":6084},"History store not correctly storing entries",{"type":445,"tag":458,"props":6086,"children":6087},{},[6088],{"type":451,"value":6089},"Editor source code textarea height not fitting to modal",{"type":445,"tag":458,"props":6091,"children":6092},{},[6093],{"type":451,"value":6094},"Re-gen proto gen files and show mathcalculator for all users",{"type":445,"tag":458,"props":6096,"children":6097},{},[6098],{"type":451,"value":6099},"Remove mathcalculator quickbutton",{"type":445,"tag":458,"props":6101,"children":6102},{},[6103],{"type":451,"value":6104},"Quickbuttons type issue caused by changes",{"type":445,"tag":458,"props":6106,"children":6107},{},[6108],{"type":451,"value":6109},"Job props proto unmarshal issue",{"type":445,"tag":458,"props":6111,"children":6112},{},[6113],{"type":451,"value":6114},"Fabric editor sidebar type issues",{"type":445,"tag":458,"props":6116,"children":6117},{},[6118],{"type":451,"value":6119},"Use links for templates in templates list page",{"type":445,"tag":458,"props":6121,"children":6122},{},[6123],{"type":451,"value":6124},"Ui job access check not using creatorJob override as expected",{"type":445,"tag":458,"props":6126,"children":6127},{},[6128],{"type":451,"value":6129},"Cleanup some log calls",{"data":6131,"body":6132},{},{"type":442,"children":6133},[6134,6138,6201,6205],{"type":445,"tag":446,"props":6135,"children":6136},{"id":448},[6137],{"type":451,"value":452},{"type":445,"tag":454,"props":6139,"children":6140},{},[6141,6146,6151,6156,6161,6166,6171,6176,6181,6186,6191,6196],{"type":445,"tag":458,"props":6142,"children":6143},{},[6144],{"type":451,"value":6145},"Add follow user location to livemap user marker",{"type":445,"tag":458,"props":6147,"children":6148},{},[6149],{"type":451,"value":6150},"Add livemap \"smart select\" for when a lot of markers are at the",{"type":445,"tag":458,"props":6152,"children":6153},{},[6154],{"type":451,"value":6155},"Replace nanoid with crypto.randomUUID in format builder",{"type":445,"tag":458,"props":6157,"children":6158},{},[6159],{"type":451,"value":6160},"Add document self approve option for approval policies",{"type":445,"tag":458,"props":6162,"children":6163},{},[6164],{"type":451,"value":6165},"Add self approve allowed to approval ui elements",{"type":445,"tag":458,"props":6167,"children":6168},{},[6169],{"type":451,"value":6170},"Hide markers of invisible layers in multi select picker",{"type":445,"tag":458,"props":6172,"children":6173},{},[6174],{"type":451,"value":6175},"Update to nuxt 4.2.1 and nuxt ui 4.1.0",{"type":445,"tag":458,"props":6177,"children":6178},{},[6179],{"type":451,"value":6180},"Improve math and penalty calculator logic",{"type":445,"tag":458,"props":6182,"children":6183},{},[6184],{"type":451,"value":6185},"Query builder using columns + table name for dbsync",{"type":445,"tag":458,"props":6187,"children":6188},{},[6189],{"type":451,"value":6190},"Cleanup app config structure and approval calculation logic",{"type":445,"tag":458,"props":6192,"children":6193},{},[6194],{"type":451,"value":6195},"Add more tests to utils functions",{"type":445,"tag":458,"props":6197,"children":6198},{},[6199],{"type":451,"value":6200},"Add penalty calculator settings and warn message with thresholds",{"type":445,"tag":446,"props":6202,"children":6203},{"id":511},[6204],{"type":451,"value":514},{"type":445,"tag":454,"props":6206,"children":6207},{},[6208,6213,6218,6223,6228,6233,6238,6243,6248,6253,6258,6263,6268,6273,6278,6283,6288,6293,6298,6303,6308,6313,6318,6323,6328,6333,6338,6343,6348,6353,6358,6363,6368,6373,6378,6383,6388],{"type":445,"tag":458,"props":6209,"children":6210},{},[6211],{"type":451,"value":6212},"Remove approval service todo comment",{"type":445,"tag":458,"props":6214,"children":6215},{},[6216],{"type":451,"value":6217},"Generic img disabled style when popover is disabled",{"type":445,"tag":458,"props":6219,"children":6220},{},[6221],{"type":451,"value":6222},"Calendar access check",{"type":445,"tag":458,"props":6224,"children":6225},{},[6226],{"type":451,"value":6227},"Approval policy creation issue from template data",{"type":445,"tag":458,"props":6229,"children":6230},{},[6231],{"type":451,"value":6232},"User marker self follow and unmarshal in userinfo retriever",{"type":445,"tag":458,"props":6234,"children":6235},{},[6236],{"type":451,"value":6237},"Notification stream not being started anymore",{"type":445,"tag":458,"props":6239,"children":6240},{},[6241],{"type":451,"value":6242},"Change livemap multi hit group order",{"type":445,"tag":458,"props":6244,"children":6245},{},[6246],{"type":451,"value":6247},"Livemap single marker not showing popup anymore",{"type":445,"tag":458,"props":6249,"children":6250},{},[6251],{"type":451,"value":6252},"Allow log level toggle in debug info for anyone",{"type":445,"tag":458,"props":6254,"children":6255},{},[6256],{"type":451,"value":6257},"Remove unused vars from debug info",{"type":445,"tag":458,"props":6259,"children":6260},{},[6261],{"type":451,"value":6262},"Jsdoc comments in stores and fine grained livemap subject filters",{"type":445,"tag":458,"props":6264,"children":6265},{},[6266],{"type":451,"value":6267},"Go format issues",{"type":445,"tag":458,"props":6269,"children":6270},{},[6271],{"type":451,"value":6272},"Missing wiki page activity translation and traffic points modal",{"type":445,"tag":458,"props":6274,"children":6275},{},[6276],{"type":451,"value":6277},"Citizens actions double sidebar issue",{"type":445,"tag":458,"props":6279,"children":6280},{},[6281],{"type":451,"value":6282},"Notification list html ui structure",{"type":445,"tag":458,"props":6284,"children":6285},{},[6286],{"type":451,"value":6287},"Don't compile i18n vars replacement regex every call",{"type":445,"tag":458,"props":6289,"children":6290},{},[6291],{"type":451,"value":6292},"Qualification tutor view user search",{"type":445,"tag":458,"props":6294,"children":6295},{},[6296],{"type":451,"value":6297},"Add missing filters logic for users job",{"type":445,"tag":458,"props":6299,"children":6300},{},[6301],{"type":451,"value":6302},"Change self approve default value of table column",{"type":445,"tag":458,"props":6304,"children":6305},{},[6306],{"type":451,"value":6307},"Improve config structs to avoid duplication in dbsync",{"type":445,"tag":458,"props":6309,"children":6310},{},[6311],{"type":451,"value":6312},"Timestamp\u002Fdatetime mixup",{"type":445,"tag":458,"props":6314,"children":6315},{},[6316],{"type":451,"value":6317},"Approval time\u002Ftimestamp insert",{"type":445,"tag":458,"props":6319,"children":6320},{},[6321],{"type":451,"value":6322},"Add renamed components",{"type":445,"tag":458,"props":6324,"children":6325},{},[6326],{"type":451,"value":6327},"Cleanup type issues and add basic penaltycalculator config",{"type":445,"tag":458,"props":6329,"children":6330},{},[6331],{"type":451,"value":6332},"Remove leftover generated file",{"type":445,"tag":458,"props":6334,"children":6335},{},[6336],{"type":451,"value":6337},"Livemap centrum sidebar issue on small screens",{"type":445,"tag":458,"props":6339,"children":6340},{},[6341],{"type":451,"value":6342},"Pinned list sizing and showing when it should be closed",{"type":445,"tag":458,"props":6344,"children":6345},{},[6346],{"type":451,"value":6347},"Livemap centrum sidebar showing when it shouldn't",{"type":445,"tag":458,"props":6349,"children":6350},{},[6351],{"type":451,"value":6352},"Check can stream to centrum sidebar",{"type":445,"tag":458,"props":6354,"children":6355},{},[6356],{"type":451,"value":6357},"Update css path for prettier plugin",{"type":445,"tag":458,"props":6359,"children":6360},{},[6361],{"type":451,"value":6362},"Format app files",{"type":445,"tag":458,"props":6364,"children":6365},{},[6366],{"type":451,"value":6367},"Bump helm chart version",{"type":445,"tag":458,"props":6369,"children":6370},{},[6371],{"type":451,"value":6372},"Add additional indexes for user locations table",{"type":445,"tag":458,"props":6374,"children":6375},{},[6376],{"type":451,"value":6377},"Import issue caused by utils import usage",{"type":445,"tag":458,"props":6379,"children":6380},{},[6381],{"type":451,"value":6382},"Add missing description text to penalty calculator app config",{"type":445,"tag":458,"props":6384,"children":6385},{},[6386],{"type":451,"value":6387},"Use intl format options for more number inputs",{"type":445,"tag":458,"props":6389,"children":6390},{},[6391],{"type":451,"value":6392},"Unused trailing-icon attribute",{"data":6394,"body":6395},{},{"type":442,"children":6396},[6397,6401,6405,6416,6420],{"type":445,"tag":5625,"props":6398,"children":6399},{"id":5627},[6400],{"type":451,"value":5630},{"type":445,"tag":5632,"props":6402,"children":6403},{},[6404],{"type":451,"value":5636},{"type":445,"tag":5638,"props":6406,"children":6408},{"id":6407},"_2025101-2025-10-24",[6409,6414],{"type":445,"tag":5643,"props":6410,"children":6411},{},[6412],{"type":451,"value":6413},"2025.10.1",{"type":451,"value":6415}," - 2025-10-24",{"type":445,"tag":446,"props":6417,"children":6418},{"id":511},[6419],{"type":451,"value":514},{"type":445,"tag":454,"props":6421,"children":6422},{},[6423,6428],{"type":445,"tag":458,"props":6424,"children":6425},{},[6426],{"type":451,"value":6427},"Aliased permissions appearing and type issues",{"type":445,"tag":458,"props":6429,"children":6430},{},[6431],{"type":451,"value":6432},"Approval recalculation and badges in ui",{"data":6434,"body":6435},{},{"type":442,"children":6436},[6437,6441,6445,6455,6459,6487,6491,6624,6628],{"type":445,"tag":5625,"props":6438,"children":6439},{"id":5627},[6440],{"type":451,"value":5630},{"type":445,"tag":5632,"props":6442,"children":6443},{},[6444],{"type":451,"value":5636},{"type":445,"tag":5638,"props":6446,"children":6448},{"id":6447},"_2025100-2025-10-24",[6449,6454],{"type":445,"tag":5643,"props":6450,"children":6451},{},[6452],{"type":451,"value":6453},"2025.10.0",{"type":451,"value":6415},{"type":445,"tag":446,"props":6456,"children":6457},{"id":448},[6458],{"type":451,"value":452},{"type":445,"tag":454,"props":6460,"children":6461},{},[6462,6467,6472,6477,6482],{"type":445,"tag":458,"props":6463,"children":6464},{},[6465],{"type":451,"value":6466},"Add toggle all layers button to livemap controls",{"type":445,"tag":458,"props":6468,"children":6469},{},[6470],{"type":451,"value":6471},"Add content nav to wiki smaller screens",{"type":445,"tag":458,"props":6473,"children":6474},{},[6475],{"type":451,"value":6476},"Add option to use unit color for user marker icon",{"type":445,"tag":458,"props":6478,"children":6479},{},[6480],{"type":451,"value":6481},"Allow multiple root wiki pages and improve wiki nav ui",{"type":445,"tag":458,"props":6483,"children":6484},{},[6485],{"type":451,"value":6486},"Add file list to wiki page view",{"type":445,"tag":446,"props":6488,"children":6489},{"id":511},[6490],{"type":451,"value":514},{"type":445,"tag":454,"props":6492,"children":6493},{},[6494,6499,6504,6509,6514,6519,6524,6529,6534,6539,6544,6549,6554,6559,6564,6569,6574,6579,6584,6589,6594,6599,6604,6609,6614,6619],{"type":445,"tag":458,"props":6495,"children":6496},{},[6497],{"type":451,"value":6498},"Document approved state calculation",{"type":445,"tag":458,"props":6500,"children":6501},{},[6502],{"type":451,"value":6503},"Approval badge showing in ui when it shouldn't",{"type":445,"tag":458,"props":6505,"children":6506},{},[6507],{"type":451,"value":6508},"Approval policy template form issue",{"type":445,"tag":458,"props":6510,"children":6511},{},[6512],{"type":451,"value":6513},"Pagination and sorting issues",{"type":445,"tag":458,"props":6515,"children":6516},{},[6517],{"type":451,"value":6518},"Doc deletion error and wiki root only acces check",{"type":445,"tag":458,"props":6520,"children":6521},{},[6522],{"type":451,"value":6523},"Tiptap editor table popover and add link display",{"type":445,"tag":458,"props":6525,"children":6526},{},[6527],{"type":451,"value":6528},"Remove signature-related columns and fields",{"type":445,"tag":458,"props":6530,"children":6531},{},[6532],{"type":451,"value":6533},"Wiki root only page listing using wrong page",{"type":445,"tag":458,"props":6535,"children":6536},{},[6537],{"type":451,"value":6538},"Wiki page list not showing all accessible pages",{"type":445,"tag":458,"props":6540,"children":6541},{},[6542],{"type":451,"value":6543},"Wiki startpage selection not ordering by parent id nulls first",{"type":445,"tag":458,"props":6545,"children":6546},{},[6547],{"type":451,"value":6548},"Remove debug output from list pages in wiki",{"type":445,"tag":458,"props":6550,"children":6551},{},[6552],{"type":451,"value":6553},"Citizen user docs sorting not working",{"type":445,"tag":458,"props":6555,"children":6556},{},[6557],{"type":451,"value":6558},"Select menu search not working due to key",{"type":445,"tag":458,"props":6560,"children":6561},{},[6562],{"type":451,"value":6563},"Citizen vehicles list showing all vehicles and qol fixes",{"type":445,"tag":458,"props":6565,"children":6566},{},[6567],{"type":451,"value":6568},"Vehicle list user id override",{"type":445,"tag":458,"props":6570,"children":6571},{},[6572],{"type":451,"value":6573},"Document template not creating policy on publish",{"type":445,"tag":458,"props":6575,"children":6576},{},[6577],{"type":451,"value":6578},"Livemap layer issue with users",{"type":445,"tag":458,"props":6580,"children":6581},{},[6582],{"type":451,"value":6583},"Unit housekeeping for unavailable not adding unit data to status",{"type":445,"tag":458,"props":6585,"children":6586},{},[6587],{"type":451,"value":6588},"Editor font selection showing untranslated value",{"type":445,"tag":458,"props":6590,"children":6591},{},[6592],{"type":451,"value":6593},"Grpc permission interceptor test",{"type":445,"tag":458,"props":6595,"children":6596},{},[6597],{"type":451,"value":6598},"Approval data not showing in template editor",{"type":445,"tag":458,"props":6600,"children":6601},{},[6602],{"type":451,"value":6603},"Wiki nav showing dummy page",{"type":445,"tag":458,"props":6605,"children":6606},{},[6607],{"type":451,"value":6608},"Permission multiple names screw up",{"type":445,"tag":458,"props":6610,"children":6611},{},[6612],{"type":451,"value":6613},"Perms cleanup migration",{"type":445,"tag":458,"props":6615,"children":6616},{},[6617],{"type":451,"value":6618},"Remove test json file",{"type":445,"tag":458,"props":6620,"children":6621},{},[6622],{"type":451,"value":6623},"Update helm version in channels file",{"type":445,"tag":446,"props":6625,"children":6626},{"id":1452},[6627],{"type":451,"value":1455},{"type":445,"tag":454,"props":6629,"children":6630},{},[6631],{"type":445,"tag":458,"props":6632,"children":6633},{},[6634],{"type":451,"value":6635},"Remove lucide icon pack",{"data":6637,"body":6638},{},{"type":442,"children":6639},[6640,6644,6766,6770],{"type":445,"tag":446,"props":6641,"children":6642},{"id":448},[6643],{"type":451,"value":452},{"type":445,"tag":454,"props":6645,"children":6646},{},[6647,6664,6676,6688,6699,6711,6722,6734,6745,6754],{"type":445,"tag":458,"props":6648,"children":6649},{},[6650,6652,6658,6662],{"type":451,"value":6651},"Major refinement of the ",{"type":445,"tag":6653,"props":6654,"children":6655},"strong",{},[6656],{"type":451,"value":6657},"documents approval and signature system",{"type":445,"tag":6659,"props":6660,"children":6661},"br",{},[],{"type":451,"value":6663},"\n(merged signatures into approvals, added expiration, improved UI\u002FUX, and created approval\u002Fsigning tasks inbox)",{"type":445,"tag":458,"props":6665,"children":6666},{},[6667,6669,6674],{"type":451,"value":6668},"Added ",{"type":445,"tag":6653,"props":6670,"children":6671},{},[6672],{"type":451,"value":6673},"navigation menu",{"type":451,"value":6675}," with new document pages and filters for jobs and user’s job",{"type":445,"tag":458,"props":6677,"children":6678},{},[6679,6681,6686],{"type":451,"value":6680},"Revamped ",{"type":445,"tag":6653,"props":6682,"children":6683},{},[6684],{"type":451,"value":6685},"audit log system",{"type":451,"value":6687}," using gRPC interceptor and added related activity entries",{"type":445,"tag":458,"props":6689,"children":6690},{},[6691,6692,6697],{"type":451,"value":6668},{"type":445,"tag":6653,"props":6693,"children":6694},{},[6695],{"type":451,"value":6696},"permissions order and icons",{"type":451,"value":6698},", plus title toggle in document view",{"type":445,"tag":458,"props":6700,"children":6701},{},[6702,6704,6709],{"type":451,"value":6703},"Enhanced ",{"type":445,"tag":6653,"props":6705,"children":6706},{},[6707],{"type":451,"value":6708},"dbsync configuration",{"type":451,"value":6710}," and validation (filters, access checks, load logic)",{"type":445,"tag":458,"props":6712,"children":6713},{},[6714,6715,6720],{"type":451,"value":6668},{"type":445,"tag":6653,"props":6716,"children":6717},{},[6718],{"type":451,"value":6719},"approvals to templates",{"type":451,"value":6721}," and refined related API\u002Fservice behaviors",{"type":445,"tag":458,"props":6723,"children":6724},{},[6725,6727,6732],{"type":451,"value":6726},"Improved ",{"type":445,"tag":6653,"props":6728,"children":6729},{},[6730],{"type":451,"value":6731},"editor performance",{"type":451,"value":6733}," by optimizing toolbar state handling",{"type":445,"tag":458,"props":6735,"children":6736},{},[6737,6738,6743],{"type":451,"value":6726},{"type":445,"tag":6653,"props":6739,"children":6740},{},[6741],{"type":451,"value":6742},"FiveM NUI\u002FCEF browser compatibility",{"type":451,"value":6744}," (styling, transparency, and color handling)",{"type":445,"tag":458,"props":6746,"children":6747},{},[6748,6749],{"type":451,"value":6668},{"type":445,"tag":6653,"props":6750,"children":6751},{},[6752],{"type":451,"value":6753},"basic jobs access validation",{"type":445,"tag":458,"props":6755,"children":6756},{},[6757,6759,6764],{"type":451,"value":6758},"Removed unused ",{"type":445,"tag":6653,"props":6760,"children":6761},{},[6762],{"type":451,"value":6763},"layout code",{"type":451,"value":6765}," and internal debug output",{"type":445,"tag":446,"props":6767,"children":6768},{"id":511},[6769],{"type":451,"value":514},{"type":445,"tag":454,"props":6771,"children":6772},{},[6773,6785,6797,6809,6821,6832,6851,6869,6888],{"type":445,"tag":458,"props":6774,"children":6775},{},[6776,6778,6783],{"type":451,"value":6777},"Fixed multiple ",{"type":445,"tag":6653,"props":6779,"children":6780},{},[6781],{"type":451,"value":6782},"approval\u002Fsigning migration",{"type":451,"value":6784}," issues (cascade, duplicate queries, ordering)",{"type":445,"tag":458,"props":6786,"children":6787},{},[6788,6790,6795],{"type":451,"value":6789},"Resolved ",{"type":445,"tag":6653,"props":6791,"children":6792},{},[6793],{"type":451,"value":6794},"document deletion reason",{"type":451,"value":6796}," field causing permission errors",{"type":445,"tag":458,"props":6798,"children":6799},{},[6800,6802,6807],{"type":451,"value":6801},"Fixed ",{"type":445,"tag":6653,"props":6803,"children":6804},{},[6805],{"type":451,"value":6806},"Tiptap editor",{"type":451,"value":6808}," validation and computed error handling",{"type":445,"tag":458,"props":6810,"children":6811},{},[6812,6814,6819],{"type":451,"value":6813},"Corrected ",{"type":445,"tag":6653,"props":6815,"children":6816},{},[6817],{"type":451,"value":6818},"template HTML entity escaping",{"type":451,"value":6820}," (Go HTML template compatibility)",{"type":445,"tag":458,"props":6822,"children":6823},{},[6824,6825,6830],{"type":451,"value":6801},{"type":445,"tag":6653,"props":6826,"children":6827},{},[6828],{"type":451,"value":6829},"wiki pages",{"type":451,"value":6831}," issues (pagination, logo visibility, access checks, grid layout)",{"type":445,"tag":458,"props":6833,"children":6834},{},[6835,6837,6842,6844,6849],{"type":451,"value":6836},"Addressed ",{"type":445,"tag":6653,"props":6838,"children":6839},{},[6840],{"type":451,"value":6841},"CEF 103 BYOB reader pagination",{"type":451,"value":6843}," and ",{"type":445,"tag":6653,"props":6845,"children":6846},{},[6847],{"type":451,"value":6848},"clipboard API",{"type":451,"value":6850}," compatibility problems",{"type":445,"tag":458,"props":6852,"children":6853},{},[6854,6855,6860,6862,6867],{"type":451,"value":6801},{"type":445,"tag":6653,"props":6856,"children":6857},{},[6858],{"type":451,"value":6859},"dispatch sidebar",{"type":451,"value":6861}," rendering and ",{"type":445,"tag":6653,"props":6863,"children":6864},{},[6865],{"type":451,"value":6866},"livemap superuser",{"type":451,"value":6868}," logic",{"type":445,"tag":458,"props":6870,"children":6871},{},[6872,6873,6878,6880,6886],{"type":451,"value":6813},{"type":445,"tag":6653,"props":6874,"children":6875},{},[6876],{"type":451,"value":6877},"MySQL helper\u002Fmigration typos",{"type":451,"value":6879}," and improved ",{"type":445,"tag":4549,"props":6881,"children":6883},{"className":6882},[],[6884],{"type":451,"value":6885},"dbutils",{"type":451,"value":6887}," package",{"type":445,"tag":458,"props":6889,"children":6890},{},[6891,6893,6898],{"type":451,"value":6892},"Fixed various ",{"type":445,"tag":6653,"props":6894,"children":6895},{},[6896],{"type":451,"value":6897},"UI inconsistencies",{"type":451,"value":6899}," (task drawers, colors, labels, and design polish)",{"data":6901,"body":6902},{},{"type":442,"children":6903},[6904,6908,6912,6923,6927],{"type":445,"tag":5625,"props":6905,"children":6906},{"id":5627},[6907],{"type":451,"value":5630},{"type":445,"tag":5632,"props":6909,"children":6910},{},[6911],{"type":451,"value":5636},{"type":445,"tag":5638,"props":6913,"children":6915},{"id":6914},"_202590-2025-09-19",[6916,6921],{"type":445,"tag":5643,"props":6917,"children":6918},{},[6919],{"type":451,"value":6920},"2025.9.0",{"type":451,"value":6922}," - 2025-09-19",{"type":445,"tag":446,"props":6924,"children":6925},{"id":511},[6926],{"type":451,"value":514},{"type":445,"tag":454,"props":6928,"children":6929},{},[6930,6935,6940,6945,6950,6955,6960,6965,6970,6975,6980,6985],{"type":445,"tag":458,"props":6931,"children":6932},{},[6933],{"type":451,"value":6934},"Update channels.json stable appVersion",{"type":445,"tag":458,"props":6936,"children":6937},{},[6938],{"type":451,"value":6939},"Qualifications access check in list queries",{"type":445,"tag":458,"props":6941,"children":6942},{},[6943],{"type":451,"value":6944},"Id badge showing 0 in qualification view on error",{"type":445,"tag":458,"props":6946,"children":6947},{},[6948],{"type":451,"value":6949},"New EXISTS based access checks",{"type":445,"tag":458,"props":6951,"children":6952},{},[6953],{"type":451,"value":6954},"Remove debug output from list qualifications method",{"type":445,"tag":458,"props":6956,"children":6957},{},[6958],{"type":451,"value":6959},"Adjust calendar list buttons",{"type":445,"tag":458,"props":6961,"children":6962},{},[6963],{"type":451,"value":6964},"Qualification requirements not being deleted and exam issues",{"type":445,"tag":458,"props":6966,"children":6967},{},[6968],{"type":451,"value":6969},"Discord absent command register issue",{"type":445,"tag":458,"props":6971,"children":6972},{},[6973],{"type":451,"value":6974},"Documents request drawer being full width and not constrained",{"type":445,"tag":458,"props":6976,"children":6977},{},[6978],{"type":451,"value":6979},"Dispatch list padding",{"type":445,"tag":458,"props":6981,"children":6982},{},[6983],{"type":451,"value":6984},"Center time and status badge in dispatch table",{"type":445,"tag":458,"props":6986,"children":6987},{},[6988],{"type":451,"value":6989},"Increase badge size in dispatch list",{"data":6991,"body":6992},{},{"type":442,"children":6993},[6994,6998,7002,7012,7016,7164,7168,7525,7529],{"type":445,"tag":5625,"props":6995,"children":6996},{"id":5627},[6997],{"type":451,"value":5630},{"type":445,"tag":5632,"props":6999,"children":7000},{},[7001],{"type":451,"value":5636},{"type":445,"tag":5638,"props":7003,"children":7005},{"id":7004},"_202581-2025-09-19",[7006,7011],{"type":445,"tag":5643,"props":7007,"children":7008},{},[7009],{"type":451,"value":7010},"2025.8.1",{"type":451,"value":6922},{"type":445,"tag":446,"props":7013,"children":7014},{"id":448},[7015],{"type":451,"value":452},{"type":445,"tag":454,"props":7017,"children":7018},{},[7019,7024,7029,7034,7039,7044,7049,7054,7059,7064,7069,7074,7079,7084,7089,7094,7099,7104,7109,7114,7119,7124,7129,7134,7139,7144,7149,7154,7159],{"type":445,"tag":458,"props":7020,"children":7021},{},[7022],{"type":451,"value":7023},"Add service management to dbsync command",{"type":445,"tag":458,"props":7025,"children":7026},{},[7027],{"type":451,"value":7028},"Improve multi job dispatch creation",{"type":445,"tag":458,"props":7030,"children":7031},{},[7032],{"type":451,"value":7033},"Use forked go-grpc-middleware lib to fix log fields missing",{"type":445,"tag":458,"props":7035,"children":7036},{},[7037],{"type":451,"value":7038},"Add golangci-lint and resolve many issues",{"type":445,"tag":458,"props":7040,"children":7041},{},[7042],{"type":451,"value":7043},"Protogetter fixes causing wrong data to be inserted",{"type":445,"tag":458,"props":7045,"children":7046},{},[7047],{"type":451,"value":7048},"Move from uint64 to int64 in API\u002Fproto types",{"type":445,"tag":458,"props":7050,"children":7051},{},[7052],{"type":451,"value":7053},"Add drag handle to tiptap editor",{"type":445,"tag":458,"props":7055,"children":7056},{},[7057],{"type":451,"value":7058},"Use dashboard section for settings index",{"type":445,"tag":458,"props":7060,"children":7061},{},[7062],{"type":451,"value":7063},"Improve multi-job dispatch handling",{"type":445,"tag":458,"props":7065,"children":7066},{},[7067],{"type":451,"value":7068},"Cleanup multi-job dispatch handling",{"type":445,"tag":458,"props":7070,"children":7071},{},[7072],{"type":451,"value":7073},"Show profile picture of dispatchers",{"type":445,"tag":458,"props":7075,"children":7076},{},[7077],{"type":451,"value":7078},"Add max reminder count to document workflow state",{"type":445,"tag":458,"props":7080,"children":7081},{},[7082],{"type":451,"value":7083},"Finalize public job list api for dispatch creation",{"type":445,"tag":458,"props":7085,"children":7086},{},[7087],{"type":451,"value":7088},"Use big.js instead of eval for the math calculator quick button",{"type":445,"tag":458,"props":7090,"children":7091},{},[7092],{"type":451,"value":7093},"Add file logging with rotation",{"type":445,"tag":458,"props":7095,"children":7096},{},[7097],{"type":451,"value":7098},"Work through first part of migrations for nuxt ui v3",{"type":445,"tag":458,"props":7100,"children":7101},{},[7102],{"type":451,"value":7103},"Pagination is now a list and more changes",{"type":445,"tag":458,"props":7105,"children":7106},{},[7107],{"type":451,"value":7108},"Continue upgrade to nuxt ui v3",{"type":445,"tag":458,"props":7110,"children":7111},{},[7112],{"type":451,"value":7113},"Continue reworking design to fit nuxt ui v3",{"type":445,"tag":458,"props":7115,"children":7116},{},[7117],{"type":451,"value":7118},"Continue refining design to work with nuxt v3",{"type":445,"tag":458,"props":7120,"children":7121},{},[7122],{"type":451,"value":7123},"Use go-dateparser to parse discord bot command date",{"type":445,"tag":458,"props":7125,"children":7126},{},[7127],{"type":451,"value":7128},"Use ServiceOptions for permify proto generation",{"type":445,"tag":458,"props":7130,"children":7131},{},[7132],{"type":451,"value":7133},"Improve document listing performance",{"type":445,"tag":458,"props":7135,"children":7136},{},[7137],{"type":451,"value":7138},"Add job props and roles to sidebar settings item",{"type":445,"tag":458,"props":7140,"children":7141},{},[7142],{"type":451,"value":7143},"Switch to galexrt\u002Ficonify-go pkg for simpler caching",{"type":445,"tag":458,"props":7145,"children":7146},{},[7147],{"type":451,"value":7148},"Add qualification editor exam form validation",{"type":445,"tag":458,"props":7150,"children":7151},{},[7152],{"type":451,"value":7153},"Copy and modify insecure credentials level for insecure grpc",{"type":445,"tag":458,"props":7155,"children":7156},{},[7157],{"type":451,"value":7158},"Add basic central display locale settings",{"type":445,"tag":458,"props":7160,"children":7161},{},[7162],{"type":451,"value":7163},"Use proto extension options for dbscanner and sanitizer",{"type":445,"tag":446,"props":7165,"children":7166},{"id":511},[7167],{"type":451,"value":514},{"type":445,"tag":454,"props":7169,"children":7170},{},[7171,7176,7181,7186,7191,7196,7201,7206,7211,7216,7221,7226,7231,7236,7241,7246,7251,7256,7261,7266,7271,7276,7280,7285,7290,7295,7300,7305,7310,7315,7320,7325,7330,7335,7340,7345,7350,7355,7360,7365,7370,7375,7380,7385,7390,7395,7400,7405,7410,7415,7420,7425,7430,7435,7440,7445,7450,7455,7460,7465,7470,7475,7480,7485,7490,7495,7500,7505,7510,7515,7520],{"type":445,"tag":458,"props":7172,"children":7173},{},[7174],{"type":451,"value":7175},"Remove duplicated image extension component",{"type":445,"tag":458,"props":7177,"children":7178},{},[7179],{"type":451,"value":7180},"Adjust dispatch target jobs select menu condition",{"type":445,"tag":458,"props":7182,"children":7183},{},[7184],{"type":451,"value":7185},"Use different context for notification consumer deletion",{"type":445,"tag":458,"props":7187,"children":7188},{},[7189],{"type":451,"value":7190},"Log collab room consumer deletion error",{"type":445,"tag":458,"props":7192,"children":7193},{},[7194],{"type":451,"value":7195},"Cleanup for idle dispatches and unit pings for housekeeper",{"type":445,"tag":458,"props":7197,"children":7198},{},[7199],{"type":451,"value":7200},"Switch trace attributes to log InjectFields",{"type":445,"tag":458,"props":7202,"children":7203},{},[7204],{"type":451,"value":7205},"Add missing help text to filestore migrations subcommand",{"type":445,"tag":458,"props":7207,"children":7208},{},[7209],{"type":451,"value":7210},"Attempt to fix context deadline issues caused by leader election",{"type":445,"tag":458,"props":7212,"children":7213},{},[7214],{"type":451,"value":7215},"Grpc websocket tests caused by renames",{"type":445,"tag":458,"props":7217,"children":7218},{},[7219],{"type":451,"value":7220},"Missing claim\u002Fuser info when userinfo retrieval fails",{"type":445,"tag":458,"props":7222,"children":7223},{},[7224],{"type":451,"value":7225},"Start work on nestif linter complaints",{"type":445,"tag":458,"props":7227,"children":7228},{},[7229],{"type":451,"value":7230},"More gosec fixess",{"type":445,"tag":458,"props":7232,"children":7233},{},[7234],{"type":451,"value":7235},"Last gosec complaints",{"type":445,"tag":458,"props":7237,"children":7238},{},[7239],{"type":451,"value":7240},"Polish multi job dispatch ui logic",{"type":445,"tag":458,"props":7242,"children":7243},{},[7244],{"type":451,"value":7245},"Dispatchers not having job label properly set",{"type":445,"tag":458,"props":7247,"children":7248},{},[7249],{"type":451,"value":7250},"Nil issue in centrum settings access logic",{"type":445,"tag":458,"props":7252,"children":7253},{},[7254],{"type":451,"value":7255},"De locale file formatting",{"type":445,"tag":458,"props":7257,"children":7258},{},[7259],{"type":451,"value":7260},"Ignore logger sync error",{"type":445,"tag":458,"props":7262,"children":7263},{},[7264],{"type":451,"value":7265},"Transition warn issue",{"type":445,"tag":458,"props":7267,"children":7268},{},[7269],{"type":451,"value":7270},"Continue fixing design issues caused by nuxt ui v3",{"type":445,"tag":458,"props":7272,"children":7273},{},[7274],{"type":451,"value":7275},"Design issues caused by nuxt v3 upgrade",{"type":445,"tag":458,"props":7277,"children":7278},{},[7279],{"type":451,"value":7275},{"type":445,"tag":458,"props":7281,"children":7282},{},[7283],{"type":451,"value":7284},"Continue fixing ui upgrade issues",{"type":445,"tag":458,"props":7286,"children":7287},{},[7288],{"type":451,"value":7289},"Continue fixing design issues caused by nuxt ui v3 upgrade",{"type":445,"tag":458,"props":7291,"children":7292},{},[7293],{"type":451,"value":7294},"Continue fixing design issues caused by nuxt ui upgrade",{"type":445,"tag":458,"props":7296,"children":7297},{},[7298],{"type":451,"value":7299},"Ui issues caused by nuxt ui v3 upgrade",{"type":445,"tag":458,"props":7301,"children":7302},{},[7303],{"type":451,"value":7304},"Adjust ui based on changes caused by nuxt ui v3 upgrade",{"type":445,"tag":458,"props":7306,"children":7307},{},[7308],{"type":451,"value":7309},"Move find calendar modal to drawer",{"type":445,"tag":458,"props":7311,"children":7312},{},[7313],{"type":451,"value":7314},"Wrong context used for errgroup groups",{"type":445,"tag":458,"props":7316,"children":7317},{},[7318],{"type":451,"value":7319},"Use errgroup for sync service stream with context",{"type":445,"tag":458,"props":7321,"children":7322},{},[7323],{"type":451,"value":7324},"Use latitude\u002Flongtitude short form for screens smaller than lg",{"type":445,"tag":458,"props":7326,"children":7327},{},[7328],{"type":451,"value":7329},"Use 3 seconds for jetstream fetch max wait",{"type":445,"tag":458,"props":7331,"children":7332},{},[7333],{"type":451,"value":7334},"Protoc svcs ts list listing all proto files",{"type":445,"tag":458,"props":7336,"children":7337},{},[7338],{"type":451,"value":7339},"Personal document pin color not changing",{"type":445,"tag":458,"props":7341,"children":7342},{},[7343],{"type":451,"value":7344},"Import type lint issue",{"type":445,"tag":458,"props":7346,"children":7347},{},[7348],{"type":451,"value":7349},"Container build issue caused by nuxt\u002Fcontent upgrade",{"type":445,"tag":458,"props":7351,"children":7352},{},[7353],{"type":451,"value":7354},"Lru cache tests",{"type":445,"tag":458,"props":7356,"children":7357},{},[7358],{"type":451,"value":7359},"Adjust unique id tiptap extension",{"type":445,"tag":458,"props":7361,"children":7362},{},[7363],{"type":451,"value":7364},"Oklch color issue in fivem nui (cef v103)",{"type":445,"tag":458,"props":7366,"children":7367},{},[7368],{"type":451,"value":7369},"Document list entry padding",{"type":445,"tag":458,"props":7371,"children":7372},{},[7373],{"type":451,"value":7374},"Cleanup component names",{"type":445,"tag":458,"props":7376,"children":7377},{},[7378],{"type":451,"value":7379},"Intermittent superuser job changing issue",{"type":445,"tag":458,"props":7381,"children":7382},{},[7383],{"type":451,"value":7384},"Activity feed text color",{"type":445,"tag":458,"props":7386,"children":7387},{},[7388],{"type":451,"value":7389},"Tweak template padding\u002Fmargin differences",{"type":445,"tag":458,"props":7391,"children":7392},{},[7393],{"type":451,"value":7394},"Input fields, editor issues and improve template view + editor",{"type":445,"tag":458,"props":7396,"children":7397},{},[7398],{"type":451,"value":7399},"Tailwindcss v4 color issue due to oklch and fivem nui cef v103",{"type":445,"tag":458,"props":7401,"children":7402},{},[7403],{"type":451,"value":7404},"Improve dbsync cli logging",{"type":445,"tag":458,"props":7406,"children":7407},{},[7408],{"type":451,"value":7409},"Users dbsync offsset not changing",{"type":445,"tag":458,"props":7411,"children":7412},{},[7413],{"type":451,"value":7414},"Found design padding and ux issues",{"type":445,"tag":458,"props":7416,"children":7417},{},[7418],{"type":451,"value":7419},"Sql_mode ONLY_FULL_GROUP_BY issue with group_by",{"type":445,"tag":458,"props":7421,"children":7422},{},[7423],{"type":451,"value":7424},"Add no data block to join unit slideover",{"type":445,"tag":458,"props":7426,"children":7427},{},[7428],{"type":451,"value":7429},"Improve zod error handling in search forms",{"type":445,"tag":458,"props":7431,"children":7432},{},[7433],{"type":451,"value":7434},"Filestore list not having prefix search",{"type":445,"tag":458,"props":7436,"children":7437},{},[7438],{"type":451,"value":7439},"Cleanup UFileUpload attrs orders a bit",{"type":445,"tag":458,"props":7441,"children":7442},{},[7443],{"type":451,"value":7444},"Leftover type and lint issues",{"type":445,"tag":458,"props":7446,"children":7447},{},[7448],{"type":451,"value":7449},"Timeclock list full order by sql_mode issue",{"type":445,"tag":458,"props":7451,"children":7452},{},[7453],{"type":451,"value":7454},"Removed ANY_VALUE, not available in Mariadb",{"type":445,"tag":458,"props":7456,"children":7457},{},[7458],{"type":451,"value":7459},"Improve livemap layer selector on small screens",{"type":445,"tag":458,"props":7461,"children":7462},{},[7463],{"type":451,"value":7464},"Cleanup divide to use default color",{"type":445,"tag":458,"props":7466,"children":7467},{},[7468],{"type":451,"value":7469},"Cleanup utils and shared types folders",{"type":445,"tag":458,"props":7471,"children":7472},{},[7473],{"type":451,"value":7474},"Rely on itemslen proto interceptor where used",{"type":445,"tag":458,"props":7476,"children":7477},{},[7478],{"type":451,"value":7479},"Remove \"true\" value from boolean attrs and fix dashboard panels",{"type":445,"tag":458,"props":7481,"children":7482},{},[7483],{"type":451,"value":7484},"Exam auto grade translation warning",{"type":445,"tag":458,"props":7486,"children":7487},{},[7488],{"type":451,"value":7489},"Exam editor auto grade default value",{"type":445,"tag":458,"props":7491,"children":7492},{},[7493],{"type":451,"value":7494},"Remove debug sql outputs",{"type":445,"tag":458,"props":7496,"children":7497},{},[7498],{"type":451,"value":7499},"Improve tutor view list paddings and margins",{"type":445,"tag":458,"props":7501,"children":7502},{},[7503],{"type":451,"value":7504},"Improve qualifications lists footer padding",{"type":445,"tag":458,"props":7506,"children":7507},{},[7508],{"type":451,"value":7509},"Iconify server issues and icon select menu",{"type":445,"tag":458,"props":7511,"children":7512},{},[7513],{"type":451,"value":7514},"Rename RequestModal to RequestDrawer",{"type":445,"tag":458,"props":7516,"children":7517},{},[7518],{"type":451,"value":7519},"Clone retrieved userinfo object",{"type":445,"tag":458,"props":7521,"children":7522},{},[7523],{"type":451,"value":7524},"Override renovate bot schedule",{"type":445,"tag":446,"props":7526,"children":7527},{"id":1452},[7528],{"type":451,"value":1455},{"type":445,"tag":454,"props":7530,"children":7531},{},[7532,7537],{"type":445,"tag":458,"props":7533,"children":7534},{},[7535],{"type":451,"value":7536},"Remove internet feature for future revival",{"type":445,"tag":458,"props":7538,"children":7539},{},[7540],{"type":451,"value":7541},"Rename jet package usages to mysql",{"data":7543,"body":7544},{},{"type":442,"children":7545},[7546,7550,7554],{"type":445,"tag":5625,"props":7547,"children":7548},{"id":5627},[7549],{"type":451,"value":5630},{"type":445,"tag":5632,"props":7551,"children":7552},{},[7553],{"type":451,"value":5636},{"type":445,"tag":5638,"props":7555,"children":7557},{"id":7556},"_202580-2025-08-07",[7558,7563],{"type":445,"tag":5643,"props":7559,"children":7560},{},[7561],{"type":451,"value":7562},"2025.8.0",{"type":451,"value":7564}," - 2025-08-07",{"data":7566,"body":7567},{},{"type":442,"children":7568},[7569,7573,7577,7587,7591,7658,7662],{"type":445,"tag":5625,"props":7570,"children":7571},{"id":5627},[7572],{"type":451,"value":5630},{"type":445,"tag":5632,"props":7574,"children":7575},{},[7576],{"type":451,"value":5636},{"type":445,"tag":5638,"props":7578,"children":7580},{"id":7579},"_202571-2025-08-07",[7581,7586],{"type":445,"tag":5643,"props":7582,"children":7583},{},[7584],{"type":451,"value":7585},"2025.7.1",{"type":451,"value":7564},{"type":445,"tag":446,"props":7588,"children":7589},{"id":448},[7590],{"type":451,"value":452},{"type":445,"tag":454,"props":7592,"children":7593},{},[7594,7599,7604,7609,7614,7619,7638,7643,7648,7653],{"type":445,"tag":458,"props":7595,"children":7596},{},[7597],{"type":451,"value":7598},"Add option to ignore empty names to users dbsync",{"type":445,"tag":458,"props":7600,"children":7601},{},[7602],{"type":451,"value":7603},"Add basic system status info to settings page",{"type":445,"tag":458,"props":7605,"children":7606},{},[7607],{"type":451,"value":7608},"Add last char id for dbsync api",{"type":445,"tag":458,"props":7610,"children":7611},{},[7612],{"type":451,"value":7613},"Update tiptap to v3.0.7",{"type":445,"tag":458,"props":7615,"children":7616},{},[7617],{"type":451,"value":7618},"Update nuxt i18n",{"type":445,"tag":458,"props":7620,"children":7621},{},[7622,7624,7630,7632],{"type":451,"value":7623},"Switch to useLazy*Data ",{"type":445,"tag":4549,"props":7625,"children":7627},{"className":7626},[],[7628],{"type":451,"value":7629},"status",{"type":451,"value":7631}," instead of ",{"type":445,"tag":4549,"props":7633,"children":7635},{"className":7634},[],[7636],{"type":451,"value":7637},"pending",{"type":445,"tag":458,"props":7639,"children":7640},{},[7641],{"type":451,"value":7642},"Move auth server and grpc auth errors to separate package",{"type":445,"tag":458,"props":7644,"children":7645},{},[7646],{"type":451,"value":7647},"Refresh user info on character choose",{"type":445,"tag":458,"props":7649,"children":7650},{},[7651],{"type":451,"value":7652},"Add basic update check and last seen dbsync version",{"type":445,"tag":458,"props":7654,"children":7655},{},[7656],{"type":451,"value":7657},"Add \"internal\" iconify api to make hosting fivenet easier",{"type":445,"tag":446,"props":7659,"children":7660},{"id":511},[7661],{"type":451,"value":514},{"type":445,"tag":454,"props":7663,"children":7664},{},[7665,7670,7675,7680,7685,7690,7695,7700,7705,7710,7715,7720,7725,7730,7735,7740],{"type":445,"tag":458,"props":7666,"children":7667},{},[7668],{"type":451,"value":7669},"Release channel update for release builds",{"type":445,"tag":458,"props":7671,"children":7672},{},[7673],{"type":451,"value":7674},"Manually bump channels.json due to ci error",{"type":445,"tag":458,"props":7676,"children":7677},{},[7678],{"type":451,"value":7679},"Banner message validation",{"type":445,"tag":458,"props":7681,"children":7682},{},[7683],{"type":451,"value":7684},"Update release channels from develop branch only",{"type":445,"tag":458,"props":7686,"children":7687},{},[7688],{"type":451,"value":7689},"Tweak dockerignore",{"type":445,"tag":458,"props":7691,"children":7692},{},[7693],{"type":451,"value":7694},"Nil pointer due to reqs",{"type":445,"tag":458,"props":7696,"children":7697},{},[7698],{"type":451,"value":7699},"Db reqs error message",{"type":445,"tag":458,"props":7701,"children":7702},{},[7703],{"type":451,"value":7704},"Db reqs nil pointer",{"type":445,"tag":458,"props":7706,"children":7707},{},[7708],{"type":451,"value":7709},"System status dbsync showing on wrong condition",{"type":445,"tag":458,"props":7711,"children":7712},{},[7713],{"type":451,"value":7714},"Update dbsync example config vehicles columns",{"type":445,"tag":458,"props":7716,"children":7717},{},[7718],{"type":451,"value":7719},"Update release channels",{"type":445,"tag":458,"props":7721,"children":7722},{},[7723],{"type":451,"value":7724},"Types not being included correctly",{"type":445,"tag":458,"props":7726,"children":7727},{},[7728],{"type":451,"value":7729},"Tiptap editor duplicate extensions",{"type":445,"tag":458,"props":7731,"children":7732},{},[7733],{"type":451,"value":7734},"Mock userinfo retriever missing function",{"type":445,"tag":458,"props":7736,"children":7737},{},[7738],{"type":451,"value":7739},"Bump fivenet chart to 0.20.1",{"type":445,"tag":458,"props":7741,"children":7742},{},[7743],{"type":451,"value":7744},"Improve client app config error handling",{"data":7746,"body":7747},{},{"type":442,"children":7748},[7749,7753,7757,7768,7772,7790,7794],{"type":445,"tag":5625,"props":7750,"children":7751},{"id":5627},[7752],{"type":451,"value":5630},{"type":445,"tag":5632,"props":7754,"children":7755},{},[7756],{"type":451,"value":5636},{"type":445,"tag":5638,"props":7758,"children":7760},{"id":7759},"_202570-2025-07-17",[7761,7766],{"type":445,"tag":5643,"props":7762,"children":7763},{},[7764],{"type":451,"value":7765},"2025.7.0",{"type":451,"value":7767}," - 2025-07-17",{"type":445,"tag":446,"props":7769,"children":7770},{"id":448},[7771],{"type":451,"value":452},{"type":445,"tag":454,"props":7773,"children":7774},{},[7775,7780,7785],{"type":445,"tag":458,"props":7776,"children":7777},{},[7778],{"type":451,"value":7779},"Add release channels.json file",{"type":445,"tag":458,"props":7781,"children":7782},{},[7783],{"type":451,"value":7784},"Add config option to disable database locking during migrations",{"type":445,"tag":458,"props":7786,"children":7787},{},[7788],{"type":451,"value":7789},"Set transaction isolation to REPEATABLE READ when locking is disasbled",{"type":445,"tag":446,"props":7791,"children":7792},{"id":511},[7793],{"type":451,"value":514},{"type":445,"tag":454,"props":7795,"children":7796},{},[7797,7802,7807,7812,7817,7822,7827,7832,7837,7842,7847],{"type":445,"tag":458,"props":7798,"children":7799},{},[7800],{"type":451,"value":7801},"Channel update issue",{"type":445,"tag":458,"props":7803,"children":7804},{},[7805],{"type":451,"value":7806},"Use reuseable workflow directly for channel update",{"type":445,"tag":458,"props":7808,"children":7809},{},[7810],{"type":451,"value":7811},"Update channel flow not working due to a needs list",{"type":445,"tag":458,"props":7813,"children":7814},{},[7815],{"type":451,"value":7816},"Update-channel not invoking update channel script",{"type":445,"tag":458,"props":7818,"children":7819},{},[7820],{"type":451,"value":7821},"Update-channel script name",{"type":445,"tag":458,"props":7823,"children":7824},{},[7825],{"type":451,"value":7826},"Sestting dsn transaction_isolation level",{"type":445,"tag":458,"props":7828,"children":7829},{},[7830],{"type":451,"value":7831},"Tweak transaction isolation dsn",{"type":445,"tag":458,"props":7833,"children":7834},{},[7835],{"type":451,"value":7836},"Db dsn test",{"type":445,"tag":458,"props":7838,"children":7839},{},[7840],{"type":451,"value":7841},"Tools db up command",{"type":445,"tag":458,"props":7843,"children":7844},{},[7845],{"type":451,"value":7846},"Older migration causing issues with clustered dbs",{"type":445,"tag":458,"props":7848,"children":7849},{},[7850],{"type":451,"value":7851},"Internet basse up feature migrations",{"data":7853,"body":7854},{},{"type":442,"children":7855},[7856,7860,7864,7875,7879,7947,7951],{"type":445,"tag":5625,"props":7857,"children":7858},{"id":5627},[7859],{"type":451,"value":5630},{"type":445,"tag":5632,"props":7861,"children":7862},{},[7863],{"type":451,"value":5636},{"type":445,"tag":5638,"props":7865,"children":7867},{"id":7866},"_202565-2025-07-15",[7868,7873],{"type":445,"tag":5643,"props":7869,"children":7870},{},[7871],{"type":451,"value":7872},"2025.6.5",{"type":451,"value":7874}," - 2025-07-15",{"type":445,"tag":446,"props":7876,"children":7877},{"id":448},[7878],{"type":451,"value":452},{"type":445,"tag":454,"props":7880,"children":7881},{},[7882,7887,7892,7897,7902,7907,7912,7917,7922,7927,7932,7937,7942],{"type":445,"tag":458,"props":7883,"children":7884},{},[7885],{"type":451,"value":7886},"Add icon field to units",{"type":445,"tag":458,"props":7888,"children":7889},{},[7890],{"type":451,"value":7891},"Display unit icon as user marker icon",{"type":445,"tag":458,"props":7893,"children":7894},{},[7895],{"type":451,"value":7896},"Add vehicles activity proto messages",{"type":445,"tag":458,"props":7898,"children":7899},{},[7900],{"type":451,"value":7901},"Use function to calculate pagination offset and cleanup creator",{"type":445,"tag":458,"props":7903,"children":7904},{},[7905],{"type":451,"value":7906},"Add storage space usage metrics",{"type":445,"tag":458,"props":7908,"children":7909},{},[7910],{"type":451,"value":7911},"Increase exam questions to 100",{"type":445,"tag":458,"props":7913,"children":7914},{},[7915],{"type":451,"value":7916},"Add draggable tooltip to vue-draggable icon indicators",{"type":445,"tag":458,"props":7918,"children":7919},{},[7920],{"type":451,"value":7921},"Add arrow controls for draggables and fix answer fields for exam",{"type":445,"tag":458,"props":7923,"children":7924},{},[7925],{"type":451,"value":7926},"Conversion of single to multiple and reverse on question type",{"type":445,"tag":458,"props":7928,"children":7929},{},[7930],{"type":451,"value":7931},"Add creds file nats connect option",{"type":445,"tag":458,"props":7933,"children":7934},{},[7935],{"type":451,"value":7936},"Add missing apis for vehicle props",{"type":445,"tag":458,"props":7938,"children":7939},{},[7940],{"type":451,"value":7941},"Refine vehicless properties ui",{"type":445,"tag":458,"props":7943,"children":7944},{},[7945],{"type":451,"value":7946},"Add active user sessions metric",{"type":445,"tag":446,"props":7948,"children":7949},{"id":511},[7950],{"type":451,"value":514},{"type":445,"tag":454,"props":7952,"children":7953},{},[7954,7959,7964,7969,7974,7979,7984,7989,7994,7999,8004,8009,8014,8019,8024,8029,8034,8039,8044,8049,8054,8059,8064,8069,8074,8079,8084,8089,8094,8099,8104,8109,8114,8119,8124,8129,8134,8139,8144,8149,8154,8159,8164,8169,8174,8179,8184,8189,8194],{"type":445,"tag":458,"props":7955,"children":7956},{},[7957],{"type":451,"value":7958},"Unregister notifications consumers via defer for now",{"type":445,"tag":458,"props":7960,"children":7961},{},[7962],{"type":451,"value":7963},"Missing nats stream\u002Fkv descriptions",{"type":445,"tag":458,"props":7965,"children":7966},{},[7967],{"type":451,"value":7968},"Lru cache janitor interval",{"type":445,"tag":458,"props":7970,"children":7971},{},[7972],{"type":451,"value":7973},"Prevent lru cache to be copied",{"type":445,"tag":458,"props":7975,"children":7976},{},[7977],{"type":451,"value":7978},"Adjust anypb empty state creation",{"type":445,"tag":458,"props":7980,"children":7981},{},[7982],{"type":451,"value":7983},"Collab rooms consumer's being revived",{"type":445,"tag":458,"props":7985,"children":7986},{},[7987],{"type":451,"value":7988},"Collab room consumer name being \"wrong\"",{"type":445,"tag":458,"props":7990,"children":7991},{},[7992],{"type":451,"value":7993},"Tweak cron data logic",{"type":445,"tag":458,"props":7995,"children":7996},{},[7997],{"type":451,"value":7998},"Housekeper dispatches attributes nil panic",{"type":445,"tag":458,"props":8000,"children":8001},{},[8002],{"type":451,"value":8003},"Load dispatches housekeeper nil panic",{"type":445,"tag":458,"props":8005,"children":8006},{},[8007],{"type":451,"value":8008},"Cron attributes anypb usage",{"type":445,"tag":458,"props":8010,"children":8011},{},[8012],{"type":451,"value":8013},"Adjust timing for removal of dispatches from kv",{"type":445,"tag":458,"props":8015,"children":8016},{},[8017],{"type":451,"value":8018},"Cron data nil issue",{"type":445,"tag":458,"props":8020,"children":8021},{},[8022],{"type":451,"value":8023},"Delete old dispatches from kv id\u002Fkey logic",{"type":445,"tag":458,"props":8025,"children":8026},{},[8027],{"type":451,"value":8028},"Nats store warpper using * instead of >",{"type":445,"tag":458,"props":8030,"children":8031},{},[8032],{"type":451,"value":8033},"Add info log to leadelection start call",{"type":445,"tag":458,"props":8035,"children":8036},{},[8037],{"type":451,"value":8038},"Filestore housekeeper setting \"loaded_dispatches\" as attribute",{"type":445,"tag":458,"props":8040,"children":8041},{},[8042],{"type":451,"value":8043},"Tracker manager tests",{"type":445,"tag":458,"props":8045,"children":8046},{},[8047],{"type":451,"value":8048},"Tracker manager test by adding last missing dep",{"type":445,"tag":458,"props":8050,"children":8051},{},[8052],{"type":451,"value":8053},"Use embed funcs for cron data wrapping",{"type":445,"tag":458,"props":8055,"children":8056},{},[8057],{"type":451,"value":8058},"Rewrite leader election logic to be more resilient",{"type":445,"tag":458,"props":8060,"children":8061},{},[8062],{"type":451,"value":8063},"Access manager issue when id is 0 and reimplement enhanced image",{"type":445,"tag":458,"props":8065,"children":8066},{},[8067],{"type":451,"value":8068},"Buf validate ignore uses in users.proto",{"type":445,"tag":458,"props":8070,"children":8071},{},[8072],{"type":451,"value":8073},"Access entries containing user data that might be invalid",{"type":445,"tag":458,"props":8075,"children":8076},{},[8077],{"type":451,"value":8078},"Cron data marshal\u002Funmarshal in other cron jobs",{"type":445,"tag":458,"props":8080,"children":8081},{},[8082],{"type":451,"value":8083},"Collab state kv name and disabled state for editor image popover",{"type":445,"tag":458,"props":8085,"children":8086},{},[8087],{"type":451,"value":8088},"Improve grpcws limits",{"type":445,"tag":458,"props":8090,"children":8091},{},[8092],{"type":451,"value":8093},"Collab client room id keys",{"type":445,"tag":458,"props":8095,"children":8096},{},[8097],{"type":451,"value":8098},"Collab deleting wrong old kv",{"type":445,"tag":458,"props":8100,"children":8101},{},[8102],{"type":451,"value":8103},"Old collab state kv name",{"type":445,"tag":458,"props":8105,"children":8106},{},[8107],{"type":451,"value":8108},"Yjs sync for secondary clients",{"type":445,"tag":458,"props":8110,"children":8111},{},[8112],{"type":451,"value":8113},"Colleague activity not setting colleage when prop is set",{"type":445,"tag":458,"props":8115,"children":8116},{},[8117],{"type":451,"value":8118},"Colleague profile activity showing all activity",{"type":445,"tag":458,"props":8120,"children":8121},{},[8122],{"type":451,"value":8123},"Import lint issue and add font-family regex to htmlsanitizer",{"type":445,"tag":458,"props":8125,"children":8126},{},[8127],{"type":451,"value":8128},"Yjs sync issues on reconnect",{"type":445,"tag":458,"props":8130,"children":8131},{},[8132],{"type":451,"value":8133},"Collab disconnect not happening correctly",{"type":445,"tag":458,"props":8135,"children":8136},{},[8137],{"type":451,"value":8138},"Reduce leaderelection log spam",{"type":445,"tag":458,"props":8140,"children":8141},{},[8142],{"type":451,"value":8143},"Base64 encode image urls in sanitizer for image proxy",{"type":445,"tag":458,"props":8145,"children":8146},{},[8147],{"type":451,"value":8148},"Centrum access up sql migration",{"type":445,"tag":458,"props":8150,"children":8151},{},[8152],{"type":451,"value":8153},"Storage metrics collector missing from fx",{"type":445,"tag":458,"props":8155,"children":8156},{},[8157],{"type":451,"value":8158},"Add random delay to storage metrics colletor",{"type":445,"tag":458,"props":8160,"children":8161},{},[8162],{"type":451,"value":8163},"Register storage metric only when enabled",{"type":445,"tag":458,"props":8165,"children":8166},{},[8167],{"type":451,"value":8168},"Leaderelection not started for metrics collector",{"type":445,"tag":458,"props":8170,"children":8171},{},[8172],{"type":451,"value":8173},"Metrics collector not having storage set",{"type":445,"tag":458,"props":8175,"children":8176},{},[8177],{"type":451,"value":8178},"Conduct update of type and create\u002Fupdate status select not using",{"type":445,"tag":458,"props":8180,"children":8181},{},[8182],{"type":451,"value":8183},"Increase exam question limit in ui",{"type":445,"tag":458,"props":8185,"children":8186},{},[8187],{"type":451,"value":8188},"Qualification tutor answer issues",{"type":445,"tag":458,"props":8190,"children":8191},{},[8192],{"type":451,"value":8193},"Vehicle info layout when empty",{"type":445,"tag":458,"props":8195,"children":8196},{},[8197],{"type":451,"value":8198},"License plate width for bigger screens",{"data":8200,"body":8201},{},{"type":442,"children":8202},[8203,8207,8211,8222,8226,8244,8248],{"type":445,"tag":5625,"props":8204,"children":8205},{"id":5627},[8206],{"type":451,"value":5630},{"type":445,"tag":5632,"props":8208,"children":8209},{},[8210],{"type":451,"value":5636},{"type":445,"tag":5638,"props":8212,"children":8214},{"id":8213},"_202564-2025-06-27",[8215,8220],{"type":445,"tag":5643,"props":8216,"children":8217},{},[8218],{"type":451,"value":8219},"2025.6.4",{"type":451,"value":8221}," - 2025-06-27",{"type":445,"tag":446,"props":8223,"children":8224},{"id":448},[8225],{"type":451,"value":452},{"type":445,"tag":454,"props":8227,"children":8228},{},[8229,8234,8239],{"type":445,"tag":458,"props":8230,"children":8231},{},[8232],{"type":451,"value":8233},"Upgrade nats locks system to use per key ttls",{"type":445,"tag":458,"props":8235,"children":8236},{},[8237],{"type":451,"value":8238},"Improve centrum housekeeper logic",{"type":445,"tag":458,"props":8240,"children":8241},{},[8242],{"type":451,"value":8243},"Improve dispatch deduping and add dedupe settings",{"type":445,"tag":446,"props":8245,"children":8246},{"id":511},[8247],{"type":451,"value":514},{"type":445,"tag":454,"props":8249,"children":8250},{},[8251,8256,8261,8266,8271,8276,8281,8286,8291,8296,8301,8306,8311,8316],{"type":445,"tag":458,"props":8252,"children":8253},{},[8254],{"type":451,"value":8255},"Access attribute names",{"type":445,"tag":458,"props":8257,"children":8258},{},[8259],{"type":451,"value":8260},"Remove debug log",{"type":445,"tag":458,"props":8262,"children":8263},{},[8264],{"type":451,"value":8265},"Dispatch layer job grouping issue",{"type":445,"tag":458,"props":8267,"children":8268},{},[8269],{"type":451,"value":8270},"Remove unused ref",{"type":445,"tag":458,"props":8272,"children":8273},{},[8274],{"type":451,"value":8275},"Add missing jobs check to list dispatches",{"type":445,"tag":458,"props":8277,"children":8278},{},[8279],{"type":451,"value":8280},"Migration for mariadb",{"type":445,"tag":458,"props":8282,"children":8283},{},[8284],{"type":451,"value":8285},"Skip of mariadb incompatible json index",{"type":445,"tag":458,"props":8287,"children":8288},{},[8289],{"type":451,"value":8290},"Disable locsk for job id mapping stores",{"type":445,"tag":458,"props":8292,"children":8293},{},[8294],{"type":451,"value":8295},"Switch centrum housekeeper to a more event-based approach",{"type":445,"tag":458,"props":8297,"children":8298},{},[8299],{"type":451,"value":8300},"App config from being incorrectly read in client due to json tags",{"type":445,"tag":458,"props":8302,"children":8303},{},[8304],{"type":451,"value":8305},"German document title notifications showing \" as a result",{"type":445,"tag":458,"props":8307,"children":8308},{},[8309],{"type":451,"value":8310},"Document not closing on toggle and missing object events",{"type":445,"tag":458,"props":8312,"children":8313},{},[8314],{"type":451,"value":8315},"Centrum dispatches jobs migration for good",{"type":445,"tag":458,"props":8317,"children":8318},{},[8319],{"type":451,"value":8320},"Correct italic usage in draft pages and qualifications",{"data":8322,"body":8323},{},{"type":442,"children":8324},[8325,8329,8333,8344,8348],{"type":445,"tag":5625,"props":8326,"children":8327},{"id":5627},[8328],{"type":451,"value":5630},{"type":445,"tag":5632,"props":8330,"children":8331},{},[8332],{"type":451,"value":5636},{"type":445,"tag":5638,"props":8334,"children":8336},{"id":8335},"_202563-2025-06-24",[8337,8342],{"type":445,"tag":5643,"props":8338,"children":8339},{},[8340],{"type":451,"value":8341},"2025.6.3",{"type":451,"value":8343}," - 2025-06-24",{"type":445,"tag":446,"props":8345,"children":8346},{"id":511},[8347],{"type":451,"value":514},{"type":445,"tag":454,"props":8349,"children":8350},{},[8351],{"type":445,"tag":458,"props":8352,"children":8353},{},[8354],{"type":451,"value":8355},"Switch to leader election for cron scheduler and add nats",{"data":8357,"body":8358},{},{"type":442,"children":8359},[8360,8364,8368,8379,8383,8391,8395],{"type":445,"tag":5625,"props":8361,"children":8362},{"id":5627},[8363],{"type":451,"value":5630},{"type":445,"tag":5632,"props":8365,"children":8366},{},[8367],{"type":451,"value":5636},{"type":445,"tag":5638,"props":8369,"children":8371},{"id":8370},"_202562-2025-06-21",[8372,8377],{"type":445,"tag":5643,"props":8373,"children":8374},{},[8375],{"type":451,"value":8376},"2025.6.2",{"type":451,"value":8378}," - 2025-06-21",{"type":445,"tag":446,"props":8380,"children":8381},{"id":448},[8382],{"type":451,"value":452},{"type":445,"tag":454,"props":8384,"children":8385},{},[8386],{"type":445,"tag":458,"props":8387,"children":8388},{},[8389],{"type":451,"value":8390},"Make client app config into protobuf messages and add client view",{"type":445,"tag":446,"props":8392,"children":8393},{"id":511},[8394],{"type":451,"value":514},{"type":445,"tag":454,"props":8396,"children":8397},{},[8398,8403,8408,8413],{"type":445,"tag":458,"props":8399,"children":8400},{},[8401],{"type":451,"value":8402},"Filestore migration command skipping every job logo after one",{"type":445,"tag":458,"props":8404,"children":8405},{},[8406],{"type":451,"value":8407},"Template clipboard selection for more than one with max spec",{"type":445,"tag":458,"props":8409,"children":8410},{},[8411],{"type":451,"value":8412},"Add log to tiptap editor sync event",{"type":445,"tag":458,"props":8414,"children":8415},{},[8416],{"type":451,"value":8417},"Adjust yjs content set logic and add context menu for calendar",{"data":8419,"body":8420},{},{"type":442,"children":8421},[8422,8426,8430,8448,8452,8475,8479,8502,8506],{"type":445,"tag":5625,"props":8423,"children":8424},{"id":5627},[8425],{"type":451,"value":5630},{"type":445,"tag":5632,"props":8427,"children":8428},{},[8429],{"type":451,"value":5636},{"type":445,"tag":5638,"props":8431,"children":8433},{"id":8432},"_202555-to-202561-2025-06-07",[8434,8439,8441,8446],{"type":445,"tag":5643,"props":8435,"children":8436},{},[8437],{"type":451,"value":8438},"2025.5.5",{"type":451,"value":8440}," to ",{"type":445,"tag":5643,"props":8442,"children":8443},{},[8444],{"type":451,"value":8445},"2025.6.1",{"type":451,"value":8447}," - 2025-06-07",{"type":445,"tag":446,"props":8449,"children":8450},{"id":448},[8451],{"type":451,"value":452},{"type":445,"tag":454,"props":8453,"children":8454},{},[8455,8460,8465,8470],{"type":445,"tag":458,"props":8456,"children":8457},{},[8458],{"type":451,"value":8459},"Add collab editor to wiki pages",{"type":445,"tag":458,"props":8461,"children":8462},{},[8463],{"type":451,"value":8464},"Add filestore migrations command and cleanup otlp usage",{"type":445,"tag":458,"props":8466,"children":8467},{},[8468],{"type":451,"value":8469},"Add auto grading to qualifications",{"type":445,"tag":458,"props":8471,"children":8472},{},[8473],{"type":451,"value":8474},"Store discord user token for guild list and other functionality in",{"type":445,"tag":446,"props":8476,"children":8477},{"id":511},[8478],{"type":451,"value":514},{"type":445,"tag":454,"props":8480,"children":8481},{},[8482,8487,8492,8497],{"type":445,"tag":458,"props":8483,"children":8484},{},[8485],{"type":451,"value":8486},"Perms events issues by reducing amount of events",{"type":445,"tag":458,"props":8488,"children":8489},{},[8490],{"type":451,"value":8491},"Db migrations using \"wrong\" fivenet_users table when esxcompat",{"type":445,"tag":458,"props":8493,"children":8494},{},[8495],{"type":451,"value":8496},"Oauth2 tokens migration",{"type":445,"tag":458,"props":8498,"children":8499},{},[8500],{"type":451,"value":8501},"Image inserted as base64 when file upload is enabled and other",{"type":445,"tag":446,"props":8503,"children":8504},{"id":1452},[8505],{"type":451,"value":1455},{"type":445,"tag":454,"props":8507,"children":8508},{},[8509],{"type":445,"tag":458,"props":8510,"children":8511},{},[8512],{"type":451,"value":8513},"Improve github actions image buid by using arm64 runner for arm64",{"data":8515,"body":8516},{},{"type":442,"children":8517},[8518,8522,8526],{"type":445,"tag":5625,"props":8519,"children":8520},{"id":5627},[8521],{"type":451,"value":5630},{"type":445,"tag":5632,"props":8523,"children":8524},{},[8525],{"type":451,"value":5636},{"type":445,"tag":5638,"props":8527,"children":8529},{"id":8528},"_202555-2025-06-07",[8530,8534],{"type":445,"tag":5643,"props":8531,"children":8532},{},[8533],{"type":451,"value":8438},{"type":451,"value":8447},{"data":8536,"body":8537},{},{"type":442,"children":8538},[8539,8543,8547,8558,8564],{"type":445,"tag":5625,"props":8540,"children":8541},{"id":5627},[8542],{"type":451,"value":5630},{"type":445,"tag":5632,"props":8544,"children":8545},{},[8546],{"type":451,"value":5636},{"type":445,"tag":5638,"props":8548,"children":8550},{"id":8549},"_202554-2025-05-29",[8551,8556],{"type":445,"tag":5643,"props":8552,"children":8553},{},[8554],{"type":451,"value":8555},"2025.5.4",{"type":451,"value":8557}," - 2025-05-29",{"type":445,"tag":446,"props":8559,"children":8561},{"id":8560},"fixes",[8562],{"type":451,"value":8563},"🐛 Fixes",{"type":445,"tag":454,"props":8565,"children":8566},{},[8567],{"type":445,"tag":458,"props":8568,"children":8569},{},[8570],{"type":451,"value":8486},{"data":8572,"body":8573},{},{"type":442,"children":8574},[8575,8579],{"type":445,"tag":5625,"props":8576,"children":8577},{"id":5627},[8578],{"type":451,"value":5630},{"type":445,"tag":5632,"props":8580,"children":8581},{},[8582],{"type":451,"value":5636},{"data":8584,"body":8585},{},{"type":442,"children":8586},[8587,8591,8595,8606,8610,8645,8649],{"type":445,"tag":5625,"props":8588,"children":8589},{"id":5627},[8590],{"type":451,"value":5630},{"type":445,"tag":5632,"props":8592,"children":8593},{},[8594],{"type":451,"value":5636},{"type":445,"tag":5638,"props":8596,"children":8598},{"id":8597},"_202552-2025-05-24",[8599,8604],{"type":445,"tag":5643,"props":8600,"children":8601},{},[8602],{"type":451,"value":8603},"2025.5.2",{"type":451,"value":8605}," - 2025-05-24",{"type":445,"tag":446,"props":8607,"children":8608},{"id":4870},[8609],{"type":451,"value":4873},{"type":445,"tag":454,"props":8611,"children":8612},{},[8613,8618],{"type":445,"tag":458,"props":8614,"children":8615},{},[8616],{"type":451,"value":8617},"Removed Body Checkup Quick Button",{"type":445,"tag":458,"props":8619,"children":8620},{},[8621,8623,8629,8631,8637,8639],{"type":451,"value":8622},"\"User Settings\" have been moved to ",{"type":445,"tag":4549,"props":8624,"children":8626},{"className":8625},[],[8627],{"type":451,"value":8628},"\u002Fuser-settings",{"type":451,"value":8630}," URL to not overlap with the ",{"type":445,"tag":4549,"props":8632,"children":8634},{"className":8633},[],[8635],{"type":451,"value":8636},"\u002Fsettings\u002F...",{"type":451,"value":8638}," pages (previously named ",{"type":445,"tag":4549,"props":8640,"children":8642},{"className":8641},[],[8643],{"type":451,"value":8644},"\u002Frector\u002F...)",{"type":445,"tag":446,"props":8646,"children":8647},{"id":1452},[8648],{"type":451,"value":1455},{"type":445,"tag":454,"props":8650,"children":8651},{},[8652,8657,8662],{"type":445,"tag":458,"props":8653,"children":8654},{},[8655],{"type":451,"value":8656},"Improved banner message handling on client and server side",{"type":445,"tag":458,"props":8658,"children":8659},{},[8660],{"type":451,"value":8661},"Fix release-it issue with git-cliff caused by fetch-depth in",{"type":445,"tag":458,"props":8663,"children":8664},{},[8665],{"type":451,"value":8666},"Fix Colleague Activity not being correctly queried",{"data":8668,"body":8669},{},{"type":442,"children":8670},[8671,8675,8679,8690,8694],{"type":445,"tag":5625,"props":8672,"children":8673},{"id":5627},[8674],{"type":451,"value":5630},{"type":445,"tag":5632,"props":8676,"children":8677},{},[8678],{"type":451,"value":5636},{"type":445,"tag":5638,"props":8680,"children":8682},{"id":8681},"_202550-2025-05-10",[8683,8688],{"type":445,"tag":5643,"props":8684,"children":8685},{},[8686],{"type":451,"value":8687},"2025.5.0",{"type":451,"value":8689}," - 2025-05-10",{"type":445,"tag":446,"props":8691,"children":8692},{"id":8560},[8693],{"type":451,"value":8563},{"type":445,"tag":454,"props":8695,"children":8696},{},[8697],{"type":445,"tag":458,"props":8698,"children":8699},{},[8700],{"type":451,"value":8701},"Add missing restore button to document categories modal",{"data":8703,"body":8704},{},{"type":442,"children":8705},[8706,8710,8714,8725,8729],{"type":445,"tag":5625,"props":8707,"children":8708},{"id":5627},[8709],{"type":451,"value":5630},{"type":445,"tag":5632,"props":8711,"children":8712},{},[8713],{"type":451,"value":5636},{"type":445,"tag":5638,"props":8715,"children":8717},{"id":8716},"_202548-2025-05-09",[8718,8723],{"type":445,"tag":5643,"props":8719,"children":8720},{},[8721],{"type":451,"value":8722},"2025.4.8",{"type":451,"value":8724}," - 2025-05-09",{"type":445,"tag":446,"props":8726,"children":8727},{"id":8560},[8728],{"type":451,"value":8563},{"type":445,"tag":454,"props":8730,"children":8731},{},[8732],{"type":445,"tag":458,"props":8733,"children":8734},{},[8735],{"type":451,"value":8736},"Use github pat for release-it checkout",{"data":8738,"body":8739},{},{"type":442,"children":8740},[8741,8746,8750,8875,8879,8952,8956,9264],{"type":445,"tag":5632,"props":8742,"children":8743},{},[8744],{"type":451,"value":8745},"This version includes changes from v2026.1.3 that had been created to fix module versioning issues.",{"type":445,"tag":446,"props":8747,"children":8748},{"id":4870},[8749],{"type":451,"value":4873},{"type":445,"tag":454,"props":8751,"children":8752},{},[8753,8846],{"type":445,"tag":458,"props":8754,"children":8755},{},[8756,8758],{"type":451,"value":8757},"ESX Compatibility mode has been removed in favor of DBSync.",{"type":445,"tag":8759,"props":8760,"children":8761},"ol",{},[8762,8767,8772,8777,8782,8803,8821,8834],{"type":445,"tag":458,"props":8763,"children":8764},{},[8765],{"type":451,"value":8766},"You need to setup the DBSync to query and sync your gameserver's data.",{"type":445,"tag":458,"props":8768,"children":8769},{},[8770],{"type":451,"value":8771},"Update FiveNet to at least this release.",{"type":445,"tag":458,"props":8773,"children":8774},{},[8775],{"type":451,"value":8776},"Start up your FiveNet server with the new version\u002Frelease so it runs the latest database migrations.",{"type":445,"tag":458,"props":8778,"children":8779},{},[8780],{"type":451,"value":8781},"Stop your FiveNet instance and stop the DBSync before continuing.",{"type":445,"tag":458,"props":8783,"children":8784},{},[8785,8787,8793,8795,8801],{"type":451,"value":8786},"Take a data only (no ",{"type":445,"tag":4549,"props":8788,"children":8790},{"className":8789},[],[8791],{"type":451,"value":8792},"CREATE TABLE",{"type":451,"value":8794}," statements) dump of the ",{"type":445,"tag":4549,"props":8796,"children":8798},{"className":8797},[],[8799],{"type":451,"value":8800},"fivenet_*",{"type":451,"value":8802}," database tables.",{"type":445,"tag":458,"props":8804,"children":8805},{},[8806,8808],{"type":451,"value":8807},"You can use the following queries to migrate ESX data to FiveNet directly:\n",{"type":445,"tag":8809,"props":8810,"children":8816},"pre",{"className":8811,"code":8812,"language":8813,"meta":8814,"style":8815},"language-sql","-- Users\nINSERT INTO `fivenet_user` (\n    id,\n    identifier,\n    `group`,\n    job,\n    job_grade,\n    firstname,\n    lastname,\n    dateofbirth,\n    sex,\n    height,\n    phone_number,\n    disabled,\n    visum,\n    playtime,\n    created_at,\n    last_seen\n)\nSELECT\n    id,\n    identifier,\n    `group`,\n    job,\n    job_grade,\n    firstname,\n    lastname,\n    dateofbirth,\n    sex,\n    height,\n    phone_number,\n    disabled,\n    visum,\n    playtime,\n    created_at,\n    last_seen\nFROM `users`;\n\n-- Licenses\nINSERT INTO fivenet_licenses (`type`, `label`) SELECT `type`, `label` FROM licenses;\n-- User Licenses\nINSERT\n    INTO\n    fivenet_user_licenses (`user_id`,\n    `type`,\n    `owner`)\nSELECT\n    u.id,\n    ul.`type`,\n    ul.`owner`\nFROM\n    user_licenses ul\nINNER JOIN users u ON (u.identifier = ul.`owner`);\n\n-- Owned Vehicles\nINSERT INTO `fivenet_owned_vehicles` (`owner`, `user_id`, `job`, `plate`, `model`, `type`)\nSELECT `owner`, NULL, NULL, `plate`, `model`, `type` FROM `owned_vehicles`;\n","sql","","undefined",[8817],{"type":445,"tag":4549,"props":8818,"children":8819},{"__ignoreMap":8814},[8820],{"type":451,"value":8812},{"type":445,"tag":458,"props":8822,"children":8823},{},[8824,8826,8832],{"type":451,"value":8825},"Run the DBSync and wait for all data (e.g., users, vehicles) to be synced to the FiveNet table (e.g., ",{"type":445,"tag":4549,"props":8827,"children":8829},{"className":8828},[],[8830],{"type":451,"value":8831},"fivenet_user",{"type":451,"value":8833},").",{"type":445,"tag":458,"props":8835,"children":8836},{},[8837,8839,8844],{"type":451,"value":8838},"Now you should be able to restore the data only dump of the ",{"type":445,"tag":4549,"props":8840,"children":8842},{"className":8841},[],[8843],{"type":451,"value":8800},{"type":451,"value":8845}," tables.",{"type":445,"tag":458,"props":8847,"children":8848},{},[8849,8851],{"type":451,"value":8850},"Document Editor now uses Tiptap JSON format (wrapped in a basic Proto message).",{"type":445,"tag":454,"props":8852,"children":8853},{},[8854],{"type":445,"tag":458,"props":8855,"children":8856},{},[8857,8859,8865,8867,8873],{"type":451,"value":8858},"It is recommended to migrate any HTML documents to the JSON format, example command: ",{"type":445,"tag":4549,"props":8860,"children":8862},{"className":8861},[],[8863],{"type":451,"value":8864},"fivenet migrations docstojson --dry-run",{"type":451,"value":8866},", when you are sure that the affected documents are correct, run ",{"type":445,"tag":4549,"props":8868,"children":8870},{"className":8869},[],[8871],{"type":451,"value":8872},"fivenet migrations docstojson --no-dry-run",{"type":451,"value":8874}," to actually apply the migrations.",{"type":445,"tag":446,"props":8876,"children":8877},{"id":448},[8878],{"type":451,"value":452},{"type":445,"tag":454,"props":8880,"children":8881},{},[8882,8887,8892,8897,8902,8907,8912,8917,8922,8927,8932,8937,8942,8947],{"type":445,"tag":458,"props":8883,"children":8884},{},[8885],{"type":451,"value":8886},"Data separation and management design implemented",{"type":445,"tag":458,"props":8888,"children":8889},{},[8890],{"type":451,"value":8891},"Re-organize and split proto files",{"type":445,"tag":458,"props":8893,"children":8894},{},[8895],{"type":451,"value":8896},"Cleanup proto messages and structure",{"type":445,"tag":458,"props":8898,"children":8899},{},[8900],{"type":451,"value":8901},"Update go generated sql models\u002Ftables",{"type":445,"tag":458,"props":8903,"children":8904},{},[8905],{"type":451,"value":8906},"Improve account editing logic and data separation migrations",{"type":445,"tag":458,"props":8908,"children":8909},{},[8910],{"type":451,"value":8911},"Add superuser jobs list",{"type":445,"tag":458,"props":8913,"children":8914},{},[8915],{"type":451,"value":8916},"Add table update logic (adding\u002Fdeleting columns\u002Frows)",{"type":445,"tag":458,"props":8918,"children":8919},{},[8920],{"type":451,"value":8921},"Add basic limiter role perms and attrs templates",{"type":445,"tag":458,"props":8923,"children":8924},{},[8925],{"type":451,"value":8926},"Restructure dbsync code",{"type":445,"tag":458,"props":8928,"children":8929},{},[8930],{"type":451,"value":8931},"Improve jwt token usage on client-side",{"type":445,"tag":458,"props":8933,"children":8934},{},[8935],{"type":451,"value":8936},"Add cayo perico island livemap app toggle",{"type":445,"tag":458,"props":8938,"children":8939},{},[8940],{"type":451,"value":8941},"Introduce user jobs sync for multi job systems",{"type":445,"tag":458,"props":8943,"children":8944},{},[8945],{"type":451,"value":8946},"Add dbsync logic for user phone numbers",{"type":445,"tag":458,"props":8948,"children":8949},{},[8950],{"type":451,"value":8951},"Create index in dbsync tablemanager",{"type":445,"tag":446,"props":8953,"children":8954},{"id":511},[8955],{"type":451,"value":514},{"type":445,"tag":454,"props":8957,"children":8958},{},[8959,8964,8969,8974,8979,8984,8989,8994,8999,9004,9009,9014,9019,9024,9029,9034,9039,9044,9049,9054,9059,9064,9069,9074,9079,9084,9089,9094,9099,9104,9109,9114,9119,9124,9129,9134,9139,9144,9149,9154,9159,9164,9169,9174,9179,9184,9189,9194,9199,9204,9209,9214,9219,9224,9229,9234,9239,9244,9249,9254,9259],{"type":445,"tag":458,"props":8960,"children":8961},{},[8962],{"type":451,"value":8963},"Cleanup oauth2 providers",{"type":445,"tag":458,"props":8965,"children":8966},{},[8967],{"type":451,"value":8968},"Oauth2 test case",{"type":445,"tag":458,"props":8970,"children":8971},{},[8972],{"type":451,"value":8973},"Tablemanager and i18n tests after %s -> %q changes",{"type":445,"tag":458,"props":8975,"children":8976},{},[8977],{"type":451,"value":8978},"Ui inconsistencies and doc post comment error",{"type":445,"tag":458,"props":8980,"children":8981},{},[8982],{"type":451,"value":8983},"Doc comment editing button not showing",{"type":445,"tag":458,"props":8985,"children":8986},{},[8987],{"type":451,"value":8988},"Improve access badges format and info shown",{"type":445,"tag":458,"props":8990,"children":8991},{},[8992],{"type":451,"value":8993},"More translations for fabric editor components",{"type":445,"tag":458,"props":8995,"children":8996},{},[8997],{"type":451,"value":8998},"Improve impersonation integration with superuser",{"type":445,"tag":458,"props":9000,"children":9001},{},[9002],{"type":451,"value":9003},"Move impersonating banner to top and make it slimmer",{"type":445,"tag":458,"props":9005,"children":9006},{},[9007],{"type":451,"value":9008},"Split superuser mode activated\u002Fdeactivated notification",{"type":445,"tag":458,"props":9010,"children":9011},{},[9012],{"type":451,"value":9013},"Color \"green\" used where it should \"success\" color instead",{"type":445,"tag":458,"props":9015,"children":9016},{},[9017],{"type":451,"value":9018},"Remove outdated hint",{"type":445,"tag":458,"props":9020,"children":9021},{},[9022],{"type":451,"value":9023},"Add base html\u002Fcss named colors to sanitizer",{"type":445,"tag":458,"props":9025,"children":9026},{},[9027],{"type":451,"value":9028},"Doc approval snap date issues and task selection",{"type":445,"tag":458,"props":9030,"children":9031},{},[9032],{"type":451,"value":9033},"Approval task inbox list",{"type":445,"tag":458,"props":9035,"children":9036},{},[9037],{"type":451,"value":9038},"Remove debug print log",{"type":445,"tag":458,"props":9040,"children":9041},{},[9042],{"type":451,"value":9043},"Change housekeeper units comment to FIXME instead of TODO",{"type":445,"tag":458,"props":9045,"children":9046},{},[9047],{"type":451,"value":9048},"Start replacing typed routes and cleanup content funcs on client-",{"type":445,"tag":458,"props":9050,"children":9051},{},[9052],{"type":451,"value":9053},"Use user_id for user locations instead of identifier",{"type":445,"tag":458,"props":9055,"children":9056},{},[9057],{"type":451,"value":9058},"Sql migrations and change test cases as needed",{"type":445,"tag":458,"props":9060,"children":9061},{},[9062],{"type":451,"value":9063},"Sql testdata",{"type":445,"tag":458,"props":9065,"children":9066},{},[9067],{"type":451,"value":9068},"Send ErrNoUserInfo when no account is found",{"type":445,"tag":458,"props":9070,"children":9071},{},[9072],{"type":451,"value":9073},"Add titles to more auth service errors",{"type":445,"tag":458,"props":9075,"children":9076},{},[9077],{"type":451,"value":9078},"Add missing db conn parameter example and add wip v2 sync api",{"type":445,"tag":458,"props":9080,"children":9081},{},[9082],{"type":451,"value":9083},"Proto generated clients.ts using wrong import",{"type":445,"tag":458,"props":9085,"children":9086},{},[9087],{"type":451,"value":9088},"Users sync and add comments count to document meta",{"type":445,"tag":458,"props":9090,"children":9091},{},[9092],{"type":451,"value":9093},"Improve audit log entry copy text button",{"type":445,"tag":458,"props":9095,"children":9096},{},[9097],{"type":451,"value":9098},"Jobs pages permissions",{"type":445,"tag":458,"props":9100,"children":9101},{},[9102],{"type":451,"value":9103},"Citizen activity reason",{"type":445,"tag":458,"props":9105,"children":9106},{},[9107],{"type":451,"value":9108},"Auth perms check superuser logic",{"type":445,"tag":458,"props":9110,"children":9111},{},[9112],{"type":451,"value":9113},"Restart notifications stream on superuser mode switch",{"type":445,"tag":458,"props":9115,"children":9116},{},[9117],{"type":451,"value":9118},"Websocket re-auth logic missing",{"type":445,"tag":458,"props":9120,"children":9121},{},[9122],{"type":451,"value":9123},"Link chars to account ids on login for now",{"type":445,"tag":458,"props":9125,"children":9126},{},[9127],{"type":451,"value":9128},"Improve document references and relations tables",{"type":445,"tag":458,"props":9130,"children":9131},{},[9132],{"type":451,"value":9133},"Update .nuxtrc",{"type":445,"tag":458,"props":9135,"children":9136},{},[9137],{"type":451,"value":9138},"Cleanup app plugins and update nuxt-update",{"type":445,"tag":458,"props":9140,"children":9141},{},[9142],{"type":451,"value":9143},"Move cayo perico overlay coords to separate file",{"type":445,"tag":458,"props":9145,"children":9146},{},[9147],{"type":451,"value":9148},"Split timeclock stats drawer into separate component",{"type":445,"tag":458,"props":9150,"children":9151},{},[9152],{"type":451,"value":9153},"Correct cluster picker hidden marker count",{"type":445,"tag":458,"props":9155,"children":9156},{},[9157],{"type":451,"value":9158},"Add missing icons for document approval feature",{"type":445,"tag":458,"props":9160,"children":9161},{},[9162],{"type":451,"value":9163},"Typecheck complaints",{"type":445,"tag":458,"props":9165,"children":9166},{},[9167],{"type":451,"value":9168},"Js jwt tests",{"type":445,"tag":458,"props":9170,"children":9171},{},[9172],{"type":451,"value":9173},"Issues with user licenses and jobs sync",{"type":445,"tag":458,"props":9175,"children":9176},{},[9177],{"type":451,"value":9178},"Update dbsync example config",{"type":445,"tag":458,"props":9180,"children":9181},{},[9182],{"type":451,"value":9183},"Move sync api details to separate struct in config",{"type":445,"tag":458,"props":9185,"children":9186},{},[9187],{"type":451,"value":9188},"Grpc transport insecure logic",{"type":445,"tag":458,"props":9190,"children":9191},{},[9192],{"type":451,"value":9193},"Document relations by default including documens the user created",{"type":445,"tag":458,"props":9195,"children":9196},{},[9197],{"type":451,"value":9198},"Comment count display in doc view",{"type":445,"tag":458,"props":9200,"children":9201},{},[9202],{"type":451,"value":9203},"Calendar creation issue and add all day events",{"type":445,"tag":458,"props":9205,"children":9206},{},[9207],{"type":451,"value":9208},"Nil issue in dbsync",{"type":445,"tag":458,"props":9210,"children":9211},{},[9212],{"type":451,"value":9213},"Issues with docs not having a meta entry",{"type":445,"tag":458,"props":9215,"children":9216},{},[9217],{"type":451,"value":9218},"Add sync getstatus call on start",{"type":445,"tag":458,"props":9220,"children":9221},{},[9222],{"type":451,"value":9223},"Log synced count",{"type":445,"tag":458,"props":9225,"children":9226},{},[9227],{"type":451,"value":9228},"Dbsync subtract from last check time to prevent data loss",{"type":445,"tag":458,"props":9230,"children":9231},{},[9232],{"type":451,"value":9233},"Livemap overlays not included in images",{"type":445,"tag":458,"props":9235,"children":9236},{},[9237],{"type":451,"value":9238},"Dbsync tablemanager test case",{"type":445,"tag":458,"props":9240,"children":9241},{},[9242],{"type":451,"value":9243},"Update livemap tiles submodule",{"type":445,"tag":458,"props":9245,"children":9246},{},[9247],{"type":451,"value":9248},"Add apple-touch-icon to rel entries",{"type":445,"tag":458,"props":9250,"children":9251},{},[9252],{"type":451,"value":9253},"Filestore admin file list",{"type":445,"tag":458,"props":9255,"children":9256},{},[9257],{"type":451,"value":9258},"Dbsync tablemanager test case failure",{"type":445,"tag":458,"props":9260,"children":9261},{},[9262],{"type":451,"value":9263},"Get mysql image for tests from docker-compose.dev.yaml",{"type":445,"tag":9265,"props":9266,"children":9267},"style",{},[9268],{"type":451,"value":8814},{"data":9270,"body":9271},{},{"type":442,"children":9272},[9273,9281,9290,9298,9342,9348,9362,9366,9389,9393,9434,9440,9448],{"type":445,"tag":5638,"props":9274,"children":9275},{"id":8597},[9276,9280],{"type":445,"tag":5643,"props":9277,"children":9278},{},[9279],{"type":451,"value":8603},{"type":451,"value":8605},{"type":445,"tag":446,"props":9282,"children":9284},{"id":9283},"important-notes",[9285],{"type":445,"tag":6653,"props":9286,"children":9287},{},[9288],{"type":451,"value":9289},"Important Notes",{"type":445,"tag":5632,"props":9291,"children":9292},{},[9293],{"type":445,"tag":6653,"props":9294,"children":9295},{},[9296],{"type":451,"value":9297},"Take a backup of your FiveNet database! This update changes the database structure quite a bit.",{"type":445,"tag":8759,"props":9299,"children":9300},{},[9301,9306,9321,9326],{"type":445,"tag":458,"props":9302,"children":9303},{},[9304],{"type":451,"value":9305},"Make sure to stop all FiveNet components.",{"type":445,"tag":458,"props":9307,"children":9308},{},[9309,9311],{"type":451,"value":9310},"Clear the NATS key value stores with this command (if you use this NATS for more than FiveNet, you need to edit the command to only delete the key value stores of FiveNet):\n",{"type":445,"tag":8809,"props":9312,"children":9316},{"className":9313,"code":9314,"language":9315,"meta":8814,"style":8815},"language-shell","nats kv ls -n | xargs -n 1 nats kv del --force\n","shell",[9317],{"type":445,"tag":4549,"props":9318,"children":9319},{"__ignoreMap":8814},[9320],{"type":451,"value":9314},{"type":445,"tag":458,"props":9322,"children":9323},{},[9324],{"type":451,"value":9325},"Now you can start the FiveNet server and other components (e.g., worker) again.",{"type":445,"tag":458,"props":9327,"children":9328},{},[9329,9331,9340],{"type":451,"value":9330},"In the FiveNet app config, update the default permissions, to update\u002Fadd permissions you can use this list of permissions ",{"type":445,"tag":9332,"props":9333,"children":9337},"a",{"href":9334,"rel":9335},"https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Fblob\u002Fmain\u002Fgen\u002Fts\u002Fperms.ts#L103",[9336],"nofollow",[9338],{"type":451,"value":9339},"here",{"type":451,"value":9341},".",{"type":445,"tag":446,"props":9343,"children":9345},{"id":9344},"should-you-run-into-database-migration-issues-read-this",[9346],{"type":451,"value":9347},"Should you run into database migration issues, read this",{"type":445,"tag":5632,"props":9349,"children":9350},{},[9351,9353,9360],{"type":451,"value":9352},"Please save the container logs and ",{"type":445,"tag":9332,"props":9354,"children":9357},{"href":9355,"rel":9356},"https:\u002F\u002Fgithub.com\u002Ffivenet-app\u002Ffivenet\u002Fissues\u002Fnew?template=bug_report.md",[9336],[9358],{"type":451,"value":9359},"open an issue",{"type":451,"value":9361}," so we can figure out what went wrong and how to fix it.",{"type":445,"tag":446,"props":9363,"children":9364},{"id":8560},[9365],{"type":451,"value":8563},{"type":445,"tag":454,"props":9367,"children":9368},{},[9369,9374,9379,9384],{"type":445,"tag":458,"props":9370,"children":9371},{},[9372],{"type":451,"value":9373},"Add validation for negative value\u002Fvalid value in job grade list",{"type":445,"tag":458,"props":9375,"children":9376},{},[9377],{"type":451,"value":9378},"Document view issues caused by content rendered nuxtimg component",{"type":445,"tag":458,"props":9380,"children":9381},{},[9382],{"type":451,"value":9383},"Sync api error handling improvements",{"type":445,"tag":458,"props":9385,"children":9386},{},[9387],{"type":451,"value":9388},"Issues with html nuxtimg tag and citizen documents list",{"type":445,"tag":446,"props":9390,"children":9391},{"id":448},[9392],{"type":451,"value":452},{"type":445,"tag":454,"props":9394,"children":9395},{},[9396,9409,9414,9419,9424,9429],{"type":445,"tag":458,"props":9397,"children":9398},{},[9399,9401,9407],{"type":451,"value":9400},"Add basic ",{"type":445,"tag":4549,"props":9402,"children":9404},{"className":9403},[],[9405],{"type":451,"value":9406},"fivenet tools sync status",{"type":451,"value":9408}," subcommand",{"type":445,"tag":458,"props":9410,"children":9411},{},[9412],{"type":451,"value":9413},"Use NuxtImg for lazy loading images",{"type":445,"tag":458,"props":9415,"children":9416},{},[9417],{"type":451,"value":9418},"Rework index page",{"type":445,"tag":458,"props":9420,"children":9421},{},[9422],{"type":451,"value":9423},"Add custom i18n logic for backend",{"type":445,"tag":458,"props":9425,"children":9426},{},[9427],{"type":451,"value":9428},"Citizen documents improvements",{"type":445,"tag":458,"props":9430,"children":9431},{},[9432],{"type":451,"value":9433},"Cleanup naming schema of apis, perms and more",{"type":445,"tag":446,"props":9435,"children":9437},{"id":9436},"documentation",[9438],{"type":451,"value":9439},"📚 Documentation",{"type":445,"tag":454,"props":9441,"children":9442},{},[9443],{"type":445,"tag":458,"props":9444,"children":9445},{},[9446],{"type":451,"value":9447},"Add github issues templates",{"type":445,"tag":9265,"props":9449,"children":9450},{},[9451],{"type":451,"value":8814},1787957457079]