diff --git a/nginx/vue/package-lock.json b/nginx/vue/package-lock.json
index fb1c9ec..de78f73 100644
--- a/nginx/vue/package-lock.json
+++ b/nginx/vue/package-lock.json
@@ -12,6 +12,7 @@
"axios": "^1.13.2",
"katex": "^0.16.27",
"markdown-it": "^14.1.0",
+ "markdown-it-wikilinks": "^1.4.0",
"pinia": "^3.0.4",
"vue": "^3.5.22",
"vue-router": "^4.6.3"
@@ -2113,6 +2114,12 @@
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
"license": "MIT"
},
+ "node_modules/extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+ "license": "MIT"
+ },
"node_modules/fdir": {
"version": "6.5.0",
"resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
@@ -2459,6 +2466,24 @@
"markdown-it": "bin/markdown-it.mjs"
}
},
+ "node_modules/markdown-it-regexp": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/markdown-it-regexp/-/markdown-it-regexp-0.4.0.tgz",
+ "integrity": "sha512-0XQmr46K/rMKnI93Y3CLXsHj4jIioRETTAiVnJnjrZCEkGaDOmUxTbZj/aZ17G5NlRcVpWBYjqpwSlQ9lj+Kxw==",
+ "license": "MIT"
+ },
+ "node_modules/markdown-it-wikilinks": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/markdown-it-wikilinks/-/markdown-it-wikilinks-1.4.0.tgz",
+ "integrity": "sha512-LJhRWett3Do9doMMkpodOV5pvAMZjOOODqcifPfd+jdobhdg3UY8i824L5657UBWx7HSbOqicwNUzcVjOiswgw==",
+ "license": "MIT",
+ "dependencies": {
+ "extend": "^3.0.2",
+ "markdown-it-regexp": "^0.4.0",
+ "reurl": "git+https://github.com/jsepia/reurl.git#commonjs",
+ "sanitize-filename": "^1.6.3"
+ }
+ },
"node_modules/math-intrinsics": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
@@ -2656,6 +2681,15 @@
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
"license": "MIT"
},
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/punycode.js": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz",
@@ -2665,6 +2699,14 @@
"node": ">=6"
}
},
+ "node_modules/reurl": {
+ "version": "1.0.0-rc.2",
+ "resolved": "git+ssh://git@github.com/jsepia/reurl.git#a3210117636c115fb139517fcfb2ea929025cded",
+ "license": "MIT",
+ "dependencies": {
+ "spec-url": "^2.0.0-dev.1"
+ }
+ },
"node_modules/rfdc": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz",
@@ -2729,6 +2771,15 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/sanitize-filename": {
+ "version": "1.6.3",
+ "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz",
+ "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==",
+ "license": "WTFPL OR ISC",
+ "dependencies": {
+ "truncate-utf8-bytes": "^1.0.0"
+ }
+ },
"node_modules/semver": {
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
@@ -2772,6 +2823,15 @@
"node": ">=0.10.0"
}
},
+ "node_modules/spec-url": {
+ "version": "2.0.0-dev.1",
+ "resolved": "https://registry.npmjs.org/spec-url/-/spec-url-2.0.0-dev.1.tgz",
+ "integrity": "sha512-NKE2wT6tsvYa4xfVFcnjxSDFJwDOwU1NU2NhfnxFksutZrOShZ2p7pgQWS98Evq0cHMGBBjGQlbwrcAHLDywfw==",
+ "license": "MIT",
+ "dependencies": {
+ "punycode": "^2.1.1"
+ }
+ },
"node_modules/superjson": {
"version": "2.2.6",
"resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.6.tgz",
@@ -2811,6 +2871,15 @@
"node": ">=6"
}
},
+ "node_modules/truncate-utf8-bytes": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz",
+ "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==",
+ "license": "WTFPL",
+ "dependencies": {
+ "utf8-byte-length": "^1.0.1"
+ }
+ },
"node_modules/uc.micro": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz",
@@ -2865,6 +2934,12 @@
"browserslist": ">= 4.21.0"
}
},
+ "node_modules/utf8-byte-length": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz",
+ "integrity": "sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==",
+ "license": "(WTFPL OR MIT)"
+ },
"node_modules/vite": {
"version": "7.3.1",
"resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz",
diff --git a/nginx/vue/package.json b/nginx/vue/package.json
index 874aaf0..e0a330d 100644
--- a/nginx/vue/package.json
+++ b/nginx/vue/package.json
@@ -16,6 +16,7 @@
"axios": "^1.13.2",
"katex": "^0.16.27",
"markdown-it": "^14.1.0",
+ "markdown-it-wikilinks": "^1.4.0",
"pinia": "^3.0.4",
"vue": "^3.5.22",
"vue-router": "^4.6.3"
diff --git a/nginx/vue/src/components/home/Links.vue b/nginx/vue/src/components/home/Links.vue
index 6ae20e0..3319fd8 100644
--- a/nginx/vue/src/components/home/Links.vue
+++ b/nginx/vue/src/components/home/Links.vue
@@ -1,6 +1,7 @@
diff --git a/nginx/vue/src/components/quick/Markdown.vue b/nginx/vue/src/components/quick/Markdown.vue
index adaed49..662c3d6 100644
--- a/nginx/vue/src/components/quick/Markdown.vue
+++ b/nginx/vue/src/components/quick/Markdown.vue
@@ -1,8 +1,10 @@