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

[Bug] UI error #581

Closed
phlaster opened this issue Dec 7, 2024 · 4 comments
Closed

[Bug] UI error #581

phlaster opened this issue Dec 7, 2024 · 4 comments

Comments

@phlaster
Copy link

phlaster commented Dec 7, 2024

Checklist (Your issue will be automatically closed if you delete this part)

  • [ v ] I make sure that there are no existing issues - open or closed - which I could contribute my information to.
  • [ v ] I am able to reproduce the bug with the latest version.
  • [ v ] I have attached the error report in the issue.

Describe the bug
app crashes after attempt to play video

Steps to reproduce the bug
no specific traits, arbitrary video

Device
Redmi Note 8

Error report

Exception

  • User Action: ui error
  • Request: ACRA report
  • Content Country: FR
  • Content Language: fr
  • App Language: ru
  • Service: none
  • Version: 4.0.1
  • OS: Linux Android 11 - 30
Crash log

java.lang.NullPointerException: Attempt to invoke virtual method 'com.grack.nanojson.JsonObject com.grack.nanojson.JsonObject.getObject(java.lang.String)' on a null object reference
 at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.getVideoInfoRenderer(YoutubeStreamExtractor.java:1111)
 at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.getVideoPrimaryInfoRenderer(YoutubeStreamExtractor.java:1095)
 at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.getName(YoutubeStreamExtractor.java:121)
 at org.schabi.newpipe.extractor.stream.StreamInfo.extractImportantData(StreamInfo.java:120)
 at org.schabi.newpipe.extractor.stream.StreamInfo.getInfo(StreamInfo.java:87)
 at org.schabi.newpipe.extractor.stream.StreamInfo.getInfo(StreamInfo.java:79)
 at org.schabi.newpipe.util.ExtractorHelper.lambda$getStreamInfo$3(ExtractorHelper.java:127)
 at org.schabi.newpipe.util.ExtractorHelper.$r8$lambda$YTHJjScxCJNO1LTCqs3IKy35iyY(Unknown Source:0)
 at org.schabi.newpipe.util.ExtractorHelper$$ExternalSyntheticLambda5.call(Unknown Source:4)
 at io.reactivex.rxjava3.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:43)
 at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813)
 at io.reactivex.rxjava3.internal.operators.single.SingleDoOnSuccess.subscribeActual(SingleDoOnSuccess.java:35)
 at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813)
 at io.reactivex.rxjava3.internal.operators.maybe.MaybeFromSingle.subscribeActual(MaybeFromSingle.java:41)
 at io.reactivex.rxjava3.core.Maybe.subscribe(Maybe.java:5330)
 at io.reactivex.rxjava3.internal.operators.maybe.MaybeConcatArray$ConcatMaybeObserver.drain(MaybeConcatArray.java:153)
 at io.reactivex.rxjava3.internal.operators.maybe.MaybeConcatArray$ConcatMaybeObserver.request(MaybeConcatArray.java:78)
 at io.reactivex.rxjava3.internal.operators.flowable.FlowableElementAtMaybe$ElementAtSubscriber.onSubscribe(FlowableElementAtMaybe.java:66)
 at io.reactivex.rxjava3.internal.operators.maybe.MaybeConcatArray.subscribeActual(MaybeConcatArray.java:42)
 at io.reactivex.rxjava3.core.Flowable.subscribe(Flowable.java:15868)
 at io.reactivex.rxjava3.internal.operators.flowable.FlowableElementAtMaybe.subscribeActual(FlowableElementAtMaybe.java:36)
 at io.reactivex.rxjava3.core.Maybe.subscribe(Maybe.java:5330)
 at io.reactivex.rxjava3.internal.operators.maybe.MaybeToSingle.subscribeActual(MaybeToSingle.java:46)
 at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813)
 at io.reactivex.rxjava3.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
 at io.reactivex.rxjava3.core.Scheduler$DisposeTask.run(Scheduler.java:644)
 at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:65)
 at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:56)
 at java.util.concurrent.FutureTask.run(FutureTask.java:266)
 at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 at java.lang.Thread.run(Thread.java:923)

Additional context
i'm struggling with the playback since 4.0.0 and even more so since 4.0.1 was rolled, but don't want to add yet another issue as I can relate to the existing ones, that are open (very frustrated to the point, at which I have to watch some vids through my browser). Now happy to catch this NullPointerException.

Do not take my words personally. Before 4.0.0 I had very little complaints about the app. And i love new Backup meny option. Hope, this report is helpful.

@InfinityLoop1308
Copy link
Owner

Can you check if there is anything abnormal in your log? You can use logcat to record it.

@phlaster
Copy link
Author

phlaster commented Dec 8, 2024

I don't quite get it. I am not able to build an app in Android studio to logcat it. But I did run logcat in termux on my smartphone and recorded its output while PipePipe caught the same type of crash at 12:04:

Exception

  • User Action: ui error
  • Request: ACRA report
  • Content Country: FR
  • Content Language: fr
  • App Language: ru
  • Service: none
  • Version: 4.0.1
  • OS: Linux Android 11 - 30
Crash log

java.lang.NullPointerException: Attempt to invoke virtual method 'com.grack.nanojson.JsonObject com.grack.nanojson.JsonObject.getObject(java.lang.String)' on a null object reference
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.getVideoInfoRenderer(YoutubeStreamExtractor.java:1111)
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.getVideoPrimaryInfoRenderer(YoutubeStreamExtractor.java:1095)
	at org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor.getName(YoutubeStreamExtractor.java:121)
	at org.schabi.newpipe.extractor.stream.StreamInfo.extractImportantData(StreamInfo.java:120)
	at org.schabi.newpipe.extractor.stream.StreamInfo.getInfo(StreamInfo.java:87)
	at org.schabi.newpipe.extractor.stream.StreamInfo.getInfo(StreamInfo.java:79)
	at org.schabi.newpipe.util.ExtractorHelper.lambda$getStreamInfo$3(ExtractorHelper.java:127)
	at org.schabi.newpipe.util.ExtractorHelper.$r8$lambda$YTHJjScxCJNO1LTCqs3IKy35iyY(Unknown Source:0)
	at org.schabi.newpipe.util.ExtractorHelper$$ExternalSyntheticLambda5.call(Unknown Source:4)
	at io.reactivex.rxjava3.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:43)
	at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813)
	at io.reactivex.rxjava3.internal.operators.single.SingleDoOnSuccess.subscribeActual(SingleDoOnSuccess.java:35)
	at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813)
	at io.reactivex.rxjava3.internal.operators.maybe.MaybeFromSingle.subscribeActual(MaybeFromSingle.java:41)
	at io.reactivex.rxjava3.core.Maybe.subscribe(Maybe.java:5330)
	at io.reactivex.rxjava3.internal.operators.maybe.MaybeConcatArray$ConcatMaybeObserver.drain(MaybeConcatArray.java:153)
	at io.reactivex.rxjava3.internal.operators.maybe.MaybeConcatArray$ConcatMaybeObserver.request(MaybeConcatArray.java:78)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableElementAtMaybe$ElementAtSubscriber.onSubscribe(FlowableElementAtMaybe.java:66)
	at io.reactivex.rxjava3.internal.operators.maybe.MaybeConcatArray.subscribeActual(MaybeConcatArray.java:42)
	at io.reactivex.rxjava3.core.Flowable.subscribe(Flowable.java:15868)
	at io.reactivex.rxjava3.internal.operators.flowable.FlowableElementAtMaybe.subscribeActual(FlowableElementAtMaybe.java:36)
	at io.reactivex.rxjava3.core.Maybe.subscribe(Maybe.java:5330)
	at io.reactivex.rxjava3.internal.operators.maybe.MaybeToSingle.subscribeActual(MaybeToSingle.java:46)
	at io.reactivex.rxjava3.core.Single.subscribe(Single.java:4813)
	at io.reactivex.rxjava3.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
	at io.reactivex.rxjava3.core.Scheduler$DisposeTask.run(Scheduler.java:644)
	at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:65)
	at io.reactivex.rxjava3.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:56)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
	at java.lang.Thread.run(Thread.java:923)


Termux output

$ logcat
--------- beginning of main
..........
12-08 12:04:10.718  4860  8212 D CCodec  : allocate(c2.android.vorbis.decoder)
12-08 12:04:10.725  4860  8212 I CCodec  : Created component [c2.android.vorbis.decoder]
12-08 12:04:10.725  4860  8212 D CCodecConfig: read media type: audio/vorbis
12-08 12:04:10.740  4860  8212 D ReflectedParamUpdater: extent() != 1 for single value type: algo.buffers.max-count.values
12-08 12:04:10.741  4860  8212 D ReflectedParamUpdater: extent() != 1 for single value type: output.subscribed-indices.values
12-08 12:04:10.742  4860  8212 D ReflectedParamUpdater: extent() != 1 for single value type: input.buffers.allocator-ids.values
12-08 12:04:10.742  4860  8212 D ReflectedParamUpdater: extent() != 1 for single value type: output.buffers.allocator-ids.values
12-08 12:04:10.742  4860  8212 D ReflectedParamUpdater: extent() != 1 for single value type: algo.buffers.allocator-ids.values
12-08 12:04:10.742  4860  8212 D ReflectedParamUpdater: extent() != 1 for single value type: output.buffers.pool-ids.values
12-08 12:04:10.742  4860  8212 D ReflectedParamUpdater: extent() != 1 for single value type: algo.buffers.pool-ids.values
12-08 12:04:10.743  4860  8212 I CCodecConfig: query failed after returning 7 values (BAD_INDEX)
12-08 12:04:10.743  4860  8212 D CCodecConfig: c2 config diff is Dict {
12-08 12:04:10.743  4860  8212 D CCodecConfig:   c2::u32 coded.bitrate.value = 64000
12-08 12:04:10.743  4860  8212 D CCodecConfig:   c2::u32 input.buffers.max-size.value = 32768
12-08 12:04:10.743  4860  8212 D CCodecConfig:   c2::u32 input.delay.value = 0
12-08 12:04:10.743  4860  8212 D CCodecConfig:   string input.media-type.value = "audio/vorbis"
12-08 12:04:10.743  4860  8212 D CCodecConfig:   string output.media-type.value = "audio/raw"
12-08 12:04:10.743  4860  8212 D CCodecConfig:   c2::u32 raw.channel-count.value = 1
12-08 12:04:10.743  4860  8212 D CCodecConfig:   c2::u32 raw.sample-rate.value = 48000
12-08 12:04:10.743  4860  8212 D CCodecConfig: }
12-08 12:04:10.745  4860  8212 D CCodec  : [c2.android.vorbis.decoder] buffers are bound to CCodec for this session
12-08 12:04:10.745  4860  8212 D CCodecConfig: no c2 equivalents for durationUs
12-08 12:04:10.745  4860  8212 D CCodecConfig: no c2 equivalents for track-id
12-08 12:04:10.745  4860  8212 D CCodecConfig: no c2 equivalents for csd-1
12-08 12:04:10.745  4860  8212 D CCodecConfig: no c2 equivalents for language
12-08 12:04:10.745  4860  8212 D CCodecConfig: no c2 equivalents for file-format
12-08 12:04:10.745  4860  8212 D CCodecConfig: no c2 equivalents for flags
12-08 12:04:10.745  4860  8212 D CCodecConfig: config failed => CORRUPTED
12-08 12:04:10.746  4860  8212 D CCodecConfig: c2 config diff is   c2::u32 raw.sample-rate.value = 44100
12-08 12:04:10.746  4860  8212 W Codec2Client: query -- param skipped: index = 1107298332.
12-08 12:04:10.746  4860  8212 D CCodec  : setup formats input: AMessage(what = 0x00000000) = {
12-08 12:04:10.746  4860  8212 D CCodec  :   int32_t channel-count = 1
12-08 12:04:10.746  4860  8212 D CCodec  :   int32_t max-input-size = 65307
12-08 12:04:10.746  4860  8212 D CCodec  :   string mime = "audio/vorbis"
12-08 12:04:10.746  4860  8212 D CCodec  :   int32_t sample-rate = 44100
12-08 12:04:10.746  4860  8212 D CCodec  : } and output: AMessage(what = 0x00000000) = {
12-08 12:04:10.746  4860  8212 D CCodec  :   int32_t channel-count = 1
12-08 12:04:10.746  4860  8212 D CCodec  :   string mime = "audio/raw"
12-08 12:04:10.746  4860  8212 D CCodec  :   int32_t sample-rate = 44100
12-08 12:04:10.746  4860  8212 D CCodec  : }
12-08 12:04:10.747  4860  8212 W Codec2Client: query -- param skipped: index = 1342179345.
12-08 12:04:10.747  4860  8212 W Codec2Client: query -- param skipped: index = 2415921170.
12-08 12:04:10.748  4860  8212 E FMQ     : grantorIdx must be less than 3
12-08 12:04:10.748  4860  8212 E FMQ     : grantorIdx must be less than 3
12-08 12:04:10.748  4860  8212 D CCodecBufferChannel: [c2.android.vorbis.decoder#22] Created input block pool with allocatorID 16 => poolID 24 - OK (0)
12-08 12:04:10.750  4860  8212 I CCodecBufferChannel: [c2.android.vorbis.decoder#22] Created output block pool with allocatorID 16 => poolID 2659 - OK
12-08 12:04:10.750  4860  8212 D CCodecBufferChannel: [c2.android.vorbis.decoder#22] Configured output block pool ids 2659 => OK
12-08 12:04:10.750  4860  8212 D CCodecBufferChannel: [c2.android.vorbis.decoder#22] start: updating output delay 0
12-08 12:04:10.757  4860  8212 E FMQ     : grantorIdx must be less than 3
12-08 12:04:10.764  4860  4899 E FMQ     : grantorIdx must be less than 3
12-08 12:04:10.781  4860  8212 W MediaCodec: onQueueInputBuffer,timeUs:-1 is invalid, changed to 0!
12-08 12:04:10.789  4860  8212 D CCodecBufferChannel: [c2.android.vorbis.decoder#22] MediaCodec discarded an unknown buffer
12-08 12:04:10.789  4860  8212 I chatty  : uid=10275(com.termux) NDK MediaCodec_ identical 1 line
12-08 12:04:10.789  4860  8212 D CCodecBufferChannel: [c2.android.vorbis.decoder#22] MediaCodec discarded an unknown buffer
12-08 12:04:10.795  4860  8214 I hw-BpHwBinder: onLastStrongRef automatically unlinking death recipients
12-08 12:04:15.753  4860  4898 D BufferPoolAccessor2.0: bufferpool2 0x7e8a6d1628 : 0(0 size) total buffers - 0(0 size) used buffers - 2/9 (recycle/alloc) - 7/24 (fetch/transfer)
12-08 12:04:15.753  4860  4898 D BufferPoolAccessor2.0: evictor expired: 1, evicted: 1
12-08 12:04:44.602  4860  8385 D CCodec  : allocate(c2.android.vorbis.decoder)
12-08 12:04:44.605  4860  8385 I CCodec  : Created component [c2.android.vorbis.decoder]
12-08 12:04:44.605  4860  8385 D CCodecConfig: read media type: audio/vorbis
12-08 12:04:44.607  4860  8385 D ReflectedParamUpdater: extent() != 1 for single value type: algo.buffers.max-count.values
12-08 12:04:44.608  4860  8385 D ReflectedParamUpdater: extent() != 1 for single value type: output.subscribed-indices.values
12-08 12:04:44.608  4860  8385 D ReflectedParamUpdater: extent() != 1 for single value type: input.buffers.allocator-ids.values
12-08 12:04:44.608  4860  8385 D ReflectedParamUpdater: extent() != 1 for single value type: output.buffers.allocator-ids.values
12-08 12:04:44.608  4860  8385 D ReflectedParamUpdater: extent() != 1 for single value type: algo.buffers.allocator-ids.values
12-08 12:04:44.608  4860  8385 D ReflectedParamUpdater: extent() != 1 for single value type: output.buffers.pool-ids.values
12-08 12:04:44.608  4860  8385 D ReflectedParamUpdater: extent() != 1 for single value type: algo.buffers.pool-ids.values
12-08 12:04:44.609  4860  8385 I CCodecConfig: query failed after returning 7 values (BAD_INDEX)
12-08 12:04:44.610  4860  8385 D CCodecConfig: c2 config diff is Dict {
12-08 12:04:44.610  4860  8385 D CCodecConfig:   c2::u32 coded.bitrate.value = 64000
12-08 12:04:44.610  4860  8385 D CCodecConfig:   c2::u32 input.buffers.max-size.value = 32768
12-08 12:04:44.610  4860  8385 D CCodecConfig:   c2::u32 input.delay.value = 0
12-08 12:04:44.610  4860  8385 D CCodecConfig:   string input.media-type.value = "audio/vorbis"
12-08 12:04:44.610  4860  8385 D CCodecConfig:   string output.media-type.value = "audio/raw"
12-08 12:04:44.610  4860  8385 D CCodecConfig:   c2::u32 raw.channel-count.value = 1
12-08 12:04:44.610  4860  8385 D CCodecConfig:   c2::u32 raw.sample-rate.value = 48000
12-08 12:04:44.610  4860  8385 D CCodecConfig: }
12-08 12:04:44.610  4860  8385 D CCodec  : [c2.android.vorbis.decoder] buffers are bound to CCodec for this session
12-08 12:04:44.610  4860  8385 D CCodecConfig: no c2 equivalents for durationUs
12-08 12:04:44.610  4860  8385 D CCodecConfig: no c2 equivalents for track-id
12-08 12:04:44.610  4860  8385 D CCodecConfig: no c2 equivalents for csd-1
12-08 12:04:44.610  4860  8385 D CCodecConfig: no c2 equivalents for language
12-08 12:04:44.610  4860  8385 D CCodecConfig: no c2 equivalents for file-format
12-08 12:04:44.610  4860  8385 D CCodecConfig: no c2 equivalents for flags
12-08 12:04:44.611  4860  8385 D CCodecConfig: config failed => CORRUPTED
12-08 12:04:44.611  4860  8385 D CCodecConfig: c2 config diff is   c2::u32 raw.sample-rate.value = 44100
12-08 12:04:44.613  4860  8385 W Codec2Client: query -- param skipped: index = 1107298332.
12-08 12:04:44.613  4860  8385 D CCodec  : setup formats input: AMessage(what = 0x00000000) = {
12-08 12:04:44.613  4860  8385 D CCodec  :   int32_t channel-count = 1
12-08 12:04:44.613  4860  8385 D CCodec  :   int32_t max-input-size = 65307
12-08 12:04:44.613  4860  8385 D CCodec  :   string mime = "audio/vorbis"
12-08 12:04:44.613  4860  8385 D CCodec  :   int32_t sample-rate = 44100
12-08 12:04:44.613  4860  8385 D CCodec  : } and output: AMessage(what = 0x00000000) = {
12-08 12:04:44.613  4860  8385 D CCodec  :   int32_t channel-count = 1
12-08 12:04:44.613  4860  8385 D CCodec  :   string mime = "audio/raw"
12-08 12:04:44.613  4860  8385 D CCodec  :   int32_t sample-rate = 44100
12-08 12:04:44.613  4860  8385 D CCodec  : }
12-08 12:04:44.617  4860  8385 W Codec2Client: query -- param skipped: index = 1342179345.
12-08 12:04:44.617  4860  8385 W Codec2Client: query -- param skipped: index = 2415921170.
12-08 12:04:44.618  4860  8385 E FMQ     : grantorIdx must be less than 3
12-08 12:04:44.618  4860  8385 E FMQ     : grantorIdx must be less than 3
12-08 12:04:44.618  4860  8385 D CCodecBufferChannel: [c2.android.vorbis.decoder#500] Created input block pool with allocatorID 16 => poolID 25 - OK (0)
12-08 12:04:44.619  4860  4899 D BufferPoolAccessor2.0: bufferpool2 0x7e8a6d1628 : 0(0 size) total buffers - 0(0 size) used buffers - 2/9 (recycle/alloc) - 7/24 (fetch/transfer)
12-08 12:04:44.619  4860  4899 D BufferPoolAccessor2.0: Destruction - bufferpool2 0x7e8a6d1628 cached: 0/0M, 0/0% in use; allocs: 9, 22% recycled; transfers: 24, 71% unfetched
12-08 12:04:44.619  4860  8385 I CCodecBufferChannel: [c2.android.vorbis.decoder#500] Created output block pool with allocatorID 16 => poolID 2660 - OK
12-08 12:04:44.619  4860  8385 D CCodecBufferChannel: [c2.android.vorbis.decoder#500] Configured output block pool ids 2660 => OK
12-08 12:04:44.620  4860  8385 D CCodecBufferChannel: [c2.android.vorbis.decoder#500] start: updating output delay 0
12-08 12:04:44.621  4860  8385 E FMQ     : grantorIdx must be less than 3
12-08 12:04:44.626  4860  4899 E FMQ     : grantorIdx must be less than 3
12-08 12:04:44.637  4860  8385 W MediaCodec: onQueueInputBuffer,timeUs:-1 is invalid, changed to 0!
12-08 12:04:44.638  4860  8385 D CCodecBufferChannel: [c2.android.vorbis.decoder#500] MediaCodec discarded an unknown buffer
12-08 12:04:44.638  4860  8385 I chatty  : uid=10275(com.termux) identical 1 line
12-08 12:04:44.638  4860  8385 D CCodecBufferChannel: [c2.android.vorbis.decoder#500] MediaCodec discarded an unknown buffer
12-08 12:04:44.641  4860  8385 I hw-BpHwBinder: onLastStrongRef automatically unlinking death recipients
12-08 12:04:49.623  4860  4898 D BufferPoolAccessor2.0: bufferpool2 0x7e8a6d1c28 : 0(0 size) total buffers - 0(0 size) used buffers - 2/9 (recycle/alloc) - 7/24 (fetch/transfer)
12-08 12:04:49.624  4860  4898 D BufferPoolAccessor2.0: evictor expired: 2, evicted: 1
^C

If this does not help, please elaborate on how to correctly collect the needed logs.

@InfinityLoop1308
Copy link
Owner

Please try https://github.com/InfinityLoop1308/PipePipe/actions/runs/12226403959 and let me know if there is any error report.

@phlaster
Copy link
Author

phlaster commented Dec 9, 2024

So far so good at least on my device

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

No branches or pull requests

2 participants