Code Monkey home page Code Monkey logo

chatoverflow's People

Contributors

daullmer avatar derniklaas avatar hlxid avatar j0b10 avatar justgerd avatar melanx avatar promasu avatar rad4day avatar renxiem avatar sebinside avatar stewue avatar strifel avatar uncoded-namer avatar

Stargazers

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

Watchers

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

chatoverflow's Issues

Can't set credentials

Description

When I try to add an entry to a credential, the GUI gives me the following Error:
image

How to reproduce

  1. Create a credentials object
  2. Try to add an entry

Error Log

No Error Log

Saving does not work.

I added an instance and then tried to save it with the "save" command.

save
282703 21:00:55.359 [main] INFO configuration.CredentialsService - Found 1 credential objects to save.
282724 21:00:55.380 [main] ERROR configuration.CredentialsService - Unable to save credentials. An exception occurred: config\credentials (Das System kann den angegebenen Pfad nicht finden)
282724 21:00:55.380 [main] INFO configuration.ConfigurationService - Started saving current configuration.
282730 21:00:55.386 [main] ERROR configuration.ConfigurationService - Unable to save configuration. Exception thrown: config\config.xml (Das System kann den angegebenen Pfad nicht finden)
282730 21:00:55.386 [main] INFO chatoverflow.ChatOverflow - Saving took 28 ms.

Update gui license

The gui is originally licensed under MIT. Should be checked if the relicensing under EPL is possible and then the new license should be added.

Add more parameter types

Right now, only string parameters are available.

Other parameter types would be numbers, lists/array, key-value-pairs, ...

Rework plugin structure

Since the beginning of version 2 of chat overflow, plugins are identified by a pluggable holding all metadata and a plugin class, holding the execution information and requirements.

This should be reworked. Pluggable should not be needed and replaced by a metadata file in the plugin jars resources. The class loader and framework could has to be updated.

Add the new GUI

After the great success of the "Better REPL"-GUI a real, full-size GUI should be developed.

Hosting output

To enable simple web overlays, e.g. for OBS Studio, a HTML overlay output is needed. The communication should be easy through a generated rest interface or websocket. The output should be hosted from the framework web service itself.

Loopback input/output

To improve the scalability of the plugin development, we need a possibility to connect in- and output of different plugins. This could be achieved using a loopback connector, which connects the output of one plugin to the input of another plugin.

Advanced feature, though.

Last steps until pre-alpha release 2

Description

We are nearly feature-finished, but there is still some last steps left, until we can push the release.

  • Write proper release notes
  • Move relevant branches to a new layout then delete all other branches
  • Write new README.md
  • Test Twitch Chat, Discord Chat and Tipeeestream in 100+ viewer stream
  • Change API major from 1 -> 2
  • Push release!
  • Create new branch develop containing all new features for pre-alpha 3. Increment all version numbers (API major 2 -> 3, framework 0.2 -> 0.3, rest-api-version 1.0 -> 0.3, npm 0.2.5 -> 0.3.0, gui package version 1.0.0 -> 0.3.0)

Fix plugin loop not beeing a real loop

The loop()-function is not a real looping function. It assumes that the execution of the work inside the loop-function takes 0ms to execute, which is not realistic.

Instead, the execution time of the loop method should be mesured and the sleep time calculated. If the execution time is greater than the loop interval, the thread should not be set asleep.

See:

Auto generate methods to register event handlers

Description

For easier use every Event Input should have an individual method that registers an handler for each Event. This method should be defined in the input as default method and should call the more generic registerEventHandler().

To save some time and prevent repetative work there should be an sbt task to auto generate these methods.

References

#36 - Rework stat and event input in the API

Custom plugin GUI

Plugins should have the possibility to display their own gui to the user. This does not mean stream overlays but rather options and forms for the user to configure the plugins behaviour.

Add sample and testing plugins

There are several sample plugins to add to the public-plugins repo:

  • A all-optional testing plugin to test several connectors, developed by @joblo2213

  • A simple placeholder plugin for testing purposes

  • Existing plugins should be removed

Disable GUI caching

Description

Right now, the GUI may be cached due to the lack of cache-control.

How to reproduce

Just change something in the gui and wonder why sbt gui does not refresh your version. It does. Your browser may not.

Remove MockupChat

Right now, the MockupChatConnector and Input are completely wrecked. The code was copied from an way earlier version of chat overflow and lack at every point.

A completely new implementation for the new framework is needed, only the parsing might be the same. Also MockupChatOutput etc. should be added.

See: https://github.com/codeoverflow-org/chatoverflow/blob/4e40b6d12f91f24b7d346f993c17a2f8e438d657/src/main/scala/org/codeoverflow/chatoverflow/requirement/service/mockup/MockUpChatConnector.scala

Add Tipeeestream stat input

Description

Support for tipeeestream stats. It should be possible to retrive:

  • Recent subscriptions, follows , donations and cheers
  • Total subscriptions, follows, donations and cheers
  • Total follows & subscriptions per service (twitch/youtube/...)

References

https://api.tipeeestream.com/api-doc/events
Issue #43 - Add Tipeeestream platform support

Add connector metadata

To help the user while adding / filling new connectors (aka plattform connections) in the new GUI, connectors should encapsulate more metadata, e.g. by using traits. Helpful would be display name, description and display icon / symbol.

Progress:

  • Update REST API
  • Rework styling
  • Move api type string stuff to requirements card
  • Add metadata display to connectors
  • Add edit button to connector types
  • Add edit button to plugin types
  • Add more details button to connectors to display credentials
  • Add (small) edit button for each credential key
  • Try to declutter everything

Enhance framework and plugin testability

Right now, the framework, its connectors and all plugins can not be tested automaticaly, e.g. trough unit tests. This is a major drawback and should be discussed for future versions.

Resolve TODOs in the serial connector

There are TODOs left in the SerialConnector.

This could crash:

serialPort.get.readBytes(buffer, buffer.length) //FIXME DOES IT CRASH?

The start method might need an actor:

This should be best resolved by @joblo2213.

Fix / Implement TwitchAPIConnector

The TwitchAPIConnector, also known as PubSub, is totaly broken in the moment. It was cherry picked from the pre pre-alpha 1 release code and should be completly beeing reworked.

This is already in the making by @Renxiem.

Enable proper shutdown functionality

There is no possibility to shutdown the framework correctly. Only rude killing is possible. The exit functionality should first try to stop plugins and connectors (and the server) and then end the framework process.

See:

and also:

RCON Connector

Description

A connector that allows remote control of services & games by using the Source RCON Protocol, especially executing commands inside minecraft and receiving the response.

This would allow triggering actions ingame from the codeoverflow framework, but is limited to executing the commands and receiving the responses.
It wouldn't allow getting the ingame chat or the console output.
Furthermore reacting to ingame commands is also not possible.

References

Documentation of the protocol (valve): https://developer.valvesoftware.com/wiki/Source_RCON_Protocol

Documentation of the protocol (minecraft): https://wiki.vg/RCON

Possible library: https://github.com/Kronos666/rkon-core

Add bash scripts for framework setup

Description

As mentioned from Gerd, there should be bash / bat scripts for windows, mac os and unix to setup the development environment.

First, it should be tested if sbt, git and npm are installed. Then, all steps from the setup guide should be emulated, including the sbt commands. This would leave a ready-to-open project for IntelliJ.

TODOs:

  • install script for bash (*nix systems)
  • bat install script for windows
  • Support for a --dev-option to check out the develop branch directly
  • Discuss, if executing the steps from the [Advanced]-run is an additional / good idea
  • Update the wiki

References

Setup guide: https://github.com/codeoverflow-org/chatoverflow/wiki/Installation
Setup repository: https://github.com/codeoverflow-org/chatoverflow-setup

Enhance documentation

The readme.md and wiki (incl. installation) should be updated to match the current behaviour of the software.

Additional information about connectors, actors, etc. would also be great!

DiscordConnector irregularly throws AccessControlExceptions

Description

During tests I now encountered an AccessControlException multiple times.
Often (but not allways) the first thing throwing the exception is one of JDAs RateLimit-Workers.
I suspect that it has some problems with the SandboxSecurityManager but I couldn't figure out till now what is actually causing it.

As I tried debugging it completly disappeared and till now didn't occur again.
We even did some heavy spaming with the badge bot to provoke some errors, but everything was working fine again.

Stack trace

8483295 15:47:25.857 [ForkJoinPool.commonPool-worker-8] WARN  discord.DiscordChatConnector  - Rest action for connector badge bot failed: -1: java.security.AccessControlException
8586147 15:49:08.709 [JDA MainWS-ReadThread] INFO  manager.PluginManagerImpl  - [badges] Created sub badge for Shatox, saved it under subbadgetemp/Shatox _1.png
8586148 15:49:08.710 [JDA RateLimit-Worker 5] ERROR requests.Requester  - There was an exception while executing a REST request
java.security.AccessControlException: access denied ("java.net.SocketPermission" "discordapp.com" "resolve")
	at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
	at java.security.AccessController.checkPermission(AccessController.java:884)
	at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
	at java.lang.SecurityManager.checkConnect(SecurityManager.java:1048)
	at java.net.InetAddress.getAllByName0(InetAddress.java:1269)
	at java.net.InetAddress.getAllByName(InetAddress.java:1193)
	at java.net.InetAddress.getAllByName(InetAddress.java:1127)
	at okhttp3.Dns.lambda$static$0(Dns.java:39)
	at okhttp3.internal.connection.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:185)
	at okhttp3.internal.connection.RouteSelector.nextProxy(RouteSelector.java:149)
	at okhttp3.internal.connection.RouteSelector.next(RouteSelector.java:84)
	at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:214)
	at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:135)
	at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:114)
	at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
	at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:94)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
	at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
	at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:125)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
	at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:264)
	at okhttp3.RealCall.execute(RealCall.java:93)
	at net.dv8tion.jda.core.requests.Requester.execute(Requester.java:191)
	at net.dv8tion.jda.core.requests.Requester.execute(Requester.java:133)
	at net.dv8tion.jda.core.requests.Requester.execute(Requester.java:116)
	at net.dv8tion.jda.core.requests.ratelimit.BotRateLimiter$Bucket.run(BotRateLimiter.java:350)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)

Delete REPL, update CLI

After the introduction of the "Better REPL"-GUI, the REPL is history.

Delete REPL, update the CLI and move the plugin start after the server start for security reasons.
Also fixup the path layout of the repl parameters to match with the data path.

After this, update the wiki entry about cli & repl.

Add delete button for plugin requirements to BetterREPL

The better REPL should have a button to remove previously created requirements.

Currently the only way of removing them is editing the config file manually which is especally annoying when working with the testall plugin.

Add ping/pong to the gui

Description

The GUI should check periodicly if the Server is still available with the current key and if not, invalidate itself.

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.