Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Initial Launch v1.0.0 #115

Draft
wants to merge 88 commits into
base: main
Choose a base branch
from
Draft

Initial Launch v1.0.0 #115

wants to merge 88 commits into from

Conversation

TroyKomodo
Copy link
Member

@TroyKomodo TroyKomodo commented Aug 4, 2023

Proposed changes

Scuffle MVP target
https://www.figma.com/file/38K3J7yZD2KR9dfyci626J/Scuffle-Design

Types of changes

  • Bugfix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Documentation Update (if none of the other choices apply)

Checklist

  • I have read the CONTRIBUTING doc
  • Lint and unit tests pass locally with my changes
  • I have added tests that prove my fix is effective or that my feature works
  • I have added necessary documentation (if appropriate)
  • Any dependent changes have been merged and published in downstream modules

Further comments

@TroyKomodo TroyKomodo force-pushed the feature/website branch 2 times, most recently from fa5418c to 2ad0bfe Compare August 24, 2023 22:09
@TroyKomodo TroyKomodo changed the title Complete the website Initial Launch v1.0.0 Aug 24, 2023
fix(webite): fix some css (#111)

* fix: side bar in firefox

The side bar was buggy in firefox before
because the avatar width wasn't limited

* fix: some spacing issues

Fix some spacing issues in the stream preview

* fix(website): spelling

Fix spelling of "Log in"

fix(website): add sidenav animation

Add side-nav animation and cleanup code

fix(website): make topnav a flexbox

Convert topnav from grid to flex

feat(website): improve search bar

Improve search bar by making the icon a button and adding a form

fix(website): clean up topnav css

Clean up topnav css by using flexbox features
instead of hardcoded width and height values.
This also makes it more responsive.

feat(website): add show more button

Add show more button after stream previews and clean up some more css

feat(website): category cards

Add category cards to home page
* feat: video refactor

* fix: removals

* fix: build

* fix: reformat
TroyKomodo and others added 23 commits September 25, 2023 00:26
This commit aims to complete edge, transcoder, ingest and other video
libs.

The remaining work is left on video api.

This is being merged prior to video api being complete due to the
addition of the dataloader in the common crate which will provide use to
the platform api work.
feat: unfinished mess

feat: new permission system

fix(api): remove grpc

feat(api): rework authentication system

feat(api): implement gql auth endpoints

feat(api): reimplement missing gql endpoints

chore: fmt

fix(api): make clippy happy

feat(api): add better color types

fix(api): rename GqlUlid type

feat(api): add is_gray to color

feat: default to cloudflare tunrstile testing keys

https://developers.cloudflare.com/turnstile/reference/testing/

fix(website): use new gql endpoints

feat(api): switch from redis to nats

fix(website): wrap body in div

fix(api): chat messages with nats

feat(website): show in chat when disconnected

fix(api): last_login_at

No longer updates last_login_at when logging in with token

feat(wesbite): add custom default avatar

fix(website): drop-down

fix(website): register

fix(website): drop-down

fix(website): make default avatar a svg

chore: format

feat(api): add enpoint to change name and color

feat(website): gray default avatar

feat(website): add settings scaffold

feat(website): add settings pages

fix(website): wrong import

chore: format

feat(website): add profile settings

fix(website): player spinner

fix(website): fix sections

feat(website): improve profile settings

feat(website): add transition to default avatar

fix(website): settings header wraps

fix(website): remove useless page wrapper

fix(website): improve settings accessabilty

chore: format

feat(website): big authentication refactor

now uses cookies instead of localstorage

fix(website): authentication issues

feat(api): add sub endpoint for display color

chore: format

fix(website): remove duplicated lines

feat(website): convert into SPA

feat(website): loading animation

feat(website): sub to display name, color changes

chore: format

fix(website): some cleanup

fix(website): side nav overflow

feat(website): add icons to drop down

feat(website): show user info on profile page

fix(website): dropdown z-index

fix(website): clicking user links

chore: add todo

refactor(api): restructure gql endpoints

feat(api): add follow mutation and remove uuid

fix(website): icon sizes

feat: implement following

fix(website): title

feat: user page

feat(api): add more nats events

feat(api): add endpoint for user follows

chore: fmt

feat: implement follow subscription

feat(api): add channel follows endpoint

feat(website): add category page

fix(website): various stuff

feat(website): add offline user page

feat: categories

fix(website): clean up profile settings

chore: format

feat(website): add more tabs

feat: add links

fix(website): link rendering

feat: add follower count

feat: add auth to channel follow endpoints

feat: follow and subscribe buttons on offline page

chore: format

feat: improve offline page looks

feat(website): add support for brand icons

feat(website): improve brand icon

feat(website): add stream preview placeholder

feat(website): improve category slider

fix(website): categories mock data

fix(website): improve slider

chore: format

fix(website): max-width

fix(website): follow and subscribe buttons

feat(api): add endpoint to query followed users

feat: following in side nav

chore: cleanup and formatting

feat(website): nice background gradient animation

fix(website): gradient catching pointer events

feat(website): side nav loading animation

chore(website): format

fix(website): improve checking if user online

Thanks ChatGPT

fix(website): improve authentication logic

fix(api): return proper gql error when auth fails

fix(webiste): mock data

fix(api): following query

feat(api): add limit to following query

feat(website): implement following limit

fix: small design tweaks

feat(api): user following subscription

fix(website): streamer card

chore(api): format

chore(website): format

feat(api): add search by username endpoint

fix(api): set similarity threshold

feat(website): implement basic search bar

feat(website): finish search design

feat(website): improve quick search results

feat(website): search results styling

feat(website): improve search bar results

fix(api): user search query

feat(api): search categories by name

feat(api): add categories search endpoint

feat(website): add categories to search results

feat(website): add search results page

fix(website): use ws not only for subscriptions

feat(website): directly navigate on exact match

feat(website): improve search

docs(website): add todo file

fix(website): replace code with event modifiers

fix(website): use more svelte directives

chore: format

chore(website): replace login mode value with enum

chore(website): improve auth dialog

chore(website): rename login dialog

chore(website): remove turnstile test page

chore(website): cleanup format strings

chore(website): update todo

chore(website): format

chore(website): remove default readme

chore(website): update todo

feat(website): show auth dialog when not logged in

in settings

chore: format

feat(website): add leak warning

chore: format

chore(website): refactor settings

feat(website): leave settings without saving

Add highlight to status bar

feat(website): finish account settings

feat(api): add change email endpoint

feat(api): add 2fa enable endpoint
This commit migrates to the new dataloaders and also takes the work to
move the old db struct style to the new style. Syncing with the video
side.

Remaining work would be to update the protobuf files for events to stop
using strings and make use of the Ulid proto.
Improve error handling by using thiserror enums and removing anyhow.

Closes #127
This commit aims to improve the design documents and contribution
documents for Scuffle. Previously the documentation was quite dated or
immature. I have also included diagrams as SVGs so that they can be easily
edited and tracked.
Implements 2-Factor-Authentication including all required changes to the
database, api endpoints, login flow and frontend settings.
Removes the unsafe code around cache upcasting by introducing traited
functions `as_ref` and `as_mut` on the AutoImplCacheRef trait. Also no
longer requires the `unsafe` attribute.
Implements async_graphql's input validation.
Implements a auth guard to reduce code duplication.
Fixes some minor design problems on front page.
Shows dev banner when server runs in dev mode.
Adds change password button in account settings and endpoint.
Refactors Field component.
RateLimiter is a redis lua script used to prevent bad actors from
spamming API endpoints. This commit implements the interfact to
communicate with the redis. Future commits will implement the
ratelimiter on endpoints.
This commit switches to using rustls over openssl.
Unfortunately, rust-jwt needs openssl for the PKeyVerify impl, so we
also forked their repo to add support for openssl-vendored which means
that it will be staticly linked rather than a system-dep. This feature
is only used by video-edge and lto-fat purges it from all other
binaries.
Make 2fa more flexible by adding 2fa requests
that the server can send to ask the client to
verify by providing the current 2fa code to a
separate endpoint.
The reason behind this is because we ideally should be able to provide a
single binary to launch the entire system. This also reduces the
code duplication across the binaries.

This PR also introduces changes made to
async-graphql/async-graphql#1424 on the
platform-api. We introduced generics into async-graphql unions so that
we can make use of our generic global approach.

This PR also introduced a #[config(flatten)] directive which allows for
config substructs to be flattened into the parent.
This commit reformats all existing code and SQL queries.
TroyKomodo and others added 11 commits January 13, 2024 17:15
…or (#188)

Allow for the input path to be an http url which the image processor
will fetch when processing the image.
This pr implements website support for profile pictures. Including displaying and subscribing to changes and the ability to upload and remove profile pictures in the settings. It shows profile pictures in a responsive and accessible way.
Fix a bug introduced in the latest release of nightly clippy. Clippy
believes that the `.as_ref()` is redundant here but it is not. What it
proposes is to use a `.clone()` since `.as_ref().map(..)` followed by a
clone in the `.map(..)` is "the same as" `.clone()` however the bug is the fact
we are mapping to a different value and then cloning, without mapping we
would be cloning the full struct, rather than only the part we want.
* fix: tracing version

We have been using the wrong tracing version in our binaries which
caused a slight issue with tracing instrament. This fixes that issue.

* fix: ffmpeg out of bounds write

Ffmpeg sws_scalar needs alignment when converting from YUV to RGB
otherwise it causes an out of bounds write and heap corruption.
This bug was reported to OBS, and they provided a solution.
obsproject/obs-studio@3b11e17

---------

Co-authored-by: Lennart Kloock <lennart.kloock@protonmail.com>
this commit removes all the github patch deps except for the last 
3 which have been PR'd onto the upstream and are expected to merge
later this week.

- removes the need for opencv as we switch to a pure rust impl.
- switches away from rust-s3 to official aws-sdk-s3
Remove SQLx in favor of tokio-postgres.
SQLx has had many issues. From the poor design of the query engine to
issues with transcations and deserializing. The idea of compile time
queries is pretty good but the SQLx implementation is just very sub par.
Most features are not supported.

---------

Co-authored-by: Lennart Kloock <lennart.kloock@protonmail.com>
Implements about page like designed on Figma. It's a simple page that tries to explain what Scuffle is.
This fixes a phrase on the about page.
Fixes search queries. I forgot to test them when reviewing the sqlx refactor pr.
This fixes some minor bugs on the website.
*switch fred to mainstream from git
*patch vite cve
TroyKomodo and others added 9 commits January 20, 2024 12:33
This commit adds the support for fetching images from IGDB and saving them to the database, 
to be loaded as categories. it also makes the image-processor to resize and encode the images for us.
Use the upstream async-graphql after PR merge
This fixes the title bug (#194) and sets the svelte `prerender` option for the about page.
Published crates to crates.io

`scuffle-config`
`scuffle-utils`
Adds documentation about how to setup a developer environment
The reason for this change is that we want to license all library code
under MIT or Apache 2.0 and then license ScuffleVideo as BSL-1.0.
The BSL-1.0 License will convert to Apache 2.0 after 4 years. The BSL
license allows for anyone to use the software baring the fact that they
are not running a managed service of Scuffle Video to sell that to 3rd
parties.
TroyKomodo and others added 6 commits February 26, 2024 08:38
Extend the router to support `express.js` style middlewares.
Where we get given a next function to call and then handle subsequent
errors.
* fix: database and route utils

* fix: seal impl

* fix: undo seal

* fix: require send + sync

* fix: format

* fix: ci

* fix: compile

* fix: git safe dir

* fix: eslint
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants