Coder Social home page Coder Social logo

vloddot / jolt-svelte Goto Github PK

View Code? Open in Web Editor NEW
8.0 1.0 2.0 3.24 MB

Jolt. A desktop Revolt client made in Svelte.

Home Page: https://vloddot.github.io/jolt-svelte/

License: GNU General Public License v3.0

Nix 1.42% HTML 0.31% JavaScript 1.15% Rust 0.58% Svelte 73.01% TypeScript 23.52%
custom-client revolt rust svelte tauri chatapp

jolt-svelte's Introduction

Jolt

In physics, jolt is the rate at which an object's acceleration changes with respect to time. It is a vector quantity (having both magnitude and direction). Jolt is most commonly denoted by the symbol j and expressed in m/s3 (SI units) or standard gravities per second (g0/s).

Custom Revolt client for desktop made in Tauri and SvelteKit.

Note: This client is deprecated in favor of vloddot/jolt-solidjs.

Table of Contents

Installation

To install, follow the releases page and pick out the version you need.

Running and compiling the project

Prerequisites

To compile or launch Jolt in a development server on your own machine, you're going to need a node package manager (NPM, Yarn, PNPM, etc.), first run the following command to install NPM packages: pnpm install. Then edit src-tauri/tauri.conf.json's beforeDevCommand and beforeBuildCommand keys to adapt to your package manager of choice.

If you want to run the desktop app on a development server, you're also going to need to install cargo (preferrably using Rustup) then you need to install some packages, if you are using the Nix package manager, just run nix develop (recommended if you have the flakes experimental featuee enabled) or nix-shell shell.nix. If not, you can find the prerequisites in the shell.nix or flake.nix files in the Nix language syntax. Otherwise, the packages to install are in packages and libraries keys and a bit of setup to add to a shellrc (.bashrc, .zshrc, etc.) is in the shellHook key. You also need to install the tauri-cli tool through cargo with:

cargo install tauri-cli

Build Command

To build the desktop app (has to build the browser app with it; see below), execute this command:

cargo tauri build

Once it is finished, you will find the build files in src-tauri/target/bundle.

To build the browser app, execute this command:

pnpm run build # you can also adapt your favorite package manager

Development Server

If you want to test the application before building it or installing the application through GitHub Releases, you can run it in a development server. It will not have the best performance compared to the built executable.

Just run the following command:

cargo tauri dev

or if you want to run it in a browser:

pnpm run dev # you can also adapt your favorite package manager

Links

Contributing

To contribute, make sure you follow the CONTRIBUTING.md guide.

jolt-svelte's People

Contributors

toastxc avatar vloddot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

toastxc kkk2z

jolt-svelte's Issues

Permissions

Parsing the permissions bitfield in channels and members and showing specific buttons conditionally. Like not allowing the user to type when the SendMessage permission isn't set in the bitfield of the member.

Typing events don't timeout if they never send a `StopTyping` event

If, for example one user starts typing in a channel and then disconnects, the user's client obviously can't send the StopTyping event and therefore, on another user's side running the Jolt client, the typing event will not timeout the event and just keep saying <username> is typing....

`reywen_http::DeltaError` cannot be serialized to frontend code.

reywen_http::DeltaError is the enum in Reywen's code that is meant to be used as an error result when doing fetch requests or such. It's quite helpful to have it in the frontend code instead of giving a string. As it can list what came back from the server, status code, etc.

Two ways of handling it would be:

  1. Returning a custom enum that is deserializable
  2. Manually implementing serde::Deserialize

I'm leaning towards the first option as it is easier for the frontend code to handle.

Server Settings

/servers/[sid]/channels/[cid]/settings route that behaves almost like the /settings route but for managing server settings.

Servers not in the same order as the server's settings.

After editing servers and putting them in a specific order in the Revite client, they are saved in Revite in a certain order, so for example in Revite, if I have server #1 and server #2, and they are in the respective order, they should show up in Jolt as server #1 and server #2, if I swap the two, they should appear in the Jolt client as server #2 and server #1, but they don't.

Form submit issue for `<textarea>` in message input.

When pressing Enter/Return on a <textarea>, it goes into a new line, instead of sending a message. A <textarea> is still helpful for wrapping so prefer keeping <textarea> instead of using something like <input>.

Presence Indicators

Presence Indicators for users (Online, Idle, Focus, Do Not Disturb, Offline/Invisible)

Weird stuff happening after having way too many servers for the screen

So if you have way too many servers for the screen, the expected behavior is for it to scroll normally, but a few issues happen:

  • The tooltip goes down to the bottom of the screen.
  • You can scroll downwards more, leaving the main content at the top.

Recording of this in action

Another subtle yet very obvious issue is the fact that the tooltip isn't perfectly positioned.

I could not replicate this myself but another issue I found was two tooltips appearing at the same time after fiddling with the tooltips a bit. Definitely worth looking into.

Custom Context Menu

Custom Context Menu to have custom actions like copying certain IDs (users, channels, servers, etc.) or replying to messages or marking them as read.

Doubled Messages

Messages received are doubled. Possibly due to running two websocket connections by accident.

Sending Masquerades

An option in the UI to masquerade per-message, using Revolt's API feature of the same name.

Friends List

Friends List in the / route to list, add, remove and block friends instead of the currently unused space.

Fix GitHub workflow of releases

Whenever new commits are pushed or there is a new pull request, create-release is done automatically, even if the version is unchanged so it gets stuck as a draft. Best approach is to do build step and save artifacts but get release out to another workflow which is triggered at will.

Channel Settings

/channels/[id]/settings route that behaves like the /settings route but for managing channel settings.

Unreads

Notifications for unread messages.

Visual Overhaul

Use classes more to make Custom CSS easier in the future and maybe make it look good.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.