Nothing current (~ ̄▽ ̄)~
sonder-joker / mirai-compose Goto Github PK
View Code? Open in Web Editor NEWmirai-console的跨平台桌面端
mirai-console的跨平台桌面端
机器人监听群消息,如果短时间内(1s)有多个消息(无论是不是来着多个用户)这个时候可能就拥挤了,然后客户端相当于假死 log界面还能输出 但插件已经全部被停止运行了,这个时候只能重新启动客户端
在寻找原因
最大化后的窗口拖动速度异常
最大化窗口后并向下拖动窗口,预期窗口将恢复原本大小并随鼠标拖动,实际窗口未恢复原本大小,拖动速度异常
复现步骤(触发条件)
环境信息
Windows11
在鼠标点击颜色后,点击取色器的开关按钮,有概率颜色变了。重复多次点击按钮大概率会变颜色
现在的画这个颜色区域的方法是不是太暴力了,打开有明显的卡顿(特别是多开几个,几乎看不到过度动画了)。
添加更好看的加载动画
应当给予用户以能力实时(不退出)修改所有的颜色,包括主题、日志等
增加新版块可以动态切换下载mirai版本
Caused by: java.lang.IllegalArgumentException: Cannot coerce value to an empty range: maximum -1 is less than minimum 0.
疑为Compose自身组件问题
本issue用于追踪本问题
您好,我想请问一下直接用Java运行报错如何解决
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.SecurityException: Invalid signature file digest for Manifest main attributes
at java.base/sun.security.util.SignatureFileVerifier.processImpl(SignatureFileVerifier.java:339)
at java.base/sun.security.util.SignatureFileVerifier.process(SignatureFileVerifier.java:281)
at java.base/java.util.jar.JarVerifier.processEntry(JarVerifier.java:277)
at java.base/java.util.jar.JarVerifier.update(JarVerifier.java:234)
at java.base/java.util.jar.JarFile.initializeVerifier(JarFile.java:763)
at java.base/java.util.jar.JarFile.ensureInitialization(JarFile.java:1034)
at java.base/java.util.jar.JavaUtilJarAccessImpl.ensureInitialization(JavaUtilJarAccessImpl.java:72)
at java.base/jdk.internal.loader.URLClassPath$JarLoader$2.getManifest(URLClassPath.java:873)
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:841)
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:753)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:676)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:634)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:182)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:466)
at java.base/sun.launcher.LauncherHelper.loadMainClass(LauncherHelper.java:780)
at java.base/sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:675)
Exception in thread "AWT-EventQueue-0" java.lang.ExceptionInInitializerError
at com.youngerhousea.miraicompose.ui.feature.MiraiComposeViewKt$MiraiComposeView$1.invoke(MiraiComposeView.kt:63)
at com.youngerhousea.miraicompose.ui.feature.MiraiComposeViewKt$MiraiComposeView$1.invoke(MiraiComposeView.kt:47)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:130)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:46)
at com.youngerhousea.miraicompose.future.FutureKt$Application$1$1$1.invoke(Future.kt:31)
at com.youngerhousea.miraicompose.future.FutureKt$Application$1$1$1.invoke(Future.kt:31)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:121)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:46)
at androidx.compose.runtime.RecomposeScopeImpl.compose(RecomposeScopeImpl.kt:91)
at androidx.compose.runtime.ComposerImpl.recomposeToGroupEnd(Composer.kt:2252)
at androidx.compose.runtime.ComposerImpl.skipCurrentGroup(Composer.kt:2499)
at androidx.compose.runtime.ComposerImpl.recompose$runtime(Composer.kt:2625)
at androidx.compose.runtime.CompositionImpl.recompose(Composition.kt:406)
at androidx.compose.runtime.Recomposer.performRecompose(Recomposer.kt:724)
at androidx.compose.runtime.Recomposer.access$performRecompose(Recomposer.kt:100)
at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$2.invoke(Recomposer.kt:437)
at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$2.invoke(Recomposer.kt:411)
at com.youngerhousea.miraicompose.future.ImmediateFrameClock.withFrameNanos(Future.kt:95)
at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2.invokeSuspend(Recomposer.kt:411)
at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2.invoke(Recomposer.kt)
at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2.invoke(Recomposer.kt)
at androidx.compose.runtime.Recomposer$recompositionRunner$2$2.invokeSuspend(Recomposer.kt:639)
at androidx.compose.runtime.Recomposer$recompositionRunner$2$2.invoke(Recomposer.kt)
at androidx.compose.runtime.Recomposer$recompositionRunner$2$2.invoke(Recomposer.kt)
at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:91)
at kotlinx.coroutines.CoroutineScopeKt.coroutineScope(CoroutineScope.kt:194)
at androidx.compose.runtime.Recomposer$recompositionRunner$2.invokeSuspend(Recomposer.kt:638)
at androidx.compose.runtime.Recomposer$recompositionRunner$2.invoke(Recomposer.kt)
at androidx.compose.runtime.Recomposer$recompositionRunner$2.invoke(Recomposer.kt)
at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:91)
at kotlinx.coroutines.BuildersKt__Builders_commonKt.withContext(Builders.common.kt:165)
at kotlinx.coroutines.BuildersKt.withContext(Unknown Source)
at androidx.compose.runtime.Recomposer.recompositionRunner(Recomposer.kt:611)
at androidx.compose.runtime.Recomposer.runRecomposeAndApplyChanges(Recomposer.kt:389)
at androidx.compose.runtime.RecomposerKt$withRunningRecomposer$2$1.invokeSuspend(Recomposer.kt:63)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:316)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: java.lang.IllegalArgumentException: Resource emptyIcon.png not found
at com.youngerhousea.miraicompose.theme.ResourceImageKt.loadImageResource(ResourceImage.kt:36)
at com.youngerhousea.miraicompose.theme.ResourceImage.<clinit>(ResourceImage.kt:15)
... 50 more
Bugs:
长按左上角添加机器人
在添加新机器人账号时会弹出报错
问题应该出自:NavHostView.kt:103
行
不过在103行中每句打上断点debug一遍后不再出现
登录后日志只输出Logging in... 然后就恢复unlogin状态不过没日志输出
应该是
这个地方catch了exception然后
这个地方就进入success
在第一个catch那刷新状态后继续throw exception
随便登录个账户密码(如111 111),并实现上一个bug的possible solution,就会得到个exception
不过该exception并不是登录错误,可能是登录模块实现上的错误
Suggestion:
更改登录下拉窗中的Exit
字段到Log out
以减少歧义
支持右键打开左上角登录下拉窗
在一开始没机器人的时候在Plugin界面显示长按左上角登录按钮以打开下拉框的提示
重组UI的位置,提高用户的体验
链接
https://fonts.google.com/icons
风格
Rounded
目前只有Log这个Tab里面有内容,可以有输入输出,我写的插件的输出都是在Log里面。想请问一下左侧Message Plugin Setting这三个Tab怎么用,是插件去实现吗?比如插件能否在Message添加内容、在Plugin相应插件的Data和Command添加内容、在Setting添加可视化的设置选项?没有找到相应文档。
以类似github action的形式来追踪mirai的版本更新并自动构建和release,分离前端与后端的版本
原文
https://mirai.mamoe.net/topic/215/mirai-compose-%E8%B7%A8%E5%B9%B3%E5%8F%B0%E5%9B%BE%E5%BD%A2%E5%8C%96%E7%9A%84mirai-console%E5%AE%A2%E6%88%B7%E7%AB%AF/12
预期行为
弹出滑块验证码地址复制并进入浏览器处理
实际行为
无法复制地址(通过ctrl+c)
版本
v0.1.0-dev1
推测原因
0.1.0-dev1还在使用mirai-login-solver-selenium插件(现在已经失效
或者0.1.0-dev1的compose还有一些unexpect的bug
复现
在master最新分支无法复现, 均报错(见#11 (comment)
在0.1.0-dev1中,滑块表现正常(为弹出一个chrome窗口进行滑块且自动关闭跳转回去),不过无法登录显示密码错误
手动方法暂未测试
@Zzz2333
目前的日志系统实现并不是很完善,需要进一步的修改,以及对于全局异常进行更加友好的提示
先提供swing支持
更友好的登录体验,让用户无需打开浏览器即可登录
都是上个月群里反馈过 来贴个issue 怕你忘了hhh
bug:
1.短时间收到消息过多造成假死,插件全无反应,疑似堵塞。
2.挂一天window会java内存不过(应该是这个意思如果不是我下次再复现一下) 用mcl一个星期都没这个问题
3.同样设置mcl的log会全一些,mps显示少了一些log,具体不知道怎么测试类型
建议todo:
1.建议利用文件夹,把不用的插件移动到另外的文件夹里面去(实现插件启用开关),提示重启生效,反正只会加载plugins的插件,软件列表实现个加载两个文件夹全部插件就好了。
2.你说的要做自重启!
目前的log不太友好,需要去除掉stacktrace
希望登陆时能指定登录协议登录
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.