Full screen applications disable Stretchly

I would prefer not to receive break notifications when running full screen applications as break notifications cause the full screen application to minimize.
When I play games or run other full screen applications it would be great if Stretchly could set itself to do not disturb or disable itself.
When the full screen application is closed, Stretchly would revert to its previous state and act as per usual.
Ideally this feature could be toggled in the settings section.

Unfortunately that's not for NodeJS ;/

@hovancik Would either of these Stack Overflow answers be of any use?
I always end up forgetting to disable stretchly when playing games, it can be quite frustrating with "don't let me skip breaks" enabled. Which just leads to me allowing skipable breaks or not using stretchly as much. 😕

Unless it's easy to use electron or nodejs module, then it's kinda impossible (with my level of skills, as they talk about C debugging). I would need to know which apps are running in what mode and then user would have to setup which apps are to be ignored and which ones not. (eg for games it makes sense to shut stretchly, but it's different use-case for Word, browser or some other work tool)

@hovancik I'm just wondering how exactly does the monitor Do Not Distrub feature work on windows 10 if at all? I noticed it doesn't seem to have anything to do with focus assist and I don't see what else it could be. I was thinking how if it was possible to track focus assist status with electron that would be very useful as focus assist can already detect if you're in a game, have custom set times and in the upcoming update this month detect full screen applications.

@User486375 I'm using this package: https://github.com/felixrieseberg/electron-notification-state#windows

@hovancik there is a reported issue from last year with that package...https://github.com/felixrieseberg/electron-notification-state/issues/4
So do not disturb (or Focus Assist) in windows settings is not taken into consideration :(

Too bad ;/

Hi all, I am closing this in favor of #389 where possible functionality (have a list of apps that would "pause" stretchly) is being discussed. It's not totally the same, but I think I wont be able to check for fullscreen apps

there's a number of ways to do it in various languages, like this one in Javascript

That's for a browser itself, as in:  I can check that browser that I run this script in, is fullscreen; not for another apps running on the system.
But yeah, sure, if there a cross-platform way how to detect if there is a fullscreen app running in Electron, I will be glad to add it. When I did my research, I was not able to find anything.

@hovancik This is an imperfect solution, but comparing screen.height === screen.availHeight && screen.width === screen.availWidth would return whether the taskbar is visible. So the Stretchly setting wouldn't be, "Pause when fullscreen," but rather, "Pause when Taskbar is hidden." Thoughts?

@e-t-l have you tried it?

Are you asking if I've built F-droid from source with the added javascript to test the screen dimensions? No, I haven't.

@hovancik can this work? https://www.npmjs.com/package/detect-fullscreen

@soredake I guess we will need to try :) too bad it does not support linux, it's my main machine.
Would be nice if someone would try that, I am very low on time.
Notes:
Currently we have:
    {
        "rule": "pause",
        "active": true,
        "commands": [
            "/usr/share/skypeforlinux/skypeforlinux",
            "atom"
        ]
    }
]

I think we could add extend that by adding some special value like0-fullscreen that would mean we wanna check if there is any fullscreen window
"appExclusions": [
    {
        "rule": "pause",
        "active": true,
        "commands": [
            "/usr/share/skypeforlinux/skypeforlinux",
            "atom",
            "0-fullscreen"
        ]
    }
]

The reverse situation. I need stretchley to work in fullscreen mode. When I read a pdf book in fullscreen mode, the break notifications are disabled. And I need them to work. How can I set the settings for this?
OS Windows 10,
App: Okular


Newbie help request: prebuilt server

Hi! I am not a programmer and completely new to this. Just need to get this software to work for a one-time project. I am lacking much of the basics. I hope someone can point out something very obvious for me. Have been stuck at this very basic step for hours.
I went through most of the manual configuration but got stuck at how to enter the "path to scrcpy server" part. I downloaded the prebuilt server named "scrcpy-server-v1.16" into my scrcpy folder.
When I configure meson with the path, do I enter:
meson x --buildtype release --strip -Db_lto=true -Dprebuilt_server=
or
meson x --buildtype release --strip -Db_lto=true -Dprebuilt_server=/scrcpy/scrcpy-server-v.1.16
Essentially, without basic knowledge, I don't know how to interpret "/path/to/scrcpy-server" of the manual. Does that include the file name? Does that include the version number? etc. Again, it is the \scrcpy folder that I have the prebuilt server. What should I enter after the "="?
I apologize for such basic question. But I am working on something way above my head but now only inches away. Please help and point out the obvious to me.
Another related question is: I have built meson without specifying the path to the server (because I was following the tutorial and didn't realize the prebuilt server path that needs to be incorporated). When I try to rebuild it with the prebuilt server path (which is the subject of the question above), it always says "Directory already configured" and ask me to use "meson configure" which I have not figured out how to do.
Please help! Thanks so much!

Does that include the file name? Does that include the version number?

Yes.
Note that it may be a relative path (-Dprebuilt_server=scrcpy-server-v1.16 if it's in the current directory).

When I try to rebuild it with the prebuilt server path (which is the subject of the question above), it always says "Directory already configured" and ask me to use "meson configure" which I have not figured out how to do.

Either execute:
meson reconfigure x -Dprebuilt_server=...

to change an option, or just remove the whole x folder and retry.


feature: added Page Speed Insights Data Studio connector which I used…

… as a learning exercise to learn the api. Additionally I really found it useful to have Page Speed Insights in Google Analytics - so it was useful for our office to have the page speed score displayed for any key pages that we were making changes to - so the whole team could keep an eye on it and report it.
Since this is a Google owned product- I assume (and hope) others in Google/ the web performance / analytics community would like to add more features to it - such as :

breaking out mobile and desktop score into separate metrics
Listing the rules that are not complied with as a separate set of dimensions to be displayed in a table.
Other cool ideas to help improve speed of websites.

Any feedback - feel free to add issue or tweet me on @ukdatageek

Thanks for the merge request! Just a few things

Thanks for merging @diminishedprime - I will keep an eye out for issues.


Add semi-optional-but-strongly-encouraged SpanPurpose field to Spans

Necessary for robust Zipkin integration, and generally helpful

LGTM.


Improve coverage for array/list/priority/immutable_priority/json/queue

Pull Request Test Coverage Report for Build 2024
Details

1 of 1 (100.0%)  changed or added relevant line in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.8%) to 90.354%

Totals

Change from base Build 2014:
0.8%

Covered Lines:
3569

Relevant Lines:
3950

💛  - Coveralls

Pull Request Test Coverage Report for Build 2025
Details

1 of 1 (100.0%)  changed or added relevant line in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.8%) to 90.354%

Totals

Change from base Build 2014:
0.8%

Covered Lines:
3569

Relevant Lines:
3950

💛  - Coveralls

Sorry I use an error base, I will rebase and reopen it.

Pull Request Test Coverage Report for Build 2026
Details

1 of 1 (100.0%)  changed or added relevant line in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.8%) to 90.354%

Totals

Change from base Build 2014:
0.8%

Covered Lines:
3569

Relevant Lines:
3950

💛  - Coveralls

Pull Request Test Coverage Report for Build 2027
Details

1 of 1 (100.0%)  changed or added relevant line in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.8%) to 90.354%

Totals

Change from base Build 2014:
0.8%

Covered Lines:
3569

Relevant Lines:
3950

💛  - Coveralls


Execute all tests with 'make check'

Replace a hard-written list of test files in Makefile.am (that is missing a number of tests) with a list generated via bootstrap build.sh.

Travis will fail until #1739 is merged (because of the broken test), so these two PRs likely need to be manually merged together.

General comment: this is under review waiting for the input of @p0pr0ck5.

Thanks @zimmerle, let me clean this up following the merge of #1739.

@zimmerle this is rebased and ready for review.

Did you addressed my comment in the review session ?

@zimmerle I don't understand the question? We didn't review this together, AFAIK?

@zimmerle what can we do to help push this along? It would be great to have consistent test coverage as part of the Makefile and Travis CI integrations.

Hi @p0pr0ck5,
I am failing to find the changes in your pull request. Did you published that somewhere else? Are you still interested to help on that?

@zimmerle I'm still confused about what specifically you want to see in this PR/you object to. As I noted, Putting the Bash into the Makefile.am, as it is in https://github.com/SpiderLabs/ModSecurity/blob/v3/master/Makefile.am#L87, doesn't work because it generates an invalid Makefile. Hence the reason for my approach.
What changes do you want to see in this PR? I will make them so we can merge this in and have consistent test coverage. Thanks :)

As of 1527f4e2f23c486d560b534d7c82b020bfd342bb I can confirm that 100% of the tests are running. If you see any inconsistency please point us towards it.

That doesn't help when adding new test suites, as the author might forget to add them (as has clearly been done many times resulting in the need for 1527f4e).
The idea is to avoid forcing the author to remember to do a manual step when it could be handled automatically for them. It seems like you're averse to this though, so I won't push on this farther. Thanks.


Having trouble getting up-and-running

Mac OS X Sierra 10.12.4, Java 1.8.0_13
Sorry for the silly question, but I'm no Java developer so I'm not familiar with Maven or anything. My issue looks a little similar to this one but I'm not sure.
Anyway, it seemed like the easiest way to get started is with running the combatlog example in clarity-examples. So with the pom.xml file in my directory, I run mvn -P combatlog package and get the following output:
[INFO] Scanning for projects... [INFO]  [INFO] ------------------------------------------------------------------------ [INFO] Building clarity-examples 2.2-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO]  [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ clarity-examples --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] skip non existing resourceDirectory /Users/ethompson/Documents/media/clarity examples/src/main/resources [INFO]  [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ clarity-examples --- [INFO] No sources to compile [INFO]  [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ clarity-examples --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] skip non existing resourceDirectory /Users/ethompson/Documents/media/clarity examples/src/test/resources [INFO]  [INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ clarity-examples --- [INFO] No sources to compile [INFO]  [INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ clarity-examples --- [INFO] No tests to run. [INFO]  [INFO] --- maven-jar-plugin:2.6:jar (default-jar) @ clarity-examples --- [WARNING] JAR will be empty - no content was marked for inclusion! [INFO] Building jar: /Users/ethompson/Documents/media/clarity examples/target/combatlog.jar [INFO]  [INFO] --- onejar-maven-plugin:1.4.4:one-jar (default) @ clarity-examples --- [INFO] Using One-Jar to create a single-file distribution [INFO] Implementation Version: 2.2-SNAPSHOT [INFO] Using One-Jar version: 0.97 [INFO] More info on One-Jar: http://one-jar.sourceforge.net/ [INFO] License for One-Jar:  http://one-jar.sourceforge.net/one-jar-license.txt [INFO] One-Jar file: /Users/ethompson/Documents/media/clarity examples/target/combatlog.one-jar.jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 0.970 s [INFO] Finished at: 2017-04-23T23:50:38-07:00 [INFO] Final Memory: 11M/245M [INFO] ------------------------------------------------------------------------
Now, if I run java -jar target/combatlog.one-jar.jar rep.dem (that is the correct name for my replay), I get the following error:
Exception in thread "main" java.lang.ClassNotFoundException: skadistats.clarity.examples.combatlog.Main at com.simontuffs.onejar.JarClassLoader.findClass(JarClassLoader.java:713) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at com.simontuffs.onejar.JarClassLoader.loadClass(JarClassLoader.java:630) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at com.simontuffs.onejar.Boot.run(Boot.java:334) at com.simontuffs.onejar.Boot.main(Boot.java:166)
It looks like I'm missing something basic - the uber jar was created but the main class isn't being found? Why?
Thanks in advance for helping me get started. I'm guessing that once this is fixed I can just build all of the packages I need individually in the same way?

The directory you issue the build command in seems to be empty (except for the pom.xml).
git clone http://github.com/skadistats/clarity-examples
cd clarity-examples
mvn -P combatlog package
java -jar target/combatlog.one-jar.jar replay.dem

should yield a result.
No need to build clarity itself!

Awesome, thanks so much. For some reason I thought that Maven would do everything for me, with no need for the source from Github. Thanks!


Plugin Update

Hey Jordan, I merged in your PR for simplifying the IL API stuff as well as updating everything to work on python3.
If you could update the submodule reference to the latest master at https://github.com/toolCHAINZ/structor that would be great.

Done, thanks!


Word selection doesn't work the same in both directions

It seems that only right direction from https://github.com/microsoft/vscode/issues/48046 seems to be working. However, it doesn't look like that it works for left. @alexdima

Version: 1.48.0
Commit: db40434f562994116e5b21c24015a2e40b2504e6
Date: 2020-08-13T07:40:55.768Z
Electron: 7.3.2
Chrome: 78.0.3904.130
Node.js: 12.8.1
V8: 7.8.279.23-electron.0
OS: Linux x64 5.4.0-42-generic
For right I have:
{
  "key": "ctrl+right",
  "command": "cursorWordEndRight",
  "when": "textInputFocus"
}

I tried these left binds:
{
  "key": "ctrl+left",
  "command": "cursorWordStartLeft",
  "when": "textInputFocus"
}

{
  "key": "ctrl+left",
  "command": "cursorWordEndLeft",
  "when": "textInputFocus"
}

but they both perform the same.
Steps to Reproduce:
Use this.sample.object.structure

Move all the way to right with ctrl+right
Move all the way to left with ctrl+left

Does this issue occur when all extensions are disabled?: Yes

I agree that the default keybindings are not balanced. I have remapped that ctrl+left maps to cursorWordLeft which is different than cursorWordStartLeft/cursorWordEndLeft.
I have pushed a change to map ctrl+left and ctrl+shift+left to the "faster" implementation, cursorWordLeft.
You can workaround using:
{ "key": "ctrl+left", "command": "cursorWordLeft", "when": "textInputFocus" },
{ "key": "ctrl+shift+left", "command": "cursorWordLeftSelect", "when": "textInputFocus" },


unable to copy bitcoin-0.18.1.tar.gz on mountpoints on base machine

Hello,
I am trying to extract 'bitcoin-0.18.1.tar.gz' file at following path = /test/data1/abc dir
I am using 0.18 repo.
I have created this directory structure under 0.18 repo on my Ubuntu 18.04 laptop.
I get error saying file or directory not found.
My goal is to extract the tar file on persistent drive. (/test/data1/abc dir)

Sorry, I do not understand your issue. Is it related to this docker image?

I am using the Dockerfile from your repository.
But, I am trying to extract the downloaded tar.gz file on persistent external volumes on base machine.
As per your Dockerfile, it extract the contents of tar.gz file under /opt/bitcoin{version}

That's just for temporary installing the daemon. You need to download from the website.


Questionnaire response item mapper

This will add the possibility to modify a QuestionnaireResponseItem after it was generated within QuestionnaireController.
This could be a useful addition. There could be use cases which it is required to modify a QuestionnaireResponseItem object after it has been created. eg: Adding additional extensions to it.

LGTM but please fix the conflicts generated by the recent commits so the merge can be done.

Regarding this PR 7 and also 8, and 9, are all good ideas, I was eager to merge it but there were conflicts... I'm a bit short of available time so I take advantage of this chance I had now and made some of these changes you proposed... Basically I made QuestionnaireController more extendable by dividing the functions to build the items views and responses into individual functions so it can be override, and also added the same functions as params so it's not mandatory to extend QuestionnaireController to be able to override the items functions.

Regarding this PR 7 and also 8, and 9, are all good ideas, I was eager to merge it but there were conflicts... I'm a bit short of available time so I take advantage of this chance I had now and made some of these changes you proposed... Basically I made QuestionnaireController more extendable by dividing the functions to build the items views and responses into individual functions so it can be override, and also added the same functions as params so it's not mandatory to extend QuestionnaireController to be able to override the items functions.

Thanks for the response and looking into the PRs. Should I close PRs #7 , #8 & #9 if you have already applied similar changes?

Yeah I think so,


[f] Add file tree explorer UI

In this PR, I implemented:
Allow user to select multiple files/folders in the file tree explorer
Demo video:
https://github.com/user-attachments/assets/9fed0b23-6ce5-4b40-aeb2-26fdfb53f31e

Thank you a lot for this PR @hainambk. That's a great idea to allow users to choose the whole folder on file explorer, especially since it can maintain the current state for subsequent prompts. I have just a few comments:

Could we adjust the code to be backward compatible with existing functions? More options for user choice is better.
Please polish the style to make it match the VS Code global style.

By the way, I will archive this repository as we're moving the codebase under the EastAgile AiDD-tools repo. So feel free to open the PR again on the new repo soon.


Long blocking task "Decompiling proto from descriptor"

Every time you open a project, the IDE "hangs" up to 20 seconds at the "Decompiling proto from descriptor" stage.

There are an option in setting page which you can disable the proto decompiling.

And I am try to finding the way to make decompiling step to be async.
But it might be difficult, because the decompiled proto file also can provide the symbol for import and using, I need decompile them and index them before you start writing protos.
I designed this feature for go project which not included src proto, bu now it seems that the performance issues it brings outweigh its benefits.
Maybe I can remove this feature?

I would suggest not deleting it, but turning it off by default - whoever needs it will turn it on himself.

The auto-decompile option will be disabled as default after 1.6.22


u64 decoding fails if value below<PHONE_NUMBER>

I've added a testcase which demonstrates that parsing u64 fails at the u32 & u64 boundary.
https://github.com/oasisprotocol/oasis-cbor/commit/4b3b721d9238b1d53a43cbffb96c9f7391cf07d7#diff-2cebc83b629af08bd0b3a28229b2d903ec4ddfe4ea80d845612f2e5c8c38edc8R637
(4294967296, vec![0x1b,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00]), // succeeds
(4294967295, vec![0x1b,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff]) // fails

I encountered this while testing CBOR encoding of subcalls, I'm using a fixed size uint64 for the receiptId - however values which would fit into a u32 fail to be decoded by the oasis-cbor library.
https://github.com/oasisprotocol/sapphire-paratime/blob/CedarMist/delegate-staking-fixes/contracts/contracts/Subcall.sol#L478C25-L478C35
It's much simpler to use a fixed u64 (0x1b prefix) when CBOR encoding in Solidity, and I can't see anything in the CBOR spec which says that this should fail.

Probably due to the deterministic encoding rules: https://www.rfc-editor.org/rfc/rfc8949.html#name-core-deterministic-encoding

Ok that makes sense, I'll continue using my workaround to start receipt IDs at<PHONE_NUMBER>.


add logos to docs/assets

ref. #8 Perhaps these will be adequate placeholders for now...
Haven't built docs to test - (DocThemePC2 [891028e3] couldn't be resolved) but I think  they should work.

Thanks so much!


changes for using new meta api in django 1.8 and django configs applications

@krisfields why don't you merge the pull request?

when this pull request will merged ? How can I use the pull request to update django-baker ? can you help me to work it with django 1.9.6 ?

Thank you for the pull request and I apologize for the ridiculously long delay in merging it in.  I added in some Django 1.10 compatibility stuff and merged it just now.


Modernization MegaPack EUR installer is broken

Installing the EUR version of Modernization MegaPack creates no files in /luma/titles – this may affect the JPN version as well (untested)
Thanks to Nikothewolf for bringing this to my attention

It would seem the JPN version is affected too

I don't know what the issue is. For now I reversed the megapack to 1.3.0 and I am trying to figure out what causes it.

I figured it out and fixed it. Thanks for letting me know about this!


[Tabs][BottomNavigation] Use value over index property

This is an effort in the prolongation of #2957. I believe it's the last inconsistency we have in that dimension.
-<Tabs index={0}>
+<Tabs value={0}>
// ...

[x] PR has tests / docs demo, and is linted.
[x] Commit and PR titles begin with [ComponentName], and are in imperative form: "[Component] Fix leaky abstraction".
[x] Description explains the issue / use-case resolved, and auto-closes the related issue(s) (http://tr.im/vFqem).

I don't know if this is the place to mention this, but the transition from index to value has not been implemented in the typings:
https://github.com/callemall/material-ui/blob/v1-beta/typings/index.d.ts#L1352

@sebald now you see why I think that automatic typescript generation is important. I have to admit, I haven't done any effort to keep the definitions up to date. But we can't expect external contributors to think about it. They already have to take into account the lint, flow-typed and test coverage.

@oliviertassinari Yes, that's what I am here for :)
I only can speak of personal experience, having typings of libs that are not written in TypeScript was never great. 1-2yrs it was actually pretty pretty bad. I still run into issues with typings on a weekly basis and have lots of custom typings or typings that overwrite bad/old typings from @types/*.
All I can say is that I "build" the typings in a way so that if anyone is running into troubles, they can easily overwrite certain typings. This is sadly not always they case.
Because I now know that you'll release over the weekend, I reserved myself a time slot at work to update typings on Friday. So my team can also update to the latest beta on Monday/Tuesday :)
If PRs get tagged as BREAKING CHANGE  it should be possible to keep the typings up to date. If you think that the current approach doesn't work I can try to setup a POC using tsgen over the course of next week and we'll see if this work better :)

@sebald I won't say that the current approach doesn't work as we haven't had the opportunity to try it out yet. I would rather wait a month or two to see how that goes. At the end of the day, as long as your team is happy with the typescript coverage of the project we are good. The experiences from the rest of the community should be pretty close. This is a good proxy. If you think that tsgen can save you time and energie, go ahead otherwise don't :).


Make HystrixTimeoutException public so that user-defined execution methods may return it

Addresses #920

NetflixOSS » Hystrix » Hystrix-pull-requests #204 SUCCESS
This pull request looks good


Ignore routes in-component option applies only after project is rebuilt

Version: "nuxt-i18n": "^6.5.0"
Hello. I am using ignore routes in-component option in my page.
export default {
  nuxtI18n: {
    locales: ['de', 'ru']
  },
  ...

This setting applies only when project is rebuilt.
Is this default behavior?

Yes, this setting affects how routes are generated and that only happens at build time.

Thank you!


TypeError: Cannot read properties of null (reading 'parentNode')

Version
4.1.0
Reproduction link
jsfiddle.net/Lw1evucg/
Steps to reproduce

Click "Bar"
Click "Foo"

What is expected?
Router shows Foo page. Application continues working
What is actually happening?
Routing stop working after getting error:
vue@next:9310 Uncaught (in promise) TypeError: Cannot read properties of null (reading 'parentNode')
    at parentNode (vue@next:9310:32)
    at ReactiveEffect.componentUpdateFn [as fn] (vue@next:7134:19)
    at ReactiveEffect.run (vue@next:613:27)
    at instance.update (vue@next:7166:58)
    at callWithErrorHandling (vue@next:1733:38)
    at flushJobs (vue@next:1967:19)

You are using outdated version:
<script src="https://unpkg.com/vue"></script>
<script src="https://unpkg.com/vue-router"></script>

Please, next time consider using the forum, the Discord server or StackOverflow for questions first. But feel free to come back and open an issue if it turns out to be a bug 🙂


Selecting Fonts list isn't showing up and keeps it at default.(betterdiscord-google-fonts plugin)

Hi I try to open the fonts list in betterdiscord-google-Fonts settings it wont open and also keeps the Fonts in Default.

It is showing an error in the console.

I have the same issue

I think was with assign badges by QWERTYXD because it has having some conflict with it.

I think the plugin assign badges by QWERTYXD is has having some conflict with it because when I installed assign badges the plugin google-fonts wouldn't work.

Don't have that plugin and still not working for me.

i reloaded the plugin and it somehow worked again, maybe try doing that

i reloaded the plugin and it somehow worked again, maybe try doing that

Can confirm. That worked. Thanks. A fix would be nice though.

It just like it is working but after it doesn't work and after it works it is just like that from me but now it works.

Ok I may close this issue since it is now working.


Update default storefront templates to improve developer experience

1. Why is this change necessary?
To improve the developer experience it is helpful to have as much standardization in the default storefront templates as possible. This includes HTML code as well as embedded Twig code, E.g. it is easier to find certain pieces of code across templates, code is easier to parse with external development tools and standardization also removes possible questions as to why something similar is implemented in different ways across the templates.
2. What does this change do, exactly?

remove spelling errors
standardize formatting for Twig filters
remove or add spaces within Twig syntax where necessary
remove or add empty lines where necessary
remove unnecessary end tags ("/>") for HTML tags such as <meta>, <link>, <br>, <input>
fix indentation of code
standardize order of properties in some HTML elements such as <input type="hidden">

3. Describe each step to reproduce the issue or behaviour.
No actual bugs in the default templates were fixed. Just exchange previous default templates with these optimized versions.
4. Please link to the relevant issues (if any).
None
5. Checklist

[x] I have rebased my changes to remove merge conflicts
[ ] I have written tests and verified that they fail without my change
[x] I have created a changelog file with all necessary information about my changes
[ ] I have written or adjusted the documentation according to my changes
[ ] This change has comments for package types, values, functions, and non-obvious lines of code
[x] I have read the contribution requirements and fulfil them.

🤖 Generated by Copilot at 9a4cf7f
This pull request updates the default storefront templates to improve the code style, syntax, and readability of the Twig and HTML elements. It fixes indentation, removes unnecessary end tags, adds missing symbols, and standardizes the spacing and formatting of the Twig operators and functions. It also adds a changelog file to document the changes.

🤖 Generated by Copilot at 9a4cf7f

Add a new file with the pull request metadata ([link](https://github.com/shopware/platform/pull/3094/files?diff=unified&w=0#diff-18b0267c49b395b61fa90d22bc0a5153ed4c55227a19dcb11a4159ad1516ec36L1-R14))

Regarding the self-closing tags:
https://dev.to/scalertopics/difference-between-and-tag-in-html-5350
I'd prefer to keep the strict variant.

Hello,
thank you for creating this pull request.
I have opened an issue on our Issue Tracker for you. See the issue link: https://issues.shopware.com/issues/NEXT-29324
Please use this issue to track the state of your pull request.

Hi @sandoba,
thanks for your contribution. 👍
It looks good so far for us and we merged it into trunk (https://github.com/shopware/platform/commit/d3b9f5a2e251376b619c9cfe9c34004f633fa3ba) alongside with some additional changes on an extra commit. I just wanted to let you know so we don't just "randomly" change your contribution on the fly:

Inside checkout/finish/finish-details.html.twig you corrected a typo (@depracted). Because of this typo, these blocks were never actually/properly deprecated. Therefore we changed the deprecation to v6.6.0 and will remove the redundant blocks in 6.6.0. It will be also added to your changelog.
Also finish-details.html.twig, you added a space behind finishInfoOrdernumber snippet. This causes some tests to fail in platform as well as other repositories. Fixing them isn't a problem per-se but it also seems to be inconsistent with the german snippet at the moment which does not contain the # before the order-number. We therefore decided that this will be a bit out of scope for this code-style change and reverted this part. We will clean this up with a separate task.

@tinect Regarding the <tag />, we are with @sandoba here and decided to go with the non-self-closing way. MDN also states that those do not actually exist inside HTML and will be ignored anyway: https://developer.mozilla.org/en-US/docs/Glossary/Void_element#self-closing_tags
The W3C HTML validator also mentions them as follows:

Info: Trailing slash on void elements has no effect and interacts badly with unquoted attribute values.

But I guess it is also a matter of personal preference and no matter what we choose, us developers will always argue about it. 😆
Blog post from Jake Archibald: https://jakearchibald.com/2023/against-self-closing-tags-in-html/
Interesting twitter... äähhm "X" discussion: https://twitter.com/jaffathecake/status/1676843832284004353


Install Plugin?

Hi there!
How I can install custom plugin? I want to add this plugin : https://www.tinymce.com/docs/plugins/codesample/
It seems I cannot find anywhere on the docs, or maybe I just missed it?
Any help would be greatly appreciated!
Thanks.

I did that in the past, I think you need to provide your own tinymce static repository, you should be able to just add the plugin and it will merge. We should probably document that.

Hi @Natim
Thanks for the reply. But sorry I still don't get it :/
Can you please elaborate? What tinymce static repository?
Thank you!

In your django app you can use a static directory to expose the tinymce JS code.

Here is the code that ships with django-tinymce: https://github.com/aljosa/django-tinymce/tree/master/tinymce/static/tiny_mce
If you create a static/tiny_mce repository in your app that expose the plugin code you should be fine.

Hi @Natim
Ahh... I see... Much clearer now!
Thank you! 😃


repeated followed by at_least

In the nano_rust example, when lexing operations repeated is followed by a call to at_least.
https://github.com/zesterer/chumsky/blob/64b10e2348efdea706dadbcad3f1a1ff899bd749/examples/nano_rust.rs#L62-L66
At first glance, this looks like a bug and should be fixed by using repeated exclusive or at_least depending on the semantics you want. But I'm new to chumsky, so I'm not sure.
Is this in fact a bug? If not, what are the semantics of the parser that this will generate?

at_least is not itself a parser combinator, but simply a method on the Repeated parser that modifies its behaviour. See here for more information.


fix: invalid time error when selecting excluded month with keyboard

name: Pull Request
about: Fixes the date picker throwing an invalid time error when selecting excluded month with the keyboard
title: fix: invalid time error when selecting excluded month with keyboard
labels: ""
assignees: ""
Description
Linked issue: #4731
Problem
When an excluded month is selected with the keyboard, the month appears to not be keyboard selected, and when the arrow keys are used again, the Invalid time value error is thrown

Changes
Added a isMonthDisabled check to the onMonthKeyDown function
Screenshots

Contribution checklist

[x] I have followed the contributing guidelines.
[x] I have added sufficient test coverage for my changes.
[x] I have formatted my code with Prettier and checked for linting issues with ESLint for code readability.

Please check the CI output


Feature/fe 625 UI card components states

Why?
Redesign of rewards tab and timeline
How?

Created new UI elements

TotalRewardsView: The top card
DailyRewardCardView: The main card
WeeklyStreakView: The weekly timeline
NoRewardsView: For empty state
AnnouncementCardView: Shows the mainnet banner

Major refactor and cleanup

Testing
Run the mock scheme
Additional context
Reward details screen seems broken, will be implemented later
fixes fe-625

@PavlosTze Great catches


trakt.tv import errors

This is not something I need but I was experimenting with trakt.tv, initial setup was very straight forward, great UI/design 👍 .
The list to import looked much smaller than than what I see in https://trakt.tv/users/clach04/history/episodes/ (missing titles) - I did the import anyway, and that appeared to work but:

seen history missing on a number of episodes
no ratings imported

I see an error in the Docker log:
C:\docker\mediatracker>docker image ls
REPOSITORY             TAG       IMAGE ID       CREATED        SIZE
bonukai/mediatracker   latest    70726fc8bd32   14 hours ago   230MB

C:\docker\mediatracker>docker logs mediatracker
Running migrations
Already up to date
MediaTracker listening at http://-----------:7481
Updating metadata
Everything up to date
TypeError: Cannot read properties of undefined (reading 'id')
    at /app/build/controllers/traktTvImport.js:181:227
    at Array.map (<anonymous>)
    at Array.<anonymous> (/app/build/controllers/traktTvImport.js:176:146)

I don't need this but if I can provide diagnostics let me know.

Hi !
Same issue here with 0.0.8, trakt import imports only the watch list but not the history (I don't have any ratings).
If I stay on the import page I can see a partial import status (see screenshot) and hundreds of request to the state endoint, giving the same json response  :
"{\"state\":\"importing\",\"exportSummary\":{\"watchlist\":{\"movies\":21,\"shows\":41},\"seen\":{\"movies\":0,\"episodes\":10},\"ratings\":{\"movies\":0,\"shows\":0,\"seasons\":0,\"episodes\":0}}}"

There is much more data than this on my trakt account.
The watchlist numbers are good, but not the rest.
After several hours, nothing has changed, I tried to launch a new import with same result.

Hey,
Installed today for the first time. Looks much better/easier/workable than flox. However, I notice that nothing from trakt is imported (see screenshot). This while there are more than 3000 episodes. In the docker logs nothing appears.


[Draft] Weighted Round Robin policy for shard coordination traffic routing

Description
[Describe what this change achieves]
Issues Resolved
2859
Check List

[ ] New functionality includes testing.

[ ] All tests pass

[ ] New functionality has been documented.

[ ] New functionality has javadoc added

[ ] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Hi @anshu1106 I have converted this PR into a draft PR.
Please set it ready for review when ready.
Also we have recently updated the gradle check, please rebase on main for the changes.
Thanks 😄


Remove leading underscore variables

Removed nearly all leading underscores for variable names.  Every once in a while one of these will conflict with standard libraries in an oddball compiler and it's best to just avoid this problem alltogether.  In nearly all instances I just replaced the variable names with trailing underscore versions.  I also didn't make these changes to the examples and miniapps, but I am happy to do so if we like.

PR
Author
Editor
Reviewers
Assignment
Approval
Merge

#2236
@acfisher
@tzanio
@dylan-copeland + @mlstowell
05/11/21
⌛due 05/25/21
⌛due 06/01/21

BTW, do we want to change this in all of the examples and miniapps too? I can do that without much hassle.

To me, it makes sense to apply this rule everywhere.
The only case where this has been an issue, I think, is under cygwin where one of the standard headers defines _B -- this has been addressed a few times before: https://github.com/mfem/mfem/pull/992, https://github.com/mfem/mfem/pull/1761#discussion_r523826500, https://github.com/mfem/mfem/pull/1828. 😁

To me, it makes sense to apply this rule everywhere.

Agreed

I couldn’t find any applicable rule in astyle or clang-format. This would have been the best solution.
@adrienbernede clang-tidy is more appropriate for this sort of static analysis, and also provides tooling to automatically transform, e.g., leading underscore identifiers to trailing underscore identifiers.

Using the clang tools will be best long term, but I was thinking that for this we can also just check for the pattern  _[letter] potentially excluding some allowed instances.

Alright, I'll apply it to all of the rest of the MFEM code and push it up.

You also need to search on:
*_
&_
(_
{_
[_

The error in branch-history (too many files changed in a single commit) can be ignored in this case

Merged in next for testing...


modernized gem. Indented code. Added necessary gem files. Updated REA…

Also updated version to 0.4

could you also release this new version on rubygems?


rekor-cli upload rejects files as public keys, expects URLs only

I am following these steps: https://github.com/sigstore/rekor/blob/main/types.md#ssh
But I get the following error when uploading:
$ rekor-cli upload --artifact in.txt --signature in.txt.sig --public-key id_e25519.pub --pki-format=ssh
Error: invalid argument "id_e25519.pub" for "--public-key" flag: Key: '' Error:Field validation for '' failed on the 'url' tag
Usage:
  rekor-cli upload [flags]

Flags:
      --artifact fileOrURL     path or URL to artifact file (default )
      --artifact-hash sha      hex encoded SHA256 hash of artifact (when using URL)
      --entry fileOrURL        path or URL to pre-formatted entry file
  -h, --help                   help for upload
      --pki-format pkiFormat   format of the signature and/or public key; options = [x509 pkcs7 tuf pgp minisign ssh] (default pgp)
      --public-key fileOrURL   path or URL to public key file
      --signature fileOrURL    path or URL to detached signature file (default )
      --type type              type of entry expressed as type(:version)?; supported types = [hashedrekord:0.0.1 rfc3161:0.0.1 rpm:0.0.1 tuf:0.0.1 alpine:0.0.1 helm:0.0.1 intoto:0.0.1 jar:0.0.1 rekord:0.0.1] (default rekord)

Global Flags:
      --api-key string     API key for rekor.sigstore.dev
      --config string      config file (default is $HOME/.rekor.yaml)
      --format format      Command output format (default default)
      --rekor_server url   Server address:port (default https://rekor.sigstore.dev)
      --store_tree_state   whether to store tree state in between invocations for additional verification (default true)
      --timeout format     HTTP timeout (default 30s)

invalid argument "id_e25519.pub" for "--public-key" flag: Key: '' Error:Field validation for '' failed on the 'url' tag

I tried a few other variations (e.g. absolute, relative, file://, etc.), but none of them seems to work.

I was only able to recreate it when I referred to a file path that didn't exist:
bcallaway-macbookpro1:rekor bcallaway$ ls -al ~/.ssh/id_ed25518.pub
ls: /Users/bcallaway/.ssh/id_ed25518.pub: No such file or directory
bcallaway-macbookpro1:rekor bcallaway$ ./rekor-cli upload --artifact tests/test_file.txt --signature tests/test_file.txt.sig --public-key ~/.ssh/id_ed25518.pub --pki-format=ssh
Error: invalid argument "/Users/bcallaway/.ssh/id_ed25518.pub" for "--public-key" flag: Key: '' Error:Field validation for '' failed on the 'url' tag
Usage:
  rekor-cli upload [flags]

Flags:
      --artifact fileOrURL     path or URL to artifact file (default )
      --artifact-hash sha      hex encoded SHA256 hash of artifact (when using URL)
      --entry fileOrURL        path or URL to pre-formatted entry file
  -h, --help                   help for upload
      --pki-format pkiFormat   format of the signature and/or public key; options = [ssh x509 pkcs7 tuf pgp minisign] (default pgp)
      --public-key fileOrURL   path or URL to public key file
      --signature fileOrURL    path or URL to detached signature file (default )
      --type type              type of entry expressed as type(:version)?; supported types = [helm:0.0.1 jar:0.0.1 rekord:0.0.1 rpm:0.0.1 tuf:0.0.1 alpine:0.0.1 hashedrekord:0.0.1 intoto:0.0.1 rfc3161:0.0.1] (default rekord)

Global Flags:
      --api-key string     API key for rekor.sigstore.dev
      --config string      config file (default is $HOME/.rekor.yaml)
      --format format      Command output format (default default)
      --rekor_server url   Server address:port (default https://rekor.sigstore.dev)
      --store_tree_state   whether to store tree state in between invocations for additional verification (default true)
      --timeout format     HTTP timeout (default 30s)

invalid argument "/Users/bcallaway/.ssh/id_ed25518.pub" for "--public-key" flag: Key: '' Error:Field validation for '' failed on the 'url' tag```

I agree that the error message could be improved but since it's coming from a lower level validation library it's probably not a trivial fix.


Pushing to an empty dat repo results in 2 forks instead of one

I assumed that dat would work like git here but it doesn't, so I'm submitting a ticket/question to call out the discrepancy.
Scenario
I have a local dat repo with one dataset fork.  I want to set up that dat repo on a server.  There is not a copy of the repo on the server yet.
How do I put it there?
When I run dat status in my local repo I see 1 fork with 5 versions of 1 dataset
$ dat status
Current version is 04f89a2e93e449c774a19819b032af5e5f7ec1ec66cd03427af3023eb351679e (latest)
1 dataset, 8880 keys, 1 file, 1 fork, 5 versions, 6.85 MB total
Last updated 4 days ago (Sun Oct 11 2015 11:29:27 GMT-0700 (PDT))

I want to replicate that onto the server so on the server I run
$ cd /the_dat_repo
$ dat init

Then on my local machine I run
 $ dat push ssh://my.server.com:/the_dat_repo

Now i expect my remote dat repo to look identical to my local repo.  Instead I get 2 forks on the server.  Running dat status on the server looks like this:
$ dat status
Current version is f8c1600f1653307a3f5d48cc4e7d037f3b13303ed9db5996314dd9dbf29d859e (latest)
0 datasets, 0 keys, 1 file, 2 forks, 1 version, 383 B total
Last updated 33 minutes ago (Thu Oct 15 2015 23:05:10 GMT+0000 (UTC))

On the local machine when I run dat forks I get one fork:
$ dat forks
04f89a2e93e449c774a19819b032af5e5f7ec1ec66cd03427af3023eb351679e

but on the server it returns two:
$ dat forks
04f89a2e93e449c774a19819b032af5e5f7ec1ec66cd03427af3023eb351679e
f8c1600f1653307a3f5d48cc4e7d037f3b13303ed9db5996314dd9dbf29d859e

Question: Is this the intended behavior?
Question: What is the best way to get a clean copy of a repository onto a server? Should I sftp it?
Question Is it possible to edit your dat commit history?  ie. Throw away the fork at  f8c1600f1653307a3f5d48cc4e7d037f3b13303ed9db5996314dd9dbf29d859e?

@flyingzumwalt HMM that is weird. @mafintosh do you have ideas on why it didn't replicate correctly?

@flyingzumwalt I think this happened because you did 'dat init' on both sides, so there were two heads! Ideally you'd dat init on the server side and then dat clone from the client. Does that make sense?

@karissa your answer helped me understand how to pose this as a ticket/suggestion instead of a question.  I'm closing this issue and replacing it with #411.


Fix devtools startup error messages

Wait until the dom-ready event has fired before opening up the devtools window. This prevents the following error message showing up multiple times when the app starts in dev mode:

Extension server error: Operation failed: : has no execution context

See https://github.com/electron/electron/issues/12438
Fix #499

utACK 68dabe2

utACK 68dabe2


Unable to use static MySqlContainer in multiple test classes

The example here suggests that a container can be created in an abstract class and used by multiple test classes. While this is possible with the redis container, it is not with a MySqlContainer.
public abstract class AbstractIntegrationTest {
    @ClassRule
    public static MySQLContainer mysql = new MySQLContainer();
}

public class ExampleTestOne extends AbstractIntegrationTest {
    @Test
    public void someTest() {
        assertTrue(true);
    }
}

public class ExampleTestTwo extends AbstractIntegrationTest {
    @Test
    public void someTest() {
        assertTrue(true);
    }
}

One test passes, but the second fails due to "Duplicate mount point '/etc/mysql/conf.d'".
Complete stack trace:
org.testcontainers.containers.ContainerLaunchException: Container startup failed

	at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:189)
	at org.testcontainers.containers.GenericContainer.starting(GenericContainer.java:544)
	at org.testcontainers.containers.FailureDetectingExternalResource$1.evaluate(FailureDetectingExternalResource.java:29)
	at org.junit.rules.RunRules.evaluate(RunRules.java:20)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.junit.runners.Suite.runChild(Suite.java:128)
	at org.junit.runners.Suite.runChild(Suite.java:27)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
	at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:51)
	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception
	at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:83)
	at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:182)
	... 17 more
Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container
	at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:256)
	at org.testcontainers.containers.GenericContainer.lambda$start$0(GenericContainer.java:184)
	at org.testcontainers.containers.GenericContainer$$Lambda$35/1728579441.call(Unknown Source)
	at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:76)
	... 18 more
Caused by: java.lang.reflect.UndeclaredThrowableException
	at com.sun.proxy.$Proxy13.exec(Unknown Source)
	at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:206)
	... 21 more
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:483)
	at org.testcontainers.dockerclient.AuditLoggingDockerClient.lambda$wrappedCommand$14(AuditLoggingDockerClient.java:98)
	at org.testcontainers.dockerclient.AuditLoggingDockerClient$$Lambda$28/1971764991.invoke(Unknown Source)
	... 23 more
Caused by: com.github.dockerjava.api.exception.InternalServerErrorException: {"message":"Duplicate mount point '/etc/mysql/conf.d'"}

	at com.github.dockerjava.netty.handler.HttpResponseHandler.channelRead0(HttpResponseHandler.java:109)
	at com.github.dockerjava.netty.handler.HttpResponseHandler.channelRead0(HttpResponseHandler.java:33)
	at org.testcontainers.shaded.io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
	at org.testcontainers.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
	at org.testcontainers.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
	at org.testcontainers.shaded.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
	at org.testcontainers.shaded.io.netty.handler.logging.LoggingHandler.channelRead(LoggingHandler.java:241)
	at org.testcontainers.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
	at org.testcontainers.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
	at org.testcontainers.shaded.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
	at org.testcontainers.shaded.io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:438)
	at org.testcontainers.shaded.io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:310)
	at org.testcontainers.shaded.io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:284)
	at org.testcontainers.shaded.io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:253)
	at org.testcontainers.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
	at org.testcontainers.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
	at org.testcontainers.shaded.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
	at org.testcontainers.shaded.io.netty.handler.logging.LoggingHandler.channelRead(LoggingHandler.java:241)
	at org.testcontainers.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
	at org.testcontainers.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
	at org.testcontainers.shaded.io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
	at org.testcontainers.shaded.io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334)
	at org.testcontainers.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
	at org.testcontainers.shaded.io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
	at org.testcontainers.shaded.io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926)
	at org.testcontainers.shaded.io.netty.channel.kqueue.AbstractKQueueStreamChannel$KQueueStreamUnsafe.readReady(AbstractKQueueStreamChannel.java:608)
	at org.testcontainers.shaded.io.netty.channel.kqueue.KQueueDomainSocketChannel$KQueueDomainUnsafe.readReady(KQueueDomainSocketChannel.java:127)
	at org.testcontainers.shaded.io.netty.channel.kqueue.AbstractKQueueChannel$AbstractKQueueUnsafe.readReady(AbstractKQueueChannel.java:355)
	at org.testcontainers.shaded.io.netty.channel.kqueue.KQueueEventLoop.processReady(KQueueEventLoop.java:198)
	at org.testcontainers.shaded.io.netty.channel.kqueue.KQueueEventLoop.run(KQueueEventLoop.java:270)
	at org.testcontainers.shaded.io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)
	at org.testcontainers.shaded.io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:138)
	at java.lang.Thread.run(Thread.java:744)

This is on Docker Community Edition for Mac using testcontainers 1.4.1.
Version 17.06.0-ce-mac18 (18433)
Channel: stable
d9b66511e0

There might be some race condition which would lead to multiple MySql containers being running simultaneously, something that the current implementation of MySQLContainer does not allow.

Hi @phillipjohnson,
Thanks for reporting! It's some weird behavior in JUnit I don't really understand.
Howerver, you can remove @ClassRule and replace it with:
public abstract class AbstractIntegrationTest {

    public static MySQLContainer mysql = new MySQLContainer();

    static {
        mysql.start();
    }
}

Thanks for the suggestion! it seems that using @ClassRule does try to create the container twice. I noticed when using a Tomcat container that the exposed port actually changed between initialization in AbstractIntegrationTest and the actual test I was running. Using the static initializer worked fine, though.

Aha, so effectively JUnit triggers startup more than one time on the same object? (It is the same object, because it's a static member of the parent class)
This is kinda obscure, but perhaps we should have some guard code to at least detect where a container is started more than once without being stopped in between. That way we could log a more useful message!!

Great idea, sounds super helpful 😃  (I had the same problem with testcontainers-spock btw. and we found out about it because of MySQLContainer, but it was a bug in my code 😉, would have found it earlier with such an error message as well)

Hello guys, I wonder if there any solution for this issue so far? We do use MySQL and we've been really amazed with testcontainers, but we do have the problem described above.

Hi @diabluchanskyi
Please see my previous comment:
https://github.com/testcontainers/testcontainers-java/issues/417#issuecomment-318064857

@diabluchanskyi you might also consider using JDBC URLs:
https://www.testcontainers.org/usage/database_containers.html#jdbc-url

@bsideup Thank you, it works with 1st proposed solution

In addition to the suggestion that @bsideup suggested above, for Couchbase (https://github.com/differentway/testcontainers-java-module-couchbase), I needed to add a wrapper around the Container object:
    /**
     * This class is to allow the CouchbaseContainer to be shared across tests
     * When the JVM shuts down, the container will as well
     */
    public class TestingCouchbaseContainer extends CouchbaseContainer {
        private static AtomicBoolean started = new AtomicBoolean(false);

        @Override
        public void start() {
            if (started.compareAndSet(false, true)) {
                super.start();
            }
        }

        @Override
        public void stop() {
            // Do nothing
        }
    }

Hi @unhuman,
Did you try static {} block approach? You don't need that wrapper with it

@bsideup Indeed I did.  That's why I mentioned it...  In case other people find they have the same problem.

@phillipjohnson - It is not a race condition or anything: this problem is caused by having the class rule set on a base class for the tests, instead of on the test itself. Move the MySQL container to a class rule on each test, and the problem goes away.
The confusion is because of a misunderstanding of how static fields work in OO, and I see this a lot: if you have a static field on a parent class, which you sub-class 3 times, how many copies of that object do you have? Exactly one.
When JUnit runs the class rule, it doesn't know (nor care) that the field is not stored in the test class itself, and it will run the rule again for each class. The single MySQL container isn't being run multiple times concurrently (at least not if you use the classic non-parallel JUnit runner), but it is trying to call start() on a MySQLContainer that was already stopped - and this is what causes the errors.
My solution was to simply move the container rule to each test, though a possible solution might also be to leave it on the base class and write an @AfterClass method (in the base class) that will throw away the used container and prime a new one for the next class:
@AfterClass
public void recycleDatabase() {
    mysql = new MySQLContainer(); // replace used database with a fresh one
}

I haven't actually tried that (it feels hackish to me), so YMMV.

@guss77 for the same use case (shared MySQL between different test classes) we use the approach I mentioned in one of my previous comments:
https://github.com/testcontainers/testcontainers-java/issues/417#issuecomment-318064857
It works like a charm and from TestContainers' perspective is absolutely fine to use, I promise (c) :D

@bsideup - I appreciate that your solution works for you, but it assumes that a test never needs to reinitialize the database.
There could be other use cases where it is required to use a different database instance per test class, so using MySQLContainer as a JUnit rule, like the original report does, will work better than a single database instance per VM.

@guss77 sorry, I missed the part about "different database instance per test class" :) But anyway, it's still better to have the same running DB and re-initialize it by dropping & recreating it than starting a new container for every test class

@bsideup Better from what perspective?
Is it faster? undoubtedly.
Is it simple and cleaner to maintain? maybe yes, maybe not - mostly depends on the custom base test code you write.
Is it safer in face of not 100% controlled code? no way - a test might create routines or other long living objects, change session or global parameters or change future behavior of the database that you may not foresee.
As always, the correct solution depends on a lot of variables that are very specific to the local domain, and it is a good idea to consider all the options instead of recommending on a single "tried and true" way.

We wanted to have the same container for all of our test classes.  Why?  Because re-starting the container takes ~ 30s.  Also, our tests are essentially independent, yet they're in the same package we're testing.  Since we are aware of what's going on in our tests (leveraging different keys, etc), I think it's reasonable to have the database persist throughout the running of all tests.  @bsideup's info was super-helpful for me to get (almost) the desired behavior.
I can see your point though about having tests change parameters...  Being able to make the correct choice depending on use case offers tremendous flexibility.

I'm seeing this with a GenericContainer. Is have the same GenericContainer across multiple test classes even supported e.g. if I do not inherit from a abstract test class? None of the fixes above work for me.
Specific error is
  java.lang.ExceptionInInitializerError
        Caused by: java.lang.IllegalStateException

The call site where this throws is the constructor line
public static GenericContainer redisContainer = new GenericContainer("redis:3.2.11")
            .withExposedPorts(6379).waitingFor(Wait.forListeningPort());

    static {
         redisContainer.start();

    }

@bearrito - this does not seem like the same problem reported above. I suggest opening a different ticket where people can help you figure this one out.

This was a misconfigration on my part. Our CI server was missing a docker flag. Apologies for the noise.

Hi all,
just reading, and hope this helps a bit, having the testcontainer in an abstract class as well.
Wrapping the TestContainer in an ExternalResource will startup a new instance, consistently:
`    @ClassRule
public static ExternalResource resource = new ExternalResource() {
protected void before() throws Throwable {
AbstractDBComponentTest.LOGGER.info("STARTING DATABASE");
AbstractDBComponentTest.mysql = (new MySqlContainer()).withDatabaseName("db");
AbstractDBComponentTest.mysql.start();
System.setProperty("data_source.schema", AbstractDBComponentTest.mysql.getDatabaseName());
System.setProperty("data_source.url", AbstractDBComponentTest.mysql.getJdbcUrl());
System.setProperty("data_source.username", AbstractDBComponentTest.mysql.getUsername());
System.setProperty("data_source.password", AbstractDBComponentTest.mysql.getPassword());
}
    protected void after() {
        AbstractDBComponentTest.LOGGER.info("STOPPING DATABASE");
        AbstractDBComponentTest.mysql.stop();
    }
};`

If your tests are not transactional, make sure to clean up the database afterward:
`    @Rule
public TestRule cleanUpDBRule = new TestRule() {
public Statement apply(final Statement statement, Description description) {
return new Statement() {
public void evaluate() throws Throwable {
try {
statement.evaluate();
} finally {
AbstractDBComponentTest.LOGGER.info("CLEANING UP DATABASE");
//using jooq here
DBCleaner.clean(AbstractDBComponentTest.this.dslContext, AbstractDBComponentTest.this.getSchema());
}
            }
        };
    }
};`

@gnalFF as I mentioned before in this thread, if you need one DB for all tests in abstract class, you should not use the rules, but static {} block where you call .start() only once

right, one instance for all, true.
or put the rule into the testsuite (at least 4.9 upwards)

@bsideup in your earlier comment you said:

by doing this, you will get a singleton-like MySQL container, and it will be destroyed at JVM shutdown

How does it get destroyed at shutdown?
I see GenericContainer registers a shutdown hook, but it only deletes temporary files.
I subclassed MySQLContainer, overriding both stop() and close(), but neither got called.

Hi @bradcupit,
Shutdown hook is not only about the files :) Also, we have a sidecar container called "Ryuk" which will cleanup the containers even if you kill -9 your JVM 😎

Hi @phillipjohnson,
Thanks for reporting! It's some weird behavior in JUnit I don't really understand.
However, you can remove @ClassRule and replace it with:
public abstract class AbstractIntegrationTest {

    public static MySQLContainer mysql = new MySQLContainer();

    static {
        mysql.start();
    }
}

by doing this, you will get a singleton-like MySQL container, and it will be destroyed at JVM shutdown :)

Thanks to the advice, I did something like this:
public abstract class BaseIntegrationTest {

    private static final PostgreSQLContainer testPostgres = new PostgreSQLContainer("postgres");
    static {
        testPostgres.start();
    }

    @Configuration
    public static class TestDataSourceConfig {

        @Bean
        public DataSource dataSource() {
            final PGSimpleDataSource ds = new PGSimpleDataSource();
            ds.setUrl(testPostgres.getJdbcUrl());
            ds.setUser(testPostgres.getUsername());
            ds.setPassword(testPostgres.getPassword());
            return ds;
        }
    }

    @Autowired
    private DataSource dataSource;

    @Before
    public void setUp() {
        ((PGSimpleDataSource)dataSource).setUrl(testPostgres.getJdbcUrl());
        ((PGSimpleDataSource)dataSource).setUser(testPostgres.getUsername());
        ((PGSimpleDataSource)dataSource).setPassword(testPostgres.getPassword());
        TestUtils.prepareTestSchema(dataSource); // Init test database.
    }

    @After
    public void tearDown() throws Exception {
        try (final Connection conn = dataSource.getConnection();
             final PreparedStatement stmt = conn.prepareStatement("DROP OWNED BY " + testPostgres.getUsername())) {
            stmt.execute(); // Clear test database.
        }
    }
}

An alternative solution to share the same container across multiple Test classes which run in same spring context, is to create a configuration class, such that:
@Configuration
public class MongoContainerConfiguration {
    private final GenericContainer MONGO_CONTAINER = new GenericContainer("mongo").withExposedPorts(27017);

    @PostConstruct
    public void start() {
        MONGO_CONTAINER.start();
    }

    @PreDestroy
    public void stop() {
        MONGO_CONTAINER.stop();
    }

    @Bean
    @Primary
    public MongoClient mongoClient() {
        return new MongoClient(MONGO_CONTAINER.getContainerIpAddress(), MONGO_CONTAINER.getMappedPort(27017));
    }
}

@bearrito

This was a misconfigration on my part. Our CI server was missing a docker flag. Apologies for the noise.

What was your solution?

So is there some plans to fix @ClassRule? or we must just use static {} workaround?

@VadimOza there is nothing to "fix", that's the way JUnit Rules work.

@diabluchanskyi you might also consider JDBC URLs:
https://www.testcontainers.org/usage/database_containers.html#jdbc-url

Does JDBC URL approach generate one Container per Test Class or one for all the Tests?

I'm having the same problem, but I'm getting a different error. I've been using the static block approach recommended above from the beginning, however, when my second class with tests runs I get this error:
CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: Cannot create PoolableConnectionFactory (Cannot open database "<db_name>" requested by the login. The login failed.
Why on earth would the second file not be able to login, right after the first one was able to?
If I run them separately, they both work as expected, but when I run more than one, the 2nd one always fails.
Even if I change the order, the first file always works, but the second one fails with the login error.
Even if I copy and paste one file's contents into the other, the first file works, but the second identical file fails with the login error.
Any ideas?

I think I figured it out. Once I removed the @Container annotation, it started working across multiple classes:
  //  @Container  <- this appeared to have been breaking things for me
  protected static final MSSQLServerContainer sqlServer;

More info: https://stackoverflow.com/a/62443261/3806701


Add other operating systems to .travis.yml

Problem: I've noticed some Windows-specific test failures that look
confusing, and it would be great to confirm that these failures aren't
coming from node-tap itself. After seeing a Windows-specific bug fix
(a9bd8f3) it seems like maybe if there were other Windows-specific bugs
we wouldn't know about them until someone brought them up.
Solution: Add macOS and Windows to .travis.yml to get automated
testing on those platforms as well.

Sweet, test failures! On macOS, these are failing:

re-run a test when it changes
re-run a test when covered file changes, root
re-run a test when covered file changes, children
filtered files

It looks like Windows is reporting 10 pending tests and 57 failures? The reporter wasn't working on Windows via Travis, so I had to download and edit the logs and pass it through a reporter manually. I wouldn't be surprised if I'm doing something Very Wrong. :innocent:

tap is in the process of being split into a core test library and the test runner for v15.  After many attempts I got most tests working in the core library at https://github.com/tapjs/libtap/pull/15.
Most fixes were for tests but it did find one potential error in production code, namely that we split a stack trace message by ':' to find the filename which would cause the win32 drive letter to be seen as the filename.  I suspect the fix is to instead split by ': '.  I plan to submit that as a separate fix and backport to tap v14.
In this repository it might be easier to enable all operating system testing on the v15 branch as it has less tests than the master branch (many tests are moved to the libtap repository).  Any production bugs identified by Windows testing can be backported to tap v14.

I think this can be closed since #718 was merged.

Not using Travis any more, closing this.


Close tab after split or Allow independent editing

Perhaps this was a conscious design choice, but I feel like it would be better to close a tab after you've split it to the right/left/whatever. So, for example, if I have myfile.coffee open and I choose 'Split Right' then the original one on the left should be closed.
OR
An alternate suggestion would be to just allow dual editing in the same file. In the current state of Atom, if you have the same file opened in two different tabs and they are scrolled to different positions, when you make a change in, say, the left one then the right one will automatically scroll to the position of the change. It's a somewhat common use case for me to reference the top of one file while editing the bottom of it (for things like say checking method signatures).
Thoughts?

So, for example, if I have myfile.coffee open and I choose 'Split Right' then the original one on the left should be closed.

This is how I mostly use panes to edit two different files instead of the same in different areas. So splitting panes would be more a "move into new pane" instead of "clone into new pane". There is a package that adds support for moving panes: https://atom.io/packages/pain-split I mapped it to f16 and f19 keys for quick access.

In the current state of Atom, if you have the same file opened in two different tabs and they are scrolled to different positions, when you make a change in, say, the left one then the right one will automatically scroll to the position of the change.

Hmm.. I can't reproduce this. If I have the same file open in two panes, making changes keeps scroll position.

In the current state of Atom, if you have the same file opened in two different tabs and they are scrolled to different positions, when you make a change in, say, the left one then the right one will automatically scroll to the position of the change.

Yeah, I can't reproduce that either. Can you reproduce this behavior in the latest version of Atom (0.186.0) in safe mode?

Perhaps this was a conscious design choice, but I feel like it would be better to close a tab after you've split it to the right/left/whatever. So, for example, if I have myfile.coffee open and I choose 'Split Right' then the original one on the left should be closed.

There's already an issue to track this request: https://github.com/atom/atom/issues/4738. Can you add a comment to that issue and follow it for updates?

Interesting, it seems that I can type on the panes separately now without one scrolling down. Sorry about that! I guess it was either already fixed/being caused by some package I don't have anymore. And thanks for redirect, will add my 2 cents on that issue.

Actually, false alarm. I found what was causing the issue of another instance (i.e. tab) to scroll down when changed in another separate tab.
This happened just now when I hadn't saved a file (i.e. changes were pending) and right clicked on the tab -> split right. Then when I made a change on the left, the right pane of the same file would scroll down to where the change happened (so it was effectively an exact mirror of the left pane). However, after I saved the file in the left pane (though I'm not sure it mattered which tab I saved my changes in) then the tabs became independent.
Let me know if anyone else can reproduce this. To my knowledge no packages are causing this behavior.

@tylerFowler Thanks for helping us investigate this :blue_heart:. I'm still having trouble reproducing this, and I tried 5-6 times by following your instructions.
Can you reliably reproduce this in Atom 0.187.0 in safe mode? If so, could you record a short GIF which clearly demonstrates how to reproduce the problem? :pray:

I can't seem to reproduce it at the moment.. interesting. I haven't uninstalled any packages lately. If/when it happens again I will be sure to try it in safe mode and then reopen this issue.


Use the latest version of GraalVM to build the CLI

Hey @jdubois,
I'm not sure how I can test this. What's the mvnw command to build a native version of the CLI?

@cmaneu for the CLI, this isn't done with Maven. The command is here: https://github.com/microsoft/NubesGen/blob/9ba9161bca86782176c02f1ce5e460f24f91b21f/.github/workflows/cli-continuous-integration.yml#LL63C14-L63C26
I believe this might change in the future as GraalVM will be integrated into the JDK.
Basically you can only build this with GitHub Actions as this is OS-dependant (otherwise you can only build it on your machine for your own OS).


Error ClientTransportTimeout

When creating a session through Createsession, I get a ClientTransportTimeout error, regardless of the set timeout (was 20 minutes), there is no response from the server.
Through ydb cli, requests are executed successfully, the server responds. Initialize driver method works.
Version is Ydb.Sdk 0.1.0
var poolConfig = new SessionPoolConfig();
var fieldInfo = typeof(SessionPoolConfig).GetField("<CreateSessionTimeout>k__BackingField", BindingFlags.Instance | BindingFlags.NonPublic);
fieldInfo?.SetValue(poolConfig, TimeSpan.FromMinutes(20));

var tableClient = new TableClient(driver, new TableClientConfig(poolConfig));

var session = await tableClient.CreateSession(new CreateSessionSettings
{
    OperationTimeout = TimeSpan.FromMinutes(20),
    TransportTimeout = TimeSpan.FromMinutes(20),
});

Problem solved by enabling VPN

@ClaymorePlay
Thanks for the issue and notice about problem solved


added basic click through to tooltips

Added "pointer-events: none;" to .material-tooltip class so that supporting browsers allow click through and tooltips do not interrupt the intended function of the element they cover while animating away.
Change only added to SASS component in this pull request and not the compiled CSS.

I think this is a fairly safe change and can make the tooltips a bit more robust. The only downside is that people won't be able to copy text from the tooltip (if the developer put a longer timeout delay on it). Overall I think that's a small use case and this is a good change.


Discuss Internal training on Github for Operations side

Anne would like us, DSE, to host a training for the operations side. We can choose whatever format we'd like, currently we do our GitHub training async. She's targeting last week of October. Need approval from @jasonlally and wanted to generally discuss with the broader team.

I just realized I never responded to this! I'm generally good with this just want to make sure we can fit into our workload. Do we know what kinds of things they'd want to learn?
We can discuss at a future standup as a team too.

@britt-allen - do we want to pick this up this year? I know Annie's got a couple of trainings cooking around HCD so the priority may have shifted.

Yeah maybe we can target March or April? I want to see how the new refinements we make to our GH training with Caltrans first!

I'm going to assign to you and backlog it and put a due date in late March just as a tickler to revisit then

Operations team is no longer on GitHub so this is no longer relevant.


Docs: Missing information about currently supported package managers

Describe the bug
Seems like this section is missing the actual list of supported package managers.
Steps to reproduce

Go to 'https://github.com/nuxt-hub/core/blob/main/docs/content/1.docs/1.getting-started/3.deploy.md#default-workflow'
Read line

Expected behavior
List supported package managers

Can you have a look @RihanArfan ?


Сlear RequeuAt on workload backoff finished

What type of PR is this?
/kind bug

What this PR does / why we need it:
Clear RequeuAt on workload backoff finished.
Which issue(s) this PR fixes:

Fixes #2038
Special notes for your reviewer:
Does this PR introduce a user-facing change?

Сlear RequeuAt on workload backoff finished.

/test all

/ok-to-test

/assign @mimowo

/lgtm
/approve
Thanks!

/release-note-edit
WaitForPodsReady: clear RequeueAt when the workload backoff time is completed.


[fix] allow permittedHostDevices to support both upper and lowercase letters in the device ID

What this PR does / why we need it:
permittedHostDevices should support both upper and lowercase letters in the device ID
Fixes # #4925
permittedHostDevices will support both upper and lowercase letters in the device ID

/retest

/cc @jean-edouard

/approve

/retest

/lgtm


Unknown arguments: ms-enable-electron-run-as-node, msEnableElectronRunAsNode when using UI Installer

When running the appmap installer from the VS Code window the installer CLI command will return the following error:
ELECTRON_RUN_AS_NODE=true /Applications/Visual\ Studio\ Code.app/Contents/Frameworks/Code\ Helper\ \(Plugin\).app/Contents/MacOS/Code\ Helper\ \(Plug
in\) /Users/petecheslock/Library/Application\<EMAIL_ADDRESS>install --ms-enable-electron-run-as-node -d /User
s/petecheslock/repos/sample_rails_app
Code Helper (Plugin) install [directory]

Install and configure an AppMap language agent

Positionals:
  directory, d  Directory in which to install (deprecated; use -d)
                                                         [string] [default: "."]

Options:
      --version                  Show version number                   [boolean]
  -v, --verbose                  Run with verbose logging              [boolean]
      --help                     Show help                             [boolean]
  -p, --project-type             Specifies the project dependency manager.
                                 Case-insensitive.
                                 Supported project types: Bundler, Gradle,
                                 Maven, undefined, pip, pipenv, poetry  [string]
      --interactive              Whether to interact with the user (assuming
                                 there's a TTY).       [boolean] [default: true]
      --overwrite-appmap-config  Whether to overwrite the appmap.yml file.
                                                                       [boolean]
      --installer-name           Installer name to use, in case of ambiguity.
                                                                        [string]
      --build-file               Build file name to use, in case of ambiguity.
                                                                        [string]
Unknown arguments: ms-enable-electron-run-as-node, msEnableElectronRunAsNode

https://www.loom.com/share/b151eedb285847d28cb95d61bd18370f

Running the installer manually with npx works fine
npx @appland/appmap@latest install -d /Users/petecheslock/repos/aws-cli                                                                             1 ✘  base   14:28:16
Installing AppMap agent for aws-cli...
? AppMap is about to be installed. Confirm the details below.
  Project type: pip
  Project directory: /Users/petecheslock/repos/aws-cli
  Git remote: origin    git@github.com:aws/aws-cli.git (fetch)
  Python version: 3.11.6
  Python package directory: /Users/petecheslock/.asdf/installs/python/3.11.6

  Is this correct? (Y/n) ⠋ Installing AppMap...

This project contains multiple Pip requirements files. AppMap should only be
installed during development and testing, not when deploying in a production
environment.

? Please choose the requirements file used for development: (Use arrow keys)
  requirements-check.txt
❯ requirements-dev-lock.txt
  requirements-dev.txt
  requirements-docs.txt
  requirements.txt

:tada: This issue has been resolved in version 0.113.1 :tada:
The release is available on:

v0.113.1
v0.113.1
GitHub release

Your semantic-release bot :package::rocket:


Install guide for Application Layer Policy

Description
Application Layer Policy install information
Todos

[X] Documentation

Release Note

None required

@emanic Updated with your requested changes, rebased, and squashed.


More fixes for building with vs2019/msvc

@pixelflinger are we waiting for something more for this change?

Thank you!

Thanks for the merge @romainguy!


Rack 1.5.2 on OpenShift

I deployed on OpenShift and I am getting a 500 error when I try to open the app. In my ruby.log I am seeing: "You have already activated rack 1.5.2, but your Gemfile requires rack 1.6.0." I did some Googling and found this: https://bugzilla.redhat.com/show_bug.cgi?id=1184179. Looks like rack 1.6.0 is not available for OpenShift.
Does anyone know how to get around this?

Odd.  Maybe this got messed up in our Rails upgrade (cc @dsander).  You should be able to edit your Gemfile to use an older version and then run bundle before redeploying to OpenShift.

Rails 4.2 depends on rack ~> 1.6, so I guess we either have to wait for openshift to support rails 4.2 or revert the rails upgrade.

We could tag the previous release and use that for OpenShift I guess, or make a branch with the reversion.  That's pretty annoying.

Yeah, a separate branch sounds like a plan. The last comment of the OpenShift issue @mattbarron linked does not sound like there is a trivial fix. Pretty strange for a PaaS to not have separate internal and external version dependencies.

Thanks for the updates!

@mattbarron, I reverted the Rails 4.2 upgrade on the openshift branch.  Would you mind trying that branch?

Works perfect. I am up and running. Thank you!!

Glad to hear it!  Hopefully OpenShift fixes this soon.  Maintaining a second branch is a pain.


Add API for programmatic access to assignability rules for observer methods and typesafe resolution.

Fixes #498
There was a request to have access to CDI assignability rules programmatically so this is the first thing coming to my mind.
I am not 100% convinced that this feature is very useful (in that it can find some audience) so I would appreciate some feedback on whether we want to add it or not.
Few notes:

Delegate assignability is deliberately left out as I cannot imagine anyone extending that.
The varargs argument for qualifiers might instead be a collection because there isn't really a case where this could be entirely left out due to presence of @Default - at least not the way it's worded right now as users are expected to list all required qualifiers.
We could use the TypesAndQualifiers to also represent the event payload/qualifiers and injection point type/qualifiers but I somehow found it cleaner this way as the required type would always be a singleton set.

I think the current state is decent. I tried to improve it a little here: https://github.com/Ladicek/cdi-spec/commits/programmatic-assignability-access It's mainly about consistency and using terms defined by the CDI specification.

I think the current state is decent. I tried to improve it a little here: https://github.com/Ladicek/cdi-spec/commits/programmatic-assignability-access It's mainly about consistency and using terms defined by the CDI specification.

I've added them here and, as the commit suggested, squashed them into my commit.

Thanks!
The only remaining question from me is: should we really expect users to correctly add implied qualifiers (@Default and @Any)? It feels like CDI implementations should take care of that, like everywhere else.
If I understand correctly, the rules for that are fairly simple. To all set of qualifiers, the CDI implementation would:

add the @Any qualifier, always
add the @Default qualifier if and only if the set of qualifiers contains no other qualifiers but @Any, @Default and @Named(...)

That should be it I think?

The only remaining question from me is: should we really expect users to correctly add implied qualifiers (@Default and @Any)? It feels like CDI implementations should take care of that, like everywhere else.

Right, that crossed my mind as well.
The reason I did it like this is to preserve the option to input literally any combination and see how CDI works in that case.
Also, I am not sure if it would then allow to cover every case as you might be able to get a bean (or an injection point) with some highly imaginative (read botched) qualifier combinations via extensions - such as deliberately defining such IP or stripping off its qualifiers etc.
Also note that this is slightly different for events as am OM with @Default will only get notified for events that have @Default or no qualifiers at all (as opposed to having the subset that the OM defines).
That being said, we can surely add that capability.

Ah yeah, I always forget that the @Default qualifiers work differently for observers. Well, I guess we should put together a list of uncommon situations that could occur when we automatically add implied qualifiers...?
Looking at it more thoroughly, here are some additional thoughts.
@Any:

typesafe resolution:

beans: all beans have @Any (=> we can safely add it to the set of bean qualifiers)
injection points: no rules (=> we shouldn't change the set of required qualifiers)

observer resolution:

events: all events have @Any (=> we can safely add it to the set of event qualifiers)
observer methods: no rules (=> we shouldn't change the set of observed event qualifiers)

@Default:

typesafe resolution:

beans: @Default is implied when there's no other qualifier other than @Any or @Named(...), but can be declared explicitly with other qualifiers too  (=> we can safely add it to the set of bean qualifiers under the same rules)
injection points: @Default is implied if the set of required qualifiers is empty (=> we can safely add it to the set of required qualifiers if it's empty)

observer resolution:

events: no rules (=> we shouldn't change the set of event qualifiers)
observer methods: no rules (=> we shouldn't change the set of observed event qualifiers)

@Ladicek I have reworded the text so that it no longer requires users to specify all qualifiers explicitly.

And could you please change the commit message? "Draft an API for ..." -> "Add API for ..."

And could you please change the commit message? "Draft an API for ..." -> "Add API for ..."

All of the comments should be addressed now.

Ah and we should mention these methods in the spec text, chapter Programmatic access to container (beanmanager_lite.asciidoc).

I think something like this should be enough:
==== Assignability of beans and observers

The methods `BeanContainer.isMatchingBean()` and `isMatchingObserver()` provide access to assignability rules defined in <<typesafe_resolution>> and <<observer_resolution>>.

[source, java]
----
public boolean isMatchingBean(Set<Type> beanTypes, Set<Annotation> beanQualifiers, Type requiredType, Set<Annotation> requiredQualifiers);

public boolean isMatchingEvent(Type eventType, Set<Annotation> eventQualifiers, Type observedEventType, Set<Annotation> observedEventQualifiers);
----

Commit message, not [just] PR title :-)

Eeh, yea. Apparently it helps to save the changes when you perform them locally :facepalm:

Ah and we should mention these methods in the spec text, chapter Programmatic access to container (beanmanager_lite.asciidoc).

That's good point. Will do!

@Ladicek I've added the text to beanmanager_lite.asciidoc

Since we agreed to include this feature in during last meeting, I am going to merge it.
There is a tracking issue for TCKs that shouldn't be too hard to do.


Week 3 David Individual Review Ticket

Final Score from Jay Manjrekar: 9.4/10
Video
Coding Review

Individual Coding:

[x] GitHub Pages showing key learnings and challenges conquered from Tech Talks

[x] GitHub commits you have made, show GitHub insights into your code commits.

[x] Show Code running on Replit as well as IntelliJ

[x] Menu review illustrating use of Lists and navigation: show runtime, code organization, code and comments

[x] List and Loops: show runtime, code organization, code and comments

[x] Class review and understanding: show runtime, code organization, code and comments

Show Crossover contribution:  Highlight work you did in crossover project: show their Replit runtime, code commit(s) in their GitHub repo

Show anything you have done to enhance what you have learned from Python code

9.4/10
David had his GitHub pages well organized and good crossover contribution. Incorporated a number guessing game which was very impressive in both python and IntelliJ. The only points taken off are from his video because he goes well over the recommended timing for the video. Other than the video I was very impressed with the quality of his work and his significant contributions.


specify texture format as TEX_FORMAT_R16_SINT

specify texture format as TEX_FORMAT_R16_SINT
the texture may be loaded as TEX_FORMAT_R16_UNORM which is not supported everywhere, causing a crash on unsupported devices

This tutorial requires 16-bit UNORM textures. If they are not supported, the sample can't run. Loading R16UNORM as R16SINT will not work

This tutorial requires 16-bit UNORM textures. If they are not supported, the sample can't run. Loading R16UNORM as R16SINT will not work

why wont it work? it seems to render perfectly fine on my device

Because R16SINT is a signed integer format that can't be filtered. The sample uses filterable texture an it is an error to bind R16SINT texture to such variable.

it seems to render perfectly fine on my device

I would expect the terrain to be at least flat. Otherwise your device may doing its own thing, which is not uncommon for GLES.

Because R16SINT is a signed integer format that can't be filtered. The sample uses filterable texture an it is an error to bind R16SINT texture to such variable.

it seems to render perfectly fine on my device

I would expect the terrain to be at least flat. Otherwise your device may doing its own thing, which is not uncommon for GLES.

hmmm ok

This tutorial requires 16-bit UNORM textures. If they are not supported, the sample can't run. Loading R16UNORM as R16SINT will not work

i found the definition for it
    /// Single-component 16-bit unsigned-normalized-integer format. \n
    /// D3D counterpart: DXGI_FORMAT_R16_UNORM. OpenGL counterpart: GL_R16.
    /// [GL_EXT_texture_norm16]: https://www.khronos.org/registry/gles/extensions/EXT/EXT_texture_norm16.txt
    /// OpenGLES: [GL_EXT_texture_norm16][] extension is required
    TEX_FORMAT_R16_UNORM,

could it be possible to convert it into a supported format if it is not supported?

Yes, it may be possible, but 16-bit floats are a bit tricky.

Yes, it may be possible, but 16-bit floats are a bit tricky.

because of stuff like 3.4646 instead of 3?

Mostly because there is no native support in CPUs and programming languages, so the conversion from float32 to float16 has to be done manually.
This tutorial is just an example, originally intended for desktop GPUs. It is not impossible to make it run on Androids that don't support 16-bit UNORMs, but just not important at the moment.

Mostly because there is no native support in CPUs and programming languages, so the conversion from float32 to float16 has to be done manually.
This tutorial is just an example, originally intended for desktop GPUs. It is not impossible to make it run on Androids that don't support 16-bit UNORMs, but just not important at the moment.

fair enough :)


fix: broken topic event notifications

Description
Fix issue with topics failing on initial apply and add sleep which depends on secrets manager module.
Release required?

[ ] No release
[ ] Patch release (x.x.X)
[ ] Minor release (x.X.x)
[ ] Major release (X.x.x)

Release notes content
Fix issue with topics failing on initial apply and add sleep which depends on secrets manager module.
Run the pipeline
If the CI pipeline doesn't run when you create the PR, the PR requires a user with GitHub collaborators access to run the pipeline.
Run the CI pipeline when the PR is ready for review and you expect tests to pass. Add a comment to the PR with the following text:
/run pipeline

Checklist for reviewers

[ ] If relevant, a test for the change is included or updated with this PR.
[ ] If relevant, documentation for the change is included or updated with this PR.

For mergers

Use a conventional commit message to set the release level. Follow the guidelines.
Include information that users need to know about the PR in the commit message. The commit message becomes part of the GitHub release notes.
Use the Squash and merge option.

/run pipeline

/run pipeline

:tada: This PR is included in version 1.14.3 :tada:
The release is available on:

GitHub release
v1.14.3

Your semantic-release bot :package::rocket:


gear R-1-6-7 {H}

Screenshot
[drag & drop image(s) here!]
Description
[describe the issue here!]
Design input
[describe any input/collaboration you'd like from designers, and
tag accordingly. For design review, add the
label design:review. If this includes a design proposal,
include the label design:suggest]

Not sure what these two issues are all about, but please don't spam the repo.


[WIP] Proper fat Mach-O creation

Closes #99.

Could you give the changes in this branch a try, @sashkab?

Umm... the only exposure to ruby I have is due to Homebrew. I tried and couldn't figure out how to install updated version into hombrew to test it using my formula. If you can, point me to steps to upgrade the gem?Thanks!

The simplest way to test it is probably just to clone the repo:
$ git clone https://github.com/Homebrew/ruby-macho
$ cd ruby-macho

...and then load it into irb:
$ irb -Ilib -rmacho

From there, you should be able to call methods like MachO::Tools.merge_machos with no trouble.

Thanks. Looks good to me now:
irb(main):002:0> libs = ["/tmp/uopenssl-20180702-16887-vjpn5r/openssl-1.0.2o/build-i386/libcrypto.1.0.0.dylib","/tmp/uopenssl-20180702-16887-vjpn5r/openssl-1.0.2o/build-x86_64/libcrypto.1.0.0.dylib"]
=> ["/tmp/uopenssl-20180702-16887-vjpn5r/openssl-1.0.2o/build-i386/libcrypto.1.0.0.dylib", "/tmp/uopenssl-20180702-16887-vjpn5r/openssl-1.0.2o/build-x86_64/libcrypto.1.0.0.dylib"]
irb(main):003:0> MachO::Tools.merge_machos("/tmp/fix1.dylib", *libs)
=> 3649920
$ lipo -info /tmp/fix1.dylib
Architectures in the fat file: /tmp/fix1.dylib are: i386 x86_64
$ file  /tmp/fix1.dylib
/tmp/fix1.dylib: Mach-O universal binary with 2 architectures: [i386:Mach-O dynamically linked shared library i386] [x86_64]
/tmp/fix1.dylib (for architecture i386):	Mach-O dynamically linked shared library i386
/tmp/fix1.dylib (for architecture x86_64):	Mach-O 64-bit dynamically linked shared library x86_64

Awesome! I'll do some cleanup on the changes, and hopefully we'll have a fixed version vendored in Homebrew in a day or two :smile:

Great, thank you @woodruffw!


Build and publish to docker hub

Builds and pushes docker images when master branch, OS = linux and built with Go version 1.5.
Worked this time :-) https://travis-ci.org/alpe/glow/jobs/110124806#L262

Yeah!