\n\n \n\n### Desired behavior\n\nShiki should be initialized once and reused for subsequent highlight calls.\n\n### Reproduction\n\n_No response_\n\n### Steps to reproduce\n\nLoad a large vitepress project with any code in it\n\n### Logs and Error Messages\n\nvitepress-openapi.client.es.js:62532 [Shiki] 590 instances have been created. Shiki is supposed to be used as a singleton, consider refactoring your code to cache your highlighter instance; Or call `highlighter.dispose()` to release unused instances.\n\n### Other Information\n\n_No response_",[3171],{"name":3172,"color":3173},"needs reproduction","ffffff",278,"enzonotario","vitepress-openapi","open","Shiki instance not being reused","2025-09-11T11:47:16Z","https://github.com/enzonotario/vitepress-openapi/issues/278",0.8121657,{"description":3183,"labels":3184,"number":3185,"owner":3175,"repository":3176,"state":3177,"title":3186,"updated_at":3187,"url":3188,"score":3189},"So, following on from https://github.com/enzonotario/vitepress-openapi/issues/237#issuecomment-2994204686\n\nThis \"issue\" is rather a place to collect my thoughts and discuss, potentially some of these ideas are bad, but its the combination of thoughts given the `xxx` confusion I had, + pulling in thoughts from other tooling I have used.\n\n---\n\n\n\nThe display of `xxx` is unclear to me in terms of what it is trying to communicate.\nIt could be one of these things\n - xxx is the example, a placeholder for you to enter something into\n - It could be representing the fact that a value is there, but we dont want to show you (like `***` for passwords)\n - It could be the actual value saved in local storage? waiting for you to update it?\n\nWhen loading first time and making a request, I actually saw that it made a request with a literal `xxx`\n\n\n\nNot sure if this is something I had entered though?\n\nIt was indeed stored in local storage (and the UI didn't really help me figure that out...)\n\n\n\nDeleting the key from local storage, and I then correctly see the example appear in the latest version\n\n\n\nAs a result, im not sure if https://github.com/enzonotario/vitepress-openapi/issues/237 even was an issue, or rather just I had no idea where the `xxx` was coming from?\n\nSo, I would propose......\n\n**1)When key is stored and coming form local storage, keep it editable**\n\nCurrently when its coming form local storage, it is the placeholder for the field..\n\n\n\nThis makes it appear exactly like the example, and examples else where and thus is easily confused.\n\nI see other API sandboxes just keep / load the field into the text box and leave it there, so perhaps just do that?\n\n**2)Hover text for field saying it is stored between sessions in local storage?**\n\nAgain, a subtle way to make it easier for folks to understand what it going on?\n\n**3)Provide a way to clear from local storage**\n\nPerhaps a small clear button next to the APIKey name?\n\n\n\nMaybe there should even be a save button here rather than doing it automatically?\n\nPerhaps all of what I have said and am saying should be other in the other component?\n\n\n\n**4) Provide an optional button next to token field, to take a user to a page to setup the api key?**\n\nThis could be a custom dedicated page with custom content.\nIt thus could be as simple as just a page with instructions, and also a text box and save button that would put the key in local storage?\nIt could also just be a popup?\n\nPerhaps a default component for use on such as page could be used that takes the key and puts it in the right place in local storage?\n\nAnd perhaps another way of default option that could be provided would be a link to the route page that would generate the token, such as in my case http://localhost:8093/apis/v2/post-users-login\nOnce making the request and getting a response, next to the response would be a button to say \"set as API key\" or such?\nSo this would require some additional options on the route component?\n\nPerhaps something in one of these 3 green places?\n\n",[],246,"Ideas around Authorization saving and population","2025-06-23T08:01:09Z","https://github.com/enzonotario/vitepress-openapi/issues/246",0.8202904,{"description":3191,"labels":3192,"number":93,"owner":3175,"repository":3193,"state":3177,"title":3194,"updated_at":3195,"url":3196,"score":3197},"Si quieres proponer nuevas APIs para ser documentadas, deja un comentario incluyendo lo siguiente:\n\n- Nombre de la API:\n- Descripción breve:\n- URL del OpenAPI o documentación oficial:",[],"apidocs.ar","Propuestas de nuevas APIs a documentar","2025-08-30T12:25:19Z","https://github.com/enzonotario/apidocs.ar/issues/1",0.8255405,{"description":3199,"labels":3200,"number":736,"owner":3175,"repository":3201,"state":3177,"title":3202,"updated_at":3203,"url":3204,"score":3205},"# VitePress Plugin Utterances\n\nA VitePress plugin that integrates the Utterances comments widget (GitHub Issues).\n\n[https://vitepress-plugin-utterances.vercel.app/](https://vitepress-plugin-utterances.vercel.app/)",[],"vitepress-plugin-utterances","homepage","2025-08-30T12:40:54Z","https://github.com/enzonotario/vitepress-plugin-utterances/issues/2",0.8384081,{"description":3207,"labels":3208,"number":3209,"owner":3175,"repository":3176,"state":3210,"title":3211,"updated_at":3212,"url":3213,"score":3214},"### Current behavior\n\nHello,guys\n\nWhen i use that example about the Pages By operation\n\n```md\n---\naside: false\noutline: false\ntitle: vitepress-openapi\n---\n\n\u003Cscript setup lang=\"ts\">\nimport { useRoute } from 'vitepress'\n\nconst route = useRoute()\n\nconst operationId = route.data.params.operationId\n\u003C/script>\n\n\u003COAOperation :operationId=\"operationId\" />\n\n```\n\n```js\nimport { usePaths } from 'vitepress-openapi'\nimport spec from '../../public/test.json' with {type: 'json'}\n\nexport default {\n paths() {\n return usePaths({ spec })\n .getPathsByVerbs()\n .map(({ operationId, summary }) => {\n return {\n params: {\n operationId,\n pageTitle: `${summary} - vitepress-openapi`,\n },\n }\n })\n },\n}\n```\n\nThe terminal show this error,but i dont understand what it mean\n\n\n\nThe terminal guide me the links https://cn.vite.dev/guide/troubleshooting which is show The CJS build of Vite's Node API is deprecated and will be removed in Vite 6. \n\nHope u give the answer thank u so much\n\n\n### Desired behavior\n\n_No response_\n\n### Reproduction\n\n_No response_\n\n### Steps to reproduce\n\n\n\n### Logs and Error Messages\n\n\n\n### Other Information\n\n_No response_",[],212,"closed","Pages by Operation Example dose not work","2025-04-30T22:18:57Z","https://github.com/enzonotario/vitepress-openapi/issues/212",0.77572083,{"description":3216,"labels":3217,"number":3218,"owner":3175,"repository":3176,"state":3210,"title":3219,"updated_at":3220,"url":3221,"score":3222},"Hi! It took me some time to figure out how to prevent vitepress-openapi styles from leaking into `.vp-raw` (`:::raw`) blocks. Consider adding an example to the documentation:\n\n```js\n// docs/postcss.config.mjs\n\nimport { postcssIsolateStyles } from 'vitepress';\n\nexport default {\n plugins: [\n // Make `::: raw` sections be isolated from vitepress-openapi plugin styles\n postcssIsolateStyles({\n includeFiles: [ /vitepress-openapi\\.css/ ], // ← NOT `vitepress-openapi/dist/style.css` (!)\n }),\n ],\n};\n```\n\nThank you for your work!",[],251,"Mention style isolation in documentation","2025-07-05T14:22:04Z","https://github.com/enzonotario/vitepress-openapi/issues/251",0.7897513,{"description":3224,"labels":3225,"number":1408,"owner":3175,"repository":3226,"state":3210,"title":3227,"updated_at":3228,"url":3229,"score":3230},"",[],"lighthouse-laravel-websockets","It would be nice if there's a readme for how this repo was setup","2020-04-04T01:06:07Z","https://github.com/enzonotario/lighthouse-laravel-websockets/issues/4",0.7951477,{"description":3232,"labels":3233,"number":3234,"owner":3175,"repository":3176,"state":3210,"title":3235,"updated_at":3236,"url":3237,"score":3238},"### Current behavior\n\nIn OpenAPI you can create a nullable object with:\n```yaml\ntype: [object, 'null']\nproperties:\n example:\n type: string\n```\n\nCurrently, vitepress-openapi will not display the properties correctly.\n\n### Desired behavior\n\nIf the object is nullable, it should still list all properties of nullable object and not just `object | null`\n\n### Reproduction\n\n_No response_\n\n### Steps to reproduce\n\n```json\n{\n \"openapi\": \"3.1.0\",\n \"info\": {\n \"title\": \"Nullable objects\"\n },\n \"servers\": [\n {\n \"url\": \"https://whatever.com\",\n \"description\": \"Mock Server\"\n }\n ],\n \"paths\": {\n \"/nullable\": {\n \"get\": {\n \"tags\": [\n \"Nullable\"\n ],\n \"summary\": \"Get nullable object\",\n \"description\": \"Yayy\",\n \"operationId\": \"getNullableObject\",\n \"responses\": {\n \"200\": {\n \"description\": \"OK\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"a\": {\n \"type\": [\n \"object\",\n \"null\"\n ],\n \"properties\": {\n \"a\": {\n \"type\": \"number\"\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n },\n \"tags\": [],\n \"externalDocs\": {}\n}\n```\n\n\n\n### Logs and Error Messages\n\n_No response_\n\n### Other Information\n\n_No response_",[],206,"\"nullable\" objects","2025-04-24T01:25:01Z","https://github.com/enzonotario/vitepress-openapi/issues/206",0.7990648,{"description":3240,"labels":3241,"number":3245,"owner":3175,"repository":3176,"state":3210,"title":3246,"updated_at":3247,"url":3248,"score":3249},"### What would you like?\r\n\r\nList of tags underneath the title\r\n\r\n### Why is this needed?\r\n\r\nWould be handy with tags pages, if one doesn't show tags in the sidebar (without `itemsByTags`)\r\n\r\n### How could it be implemented?\r\n\r\nI use following workaround\r\n\r\n```vue\r\n\u003COAOperation :operationId=\"operationId\" :isDark=\"isDark\" >\r\n \u003Ctemplate #description=\"description\">\r\n \u003Cdiv>\r\n \u003CBadge type=\"info\" v-for=\"tag in operation.tags\">\r\n \u003C!-- hardocde prefix, tell me if you know better way -->\r\n \u003Ca :href=\"`/tags/${tag}`\">{{ tag }}\u003C/a>\r\n \u003C/Badge>\r\n \u003C/div>\r\n \u003C/template>\r\n\u003C/OAOperation>\r\n```\r\n\r\nBut would be nice to have\r\n\r\n```ts\r\nuseTheme({\r\n operation: {\r\n slots: ['tags']\r\n }\r\n})\r\n```\r\n\r\n### Other information\r\n\r\nRelated: it would be nice to have more compact representation of endpoints lists for tags pages. For now I use\r\n\r\n```ts\r\nimport { useTheme } from 'vitepress-openapi'\r\nuseTheme({\r\n operation: {\r\n slots: [\r\n 'header',\r\n 'path',\r\n 'description',\r\n ],\r\n cols: 2,\r\n },\r\n})\r\n```\r\n\r\nWhich looks a bit strange",[3242],{"name":3243,"color":3244},"enhancement","a2eeef",120,"Add tags slot","2024-12-02T03:07:06Z","https://github.com/enzonotario/vitepress-openapi/issues/120",0.80382955,{"description":3251,"labels":3252,"number":1234,"owner":3175,"repository":3226,"state":3210,"title":3253,"updated_at":3254,"url":3255,"score":3256},"Hi @enzonotario \r\n\r\nFirst of all, thank you for this repo! It is very helpful.\r\nI followed exactly the steps you wrote, but i get a strange error, and i ran out of ideas what could be wrong. I receive an error message from Pusher in the console saying: json returned from auth endpoint was invalid, yet status code was 200.\r\nIn the DevTools i see that it hits the authEndpoint with status code 200, but as a response i get back the content of my app.blade.php. It is really strange. Do you have any idea what could cause this?\r\n\r\nIt's not just my app. I downloaded and installed this repo of yours, and i get the same error.",[],"json returned from auth endpoint was invalid, yet status code was 200.","2020-04-16T18:51:33Z","https://github.com/enzonotario/lighthouse-laravel-websockets/issues/6",0.80939597,["Reactive",3258],{},["Set"],["ShallowReactive",3261],{"$fTRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"$fVg5PoPVXZc-FXPeEbZQv0UKo590tcVpk4-GXu3GwSGU":-1},"/enzonotario/vitepress-openapi/303"]