Skip to content

smokku/cinny

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,614 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Chromed Cinny

This is not meant to be a full fork of Cinny, but rather a personal build with features I like gathered from pending Cinny PRs, backported Sable features, and some of my own development.

If you like it, feel free to use it. If not, that's fine too. If you want to contribute, just open a PR.

Live version of this code is running at https://matrix.chrome.pl/ and we have a public room at https://matrix.to/#/#cinny:chrome.pl.

Lobby view Room view Forum view

Added

  • Message Bookmarks with add, remove, and list functionality.
  • Sender and mention filters for message search.
  • Unread threads on the room list sidebar.
  • Forum-style room view with threads acting as topics.
  • Dedicated threads sidebar user interface.
  • Inline media galleries.
  • Extended user profiles, banners, nicknames, and extended presence handling.
  • Set & show user presence using User Menu on sidebar avatar.
  • Presence display in the members drawer.
  • Room banners in the Lobby.
  • User Profile access on join, part and other system messages.
  • Large URL previews.
  • Discord-like Dark Sidebar appearance toggle.
  • Change password section in settings.
  • Show active bridges in members drawer.
  • Pinned message indicator in message list.
  • Branding support via config.json.
  • Configurable registration token source URLs per homeserver via config.json.
  • DM rooms honor their own avatar, name, and topic when set, with presence badges and partner status as fallback.
  • Pin the 3 most recent unread DM rooms as individual avatars in the narrow sidebar.
  • KaTeX math rendering for inline ($…$) and block ($$…$$) math expressions.

Changed

  • Replaced the sidebar Settings button with a user menu.
  • Discord-like message-reply layout and hover behavior.
    • Move the message context outside of message content.
  • Join rooms in Lobby by clicking the row.
  • Replaced the custom markdown parser with marked plus matrix-specific extensions (emoticons, spoilers, math, subscripts).
  • Replaced the WYSIWYG editor toolbar with one that inserts markdown syntax, leaving the source visible.

Fixed

  • Prevented small image attachments from being upscaled unnecessarily.
  • Improved room replacement logic and validation.
  • Media config fetching uses the authenticated endpoint when supported.
  • Icons in the hierarchy item menu.
  • Fixed PageZoomInput text wrapping.
  • Changed the emoji and sticker pack selector to a dropdown.
  • Phantom Space-level unread indicators in the sidebar.

Back to regular programming…


GitHub release downloads DockerHub downloads Follow on Mastodon Follow on Twitter Sponsor Cinny

A Matrix client focusing primarily on simple, elegant and secure interface. The main goal is to have an instant messaging application that is easy on people and has a modern touch.

Important

We are currently in the process of replacing the matrix-js-sdk with our own SDK. As a result, we will not be accepting any pull requests until further notice. Thank you for your understanding.

Getting started

The web app is available at app.cinny.in and gets updated on each new release. The dev branch is continuously deployed at dev.cinny.in but keep in mind that it could have things broken.

You can also download our desktop app from the cinny-desktop repository.

Self-hosting

To host Cinny on your own, simply download the tarball from GitHub releases, and serve the files from dist/ using your preferred webserver. Alternatively, you can just pull the docker image from DockerHub or GitHub Container Registry.

  • The default homeservers and explore pages are defined in config.json.

  • You need to set up redirects to serve the assests. Example configurations; netlify, nginx, caddy.

    • If you have trouble configuring redirects you can enable hash routing — the url in the browser will have a /#/ between the domain and open channel (ie. app.cinny.in/#/home/ instead of app.cinny.in/home/) but you won't have to configure your webserver.
  • To deploy on subdirectory, you need to rebuild the app youself after updating the base path in build.config.ts.

    • For example, if you want to deploy on https://cinny.in/app, then set base: '/app'.
PGP Public Key to verify tarball
-----BEGIN PGP PUBLIC KEY BLOCK-----

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
mxFo+ioe/ABCufSmyqFye0psX3Sp
=WtqZ
-----END PGP PUBLIC KEY BLOCK-----

Local development

Tip

We recommend using a version manager as versions change very quickly. You will likely need to switch between multiple Node.js versions based on the needs of different projects you're working on. NVM on windows on Windows and nvm on Linux/macOS are pretty good choices. Recommended nodejs version is Krypton LTS (v24.13.1).

Execute the following commands to start a development server:

npm ci # Installs all dependencies
npm start # Serve a development version

To build the app:

npm run build # Compiles the app into the dist/ directory

Running with Docker

This repository includes a Dockerfile, which builds the application from source and serves it with Nginx on port 80. To use this locally, you can build the container like so:

docker build -t cinny:latest .

You can then run the container you've built with a command similar to this:

docker run -p 8080:80 cinny:latest

This will forward your localhost port 8080 to the container's port 80. You can visit the app in your browser by navigating to http://localhost:8080.

About

Chromed Cinny - Discord-alike matrix client

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Contributors

Languages

  • TypeScript 99.1%
  • Other 0.9%