text:
[feature] template

Having a template system would be great, so that the whole presentation has a particular look.
Maybe even have a system where one can choose per slide from a pre-defined templates

Indeed, I guess there are two types of templates that could be useful for the user:

content templates (title slide, slide with few bullet points, slides with more text, slides with pictures, ...)
design templates (definition of fonts, colours, etc.)

For slides where custom design templates are used, changing the OC theme from light to dark mode or vice versa shouldn't affect how the slides (background colour, font colour, etc. ), only UI elements of web.
see also https://github.com/JankariTech/web-app-presentation-viewer/issues/17#issuecomment-1945474120

shall we split this into two separate issues? I personally think the content templates have higher priority than the design templates...

shall we split this into two separate issues? I personally think the content templates have higher priority than the design templates... the later is kind of connected to this issue

^ @grgprarup Could you help to decide on it?

shall we split this into two separate issues? I personally think the content templates have higher priority than the design templates... the later is kind of connected to this issue

^ @grgprarup Could you help to decide on it?

IMO there is no need for separation in this issue. This issue will focus on the templating system, and implement the different types of templates for slides as examples in content templates (https://github.com/JankariTech/web-app-presentation-viewer/issues/21#issuecomment-1945897864). For the latter, we have an open issue https://github.com/JankariTech/web-app-presentation-viewer/issues/10

ok, let's add the aspect of custom themes to https://github.com/JankariTech/web-app-presentation-viewer/issues/10
I guess this is the core of this feature request is this:
As a user
I want to select from different content types of slides in my presentation
So that I can create a presentation where each slide suits the content I want to present

by types content types we're talking about things like

title slide
subtitle slide
slide with bullet point list
slide with text and image
two columns text slide
image slide
multi image slide
...

@individual-it @grgprarup please comment

This project can be used for the templates (content types): https://github.com/JankariTech/revealjs-awesoMD

authors: grgprarup individual-it koebel saw-jan

repo: JankariTech/web-app-presentation-viewer


text:
SCRIPT ERROR: @Guardian/server.lua:49: No such export GetDiscordRoles in resource Badger_Discord_API

You have configured the script wrong...

source: gharchive/issue

authors: JaredScar WolfBoxx

license: MIT

license_type: permissive

license_source: github-api


text:
error occurred while calling export GetDiscordRoles in resource Badger_Discord_API

[script:DiscordAcePer] SCRIPT ERROR: @DiscordAcePerms/server.lua:150:
[script:DiscordAcePer]  An error occurred while calling export `GetDiscordRoles` in resource `Badger_Discord_API`:
[script:DiscordAcePer]   citizen:/scripting/lua/scheduler.lua:749: SCRIPT ERROR: @Badger_Discord_API/server.lua:435: bad argument #1 to 'pairs' (table expected, got boolean)
[script:DiscordAcePer]   > ref (@Badger_Discord_API/server.lua:435)
[script:DiscordAcePer]
[script:DiscordAcePer]  ---
[script:DiscordAcePer] > RegisterPermissions (@DiscordAcePerms/server.lua:150)
[script:DiscordAcePer] > handler (@DiscordAcePerms/server.lua:205)

This happens every time someone joins. Not sure why? My Badger_Discord_API is updated to the latest version.

Is there an error similar to this above that error in the console?
"[Badger_Discord_API] ERROR: Code 200 was not reached... Returning false. [Member Data NOT FOUND] DETAILS: ....."
If so please post the full error.

Currently turned off Debugging as it was throwing that a lot as well.
I just checked someone, they are in the Discord but they don't yet have any roles.
Assuming its because of that? Is there a way we can just suppress the errors then.

Is there a way to disable the print errors in console or should i just comment out the prints
It seems tk occur every time someone is not in the discord

repo: JaredScar/DiscordAcePerms


text:
TypeError: Failed to fetch dynamically imported module

hello，an error when i route a md file include:

error details：
TypeError: Failed to fetch dynamically imported module： http://.../test.md?import
and
GET http://.../test.md.DemoBlockI0.vue net::ERR_ABORTED 404 (Not Found)
please help me，thanks! (救救孩纸吧QAQ)

当路由跳转到包含
<template>我是 vue 模板</template>

的markdown文件时，报了如下错误：
TypeError: Failed to fetch dynamically imported module： http://.../test.md?import
and
GET http://.../test.md.DemoBlockI0.vue net::ERR_ABORTED 404 (Not Found)
希望能帮助我，谢谢

repo: JasKang/vite-plugin-markdown-preview


text:
chore(deps): update dependency org.apache.maven.plugins:maven-javadoc-plugin to v3

This PR contains the following updates:

Package
Update
Change

org.apache.maven.plugins:maven-javadoc-plugin
major
2.10.4 -> 3.1.0

Renovate configuration
:date: Schedule: At any time (no schedule defined).
:vertical_traffic_light: Automerge: Disabled by config. Please merge this manually once you are satisfied.
:recycle: Rebasing: Whenever PR is stale, or if you modify the PR title to begin with "rebase!".
:no_bell: Ignore: Close this PR and you won't be reminded about this update again.

[ ] If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

PR has been edited
:construction_worker: This PR has received other commits, so Renovate will stop updating it to avoid conflicts or other problems. If you wish to abandon your changes and have Renovate start over you may click the "rebase" checkbox in the PR body/description.

PR has been edited
:construction_worker: This PR has received other commits, so Renovate will stop updating it to avoid conflicts or other problems. If you wish to abandon your changes and have Renovate start over you may click the "rebase" checkbox in the PR body/description.

source: gharchive/pull-request

repo: Jasig/resource-server

license_source: bigquery


text:
Ensure Windows builds work.

Get's builds running correctly on Windows.

Coverage remained the same at 98.066% when pulling 1b1ff4151a41abea2203851fd0938caa00117200 on MartinSGill:master into 805c15af1c754aed145460b86a9dc8b4adbf3a60 on Jason3S:master.

Was the change to application.test.ts necessary?  If not, can you remove it from this request?
The cross-env change makes a lot of sense.

Hey Martin,
I'm going to close this. Would you try building again and open a new pull request if changes are needed.
Thank you,
Jason

authors: Jason3S MartinSGill coveralls

license: mit


text:
Upgrade @octokit/rest to v17

Why?
Upgrades @octokit/rest to v17. This let's us remove the custom graphql property, since that's now included on the Octokit class.
Closes #108
How?
I've removed src/github in favor of just creating the Octokit instance as Toolkit.github directly in the constructor.
Note: This is currently failing to build because of type issues. I'm not sure how to resolve them - it looks like @octokit/rest isn't exporting a class, and I can't figure out how to grab the type of the export:

cc @gr2m

[x] Tests have been added/updated (if necessary)
[x] Documentation has been updated (if necessary)

Might be the same problem as reported in https://github.com/octokit/rest.js/issues/1624

repo: JasonEtco/actions-toolkit


text:
Return neutral if skipped

refs: https://github.com/JasonEtco/actions-toolkit/issues/36#issuecomment-463022043
Closes #43

Thanks for the quick change @banyan ✨

authors: JasonEtco banyan


text:
Optional Private Activity

Proposal

Personally, I love this gist updater. I've been using it for a bit now, and find it fairly useful and unique. However, I work on closed-source projects much, much more often than open source ones. I'm sure that many others could relate. For this reason, I think it could be super beneficial for this action to include an option for displaying recent activity in private repos.

Why?

I think that this could be a very large benefit. Having optional support for displaying private-repo activity could be super cool to users who want to display it, and out of the way for users who don't wish to display it. Many GitHub users may work on closed-source projects, where they still have a community and would wish to display their overall activities on a gist. Similar to how GitHub allows private contributions to be accounted for in your "Contributions" tab, however it is not mandatory. This would be a very nice option to have, especially since private-repos are now unlimited and free on Github Orgs and Individuals, and will be used more often in the future than before.

Implementation

Using the GitHub API, you could easily accomplish this using the repo:status scope. Currently, this action uses just the gist scope to edit gists, and needs an access token anyway. With this feature, you could simply implement it by using the same access token they already provide, but requiring the repo:status scope if they chose to use the optional private activity.

Hey @C0braD3v! Thanks for opening this, and for the clear, descriptive write-up - really helps me understand what you're thinking.
In terms of implementation, it would be changing this:
https://github.com/JasonEtco/activity-box/blob/983e9c157e1c0030450b1509def4d2ff28ea28cd/index.js#L34-L39
To use tools.github.activity.listEventsForAuthenticatedUser. So from a technical perspective, it's a pretty small lift.

That said - I think this would be a dangerous change. Private repos are private for a reason - the activity within them is not meant for public visibility, and is often sensitive and confidential. This would provide a really easy way to make a bad mistake and expose private information to all of GitHub. It's certainly already possible by querying the data manually and sharing it manually, and all the way to copy-pasting issues/PRs/code and sharing it yourself. Within GitHub, even repository names are treated as users' confidential information, we'll never surface the names of private repos that you can't see.
My overall feeling is that if you can't share the activity itself, it shouldn't be possible to show that it exists. If it helps, a specific example would be if you were interviewing for another employer, and they asked you to open a private repo called <username>/name-of-company-interview - that'd show up on your profile, even if you weren't expecting it to. That's a dangerous possibility, and one that's safer to just avoid entirely.

@JasonEtco Hey, thanks for the quick reply!
This is why u had mentioned this as a totally optional feature. Here’s a use case that may make some sense, and in this case, is my use case:
My company has a fairly large project what we develop for our users. We wish not to share the source code of this project, as others could easily rebrand it which we don’t want. However, we do encourage our community to be involved in the development  process - and be able to see what we’re working on. For this reason, we use webhooks to currently display activity in our repos, even though they’re private. This hasn’t been an issue thus far, and I couldn’t see it being one in the future. In fact, it’s been a nice benefit for us for users to be able to see update progress, what we’re working on, etc simply by commit names etc.
This being said, however, I do understand your security concern. This could be a major issue for some cases as you mentioned. Even though this would be totally optional, someone could forget they have it turned on, and leak information they don’t intent to. My proposal to fix this issue would be simple: Have a list of whitelisted private repos. In this case, the user would select repos they want to include in their activity, and only activity from those repos would be displayed. From a technical standpoint, this should be very easy to implement, as you could simply filter through activity and only use data from those whitelisted. Or, the flip side of this, having a blacklist of repos. What are your thoughts on this? Personally I think it would 110% solve the issue of making a mistake, especially on the example you mentioned. You obviously wouldn’t whitelist your interview repo, so that activity wouldn’t show. And if you did, then you gave full knowing consent to allow that project to display, since you whitelisted it by typing it out. Don’t see any margin of error here.
Thanks!

Hunter

repo: JasonEtco/activity-box

license: ISC


text:
500 Server Error on new panel versions

On panel version 1.11.10 I encountered a rather peculiar error...
[2024-11-21 16:53:04] production.ERROR: Unclosed '{' on line 17 {"exception":"[object] (ParseError(code: 0): Unclosed '{' on line 17 at /var/www/pterodactyl/routes/blueprint.php:33)
[stacktrace]
#0 /var/www/pterodactyl/vendor/laravel/framework/src/Illuminate/Routing/Router.php(511): Illuminate\\Routing\\RouteFileRegistrar->register()
#1 /var/www/pterodactyl/vendor/laravel/framework/src/Illuminate/Routing/Router.php(465): Illuminate\\Routing\\Router->loadRoutes()
#2 /var/www/pterodactyl/vendor/laravel/framework/src/Illuminate/Routing/RouteRegistrar.php(194): Illuminate\\Routing\\Router->group()
#3 /var/www/pterodactyl/app/Providers/Blueprint/RouteServiceProvider.php(42): Illuminate\\Routing\\RouteRegistrar->group()
#4 /var/www/pterodactyl/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Pterodactyl\\Providers\\Blueprint\\RouteServiceProvider->Pterodactyl\\Providers\\Blueprint\\{closure}()
#5 /var/www/pterodactyl/vendor/laravel/framework/src/Illuminate/Container/Util.php(41): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
#6 /var/www/pterodactyl/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(81): Illuminate\\Container\\Util::unwrapIfClosure()
#7 /var/www/pterodactyl/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\Container\\BoundMethod::callBoundMethod()
#8 /var/www/pterodactyl/vendor/laravel/framework/src/Illuminate/Container/Container.php(662): Illuminate\\Container\\BoundMethod::call()
#9 /var/www/pterodactyl/vendor/laravel/framework/src/Illuminate/Foundation/Support/Providers/RouteServiceProvider.php(120): Illuminate\\Container\\Container->call()
#10 /var/www/pterodactyl/vendor/laravel/framework/src/Illuminate/Foundation/Support/Providers/RouteServiceProvider.php(45): Illuminate\\Foundation\\Support\\Providers\\RouteServiceProvider->loadRoutes()
#11 /var/www/pterodactyl/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\Foundation\\Support\\Providers\\RouteServiceProvider->Illuminate\\Foundation\\Support\\Providers\\{closure}()
#12 /var/www/pterodactyl/vendor/laravel/framework/src/Illuminate/Container/Util.php(41): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
#13 /var/www/pterodactyl/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(81): Illuminate\\Container\\Util::unwrapIfClosure()
#14 /var/www/pterodactyl/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\Container\\BoundMethod::callBoundMethod()
#15 /var/www/pterodactyl/vendor/laravel/framework/src/Illuminate/Container/Container.php(662): Illuminate\\Container\\BoundMethod::call()
#16 /var/www/pterodactyl/vendor/laravel/framework/src/Illuminate/Support/ServiceProvider.php(119): Illuminate\\Container\\Container->call()
#17 /var/www/pterodactyl/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1039): Illuminate\\Support\\ServiceProvider->callBootedCallbacks()
#18 /var/www/pterodactyl/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1017): Illuminate\\Foundation\\Application->bootProvider()
#19 [internal function]: Illuminate\\Foundation\\Application->Illuminate\\Foundation\\{closure}()
#20 /var/www/pterodactyl/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1016): array_walk()
#21 /var/www/pterodactyl/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/BootProviders.php(17): Illuminate\\Foundation\\Application->boot()
#22 /var/www/pterodactyl/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(263): Illuminate\\Foundation\\Bootstrap\\BootProviders->bootstrap()
#23 /var/www/pterodactyl/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(186): Illuminate\\Foundation\\Application->bootstrapWith()
#24 /var/www/pterodactyl/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(170): Illuminate\\Foundation\\Http\\Kernel->bootstrap()
#25 /var/www/pterodactyl/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(144): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter()
#26 /var/www/pterodactyl/public/index.php(67): Illuminate\\Foundation\\Http\\Kernel->handle()
#27 {main}
"}

I solved this by literally going into routes/blueprint.php and adding the closing brackets myself, which worked and now everything is awesome.

dunno if its an issue with blueprint or this plugin lol
Blueprint version: beta-2024-08

Most likely blueprint, @prplwtf can confirm though

Known bug. Removing the first-installed extension causes a bracket to be incorrectly replaced.

Thanks!

authors: JasonHorkles WifiRouterYT prplwtf

repo: JasonHorkles/darkenate


text:
Make mobile friendly

Especially with the new landing page, the app is not very mobile friendly. Though it's not really meant to be used on mobile, I won't stop people from doing so, so it should at least be usable.

It's not perfect but I'm happy enough for now

repo: JasonPuglisi/descent


text:
no javascript in data, only on Android, works on iOS

javascript in data like this
      "data": {
        "infive": "{{var now = new Date(); var then = new Date(now.getTime()+5*60000); then = then.toISOString(); return then;}}"
      }

works fine in iOS, but not in Android.

I just tried this, and it works. There is really no reason it should work on iOS but not on Android, so if this is true we really need to fix it. But I need more info since I can't replicate this.
Please share:

Your full code (that's working on iOS but not on Android)
Screenshot of the app not working (with the console logs)
Your OS/device spec

p.s.
In most cases where something works on iOS but not on Android, it's because the JSON is not in a valid format. The iOS is very forgiving when parsing JSON but Android is very strict, so in many cases if you have invalid JSON it wouldn't even get to the point of render. You could check to make sure the JSON is in a valid format by trying JSON Lint.

Ethan, thanks.
My JS is correct, my problem is: there is no javascript in head/data, on Android only.

Hello @j2l. Can you post a minimal json app to reproduce the bug ?
@gliechtenstein needs a simple way to reproduce it. I can look at it too but we need the json app.

@realitix, simply paste data in the head and call it from template or root body.
Test it on both iOS and Android.
Thanks

@j2l I have tried that
{
  "$jason": {
    "head": {
      "data": {
        "infive": "{{var now = new Date(); var then = new Date(now.getTime()+5*60000); then = then.toISOString(); return then;}}"
      },
      "title": "JS demo",
      "actions": {
        "$load": {
          "type": "$util.alert",
          "options": {
            "title": "test",
            "description": "{{infive}}"
          }
        }
      }
    }
  }
}

And it displays the content of infive (without interpreting javascript code). I don't understand what you are trying to achieve. Please paste your json, we can't help otherwise...

now test it on iOS and report.

@j2l please post the full JSON. Because a lot of the ways you use the JASON markup is recursive, the context really matters. The same piece of data object can function completely differently depending on how it's used with others.

I tested before writing a ticket with complex and simple contexts.
Why don't you test it on iOS to see result?
Here's a full JSON, to test on iOS:
{
  "$jason": {
    "head": {
      "data": {
        "infive": "{{var now = new Date(); var then = new Date(now.getTime()+5*60000); then = then.toISOString(); return then;}}"
      },
      "title": "JS demo",
      "actions": {
        "$load": {
          "type": "$util.alert",
          "options": {
            "title": "test",
            "description": "{{infive}}"
          }
        }
      }
    }
  }
}

Spoiler:

En même temps, je fais au plus court : titre et premier texte en une ligne.
Mais je teste tout avant, donc faut juste tester pour comprendre :)
An eval() should do the trick but it must have a secure way.

@j2l this is an edge case I hadn't thought about when I added the data attribute. The data attribute is meant to be used as just that, a static piece of data. The use case I had in mind was when you're delivering a huge JSON markup from the server, in many cases you can separate them into data and template, reducing the overall file size significantly.
That said, since this is something I haven't thought about before I spent some time to think about whether to officially support this.
Theoretically it's possible to "fix" the android code so that the dynamic expression works, but I don't think it's a good idea because it makes things complicated and I feel like it may be a source of potential bugs. In fact, even on iOS there may be problems if you use this method extensively because it was not meant to work that way.
Plus this is something you can achieve using actions (If you're trying to set a constant variable, you can just use the $set action to set a local variable on $load event).
But I might be wrong and there are indeed cases where this is the only way you can do things. If you are running into a situation where you can't solve the problem this way, please let me know, and I'll try to figure something out.

Nice answer @gliechtenstein. Indeed, it's not documented like that. Maybe you can close the issue for now @j2l ?

I should have called it [low hanging feature].
It shouldn't stay inconsistent.
Javascript is expected to be executed where it is written.

authors: gliechtenstein j2l realitix

repo: Jasonette/JASONETTE-Android


text:
#772 Index with Expression Should Match DDL

See #772
I wasn't able to universally match DDL from the database with DDL generated by code, but I was able to change the Match method on IndexDefinition to return a positive match if the Expression property is added in such a way as to minimize/eliminate reformatting by Postgres. This PR handles my use case, and I believe others, as long as Expression values are set appropriately.
I also corrected the error message in the testing ConnectionSource, since the environment variable in the exception message and the actual environment variable were different.

Resubmitted as #774 as a patch to 1.5

repo: JasperFx/marten


text:
protected, package-private 생성자 지원 논의

@jwChung 님이 아래에서 package-private 생성자 언급을 하셔서 이슈로 남깁니다.
https://github.com/JavaUnit/AutoParams/issues/43#issuecomment-800736377
protected 나 package-private 생성자는 지원하지 않고 public 만 선택되도록 지원할 것인가?
만약 그렇다면 public 생성자가 불필요한 클래스도 AutoParams 를 사용하기 위해서는 public 으로 공개해야 하는게 가이드 방향성이 될 것인가?

개체 생성은 공개된 생성자나 팩토리 함수를 통하는 것을 원칙으로 봅니다. 그래서 저는 package-private 생성자 지원이 아니가 public 팩토리 함수 지원을 고민해야 하지 않을까 싶어요.

저도 규원님과 같은 생각인데요. 테스트는 공개된 API를 통해서 인스턴스를 만드는게 맞다고 생각해요.
@mhyeon-lee 혹시 non public 생성자를 통해 인스턴스를 만들어야 하는 경우가 있을까요?

@gyuwon @jwChung
몇가지 생각나는 케이스들을 적어 보겠습니다.

JPA 의 Entity 는 복원을 위해 NoArgsConstructor 가 필수로 필요하지만, DB 조회만(Read-Only) 하는 클래스는 사용자가 NoArgsConstructor 또는 다른 생성자들을 public 으로 공개하지 않을 수 있습니다.
JSON 응답을 Jackson 으로 Deserialize 할 때 선택되는 생성자는 package-private 도 지원하기 때문에, Deserialize 에만 사용되는 클래스는 생성자를 public 으로 공개하지 않을 수 있습니다.
객체 생성을 위해 lombok 의 @Builder 를 많이 사용하는데, 자동으로 생성되는 Builder 의 build() 메소드는 AllArgsConstructor 를 호출하는데  package-private 에서 접근합니다. 그래서 @AllArgsConstructor 를 직접 호출하지 않도록 package-private 으로 만들기도 합니다. @gyuwon 님이 팩토리 함수를 지원하는 것을 이야기한것처럼 lombok 의 @Builder 를 지원하는 방향도 있습니다. (사내에서 만든 라이브러리에서는 @Builder 를 지원합니다.)

위와 같이 객체를 직접 생성하지 않는 클래스는 생성자를 직접 사용하지 않는 경우들이 있는데 이들을 지원할지 여부가 될거 같습니다.
public 만 지원한다면 AutoParams 를 사용하기 위해 생성자를 public 으로 전환하거나 팩토리 생성자를 직접 만들어줘야 할거 같습니다.
다수가 사용하는 특정 라이브러리나 프레임워크의 매직(?)에 의존되는 부분을 지원할 것인가? 하지 않고 조금 불편하지만 기본 원칙을 지키는 방향으로 가이드를 할 것인가? 는 자바 라이브러리를 개발하면서 항상 고민되는 부분이었던거 같습니다.

F**king magicians!

@mhyeon-lee 설명 감사합니다.
우선 제가 드는 생각은 public API를 기본으로 하고 1/2/3번과 같은 경우가 빈번하다면, 확장 API 공개 수준을 넘어 확장 기능을 구현해서 제공하는 방향으로 가면 어떨까 합니다. 기본적으로 on되어 있는 기능은 아니지만 필요하면 사용자가 on해서 사용할 수 있도록 말이죠.

@gyuwon 님도 비슷한 의견으로 여기고 이 이슈는 close 합니다.

public 한 API 로서의 생성자와 테스트 데이터를 만들기 위한 생성자는 다를 수 있다고 생각합니다
명확히 하자면 API 가 아닌 별도의 생성자를 테스트에서 전능하게 사용할 수 있어야 한다고 생각하는데 어떤 방식으로 구현이 가능할지는 모르겠네요
repository 테스트를 할 때 테스트용 데이터를 생성하는 함수는 repository 의 함수를 사용하지 않는다 같은 느낌이랄까

@nallwhy 의견 고맙습니다.
저는 다른 의견을 가지고 있습니다. 테스트는 클라이언트고 다른 클라이언트와 동일한 조건에서 동작해야 합니다. 수동 테스트를 생각해보죠. QA 담당자가 모바일 앱을 테스트 하기 위해 데이터베이스에 관리자 권한으로 접근해 데이터를 조작한다면 그 테스트는 쓸모있는 결과를 만들지 못할겁니다. 테스터는 최대한 일반 사용자의 입장이 되어야 합니다.
자동화된 테스트 케이스 역시 마찬가지 입니다. 테스트 케이스는 클라이언트 코드고 다른 클라이언트 코드와 동일한 조건에서 동작하는 것이 원칙입니다. 그렇지 않으면 거짓 음성(false-negative)을 야기할 수 있으며, 테스트 케이스가 SUT의 숨겨진 정보(design decision)를 알게 되고 또 사용하게 되어 두 모듈 사이에 내용 결합(content-coupling)이 발생합니다.
이런 결합이 생기면 SUT 리팩터링이 테스트를 깨지게 만들고 이 비용으로 인해 프로그래머는 리팩터링을 주저하거나 테스트 작성을 꺼리게 되어 결국 단위 테스팅이나 TDD를 실패로 이끕니다. TDD와 관련해 정말 많이 질문받는 것 중 하나가 리팩터링 할때마다 테스트를 고쳐야 한다는 거에요. 사실은 테스트가 있기 때문에 리팩터링을 자유롭고 자신감있게 진행해야 하는데 말이죠. 리팩터링 때문에 테스트를 한 글자라도 바꿔야 한다면, 그건 리팩터링이 아니라 API 디자인 변경이거나 SUT와 테스트가 결합되었기 때문입니다. 이건 비단 TDD에만 문제가 아니라 시스템 디자인에도 치명적입니다.
Repository를 테스트할 때 repository나 repository 의존성의 non-public 인터페이스를 사용하는 테스트가 있다면 이것은 API 디자인 결함의 신호입니다. 테스트는 전능하면 안됩니다. 다른 모든 클라이언트와 동등한 입장이어야 합니다.

authors: gyuwon jwChung mhyeon-lee nallwhy

repo: JavaUnit/AutoParams


text:
docker image not working

I've never really used docker but following the info when I run I get
/bin/sh: 1: cd: can't cd to /mnt/ffmpeg-android-maker
Viewing the files there is no such directory
I tried to build in wsl but after installing android studio I and building I got some error about clang not being able to build the images.
Best I can tell is the doctor image doesn't contain ffmpeg-android-maker or it's in a different folder. (tried to find it in the docker files list but nothing)

Hello @Aphexus
The Docker image indeed doesn't contain the ffmpeg-android-maker directory on its own. The sole point of the Docker image I created is to have preinstalled all the necessary software for building FFmpeg inside of it. But the 'ffmpeg-andorid-maker' directory is supplied to the image from the host machine. This gives you an opportunity to modify the scripts in the project and still use the same Docker image for building it.
Read this section about what parameters that you can use for executing the image. The whole document contains workable examples.
If things still don't work, tell me what command do you use for launching the Docker image?

Ok, I thought that might be the case but when I ran the commands and followed the help it would exit. Initially there was no info in the log. Basically I followed the help and such(downloaded maker, corrected path info, etc) but maybe I missed something. I then updated docker because I haven't messed with it for a while then it started showing the error I gave I assumed it was missing. I'll try again.

Ok, I was eventually able to get things to work. Not sure what the problem was. I think I might have got the path wrong or it was some issue with docker. I did have some issues compiling with all the extensions added though so I had to remove them.
The command that I started with
docker run --rm -v S:\Temp\c\javernaut\ffmpeg-android-maker:/mnt/ffmpeg-android-maker -e FAM_ARGS="-aom -bluray -freetype -fribidi -opus -speex  -webp -x264 -vpx -lame -android=24" javernaut/ffmpeg-android-maker
and I had to to remove several but I don't remember. I think it was bluray, freetype, vpx, fribidi, and lame. I didn't investigate much into the reasons it didn't work but something about clang IIRC. If I build it again, since now I know it works, I'll pay attention.

I assume the issue is resolved. The latest image I pushed yesterday works according to the documentation, as it did before.

authors: Aphexus Javernaut

repo: Javernaut/ffmpeg-android-maker


text:
Detection and Remediation issue

I would like to ask for help with a challenge I am having with an Intune script for detection and remediation. Despite multiple attempts, I have been encountering issues when uploading it to the Intune Admin Portal.
Problem Overview:
Detection Status: Shows "With Issues" or sometimes "Without issues"
Remediation Status: Shows "Recurred" or "Failed"
Attempts to Resolve:
Exit Code Adjustments: I have tried adjusting the exit codes within the script to ensure proper success (exit 0) and failure (exit 1) signaling.
Logging: Implemented logging within the script to capture any errors or unexpected behavior, but the root cause remains elusive.
Syntax Checks: Checked for syntax errors and verified the compatibility of PowerShell commands with the Intune execution environment.
Environment Testing: Tested the script locally on a device to ensure it runs as expected, without encountering errors.
Intune Logs Examination: Reviewed the IntuneManagementExtension.log on the endpoint for potential error messages, but no clear resolution emerged.
I would greatly appreciate your insights. Please share any suggestions, best practices, or potential pitfalls to look out for. I am open to feedback on script structure, exit codes, or any other considerations that might impact the script's behavior in the Intune environment.
Here are my full script details. Your expertise and guidance would be immensely valuable in helping me overcome this challenge.
DetectAdminChange.ps1
Define the username of the local admin
$adminUsername = "OfflineAdmin"
Define the default password
$defaultPassword = "MESY@15586!!!"
Define the path to the log file
$logFilePath = "C:\ps_script_logs\ChangeLog.txt"
Check if the admin user exists
if (Get-LocalUser -Name $adminUsername -ErrorAction SilentlyContinue) {
# Admin user exists, check if the password has changed
$currentPassword = (Get-LocalUser -Name $adminUsername).Password
if ($currentPassword -ne $defaultPassword) {
    # Password has changed, log the event
    Add-Content -Path $logFilePath -Value "$(Get-Date) - Admin password changed."

    # Set exit code for password change
    Exit 1
} else {
    # Password has not changed, exit with code 0 (no action needed)
    Exit 0
}

}
else {
Admin user doesn't exist, exit with code 2 (requires remediation)
Exit 2
}
===========================================================
RemediateAdmin.ps1
Define the username of the local admin
$adminUsername = "OfflineAdmin"
Define the default password
$defaultPassword = "MESY@15586!!!"
Define the path to the log file
$logFilePath = "C:\ps_script_logs\RemediationLog.txt"
Set the default password for the admin user
$password = ConvertTo-SecureString -String $defaultPassword -AsPlainText -Force
Set-LocalUser -Name $adminUsername -Password $password
Set password to not expire and cannot change
Set-LocalUser -Name $adminUsername -PasswordNeverExpires $true -CannotChangePassword $true
Log the remediation event
Add-Content -Path $logFilePath -Value "$(Get-Date) - Admin account remediated with default password."
Exit with code 0 (success)
Exit 0
Thank you in advance for your time and assistance. I am eager to learn from your experiences and insights.

Do you have this deployed in the system context?

Yes, I did. Let me share with you the screenshot that I got in Intune when I uploaded this script,

When I checked on my test machine the script worked perfectly fine and doing what I expected.

Please help me as I am new to Intune and need some guidance from an expert like you. :)

It's your remediation which is failing, you might want to add some logging around the commands, one of them will be failing

I am not sure what I am missing. Been trying to change my command a few times but no luck. I've been working on this script for 3 weeks, and until now I don't have answers for myself, that's why I tried to ask for some help and raise a ticket from Microsoft, but I never heard any feedback from them. Do you mind if you could help me with what command I am missing? That would be helpful and I will appreciate your kindness on this one.

It'll be one of your set-localuser commands which is failing, but I would suggest adding logging so you can find out which

set-localuser is only available in 64-bit PowerShell which you must activate explicitly in the remediation configuration.

the 64-bit Powershell is already enabled, however still getting the same issue.

authors: andrew-s-taylor carolceguerra


text:
Design Changes for 2.0 (Scottish Fold)

Goals

[x] Make each bookmark in bookmark bar be seperated from the bar itself.
This just means contrast the clickable bookmark from the bar. Have the actual bar be the background, and the bookmarks have its own background.

To explain the change for bookmarks. Look at the tabs. Foreground: The tabs themselves. Background: The bar itself. Gonna make the bookmarks be just like that.

OK

Some extras
Show Catalyst version in settings panel
Have button to rerun update checking function.

#126

yep, i suggested the bookmark background thing before you temporarily canceled catalyst: https://github.com/JaydenDev/Catalyst/pull/91#issuecomment-1001063464

https://github.com/JaydenDev/Catalyst/commit/6d36de4ac34f131bc3446c417607f5cef1350036

@webdev03 great, it works! but please make a PR next time so I can better investigate and test your code.

Ok, sorry! I'll make new branches from now on.

Every design change for 2.0 has been done! Now what features for 2.0 idk.

I don't think we have to have a million features. Well, Find could be one that I can try to implement.

authors: JaydenDev kccuber-scratch webdev03

repo: JaydenDev/Catalyst


text:
The Division (PC) Prompts Flicker Between Xbox and DS4 Buttons / No Movement or Play Possible

Hey folks,
This is a brand new release so I can imagine there may be some issues.
During The Division on PC the prompts flicker between Xbox and DS4 buttons. For example, to "Select" an option the button flickers between "X" and "A" and every other action in the game (take cover etc.) until you cancel out controller mode by typing on the keyboard or clicking a mouse button in game. Other titles in Uplay such as Far Cry 3 have been working flawlessly for me, though I do launch FC3 through Steam (Uplay handoff).
Is anyone else having these issues? Would love to use the DS4 with this launch but it appears the game is confused by the Xbox controller emulation. Was surprised to find they put DS4 style button icons in the game to begin with.
To be clear, the game is unplayable with the DS4 controller and DS4Windows. I have to switch to keyboard and mouse mode in-game to actually move around and do anything.
Thanks for your time.
Cheers!
raedeus

It was working for me. Did you try turning on the Hide DS4 option in the settings?

Ah. I had not. I will try later this evening (at work) and report in.
Truthfully I saw that feature floating around and just thought it was
referring to the DS4 app itself and not the controller.
Much thanks for your help. I'll let you know.
Cheers!
raedeus
On Tue, Mar 8, 2016 at 11:00 AM, Jake Orr notifications@github.com wrote:

It was working for me. Did you try turning on the Hide DS4 option in the
settings?
—
Reply to this email directly or view it on GitHub
https://github.com/Jays2Kings/DS4Windows/issues/103#issuecomment-193916198
.

Confirmed last night that turning on "Hide DS4" worked beautifully!
Thanks!
raedeus
On Tue, Mar 8, 2016 at 3:02 PM, Jordan Sledge raedeus.tech@gmail.com
wrote:

Ah. I had not. I will try later this evening (at work) and report in.
Truthfully I saw that feature floating around and just thought it was
referring to the DS4 app itself and not the controller.
Much thanks for your help. I'll let you know.
Cheers!
raedeus
On Tue, Mar 8, 2016 at 11:00 AM, Jake Orr notifications@github.com
wrote:

It was working for me. Did you try turning on the Hide DS4 option in the
settings?
—
Reply to this email directly or view it on GitHub
https://github.com/Jays2Kings/DS4Windows/issues/103#issuecomment-193916198
.

Glad that fixed it! I was having the same problem in The Witcher 3 recently and that fixed it for me :)

authors: jakeorr raedeus


text:
The application only works with the debug version of the c library and not the release version!

The application only works with the debug version of the c library and not the release version!
To Reproduce
Steps to reproduce the behavior:

Switch to release mode
In the compioer options switch from /MTd to /MT
Build the app
On runni g you see that the mesh is not be9ng rendered

Expected behavior
Should run just same as when compiped in debug mode.

Any hints from compiler warnings?

Any hints from compiler warnings?

I didnt notice any such thing as there are hundreds of warninga just about missing pdb for a lib(i will soon move from lib to building it from src so i didnt pay much attention to it) and the problem mainly seems that my opengl rendering calls are not working in release mode but only imgui is working also not just release i narrowed it down to using the relase version of runtime (/MTd works but /MT doesnt)

Wish I could help more, but I use Ubuntu and can't compile the software. My best advice is to try and increase the number of compiler warnings (I think MSVC uses /WX) and to try using a memory error detection tool. On Linux systems, there's valgrind. I'm sure there's a similar tool for Windows (Dr. Memory?)

Wish I could help more, but I use Ubuntu and can't compile the software. My best advice is to try and increase the number of compiler warnings (I think MSVC uses /WX) and to try using a memory error detection tool. On Linux systems, there's valgrind. I'm sure there's a similar tool for Windows (Dr. Memory?)

Hey, i was actually thinking of linux support for a long time now. I created this https://github.com/Jaysmito101/TerraForge3D/issues/17 dedicated to that. I am not very used to big projects on linux so i would be very glad if you could help a bit here and there. And for this issue i will re annalyse all the warnings and also i am curious in linux with a compiler whether the error still exists.

@tay10r I added all linux supported code https://github.com/Jaysmito101/TerraForge3D/commit/9f8e508662ceb99255d818a35d8f6da24517b51b now the code should compile on linux. I just need some help to setup the premake for linux and do the build related stuff. If you have time please check it once.

Oh snap! Awesome. I can try and send a patch for CMake support, which generates both Makefiles for Linux and Visual Studio project files.

Oh snap! Awesome. I can try and send a patch for CMake support, which generates both Makefiles for Linux and Visual Studio project files.

Awesome!

Fixed https://github.com/Jaysmito101/TerraForge3D/commit/d51808b428229ab6a7715775de4ee88050ba8883


text:
SMPL model not found

Hello, I only found basicmodel_neutral_lbs_10_207_0_v1.1.0.pkl in the webpage you listed. There is no neutral model for v1.1.0. Can you share this file?

Hi, it seems a new version of SMPL is provided. I think this new version also works for our model. You can directly use the v1.1.0 model.

Thanks，i will give it a shot

The shapedirs of basicmodel_neutral_lbs_10_207_0_v1.1.0.pkl is 300 while the pre-trained model's is 10, which causes size mismatch when loading the provided model.

authors: Jeff-sjtu sunwenzhang1996 wanzysky

repo: Jeff-sjtu/HybrIK


text:
Add support for model(s): DR-HPF003S

Include all of the following:

Model - DR-HPF003S
Number of speeds the fan supports (not including "off") - 5
Does the fan support oscillating? - Yes
What preset modes are supported? - 'normal', 'natural', 'sleep', 'auto', 'turbo'
Is temperature supported? - Yes

config_entry-dreo-01J3KYQYRYD9N78SQDYE68RGFK.json
Make sure you've installed this integration, then from the integration settings page, select Download Diagnostics and attach that file.

Only thing missing is exposure of PRESETS, cannot get state of presets nor assign a preset

I don't see that fan in your config you linked.  You sure it's not HAF003S?

Should work as of #166

authors: JeffSteinbok dro-ex

repo: JeffSteinbok/hass-dreo


text:
-r flag should accept multiple arguments

Currently, you have to specify -r for each file you wish to include:
benthos -c conf.yaml -r snippets/foo.yaml -r snippets/bar.yaml

It would make life much easier if it accepted multiple arguments, allowing shell expansions to function as expected:
benthos -c conf.yaml -r snippets/*.yaml

is equivalent to:
benthos -c conf.yaml -r snippets/foo.yaml snippets/bar.yaml

You'll be able to do benthos -r "snippets/*.yaml" -c ./conf.yaml, note the need for quotes, otherwise your shell will expand the glob patterns and the cli is invalid.

authors: Jeffail nicktelford

repo: Jeffail/benthos


text:
Modifying options for the SASS loader

Hey guys,
Some time ago, I created a plugin for enabling CSS Modules for React builds. It doesn't do a whole lot, but add some babel config, and inject options into any css-loader it can find. The code is available here.
The plugin was built for Mix v2, but also works in v3. v4 is generally fine, except that it doesn't work with SASS correctly. If a user sets up the SASS importer in webpack.mix.js, it'll correctly convert everything to CSS, but it won't correctly activate the CSS modules functionality.
I have noticed that SASS is now optionally included in the Webpack config. This apparently also means that I cannot modify any SASS-related rules in my plugins webpackConfig() function, since it's not part of the base Webpack config.
Is this assumption correct? And is there a way of modifying the SASS-related rules, or would I have to inject any SASS-rules directly from my plugin? I would preferably just modify the options for any css-loaders I can find, so that it can work with any CSS preprocessor that is required.
I trust you can offer some guidance. Thanks in advance!
Lei

Is there a way to work around this by setting a custom webpackConfig in my webpack.mix.js file?

@evan-duncan Probably, but this means you'll have to be able to actually override the CSS loader that Laravel Mix provides. I have tried testing this, but my results have come up dry, as the webpackConfig option only allows for deep merges, and the loaders come as an array. Actually overwriting the config object is only supported as part of plugins. I hope you can work something out, but until this issue is fixed, I cannot really do anything.

@leinelissen It looks like you're not rewriting all of the css-loaders in your extension. I removed the length check on this line and it seems to be working https://github.com/leinelissen/laravel-mix-react-css-modules/blob/master/src/ReactCSSModules.js#L71

authors: evan-duncan leinelissen

repo: JeffreyWay/laravel-mix


text:
RejectFilesFromManifest task for rejecting compiled files from manifest

Hey Jeffrey,
I just had some problems with temp files being added to the manifest json file so I added a new task called "RejectFilesFromManifest" for rejecting files from being added to the manifest json file.
Example:
let mix = require('laravel-mix');

mix.sass('src/file1.sass', 'dist/temp1.css')
    .sass('src/file2.sass', 'dist/temp2.css')
    .styles([
        'dist/temp1.css',
        'dist/temp2.css',
    ], 'dist/concatenated.css')
    .reject([
        'dist/temp1.css',
        'dist/temp2.css',
    ])
    .version();

Now (using the reject() method) the manifest json file will contain only the 'dist/concatenated.css' file and not the temp compiled sass files ('dist/temp1.css', 'dist/temp2.css').

Fancy feature :)
Thanks @ybaruchel

@omrimatias thank you!

Great feature!
Might be very useful for some cases!
Thank you @ybaruchel

What harm is being done by allowing those files to stay in the mix-manifest.json?

@JeffreyWay It's because if I want to prevent those files from being included in the dist/ directory, I can actually remove them manually (ex. using fs/rimraf) from the dist/ folder but they will still remain in the manifest json file.

I don't think it presents enough of a problem to worry about it. It's just a key value pair in a file. Thanks for the PR though! :)

authors: JeffreyWay YanivD omrimatias ybaruchel


text:
chore(jellyfish-transaction): add static testing and e2e for v2 signing

What this PR does / why we need it:
Which issue(s) does this PR fixes?:

Fixes #1366
Additional comments?:

https://github.com/JellyfishSDK/jellyfish/issues/1366#issuecomment-1141732156
How come?

#1366 (comment)
How come?

yea i stuck at the v2 vin txid...
understand the createrawtx(input, output) in testcontainer will output an unsigned v4 tx
the way i'm doing is using the bitcoinjs-lib generates a signed v2 tx then just sendrawtx(signedV2) (static testing)
but for e2e, i need an actual vin txid v2 which must be generated from testcontainer...
hmm... or else that got the other approach?? :thinking:

#1366 (comment)
How come?

yea i stuck at the v2 vin txid... understand the createrawtx(input, output) in testcontainer will output an unsigned v4 tx the way i'm doing is using the bitcoinjs-lib generates a signed v2 tx then just sendrawtx(signedV2) (static testing) but for e2e, i need an actual vin txid v2 which must be generated from testcontainer...
hmm... or else that got the other approach?? 🤔

Perhaps we can use testcontainers to use listunspent to get txid, vout for a particular address. Then manually construct the V2 Txn with the given information and sign it with the PrivateKey extracted out from the testcontainers. And resubmit that back into testcontainers?

#1366 (comment)
How come?

yea i stuck at the v2 vin txid... understand the createrawtx(input, output) in testcontainer will output an unsigned v4 tx the way i'm doing is using the bitcoinjs-lib generates a signed v2 tx then just sendrawtx(signedV2) (static testing) but for e2e, i need an actual vin txid v2 which must be generated from testcontainer...
hmm... or else that got the other approach?? thinking

Perhaps we can use testcontainers to use listunspent to get txid, vout for a particular address. Then manually construct the V2 Txn with the given information and sign it with the PrivateKey extracted out from the testcontainers. And resubmit that back into testcontainers?

yea.. i was actually going to do that way.. but have mixed feeling to import bitcoinjs-lib and ecpair...
but now just fix it and push

Due to the introduction of #1676 where we introduce: "This PR contains no code change on how to use bitcoinjs-lib for DeFiChain without any code changes or forks. The example is taken from https://github.com/fuxingloh/dfi-rawtx-bitcoinjs and to be included into jellyfish repo."
I have updated this PR to follow through with that instead of using the default bitcoinjs client.
Hence, instead of creating @defichain/bitcoinjs, I've updated tests in @defichain/jellyfish-transaction/__tests__ to import the original bitcoinjs-lib and test its compatibility instead.

Due to the introduction of #1676 where we introduce: "This PR contains no code change on how to use bitcoinjs-lib for DeFiChain without any code changes or forks. The example is taken from https://github.com/fuxingloh/dfi-rawtx-bitcoinjs and to be included into jellyfish repo."
I have updated this PR to follow through with that instead of using the default bitcoinjs client.
Hence, instead of creating @defichain/bitcoinjs, I've updated tests in @defichain/jellyfish-transaction/__tests__ to import the original bitcoinjs-lib and test its compatibility instead.

[ ] @canonbrother do take a look and add an "LGTM" if the changes are acceptable. Thanks!

yea LGTM! :pray:

authors: canonbrother fuxingloh

repo: JellyfishSDK/jellyfish


text:
Error receiving broadcast

您好,看到友盟上收集的一些bug,我个人对此不是很领悟,定位到了本库的代码。错误如下，您看看。
java.lang.RuntimeException: Error receiving broadcast Intent { act=intent.action.ACTION_LEB_IPC flg=0x10 (has extras) } in com.jeremyliao.liveeventbus.ipc.receiver.LebIpcReceiver@d255fd
at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$getRunnable$0(LoadedApk.java:1407)
at android.app.-$$Lambda$LoadedApk$ReceiverDispatcher$Args$_BumDX2UKsnxLVrE6UJsJZkotuA.run(Unknown Source:2)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:201)
at android.app.ActivityThread.main(ActivityThread.java:6806)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)
Caused by: java.lang.RuntimeException: Parcelable encountered ClassNotFoundException reading a Serializable object (name = com.douyu.yuba.bean.BasePostNews)
at android.os.Parcel.readSerializable(Parcel.java:2941)
at android.os.Parcel.readValue(Parcel.java:2722)
at android.os.Parcel.readArrayMapInternal(Parcel.java:3045)
at android.os.BaseBundle.initializeFromParcelLocked(BaseBundle.java:288)
at android.os.BaseBundle.unparcel(BaseBundle.java:232)
at android.os.BaseBundle.getString(BaseBundle.java:1164)
at android.content.Intent.getStringExtra(Intent.java:7464)
at com.jeremyliao.liveeventbus.ipc.receiver.LebIpcReceiver.onReceive(LebIpcReceiver.java:23)
at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$getRunnable$0(LoadedApk.java:1397)
... 8 more
Caused by: java.lang.ClassNotFoundException: com.douyu.yuba.bean.BasePostNews
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:453)
at android.os.Parcel$2.resolveClass(Parcel.java:2927)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1615)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1520)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1776)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:373)
at android.os.Parcel.readSerializable(Parcel.java:2935)
... 16 more
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.douyu.yuba.bean.BasePostNews" on path: DexPathList[[zip file "/system/framework/android.test.mock.jar", zip file "/system/framework/android.test.runner.jar", zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file "/data/app/com.octinn.birthdayplus-DPL2G8XtXYl4Pwq0a4HLUw==/base.apk"],nativeLibraryDirectories=[/data/app/com.octinn.birthdayplus-DPL2G8XtXYl4Pwq0a4HLUw==/lib/arm, /data/app/com.octinn.birthdayplus-DPL2G8XtXYl4Pwq0a4HLUw==/base.apk!/lib/armeabi, /system/lib, /vendor/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:171)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
... 25 more
java.lang.RuntimeException: Parcelable encountered ClassNotFoundException reading a Serializable object (name = com.douyu.yuba.bean.BasePostNews)
at android.os.Parcel.readSerializable(Parcel.java:2941)
at android.os.Parcel.readValue(Parcel.java:2722)
at android.os.Parcel.readArrayMapInternal(Parcel.java:3045)
at android.os.BaseBundle.initializeFromParcelLocked(BaseBundle.java:288)
at android.os.BaseBundle.unparcel(BaseBundle.java:232)
at android.os.BaseBundle.getString(BaseBundle.java:1164)
at android.content.Intent.getStringExtra(Intent.java:7464)
at com.jeremyliao.liveeventbus.ipc.receiver.LebIpcReceiver.onReceive(LebIpcReceiver.java:23)
at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$getRunnable$0(LoadedApk.java:1397)
at android.app.-$$Lambda$LoadedApk$ReceiverDispatcher$Args$_BumDX2UKsnxLVrE6UJsJZkotuA.run(Unknown Source:2)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:201)
at android.app.ActivityThread.main(ActivityThread.java:6806)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)
Caused by: java.lang.ClassNotFoundException: com.douyu.yuba.bean.BasePostNews
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:453)
at android.os.Parcel$2.resolveClass(Parcel.java:2927)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1615)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1520)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1776)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:373)
at android.os.Parcel.readSerializable(Parcel.java:2935)
... 16 more
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.douyu.yuba.bean.BasePostNews" on path: DexPathList[[zip file "/system/framework/android.test.mock.jar", zip file "/system/framework/android.test.runner.jar", zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file "/data/app/com.octinn.birthdayplus-DPL2G8XtXYl4Pwq0a4HLUw==/base.apk"],nativeLibraryDirectories=[/data/app/com.octinn.birthdayplus-DPL2G8XtXYl4Pwq0a4HLUw==/lib/arm, /data/app/com.octinn.birthdayplus-DPL2G8XtXYl4Pwq0a4HLUw==/base.apk!/lib/armeabi, /system/lib, /vendor/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:171)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
... 25 more
java.lang.ClassNotFoundException: com.douyu.yuba.bean.BasePostNews
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:453)
at android.os.Parcel$2.resolveClass(Parcel.java:2927)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1615)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1520)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1776)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:373)
at android.os.Parcel.readSerializable(Parcel.java:2935)
at android.os.Parcel.readValue(Parcel.java:2722)
at android.os.Parcel.readArrayMapInternal(Parcel.java:3045)
at android.os.BaseBundle.initializeFromParcelLocked(BaseBundle.java:288)
at android.os.BaseBundle.unparcel(BaseBundle.java:232)
at android.os.BaseBundle.getString(BaseBundle.java:1164)
at android.content.Intent.getStringExtra(Intent.java:7464)
at com.jeremyliao.liveeventbus.ipc.receiver.LebIpcReceiver.onReceive(LebIpcReceiver.java:23)
at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$getRunnable$0(LoadedApk.java:1397)
at android.app.-$$Lambda$LoadedApk$ReceiverDispatcher$Args$_BumDX2UKsnxLVrE6UJsJZkotuA.run(Unknown Source:2)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:201)
at android.app.ActivityThread.main(ActivityThread.java:6806)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.douyu.yuba.bean.BasePostNews" on path: DexPathList[[zip file "/system/framework/android.test.mock.jar", zip file "/system/framework/android.test.runner.jar", zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file "/data/app/com.octinn.birthdayplus-DPL2G8XtXYl4Pwq0a4HLUw==/base.apk"],nativeLibraryDirectories=[/data/app/com.octinn.birthdayplus-DPL2G8XtXYl4Pwq0a4HLUw==/lib/arm, /data/app/com.octinn.birthdayplus-DPL2G8XtXYl4Pwq0a4HLUw==/base.apk!/lib/armeabi, /system/lib, /vendor/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:171)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
... 25 more
java.lang.ClassNotFoundException: Didn't find class "com.douyu.yuba.bean.BasePostNews" on path: DexPathList[[zip file "/system/framework/android.test.mock.jar", zip file "/system/framework/android.test.runner.jar", zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file "/data/app/com.octinn.birthdayplus-DPL2G8XtXYl4Pwq0a4HLUw==/base.apk"],nativeLibraryDirectories=[/data/app/com.octinn.birthdayplus-DPL2G8XtXYl4Pwq0a4HLUw==/lib/arm, /data/app/com.octinn.birthdayplus-DPL2G8XtXYl4Pwq0a4HLUw==/base.apk!/lib/armeabi, /system/lib, /vendor/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:171)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:453)
at android.os.Parcel$2.resolveClass(Parcel.java:2927)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1615)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1520)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1776)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:373)
at android.os.Parcel.readSerializable(Parcel.java:2935)
at android.os.Parcel.readValue(Parcel.java:2722)
at android.os.Parcel.readArrayMapInternal(Parcel.java:3045)
at android.os.BaseBundle.initializeFromParcelLocked(BaseBundle.java:288)
at android.os.BaseBundle.unparcel(BaseBundle.java:232)
at android.os.BaseBundle.getString(BaseBundle.java:1164)
at android.content.Intent.getStringExtra(Intent.java:7464)
at com.jeremyliao.liveeventbus.ipc.receiver.LebIpcReceiver.onReceive(LebIpcReceiver.java:23)
at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$getRunnable$0(LoadedApk.java:1397)
at android.app.-$$Lambda$LoadedApk$ReceiverDispatcher$Args$_BumDX2UKsnxLVrE6UJsJZkotuA.run(Unknown Source:2)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:201)
at android.app.ActivityThread.main(ActivityThread.java:6806)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)

bug定位到了本库的代码

应该是跨进程通信反序列化的时候出错了，具体原因我再看下

看了一下log，感觉应该是本来用于在intent中存放string类型的字段，被放入了bean，注意到你使用的不是最新的版本，可以使用最新1.5.3版本试下

看了一下log，感觉应该是本来用于在intent中存放string类型的字段，被放入了bean，注意到你使用的不是最新的版本，可以使用最新1.5.3版本试下

哦十分感谢。

应该是跨进程通信反序列化的时候出错了，具体原因我再看下

@JeremyLiao  请看我的issue  81，推测错误原因如下
斗鱼使用了LiveDataBus发送了一个跨进程的序列化事件，而我们的app支持了跨进程通信然后捕获这个事件的时候无法解析这个斗鱼的bean类造成的崩溃。
如果我们是单进程的app的话那么直接注销掉supportBroadcast即可，如果我们支持多进程通信的话，如何控制和其他进程通信呢？

authors: JeremyLiao Rocketer2018 liangchaojie

repo: JeremyLiao/LiveEventBus


text:
Client side validation for nested model

Hi,
I have a complex type. I used it for multiple parent properties.
I want to validate this complex type for some of parent properties.
Validation is working at server side but not client side (unobtrusive).
Client side validation is working when I add validator attribute to complex type, but I don't want to validate for every parent properties.
How can I configure this situation?
[Validator(typeof(ParentValidator))]
public class Parent
{
    public LocalizedString Name { get; set; }
    public LocalizedString Description { get; set; }
}

[ComplexType]
//[Validator(typeof(LocalizedValidator))]
public class LocalizedString
{
    public string Turkish { get; set; }
    public string English { get; set; }
}

public class ParentValidator : AbstractValidator<Parent>
{
    public ParentValidator()
    {
        // Name Required
        RuleFor(f => f.Name).SetValidator(new LocalizedValidator());
        // Description Optional
    }
}

public class LocalizedValidator : AbstractValidator<LocalizedString>
{
    public LocalizedValidator()
    {
        RuleFor(f => f.Turkish).NotNull();
    }
}

This isn't supported I'm afraid - you'll need to either add the validator attribute to the complex type, or not use client-side validation for this case.
Personally I'd suggest creating flat, view-specific models that don't require the use of complex types - it makes working with MVC much easier.

I must use complex type for localization.
For solution, I create a required complex type extends from other extend type and add validator attribute to this.
Thans for your suggestion.
[ComplexType]
[Validator(typeof(LocalizedValidator))]
public class LocalizedStringRequired : LocalizedString
{ }

[ComplexType]
public class LocalizedString
{
    public string Turkish { get; set; }
    public string English { get; set; }
}

[Validator(typeof(ParentValidator))]
public class Parent
{
    public LocalizedStringRequired Name { get; set; }
    public LocalizedString Description { get; set; }
}

authors: JeremySkinner pirimoglu

repo: JeremySkinner/FluentValidation


text:
Start Read me

Tertiary Goal after wireframes You can find detailed read mes that meet a high quality .

Issue upgraded to completing read me


text:
Bot still reinitializing a Instance Class

Hello,
I have Bot class, in class constructor i have initializing of MySQL connection etc etc..
public botClass(Bot bot, SteamID sid)
            : base(bot, sid)
{
Log.Debug("Initialized");
...

But, when Steam Trade Offer commes, and OnNewTradeOffer ends, the botClass is reinitialized, so again it write a "Initialized".
How to disable this feature or where i can a initialize a main stuff?
Thanks

...what?

SteamBot creates unique UserHandler instance per user. Either make your stuff static or modify Bot.cs.

This is not a bug. If you want it to be run only once, put the code in OnLoginCompleted, and make sure you use a condition like if (!connectedAlready) because re-authentication might also cause OnLoginCompleted to run again (not quite sure if this is the case, but best to be safe).

authors: BlueRaja GAMELASTER scholtzm waylaidwanderer


text:
web: make applyAttrs in the second overloaded TagElement nullable to be consistent with the first one

From what I understand, for non-inline functions passing null is a bit more efficient than passing an empty lambda, and that's why most functions in this library have the signature attrs: AttrBuilderContext<HTMLElement>? = null. Then there is no reason the second overloaded TagElement function shouldn't be like that, so I guess this is a small mistake that should be fixed.

I accidentally created the same PR #1822

thanks! lgtm

authors: ShreckYe eymar hfhbd

repo: JetBrains/compose-jb


text:
Make default menu bar items (file, edit, and so on)

Something like this:

So you don't need to make every menu item from scratch by yourself.

Not sure if this is a feature request for Compose itself, guess creating library on top of Compose with such functionality is fully possible.

I think it can be a built-in feature of Compose for Desktop. It will be pretty useful, so you - again - don't need to write that functionality by yourself

We support building ecosystem around Compose, and feature like that seems good candidate for an extension library.

Well, without this feature I lose functionality to copy and paste text, minimise windows, go to fullscreen(on a Mac btw), and many more, without explicitly declaring the default menu items by myself. I need to manually create every menu item to make those basic functions work. I think that those "basic" menu items need to be right in the Compose, so we don't need to use an external library. That basic functionality needs to be in the core, by my opinion.

Please check the following ticket on YouTrack for follow-ups to this issue. GitHub issues will be closed in the coming weeks.

authors: GGorAA okushnikov olonho voltangle

repo: JetBrains/compose-multiplatform


text:
iOS TextField, Add support for keyboardOptions in iOS

Right now if to set keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number) to TextField it works for Android but is ignored for iOS.
Android:

iOS:

The fix for that will be available in the next release of Compose Multiplatform 1.5.0 (was fixed in the related issue #2735)

Please check the following ticket on YouTrack for follow-ups to this issue. GitHub issues will be closed in the coming weeks.

authors: alexzaitsev mazunin-v-jb okushnikov


text:
Request to support BasicTextField2

seems not supported in mutiplatform yet

BasicTextField2 was added in Jetpack Compose 1.6.0, so you need to use CMP 1.6.0-beta01

erm....the code says it is still not supported !

Hello!
For now, we don't support BasicTextField2, but we are working on it.

Initial support for BasicTextField2 is in 1.6.10-beta01

Are there any updates on this?

Please check the following ticket on YouTrack for follow-ups to this issue. GitHub issues will be closed in the coming weeks.

authors: Cuyer chrisbanes dhakehurst m-sasha mazunin-v-jb okushnikov


text:
IllegalStateException accessing state in non-AWT thread

Describe the bug
It is unclear how robustly Compose for Desktop allows for accessing state from non-UI threads. Often, it just works. But other times, it does not.
The compose snapshot system is supposed to be thread-safe. However, Swing/AWT is designed for all UI operations to occur on a single thread. My abstract understanding, which may be flawed, is that Desktop Compose creates a "safety layer" so that users can access state from any thread, and the underlying library will ensure that all AWT/Swing operations occur on the UI thread. I cannot find documentation on this, but this is how it seems to work 90-99% of the time. Occasionally, however, it just doesn't work and we get an exception like:
Click here to expand stack trace

Caused by: java.lang.IllegalStateException: Method should be called from AWT event dispatch thread
at org.jetbrains.skiko.SkiaLayer.needRedraw(SkiaLayer.awt.kt:517)at androidx.compose.ui.scene.skia.WindowSkiaLayerComponent.onComposeInvalidation(WindowSkiaLayerComponent.desktop.kt:110)
at androidx.compose.ui.scene.ComposeSceneMediator.onComposeInvalidation(ComposeSceneMediator.desktop.kt:465)
at androidx.compose.ui.scene.ComposeContainer$createComposeScene$1.invoke(ComposeContainer.desktop.kt:254)
at androidx.compose.ui.scene.ComposeContainer$createComposeScene$1.invoke(ComposeContainer.desktop.kt:254)
at androidx.compose.ui.scene.BaseComposeScene.invalidateIfNeeded(BaseComposeScene.skiko.kt:100)
at androidx.compose.ui.scene.BaseComposeScene$snapshotInvalidationTracker$1.invoke(BaseComposeScene.skiko.kt:57)
at androidx.compose.ui.scene.BaseComposeScene$snapshotInvalidationTracker$1.invoke(BaseComposeScene.skiko.kt:57)
at androidx.compose.ui.node.CommandList.add(SnapshotInvalidationTracker.skiko.kt:130)
at androidx.compose.ui.node.SnapshotInvalidationTracker$snapshotObserver$1.invoke(SnapshotInvalidationTracker.skiko.kt:75)
at androidx.compose.ui.node.SnapshotInvalidationTracker$snapshotObserver$1.invoke(SnapshotInvalidationTracker.skiko.kt:71)at androidx.compose.runtime.snapshots.SnapshotStateObserver.sendNotifications(SnapshotStateObserver.kt:83)
at androidx.compose.runtime.snapshots.SnapshotStateObserver.access$sendNotifications(SnapshotStateObserver.kt:43)
at androidx.compose.runtime.snapshots.SnapshotStateObserver$applyObserver$1.invoke(SnapshotStateObserver.kt:50)
at androidx.compose.runtime.snapshots.SnapshotStateObserver$applyObserver$1.invoke(SnapshotStateObserver.kt:48)
at androidx.compose.runtime.snapshots.SnapshotKt.advanceGlobalSnapshot(Snapshot.kt:1816)
at androidx.compose.runtime.snapshots.SnapshotKt.advanceGlobalSnapshot(Snapshot.kt:1831)
at androidx.compose.runtime.snapshots.SnapshotKt.access$advanceGlobalSnapshot(Snapshot.kt:1)
at androidx.compose.runtime.snapshots.GlobalSnapshot.notifyObjectsInitialized$runtime(Snapshot.kt:1360)
at androidx.compose.runtime.snapshots.Snapshot$Companion.notifyObjectsInitialized(Snapshot.kt:567)
at androidx.compose.runtime.DerivedSnapshotState.currentRecord(DerivedState.kt:246)at androidx.compose.runtime.DerivedSnapshotState.getValue(DerivedState.kt:269)
at matt.launch.proctool.ProcessToolCli$run$1$1$1$1.invokeSuspend(proctool.kt:141)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104)
at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:111)
at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:99)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:811)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:715)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:702)

This stack trace is from a real application, not a test or a reproducer. I have spent a long time trying to create a reproducer, but I have to give up because I just cannot cause this error to happen again.
If I keep running the application and trying to repeat the steps that caused the above error, I cannot reproduce it.
Furthermore, I have tried to reproduce this by creating a minimal reproducer. I think that this error is caused by something having to do with accessing state from a different thread, so I tried to create a reproducer for this.
Click here to see (failed) reproducer code

import androidx.compose.foundation.layout.Column
import androidx.compose.material3.Button
import androidx.compose.material3.Text
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue
import androidx.compose.ui.window.Window
import androidx.compose.ui.window.application
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import kotlin.random.Random
import kotlin.time.Duration.Companion.milliseconds

fun main() {
    var number by mutableStateOf(0)
    var number2 by mutableStateOf(500)
    val text by derivedStateOf {
        number2++
        number.toString()
    }
    val text2 by derivedStateOf { number2.toString() }
    var jitterBase by mutableStateOf<Int?>(null)
    val slowDerived by derivedStateOf {
        Thread.sleep(200)
        number.toString()
    }
    var slowDerivedDest by mutableStateOf<String>("")
    application {
        Window(
            onCloseRequest = ::exitApplication
        ) {
            LaunchedEffect(Unit) {
                withContext(Dispatchers.IO) {
                    launch {
                        while (true) {
                            delay(100.milliseconds)
                            number = text.toInt() + 1
                            jitterBase?.let {
                                window.setLocation(it + Random.nextInt(-5, 5), window.y)
                            }
                        }
                    }
                    launch {
                        while (true) {
                            delay(100.milliseconds)
                            slowDerivedDest = slowDerived
                        }
                    }
                }
            }
            Column {
                Text(text)
                Text(text2)
                Button(
                    onClick = {
                        jitterBase = if (jitterBase == null) window.x else null
                    }
                ) {
                    Text("Toggle Jitter")
                }
                Text(slowDerivedDest)
            }
        }
    }
}

This code failed to reproduce the bug. Even though I modify UI state at a very fast rate from multiple non-UI threads, I get no exceptions. Therefore, this is a deeper issue. Whatever caused the above exception is one issue, but possibly a smaller and more contained one. A possibly more meta issue here is that Desktop Compose users cannot predict when accessing state from non-UI threads is bad and when it is not.
I have tried to dig into the machinery. I read through some of the implementations along the stack trace in the exception above. I also tried to use a debugger. I was able to gather a bit of hopefully useful information, but it is not much.
I learned that a lot of the code in the deepest layers (SwingSkiaLayerComponent, ComposeSceneMediator, for example) seems to usually run at regular intervals to render frames. This frame rendering always occurs on the UI thread.
However, the compose notification machinery somehow allows non-UI threads to "leak" into these same operations which usually only run in the UI frame-rendering loop.
One potentially important observation I made is that in my reproducer, when I placed a breakpoint in Snapshot.kt#advanceGlobalSnapshot at the line that says val observers = applyObservers, I found that this line never executed in my reproducer. This means that whenever the global snapshot was advanced in my reproducer, the global snapshot had not been modified. If you look closely at the stacktrace from when the exception was thrown, you will see that the code entered this block, and therefore the global snapshot had been modified. I could not figure out how to reproduce the particular situation of calling "advanceGlobalSnapshot" with a modified global snapshot state, but perhaps this has something to do with the issue.
Another potentially important observation I made is that the error "Method should be called from AWT event dispatch thread" is called from skiko code, not on awt code. SkiaLayer.needsRedraw is the precise method that threw an exception. I was curious about exactly what UI operation was being done if the thread were to continue, so I looked into Redrawer.needRedraw.  needRedraw has many implementations, but I checked MetalRedrawer just as an example. I see it calls frameDispatcher.scheduleFrame, and all that this scheduleFrame function does is send a signal to another coroutine which likely is drawing frames in the proper frame.
Therefore, if my understanding is correct, at least for the MetalRedrawer implementation the exception thrown from SkiaLayer.needsRedraw probably isn't even neccesarry! Maybe the exception can just be removed? Of course, I suppose it must have been added for a reason so maybe there are other implementations of Redrawer that actually must call needRedraw on the AWT thread. But if that is the case, I wonder if the solution here could possibly be to just ensure that every implementation of Redrawer is safe to call needRedraw from any thread, as it seems to be with MetalRedrawer.
To conclude: It is very unclear and unpredictable when and where it is safe to modify UI state from different threads. It is impractical to ensure every single UI state access happens from a UI thread, especially when we are at the same time trying so hard to keep heavy work off the UI thread so that the UI runs smooth. The fact that accessing UI state from non-UI threads works 95-99% of the time seems to imply it should be 100%. Otherwise, if the design decision for this library is that it will never be fully safe to access UI state from non-UI threads, then maybe this library should strictly enforce that everywhere by throwing exceptions such that my reproducer above does fail.  Another possible approach towards solving this is to implement more fail-fast behavior so that if errors like the one I had ever pop up, there is a more clear cause.
Affected platforms
Deskop
Versions

Kotlin version*: 2.0.0-Beta5
Compose Multiplatform version*: 1.6.1
OS version(s)* (required for Desktop and iOS issues): Mac
OS architecture (x86 or arm64): arm64
JDK (for desktop issues): 17

Expected behavior

Clarity about what can be done in what threads
More clear exceptions, instead of cryptic ones like the one above, with more fail-fast behavior to aid debugging
More predictability and determinism with regard to how safe it is to use non-UI threads
Either prevent the error I got above on the library side, or somehow help me know what I need to do on my end to prevent it.

I think this is just a bug; there's no deep issue here.
BaseComposeScene.invalidate is not guaranteed to run on the main thread, therefore ComposeSceneMediator.onComposeInvalidation needs to check and schedule its code to run on the main thread if the current thread is different.
@igordmn ?

Same happens here - #4472

Please check the following ticket on YouTrack for follow-ups to this issue. GitHub issues will be closed in the coming weeks.

authors: alexzhirkevich m-sasha mgroth0 okushnikov


text:
When setting the title to Chinese, Chinese garbled characters appear。

Hello, I set the title to Chinese and specified the Chinese font (the Chinese font is installed on the computer), but it is displayed as garbled characters. There is no problem with English.

Could you try to make the "Keep ratio" text in Chinese? :
                        Text(
                            text = "Keep ratio:",   // <-- Use Chinese characters
                            modifier = Modifier
                                .align(CenterVertically),
                             // Your font:
                             fontFamily = FontFamily(Font("SimHei"))
                        )

Will it be displayed correctly?

Hello, I modified it according to the method you gave, and it reported an error, as shown in the following figure:

However, when I use the built-in parameters such as fontFamily = FontFamily.Serif, or do not use the fontFamily parameter, it can display Chinese normally.

Maybe try the font family as "宋体" (the Chinese name for SimSun)?
Anyways, you will likely want to bundle this font with your application. In this case, place simsun.ttc file in your resources folder and then load it in your app, e.g.:
val resourceFont = FontFamily(
    Font(resource = "fonts/simsun.ttf", weight = FontWeight.Normal)
)

Text(
    text = "保持比例:",
    modifier = Modifier.align(Alignment.CenterVertically),
    fontFamily = resourceFont
)

Yes, putting the font resource in the resource file can make the controls in the Text display Chinese fonts correctly, but how to use it in the Letsplot control?

Good question. Indeed, you can't use it in lets-plot.
Check what fonts are available in the app:
val fontNames = java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().availableFontFamilyNames

Maybe you will see simsun font under a different name like "SimSun" or Chinese name?
If you don't see it you can try to add it to the graphic env:
import java.awt.GraphicsEnvironment
import java.awt.Font as AwtFont

val customFont = AwtFont.createFont(AwtFont.TRUETYPE_FONT, File(path))
GraphicsEnvironment.getLocalGraphicsEnvironment().registerFont(customFont)

But make sure you are using the actual name of simsun font in system.

Hello, I typed out all the font names and used the fonts installed on the computer, but it still displays garbled characters. Is there something wrong with the method I used?

Hello, there is a strange phenomenon. I set the properties of plotSubTitle and axisTitle in the code, and they can display Chinese correctly, but the Chinese setting of plotTitle does not take effect. Why?

@changhexuefei Interesting! I'll investigate why this is happening.

authors: IKupriyanov-HORIS alshan changhexuefei

repo: JetBrains/lets-plot-skia


text:
scale_x_reverse breaks datetime formatting

Example:
df = pd.DataFrame({
    "x": pd.date_range(start="1-1-2000", end="1-1-2021", freq="10YE"),
    "y": [1, 3, 2],
})
ggplot(df, aes("x", "y")) + geom_point() + scale_x_reverse()

Output:

Without scale_x_reverse() formatting is correct:

According to the documentation, scale_x_reverse() corresponds to a continuous scale. For the Lets-Plot API it is more natural to add a new function that knows how to reverse the date scale - something like scale_x_datetime_reversed().

repo: JetBrains/lets-plot


text:
How to use the BrowserSpriteSymbol type in typescript？

Do you want to request a feature, report a bug or ask a question?
question
What is the expected behavior?
interface IconProps {
    type: BrowserSpriteSymbol
}

Please tell us about your environment:

Node.js version: 10.14.1
webpack version: last
svg-sprite-loader version:  last
OS type & version: Windows 10

Other information (e.g. detailed explanation, stacktraces, related issues, suggestions how to fix, links for us to have context, eg. stackoverflow, gitter, etc)
When I introduced the svg file with require, I got a BrowserSpriteSymbol type, but I don't know how to use it as a property type. Can you tell me? Thank you!

I added next interface in my project
interface BrowserSpriteSymbol {
  id: string;
  viewBox: string;
  content: string;
  node: SVGSymbolElement;
}

@etozhkirill could you please make a PR with typings?

authors: etozhkirill kaysonwu kisenka

repo: JetBrains/svg-sprite-loader


text:
Add Colegio Intisana

Add Colegio Intisana

Tanks..!!! :+1: :earth_americas:

repo: JetBrains/swot


text:
It was added a university of Colombia callled Unversidad Tecnologica …

Universidad Tecnologica de Pereira is one of the best of Colombia, I hope you add this university, thanks!!

@ourhyt I am sorry, the domain utp.edu.co is removed from our trusted domains list because it was abused in the past. If you are the student of this school, please enroll to GitHub Student Developer Program. Then apply for JetBrains educational subscription with your GitHub account (GitHub tab at https://www.jetbrains.com/shop/eform/students).

authors: ourhyt philipto


text:
Add University of Management and Technology HCMC

Add University of Management and Technology HCMC

@tinkismeeee First stage of verification passed, official domain for Trường Đại học Quản lý và Công nghệ TP.HCM is st.umt.edu.vn as far as I verified. This is just an informational note. Pull request is still in the review. I appreciate your patience while waiting for the final decision.

@tinkismeeee The domain registrant for st.umt.edu.vn is CÔNG TY TNHH ĐẦU TƯ PHÁT TRIỂN GIÁO DỤC TRƯỜNG ĐẠI HỌC QUẢN LÝ VÀ CÔNG NGHỆ THÀNH PHỐ HỒ CHÍ MINH (Education Development Investment Company Limited University of Ho Chi Minh City Management and Technology). This is just an informational note. Pull request is still in the review. I appreciate your patience while waiting for the final decision.

@tinkismeeee Thank you for your patience while waiting for a review and processing your request. Pull request merged.
Please start requesting the licenses in about an hour, to let the changes to propagate through our system.

authors: philipto tinkismeeee


text:
Add Universidad de Buenos Aires Domain

Added support for Universidad de Buenos Aires students

@mnrr2014 Thank you for your patience while waiting for a review and processing your request. Pull request merged.
Please start requesting the licenses in about an hour, to let the changes to propagate through our system.


text:
PRIVATE ACIBADEM SCHOOLS

School website is https://acibadem.k12.tr. Thank you for considering our request.

@moradchalaby Thank you for your patience while waiting for a review and processing your request. Pull request merged. Please start applying for JetBrains educational subscription at https://www.jetbrains.com/shop/eform/students in an hour, to allow the changes to propagate through JetBrains systems.

authors: moradchalaby philipto


text:
Add African Leadership University faculty domain

African Leadership University faculty domain

@dvorgbe Pull request merged. Thank you!

authors: dvorgbe philipto


text:
Added new domain cesde.net

url : www.cesde.edu.co

@juanest125 Please give us more info about this school:

an URL of a page on the official website where an IT-related long-term (>1 year) course is offered by the university; the existing description I can explore at the website do not specify a duration of the educational programs
an URL of a page or another proof (.pdf or a screenshot are OK) showing that the university recognizes the domain which you are submitting as an official email domain for the students.

@juanest125 I am sorry, this request remains unanswered for a while. I have to close it without merging. Please reopen and comment if you have an update regarding the abovementioned issue. Thank you for the understanding!


text:
Rename lib/domains/se/thegameassembly.txt to lib/domains/se/thegameas…

Rename lib/domains/se/thegameassembly.txt to lib/domains/se/thegameassembly/studerande.txt

Domain stucture incorrect compared to students email address

@Emitfonos There is no necessity to change it to a subdomain-related filename, the subdomains are included by default. Please give the changes to propagate through the system for 15-30 minutes before requesting free license, and then it will work. If it will not, please email to support@jetbrains.com, we'll look into the issue.

authors: Emitfonos philipto


text:
teamuni

This is a domain of Team University

@Odilbukh lib/domains/uz/teamuni: this request has an incorrect file path format, please ensure that you are familiar with     this repository rules located at the bottom of this page and change     your request accordingly. If you don't know how to change request, close it and open a new one.     If you are not able to make the pull request according the instructions, please send us an email to support@jetbrains.com. Please mention this request URL in the message.

@Odilbukh I renamed the file to conform the repository rules. Pull request merged. Thank you!

authors: Odilbukh philipto


text:
Added Albert-Einstein-Gymnasium Duisburg-Rumeln and FernUniversität in Hagen

Added Albert-Einstein-Gymnasium.
Homepage: https://aeg-duisburg.de
This is only the Mail Domain for Students and Teachers of the Albert-Einstein-Gymnasium redirecting to I-Serv.
The other one is the Domain for the University "FernUniversität in Hagen" (fernuni-hagen.de or studium.fernuni-hagen.de) this Subdomain is only for students.

@K0XI I have to close this request without merging, because you requested to add a non-existent domain to this repository: Host fernuni-hagen.studium not found: 3(NXDOMAIN) Please ensure that you are familiar with this repository rules located at the bottom of this page and submit a new request with the correct information. Thank you for understanding!


text:
Trying to learn from your code

Hi,
I'm learning how to create a ioBroker interface and looking into your code because I will also use the deconz interface in my project.  However, I have some problems understanding

After cloning the repo and doing npm install I have 119 errors in the code.  Mostly related to the problem that there is no Adapter class in the '@iobroker/adapter-core' module.
I suspect the deconz adapter transpiled from typescript ?  If so, where can I find the typescript code ?

Kind Regards

Do not use this code as reference, because it is not using the latest adapter base.
Create a new adapter with adapter creator: https://github.com/ioBroker/create-adapter#readme
Also it is using the deprecated request package, which should not be used in new projects.
I have no clue why you are getting this errors. Do you get this errors in your IDE or if you try to running the adapter?
This adapter is js only, no typescript.

OK, thanks, I'll have a look there.

authors: Jey-Cee stefaanv


text:
Newbie using to install this plugin

Hi, im quite new to the whole vim experience I came across your plugin and it looks awesome however im having some trouble trying to install it correctly I keep getting the following error:
Error while calling lua chunk: ...ck/packer/start/plenary.nvim/lua/plenary/async/async.lua:18: The coroutine failed with this
message: .../site/pack/packer/start/plenary.nvim/lua/plenary/job.lua:405: Failed to spawn process: {
_additional_on_exit_callbacks = {},
_shutdown_check = <userdata 1>,
_stderr_results = {},
_stdout_results = {},
user_on_exit = <function 1>,
args = { "-sSL", "-D", "/tmp/plenary_curl_f8ef4cfe.headers", "--compressed", "-X", "GET", "http://en.wikipedia.org/wiki/Michael_Col
lins(astronaut)" },
command = "curl",
enable_handlers = true,
enable_recording = true,
interactive = true,
pid = "EMFILE: too many open files",
stderr = <userdata 2>,
stdin = <userdata 3>,
stdout = <userdata 4>,
user_data = {},
 = <1>{
__index = <table 1>,
_create_uv_options = <function 2>,
_execute = <function 3>,
_pipes_are_closed = <function 4>,
_prepare_pipes = <function 5>,
_reset = <function 6>,
_shutdown = <function 7>,
_stop = <function 8>,
add_on_exit_callback = <function 9>,
after = <function 10>,
after_failure = <function 11>,
after_success = <function 12>,
and_then = <function 13>,
and_then_on_failure = <function 14>,
and_then_on_failure_wrap = <function 15>,
and_then_on_success = <function 16>,
and_then_on_success_wrap = <function 17>,
and_then_wrap = <function 18>,
chain = <function 19>,
chain_status = <function 20>,
co_wait = <function 21>,
is_job = <function 22>,
join = <function 23>,
new = <function 24>,
pid = <function 25>,
result = <function 26>,
send = <function 27>,
shutdown = <function 28>,
start = <function 29>,
stderr_result = <function 30>,
sync = <function 31>,
wait = <function 32>
}
}
stack traceback:
.../site/pack/packer/start/plenary.nvim/lua/plenary/job.lua:405: in function '_execute'
.../site/pack/packer/start/plenary.nvim/lua/plenary/job.lua:448: in function 'start'
...site/pack/packer/start/plenary.nvim/lua/plenary/curl.lua:288: in function 'get'
.../pack/packer/start/nvim-html-css/lua/html-css/remote.lua:24: in function 'get_remote_styles'
.../pack/packer/start/nvim-html-css/lua/html-css/remote.lua:41: in function 'init'
...te/pack/packer/start/nvim-html-css/lua/html-css/init.lua:66: in function <...te/pack/packer/start/nvim-html-css/lua/html-c
ss/init.lua:65>
stack traceback:
[C]: in function 'error'
...ck/packer/start/plenary.nvim/lua/plenary/async/async.lua:18: in function 'callback_or_next'
...ck/packer/start/plenary.nvim/lua/plenary/async/async.lua:45: in function 'step'
...ck/packer/start/plenary.nvim/lua/plenary/async/async.lua:48: in function 'execute'
...ck/packer/start/plenary.nvim/lua/plenary/async/async.lua:108: in function 'run'
...te/pack/packer/start/nvim-html-css/lua/html-css/init.lua:65: in function <...te/pack/packer/start/nvim-html-css/lua/html-c
ss/init.lua:36>
[C]: in function 'require'
/Users/wouter/.config/nvim/after/plugin/cmp.lua:31: in main chunk
this is my cmp.lua :
local cmp_status, cmp = pcall(require, "cmp")     ■ Unused local cmp_status.
29 cmp.setup({
28         sources = cmp.config.sources {
27                         {
26                             name = "html-css",
25                             option = {
24                                 max_count = {}, -- not ready yet
23                                 enable_on = {
22                                     "html",
21                                     "php"
20                                 }, -- set the file types you want the plugin to work on
19                                 file_extensions = { "css", "sass", "less" },
18                                 style_sheets = {
17                                     -- example of remote styles, only css no js for now
16                                     "https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css",
15                                 },
14                             },
13                             },
12
11         },
10          -- enable filename path for css config
9         formatting = {
8                 format = function(entry, vim_item)
7                     if entry.source.name == "html-css" then
6                         vim_item.menu = entry.source.menu
5                     end
4                     return vim_item
3                 end
2         }
1 })
31  require("html-css"):setup();
and this is what I have in my packer.lua :
use("Jezda1337/nvim-html-css")

I didn't test on Packer but, can you try this? and do you have installed dependencies?
use {
"Jezda1337/nvim-html-css"
requires = {"nvim-treesitter/nvim-treesitter", "nvim-lua/plenary.nvim"},
config = function() require("html-css"):setup() end,
}

Thanks for the quick response! The error seems to go away with this ^ . However when I try it in a html file it doesn't work.
I have installed the dependencies aswel "nvim-lua/plenary.vim" and "nvim-treesitter/nvim-treesitter"

You need to install this as well: fd

I've read in another issue about this I installed it already with brew install fd.

Can you share CmpStatus log?

when I run :CmpStatus I get this:
ready source names

buffer
path
luasnip

unavailable source names

nvim_lsp:lua_ls

unused source names

calc
emoji
look
nvim_lua
ultisnips
spell
TabNine

Do you have .git/ folder or pacakge.json file inside ur root project? this two trigger plugin to be active in current work directory

yes I have a .git/ folder in the root of my documents this is also where I open nvim

Okay, later today I will test with packer and will try to reproduce your problem

Awesome thanks for the help! I'm new to vim so it is all quite new to me

Hey @wouterschiedam here is my packer example which works: https://gist.github.com/Jezda1337/d74c22070e523a59885ba4d3c71af2dd

Thanks for taking ur time to help me out! I think I got a step closer to getting it to work however now I have this error:
Error while calling lua chunk: .../site/pack/packer/start/plenary.nvim/lua/plenary/job.lua:499: 'fd -a -e html --exclude node_modules' was unable to complete in 5000 ms
in main chunk cmp.lua line 82:
require("html-css"):setup();

How many html files you have in your root folder?

In the root 0, but I have a lot in sub folders

Ye, the moment when you open neovim in root folder, plugin start scanning for all html files in root or in sub folders, then start parsing each file, so I believe that you have too much html files, and the plugin can't parse them all at once. This is issue with the plugin, if you check in some other project where you have less html files its gonna work. I'm currently soo busy with the work, but I will give my best to find time and work on the plugin.

Hmmm that makes sense. No worries.
I've created a new folder with a ./git folder and an index.html file but it still doesn't work :(

Strange, do you have your neovim config somewhere on the internet, so I can take a look and investigate more? what CmpStatus said now?

This is what my CmpStatus says:
ready source names

buffer
path
luasnip

unused source names

cmdline
nvim_lua
html-css

unknown source names

nvim_lsp

Can you make a package.json file inside the root folder and try again?

Still not working im, gonna publish my nvim setup maybe u can see what I'm doing wrong

That would be the best

https://github.com/wouterschiedam/nvim-vetup

Yess it works now! thanks for helping out! still a bit curious how did u debug this problem?

Reading the code and trying couple of times, I was 100% that the plugin is loaded but the it being ignored for some reason, then I load developer version and put some logs but nothing happened, then I notice lsp-zero v1 and I know there was huge upgrade v3. V1 for some reason was blocking external plugins like nvim-html-css so I just end up upgrading the plugin and works, I try as well to add my plugin as dependencies to lsp-zero that din't work in v1, didn't try for v3.


text:
Align compileSDK with targetSDK

#4 merge increases compileSDK to 31.
Attempt to increase targetSDK to 31 as well and make necessary changes to complement upgrade of the app.

#3 updated to include fix to gradle

repo: Jherscu/TicTacToe


text:
Feature dev support data design type 2404

Feature dev support data design type 2404

All code and changes have been reviewed by @Jidcoo .
The code review takes two days.

repo: Jidcoo/LeetcodeJavaDebugEnhancer


text:
Where can I find apiUrl path on an existing server?

Hi folks,
I want to move my Outline Manager to a new machine and have not saved the apiUrl/certSha256. (same issue as #553). However, /opt/outline/access.txt only includes certSha256 now. Where should I look for apiUrl? I'm running the server on an Amazon LightSail instance.

Oops. Should have looked for this on the outline-server repo. Seems to be an open issue there as well. Sorry!

repo: Jigsaw-Code/outline-client


text:
Blocked "Fighting" emote + Replaced \t with 4 spaces

Add "Fighting" to emotefilter.json

https://github.com/Jiiks/BetterDiscordApp/commit/65b651c9ec2e67c92f6e56438aa368953b66df7c

authors: Bluscream Jiiks

repo: Jiiks/BetterDiscordApp


text:
jpegtran errors with: "This program is blocked by group policy." #268

Adds try-catch for this specific exception

Thanks for that. Much appreciated.

repo: JimBobSquarePants/ImageProcessor


text:
Unused "split" argument in PixMixPreprocessor

Hi,
There is a "split" argument in the PixMixPreprocessor init function (it is never used actually).
https://github.com/Jingkang50/OpenOOD/blob/539cf436757b1778ae7baf285b859ba6ca771ed2/openood/preprocessors/pixmix_preprocessor.py#L22-L23
However, when fetching the preprocessor, the "split" argument is not passed, and therefore there will be TypeError: __init__() missing 1 required positional argument: 'split'. This error is likely to happen for other preprocessors as well.
https://github.com/Jingkang50/OpenOOD/blob/539cf436757b1778ae7baf285b859ba6ca771ed2/openood/preprocessors/utils.py#L23-L26

Fixed in #150