Skip to content
Merged
Show file tree
Hide file tree
Changes from 115 commits
Commits
Show all changes
121 commits
Select commit Hold shift + click to select a range
16118d1
chore: remove deprecated social
rneuschulz-pixel Dec 7, 2025
c495b0b
chore: harmonize capitalization
rneuschulz-pixel Dec 7, 2025
58b097f
chore: readme update
rneuschulz-pixel Dec 7, 2025
d8437fe
chore: update yarn and node
rneuschulz-pixel Dec 11, 2025
ffe1bfe
chore: update pages
rneuschulz-pixel Dec 11, 2025
c8de562
Merge pull request #1 from r-neuschulz/fix/update-node-24-cache
r-neuschulz Dec 11, 2025
ae53456
chore: update eslint
rneuschulz-pixel Dec 12, 2025
8159ede
chore: viteify
rneuschulz-pixel Dec 12, 2025
8fb960a
chore: eslint fix pass
rneuschulz-pixel Dec 12, 2025
58011ba
chore: remove old vue-cli config, adress warnings
rneuschulz-pixel Dec 13, 2025
6c3d4d3
chore: further warnings
rneuschulz-pixel Dec 13, 2025
3175c49
chore: fix language plugin for windows
rneuschulz-pixel Dec 13, 2025
13747dd
chore: update socials
rneuschulz-pixel Dec 13, 2025
64bb3a8
chore: fix language loading
rneuschulz-pixel Dec 13, 2025
18c1ff6
fix: added language plugin to dockerfile
rneuschulz-pixel Dec 13, 2025
dd64ad0
fix: stats not asked in prod
rneuschulz-pixel Dec 13, 2025
01280b3
chore: update with sources
rneuschulz-pixel Dec 13, 2025
ba74bd5
chore: revert change
rneuschulz-pixel Dec 13, 2025
0d9f686
chore: manually add correct globals version
rneuschulz-pixel Dec 16, 2025
ea76fa2
chore: vuescroll update
rneuschulz-pixel Dec 16, 2025
6826546
chore: vuex update
rneuschulz-pixel Dec 16, 2025
5f2cb7b
chore: vuedraggable update
rneuschulz-pixel Dec 16, 2025
a26f037
chore: update feather icons
rneuschulz-pixel Dec 16, 2025
dcaa9ae
chore: threejs update
rneuschulz-pixel Dec 17, 2025
a3eecdf
chore: simple markdown update
rneuschulz-pixel Dec 17, 2025
1778ef2
chore: update service worker
rneuschulz-pixel Dec 17, 2025
6aad085
chore: lunr update
rneuschulz-pixel Dec 17, 2025
7faa2af
chore: fix three.js deps
rneuschulz-pixel Dec 18, 2025
3e2b041
chore: better folder structure
rneuschulz-pixel Dec 19, 2025
5a3aed7
chore: is-mobile update
rneuschulz-pixel Dec 19, 2025
274ed0c
chore: corejs update
rneuschulz-pixel Dec 19, 2025
19a72c2
chore: popperjs update
rneuschulz-pixel Dec 19, 2025
37c34c6
chore: vue tags update
rneuschulz-pixel Dec 19, 2025
c3f8e57
chore: remove unused deps
rneuschulz-pixel Dec 19, 2025
e3194fb
chore: remove core-js due to vite
rneuschulz-pixel Dec 19, 2025
6782ab3
chore: update build target
rneuschulz-pixel Dec 19, 2025
85adcf6
chore: move stats to dev as only used there
rneuschulz-pixel Dec 19, 2025
a815271
chore: first build
rneuschulz-pixel Dec 19, 2025
faf9616
first build to UI
rneuschulz-pixel Dec 19, 2025
12d334b
chore: first to map
rneuschulz-pixel Dec 19, 2025
5743590
chore: fix markdown
rneuschulz-pixel Dec 22, 2025
b4df54d
fix: vuedraggable
rneuschulz-pixel Dec 22, 2025
c1c13a1
fix: i18n
rneuschulz-pixel Dec 22, 2025
6a88441
fix: x button vuefeather
rneuschulz-pixel Dec 22, 2025
31173e1
chore: update vuedraggable
rneuschulz-pixel Dec 22, 2025
6fb5639
chore: fix gtag
rneuschulz-pixel Dec 22, 2025
ff15937
chore: explicit gtag
rneuschulz-pixel Dec 22, 2025
fb97b23
chore: fix browser route warning
rneuschulz-pixel Dec 22, 2025
1125eb5
chore: fix blurbs
rneuschulz-pixel Dec 22, 2025
ad79dd7
feat: add back imagetools for compression
rneuschulz-pixel Dec 22, 2025
b3e4367
fix: menu animations
rneuschulz-pixel Dec 22, 2025
a1e4bb8
fix: aliasing
rneuschulz-pixel Dec 22, 2025
e6dba73
chore: fix imtools srcset
rneuschulz-pixel Dec 22, 2025
bec4dee
feat: add small unobnoxious description
rneuschulz-pixel Dec 22, 2025
42509a2
fix: Harmonized Text Styling
rneuschulz-pixel Dec 22, 2025
8335066
chore: fix animations everywhere for vue3
rneuschulz-pixel Dec 22, 2025
6ced597
chore: migrate more animations
rneuschulz-pixel Dec 22, 2025
1049ea2
Chore: harmonize windows
rneuschulz-pixel Dec 22, 2025
564d775
chore: externalize inline svg
rneuschulz-pixel Dec 22, 2025
9d584c8
chore: hide intlify warning on changelog
rneuschulz-pixel Dec 22, 2025
0393298
chore: update and fix dragscroll
rneuschulz-pixel Dec 22, 2025
9b8345f
chore: update imagemin and cross-env
rneuschulz-pixel Dec 22, 2025
cad4647
chore: update packages
rneuschulz-pixel Dec 22, 2025
a69d827
chore: localize new timeline prompt
rneuschulz-pixel Dec 23, 2025
07107aa
fix: drying the scrollbar
rneuschulz-pixel Dec 23, 2025
5a65128
fix: metadata icon sizes
rneuschulz-pixel Dec 23, 2025
2c195b2
fix: Chapter number and blurb display
rneuschulz-pixel Dec 23, 2025
54b9274
Merge branch 'chore-misc-optical-changes' into chore-vue-3
rneuschulz-pixel Dec 23, 2025
092b951
chore: harmonize capitalization in localizations
rneuschulz-pixel Dec 23, 2025
4790e09
fix: add padding for logo on info
rneuschulz-pixel Dec 23, 2025
d873682
chore fallback logo specification
rneuschulz-pixel Dec 23, 2025
cb646b9
chore: fix i18n warnings
rneuschulz-pixel Dec 23, 2025
2b53334
fix: padding/margins in submenus
rneuschulz-pixel Dec 23, 2025
6ca361c
chore: another i18n warning
rneuschulz-pixel Dec 23, 2025
61c0c52
chore: another i18n warning
rneuschulz-pixel Dec 23, 2025
b47d4dc
chore: better translation fixes and optical alignment with old map
rneuschulz-pixel Dec 23, 2025
b9aae9a
fix: bug in measurement distance stale/non-0
rneuschulz-pixel Dec 23, 2025
5162437
chore: remove compat layer
rneuschulz-pixel Dec 23, 2025
546e145
chore: fix build with correct globbing
rneuschulz-pixel Dec 23, 2025
a88eac9
chore: resolve build warning, externalize vendors
rneuschulz-pixel Dec 23, 2025
166453f
chore: remove compiler-sfc
rneuschulz-pixel Dec 23, 2025
b680e14
chore: harmonized to use ISO 3166-1 for es/en and fix editor issue in…
rneuschulz-pixel Dec 23, 2025
989e7f1
chore: editor migration to vue3
rneuschulz-pixel Dec 23, 2025
b502f24
chore: fix tag issue in editor
rneuschulz-pixel Dec 23, 2025
d34975b
feat: better tags search
rneuschulz-pixel Dec 23, 2025
6d30299
chore: fix editor warning, missing route/router-link
rneuschulz-pixel Dec 23, 2025
0021506
chore: fix another editor warning
rneuschulz-pixel Dec 23, 2025
037b8a1
chore: update editor
rneuschulz-pixel Dec 23, 2025
1d73f14
chore: be explicit about non-passive event listeners to resolve brows…
rneuschulz-pixel Dec 23, 2025
1b3fd77
chore: explicitly handle non-passive event listeners
rneuschulz-pixel Dec 23, 2025
a776728
chore: fix styling
rneuschulz-pixel Dec 23, 2025
a91d235
fix: remaining en locale fix
rneuschulz-pixel Dec 23, 2025
352ebb5
chore: fix texture relaod upon locale change
rneuschulz-pixel Dec 23, 2025
fe1a67f
fix: mobile usability when clicking outside
rneuschulz-pixel Dec 25, 2025
34b4c32
fix: harmonize scroll result styling with details/info
rneuschulz-pixel Dec 25, 2025
cc2894d
chore vuex to pinia
rneuschulz-pixel Dec 25, 2025
29b9f3f
fix: graticule with new three
rneuschulz-pixel Dec 25, 2025
df153bd
chore: improve graticule rendering
rneuschulz-pixel Dec 25, 2025
1c152e0
chore: refinement linewidth
rneuschulz-pixel Dec 26, 2025
28cbc17
chore vuex to pinia
rneuschulz-pixel Dec 25, 2025
0a2a4e6
Merge branches 'chore-vuex-to-pinia' and 'chore-vuex-to-pinia' of htt…
rneuschulz-pixel Dec 26, 2025
9849562
chore: mark unreactive stores for pinia
rneuschulz-pixel Dec 26, 2025
d98f02b
fix: bug when closing timelines, it wouldn't persist
rneuschulz-pixel Dec 26, 2025
1369741
chore: add JSDoc Type annotations
rneuschulz-pixel Dec 26, 2025
03709b7
fix: linter issue
rneuschulz-pixel Dec 26, 2025
b442be0
chore: more linter issues
rneuschulz-pixel Dec 26, 2025
cd1044e
fix: properly hook up measurement persistence
rneuschulz-pixel Dec 29, 2025
2ceeaaa
fix: measurement window display on reload missing
rneuschulz-pixel Dec 29, 2025
3428db6
feat: store measurements
rneuschulz-pixel Dec 29, 2025
faf0c04
revert: passive control listeners
rneuschulz-pixel Dec 29, 2025
f3407e6
feat: rotating compass
rneuschulz-pixel Dec 29, 2025
3fd2468
chore: correct linting
rneuschulz-pixel Dec 30, 2025
5a11d5b
chore: linter issues
rneuschulz-pixel Dec 30, 2025
823936d
chore: linting to vue3 standards
rneuschulz-pixel Dec 30, 2025
4526bf6
fix: compass calculation error
rneuschulz-pixel Dec 30, 2025
5a7a777
fix: WebHashHistory for GitHub pages
rneuschulz-pixel Jan 18, 2026
0455f37
feat: assert image minWidth via vite config
rneuschulz-pixel Jan 18, 2026
034a961
chore: inline parse-markdown-sections and obsolete build/loaders
rneuschulz-pixel Jan 18, 2026
42a2f44
chore: linting according to preferences
rneuschulz-pixel Jan 18, 2026
2c37c6c
chore: fix pages built according to github Actions guidelines
rneuschulz-pixel Jan 18, 2026
be6ea7c
fix: regression on builtin transform
rneuschulz-pixel Jan 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 5 additions & 1 deletion .github/workflows/pages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '16'
node-version: '24'

- name: Cache node modules
uses: actions/cache@v4
Expand All @@ -33,6 +33,10 @@ jobs:
${{ runner.OS }}-
- name: Install build dependencies
run: sudo apt-get install autoconf libtool pkg-config nasm build-essential libpng-dev
- name: Setup Yarn
run: |
corepack enable
corepack prepare yarn@4.12.0 --activate
- name: Install dependencies
run: yarn install --immutable
- name: Validate translations
Expand Down
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
node_modules
/dist
/build/lang
/build/generated

# npm lock file
package-lock.json

# local env files
.env.local
Expand Down
783 changes: 0 additions & 783 deletions .yarn/releases/yarn-3.2.3.cjs

This file was deleted.

942 changes: 942 additions & 0 deletions .yarn/releases/yarn-4.12.0.cjs

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion .yarnrc.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
yarnPath: .yarn/releases/yarn-3.2.3.cjs
yarnPath: .yarn/releases/yarn-4.12.0.cjs
nodeLinker: node-modules
checksumBehavior: update
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ If you are aware of a piece of artwork that would fill in where we currently hav

Before adding artwork, please provide our team with proof that the artist gives their explicit permission to use the artwork on this site. Also make sure that you have a link to the artist's website of their choosing for crediting them.

After the artist's permission has been shared and the requisite information gathered, you can add the image file under the appropriate folder under [public/img](https://github.com/Palanaeum/roshar-map/tree/master/public/img). Next navigate to [src/store](https://github.com/Palanaeum/roshar-map/tree/master/src/store) and open the appropriate .json file for the item you wish to add artwork for. For example, to add artwork for an event, open `events.json`. Find the exact item you are adding artwork to and create a new `"image"` key. It will require both a `"file"` (the location ane name of the file in the img directory) and a `"credits"` (providing the name of the artist and a link to their website). See other uses of artwork in the .json file for examples.
After the artist's permission has been shared and the requisite information gathered, you can add the image file under the appropriate folder under [public/img](https://github.com/Palanaeum/roshar-map/tree/master/public/img). Next navigate to [src/stores](https://github.com/Palanaeum/roshar-map/tree/master/src/stores) and open the appropriate .json file for the item you wish to add artwork for. For example, to add artwork for an event, open `events.json`. Find the exact item you are adding artwork to and create a new `"image"` key. It will require both a `"file"` (the location ane name of the file in the img directory) and a `"credits"` (providing the name of the artist and a link to their website). See other uses of artwork in the .json file for examples.

# Translation

Expand Down
5 changes: 3 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# build stage
FROM node:16-alpine AS build-stage
FROM node:24-alpine AS build-stage

ARG PUBLIC_URL=/

Expand All @@ -10,10 +10,11 @@ COPY ./.yarn /app/.yarn
COPY package.json yarn.lock .yarnrc.yml /app/
RUN yarn install --immutable

COPY babel.config.js vue.config.js README.md /app/
COPY vite.config.mjs index.html README.md /app/

COPY ./bin /app/bin
COPY ./build/loaders /app/build/loaders
COPY ./build/vite-plugin-generated-assets.mjs /app/build/vite-plugin-generated-assets.mjs
COPY ./public /app/public
COPY ./translations /app/translations
COPY ./src /app/src
Expand Down
5 changes: 3 additions & 2 deletions Dockerfile-dev
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# build stage
FROM node:16-alpine AS build-stage
FROM node:24-alpine AS build-stage

ARG PUBLIC_URL=/

Expand All @@ -10,10 +10,11 @@ COPY ./.yarn /app/.yarn
COPY package.json yarn.lock .yarnrc.yml /app/
RUN yarn install --immutable

COPY babel.config.js vue.config.js README.md /app/
COPY vite.config.mjs index.html README.md /app/

COPY ./bin /app/bin
COPY ./build/loaders /app/build/loaders
COPY ./build/vite-plugin-generated-assets.mjs /app/build/vite-plugin-generated-assets.mjs
COPY ./public /app/public
COPY ./translations /app/translations
COPY ./src /app/src
Expand Down
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
* Chinese
* Russian
* Spanish
* Turkish
* Layers on top of the map that can be enabled at any time, displaying useful additional information
* Overlay the borders of the historic Silver Kingdoms
* Show color indicators of the allegiances of various nations
Expand Down Expand Up @@ -117,11 +118,11 @@ The following is a list of all the artists that are either official artists or h
* [Yen Shu Liao](https://coppermind.net/wiki/Coppermind:Artists/Yen_Shu_Liao)
* [Zamoraalma](https://www.artstation.com/Zamoraalma)

A very special thanks goes out to Reddit user [Stoneward13](https://www.reddit.com/user/Stoneward13) for letting use and modify his awesome high resolution versions of the Roshar and Shadesmar maps.
A very special thanks goes out to Reddit user [Stoneward13](https://www.reddit.com/user/Stoneward13) for letting us use and modify his awesome high resolution versions of the Roshar and Shadesmar maps.

We also thank the amazing people at [Cosmere.es](https://cosmere.es/), [The Cosmerenauts](https://coppermind.huijiwiki.com/wiki/%E4%B8%89%E7%95%8C%E5%AE%99%E6%97%85%E8%80%85), and everyone else in our translation Discord server for going through the monumental effort of translating everything to several other languages, and fixing errors in the English text along the way!

Finally, the general appearance and concept of the map derives heavily from the [interactive map](http://witchernetflix.com/) of "The Continent" for Netflix's *The Witcher* series.
Finally, the general appearance, design and concept of the map derives heavily from the [now-defunct interactive map](https://www.soapcentral.com/shows/netflix-finally-closed-the-witcher-website-why-possibilities-explored) of "[The Continent](https://web.archive.org/web/20241213194256/https://www.witchernetflix.com/en/map/)" for Netflix's *The Witcher* series.

## License

Expand Down
9 changes: 0 additions & 9 deletions babel.config.js

This file was deleted.

106 changes: 55 additions & 51 deletions bin/convert-textures.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
/* eslint-disable no-console */

const childProcess = require('child_process')
const { lstatSync, readdirSync } = require('fs')
const path = require('path')
const imagemin = require('imagemin')
const imageminWebp = require('imagemin-webp')
const imageminZopfli = require('imagemin-zopfli')

const isDirectory = source => lstatSync(path.resolve(source)).isDirectory()

Expand All @@ -28,66 +25,73 @@ const webpOnly = process.argv.slice(2)[0] === '--webp-only'
const filter = process.argv.slice(webpOnly ? 3 : 2)
const locales = readdirSync(path.resolve(`${basePath}/localized`)).filter(locale => isDirectory(`${basePath}/localized/${locale}`))

Promise.all(Object.keys(textures).flatMap((name) => {
const texture = textures[name]
const transformed = []
;(async () => {
// Dynamic imports for ESM packages
const { default: imagemin } = await import('imagemin')
const { default: imageminWebp } = await import('imagemin-webp')
const { default: imageminZopfli } = await import('imagemin-zopfli')

await Promise.all(Object.keys(textures).flatMap((name) => {
const texture = textures[name]
const transformed = []

if (texture.localized) {
locales.forEach((locale) => {
const files = [`${basePath}/localized/${locale}/${name}.png`]
if (texture.localized) {
locales.forEach((locale) => {
const files = [`${basePath}/localized/${locale}/${name}.png`]
if (texture.hqAvailable === true) {
files.push(`${basePath}/localized/${locale}/hq_${name}.png`)
}
transformed.push({ ...texture, name: `${name}[${locale}]`, files, destination: `${basePath}/localized/${locale}` })
})
} else {
const directory = texture.lossy ? 'lossy' : 'lossless'
const ext = texture.lossy ? 'jpg' : 'png'
const files = [`${basePath}/${directory}/${name}.${ext}`]
if (texture.hqAvailable === true) {
files.push(`${basePath}/localized/${locale}/hq_${name}.png`)
files.push(`${basePath}/${directory}/hq_${name}.${ext}`)
}
transformed.push({ ...texture, name: `${name}[${locale}]`, files, destination: `${basePath}/localized/${locale}` })
})
} else {
const directory = texture.lossy ? 'lossy' : 'lossless'
const ext = texture.lossy ? 'jpg' : 'png'
const files = [`${basePath}/${directory}/${name}.${ext}`]
if (texture.hqAvailable === true) {
files.push(`${basePath}/${directory}/hq_${name}.${ext}`)
transformed.push({ ...texture, name, files, destination: `${basePath}/${directory}` })
}
transformed.push({ ...texture, name, files, destination: `${basePath}/${directory}` })
}

return transformed
}).flatMap((texture) => {
const { name, lossy } = texture

const changedFiles = texture.files.filter(path => childProcess.execSync(`git status -s ${path}`).toString().length > 0)
return transformed
}).flatMap((texture) => {
const { name, lossy } = texture

if (changedFiles.length === 0 && (filter.length === 0 || !filter.includes(name))) {
console.log(`Files for texture '${name}' haven't changed, ignoring...`)
return
}
const changedFiles = texture.files.filter(path => childProcess.execSync(`git status -s ${path}`).toString().length > 0)

if (filter.length > 0 && !filter.includes(name)) {
console.log(`Ignoring texture '${name}'...`)
return
}
if (changedFiles.length === 0 && (filter.length === 0 || !filter.includes(name))) {
console.log(`Files for texture '${name}' haven't changed, ignoring...`)
return
}

const forced = filter.includes(name)
console.log(`Optimizing and converting texture '${name}${forced ? ' (forced)' : ''}'...`)
if (filter.length > 0 && !filter.includes(name)) {
console.log(`Ignoring texture '${name}'...`)
return
}

return (webpOnly || lossy ? new Promise(resolve => resolve()) : imagemin(changedFiles, {
destination: texture.destination,
plugins: [
imageminZopfli({ more: true })
]
})).then(() => {
console.log(`Optimized PNGs for texture '${name}'`)
const forced = filter.includes(name)
console.log(`Optimizing and converting texture '${name}${forced ? ' (forced)' : ''}'...`)

return imagemin(changedFiles, {
return (webpOnly || lossy ? new Promise(resolve => resolve()) : imagemin(changedFiles, {
destination: texture.destination,
plugins: [
imageminWebp({ quality: texture.lossy === true ? 90 : 100, lossless: texture.lossy !== true })
imageminZopfli({ more: true })
]
})).then(() => {
console.log(`Optimized PNGs for texture '${name}'`)

return imagemin(changedFiles, {
destination: texture.destination,
plugins: [
imageminWebp({ quality: texture.lossy === true ? 90 : 100, lossless: texture.lossy !== true })
]
})
}).then(() => {
console.log(`Converted texture '${name}' to WEBP`)
})
})).catch((error) => {
console.error(error)
}).then(() => {
console.log(`Converted texture '${name}' to WEBP`)
console.log('All textures optimized and converted successfully')
})
})).catch((error) => {
console.error(error)
}).then(() => {
console.log('All textures optimized and converted successfully')
})
})()
4 changes: 2 additions & 2 deletions bin/dump-translations.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* eslint-disable no-console */
const fs = require('fs')

const events = JSON.parse(fs.readFileSync('./src/store/events.json', 'utf8'))
Expand All @@ -19,7 +19,7 @@ events.forEach((event) => {
})

function dump (type) {
const entries = JSON.parse(fs.readFileSync(`./src/store/${type}.json`, 'utf8'))
const entries = JSON.parse(fs.readFileSync(`./src/stores/${type}.json`, 'utf8'))
fs.mkdirSync(`./translations/en/${type}`, { recursive: true })
entries.forEach((entry) => {
const path = `./translations/en/${type}/${entry.id}.md`
Expand Down
10 changes: 5 additions & 5 deletions bin/validate-translations.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
/* eslint-disable no-console */
const fs = require('fs')

const events = JSON.parse(fs.readFileSync('./src/store/events.json', 'utf8')).map(e => e.id)
const locations = JSON.parse(fs.readFileSync('./src/store/locations.json', 'utf8')).map(l => l.id)
const characters = JSON.parse(fs.readFileSync('./src/store/characters.json', 'utf8')).map(l => l.id)
const misc = JSON.parse(fs.readFileSync('./src/store/misc.json', 'utf8')).map(l => l.id)
const events = JSON.parse(fs.readFileSync('./src/stores/events.json', 'utf8')).map(e => e.id)
const locations = JSON.parse(fs.readFileSync('./src/stores/locations.json', 'utf8')).map(l => l.id)
const characters = JSON.parse(fs.readFileSync('./src/stores/characters.json', 'utf8')).map(l => l.id)
const misc = JSON.parse(fs.readFileSync('./src/stores/misc.json', 'utf8')).map(l => l.id)
const allReference = new Set([
...events.map(name => `events/${name}`),
...locations.map(name => `locations/${name}`),
Expand Down
4 changes: 3 additions & 1 deletion build/loaders/lang-loader.js
Original file line number Diff line number Diff line change
Expand Up @@ -80,5 +80,7 @@ function parseStandardFile (lang, type, id, content) {
return undefined
}

return { name: root.name, details: root.content.trim(), ...metadata }
const details = root.content.trim()
// For standard entries (locations, characters, misc), blurb is the same as details
return { name: root.name, blurb: details, details, ...metadata }
}
4 changes: 2 additions & 2 deletions build/loaders/search-index-loader.js
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ module.exports = function (source) {
const load = async (key) => {
const path = await new Promise((resolve, reject) => this.resolve(
this.rootContext,
`@/store/${key}.json`,
`@/stores/${key}.json`,
(error, result) => error !== null ? reject(error) : resolve(result)
))
this.addDependency(path)
Expand All @@ -105,7 +105,7 @@ module.exports = function (source) {
return lunr(function () {
const lunrLanguage = messages['search-language']
this.tokenizer = nGramTokenizer
if (lunrLanguage !== 'en') {
if (lunrLanguage && lunrLanguage !== 'en-US') {
require(`lunr-languages/lunr.${lunrLanguage}`)(lunr)
this.use(lunr[lunrLanguage])
}
Expand Down
Loading