A Misskey-styled alternative frontend for Pleroma, Akkoma and Mastodon
  • TypeScript 80.2%
  • JavaScript 11.7%
  • SCSS 7%
  • HTML 0.7%
  • CSS 0.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
C 5fc006e88a
All checks were successful
Build latest / build (push) Successful in 1m55s
fix(notifications): refresh follow relationships immediately
2026-10-25 15:51:00 -07:00
.forgejo/workflows remove broken ci caches 2026-10-05 12:23:13 -07:00
.github feat: fork to mangane-ice with Misskey styling 2026-05-17 21:18:20 -07:00
.husky fix: opening post with spoilers while focus on spoilers answer zone (#440) 2026-02-02 18:12:30 +01:00
.vscode [ADD] Follow hashtags (#243) 2023-08-12 18:50:08 +02:00
app fix(notifications): refresh follow relationships immediately 2026-10-25 15:51:00 -07:00
custom Allow custom module imports 2022-05-09 17:57:15 -05:00
docs docs: Misskey-style visual/layout overhaul design spec 2026-06-04 14:54:16 -07:00
installation Mastodon nginx: remove try_files from @mastodon-packs 2022-06-22 13:44:27 -05:00
jest Upgrade Jest to v28 2022-07-05 11:30:08 -05:00
scripts feat: fork to mangane-ice with Misskey styling 2026-05-17 21:18:20 -07:00
tailwind gradient-purple, gradient-blue --> gradient-start, gradient-end 2022-05-07 15:23:43 -05:00
types/redux-immutable FIX ROOT STATE TYPE!!!!! 2022-07-06 15:54:30 -05:00
webpack perf(build): align babel cache path and enable webpack filesystem cache 2026-05-22 16:14:59 -07:00
.commitlintrc.json chore: update release system 2024-11-02 11:02:17 +01:00
.env.example Patron updates 2020-06-30 17:33:21 -05:00
.eslintignore eslintignore: /custom/** 2022-05-16 10:08:50 -05:00
.eslintrc.js feat: reply composing is now made directly in threads (#422) 2025-10-30 21:39:47 +01:00
.gitignore feat(theme): "Ultramarine Ice" palette — soft 群青 + pale-cyan washes 2026-06-01 21:30:58 -07:00
.lintstagedrc.json Revert "Merge branch 'revert-f59d977a' into 'develop'" 2022-02-27 00:13:35 +00:00
.stylelintrc.json Start adding dark mode 2022-03-23 19:18:37 -05:00
.tool-versions Upgrade to Node 18 2022-06-01 13:22:49 -05:00
.yarnrc.yml build: update deps (#456) 2026-04-24 15:08:55 +02:00
babel.config.js eslint: indent switch statements 2022-05-11 16:06:35 -05:00
CHANGELOG.md chore(release): 0.1.16 2026-05-22 23:11:33 +00:00
commitlint.config.js chore: update release system 2024-11-02 11:02:17 +01:00
CREDITS.md feat: fork to mangane-ice with Misskey styling 2026-05-17 21:18:20 -07:00
dangerfile.ts Danger: modified --> edited 2022-08-05 11:16:33 -05:00
jest.config.js Update tests for Jest v28, apply uuid hack 2022-07-09 14:25:19 -05:00
jsdoc.conf.js JSDoc scaffolding 2021-09-05 14:49:38 -05:00
LICENSE Add LICENSE and README 2020-03-28 16:06:29 -05:00
package.json fix release build 2026-10-05 00:06:48 -07:00
postcss.config.js Add Tailwind 2022-03-19 13:24:16 -05:00
README.md refresh readme 2026-10-05 12:11:59 -07:00
tailwind.config.js Revert unwanted design changes 2022-08-22 23:28:17 +02:00
tsconfig.json chore: release intergalactic-doggo version (#342) 2024-11-01 19:12:09 +01:00
webpack.config.js eslint: indent switch statements 2022-05-11 16:06:35 -05:00
yarn.lock feat: fork to mangane-ice with Misskey styling 2026-05-17 21:18:20 -07:00

Mangane Lomia

Mangane Lomia is a community-maintained web frontend for Akkoma, Pleroma, and Mastodon-compatible servers. It is derived from Mangane and Soapbox, with a compact Misskey-inspired interface, light and dark themes, MFM rendering, and multi-account support.

Mangane Lomia in light mode Mangane Lomia in dark mode

Highlights

  • Light and dark themes with instance branding support
  • MFM rendering, including animated functions
  • Compact emoji picker and compose formatting controls
  • Multi-account switching
  • Akkoma, Pleroma, and Mastodon API compatibility
  • Responsive desktop and mobile layouts

Development

Node.js 18 and Yarn 4 are used by CI.

corepack enable
corepack prepare yarn@4.0.2 --activate
yarn install --immutable
yarn dev

The development server listens on http://localhost:3036. It proxies API requests to the instance configured in BACKEND_URL (see docs/development/running-locally.md).

Useful commands:

yarn build       # production files in ./static
yarn lint        # JavaScript/TypeScript and Sass checks
yarn test        # Jest tests

Releases

Every push to main builds a fresh static.zip and replaces the rolling latest release. The archive contains a dist directory suitable for Akkoma/Pleroma's frontend installer.

For an OTP installation:

/opt/akkoma/bin/pleroma_ctl frontend install mangane-lomia \
  --ref dist \
  --build-url https://craft.lomia.uk/CarbonC/mangane-lomia/releases/download/latest/static.zip

For a source/Mix installation, use the equivalent command:

mix pleroma.frontend install mangane-lomia \
  --ref dist \
  --build-url https://craft.lomia.uk/CarbonC/mangane-lomia/releases/download/latest/static.zip

Then select it as the primary frontend:

config :pleroma, :frontends,
  primary: %{"name" => "mangane-lomia", "ref" => "dist"}

Restart Akkoma/Pleroma after installing or switching the frontend.

Service workers must be revalidated on every request. Serve /sw.js with Cache-Control: no-cache, and bypass CDN caching for /sw.js and HTML/SPA routes. Hashed files under /packs may be cached for a long time. If a deployment still looks old, compare the filenames in the served index.html with dist/packs, then unregister the site's service worker and clear its site data before treating the problem as a build failure.

Documentation

Some documents originate from upstream and may still use the historical Mangane or Soapbox names.

License and attribution

Mangane Lomia is licensed under the AGPL-3.0-or-later. See LICENSE and CREDITS.md for licensing and upstream attribution.