Skip to content

About

Fan-made, unofficial themes for the saya chat client (gallery.json + theme JSON)

Resources

Stars

4 stars

Watchers

0 watching

Forks

Repository files navigation

English · 简体中文 · 日本語 · 한국어

saya-themes

Ready-made themes for saya, the chat web client. Each theme is one JSON file that saya checks with the same rules it applies to a theme you paste in.

Fan-made, unofficial, non-commercial. These themes are not affiliated with the creators or official rights holders. 「ちいかわ」 © nagano / chiikawa committee. The pictures inside the -img themes belong to their rights holders; see Notice.

The theme gallery in saya

Themes

Every character has four files under themes/<id>/: light and dark, each with colours only and with pictures (-img: wallpaper, room list pattern, mascot, badge and loading picture). The app gallery shows the two pictured ones.

Character Folder Light Dark
Usagi themes/usagi preview preview
Hachiware themes/hachiware preview preview
Chiikawa themes/chiikawa preview preview
Momonga themes/momonga preview preview
Kurimanju themes/kurimanju preview preview
Yoroi-san (the armored caretaker) themes/yoroi preview preview
Muchauman (the yogurt hero) themes/yusangyun preview preview
Shisa (the ramen-shop helper) themes/shisa preview preview
Halloween (October 1–November 7, 2026, KST) themes/halloween preview preview
Christmas (November 20–December 26, 2026, KST) themes/christmas preview preview
Winter (December 1, 2026–February 28, 2027, KST) themes/winter preview preview
OmO (the official OmO mascot) themes/omo preview preview
Jabdori (used with the creator's permission) themes/jabdori preview preview
Croissant Mouse themes/croissant-mouse preview preview
Nagano Bear (Damgom) themes/nagano-bear preview preview
Rakko (sea otter) themes/rakko preview preview
Omonyang (the OmO cat face from the Omonyang profile) themes/omonyang preview preview
Siren (from the Chiikawa movie) themes/siren preview preview
Furuhonya (the used-bookstore owner) themes/furuhonya preview preview
Shimajiro (the island diner owner, from the movie) themes/shimajiro preview preview

Previews use made-up rooms and messages.

Seasonal gallery entries may have optional from and until dates in yyyy-MM-dd format. Both dates are inclusive, using Korea Standard Time (KST). A missing bound is open-ended; without either field, the entry is available all year. Clients that support seasonal filtering hide entries outside the period or with malformed dates. CI rejects invalid calendar dates and reversed periods.

Pick a theme in saya

Open the theme button (the half-circle icon at the top of the room list) and scroll to Theme gallery (테마 모음). Pressing a card downloads that theme, saves it next to your own themes and applies it. Pressing it again replaces the saved copy. If the download fails, nothing changes and the sheet tells you to try again.

saya reads the list from https://heoooooon.github.io/saya-themes/gallery.json by default. A deployment can point it elsewhere with VITE_THEME_GALLERY_URL at build time, and its Content-Security-Policy must allow that origin in connect-src.

Paste a theme by hand

  1. Open a file under themes/, view it raw and copy all of it.
  2. In saya: theme button → Make a theme (테마 만들기) → paste into Paste a theme (테마 붙여넣기) → Check (확인).
  3. Look at the preview and press Save and apply (저장하고 적용).

A saya without picture support ignores images and applies the colours only.

Add a theme

  1. Put four files in themes/<id>/: <id>-light.json, <id>-dark.json (colours only), <id>-light-img.json, <id>-dark-img.json (with pictures). The format is saya's theme JSON (docs/THEMES.md in saya).

  2. Add one line for the character to gallery.json. Copy name, mode and colors from the pictured file (colors is tokens.wall, tokens.bubbleSelf, tokens.accent, tokens.text, in that order). path is relative to this repository:

    { "id": "<id>", "name": "<character>", "themes": [{ "mode": "light", "name": "<name>", "colors": ["<wall>", "<bubbleSelf>", "<accent>", "<text>"], "path": "themes/<id>/<id>-light-img.json" }, { "mode": "dark", "...": "..." }] }
  3. Add the character and its sources to SOURCES.md.

  4. Run bun scripts/build-previews.ts: it draws previews/cards/<id>-<mode>.svg from each theme's colours and mascot and writes preview on its gallery line, which saya shows as the card's picture (the check requires preview to be an existing SVG under previews/cards/).

  5. Run bun install and bun scripts/validate.ts, then open a pull request. CI runs the same check.

The check rejects a theme saya would reject, any contrast warning, any field saya would ignore, a gallery line whose name, mode or colours differ from its file, a missing file, and a pictured file that no gallery line points at. The rules are an unmodified copy of saya's (vendor/saya, source commit in vendor/saya/SOURCE.md).

Only add pictures you may share for free, non-commercial use, and name where they came from.

Notice

  • These themes are fan-made, unofficial and non-commercial. They are not affiliated with, endorsed by or sponsored by the creators or rights holders.
  • 「ちいかわ」 © nagano / chiikawa committee. All pictures in the -img themes belong to their rights holders.
  • Sources: official LINE STORE sticker previews (packs 25264193, 29118925, 32411274, 32367501, 32855985, 32855981, 33799640), product pictures from the official shop chiikawamarket.jp, and frames from the TV anime episodes 138 and 175. Per-file details are in SOURCES.md.
  • Takedown: if you hold rights to any of this material and want it removed, open an issue in this repository. It will be removed right away, without discussion.

License

The code, the schema copy and the JSON structure are under the MIT License. The pictures are not: they belong to their rights holders and are not licensed by this repository.

About

Fan-made, unofficial themes for the saya chat client (gallery.json + theme JSON)

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages