Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
237 commits
Select commit Hold shift + click to select a range
3e5ed30
Merge pull request #344 from SkyCryptWebsite/dev
DarthGigi Aug 21, 2026
a42bc62
feat: load max-level enchantments from backend
cataladev Sep 13, 2026
22b69c9
refactor: fixing reviews
cataladev Sep 15, 2026
655bcca
fix: deleting old file
cataladev Sep 15, 2026
57e706c
fix: scope enchantment loading to stats
cataladev Sep 16, 2026
1f9c4b4
fix: use generated enchantment response type
cataladev Sep 17, 2026
6ff47f5
feat(stats): add Discord component embeds
DarthGigi Sep 20, 2026
17a2652
chore: version packages (beta) [skip ci]
github-actions[bot] Sep 20, 2026
93f5414
fix(cache): version prerendered endpoint URLs
DarthGigi Sep 20, 2026
a00b55d
chore: version packages (beta) [skip ci]
github-actions[bot] Sep 20, 2026
0e7bc8e
feat(discord-embed): add UTM tracking to profile links
DarthGigi Sep 20, 2026
4d5b17e
Merge pull request #347 from SkyCryptWebsite:dev
DarthGigi Sep 20, 2026
6d56391
chore: version packages (stable) [skip ci]
github-actions[bot] Sep 20, 2026
1ce1abd
Merge pull request #348 from SkyCryptWebsite/changeset-release/prod
github-actions[bot] Sep 20, 2026
dee7882
chore: sync prod into dev [skip ci]
github-actions[bot] Sep 20, 2026
c027c31
fix(discord): use valid rank colors in embeds
DarthGigi Sep 20, 2026
1081ea3
chore: version packages (beta) [skip ci]
github-actions[bot] Sep 20, 2026
12c0efe
Merge pull request #349 from SkyCryptWebsite/dev
DarthGigi Sep 20, 2026
6aa0126
chore: version packages (stable) [skip ci]
github-actions[bot] Sep 20, 2026
16b4a60
Merge pull request #350 from SkyCryptWebsite/changeset-release/prod
github-actions[bot] Sep 20, 2026
33a3ed8
chore: sync prod into dev [skip ci]
github-actions[bot] Sep 20, 2026
72ab679
Fix capitalization in project title in README
DarthGigi Sep 30, 2026
f9541c5
feat: add discord link to the discord embed
DarthGigi Sep 30, 2026
26565f9
chore: oxfmt format
DarthGigi Sep 30, 2026
8c9aa42
Merge pull request #351 from SkyCryptWebsite/dev
DarthGigi Sep 30, 2026
9fdabac
feat: redesign the discord embeds
DarthGigi Oct 10, 2026
5f2d673
chore: version packages (beta) [skip ci]
github-actions[bot] Oct 10, 2026
f0295a4
Merge pull request #352 from SkyCryptWebsite/dev
DarthGigi Oct 10, 2026
95927d1
chore: version packages (stable) [skip ci]
github-actions[bot] Oct 10, 2026
b6f8024
Merge pull request #353 from SkyCryptWebsite/changeset-release/prod
github-actions[bot] Oct 10, 2026
894ca5f
chore: sync prod into dev [skip ci]
github-actions[bot] Oct 10, 2026
c5c63e4
fix: make skills even
DarthGigi Oct 10, 2026
a208462
Merge pull request #354 from SkyCryptWebsite:dev
DarthGigi Oct 10, 2026
a020899
fix: use correct dungeon classes order
DarthGigi Oct 10, 2026
9283efe
fix: update embedGenerator tests for username handling and emoji form…
DarthGigi Oct 10, 2026
7f55043
Merge pull request #355 from SkyCryptWebsite/dev
DarthGigi Oct 10, 2026
2cc636b
fix: update rank display to include plusText in Discord embed
DarthGigi Oct 10, 2026
28fed80
fix: update skill and class terminology in embed descriptions
DarthGigi Oct 10, 2026
23a5235
feat: implement generic title and description functions for SEO
DarthGigi Oct 10, 2026
2b3318c
feat: enhance SEO with structured data and canonical URLs across mult…
DarthGigi Oct 10, 2026
0ee75fb
Merge pull request #356 from SkyCryptWebsite:dev
DarthGigi Oct 10, 2026
e7087dd
feat: add more shadcn-svelte components
DarthGigi Oct 10, 2026
bdd7b17
chore: oxfmt
DarthGigi Oct 10, 2026
4468767
feat(profile): add persistent profile emoji customization
DarthGigi Oct 10, 2026
1e492c4
chore(ui): refresh shared components and generated assets
DarthGigi Oct 10, 2026
17d5428
feat: migrate to sveltekit v3
DarthGigi Oct 10, 2026
86b4d9f
chore: update shadcn-svelte components
DarthGigi Oct 10, 2026
3870b75
fix: add class for selected state in Command.LinkItem
DarthGigi Oct 10, 2026
4e9b8c4
fix: remove the last $lib aliases
DarthGigi Oct 11, 2026
79e390c
feat: migrate to sentry v11
DarthGigi Oct 11, 2026
824a7fd
fix: optimize player image fetching and add error handling for asset …
DarthGigi Oct 11, 2026
463aa9c
feat: add shadcn linting plugin and rules to ESLint configuration
DarthGigi Oct 11, 2026
216bfee
fix: update TypeScript configuration and add missing node type
DarthGigi Oct 11, 2026
e079764
chore: update deps
DarthGigi Oct 11, 2026
40fe07f
fix: shadcn eslint errors
DarthGigi Oct 11, 2026
ae837cc
fix: update skeleton component background color for improved visibility
DarthGigi Oct 11, 2026
236d382
fix: remove unused skeleton loading section from the newsroom component
DarthGigi Oct 11, 2026
c720fa9
fix: update Item.Content class for consistent layout behavior
DarthGigi Oct 11, 2026
2858223
fix: remove unused function from sortTailwindcss and ensure package.j…
DarthGigi Oct 11, 2026
b6ec12e
feat: migrate to shadcn's own scroll fade
DarthGigi Oct 11, 2026
a95d2c2
chore: regenerate orval
DarthGigi Oct 11, 2026
06f285e
feat: add devEngines configuration for pnpm and node
DarthGigi Oct 11, 2026
2c758e5
chore: update pnpm setup action to version 12 in workflows and action…
DarthGigi Oct 11, 2026
8209d92
chore: version packages (beta) [skip ci]
github-actions[bot] Oct 11, 2026
35163ee
fix: prevent duplicate emoji pagination and configure CI database
DarthGigi Oct 11, 2026
a179d97
fix: move DATABASE_URL to job level in Vitest workflow
DarthGigi Oct 11, 2026
a014eb7
test: remove dashboard and server test suites
DarthGigi Oct 11, 2026
47a6b04
fix: improve emoji loading behavior by queuing additional requests
DarthGigi Oct 11, 2026
5c629bd
fix: add BETTER_AUTH_SECRET to Vitest workflow and ensure proper load…
DarthGigi Oct 11, 2026
5d69557
test: remove emoji-picker test suite
DarthGigi Oct 11, 2026
07c14b7
chore: update deps
DarthGigi Oct 11, 2026
71d377f
refactor: simplify schema definition for environment variables
DarthGigi Oct 11, 2026
f8faac5
fix: update Dockerfile to conditionally load SENTRY_AUTH_TOKEN and ad…
DarthGigi Oct 11, 2026
6c212da
feat: integrate Cloudflare Turnstile captcha for enhanced security on…
DarthGigi Oct 11, 2026
a768fb8
refactor: load environment variables using loadEnv
DarthGigi Oct 12, 2026
4c5cf1e
feat: add ORIGIN environment variable for improved configuration in D…
DarthGigi Oct 12, 2026
8b9d3f1
refactor: update prerender configurations to use dynamic inputs for i…
DarthGigi Oct 12, 2026
6b255d1
feat: remove Sentry integration and related configurations
DarthGigi Oct 12, 2026
b5aff64
chore: pnpm prune
DarthGigi Oct 12, 2026
de23081
chore: version packages (beta) [skip ci]
github-actions[bot] Oct 12, 2026
ba9187a
fix: improve error handling in fetchSection and validate query.curren…
DarthGigi Oct 12, 2026
5525eaa
refactor: update configuration files for improved clarity and organiz…
DarthGigi Oct 12, 2026
4c52cb4
feat: add svelte skills
DarthGigi Oct 12, 2026
639cdf0
feat: remove @sveltejs/load-config
DarthGigi Oct 12, 2026
6f3ac2b
feat: add logging for fetch requests in building environment
DarthGigi Oct 12, 2026
82b1b95
fix: improve fetch handling during prerendering to avoid 404 errors
DarthGigi Oct 12, 2026
1fd6b12
chore: update deps
DarthGigi Oct 16, 2026
4f4e4be
chore: update shadcn svelte componentsclear
DarthGigi Oct 16, 2026
1ca5cee
chore: update pnpm version to ^12.11.1
DarthGigi Oct 16, 2026
61c1bf4
chore: update deps
DarthGigi Oct 18, 2026
5e99cc6
Merge remote-tracking branch 'origin/dev' into feat/move-max-enchant-…
DarthGigi Oct 18, 2026
2aad198
fix(stats): derive enchantments type from generated zod schema
DarthGigi Oct 18, 2026
1b8e5f4
fix(theme-editor): fix type errors (type arguments no longer supported)
DarthGigi Oct 18, 2026
b5159f1
Merge pull request #345 from cataladev/feat/move-max-enchant-to-api
DarthGigi Oct 18, 2026
a821a2e
chore: version packages (beta) [skip ci]
github-actions[bot] Oct 18, 2026
ef6fc3e
fix(stats): mount tooltip setup inside stats layout
DarthGigi Oct 18, 2026
dbc47c6
feat(logging): add structured evlog request logging
DarthGigi Oct 19, 2026
2c48254
Merge pull request #357 from SkyCryptWebsite/feat/evlog-logging
DarthGigi Oct 19, 2026
33a07d7
chore: version packages (beta) [skip ci]
github-actions[bot] Oct 19, 2026
858e64b
feat(logging): ship evlog logs to HyperDX instead of Loki
DarthGigi Oct 19, 2026
f7c6f70
Merge pull request #358 from SkyCryptWebsite/feat/hyperdx-logging
DarthGigi Oct 19, 2026
279643b
chore: version packages (beta) [skip ci]
github-actions[bot] Oct 19, 2026
036494e
feat(dashboard): add developer API access request flow
DarthGigi Oct 19, 2026
a2a581d
feat(admin): add staff admin dashboard with review queues and audit log
DarthGigi Oct 19, 2026
3ead035
chore: version packages (beta) [skip ci]
github-actions[bot] Oct 19, 2026
a3ae439
feat(newsroom): replace Payload CMS with a built-in newsroom
DarthGigi Oct 19, 2026
1c80e9a
Merge pull request #359 from SkyCryptWebsite/feat/custom-cms
DarthGigi Oct 19, 2026
f6c38cb
chore: version packages (beta) [skip ci]
github-actions[bot] Oct 19, 2026
cba40c9
feat(pages): add about and legal pages with mdsvex
DarthGigi Oct 19, 2026
64b11ee
feat(header): add account button, newsroom menu and site footer
DarthGigi Oct 19, 2026
d12cdb9
feat: add eslint-disable comments for unknown classes and update link…
DarthGigi Oct 19, 2026
524b7bb
Merge pull request #360 from SkyCryptWebsite/feat/navbar-footer
DarthGigi Oct 19, 2026
f498785
feat: update .gitignore for eslint cache and modify lint script to us…
DarthGigi Oct 20, 2026
476f756
feat(developer): tighten API policy for hobby use only
DarthGigi Oct 20, 2026
843685f
feat: enhance API key management and user roles
DarthGigi Oct 20, 2026
cff8804
chore: version packages (beta) [skip ci]
github-actions[bot] Oct 20, 2026
09786a9
refactor: refactor import paths to remove file extensions for consist…
DarthGigi Oct 20, 2026
ab32c3b
feat(auth): open sign-ups to all Discord users
DarthGigi Oct 20, 2026
85a8e4d
chore: version packages (beta) [skip ci]
github-actions[bot] Oct 20, 2026
963ee2b
fix: update footer grid layout for better responsiveness; enhance das…
DarthGigi Oct 20, 2026
270c063
feat: implement contributor skin fetching and display; add loading sk…
DarthGigi Oct 20, 2026
a5e2966
fix(stats): validate route params and escape backend request paths
DarthGigi Oct 20, 2026
65bacc5
perf: lazy-load the card builder and harden the image proxy
DarthGigi Oct 20, 2026
00a26eb
perf: parallelize stats and card fetches, share live query results
DarthGigi Oct 20, 2026
941a56c
perf: lighter stats assets, lazy-load heavy UI, drop customSession
DarthGigi Oct 20, 2026
3fa9bd5
refactor: remove nested ternaries, preload Montserrat
DarthGigi Oct 20, 2026
e1a7375
chore: update deps
DarthGigi Oct 20, 2026
d2d4273
fix: unnecessary padding causing the header to overflow in safari
DarthGigi Oct 20, 2026
61d9512
chore: version packages (beta) [skip ci]
github-actions[bot] Oct 20, 2026
d18039c
test: remove tests that cannot catch real bugs
DarthGigi Oct 20, 2026
911de6a
fix: update search icon visibility based on hover state
DarthGigi Oct 20, 2026
e92997f
test(theme): run engine spec in the browser project
DarthGigi Oct 20, 2026
648ab0e
feat: serve the beta on sky.shiiyu.moe behind a settings switch
DarthGigi Oct 20, 2026
c680d22
chore: version packages (beta) [skip ci]
github-actions[bot] Oct 20, 2026
25ed772
feat: add Cloudflare Turnstile site key and secret to env example
DarthGigi Oct 20, 2026
723565f
feat: remove PUBLIC_BASE_URL
DarthGigi Oct 20, 2026
ee034ec
Merge branch 'prod' into dev
DarthGigi Oct 21, 2026
3e3ddff
Merge pull request #361 from SkyCryptWebsite/dev
DarthGigi Oct 21, 2026
0b79081
chore: version packages (stable) [skip ci]
github-actions[bot] Oct 21, 2026
d42fb60
Merge pull request #362 from SkyCryptWebsite/changeset-release/prod
github-actions[bot] Oct 21, 2026
6a95738
chore: sync prod into dev [skip ci]
github-actions[bot] Oct 21, 2026
851c401
fix: update Cloudflare storage URL pattern in Vite config
DarthGigi Oct 21, 2026
df4a851
Merge pull request #363 from SkyCryptWebsite:dev
DarthGigi Oct 21, 2026
c8fb6b2
fix: update origin validation logic in client logs handler
DarthGigi Oct 21, 2026
caead8d
Merge pull request #364 from SkyCryptWebsite:dev
DarthGigi Oct 21, 2026
b3f4f4a
fix: resolve href in ListItem component for proper navigation
DarthGigi Oct 21, 2026
944e36d
fix: update cache control for signed-in responses to prevent caching
DarthGigi Oct 21, 2026
1ba8285
Update legal clause in API policy
WarpWing Oct 21, 2026
b4cb88a
Merge pull request #365 from SkyCryptWebsite/dev
DarthGigi Oct 21, 2026
a5d69a9
Revise API policy for data usage and caching
WarpWing Oct 21, 2026
b9373d8
Update +page.md
WarpWing Oct 21, 2026
2277616
Update caching and data retention sections in API policy
WarpWing Oct 21, 2026
c688b15
feat: internal API key routes for the Go backend
DarthGigi Oct 21, 2026
5a52f6d
chore: add changeset for API key backend routes
DarthGigi Oct 21, 2026
237e6d3
fix: link the API docs to the api.shiiyu.moe root
DarthGigi Oct 21, 2026
b5d8112
Merge pull request #367 from SkyCryptWebsite/feat/backend-api-key-routes
DarthGigi Oct 21, 2026
29d8001
chore: version packages (beta) [skip ci]
github-actions[bot] Oct 21, 2026
db8da36
refactor: replace displayName with username across components and API…
DarthGigi Oct 21, 2026
32193e6
fix: update frame-ancestors to allow embedding from u.shiiyu.moe
DarthGigi Oct 21, 2026
114f647
fix: add api.shiiyu.moe and beta-api.shiiyu.moe to content security p…
DarthGigi Oct 21, 2026
cbae454
feat: add maintenance bypass token support for CI prerendering
DarthGigi Oct 21, 2026
cd90270
fix: update default server API URL in workflows
DarthGigi Oct 21, 2026
9b3f8d8
Merge pull request #368 from SkyCryptWebsite/dev
DarthGigi Oct 21, 2026
2f1a940
chore: version packages (stable) [skip ci]
github-actions[bot] Oct 21, 2026
6fdb36c
Merge pull request #369 from SkyCryptWebsite/changeset-release/prod
github-actions[bot] Oct 21, 2026
8613290
chore: sync prod into dev [skip ci]
github-actions[bot] Oct 21, 2026
ca67bf8
Update +page.md
WarpWing Oct 21, 2026
dc72066
chore: update pnpm and node versions in package.json and pnpm-lock.yaml
DarthGigi Oct 21, 2026
787530d
fix: update contributor name reference to username in sitemap handler
DarthGigi Oct 21, 2026
2d61cf3
chore: update deps
DarthGigi Oct 21, 2026
a4856f8
perf(stats): skip skin respin when the route player is unchanged
DarthGigi Oct 21, 2026
6b75c90
fix(security): update Content Security Policy to allow framing from U…
DarthGigi Oct 21, 2026
115341a
Merge pull request #370 from SkyCryptWebsite:dev
DarthGigi Oct 21, 2026
ba3c068
Update +page.md
WarpWing Oct 21, 2026
b013424
Update +page.md
WarpWing Oct 21, 2026
44c5dd4
Fix formatting and grammar in API policy page
WarpWing Oct 21, 2026
46d577f
Merge branch 'dev' into patch-2
WarpWing Oct 23, 2026
be3176f
Merge pull request #366 from WarpWing/patch-2
DarthGigi Oct 23, 2026
5eebbd3
chore: update deps and orval
DarthGigi Oct 24, 2026
680cb52
chore: oxfmt
DarthGigi Oct 24, 2026
7d75def
Merge pull request #371 from SkyCryptWebsite/dev
DarthGigi Oct 24, 2026
6e89c98
feat: add skills directory configuration in pnpm workspace
DarthGigi Oct 24, 2026
32d9a28
Merge pull request #372 from SkyCryptWebsite:dev
DarthGigi Oct 24, 2026
ebbb1cc
chore: update deps
DarthGigi Oct 24, 2026
d2e81d3
feat: migrate to the backend's Huma API client
DarthGigi Oct 24, 2026
ab6e865
chore: version packages (beta) [skip ci]
github-actions[bot] Oct 24, 2026
ee23233
Merge pull request #373 from SkyCryptWebsite/dev
DarthGigi Oct 24, 2026
7ab0189
chore: version packages (stable) [skip ci]
github-actions[bot] Oct 24, 2026
f0e58d2
Merge pull request #374 from SkyCryptWebsite/changeset-release/prod
github-actions[bot] Oct 24, 2026
9680e8a
chore: sync prod into dev [skip ci]
github-actions[bot] Oct 24, 2026
5d4653d
feat: optimistic updates, server tracing and Early Hints preloads
DarthGigi Oct 24, 2026
821b4fa
chore: version packages (beta) [skip ci]
github-actions[bot] Oct 24, 2026
5b05749
Merge pull request #375 from SkyCryptWebsite/dev
DarthGigi Oct 24, 2026
b9a7989
chore: version packages (stable) [skip ci]
github-actions[bot] Oct 24, 2026
6099f4c
Merge pull request #376 from SkyCryptWebsite/changeset-release/prod
github-actions[bot] Oct 24, 2026
7484750
chore: sync prod into dev [skip ci]
github-actions[bot] Oct 24, 2026
dfc474c
fix(tracing): drop import-in-the-middle loader that broke every request
DarthGigi Oct 24, 2026
2fdccec
Merge pull request #377 from SkyCryptWebsite/dev
DarthGigi Oct 24, 2026
cd01c53
chore: version packages (beta) [skip ci]
github-actions[bot] Oct 24, 2026
669b9bf
chore: version packages (stable) [skip ci]
github-actions[bot] Oct 24, 2026
2a395af
Merge pull request #378 from SkyCryptWebsite/changeset-release/prod
github-actions[bot] Oct 24, 2026
9955cb3
fix(auth): trim expected token for backend authorization
DarthGigi Oct 24, 2026
bdcdf08
chore: sync prod into dev [skip ci]
DarthGigi Oct 24, 2026
d5492df
ci(release): resolve release-file conflicts when syncing prod into dev
DarthGigi Oct 24, 2026
b45e5a6
chore: update pnpm lock
DarthGigi Oct 24, 2026
a6ab980
fix(ui): drop permanent scroll-fade in Firefox
DarthGigi Oct 24, 2026
384ab3a
docs(agents): ask which branch before committing
DarthGigi Oct 25, 2026
c9f9bd5
chore: version packages (beta) [skip ci]
github-actions[bot] Oct 25, 2026
3e92fb4
docs(agents): clarify branch usage instructions before committing
DarthGigi Oct 25, 2026
9230987
Merge pull request #379 from SkyCryptWebsite/dev
DarthGigi Oct 25, 2026
9d51e2e
chore: version packages (stable) [skip ci]
github-actions[bot] Oct 25, 2026
5e8c927
Merge pull request #380 from SkyCryptWebsite/changeset-release/prod
github-actions[bot] Oct 25, 2026
83c188a
chore: sync prod into dev [skip ci]
github-actions[bot] Oct 25, 2026
34e4807
refactor: optimize token validation logic in requireBackendToken
DarthGigi Oct 28, 2026
f411b6b
feat(brand): replace logo and relicense brand assets
DarthGigi Oct 28, 2026
4c55bfc
feat(assets): update image URLs with cache-busting query parameters
DarthGigi Oct 28, 2026
13a6eb7
docs(license): apply brand license review feedback
DarthGigi Oct 29, 2026
659d534
Merge pull request #381 from SkyCryptWebsite/feat/new-logo
DarthGigi Oct 30, 2026
0fe80f7
chore: update deps
DarthGigi Oct 30, 2026
fb74358
chore: oxfmt
DarthGigi Oct 30, 2026
045a365
chore: add changeset
DarthGigi Oct 30, 2026
58b107e
chore: version packages (beta) [skip ci]
github-actions[bot] Oct 30, 2026
7f77c42
chore: update Node.js version to 26 in workflows, actions, and docume…
DarthGigi Oct 30, 2026
f42dd58
chore: optimize Dockerfile and add caching for container builds
DarthGigi Oct 30, 2026
a4ab6f5
chore: migrate mcp configuration from .vscode to .mcp.json
DarthGigi Oct 30, 2026
7d63d10
chore: update cache cleanup workflow for closed pull requests and enh…
DarthGigi Oct 30, 2026
08284d7
feat: update Discord embed emoji ID to the new one
DarthGigi Oct 30, 2026
8d84550
chore: oxfmt
DarthGigi Oct 30, 2026
ce08456
feat(newsroom): add a refresh cache option to post images
DarthGigi Oct 30, 2026
9cbb54b
chore: version packages (beta) [skip ci]
github-actions[bot] Oct 30, 2026
74502d7
Merge pull request #382 from SkyCryptWebsite/dev
DarthGigi Oct 30, 2026
33f45d9
chore: version packages (stable) [skip ci]
github-actions[bot] Oct 30, 2026
f3cc0b6
Merge pull request #383 from SkyCryptWebsite/changeset-release/prod
github-actions[bot] Oct 30, 2026
51edd56
chore: sync prod into dev [skip ci]
github-actions[bot] Oct 30, 2026
4610bfa
chore: merge upstream/dev into the embed fork
imconnorngl Nov 1, 2026
5ba841c
Merge remote-tracking branch 'origin/dev' into chore/merge-upstream-2…
imconnorngl Nov 1, 2026
78c4cfb
fix: proxy textures from the API host that served them
imconnorngl Nov 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ R2_SECRET_ACCESS_KEY=""
R2_BUCKET=""
PUBLIC_MEDIA_URL="" # Public URL of the bucket, e.g. an R2 custom domain like https://media.shiiyu.moe

# Logging (evlog) - leave empty to log to stdout only
# Logging (evlog) and tracing (src/instrumentation.server.ts) - leave empty to log to stdout only, without traces
# Base URL of the HyperDX OTLP HTTP intake, e.g. http://skycrypt-hyperdx:4318 (on the Dokploy network)
HYPERDX_OTLP_ENDPOINT=""
# Ingestion key from HyperDX: Team Settings -> API Keys
Expand Down
2 changes: 1 addition & 1 deletion .github/actions/pnpm-install/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ runs:
- name: Setup Node.js
uses: actions/setup-node@v7
with:
node-version: 24
node-version: 26
cache: "pnpm"

- name: Install dependencies
Expand Down
1 change: 1 addition & 0 deletions .github/skills/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
pnpm-*
46 changes: 30 additions & 16 deletions .github/workflows/clean_cache.yml
Original file line number Diff line number Diff line change
@@ -1,35 +1,49 @@
# https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows#force-deleting-cache-entries
name: Cleanup caches for closed branches
name: Cleanup caches for closed pull requests

on:
pull_request:
types:
- closed
schedule:
- cron: "0 0 */3 * *"
workflow_dispatch:

jobs:
cleanup:
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v7
permissions:
actions: write
pull-requests: read

steps:
- name: Cleanup
shell: bash
run: |
set -euo pipefail

if [[ "$EVENT_NAME" == "pull_request" ]]; then
ref="refs/pull/$PR_NUMBER/merge"
echo "Deleting caches for closed pull request $PR_NUMBER"
gh cache delete --all --succeed-on-no-caches --repo "$REPO" --ref "$ref"
exit 0
fi

REPO=${{ github.repository }}
BRANCH="refs/pull/${{ github.event.pull_request.number }}/merge"
echo "Finding caches for closed pull requests"
refs=$(gh cache list --repo "$REPO" --limit 1000 --json ref --jq '.[].ref' | sort -u)

echo "Fetching list of cache key"
cacheKeysForPR=$(gh cache list -R $REPO -B $BRANCH | cut -f 1 )
while IFS= read -r ref; do
[[ "$ref" =~ ^refs/pull/([0-9]+)/merge$ ]] || continue
pr_number="${BASH_REMATCH[1]}"
state=$(gh pr view "$pr_number" --repo "$REPO" --json state --jq '.state')

## Setting this to not fail the workflow while deleting cache keys.
set +e
echo "Deleting caches..."
for cacheKey in $cacheKeysForPR
do
gh cache delete $cacheKey -R $REPO -B $BRANCH --confirm
done
echo "Done"
if [[ "$state" == "CLOSED" ]]; then
echo "Deleting caches for closed pull request $pr_number"
gh cache delete --all --succeed-on-no-caches --repo "$REPO" --ref "$ref"
fi
done <<< "$refs"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
EVENT_NAME: ${{ github.event_name }}
PR_NUMBER: ${{ github.event.pull_request.number }}
REPO: ${{ github.repository }}
6 changes: 3 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v7
with:
node-version: 24
node-version: 26
cache: pnpm

- name: Install dependencies
Expand Down Expand Up @@ -68,7 +68,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v7
with:
node-version: 24
node-version: 26
cache: pnpm

- name: Install dependencies
Expand Down Expand Up @@ -110,7 +110,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v7
with:
node-version: 24
node-version: 26
cache: pnpm

- name: Install dependencies
Expand Down
17 changes: 16 additions & 1 deletion .github/workflows/website.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,20 @@ name: Website

on:
push:
paths: ["src/**", "Dockerfile", "package.json", "vite.config.ts", ".changeset/**", ".github/workflows/website.yml"]
paths:
- "src/**"
- "static/**"
- "drizzle/**"
- "Dockerfile"
- ".dockerignore"
- ".env.example"
- ".npmrc"
- "package.json"
- "pnpm-lock.yaml"
- "pnpm-workspace.yaml"
- "vite.config.ts"
- ".changeset/**"
- ".github/workflows/website.yml"
workflow_dispatch:

env:
Expand Down Expand Up @@ -107,6 +120,8 @@ jobs:
with:
context: .
push: true
cache-from: type=gha,scope=skycrypt-frontend-${{ github.ref_name }}
cache-to: type=gha,mode=max,scope=skycrypt-frontend-${{ github.ref_name }}
build-args: |
PUBLIC_COMMIT_HASH=${{ env.SHORT_SHA }}
PUBLIC_RELEASE_CHANNEL=${{ github.ref_name == 'prod' && 'stable' || 'beta' }}
Expand Down
9 changes: 9 additions & 0 deletions .mcp.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"mcpServers": {
"svelte": {
"type": "http",
"url": "https://mcp.svelte.dev/mcp",
"tools": ["*"]
}
}
}
7 changes: 0 additions & 7 deletions .vscode/mcp.json

This file was deleted.

12 changes: 7 additions & 5 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Follow these instructions when working on SkyCrypt Frontend. Nested `AGENTS.md`
## Stack and setup

- SkyCrypt is a Hypixel SkyBlock profile viewer built with SvelteKit 2, Svelte 5, strict TypeScript, and Tailwind CSS 4. Production uses the Node adapter.
- Use Node 24 and pnpm 12, as required by `package.json` and CI. Other runtimes and package managers are unsupported. Keep `pnpm-lock.yaml` in sync with dependency changes.
- Use Node 26 and pnpm 12, as required by `package.json` and CI. Other runtimes and package managers are unsupported. Keep `pnpm-lock.yaml` in sync with dependency changes.
- Install with `pnpm install`. Copy `.env.example` to `.env` without overwriting an existing file. Never commit secrets or local environment files.
- Profile data and end-to-end tests require the Go backend from the separate SkyCrypt-Backend repository. Newsroom uploads go to Cloudflare R2. See `.env.example` for service URLs.
- Database and authentication code use PostgreSQL, Drizzle, and Better Auth. `pnpm db:start` starts local PostgreSQL. Server startup applies migrations from `drizzle/` through `src/hooks.server.ts`; builds skip migration execution.
Expand Down Expand Up @@ -41,14 +41,14 @@ Follow these instructions when working on SkyCrypt Frontend. Nested `AGENTS.md`
- Write local and alias imports without `.js`/`.ts` extensions or a trailing `/index` (`#lib/server/db`, `./format`). Keep the extension on `.svelte.ts` modules so they aren't read as components. shadcn-managed files in `src/lib/components/ui/` and Orval output keep their generated style. `#lib` resolves through the Vite alias and the `#lib/*` TypeScript path, not only the `package.json` import map, which needs exact file names.
- Keep credentials and database access in server-only code. Treat every `PUBLIC_*` environment variable as exposed to the browser.
- `src/routes/api/internal/` holds routes only the Go backend calls (API key verification and usage reporting), guarded by `SERVER_API_TOKEN` through `requireBackendToken`. nginx must never route `/api/internal` publicly. The backend enforces API key rate limits, so Better Auth's own API key rate limiter stays disabled.
- Log with evlog, never `console.*` in server code (ESLint enforces this). Configure it in `evlog.config.ts`; `src/hooks.server.ts` wires the hooks, Better Auth identity and drains. In a request, add context to the single wide event with `locals.log.set({ ... })` instead of extra log lines. Outside a request use `log` from `evlog`: `log.info("tag", "message")`, or `log.error({ action: "domain.event", error })` so HyperDX can filter on `action`. Output is plain text in the Dokploy Logs tab and ships to HyperDX when `HYPERDX_OTLP_ENDPOINT` is set (dev writes NDJSON to `.evlog/logs`, readable with `pnpm exec evlog logs`). Browser code logs with `log` from `evlog/client` (set up in `src/hooks.client.ts`); warnings and errors post to `/api/client-logs`, an unauthenticated endpoint that sanitizes and rate limits input, so never trust or extend its payload without updating `src/lib/server/client-logs.ts`.
- Log with evlog, never `console.*` in server code (ESLint enforces this). Configure it in `evlog.config.ts`; `src/hooks.server.ts` wires the hooks, Better Auth identity and drains. In a request, add context to the single wide event with `locals.log.set({ ... })` instead of extra log lines. Outside a request use `log` from `evlog`: `log.info("tag", "message")`, or `log.error({ action: "domain.event", error })` so HyperDX can filter on `action`. Output is plain text in the Dokploy Logs tab and ships to HyperDX when `HYPERDX_OTLP_ENDPOINT` is set (dev writes NDJSON to `.evlog/logs`, readable with `pnpm exec evlog logs`). Server traces (SvelteKit spans plus outgoing `fetch`) go to the same HyperDX endpoint through `src/instrumentation.server.ts`, which reads `process.env` because it loads before the app; `traceHandler` in `src/hooks.server.ts` puts the trace id on each request's wide event so HyperDX links logs to traces. Browser code logs with `log` from `evlog/client` (set up in `src/hooks.client.ts`); warnings and errors post to `/api/client-logs`, an unauthenticated endpoint that sanitizes and rate limits input, so never trust or extend its payload without updating `src/lib/server/client-logs.ts`.

## Implementation conventions

- Use Svelte 5 runes (`$state`, `$derived`, `$props`) and snippets. Avoid legacy reactive declarations, `export let`, and slots in new code.
- Use the Svelte MCP to get the latest svelte documentation and conventions. Use the async flag to get the latest SvelteKit documentation and conventions for async svelte and remote functions, as that is the default for this project (instead of +page.server.ts way of loading data).
- The project enables async Svelte compilation and SvelteKit remote functions. Use `--async` when validating with Svelte MCP/CLI tooling.
- Check official documentation before implementing: the Svelte MCP for Svelte and SvelteKit, the library's own docs (for example takumi, Better Auth, Cloudflare) and the Node 24 docs for server code. Prefer SvelteKit features, then Node 24 built-ins, then library features, then hand-written code. Context7 can lag behind official docs. Say which docs you checked when reporting.
- Check official documentation before implementing: the Svelte MCP for Svelte and SvelteKit, the library's own docs (for example takumi, Better Auth, Cloudflare) and the Node 26 docs for server code. Prefer SvelteKit features, then Node 26 built-ins, then library features, then hand-written code. Context7 can lag behind official docs. Say which docs you checked when reporting.
- Use SvelteKit remote functions in `*.remote.ts` for new data loading and mutations instead of adding `+page.server.ts`. Migrate existing server route files only when the task calls for it.
- Validate remote-function inputs and check authentication and authorization on the server. Follow nearby implementations, and check permissions in each protected mutation even when route guards or hidden controls restrict access.
- Use Tailwind utilities, the shared `cn()` helper, and existing theme tokens and UI primitives. UI changes must work with a keyboard, show focus, adapt to screen size, and support existing themes.
Expand All @@ -69,7 +69,7 @@ Follow these instructions when working on SkyCrypt Frontend. Nested `AGENTS.md`
## Generated code and database changes

- Do not manually edit Orval-generated API clients or schemas in `src/lib/shared/api/`. Change `orval.config.ts`, custom mutators, or the upstream API definition, then regenerate the relevant target.
- Run `pnpm exec orval --project <target>` for `skycrypt`, `skycryptZod`, or `patreon`. SkyCrypt targets read `http://localhost:8080/api/openapi/doc.json`; Patreon reads its configured upstream spec. Required services must be available.
- Run `pnpm exec orval --project <target>` for `skycrypt`, `skycryptZod`, or `patreon`. SkyCrypt targets read `http://localhost:8080/openapi.json`; Patreon reads its configured upstream spec. Required services must be available.
- Edit database schemas in `src/lib/server/db/schema/`, then run `pnpm db:generate` and review the SQL and metadata in `drizzle/`. Do not rewrite applied migrations.
- `pnpm auth:schema` regenerates the Better Auth schema from `src/lib/server/auth.ts`. Review the generated changes and generate any required database migration separately.
- `pnpm db:push` directly changes the configured database; use it only for local schema work. Commit migrations for schema changes. Drizzle CLI commands require `DATABASE_URL` in the process environment.
Expand Down Expand Up @@ -102,7 +102,9 @@ Follow these instructions when working on SkyCrypt Frontend. Nested `AGENTS.md`
## Commits, pull requests, and releases

- Use Conventional Commits, for example `fix(theme): preserve contrast`. The commit-message hook runs commitlint.
- Before committing or pushing, ask whether the change goes directly on `dev` or on a new branch. The answer depends on the change, so never choose on your own.
- Never stage changes (`git add`, `git mv`, `git rm`) unless asked. The user stages after reviewing; rename or delete files with plain `mv`/`rm`.
- Follow `.github/PULL_REQUEST_TEMPLATE.md`: explain the problem and resulting behavior, link relevant issues, list verification, and include before/after screenshots for visible UI changes. Note migration or environment requirements.
- Add a changeset with `pnpm changeset` when the change belongs in the release changelog. Documentation-only agent guidance does not need one.
- Changesets target `dev`. Automation creates beta releases on `dev` and stable releases on `prod`. Follow `CONTRIBUTING.md` for promotion and changeset cleanup. Run release scripts only for an explicit release task.
- Preserve applicable license notices. New contributions default to AGPLv3; brand assets explicitly listed in `NOTICE` and `static/BRAND_ASSETS_LICENSE` retain their MIT exception.
- Preserve applicable license notices. New contributions default to AGPLv3; brand assets listed in `NOTICE` are proprietary (`LICENSES/LicenseRef-SkyCrypt-Brand.txt`). `NOTICE` is the authoritative list; mirror changes in `static/BRAND_ASSETS_LICENSE`, `REUSE.toml` and the README list.
70 changes: 70 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,75 @@
# Changelog

## 4.6.0

### Minor Changes

- Feat(brand): replace logo and relicense brand assets _[`#382`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/pull/382) [`045a365`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/045a365b03cfc59fcfb54a19e8a72c13c5ffead7) [@DarthGigi](https://github.com/DarthGigi)_

### Patch Changes

- Feat(newsroom): add a refresh cache option to post images _[`#382`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/pull/382) [`ce08456`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/ce084568770cef680a116bbaf243a2b244aeaab1) [@DarthGigi](https://github.com/DarthGigi)_

## 4.6.0-beta.1

### Patch Changes

- Feat(newsroom): add a refresh cache option to post images _[`ce08456`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/ce084568770cef680a116bbaf243a2b244aeaab1) [@DarthGigi](https://github.com/DarthGigi)_

## 4.6.0-beta.0

### Minor Changes

- Feat(brand): replace logo and relicense brand assets _[`045a365`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/045a365b03cfc59fcfb54a19e8a72c13c5ffead7) [@DarthGigi](https://github.com/DarthGigi)_

## 4.5.2

### Patch Changes

- Stop scroll areas from fading their edges in Firefox when there is nothing to scroll _[`#379`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/pull/379) [`a6ab980`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/a6ab9802f9b810a7a76f478fc292e148966b7465) [@DarthGigi](https://github.com/DarthGigi)_

## 4.5.2-beta.0

### Patch Changes

- Stop scroll areas from fading their edges in Firefox when there is nothing to scroll _[`a6ab980`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/a6ab9802f9b810a7a76f478fc292e148966b7465) [@DarthGigi](https://github.com/DarthGigi)_

## 4.5.1

### Patch Changes

- Fix every page returning a 500 error when server tracing is enabled _[`#377`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/pull/377) [`dfc474c`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/dfc474c59cd705eb80766a979359330dcba6c1a9) [@DarthGigi](https://github.com/DarthGigi)_

## 4.5.1-beta.0

### Patch Changes

- Fix every page returning a 500 error when server tracing is enabled _[`#377`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/pull/377) [`dfc474c`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/dfc474c59cd705eb80766a979359330dcba6c1a9) [@DarthGigi](https://github.com/DarthGigi)_

## 4.5.0

### Minor Changes

- Show API key, banner, session and developer mode changes immediately while they save, fix the API key page breaking after enabling, disabling or changing a key's rate limit, and send server traces to HyperDX _[`#375`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/pull/375) [`5d4653d`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/5d4653d9705caa7bdc00562409c233e91ab44a24) [@DarthGigi](https://github.com/DarthGigi)_

## 4.5.0-beta.0

### Minor Changes

- Show API key, banner, session and developer mode changes immediately while they save, fix the API key page breaking after enabling, disabling or changing a key's rate limit, and send server traces to HyperDX _[`5d4653d`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/5d4653d9705caa7bdc00562409c233e91ab44a24) [@DarthGigi](https://github.com/DarthGigi)_

## 4.4.1

### Patch Changes

- Error messages now say what went wrong, such as an unknown player or a missing profile, instead of showing the backend's raw error. The frontend uses the client generated from the backend's new Huma spec. _[`#373`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/pull/373) [`d2e81d3`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/d2e81d377c6cdbda5ee92b2beb925ce216a0f9a7) [@DarthGigi](https://github.com/DarthGigi)_

## 4.4.1-beta.0

### Patch Changes

- Error messages now say what went wrong, such as an unknown player or a missing profile, instead of showing the backend's raw error. The frontend uses the client generated from the backend's new Huma spec. _[`d2e81d3`](https://github.com/SkyCryptWebsite/SkyCrypt-Frontend/commit/d2e81d377c6cdbda5ee92b2beb925ce216a0f9a7) [@DarthGigi](https://github.com/DarthGigi)_

## 4.4.0

### Minor Changes
Expand Down
6 changes: 2 additions & 4 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Before contributing to SkyCrypt, make sure you install the development environme

## Prerequisite Software

- [Node.js](https://nodejs.org) (at least v24, as of February 2026)
- [Node.js](https://nodejs.org) (at least v26, as of October 2026)
- [pnpm](https://pnpm.io/) (Package manager)

## Backend
Expand Down Expand Up @@ -121,9 +121,7 @@ If you find a bug or have a feature request, please open an issue on GitHub or o

By contributing to SkyCrypt Frontend, you agree that your contribution is licensed under the repository's current default license, [GNU AGPLv3](https://www.gnu.org/licenses/agpl-3.0.en.html), unless a more specific license notice applies.

SkyCrypt brand/logo assets listed in [`static/BRAND_ASSETS_LICENSE`](./static/BRAND_ASSETS_LICENSE) remain under the MIT License and are not relicensed under AGPLv3.

Changes to those MIT brand assets must preserve the MIT notice. Non-mechanical changes to those assets require maintainer review before merge.
SkyCrypt brand/logo assets listed in [`NOTICE`](./NOTICE) are proprietary to SkyCrypt LLC under [`LICENSES/LicenseRef-SkyCrypt-Brand.txt`](./LICENSES/LicenseRef-SkyCrypt-Brand.txt). They are not licensed under AGPLv3 or MIT. Only maintainers may change those assets, and you may not submit replacements unless you transfer the rights in them to SkyCrypt LLC.

Do not submit code, assets, textures, fonts, generated files, or other materials unless you have the right to license them under the applicable SkyCrypt Frontend license terms.

Expand Down
Loading
Loading