Compare commits
3 commits
c725b33679
...
4c6523a9a7
Author | SHA1 | Date | |
---|---|---|---|
4c6523a9a7 | |||
ce4e15eeed | |||
3db510ec5f |
6 changed files with 78 additions and 9 deletions
65
README.md
Normal file
65
README.md
Normal file
|
@ -0,0 +1,65 @@
|
|||
# Carbon Chat
|
||||
|
||||
Carbon is the Matrix client for Discord refugees.
|
||||
|
||||
## The dream
|
||||
|
||||
Carbon's planned features, compared to Discord:
|
||||
|
||||
- End to end encryption
|
||||
- $0 per-account custom emojis and custom emoji packs
|
||||
- Uses the open Matrix and Mumble systems
|
||||
- Much better IRC layout
|
||||
- Probably more
|
||||
|
||||
Carbon's planned features, compared to Element:
|
||||
|
||||
- Get rid of the unmanageable combined rooms list
|
||||
- Groups like Discord's guilds
|
||||
- Always have one group selected at a time
|
||||
- Synchronised membership, moderators, power levels and bans
|
||||
- Ordered channel list
|
||||
- Unread indicators
|
||||
- Add existing channels to groups
|
||||
- Pin any channel to the groups bar
|
||||
- Tidy Mumble integration to add voice channels
|
||||
- More reliable unreads
|
||||
- Per-account custom emojis (Ponies+FluffyChat integration) and custom emoji packs
|
||||
- Slightly better IRC layout
|
||||
- Probably more
|
||||
|
||||
## The reality
|
||||
|
||||
Carbon is currently _technically_ usable as a chat app, but is very
|
||||
early in development. These important features still need to be
|
||||
implemented:
|
||||
|
||||
- Login GUI
|
||||
- Unreads
|
||||
- Chat history
|
||||
- Formatting
|
||||
- Emojis
|
||||
- Reactions
|
||||
- Groups v2
|
||||
- Group management
|
||||
- Pinned channels
|
||||
- Mumble integration
|
||||
|
||||
## The code
|
||||
|
||||
### Building
|
||||
|
||||
npm install -D
|
||||
npm run rebuild
|
||||
|
||||
### Hosting
|
||||
|
||||
Send the files from the `build` folder to a static file server. Apply
|
||||
a long cache-control header to everything served under `/static`, and
|
||||
no cache-control header to everything else.
|
||||
|
||||
### Developing
|
||||
|
||||
npm run watch
|
||||
|
||||
Files will be rebuilt as you save them.
|
|
@ -2,7 +2,7 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="static/main.css?static=f7c0898b94">
|
||||
<link rel="stylesheet" type="text/css" href="static/main.css?static=e9db1a3439">
|
||||
<script type="module" src="static/groups.js?static=2cc7f0daf8"></script>
|
||||
<script type="module" src="static/chat-input.js?static=16321d4eb4"></script>
|
||||
<script type="module" src="static/room-picker.js?static=edb9a5f669"></script>
|
||||
|
|
|
@ -81,11 +81,11 @@ class Sender {
|
|||
this.avatar.clearChildren()
|
||||
if (this.sender.value().content.avatar_url) {
|
||||
this.avatar.child(
|
||||
ejs("img").class("c-message-group__icon").attribute("src", resolveMxc(this.sender.value().content.avatar_url, 32, "crop"))
|
||||
ejs("img").class("c-message-group__icon").attribute("src", resolveMxc(this.sender.value().content.avatar_url, 96, "crop"))
|
||||
)
|
||||
} else {
|
||||
this.avatar.child(
|
||||
ejs("div").class("c-message-group__icon")
|
||||
ejs("div").class("c-message-group__icon", "c-message-group__icon--no-icon")
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -155,9 +155,11 @@ body {
|
|||
cursor: pointer;
|
||||
}
|
||||
.c-message-group__icon {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
border-radius: 50%;
|
||||
}
|
||||
.c-message-group__icon--no-icon {
|
||||
background-color: #48d;
|
||||
}
|
||||
.c-message-group__intro {
|
||||
|
|
|
@ -81,11 +81,11 @@ class Sender {
|
|||
this.avatar.clearChildren()
|
||||
if (this.sender.value().content.avatar_url) {
|
||||
this.avatar.child(
|
||||
ejs("img").class("c-message-group__icon").attribute("src", resolveMxc(this.sender.value().content.avatar_url, 32, "crop"))
|
||||
ejs("img").class("c-message-group__icon").attribute("src", resolveMxc(this.sender.value().content.avatar_url, 96, "crop"))
|
||||
)
|
||||
} else {
|
||||
this.avatar.child(
|
||||
ejs("div").class("c-message-group__icon")
|
||||
ejs("div").class("c-message-group__icon", "c-message-group__icon--no-icon")
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,10 +17,12 @@
|
|||
cursor: pointer
|
||||
|
||||
&__icon
|
||||
$size: 32px
|
||||
$size: 40px
|
||||
width: $size
|
||||
height: $size
|
||||
border-radius: 50%
|
||||
|
||||
&--no-icon
|
||||
background-color: #48d
|
||||
|
||||
&__intro
|
||||
|
|
Loading…
Reference in a new issue