Option to hide individual database operations in migration

I have some large migrations which have many individual insert statements to load the database with a good initial state. These SQL statements contain some large base64 encoded data blobs. When I run yii migrate --interactive=0, every insert is printed to stdout in full.
I would like an option to make all the individual SQL operations (those written in white between
each migration file) to be hidden, so I'm only left with messages about each migration file being run. Could this be added to the framework?
https://github.com/yiisoft/yii2/issues/13040 this is a similar issue, but I more specifically care about only reducing the amount of output rather than getting rid of all of it (I could do >/dev/null for that if I wanted to).
Thanks

If you do not want your inserts to be printed you can do so by calling
$this->db->createCommand()->insert($table, $columns)->execute();

instead of
$this->insert($table, $columns);

See https://github.com/yiisoft/yii2/pull/13787

@cebe that's not at all a solution. That would require me to change every migration to use that kind of execution scheme. What I want is to conditionally show or hide those logs, with some commandline option. For example, Laravel only shows the name of the migration file being run, not every operation being done. An option to get that kind of output would be preferable.

That would require me to change every migration to use that kind of execution scheme.

as far as I understood the issue you were talking about one specific migration that inserts large blobs.

Could be implemented by changing echo in yii\db\Migration to a output() method which checks a property $quiet that would not print the information when set to true.
This could be conrtolled by a flag in MigrateController.

There's yii\db\Migration::$maxSqlOutputLength which could possibly solve the issue...

its only applied to raw SQL currently. This issue is about removing all output that is generated by Migration.

@cebe sorry, I wrote the issue a few months ago. I could've been clearer. Poor wording by me.
One another idea is instead of an option, you could quiet the output of debug is not on, leaving SQL logging only when debug is on. I think that would technically be better. (IIRC there is a debug mode for CLI, right? I'm not at my PC right now, can't check). Maybe that's too much of a breaking change for everyone else. If we a implement a $quiet property, that is configurable via the application config for the migrations, right? I'll have to dig around in the source later probably. I think I can probably make a PR.

I was looking through the code to see how I would implement this. This is what I'm thinking:

Add a $quiet property to yii\db\Migration, to be set via yii\console\controllers\BaseMigrateController in the createMigration function.
Every function in yii\db\Migration has two echos. I'd like to pull those out into private functions to remove some duplication. I'm thinking calling them echoStart($string) and echoDone($time)
echoStart would just be echo "    > $string ...";, but also wrapped with a check if $this->quiet !== null.
echoDone would be echo ' done (time: ' . sprintf('%.3f', microtime(true) - $time) . "s)\n"; similarly wrapped with the check for quiet.

migrateUp and such in BaseMigrateController already do the work of printing out which class is being run and the time elapsed, so there's still that information visible.
Does this make sense? I can get started on a PR with this today, I just want to make sure I'm not planning on doing something that doesn't make sense.

first part sounds good to me, I'd use a different name for the methods, beginCommand() and endCommand() could be used they do not only echo but also track the time.
Not sure about changing MigrateController output to one line because quite will only affect output printed by migration methods, while one could have own echo output in a migration that does not respect the $quiet property. I'd leave these as they are for now.

Okay thanks @cebe, I'll start working on it as soon as I can.


UI and fix unit tests

[Current coverage][cc-pull] is 1.00%

Merging [#15][cc-pull] into [master][cc-base-branch] will not change coverage

@@            master       #15   diff @@
========================================
  Files            7         7
  Lines          199       199
  Methods          0         0
  Messages         0         0
  Branches         0         0
========================================
  Hits             2         2
  Misses         197       197
  Partials         0         0

Powered by Codecov. Last updated by [ac57447...098ac25][cc-compare]
[cc-base-branch]: https://codecov.io/gh/Chris1221/mineR/branch/master?src=pr
[cc-compare]: https://codecov.io/gh/Chris1221/mineR/compare/ac574472a9ab4add2aef486b3716feb23456978d...098ac25fd9210922a74c5ede666ad6f437cfffa9?src=pr
[cc-pull]: https://codecov.io/gh/Chris1221/mineR/pull/15?src=pr


Issues with graphql-relay 0.9.5 and graphql 0.13

Looks like the interface for connections has changed somehow
NoMethodError - undefined method `offset' for #<Team:0x00000007fc2d60>:
  activemodel (4.2.6) lib/active_model/attribute_methods.rb:433:in `method_missing'
  graphql-relay (0.9.5) lib/graphql/relay/relation_connection.rb:32:in `sliced_nodes'
  graphql-relay (0.9.5) lib/graphql/relay/relation_connection.rb:23:in `paged_nodes'
  graphql-relay (0.9.5) lib/graphql/relay/relation_connection.rb:82:in `paged_nodes_array'
  graphql-relay (0.9.5) lib/graphql/relay/relation_connection.rb:5:in `cursor_from_node'
  graphql-relay (0.9.5) lib/graphql/relay/edge.rb:14:in `cursor'
  graphql (0.13.0) lib/graphql/field.rb:111:in `block in build_default_resolver'
  graphql (0.13.0) lib/graphql/field.rb:67:in `resolve'
  graphql (0.13.0) lib/graphql/query/serial_execution/field_resolution.rb:69:in `block in get_middleware_proc_from_field_resolve'
  graphql (0.13.0) lib/graphql/schema/middleware_chain.rb:24:in `call'
  graphql (0.13.0) lib/graphql/schema/rescue_middleware.rb:34:in `call'
  graphql (0.13.0) lib/graphql/schema/middleware_chain.rb:24:in `call'
  graphql (0.13.0) lib/graphql/query/serial_execution/field_resolution.rb:58:in `get_raw_value'
  graphql (0.13.0) lib/graphql/query/serial_execution/field_resolution.rb:26:in `result'
  graphql (0.13.0) lib/graphql/query/serial_execution/selection_resolution.rb:98:in `resolve_field'
  graphql (0.13.0) lib/graphql/query/serial_execution/selection_resolution.rb:18:in `block in result'
  graphql (0.13.0) lib/graphql/query/serial_execution/selection_resolution.rb:17:in `result'
  graphql (0.13.0) lib/graphql/query/serial_execution/value_resolution.rb:72:in `non_null_result'
  graphql (0.13.0) lib/graphql/query/serial_execution/value_resolution.rb:23:in `result'
  graphql (0.13.0) lib/graphql/query/serial_execution/field_resolution.rb:45:in `get_finished_value'
   () home/andrew/bundle/ruby/2.3.0/bundler/gems/graphql-batch-9cf8341196a8/lib/graphql/batch/execution_strategy.rb:56:in `get_finished_value'
  graphql (0.13.0) lib/graphql/query/serial_execution/field_resolution.rb:30:in `result'
  graphql (0.13.0) lib/graphql/query/serial_execution/selection_resolution.rb:98:in `resolve_field'
  graphql (0.13.0) lib/graphql/query/serial_execution/selection_resolution.rb:18:in `block in result'
  graphql (0.13.0) lib/graphql/query/serial_execution/selection_resolution.rb:17:in `result'
  graphql (0.13.0) lib/graphql/query/serial_execution/value_resolution.rb:72:in `non_null_result'
  graphql (0.13.0) lib/graphql/query/serial_execution/value_resolution.rb:23:in `result'
  graphql (0.13.0) lib/graphql/query/serial_execution/field_resolution.rb:45:in `get_finished_value'
   () home/andrew/bundle/ruby/2.3.0/bundler/gems/graphql-batch-9cf8341196a8/lib/graphql/batch/execution_strategy.rb:56:in `get_finished_value'
  graphql (0.13.0) lib/graphql/query/serial_execution/field_resolution.rb:30:in `result'
  graphql (0.13.0) lib/graphql/query/serial_execution/selection_resolution.rb:98:in `resolve_field'
  graphql (0.13.0) lib/graphql/query/serial_execution/selection_resolution.rb:18:in `block in result'
  graphql (0.13.0) lib/graphql/query/serial_execution/selection_resolution.rb:17:in `result'
  graphql (0.13.0) lib/graphql/query/serial_execution/operation_resolution.rb:20:in `result'
  graphql (0.13.0) lib/graphql/query/serial_execution.rb:17:in `execute'
   () home/andrew/bundle/ruby/2.3.0/bundler/gems/graphql-batch-9cf8341196a8/lib/graphql/batch/execution_strategy.rb:4:in `execute'
  graphql (0.13.0) lib/graphql/query/executor.rb:38:in `execute'
  graphql (0.13.0) lib/graphql/query/executor.rb:15:in `result'
  graphql (0.13.0) lib/graphql/query.rb:47:in `result'
  graphql (0.13.0) lib/graphql/schema.rb:55:in `execute'
  app/controllers/api/v1/graph_ql_controller.rb:14:in `execute'

graphql-batch is in no way related to graphql-relay and we aren't experiencing any problems when using it with graphql gem version 0.13.  Please provide steps to reproduce your problem rather than just a backtrace that references your application code.

Sounds like: https://github.com/rmosolgo/graphql-relay-ruby/issues/38

Whoops. Thanks


#177 java artifacts are not being deployed to nexus

Don't ask me why.. but splitting up the install and the deploy gets us around the maven 'bad request' error.

[merge]


Remove self from email cc list

When creating the email cc list, remove the active user's email from the list.

Fixed with #51


Connection automatic reconnect

Sink needs to reconnect automatically if the max idle timeout has been reached.
More information available here: https://github.com/Azure/amqpnetlite/issues/33

Issue has been resolved in release 1.0.5


Update to TOC.

Please use this template to ensure easier processing of your pull request
Category

[x] Content fix

Docs Build status updates of commit f11162c:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

Community/how-to-share-org-wide-communications-in-microsoft-365.md
:bulb:Suggestion
View
Details

Community/TOC.md
:white_check_mark:Succeeded
View

Community/index.yml
:white_check_mark:Succeeded
View

Community/how-to-share-org-wide-communications-in-microsoft-365.md

Line 2, Column 1: [Suggestion-audience-missing] Missing required attribute: 'audience'.

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


Prisma Docker Container should not attempt to connect to check-update.graph.cool

Testing out / running Prisma via docker container I noticed within docker daemon logs that the container is attempting to connect to various domains in an attempt to what appears to check for updates.
Here is a sample of redacted logs:
March 19 18:20:05 <host.internal-domain.com> dockerd[6963]: time="2019-03-19T18:20:05.493123091Z" level=debug msg="Name to resolve: check-update.graph.cool"
...
March 19 18:20:05 <host.internal-domain.com> dockerd[6963]: time="2019-03-19T18:20:05.495748843Z" level=debug msg="Name to resolve: check-update.graph.cool.<internal-domain>.com"

Both of these fail since I'm testing this out locally on an isolated box that is running on an isolated network without proxy access to the internet. I was testing Prisma docker container with a local database configured / running via docker-compose.
I wouldn't have expected the running container to "phone home" like this under this scenario.

@couchuser12345
Can you please provide the version of prisma server that you are using

@couchuser12345
I investigated further into this and right now there is no way to disable these calls. In the future, we will allow you to disable this behaviour using a setting in the PRISMA_CONFIG.


ROX-11767: Client side crash when viewing Image -> CVE (#2404)

Description
We ended up using some of the new fields for the Image Findings section without the feature flag on and it was causing some issues. This PR fixes that and also a few other fixes to get it all working again.
Checklist

[ ] Investigated and inspected CI test results
[ ] Unit test and regression tests added
[ ] Evaluated and added CHANGELOG entry if required
[ ] Determined and documented upgrade steps
[ ] Documented user facing changes (create PR based on openshift/openshift-docs and merge into rhacs-docs)

Testing Performed

Navigate to Vuln Mgmt Dashboard -> Images -> a single image -> Click CVE name

https://user-images.githubusercontent.com/4805485/178845679-399711c8-8ed3-4a38-ad8a-903270ac8612.mov

/test gke-postgres-qa-e2e-tests


Forest requirements missing

What are the domain functional level and forest functional levels for ADDS Auth in Azure Files?
[Enter feedback here]

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 534b3ef3-5664-973e-b146-8c1f960bf536
Version Independent ID: 57c3ce18-2857-8ed0-10a5-5061d391a079
Content: Frequently asked questions (FAQ) for Azure Files
Content Source: articles/storage/files/storage-files-faq.md
Service: storage
Sub-service: files
GitHub Login: @roygara
Microsoft Alias: rogarana

@AzureAzim On the activation page :
Only supported on clients running on OS versions newer than Windows 7 or Windows Server 2008 R2.
Let me know if you that doesn't answer your question or you have further issues.


Failed to list services: server does not support the reflection API

I'm testing some tracing with otel & gRPC endpoints. I'm trying to do a base-level 101 check with this tool by running locally on my mac after installing with brew. I'm running otel-cli server tui in one window & I verified I get some traffic when I run otel-cli exec --service gw-testing --name "curl google" curl https://google.com from another window.
But using the grpcurl tool, I'm not able to get a successful response:
» grpcurl -vv localhost:4317 list
Failed to dial target host "localhost:4317": tls: first record does not look like a TLS handshake

» grpcurl -vv -plaintext localhost:4317 list
Failed to list services: server does not support the reflection API

» grpcurl -vv -insecure localhost:4317 list
Failed to dial target host "localhost:4317": tls: first record does not look like a TLS handshake

The grpcurl tool supports reflection so I think this should work... Do you know what I'm doing wrong?

This can be solved solved with PR 369


Package Load Error After Updating to Atom 1.24.0

The mm-lint no longer loads properly after an automatic update to the latest version of Atom. The following error trace appears under the Incompatible Packages header in Atom upon loading:

Hi, I have been looking to use this plugin, mostly because the name is awesome, and I am unclear as to whether this issue has been fixed yet?


Proof git hooks module

https://typicode.github.io/husky/#/?id=articles
https://blog.typicode.com/husky-git-hooks-javascript-config/
https://blog.typicode.com/husky-git-hooks-autoinstall/

https://github.com/leanupjs/leanup/commit/c723497144fc87383cd28493531546a77f7895c7
https://github.com/leanupjs/leanup/commit/1c6b198fe544a9404ba0ad54620b45f515d73548


User interface for control (display, touchscreen/buttons, sound effects, etc.)

I'm interested in taking this up - assigned myself to the issue after confirming with Mike and Karl at the November 2020 build session. Two related issues are #15 for a safe shutdown button, and #18 for automatic launch at startup - I also signed up for those issues.
Planning to start by looking at a Nextion "Basic Series" display. Mike has seen some recent articles that make this display look promising, and he has one available if needed (3.5"). We talked about a couple options for how the display would communicate with wheele's raspberry pi, either a) directly via synchronous or asynchronous serial like like SPI/I2C, or b) serial link to one of wheele's arduinos which would then translate to CAN for transmission to the pi. If not a touchscreen, we also considered starting very simple with one or two mechanical buttons that could trigger some action in the pi (i.e. safe shutdown of the robot/OS).

Another interesting option for a touchscreen, $40 from Adafruit: https://cdn-learn.adafruit.com/downloads/pdf/adafruit-3-5-color-320x480-tft-touchscreen-breakout.pdf.  SPI interface, libraries and examples available for interfacing with both arduino and linux/raspberry pi.

In looking for info on the Nextion display, I found one of the best put downs ever.  Someone described the editor as looking like it was "designed by a committee that only meets on Friday afternoons."  Love it.
My problem with the Adafruit display for WheelE is twofold.  First, the SPI peripheral on the RPi is occupied with the CAN controller.  Second, it looks like the RPi (or arduino) needs to do all of the pixel writing over SPI, and needs to use analog inputs to read and interpret the touchscreen.
Even though the Nextion is not as capable as I suggested last night, it does manage those basic functions internally.  The serial messages to/from the display are communication with the high-level graphical widgets rather than low-level pixel drawing and touchscreen reading.
By the way, this is the exact Nextion kit I ordered:
https://www.amazon.com/NX4832T035-Resistive-Enclosure-Transparent-Raspberry/dp/B08535Y1XW/ref=sr_1_4?crid=2REB58GMXZTXI&dchild=1&keywords=nextion+3.5&qid=1605750104&sprefix=nextion%2Caps%2C188&sr=8-4

Designed by committee that only meets on Friday afternoons - ouch! Actually the editor is my biggest hang-up with Nextion too. First, only runs on Windows (unless you do some virtual machine or WINE solution...)- a problem for me because I don't have a Windows machine anymore. I suspect others that are or may become involved with programming for CIRC may face the same problem. Second, even if you get past Windows, it requires learning the editor GUI and the whole process for transferring the program to the display - not a deal breaker but I bet it would be easier to get people engaged with a technology they are already familiar with, or at least that has wide application (i.e. arduino or python). I also think maintenance and upgrades would be easier using git and source code over a Nextion editor project file.
I do agree it's nice that the Nextion display integrates drawing and touchscreen control - haven't found any reasonably priced alternatives that do that, BUT the drawbacks with the editor are enough to make me stop and think. What about adding another small arduino to wheele, dedicated to touchscreen control? Basically make our own programmable display, but using a more widely adopted toolchain? Wire up the arduino to the adafruit board, drop it in an enclosure, feed out SPI or I2C lines, or even CAN if we also wire up a converter to this new arduino?

I have absolutely no objection to the proposal to make our own programmable display based on a (presumably low-cost) TFT touchscreen and an arduino (or other low-cost controller).  The development sounds like fun, and this is a hobby after all, so it should be fun.

If you google "stm32 discovery touch screen", it will turn up several stm32 dev kits with touch screen interfaces that might be nice for this purpose at reasonable prices ($50 or $60 range).  Many programming options, so I am sure they are not tied to Windows.

I got myself into trouble over the weekend because it hit me that I may actually have an old arduino in my junk box. Turns out that I do (Digilent chipKIT Max32) and it still works. Between adafruit and a couple other references I got a simple menu system coded up in pretty short order, compiled and downloaded to the board. Adafruit has graphics driver libs that are easy to work with. Problem is I don't have a display to really test it (boo) But, I should have one in a few days (yay) 3.2" TFT LCD + resistive touchscreen & microSD socket (https://www.adafruit.com/product/1743)
My plan is to put it through some paces to see if it could be viable for WheelE. If I get it soon enough I can run it by the club at the next meeting for feedback. Should be fun to play with even if we don't end up using it.

Did you see the M5Stack products at adafruit?
https://www.adafruit.com/product/4176
https://www.adafruit.com/product/4178
The simplest would be just the 4178 with the non-touch screen and 3 buttons ready to go. I'm not sure how customizable the screen and buttons are yet.

I have not seen the M5Stack before. Definitely looks good for mobile, hand-held type use. The featherboard touchscreen looks very similar to the one I got to play with, just a bit smaller. I bet they would both work with feathers in SPI mode. I'm finding it pretty easy to use, so would lean that direction. Only question with the feather is does it have enough I/O to handle the touch display and communicate with the pi?

Closed by CentralIllinoisRoboticsClub/wheele_gui#1.


Add support to raml 1.0

That error in travis already exists before in pull request.

Awesome, thanks for this guys! We'll take a look at it all on Monday. @rainum to comb through it, and figure out what's happening w Travis.

Changes Unknown when pulling 8976fb95b22fe0496f6260ca9d94d4d4d587c7f1 on mulesoft:master into ** on stoplightio:master**.

Changes Unknown when pulling 2e650b06df0e4631b4cd1617fa733efc137b1615 on mulesoft:master into ** on stoplightio:master**.

We're going to update the Travis node version so that tests run (@rainum).
Everything looks good, but we'd like to continue supporting RAML 0.8 export. Moving to 1.0 only export would be a breaking change for many of our users unfortunately.
At the moment, we don't have a good way to support multiple spec versions in api-spec-converter. The two options I see are:

duplicate the entire RAML exporter, one for 0.8, and one for 1.0.
pass the version number into exporters, and then have the one raml exporter use that version number to tweak the export as appropriate.

I vote for #2. However, it's a bandaid - we are currently preparing an architecture document for v2 of api-spec-converter, and it will handle multiple versions in a much more robust way.
Open to suggestions!

How about providing different exporter for a specific version? For that you don't need to do any changes to the current, but that would mean you need to maintain two different versions and there might be many similarities.

Yup that is option #1 above - we could certainly do that as a temporary solution, in order to get RAML 1.0 support out the door. If there are not many differences between the two versions, it might make sense to do option #2 above though - one exporter that is passed the version number.
@rainum and I are putting together an architecture document for a a significant update to this converter, which we'll share later this week. This will include a longer term solution to the spec versioning issue.

Changes Unknown when pulling fd4fc8f47ba56b2eec7763a1a4c02b260b8b319a on mulesoft:master into ** on stoplightio:master**.

Changes Unknown when pulling b54300789a9a1259cbf4d15f57d817770b09adae on mulesoft:master into ** on stoplightio:master**.

Coverage increased (+0.3%) to 86.948% when pulling 9df1de8a7b04fc87a6ae0fd68296ea96f878f7f3 on mulesoft:master into 6774e982963a75939f0610885ff714a80bcbc045 on stoplightio:master.

@glodieu @marbemac did we agree on a method to support both versions of RAML instead of replacing one?

@sichvoge Yes. Do you think that I need to create a new issue "support raml 0.8 and 1.0" or use this one to maintain raml 0.8?

Can you quickly summarize the outcome. What are we going for? Option 1 or 2?

Hi @sichvoge @marbemac We're going with option #2 but if we found many differences we'll change to option #1.

@glodieu That sounds great, let me know if there is anything that we can do to help, or if you have questions! Looking forward to shipping this.

Coverage increased (+0.4%) to 87.054% when pulling bd6765f3b2e9792ed3a449028cddd4f68bc5e903 on mulesoft:master into 6774e982963a75939f0610885ff714a80bcbc045 on stoplightio:master.

Coverage increased (+0.9%) to 87.512% when pulling 3485a1c3dfa0f979bb2a9bebf90c1dc5d1ccf53c on mulesoft:master into 6774e982963a75939f0610885ff714a80bcbc045 on stoplightio:master.

Coverage increased (+0.9%) to 87.512% when pulling d9f263f4b06feb436eed7b342ffab8302270b4f5 on mulesoft:master into 6774e982963a75939f0610885ff714a80bcbc045 on stoplightio:master.

Coverage increased (+0.9%) to 87.512% when pulling d9f263f4b06feb436eed7b342ffab8302270b4f5 on mulesoft:master into 6774e982963a75939f0610885ff714a80bcbc045 on stoplightio:master.

Coverage increased (+0.9%) to 87.512% when pulling d9f263f4b06feb436eed7b342ffab8302270b4f5 on mulesoft:master into 6774e982963a75939f0610885ff714a80bcbc045 on stoplightio:master.

Coverage increased (+0.9%) to 87.512% when pulling d9f263f4b06feb436eed7b342ffab8302270b4f5 on mulesoft:master into 6774e982963a75939f0610885ff714a80bcbc045 on stoplightio:master.

Coverage increased (+0.9%) to 87.512% when pulling d9f263f4b06feb436eed7b342ffab8302270b4f5 on mulesoft:master into 6774e982963a75939f0610885ff714a80bcbc045 on stoplightio:master.

Hi Marc, already finish. I created a baseraml,js with all common methods, raml08.js and raml10.js for the things regarding each version. Thanks!

We're adding support for multiple content types to Stoplight, and have updated this library accordingly to take advantage of that. It's a work in progress over at https://github.com/stoplightio/api-spec-converter/tree/feature/mimetype-overhaul. We'll merge these changes into that branch, test everything, and then finally merge back into master.
Question: does RAML 1.0 support multiple mimetypes? If so, we'll update the exporter to take advantage of this multiple mimetype support as well.

@marbemac it does support the use of multiple mimetypes indeed. See here.

@marbemac exporter is already updated to support multiple mimetypes for RAML 1.0

@sichvoge @glodieu Our build tools are going crazy with the addition of the raml1 parser package (basically not working). We just did an experiment adding webpack, to pre-compile a bundle.js of api-spec-converter and distribute it with the repository.
Without the raml1 package, bundle.js is 2.88mb.
With the raml1 package, bundle.js is 20mb (!!!).
Do you guys have any idea what's going on?

Ah, just noticed these, which might be related:
https://github.com/raml-org/raml-js-parser-2/issues/361
https://github.com/raml-org/raml-js-parser-2/issues/432
I suspect something to do with the raml1 parser dependencies is causing the build tools we use for the Stoplight app to die when trying to compile everything.

I removed raml 1.0 support from the feature/mimetype-overhaul for right now.
I created feature/raml10 branch with raml1.0 support.

@marbemac thats a known problem we need to fix indeed. the size of the project is to big and we will try to make some improvements soon.

@glodieu @sichvoge any ideas on the following error? This occurs when you try to build, with webpack, a project importing the raml1 package (when you include building the node_modules deps).
You can reproduce the issue by checking out the https://github.com/stoplightio/api-spec-converter/tree/babel-build-fail branch, running "npm i" and "npm run build". The webpack config used is in webpack.config.js.
Unfortunately this issue means we can't compile the stoplight codebase. We've spent quite a bit of time on it, and for now will have to just push the mimetype updates to master without raml 1.0 just yet. We do badly want to support 1.0 though!
> webpack --config ./webpack.config.js --progress --colors

 63% 366/409 build modules
<--- Last few GCs --->

   28568 ms: Mark-sweep 1396.6 (1456.5) -> 1396.6 (1456.5) MB, 853.4 / 0 ms [allocation failure] [GC in old space requested].
   29410 ms: Mark-sweep 1396.6 (1456.5) -> 1396.4 (1456.5) MB, 842.5 / 0 ms [allocation failure] [GC in old space requested].
   30234 ms: Mark-sweep 1396.4 (1456.5) -> 1396.4 (1456.5) MB, 824.0 / 0 ms [last resort gc].
   31071 ms: Mark-sweep 1396.4 (1456.5) -> 1396.2 (1456.5) MB, 836.6 / 0 ms [last resort gc].

<--- JS stacktrace --->

==== JS stack trace =========================================

Security context: 0x1ddd2f1e3ac1 <JS Object>
    1: parseLiteral [/Users/Marc/Sites/stoplight/yogi/node_modules/babylon/lib/parser/expression.js:~545] [pc=0x2e20ef9ee8e3] (this=0x123ad2dbd961 <a Parser with map 0x143363facd81>,value=0,type=0x3ef0bad3469 <String[14]: NumericLiteral>)
    2: parseExprAtom [/Users/Marc/Sites/stoplight/yogi/node_modules/babylon/lib/parser/expression.js:~387] [pc=0x2e20ef9babe6] (this=0x123ad2dbd961 <a Parser ...

FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - process out of memory
[1]    6094 abort      npm run build

Coverage increased (+1.08%) to 87.694% when pulling ac9016af8c8beac875b01598b17c69e871a6463f on mulesoft:master into 6774e982963a75939f0610885ff714a80bcbc045 on stoplightio:master.

@marbemac we will try to help investigating. haven't seen that before and looking around it might be typescript that cause issues, but i don't know.

Seems the problem is the typescript dependency from the parser. As the team is cleaning up legacy dependency, that typescript dep will be removed as well. Hope that will simplify the packaging significantly. We will probably publish a version tomorrow.

Coverage increased (+1.9%) to 88.512% when pulling 2dae2959d3190792a125baac7bcb3e77a8b8cbb7 on mulesoft:master into 6774e982963a75939f0610885ff714a80bcbc045 on stoplightio:master.

Coverage increased (+1.9%) to 88.512% when pulling 2dae2959d3190792a125baac7bcb3e77a8b8cbb7 on mulesoft:master into 6774e982963a75939f0610885ff714a80bcbc045 on stoplightio:master.

Coverage increased (+1.9%) to 88.512% when pulling 2dae2959d3190792a125baac7bcb3e77a8b8cbb7 on mulesoft:master into 6774e982963a75939f0610885ff714a80bcbc045 on stoplightio:master.

Coverage increased (+1.9%) to 88.512% when pulling 2dae2959d3190792a125baac7bcb3e77a8b8cbb7 on mulesoft:master into 6774e982963a75939f0610885ff714a80bcbc045 on stoplightio:master.

Coverage increased (+1.9%) to 88.527% when pulling ddc54878de929c58cbd2af3e894f4151853ce4af on mulesoft:master into 6774e982963a75939f0610885ff714a80bcbc045 on stoplightio:master.

Coverage increased (+1.9%) to 88.527% when pulling ddc54878de929c58cbd2af3e894f4151853ce4af on mulesoft:master into 6774e982963a75939f0610885ff714a80bcbc045 on stoplightio:master.

Coverage increased (+1.9%) to 88.527% when pulling ddc54878de929c58cbd2af3e894f4151853ce4af on mulesoft:master into 6774e982963a75939f0610885ff714a80bcbc045 on stoplightio:master.

Coverage increased (+1.9%) to 88.527% when pulling ddc54878de929c58cbd2af3e894f4151853ce4af on mulesoft:master into 6774e982963a75939f0610885ff714a80bcbc045 on stoplightio:master.

Coverage increased (+1.9%) to 88.527% when pulling ddc54878de929c58cbd2af3e894f4151853ce4af on mulesoft:master into 6774e982963a75939f0610885ff714a80bcbc045 on stoplightio:master.

With the new raml1 parser update, we can now compile! Will be working towards getting this in shape in into production asap. A quick check of exporting our todo demo yields some errors in api workbench that we have questions about. Otherwise, it's looking good.

We get "specifying unknown facet:$ref" due to the schema refs below. How are these meant to be handled in 1.0?
Can't quite figure out why the example in the image below is invalid.
Seems we need to update traits to be a map in the 1.0 exporter (instead of an array).

#%RAML 1.0
title: To-do Demo
version: '1.0'
baseUri: 'http://todos.stoplight.io'
protocols:
  - HTTP
documentation:
  - title: To-do Demo
    content: |-
      ## Welcome

      This is a place to put general notes and extra information, for internal use.

      To get started designing/documenting this API, select a version on the left.
securitySchemes:
  'null':
    type: Pass Through
    describedBy: null
    description: null
/todos:
  displayName: todos
  description: ''
  '/{todoId}':
    displayName: '{todoId}'
    description: ''
    uriParameters:
      todoId:
        type: string
    get:
      displayName: GET_todo
      headers: {}
      responses:
        '200':
          body:
            application/json:
              $ref: '#/definitions/todo-full'
      queryParameters: {}
    put:
      displayName: PUT_todos
      body:
        application/json:
          $ref: '#/definitions/todo-partial'
          example: |-
            {
                "name": "my todo's new name",
                "completed": false
            }
      headers: {}
      responses:
        '200':
          body:
            application/json:
              $ref: '#/definitions/todo-full'
        '403':
          body:
            application/json:
              type: object
      queryParameters: {}
      securedBy:
        - null
    delete:
      displayName: DELETE_todo
      headers: {}
      responses:
        '204': {}
      queryParameters: {}
      securedBy:
        - null
  uriParameters: {}
  post:
    displayName: POST_todos
    body:
      application/json:
        $ref: '#/definitions/todo-partial'
        example: |-
          {
              "name": "my todo's name",
              "completed": false
          }
    headers: {}
    responses:
      '201':
        body:
          application/json:
            $ref: '#/definitions/todo-full'
      '403':
        body:
          application/json:
            type: object
            properties: {}
    queryParameters: {}
    securedBy:
      - null
  get:
    displayName: GET_todos
    headers: {}
    responses:
      '200':
        body:
          application/json:
            type: array
            items:
              $ref: '#/definitions/todo-full'
            example: |-
              [
                  {
                      "id": 17,
                      "name": "new lit item",
                      "completed": null,
                      "completed_at": null,
                      "created_at": "2014-08-28T14:14:28.494Z",
                      "updated_at": "2014-08-28T14:14:28.494Z"
                  },
                  {
                      "id": 18,
                      "name": "new lit item2",
                      "completed": null,
                      "completed_at": null,
                      "created_at": "2014-08-28T14:14:28.494Z",
                      "updated_at": "2014-08-28T14:14:28.494Z"
                  }
              ]
    queryParameters: {}
/mocked:
  displayName: mocked
  description: ''
  uriParameters: {}
  get:
    displayName: GET_mocked
    description: |-
      This is an example of a mocked endpoint.

      This endpoint does not actually exist in the api - try visiting [http://todos.stoplight.io/mocked](http://todos.stoplight.io). You will see the default response (same as you get when you visit the root "/" url).

      We have defined a 200 response below, with an example, and then explicitly turned on mocking for this endpoint via the dropdown in the right sidebar.

      With this enabled, if you visit {your prism instance host}/mocked, you'll see the mocked example. You can find the mock server host for this API by clicking the "Design Dashboard" button at the top of this screen. You can also try sending a test request by clicking "send test request" button in the right sidebar.
    headers: {}
    responses:
      '200':
        body:
          application/json:
            type: object
            properties:
              this:
                type: string
              mocked:
                type: boolean
            example: |-
              {
                  "this": "is",
                  "mocked": true
              }
    queryParameters: {}
types:
  user: |-
    {
        "type": "object",
        "properties": {
            "name": {
                "type": "string"
            }
        }
    }
  todo-partial: |-
    {
        "type": "object",
        "properties": {
            "name": {
                "type": "string"
            },
            "completed": {
                "type": [
                    "boolean",
                    "null"
                ]
            }
        },
        "required": [
            "name"
        ]
    }
  todo-full: |-
    {
        "allOf": [
            {
                "$ref": "#/definitions/todo-partial"
            },
            {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "completed_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "format": "date-time"
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "type": "string",
                        "format": "date-time"
                    }
                },
                "required": [
                    "id"
                ]
            }
        ]
    }
traits:
  - standardErrors:
      responses:
        '401':
          body:
            application/json:
              type: object
        '404':
          body:
            application/json:
              type: object
              properties:
                foo:
                  type: string
                bar:
                  type: string
  - standardErrors:
      responses:
        '403':
          body:
            application/json:
              type: object
              properties:
                message:
                  type: string
              required:
                - message
              example: |-
                {
                    "message": "NOT AUTHORIZED"
                }
        '404':
          body:
            application/json:
              type: object
              properties:
                status:
                  type: string
                error:
                  type: string
              required:
                - status
                - error
              example: |-
                {
                    "status": "404",
                    "error": "Not Found"
                }
        '500':
          body:
            application/json:
              type: object
  - paged:
      queryParameters:
        limit:
          type: integer
          description: This is how it works.
          maximum: 100
        skip:
          type: string

Hi Marc,
Could you please share me source file used to generate such raml file?
Thanks!

References are handled directly. So lets assume you have:
type: object
required:
- name
properties:
  name:
    type: string
  address:
    $ref: '#/definitions/Address'
  age:
    type: integer
    format: int32
    minimum: 0

that converts into:
type: object
properties:
  name:
    type: string
  address:
    type: Address
    required: false
  age:
    type: integer
    format: int32
    minimum: 0
    required: false

Hmm, so are $refs not supported? It's a common pattern to make the body definition a ref to a model. For example, /users returns an array of user models, /user/{id} a single user model, etc. Those have $ref right there in the root (like in the base below).
post:
    displayName: POST_todos
    body:
      application/json:
        $ref: '#/definitions/todo-partial'

This in RAML is:
post:
    displayName: POST_todos
    body:
      application/json:
        type: todo-partial

Seems we need to update traits to be a map in the 1.0 exporter (instead of an array).

yes it needs to be a map. what i also realised is that there are a lot of empty nodes, we should check if a node is empty and if yes not create it.

AH, ok - so we just need to add support for re-writing those root $refs to that format.
I'm ok with the empty node change.
Any idea on the example property in the image above?

not sure if that works with all ;) i have seen that you can actually do $ref on paths as well which does not have anything to do with a data model. but if you talk about the occasions where you ref another data model; yes.

Hi Marc,
Regarding $ref stuff, I want to explain you my changes about that.
When '$ref' from swagger or 'type' from raml is parsed, it's converted to 'ref' attribute in the parser model.
Example:
'$ref' swagger -> 'ref' parser model
'type' raml -> 'ref' parser model
When you export to swagger or raml, 'ref' attribute is converted to '$ref' or 'type' depends of the export.
'ref' parser model -> '$ref' swagger
'ref' parser model -> 'type' raml
If you have any doubt, please let me know.

@glodieu makes sense! I've pulled in all of your most recent changes to the raml10 branch, and a whole lot of fixes and changes from us. It's in pretty good shape, the biggest issue right now is raml import.
https://github.com/stoplightio/api-spec-converter/tree/raml10
Could you take a look at https://github.com/stoplightio/api-spec-converter/blob/raml10/lib/importers/baseraml.js#L329-L370 and import in general, to fix it up? I wasn't quite sure how to use the raml1 parser - looks like the trait on line 336 there is some sort of special object from your library.
Thanks in advance, we're almost there!

Coverage increased (+1.8%) to 88.427% when pulling b4d36f149940938598cc9bfd98acf4d69f6d16bb on mulesoft:master into 6774e982963a75939f0610885ff714a80bcbc045 on stoplightio:master.

QQ: It seems there is an exporter and importer for RAML 1.0; does that mean we can also go from RAML 1.0 > Swagger 2.0 already?

@sichvoge yup! That should be possible as soon as we can fix up some of the issues with the raml importer. I don't quite understand the raml1 parser yet, and the objects and methods on those objects that it returns.
@glodieu did you have a chance to check out the code I linked above? I've been trying to figure out what methods are available on the TraitImpl object  from these docs:
https://raml-org.github.io/raml-js-parser-2/modules/_src_index_.html
but can't seem to figure it out. It might make sense to add some raml08/raml10 -> swagger mapping tests (instead of just swagger -> raml). I'll add one to get us started, in the next few hours.

I'll also copy over your latest changes to the raml10 branch - what's the best way to move forward - I'm thinking we just add @glodieu as a contributor so that we can collaborate directly on that branch.

Coverage increased (+1.7%) to 88.3% when pulling a2d6b9bbea384c4f7847ff9008a63b706f7e1e3a on mulesoft:master into 6774e982963a75939f0610885ff714a80bcbc045 on stoplightio:master.

Are you guys really work with the top-level functions instead of the much easier to use JSON object? @glodieu can you elaborate?

BTW, I've got a very good example that waits for you to be sure that its working fine. https://github.com/raml-org/raml-examples/tree/master/others/world-music-api
Its a complete set of maybe 80% of the RAML 1.0 capabilities.

Yeah I just started digging into the new raml importer files (w the raml1 parser), and am not quite sure how the top-level functions work or even what properties / functions are available for the various objects.
Sweet on that world music api example - we'd need to produce the "expected" swagger given that RAML file. What I'm thinking is re-working the tests to work like this:
/test
   /data
      /reversable
        /swagger
          example1.json
          examle2.json
        /raml
          example1.yaml
          examle2.yaml
      /swagger-import
        /swagger
          example1.json
        /raml
          example1.yaml
      /raml-import
        /swagger
          example1.json
        /raml
          example1.yaml

The test suite would enumerate those folders (or we could just have a config object that describes the cases).

The test suite would run all the reversible files in both directions swagger -> raml and raml -> swagger, and assert equality.

The test suite would run all of the swagger-import folder swagger -> raml and assert the resulting raml is equal to the one expected.

The test suite would run all of the raml-import folder raml -> swagger and assert the resulting swagger is equal to the one expected.

This would make it much easier to just drop examples in, to beef up the case coverage. Right now most of the tests just duplicate the same logic to setup the importer, do the import one direction, then the other direction, then assert the result is equal to what we expect.

Sounds good. Regarding the top-level; at some point we will remove that from the parser since no one really uses it vs the JSON representation. So maybe in the next iteration we should use the JSON object. Might be to late now, since we have deliveries on our side ;)

JSON representation sounds much nicer - I did not know that was an option. I'm ok shipping this version w the top-level functions, but yes makes sense to update soon after. We just need to figure out the raml import side of things now, and we're in good shape.

Coverage increased (+1.7%) to 88.31% when pulling 83616c01c66ba7de602a8bb098ad921851b20809 on mulesoft:master into 6774e982963a75939f0610885ff714a80bcbc045 on stoplightio:master.

Coverage increased (+1.7%) to 88.33% when pulling 3abf24be1ebd6d808de2fc41aef2c6774de09bb9 on mulesoft:master into 6774e982963a75939f0610885ff714a80bcbc045 on stoplightio:master.

Coverage increased (+1.7%) to 88.33% when pulling 3abf24be1ebd6d808de2fc41aef2c6774de09bb9 on mulesoft:master into 6774e982963a75939f0610885ff714a80bcbc045 on stoplightio:master.

@glodieu I've merged in all of your recent changes, along with our own, to the raml10 branch. You should have access to contribute directly there now - could you start doing that?
I also added an example failing raml import case:
https://github.com/stoplightio/api-spec-converter/commit/761df5a1b857071675772a394687971540234180
Could you help out cleaning up usage of the raml1 parser as it relates to importing? I'm not sure how it all works.
Thanks! Let me know if you have any questions.

Coverage increased (+1.8%) to 88.383% when pulling 1129d85ec246f5e32b36bb98fab2f2f4ddf28e1d on mulesoft:master into 6774e982963a75939f0610885ff714a80bcbc045 on stoplightio:master.

I merged these latest changes into the raml10 branch. Could you please start making changes there? Managing both branches is time consuming (and error prone).
For the moment, I commented out the traits import here: https://github.com/stoplightio/api-spec-converter/commit/9793157816c62ab10ba34ab10b36a0e5bcbd53fa.
But in general, raml import isn't using the parser correctly at all, so nothing "really" works, even though no errors are thrown. Any help on that would be appreciated!

Hi @marbemac, I'm a little confuse about trait tests that you added in raml10 branch.
If I move such test to master branch (it doesn't have any changes by us), it fails.
I thought that the fails came from my changes.
Thanks in advance.
Here is the test output:

Converter convert should convert import traits from raml 0.8 to swagger:
AssertionError: expected { Object (swagger, schemes, ...) } to deeply equal { Object (swagger, schemes, ...) }

expected - actual

{
"basePath": "/foo"
"consumes": [
"application/json"

"application/xop+xml"
]
"definitions": {
"user": {
"properties": {
"description": ""
"title": "Simple API"
"version": ""
}
"parameters": {
"trait:myTrait:authorization": {

 "description": ""

 "in": "header"

 "name": "authorization"

 "type": "string"

}
"trait:myTrait:limit": {

 "in": "query"

 "name": "limit"

 "type": "string"

}
"trait:myTrait:page": {

 "in": "query"

 "name": "page"

 "type": "string"

}
}
"paths": {
"/users": {
"get": {

   "consumes": []
   "description": ""
   "operationId": "GET_users"
   "parameters": [
     {

       "in": "query"

       "name": "page"

       "required": false

       "type": "string"

       "$ref": "#/parameters/trait:myTrait:page"
     }
     {

       "in": "query"

       "name": "limit"

       "required": false

       "type": "string"

       "$ref": "#/parameters/trait:myTrait:limit"
     }
     {

       "description": ""

       "in": "header"

       "name": "authorization"

       "required": false

       "type": "string"

       "$ref": "#/parameters/trait:myTrait:authorization"
     }
   ]

   "produces": []
   "responses": {
     "200": {
       "description": ""
       "schema": {
         "$ref": "#/definitions/user"
       }
     }
   }

   "summary": ""

   "summary": "Users"
 }

}
}
"produces": [

"application/json"

"application/EDIFACT"
]
"schemes": [
"http"
"https"
]
"securityDefinitions": {
"apikey": {

 "in": "query"

 "name": "apikey"

 "type": "apiKey"

}
}
"swagger": "2.0"
}

at Assertion.assertEqual (node_modules/chai/lib/chai/core/assertions.js:485:19)
at Assertion.ctx.(anonymous function) [as equal] (node_modules/chai/lib/chai/utils/addMethod.js:41:25)
at test/lib/converter.js:146:37
at lib/converter.js:9:2241

Thanks Marc, continue working on this.

Coverage increased (+1.8%) to 88.383% when pulling 137684ca77c5e80cc5741c3e5035ae1c6f78c2a6 on mulesoft:master into 6774e982963a75939f0610885ff714a80bcbc045 on stoplightio:master.

Coverage increased (+1.8%) to 88.383% when pulling d5d54871e7b3a4c87b4f7cd212998a3a0de12e0b on mulesoft:master into 6774e982963a75939f0610885ff714a80bcbc045 on stoplightio:master.

Merged into master & released!

@marbemac any release notes that we can refer back to? I don't see an entry on the releases tab


Critical bug fix

Looks pretty strange. It should have been fixed somehow in the stock
version. Anyway, all this works there. Thus, I wonder, is the source
published here somewhat outdated or incomplete? And, if so, where
could I find the actual one?

@poretsky Actually this source of talkback is very outdated and unfortunately Google talkback team is very slow in releasing the latest sources.
I even feel that now they are not going to release the further sources since there's a darn silence from them since more than 1 year.
I don't think that this is a better idea to fix the things in the outdated source and Nobody knows that whether they will accept/murge the pull requests or not. :( Sadly this is the truth.

Yes, I know. This was the case for a long time. But the last commit into
the master branch was done about a month ago and it claims version 8.1
that corresponds to the version of the last update on Play Market
roughly at the same time. Moreover, pull request #7 had more or less
comprehensive response in three months. Of course, it is not very quick,
but late is better than never, anyway.
So, I think, there is a reason to hope that something has been changed.

Yes, I know. This was the case for a long time. But the last commit into the master branch was done about a month ago and it claims version 8.1 that corresponds to the version of the last update on Play Market roughly at the same time. Moreover, pull request #7 had more or less comprehensive response in three months. Of course, it is not very quick, but late is better than never, anyway. So, I think, there is a reason to hope that something has been changed.

Oh, 8.1 source release? I didn't notice it. seems good. But let's hope that they will release the sources for other updates in a good time frame (which I do not hope).
(I wish that something is changed at their side though)
Also, are you visually impaired programmer?

it seems google doesn't pay attention for the problems of impaired vision people. There are many errors in this screen reader. for example, doesn't work "selection mode" in the editors and it's very long ago. Nobody corrects it.

@ChadBrowerAtGoogle any chances of releasing the latest talkback 8.2  source? Can we get more info please?

It is outdated now and doesn't relate to the current code state.


🐛 Failed to decode downloaded font for served CSS fonts

🐛 bug report
Expected Behavior
Browsers should be able to decode fonts referred to by a CSS file.
Current Behavior
Warnings displayed on Chrome:
Failed to decode downloaded font: https://dew-glove.glitch.me/8253c766e445323b/MaterialIcons-Regular.woff2
OTS parsing error: invalid version tag

Font didn't render.
Font resource when clicked-through shows binary data in base64.
Possible Solution
Maybe the font shouldn't be served encoded in base64?
Context
Following the advice on #55 to load external stylesheets led me to this issue.
Code Sample
Glitch app
Glitch project
Your Environment

Software
Version(s)

Package
9.11.1

Runtime
node 9.10.0

Package Manager
npm 6.0.0

Operating System
Windows 10

Hmm, I don't see the font being served as base64 but instead get an HTML page from bankai. of course neither is correct :D
I think we need some sheetify plugin that puts the things used inside url()s in the correct place.


Permission error with newest version: 'iam.serviceAccounts.signBlob' denied on resource

Hi,
just updated to the latest version of strapi and this plugin.
All services are hosted in gcp.
After updating I received this error, when trying to fetch content with images (stored in gcs) included:

After rolling it back to the former used version (4.5.6) it all runs fine again. Even with the latest strapi version.
Best regards,
Hendrik

I have same issue with 4.10.2

Same here

This helped me out: https://stackoverflow.com/questions/75071759/google-cloud-storage-permission-denied
Maybe not the plugin, but gcp is the problem...

Maybe not the plugin, but gcp is the problem...

I think it also relate to release version of 4.10.1
https://github.com/strapi-community/strapi-provider-upload-google-cloud-storage/releases/tag/4.10.1
Because this release supports gcs signed url
https://cloud.google.com/storage/docs/access-control/signed-urls#signing-iam
If my guess is correct, enable publicFiles options will be change the situation.

Is that possible we don't use signed url on public files? or maybe we can config whether we want to use signed URL or not?

This helped me out: stackoverflow.com/questions/75071759/google-cloud-storage-permission-denied
Maybe not the plugin, but gcp is the problem...

This also helped fix things for me! Specifically adding the "Service Account Token Creator" role to our service account. Also just wanted to show off my config block in case it helps anyone else!

Is that possible we don't use signed url on public files?

Yes that's possible. if you set true to publicFiles option, you can get unsigned url. This behavior documented as follows:

Files are signed when publicFiles is set to false.

https://github.com/strapi-community/strapi-provider-upload-google-cloud-storage#expires

or maybe we can config whether we want to use signed URL or not?

We can choose to use signed URL or not by publicFiles option.


Tag field

For big projects with many submodules, it is handy to mark the submodule that sent a log message. For example, if you have a realtime project with Teams, Users and Chats, and certain event parsing for some of these instances has failed, you'd probably want to print something like "[TEAMS] Failed fetching new avatar for team 2352379". That way, it's much easier to notice the desired messages.
Basically I'm proposing to add a nullable "tag" field for Logger itself and individual log events (individual tags override Logger tag). This is not done on Printer level because Printer tags can't be individual for each log.
I'm not sure about 2 things:

How to format the tag in SimplePrinter: "[SomeTag]" or "TAG: SomeTag. I like the first variant because it's more compact.
Where to put it in PrettyPrinter. Right now it shows at the top of the message.

Thanks for the pull request.
However, since it hasn't even been decided yet whether such a feature will be added, let alone how it will be implemented, I can't really review this PR at this time and marked it as a draft for now. Sorry.


fix: adjusted console record output

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


error: cannot find 'AppsFlyerAttribution' in scope

Hey @wangxingxing123654 ,
Could you elaborate on the issue?
What is the plugin version that's being used + logs showing the error.

Hello,
I have similar issue, I updated AppsFlyer with cocoapods
Installing AppsFlyerFramework 6.2.6 (was 4.11.2)
Then I renamed "AppsFlyerTracker" to "AppsFlyerLib" and changed the import.
I removed derived data, clean my project, pod deintegrate, but the problem persist.
In AppDelegate I have this warning:
Use of 'AppsFlyerLib' refers to instance method rather than class 'AppsFlyerLib' in module 'AppsFlyerLib'
context: Xcode Version 12.5 (12E262), Swift 5
Thank you for your help

Hey @wangxingxing123654 ,
Could you elaborate on the issue?
What is the plugin version that's being used + logs showing the error.

v6.2.4+1-flutterv1

Could you try and see if this error appears on v6.2.6-nullsafety.1?

Closing this issue, please reach out if you still encounter this issue!


Test the performance benchmark pipeline execution status

Which Issue(s) This PR Fixes

XXX
Brief Description
Test the performance benchmark pipeline execution status
How Did You Test This Change?

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 47.35%. Comparing base (daf3d1a) to head (8dc04b1).

Additional details and impacted files
@@                    Coverage Diff                    @@
##             cicd-perf-benchmark    #8759      +/-   ##
=========================================================
- Coverage                  47.50%   47.35%   -0.16%
+ Complexity                 11588    11547      -41
=========================================================
  Files                       1282     1282
  Lines                      89848    89848
  Branches                   11557    11557
=========================================================
- Hits                       42683    42545     -138
- Misses                     41937    42051     +114
- Partials                    5228     5252      +24

Flag
Coverage Δ

47.35% <ø> (-0.16%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Challenge required

how to solved  Challenge required.?

Challenge is a verification of security the Instagram, try login, after, open Instagram mobile application and confirm access location, waiting every minute's.


C# - Accessing values in a Godot.Collections.Dictionary seems to return copies instead of consistent references?

I am sorry if this has been posted before, I have searched the issues but can't find anything. This is some behaviour that I would not expect as we are accessing a value by reference, but the reference is not consistent? I would have expected it to behave the same as the C# dict?
Godot version:

3.2.3.stable.monoo
OS/device including version:

OpenGL ES 2.0 Renderer: AMD Radeon Pro 555 OpenGL Engine
OpenGL ES 2.0 Batching: ON
Issue description:

            Godot.Collections.Dictionary<object, object> z = new Godot.Collections.Dictionary<object, object>() {
                {"someKey", new Godot.Collections.Dictionary<object, object>() {
                    {"someOtherKey", "someValue"}
                }}
            };

            GD.Print("Some values stored in a godot dict");
            GD.Print(z["someKey"].GetHashCode());
            GD.Print(z["someKey"].GetHashCode());
            GD.Print(z["someKey"].Equals(z["someKey"]));
            GD.Print(System.Object.ReferenceEquals(z["someKey"], z["someKey"]));

            System.Collections.Generic.Dictionary<object, object> t = new System.Collections.Generic.Dictionary<object, object>(){
                {"someKey", new System.Collections.Generic.Dictionary<object, object>() {
                    {"someOtherKey", "someValue"}
                }}
            };

            GD.Print("Some values stored in a c# dict");
            GD.Print(t["someKey"].GetHashCode());
            GD.Print(t["someKey"].GetHashCode());
            GD.Print(t["someKey"].Equals(t["someKey"]));
            GD.Print(System.Object.ReferenceEquals(t["someKey"], t["someKey"]));

outputs this
Some values stored in a godot dict
1179816577
-164861908
False
False
Some values stored in a c# dict
365243463
365243463
True
True

Steps to reproduce:
Code above
Minimal reproduction project:

Under the hood, the array operator calls godot_icall_Dictionary_GetValue (or the _Generic version):
https://github.com/godotengine/godot/blob/5e726d8d2025f1bc52299894230d94ef5972cea4/modules/mono/glue/collections_glue.cpp#L185-L197
Since it's converting a Variant to a Mono object on every access, it's not surprising that this is the behavior. However, I'm not sure if there's a way to change this without reworking how all of this code works.

OK, in the meantime i have rewritten the function that relied on this behavior in GD script and call it from C#.
I don't know what to do with this issue @neikeq - happy if you want to close it but the behavior is not intuitive and might catch people out so maybe a docs message about it or something in the future :)

@GeorgeS2019 i think it is a bit of a documentation thing - i feel like the Godot.Collections.Dictionary class (and somewhat the array class) are themselves noob traps - there is no real reason to use them as far as i can see (would be happy too be corrected here) unless you need to interface with some GDScript that requires a Dict as an input or if some native thing (like the networking or whatever) returns one.
The reason they are a noob trap is - coming from C#, you see a, what you assume to be highly optimised dictionary class specifically for Godot and start using it, but actually it seems that it is just fallout from the GDScript JSON-Like language construct - Dictionary - and it behaves in strange was, in as in this issue.

@iamacup  I think the keyword here is Noob Traps.   I too frequently use GDScript to validate if the C# method calls would lead to similar results as that of the GDScript. I do not have the overview, which C# methods (under what circumstances) will behave and lead to similar results as the correspondence GDScript calls.  This is Why if we have the community to support unit tests that recommend how BEST to call C# methods for the corresponding GDScript call.  We can learn from the best practice used by the more experience C# Godot developers. I hope this will lead to better c# Nood developer experience. This is just a suggestion.

@GeorgeS2019 Please don't derail the discussion with off-topic comments. This issue has no relation to unit tests or lack thereof.

This is expected. Godot.Collections.Array/Dictionary are wrappers around Godot's native Array/Dictionary. As such when storing a string from C#, it's converted into Godot's String type. If this is not ok for you, then I recommend using a different collection like those in System.Collections.Generic.

@neikeq its not just strings though - its any stored value -
Dictionary d = new Dictionary();
d["one"] = 1;
GD.Print(d["one"] == d["one"]); // false
I don't really want this to drag on, there are more important things to worry about in Godot and this is clearly a bigger thing to solve for which you correctly point out are other solutions (System.Collections.Generic) - i think users should be told to avoid Godot.Collections.Dictionary at almost all costs - it causes a lot of issues that are hard to debug because of this behavior.

Reopening, as we still need to document this.

Just want to share my findings for anyone that may encounter Godot Dict vs C# Dict..
            Godot.Collections.Dictionary<string, object> GodotDict = new Godot.Collections.Dictionary<string, object>();
            GodotDict["one"] = 1;
            GD.Print((int)GodotDict["one"] == 1); // true
            GD.Print(GodotDict["one"] == GodotDict["one"]); // false

            System.Collections.Generic.Dictionary<string, object> CSharpDict = new System.Collections.Generic.Dictionary<string, object>();
            CSharpDict["one"] = 1;
            GD.Print((int)CSharpDict["one"] == 1); // true
            GD.Print(CSharpDict["one"] == CSharpDict["one"]); // true

             GD.Print((int)GodotDict["one"] == (int)CSharpDict["one"]); // True
             GD.Print(GodotDict["one"] == CSharpDict["one"]); // False

Ya'll are talking about this in 2020, and I'm not finding much discussion. One point to add is that there are a number of implementations that require using Godot.Collections.Dictionary, e.g. PhysicsDirectSpaceState3D.IntersectRay


pip-compile boto3 fail

Pip-compile fail to generate requirements.txt from requirements.in if I input boto3 as one of the package to be installed.
Steps to replicate

create fresh new virtual environment virtualenv venv and activate it source venv/bin/activate
create new requirements.in file. In my example, I use this 4 libraries: flask, gensim, numpy, boto3
run pip-compile

Expected result
requirements.txt file is generated with boto3 version inside.
Actual result
It produce this error
    "Expected ',' or end-of-list in",line,"at",line[p:] ValueError: ("Expected ',' or end-of-list in", u'futures<4.0.0,>=2.2.0; python_version == "2.6" or python_version == "2.7"', 'at', u'; python_version == "2.6" or python_version == "2.7"')
Thanks in advance!

I have tried to reproduce, without error. Here is my setup:
Windows 7
pip==9.0.1
pip-tools==1.8.0

Thanks for the info, David. I myself run python 2.7.6 in Ubuntu 14.04 with the same version of pip and pip-tools.
I wonder if this is some kind of heisenbug because my colleague who first encountered this error, suddenly, somehow, managed to successfully install the package, without doing anything. However, I still run into this error.
I managed to install the package individually by running pip install in the terminal, but that kind of defeat the purpose of using pip-tools.
Here's the full traceback from my terminal. The error disappears if I remove boto3 from the requirements.in file, no matter the position (up, middle, or bottom).
Traceback (most recent call last):
  File "/home/mitbal/workspace/ml-application/word_vector_service/wvsenv/bin/pip-compile", line 11, in <module>
    sys.exit(cli())
  File "/home/mitbal/workspace/ml-application/word_vector_service/wvsenv/local/lib/python2.7/site-packages/click/core.py", line 716, in __call__
    return self.main(*args, **kwargs)
  File "/home/mitbal/workspace/ml-application/word_vector_service/wvsenv/local/lib/python2.7/site-packages/click/core.py", line 696, in main
    rv = self.invoke(ctx)
  File "/home/mitbal/workspace/ml-application/word_vector_service/wvsenv/local/lib/python2.7/site-packages/click/core.py", line 889, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/mitbal/workspace/ml-application/word_vector_service/wvsenv/local/lib/python2.7/site-packages/click/core.py", line 534, in invoke
    return callback(*args, **kwargs)
  File "/home/mitbal/workspace/ml-application/word_vector_service/wvsenv/local/lib/python2.7/site-packages/piptools/scripts/compile.py", line 223, in cli
    reverse_dependencies = resolver.reverse_dependencies(results)
  File "/home/mitbal/workspace/ml-application/word_vector_service/wvsenv/local/lib/python2.7/site-packages/piptools/resolver.py", line 273, in reverse_dependencies
    return self.dependency_cache.reverse_dependencies(non_editable)
  File "/home/mitbal/workspace/ml-application/word_vector_service/wvsenv/local/lib/python2.7/site-packages/piptools/cache.py", line 139, in reverse_dependencies
    return self._reverse_dependencies(ireqs_as_cache_values)
  File "/home/mitbal/workspace/ml-application/word_vector_service/wvsenv/local/lib/python2.7/site-packages/piptools/cache.py", line 163, in _reverse_dependencies
    for name, version_and_extras in cache_keys
  File "/home/mitbal/workspace/ml-application/word_vector_service/wvsenv/local/lib/python2.7/site-packages/piptools/utils.py", line 192, in lookup_table
    for value in values:
  File "/home/mitbal/workspace/ml-application/word_vector_service/wvsenv/local/lib/python2.7/site-packages/piptools/cache.py", line 164, in <genexpr>
    for dep_name in self.cache[name][version_and_extras])
  File "/home/mitbal/workspace/ml-application/word_vector_service/wvsenv/local/lib/python2.7/site-packages/pkg_resources.py", line 2625, in parse
    reqs = list(parse_requirements(s))
  File "/home/mitbal/workspace/ml-application/word_vector_service/wvsenv/local/lib/python2.7/site-packages/pkg_resources.py", line 2563, in parse_requirements
    line, p, specs = scan_list(VERSION,LINE_END,line,p,(1,2),"version spec")
  File "/home/mitbal/workspace/ml-application/word_vector_service/wvsenv/local/lib/python2.7/site-packages/pkg_resources.py", line 2541, in scan_list
    "Expected ',' or end-of-list in",line,"at",line[p:]
ValueError: ("Expected ',' or end-of-list in", u'futures<4.0.0,>=2.2.0; python_version == "2.6" or python_version == "2.7"', 'at', u'; python_version == "2.6" or python_version == "2.7"')

@mitbal You might try to recreate your virtualenv, as it has possibly captured an older version of setuptools which fails to parse the environment markers.

Ah, the problem is gone and it works as intended after I updated setuptools using pip.
Thanks David!


GalleryIdentifier property remains in IGallery despite being flattened

In Compute generation: https://github.com/Azure/azure-powershell/blob/generation/src/Compute/readme.md
The following Interface is specified for the Microsoft.Azure.PowerShell.Cmdlets.Compute.Models.Api20190301.IGallery model.
/// Specifies information about the Shared Image Gallery that you want to create or update.
    public partial interface IGallery : Microsoft.Azure.PowerShell.Cmdlets.Compute.Runtime.IJsonSerializable, Microsoft.Azure.PowerShell.Cmdlets.Compute.Models.Api20170330.IResource {
        ///
        /// The description of this Shared Image Gallery resource. This property is updatable.
        ///
            string Description { get; set; }
        /// Describes the gallery unique name.
            Microsoft.Azure.PowerShell.Cmdlets.Compute.Models.Api20190301.IGalleryIdentifier Identifier { get; set; }
        ///
        /// The unique name of the Shared Image Gallery. This name is generated automatically by Azure.
        ///
            string IdentifierUniqueName { get;  }
        /// The provisioning state, which only appears in the response.
            string ProvisioningState { get;  }

    }

Since IGalleryIdentifier contains only the string property UniqueName the Identifier proeprty should not exist on the interface.

This occurs in IGalleryImage, and other types as well.  In some instance, proeprties are flattened, but unflattened proeprty still remains in the publis interface.

This should be fixed now.


Error handling design

napari needs consistent way(s) to surface various error types to the user. This issue relates to #1395 and #1090
There are a few different categories errors can fall into that should be considered:
Severity levels
Critical error = (How would we define critical? For MVP we might not worry about distinguishing between critical and non-critical.)
Non-critical error = Not critical, but still a problem
Informational alert = (Out of scope for now because these are not actually errors, but can be good to keep in mind when designing error messages.) Not causing a problem, but something for user to be aware of. E.g. we may want to warn them that an action they are seeking to take is destructive and cannot be undone; ideally however we'd always allow undoing
Cause
Unanticipated = Caused by unforeseen bug in code, for example
Anticipated = Caused by user action; user trying to do something not possible or not allowed
“Origin”
napari UI = Inherent to actions/functionality available from within the core napari GUI
napari console = Inherent to actions/functionality in the napari console, and related to core napari itself
Plugin UI = Inherent to actions/functionality available from within the plugin’s GUI. (Not sure if plugins are in scope for this work, but if we have control over their error messages, ideally they'd fit into similar visual patterns we use for the napari core error messages.)
Plugin console = Inherent to actions/functionality in the napari console, and related to the plugin (not to core napari)
Error type permutations
Based on combining the above categories, I started to identify what we should surface to the user for each possible combination of error types (e.g. critical x unantipated x napari UI) as well as preliminary ideas for how to message the user about the error visually. The following screenshots show tables holding this analysis, and can be viewed as a PDF:
Error handling.pdf
Something that would greatly help to design a holistic error handling system long-term would be to have documented errors for each of these error type permutations (in the tables below most are empty because I don't know of very many yet).

Messaging types
The above error type permuation analysis helped me to determines which slices could benefit from similar messaging types. These message types can be applied as templates across multiple error type permutations that have certain things in common (e.g. where user's focus is when error occurs: console vs general UI, etc). The below screenshots show my current thinking around which error types should map to which message types.
Note: Having concrete examples of each error type permutation would help to validate those I think don't/shouldn't even exist, and would also help to develop the message templates and what sort of information we'd be able to pull in when communicating about the error with the user.

Questions
There are several questions noted in the Error handling.pdf document (and in the "Questions/comments" sections of the tables in the screenshots above) which would help to paint a more complete picture of the current error scene in napari, as well as what we have control over, etc, and would in turn help to design a more complete and considered experience. However, the following are the most important for developing a shorter term MVP:

What constitutes critical?
Will we be able to tell if an unanticipated error meets our criteria for critical, or does the fact that it’s unanticipated mean we know nothing about it?
Should we even have critical vs non-critical error levels, or just one level? For now, I am assuming one level of error.
How much can we know about errors caused by an external plugin? For now, I am just designing messaging for napari-core errors, but ideally plugin errors could fit into similar template(s).

Next steps

[x] Iterate designs per messaging group type
[ ] Get feedback
[ ] Finalize designs
[ ] Document final designs

Update: Here's a link to my latest Figma explorations:
https://www.figma.com/file/Aq1PhG2tVTodGZnSBe0nui/Error-Handling?node-id=0%3A1
I tried several locations for where errors could appear, and added some comments about my initial thoughts. (You can press the "c" key to see the comments or add your own.) It'd be great to get any feedback via the Figma comments or if it's easier can add them to this issue.
I will probably make a new Figma page and narrow down options after I've let the ideas settle in my mind over the weekend, and hopefully can get some feedback from others to incorporate as well. Thanks!

Here's a link to the Figma page where I've narrowed down some of the designs:https://www.figma.com/file/Aq1PhG2tVTodGZnSBe0nui/Error-Handling?node-id=0%3A1
And here's a link to a prototype of how the error message for anticipated errors (e.g. user drags wrong file type onto canvas) could appear and act:
https://www.figma.com/proto/Aq1PhG2tVTodGZnSBe0nui/Error-Handling?node-id=22%3A36&viewport=-1934%2C203%2C2&scaling=min-zoom
And lastly a prototype showing how we could prompt users to submit a GH issue to napari's GH if an unanticipated error occurs:
https://www.figma.com/proto/Aq1PhG2tVTodGZnSBe0nui/Error-Handling?node-id=22%3A111&viewport=-3971%2C429%2C1&scaling=min-zoom
I still have some questions though in terms of what specific content we will be able to surface to the user about the error (if anything, and if so, would it be useful to?), as well as what our limitations are for the GH issue submission and what content that pane would need (do we need to have a user log into the GH account first? How would that work? Any other important information I am missing?).

These are so beautiful @liaprins-czi!!!
For the github submission right now our error dialog looks like this and then clicking on github opens it like this if i am logged in. i'm pretty sure you get sent to a signup / login page if you aren't logged in.

and

we might want to include some more of the information in the napari info panel, especially if automatically done, but we might not want to overwhelm people either!!

We might want to include that system info/ extension info in an explicit opt-in fashion - see the bottom left in this VScode dialog

Maybe @tlambert03 has further ideas here as he created that initial report on github dialog.

Also @tlambert03 what was the Qt element you were thinking for this display in the bottom right?

can you link to it?

do we need to have a user log into the GH account first?

there is a slight issue here.  Since we are encoding the message in the URL there, there is a character limit (5910 chars) to the body of the bug report if the user is not logged in.  So, in some cases, they will have to re-submit after logging in.  Otherwise it will forward them correctly to the page (with bug report intact) after login.  see https://github.com/napari/napari/pull/1024#issuecomment-598262057 for original discussion.

Also @tlambert03 what was the Qt element you were thinking for this display in the bottom right?

I was mentioning the Qt::Sheet window flag which provides a lovely slide-in animation.  However, as mentioned it's macOS only... and it also implies a modal dialog.  So it's probably not worth looking into, and we may instead want to spend some time rolling our own custom dialog that slides in using QPropertyAnimation and fades out on a timer.


Broken link to USEITI withdrawal letter

The withdrawal letter is no longer on the EITI site. We need to see if we can find this elsewhere. It's in Judy's post. https://blog-nrrd.doi.gov/product-champion/

@daniel-coleman-1 if you can't a pdf then please remove the link.

I found a link for the US EITI withdraw letter that is functioning: https://eiti.org/sites/default/files/attachments/signed_eiti_withdraw_11-17.pdf


how can I use .extend or .merge with .lazy(() => z.object({ ... }))

as you can see，ZodType does not have extend，so how can I write the type for FormData

Wow 😞

Wow, closed as stale but this is a real scenario when you have complex lazy objects that might need extending.
 Zod seemed like a perfect fit because ActivityPub implementations are all over the place, and I want some sane validation, but the nesting makes things weird.
The crux of the problem here seems to be any object that extends a lazy object must be also lazy, and I'm not sure there's a nice way of enforcing this through zod's syntax.
I ended up exposing the lazy callback as part of the object:
// Object.ts

export type ObjectType = { ... }

export function lazyObjectSchema = () => {
  ...
  return { ... }
}

export const ObjectSchema: z.ZodType<ObjectType> = z.lazy(lazyObjectSchema);

// Document.ts
import { lazyObjectSchema, ObjectType } from "./object.js";

export type Document = ObjectType & {
  ...
};

export const DocumentSchema: z.ZodType<Document> = z.lazy(() =>
  lazyObjectSchema()
    .extend({
      ...
    }),
);

Hope this is helpful to anyone else landing here with nowhere else to go.


bump version to 0.8.1

Title says it all!

samples/package.json needs to be updated as well.

@stephenplusplus doh, done!


Send user to FxA to change password when migrated #1002

Fixes #1002. It changes the link to go to FxA in a new tab instead of showing the change password form.
Excitement to follow in video form.

excellent, thanks!
r+


HTML

HTML
User Story
As a bootcamp student,
I want the prework notes to be structured on a webpage,
so that I can easily find and read information
Acceptance Criteria
GIVEN a Prework Study Guide website,
WHEN I visit the website in my browser,
THEN I see four boxes, with associated noted listed,  titled: "HTML", "CSS", "Git" and "JavaScript"

Followed the instructions in prework module 3.1


add visualisation directly from trimesh

It'd be nice to be able to directly visualise here. According to the trimesh doc, it's as simple as

install networkx, scipy, pyglet
add combined.show()

So I tried that, but I just get an empty window. Anyone else more luck?

We had a discussion about that me and Yassir and Yassir highlighted that since PETSIRD already have petsird_plot_scanner.py, we did not need to go forward. In other word, both could exist. The previous was more than good enough for smaller scanner, after all. What do you think?

petsird_plot_scanner.py was hacked together a bit. I think it could be retired in favour of this repo, if the show() would work (according to the doc, I think it should, but it didn't on my (pretty old) VM). Have you tried?

Tried. Worked with only installing pyglet, since we already installed scipy to be able to use convexhull of trimesh.
Also, discovered that trimesh assumes meters or something, since some of the 3D viewers show only a part of the scanner. Looking at blender, this is due to ?fog of war? being 1000 meter. Same happens with pyglet  and dividing everyone by 1000.0 deal with this.
See screenshot below. The viewier is meh at best. So, I would leave the issue as is until someone take the time to adjust the show options such that it can look somewhat decent.

oh well...

I have no idea what we gain from using VTK over pyglet. Pyglet was a pip install and a show, so pretty short and sweet. If VTK is the same and you know how to make it nice, then it might be worth it.
However, I would say that I believe that efforts on this endeavor should be minimal: 3D viewer already exists and, for me, the true validation would be for the user to have access to a 3D representation of their scanner via the vendor or whatever and compare it to the 3D mesh created with this repo. I do not see much advantages to a direct viewer since we add a dependencies, which is equivalent, for me, to ask the user to have a 3D viewer and it is not really faster. Well, with meshlab, I can load the 3D mesh created here with a command line, so it is as fast, or even faster when doing visual tests!
Nevertheless, it would not be the first time that I am wrong on the viewer optimal form. Good luck if you continue in that direction!

A separate viewer is not a big deal. My suggestion for pyglet was because it's essentially already in trimesh, and could therefore be a 5 min thing.
I agree with @MaxTousss that this seems a large amount of work (not just for writing, but also for maintaining), and VTK is a very large dependency. I'm not going to stop you doing this of course, but would then suggest to do it in a separate repository (using this one).
By the way, it's not so clear to me how a VTK viewer would be different from using any other viewer (unless VTIK can consume a trimesh object, but then it can just as well read a .ply presumably).

A VTK viewer would be better than pyglet in our context since Yassir has experience in it and thus could make it a nice experience. Pyglet might be as powerfull as VTK but we have no one that responded our call for help on that part.


Newest version 1.6.0 cause "Unable to find existing allocation for shared memory segment to unmap"

Describe the bug
I have installed a ubuntu 22.04 amd64 vm on 1.5.1, installed gnome desktop packages and tigervncserver, I can vnc into this vm without any issue.
But when I update to 1.6.0, and start the vncserver this issue raises:
"assertion failed [rem_idx != -1]: Unable to find existing allocation for shared memory segment to unmap
(VMAllocationTracker.cpp:745 remove_shared_mem)"
Since I can only download the older version 1.3.0 in https://docs.orbstack.dev/downgrade, I tried 1.3.0 to reopen vncserver, no issue raises!
To Reproduce
No response
Expected behavior
No response
Diagnostic report (REQUIRED)
No response
Screenshots and additional context (optional)
No response

grdctl rdp enable raises:
Segmentation fault

Please share a diagnostic report from Help > Upload Diagnostics as required by the issue template.

Can I reach you on the Discord? I can provide whatever you want.

OrbStack info:
Version: 1.6.0
Commit: 73817253cc0680b865fe411b21e187325a28d758 (v1.6.0)
System info:
macOS: 14.5 (23F79)
CPU: arm64, 16 cores
CPU model: Apple M3 Max
Model: Mac15,9
Memory: 128 GiB
Full report: https://orbstack.dev/_admin/diag/orbstack-diagreport_2024-05-23T06-41-03.877607Z.zip

I have completely reinstalled the OrbStack.
For now, I can not even ssh orb

I have completely reinstalled OrbStack.
For now, I can not even ssh orb

Steps to reproduce the "Unable to find existing allocation for shared memory segment to unmap"

Install OrbStack
Install Ubuntu 22.04 or 24.04
Install gnome desktop sudo apt install -y gnome-shell gnome-shell-extensions gnome-session gnome-terminal ubuntu-gnome-desktop
Install the tigervnc sudo apt install -y tigervnc-standalone-server
Start the vncserver vncserver
The error raises.

BTW, on lasted macOS Sonoma 14.5 and with version 1.3.0 OrbStack, a fresh install Ubuntu 22.04 amd64 VM still has this issue. I am regretting to delete the old working VM...

Fixed for the next version.

Released in v1.6.1.


Update dependencies and add tests

Update dependencies.
Add tests.

Current test coverage is 50%.

thx @anonrig, can you provide some background as to why you needed to update the dependencies?

@sinan The aim was to keep the repository up to date. First of all, I will add the tests left out in version 0.1.19 and solve the issue #164.

@anonrig let me know when it's ready, until then I've assigned it back to you.

@gokmen @sinan
The overall test coverage is now 50%. You can merge this pull request.
Here is the coverage for most used classes:
- tabs (60%)
- tooltip (52%)
- split (68%)
- button (80%)
- contextmenu (52%)
- forms (56%)```

There is a major bug with KDView I've encountered with. Most unit tests starts with a beforeEach method, where we initialize the current instance/component that we're testing it,  and a sinon sandbox. Most of the travis builds are failing due to a inconsistency with the classes that were extended by KDView. We should open a different bug about this.

@anonrig Thanks for reporting this. We will open new issue regarding of this bug.

I've also solved issue #166

@sinan I've added the improvements/updates you've requested for. I didn't delete any existing functionality on this PR.


Export to Google Sheets failing

Describe the bug
I am unable to export the data to Google Sheets.
To Reproduce
Steps to reproduce the behavior:

Go to 'Export' button on top right
Click on 'Custom Tabular Exporter' in the drop down
Go to 'Upload' Tab
Select 'A new Google spreadsheet' radio button
Click on 'Upload' Button
Enter the name of the spreadsheet in the dialog box that appears
Authorize if it is the first time

Current Results
HTTP ERROR 404
Problem accessing /https%3A%2F%2Fdocs.google.com%2Fspreadsheets%2Fd%2F1VMnJttMcx2-A7vIj_rBhKb8SjP1X3gx3CIyDE9aYkVo%2Fedit%23gid%3D0. Reason:
NOT_FOUND

Powered by Jetty://
Expected behavior
It should create and upload data to the new spreadsheet.
Screenshots

Desktop (please complete the following information):

OS: Windows 10
Browser Version: Firefox 68.0.1 (64-bit)
JRE or JDK Version: java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) Client VM (build 25.211-b12, mixed mode, sharing)

OpenRefine (please complete the following information):

Version OpenRefine 3.2

Datasets
My data is simply three columns: url, htmltext, title
Some very basic data scraping.
Additional context
When I go to the url mentioned in the error. The spreadsheet is actually created but no data is uploaded.

Fixed by a4c4a207673ef1465c0713a7c6661f1dc071e7a0


Module not found: Error: Can't resolve 'mind-ar' in 'C:\Users\PC\Desktop\Task\Booking\booking\src'

Hi,
After using the module with npm:
https://www.npmjs.com/package/mind-ar
And importing it to my project through this:
import 'mind-ar';
The error comes up:
Module not found: Error: Can't resolve 'mind-ar' in 'C:\Users\PC\Desktop\Task\Booking\booking\src'
Please note, it only happens with this particular npm module.
Note: Using VUE
@hiukim  - Thanks in advance!

can you screencap your ./node_modules directory?


Schedule templates

Schedules for different conditions only differ in minor but important details, for example the set of used items is different but the general structure stays the same.
This, combined with #28 and the idea of item templates, can be implemented by adding a prepocessing step. We define a JSON-specification, that can be understood and displayed by the app. Then, we compile our higher-level JSON-file to the lower level specification. Sounds unnecesarily complex to me when I write it like this 🤔, the idea is actually very simple.

@s-tofu should we expand/compile the study definition

when we create the study (on the server, once)
when a client sends a request for the first time (on the server, once)
when the study information is downloaded (on the client, once for every participant)


Puppeteer-extra

I would like to port puppeteer-extra to Dart for use with this. I have no clue where to start, but before I do, do you think this should be possible?

@CorvetteCole Not the author, but if you want help, I'd be willing to contribute.
Might want to consider that this repo doesn't seem very active though, so It might be worth forking this if you cant get a response from the maintainer.

Hi,
I would totally accept pull request to add high-level utility functions like the one in "puppeteer-extra".
There is already the "stealth" plugin integrated in this repo: https://github.com/xvrh/puppeteer-dart/blob/master/lib/src/plugins/stealth.dart
Feel free to ask any questions you may have.

I was not aware the stealth plugin was already implemented! that was my main use case, I implemented it manually with a JS file on new document load. This is very useful. @g5becks not certain I need puppeteer-extra now although it would be nice if we could use plugins built for node with this Dart library. not sure if that's feasible I'm going to look in to it

@CorvetteCole no problem. It's really cool to know that this package has a plugin class built into it that can be extended though.

@xvrh  Hi, I'm trying to use puppeteer-extra to allow my automation to sign in to google account, does the StealthPlugin has the functionality to bypass that? Because i'm using the StealthPlugin and seems like it doesn't solve my issue on Flutter side. Anyone has any suggestions?


standalone local android (rtsp server)

Hey there,
i want to ask can i use this library to create a local android rtsp server to accept stream data (for example from local client ip OBS)?
i tried to call:
rtspServer = RtspServer(this, 1935)
rtspServer.startServer()

and remarking these code:
//        if (!serverCommandManager.videoDisabled) {
//          if (!serverCommandManager.videoInfoReady()) {
//            semaphore.drainPermits()
//            Log.i(TAG, "waiting for video info")
//            semaphore.tryAcquire(5000, TimeUnit.MILLISECONDS)
//          }
//          if (!serverCommandManager.videoInfoReady()) {
//            onMainThreadHandler {
//              connectChecker.onConnectionFailed("video info is null")
//            }
//            return@Thread
//          }
//        }

then i start the obs server through rtsp://IPADDRESS:1935

Thank you!

Hello,
This server is not designed to accept external data. This server is only to connect with a player and send data from the device sources.
I mean. a stream server has 2 types of clients:

Pusher/encoders -> send video/audio data to the server
Players -> get video/audio data from the server (the server get this video/audio data from the pusher) and reproduce it.

So this server only accept players and get the video/audio data from the device. External video/audio data from a pusher is not accepted.

Hello,
Okay thanks for the reply.


[UX] API Implementation - Cannot delete Endpoints in random order

Description:
Not fulfilling checklist items:
Consistency and standards - Is flow maintain the same patterns and consistency?
Related task:
Create API
Issue:
Production and Sandbox failover endpoints cannot be deleted in random order, have to delete the last entry first to delete the endpoint which needs to be deleted.
Proposed Solution:
Have a delete inline option for added failover endpoints
Suggested Labels:
UX, Improvement, 2.1.0
Affected Product Version:
2.1.0

This is fixed in APIM 3.0.0