Giter Site home page Giter Site logo

casterlabs / caffeinated Goto Github PK

View Code? Open in Web Editor NEW
16.0 16.0 0.0 83.92 MB

The code for Caffeinated.

Home Page: https://casterlabs.co?ref=github_caffeinated

Java 46.92% HTML 4.02% JavaScript 25.14% Shell 0.51% Svelte 18.96% CSS 4.32% Batchfile 0.13%
java kaimen sdk svelte twitch youtube

caffeinated's Introduction

caffeinated's People

Contributors

dependabot[bot] avatar e3ndr avatar starcaim avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

caffeinated's Issues

Incorrect Category Value Passes to Streaming Platforms When Updating Channel Info

Hi,

I've noticed this in all releases of Caffeinated, including the most recent, which I am running. I am running Caffeinated on Windows 11 with Kick and Twitch linked. I select the Category/Game for the stream but an incorrect category appears on both streaming platforms.

I have double-checked that I am clicking/selecting the correct game from the search results.

How to Reproduce the Issue

  • Select the Channel Info box in the Casterlabs Caffeinated Dashboard
  • Populate the stream title information for the streaming platform
  • Search for and select Among Us as the category
  • Click the Update button
  • Go to the streaming platform you updated
  • The category selected on the stream platform is The Wolf Among Us

This happens for both Twitch and Kick. I have tried it multiple times, and make sure that I have selected Among Us as the Category in Casterlabs Caffeinated. I have tried this in every release I've used to date and had the same result

Giveaway system

Many streamers want the ability to give away items to their viewers. Platforms like Gleam have the best experience, where people can enter the giveaway by doing things (e.g following an account) and can enter multiple times that way.

Widget Editor UI does not incrementally re-render

During onSettingsUpdate, a widget may choose to reconstruct the settings layout (e.g add another input based on a checkbox). This causes the Widget Editor UI to completely re-render rather than just re-rendering the changes, causing fields to lose focus and for the app to hitch for up to 1 second.

Improvements to the command system.

As suggested by some people:

  • The ability to limit a command to certain roles (MODERATOR, SUBSCRIBER, etc).
  • General UI improvments.
    • The list is cumbersome, we need to find a better way of displaying that.
  • Move the chatbot stuff from flatfile to the database.
  • Unify Shouts and Commands.
  • Better typings for events.
  • A reward points currency system for cool commands.
  • Better default commands, maybe a marketplace so you can share your own?

A "question" widget.

Basically this'd have a dashboard piece that would allow you to highlight questions on-screen and answer them.

Activity Feed settings not loading properly

The settings for the following within the Activity Feed aren't loading properly:

  • Show timestamps
  • Show the user's pronouns
  • Use alternating message backgrounds

The settings for following within the Activity Feed aren't saving or loading properly:

  • Text Size

Checking ui.json shows that the settings do get saved after changing them (aside from Text Size; noted below). However, attempting to switch to another tab and then back to the Dashboard, shows that the settings aren't loading in properly and behave as if they are at their default values. Attempting to change any of the settings through the settings menu then results in the aforementioned settings being reset in ui.json.

Changing the values manually through ui.json, then opening Caffeinated results in the same behavior.

Text Size specifically isn't getting saved in ui.json even when changed through the settings menu. Otherwise, the behavior is the same as the other 3 settings.

Properly paginate the chat dock.

Right now, even the fixed limit of 500 is taxxing on the renderer. Let's just move it to a pagination system and only show a few (<100) at a time.

Better Twitch integration.

There's a lot of features being left on the table here. Channel points, Polls, Predictions, etc. Let's try to bring those into Caffeinated some how.

Touch portal integration

Originally suggested by Demon3r_ on Discord:

Touch Portal is a phone app/desktop app that I use as a stream deck. It has a nice dev team behind it and plenty of people that help out, was wondering if it was possible to work with TP to integrate the two apps together.

Improved Font Loader / Support for Local Fonts

Not all system fonts and font weights are supported at the moment for things like Labels and Alerts, While Google Fonts work perfectly fine the Local fonts struggle with loading in or the font weight is not the desired one and there is no setting to change it as of now.

Example 1: The Label with a Google Font works flawlessly, albeit can't adjust the font weight but something is better than nothing
image

Example 2: The Label with a Locally Installed Font works flawlessly but no font weight options. and does not appear in the search box unlike with google fonts.
image

The Font name on Windows
image

Example 3: The Label with a Locally Installed Font same type as the previous one, does not work
image

Add Support for custom CSS for Widgets and Alerts

Allow users to optionally stylize their own layouts using CSS for more customization.

Currently, with the way Caffeinated handles adding to OBS, it adds the Widgets using iframes that you can't add CSS to.

Allowing CSS either through OBS or directly through Caffeinated, for Chat specifically, would help a lot in making it fit better on their stream layouts. And maybe it can be extended to the other Widgets and Alerts.

Doesn't launch on Linux

When downloading the caffeinated app from casterlabs.co for linux, the program launches for a bit and says "Launching Caffeinated.." then crashes with no helpful output from the terminal. However, below is what I got from launching the program in the terminal. Maybe I could help fix this somehow and/or help test if it works. Please let me know or help fix this! :)

App Directory: /home/peli/.local/share/casterlabs-caffeinated
Log file: /home/peli/.local/share/casterlabs-caffeinated/logs/updater.log
Chosen Streamer: template
App isn't responding (or isn't open), attempting to kill it.
IPC communication timed out.
You are up to date!
Updater CommandLine: ./Casterlabs-Caffeinated-Updater
 > System.out.println("Hello World!");
Hello World!


[INFO  ] [Bootstrap] App has been started by the updater, cool beans.
[INFO  ] [CaffeinatedApp] 
[INFO  ] [CaffeinatedApp] 
[INFO  ] [CaffeinatedApp] ---------- 2023-11-26T05:59:51.299141Z ----------
[INFO  ] [CaffeinatedApp] Log file: /home/peli/.local/share/casterlabs-caffeinated/logs/app.log
[INFO  ] [Bootstrap] Starting app.
[INFO  ] [EmojiIndex] Loading emoji index...
[INFO  ] [SystemFontsProvider] Loading System fonts.
[INFO  ] [InstanceManager] IPC (HOST): SUMMON
[WARN  ] [_LocaleLoader] Unable to find locale provider for: en-US
[INFO  ] [Bootstrap] Entry                        | Value
[INFO  ] [Bootstrap] -----------------------------+-------------------------
[INFO  ] [Bootstrap] buildInfo.versionString      | 1.2-a69e346-stable
[INFO  ] [Bootstrap] buildInfo.author             | Casterlabs
[INFO  ] [Bootstrap] buildInfo.isDev              | false
[INFO  ] [Bootstrap] platform.arch                | x86_64
[INFO  ] [Bootstrap] platform.osFamily            | Unix
[INFO  ] [Bootstrap] platform.osDistribution      | Linux
[INFO  ] [Bootstrap] bootstrap.args               | null
[INFO  ] [Bootstrap] 
[INFO  ] [SoraFramework] Loaded plugin Caffeinated Conductor (LocalServer):Casterlabs (co.casterlabs.caffeinated.conductor)
[INFO  ] [GoogleFontsProvider] Loading GoogleFonts.
[INFO  ] [LocalServer] Started!
[INFO  ] [Bootstrap] Initializing UI (this may take some time)
[INFO  ] [Bootstrap] Starting the UI
UI Started!

Twitch Point Redeems With Global Cooldowns Not Appearing

When a user redeems a reward with a Global cooldown (In Twitch: "Redemption Cooldown Time"), it does not appear in Caffeinated's Activity Feed.

Here are the lines from App.log (with ids and names censored)

[WARN  ] [AuthInstance Koi (twitch)] Unsupported event type: CHANNEL_POINTS
[SEVERE] [KoiConnection.KoiSocket] {"event":{"reward":{"global_cooldown":{"is_enabled":true,"global_cooldown_seconds":120},"cost":100,"cooldown_expires_at":"2024-02-06T21:21:18Z","title":"Apple Juice (Hydrate)!","is_enabled":true,"is_in_stock":false,"default_reward_image":"https://static-cdn.jtvnw.net/custom-reward-images/default-4.png","background_color":"#FF0000","max_per_user_per_stream":{"is_enabled":false,"max_per_user_per_stream":0},"is_paused":false,"is_user_input_required":false,"reward_image":"https://static-cdn.jtvnw.net/custom-reward-images/########/30c96e0d-21b4-4f2e-aa58-cbf2c48d942b/ca963ee2-0c51-4ab0-ae59-f5fd5ea933a6/custom-4.png","max_per_stream":{"is_enabled":false,"max_per_stream":0},"is_sub_only":false,"id":"30c96e0d-21b4-4f2e-aa58-cbf2c48d942b","prompt":"Apple Juice Superiority "},"streamer":{"id":"########","channel_id":"########","platform":"TWITCH","UPID":"########;TWITCH"},"sender":{"badges":[],"image_link":"https://static-cdn.jtvnw.net/link/link/link/link","color":"#3EFFFF","subscriber_count":-1,"roles":[],"displayname":"USERNAME","followers_count":-1,"bio":"Welcome to the Beautiful Wave Digital Resort! I am the host for your stay, USERNAME. Please take up a cup of Apple/Orange juice, sit back, and relax. \u7f8e\u6ce2\u30c7\u30b8\u30bf\u30eb\u30ea\u30be\u30fc\u30c8\u3078\u3088\u3046\u3053\u305d\uff01\u3042\u306a\u305f\u306e\u30db\u30b9\u30c8\u3067\u7f8e\u6ce2\u30c1\u30de\u30fc\u3068\u7533\u3057\u307e\u3059\u3002\u30aa\u30ec\u30f3\u30b8\u30b8\u30e5\u30fc\u30b9\uff0f\u30ea\u30f3\u30b4\u30b8\u30e5\u30fc\u30b9\u3092\u53d6\u3063\u3066\u30ea\u30e9\u30c3\u30af\u30b9\u3057\u3066\u304a\u9858\u3044\u3057\u307e\u3059\u3002","id":"########","channel_id":"########","platform":"TWITCH","username":"USERNAME","UPID":"########;TWITCH","link":"https://twitch.tv/USERNAME"},"id":"chat:71138a4c-e941-4974-9fc2-a424361bb114","message":null,"status":"UNFULFILLED","timestamp":"2024-02-06T21:19:18.706671280Z","event_type":"CHANNEL_POINTS","event_abilities":{"upvotable":false,"deletable":false}},"type":"EVENT"}
[SEVERE] [AuthInstance (-#########) ?] java.lang.NullPointerException: event is marked non-null but is null
[SEVERE] [AuthInstance (-#########) ?] 	at co.casterlabs.koi.api.listener.KoiEventUtil.reflectInvoke(KoiEventUtil.java:11)
[SEVERE] [AuthInstance (-#########) ?] 	at co.casterlabs.koi.api.KoiConnection$KoiSocket.onMessage(KoiConnection.java:207)
[SEVERE] [AuthInstance (-#########) ?] 	at org.java_websocket.client.WebSocketClient.onWebsocketMessage(WebSocketClient.java:636)
[SEVERE] [AuthInstance (-#########) ?] 	at org.java_websocket.drafts.Draft_6455.processFrameText(Draft_6455.java:986)
[SEVERE] [AuthInstance (-#########) ?] 	at org.java_websocket.drafts.Draft_6455.processFrame(Draft_6455.java:910)
[SEVERE] [AuthInstance (-#########) ?] 	at org.java_websocket.WebSocketImpl.decodeFrames(WebSocketImpl.java:401)
[SEVERE] [AuthInstance (-#########) ?] 	at org.java_websocket.WebSocketImpl.decode(WebSocketImpl.java:233)
[SEVERE] [AuthInstance (-#########) ?] 	at org.java_websocket.client.WebSocketClient.run(WebSocketClient.java:516)
[SEVERE] [AuthInstance (-#########) ?] 	at java.base/java.lang.Thread.run(Unknown Source)

Note: May also want to test for Max Per Stream (In Twitch: "Limit Redemptions Per Stream") and Max Per User Per Stream (In Twitch: "Limit Redemptions Per User Per Stream")

Add Counters to the Dashboard

YouTube
image

Twitch
image

Kick
image

A common feature across the Twitch/YouTube/Kick Dashboard are the live counters like Subs/Likes/Members/Viewers/Followers, along with essential ones like Total Live viewers, now some of these are visible on the Dashboard like the Viewer List shows the total viewers but this could be minimized into a Quick Glanceable Dock on the dashboard, with modular options to choose to what to Display at the counters and separate them by platform or if the user wants to have them merged into one. (For example, Twitch and YouTube subs as 1 merged total sub counter or 2 counters, one for each platform)

maybe even add API status indicators to these for us geeks who just want to monitor these things right from the app. to know if something is down or under maintenance. or if everything is functioning perfectly and I'm just streaming to 0 viewers on 5 platforms. with a deserted chat and viewer list and that no service is at fault.

Fix Twitch chat commands.

Twitch removed the ability for bots to execute commands via IRC, we need to add a middleware to do them via the API instead.

Can't Connect With Twitch

Attempting to connect initially with Twitch results in an infinite loading screen.

image

When checking \AppData\Roaming\casterlabs-caffeinated\preferences\auth.json , the token is saved.

image

Connecting with YouTube works, but trying to connect to Twitch afterward still results in infinite loading.

image

Checking app.log shows constant disconnects and reconnects to Twitch.

image

Again, checking auth.json , the token is again saved.

image

Uninstalling, deleting any extra files, and then reinstalling does not help. I also tried restarting the computer after deleting the files.

Ability for the chatbot to play TTS

!tts commands are a fun way to get viewers interacting with the stream more and help with engagement rates. Many streamers will probably tie this into their loyalty points.

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.