ActionDispatch::Routing::Mapper::Scope no longer provides []=

So, if I do, against Rails master (I'm at 32424b6bfb) with JR (0.5.5+; I'm using master at cc9ca2b6dc here but only to see if it'd been fixed yet):
# $APP/config/routes.rb
Rails.application.routes.draw do
  namespace :api do
    namespace :v1 do
      jsonapi_resources :resource
    end
  end
end

I get a really big stacktrace vomited at me, apparently a side-effect of rails/rails#5e81e6ca31 although I don't understand the intricacies around here so I have no idea what's going on or how to fix it:
$GEMS/jsonapi-resources-cc9ca2b6dcb1/lib/jsonapi/routing_ext.rb:80:in `block in jsonapi_resources': undefined method `[]=' for #<ActionDispatch::Routing::Mapper::Scope:0x0000080e78c7b8> (NoMethodError)
	from $GEMS/rails-32424b6bfbb8/actionpack/lib/action_dispatch/routing/mapper.rb:1374:in `block (2 levels) in resources'
	from $GEMS/rails-32424b6bfbb8/actionpack/lib/action_dispatch/routing/mapper.rb:1710:in `block in resource_scope'
	from $GEMS/rails-32424b6bfbb8/actionpack/lib/action_dispatch/routing/mapper.rb:821:in `controller'
	from $GEMS/rails-32424b6bfbb8/actionpack/lib/action_dispatch/routing/mapper.rb:1710:in `resource_scope'
	from $GEMS/rails-32424b6bfbb8/actionpack/lib/action_dispatch/routing/mapper.rb:1373:in `block in resources'
	from $GEMS/rails-32424b6bfbb8/actionpack/lib/action_dispatch/routing/mapper.rb:1702:in `with_scope_level'
	from $GEMS/rails-32424b6bfbb8/actionpack/lib/action_dispatch/routing/mapper.rb:1371:in `resources'
	from $GEMS/jsonapi-resources-cc9ca2b6dcb1/lib/jsonapi/routing_ext.rb:79:in `jsonapi_resources'
	from $APP/config/routes.rb:4:in `block (3 levels) in <top (required)>'
	from $GEMS/rails-32424b6bfbb8/actionpack/lib/action_dispatch/routing/mapper.rb:875:in `block (2 levels) in namespace'
	from $GEMS/rails-32424b6bfbb8/actionpack/lib/action_dispatch/routing/mapper.rb:806:in `scope'
	from $GEMS/rails-32424b6bfbb8/actionpack/lib/action_dispatch/routing/mapper.rb:875:in `block in namespace'
	from $GEMS/rails-32424b6bfbb8/actionpack/lib/action_dispatch/routing/mapper.rb:1823:in `path_scope'
	from $GEMS/rails-32424b6bfbb8/actionpack/lib/action_dispatch/routing/mapper.rb:874:in `namespace'
	from $GEMS/rails-32424b6bfbb8/actionpack/lib/action_dispatch/routing/mapper.rb:1482:in `namespace'
	from $APP/config/routes.rb:3:in `block (2 levels) in <top (required)>'
	from $GEMS/rails-32424b6bfbb8/actionpack/lib/action_dispatch/routing/mapper.rb:875:in `block (2 levels) in namespace'
	from $GEMS/rails-32424b6bfbb8/actionpack/lib/action_dispatch/routing/mapper.rb:806:in `scope'
	from $GEMS/rails-32424b6bfbb8/actionpack/lib/action_dispatch/routing/mapper.rb:875:in `block in namespace'
	from $GEMS/rails-32424b6bfbb8/actionpack/lib/action_dispatch/routing/mapper.rb:1823:in `path_scope'
	from $GEMS/rails-32424b6bfbb8/actionpack/lib/action_dispatch/routing/mapper.rb:874:in `namespace'
	from $GEMS/rails-32424b6bfbb8/actionpack/lib/action_dispatch/routing/mapper.rb:1482:in `namespace'
	from $APP/config/routes.rb:2:in `block in <top (required)>'
	from $GEMS/rails-32424b6bfbb8/actionpack/lib/action_dispatch/routing/route_set.rb:399:in `instance_exec'
	from $GEMS/rails-32424b6bfbb8/actionpack/lib/action_dispatch/routing/route_set.rb:399:in `eval_block'
	from $GEMS/rails-32424b6bfbb8/actionpack/lib/action_dispatch/routing/route_set.rb:377:in `draw'
	from $APP/config/routes.rb:1:in `<top (required)>'
	from $GEMS/rails-32424b6bfbb8/activesupport/lib/active_support/dependencies.rb:296:in `load'
	from $GEMS/rails-32424b6bfbb8/activesupport/lib/active_support/dependencies.rb:296:in `block in load'
	from $GEMS/rails-32424b6bfbb8/activesupport/lib/active_support/dependencies.rb:268:in `load_dependency'
	from $GEMS/rails-32424b6bfbb8/activesupport/lib/active_support/dependencies.rb:296:in `load'
	from $GEMS/rails-32424b6bfbb8/railties/lib/rails/application/routes_reloader.rb:40:in `block in load_paths'
	from $GEMS/rails-32424b6bfbb8/railties/lib/rails/application/routes_reloader.rb:40:in `each'
	from $GEMS/rails-32424b6bfbb8/railties/lib/rails/application/routes_reloader.rb:40:in `load_paths'
	from $GEMS/rails-32424b6bfbb8/railties/lib/rails/application/routes_reloader.rb:16:in `reload!'
	from $GEMS/rails-32424b6bfbb8/railties/lib/rails/application/routes_reloader.rb:26:in `block in updater'
	from $GEMS/rails-32424b6bfbb8/activesupport/lib/active_support/file_update_checker.rb:75:in `call'
	from $GEMS/rails-32424b6bfbb8/activesupport/lib/active_support/file_update_checker.rb:75:in `execute'
	from $GEMS/rails-32424b6bfbb8/railties/lib/rails/application/routes_reloader.rb:7:in `execute'
	from $GEMS/rails-32424b6bfbb8/railties/lib/rails/application/finisher.rb:81:in `block (2 levels) in <module:Finisher>'
	from $GEMS/rails-32424b6bfbb8/activesupport/lib/active_support/callbacks.rb:444:in `instance_exec'
	from $GEMS/rails-32424b6bfbb8/activesupport/lib/active_support/callbacks.rb:444:in `block in make_lambda'
	from $GEMS/rails-32424b6bfbb8/activesupport/lib/active_support/callbacks.rb:166:in `call'
	from $GEMS/rails-32424b6bfbb8/activesupport/lib/active_support/callbacks.rb:166:in `block (2 levels) in halting'
	from $GEMS/rails-32424b6bfbb8/activesupport/lib/active_support/callbacks.rb:601:in `call'
	from $GEMS/rails-32424b6bfbb8/activesupport/lib/active_support/callbacks.rb:601:in `block (2 levels) in default_terminator'
	from $GEMS/rails-32424b6bfbb8/activesupport/lib/active_support/callbacks.rb:600:in `catch'
	from $GEMS/rails-32424b6bfbb8/activesupport/lib/active_support/callbacks.rb:600:in `block in default_terminator'
	from $GEMS/rails-32424b6bfbb8/activesupport/lib/active_support/callbacks.rb:167:in `call'
	from $GEMS/rails-32424b6bfbb8/activesupport/lib/active_support/callbacks.rb:167:in `block in halting'
	from $GEMS/rails-32424b6bfbb8/activesupport/lib/active_support/callbacks.rb:502:in `call'
	from $GEMS/rails-32424b6bfbb8/activesupport/lib/active_support/callbacks.rb:502:in `block in call'
	from $GEMS/rails-32424b6bfbb8/activesupport/lib/active_support/callbacks.rb:502:in `each'
	from $GEMS/rails-32424b6bfbb8/activesupport/lib/active_support/callbacks.rb:502:in `call'
	from $GEMS/rails-32424b6bfbb8/activesupport/lib/active_support/callbacks.rb:94:in `__run_callbacks__'
	from $GEMS/rails-32424b6bfbb8/activesupport/lib/active_support/callbacks.rb:814:in `_run_prepare_callbacks'
	from $GEMS/rails-32424b6bfbb8/activesupport/lib/active_support/callbacks.rb:83:in `run_callbacks'
	from $GEMS/rails-32424b6bfbb8/actionpack/lib/action_dispatch/middleware/reloader.rb:83:in `prepare!'
	from $GEMS/rails-32424b6bfbb8/actionpack/lib/action_dispatch/middleware/reloader.rb:55:in `prepare!'
	from $GEMS/spring-1.3.6/lib/spring/application.rb:153:in `serve'
	from $GEMS/spring-1.3.6/lib/spring/application.rb:131:in `block in run'
	from $GEMS/spring-1.3.6/lib/spring/application.rb:125:in `loop'
	from $GEMS/spring-1.3.6/lib/spring/application.rb:125:in `run'
	from $GEMS/spring-1.3.6/lib/spring/application/boot.rb:18:in `<top (required)>'
	from ruby-2.2.2/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
	from ruby-2.2.2/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
	from -e:1:in `<main>'

I have monkeypatched around this with
class ActionDispatch::Routing::Mapper::Scope
  def []=(k, v)
    @hash[k] = v
  end
end

Let's see if that commit to Rails can be reverted. []= was a public method, and it doesn't seem to me that it should have been removed. Can you take the lead on that @jashank?

I've filed rails/rails#21231, but I'm not hopeful; a major release gives them a valid excuse to remove bits.
I think I now understand how this works, in any case, and may be able to write a patch for JR to get around this.

Oh, okay:

That class is entirely private and should not be used directly. We removed a private API method but you can use public methods to archive (sic) the same.

I'll just finish testing this patch, and PR it.

Great. Thanks for filing the issue and chasing this down.

So I have a patch that looks like it should work.  Unfortunately, I can't test it because rails/rails is broken again; this time, it seems to be some refactoring that's broken (commit rails/rails@6ac882bb58b429d20b76c96975df7dabaf618988):
NoMethodError: undefined method `singleton?' for nil:NilClass
$GEMS/rails-9c0b40817650/actionpack/lib/action_dispatch/routing/mapper.rb:1494:in `shallow?'
$GEMS/rails-9c0b40817650/actionpack/lib/action_dispatch/routing/mapper.rb:1463:in `block in nested'
$GEMS/rails-9c0b40817650/actionpack/lib/action_dispatch/routing/mapper.rb:1702:in `with_scope_level'
$GEMS/rails-9c0b40817650/actionpack/lib/action_dispatch/routing/mapper.rb:1462:in `nested'
$GEMS/rails-9c0b40817650/actionpack/lib/action_dispatch/routing/mapper.rb:1656:in `apply_common_behavior_for'
$GEMS/rails-9c0b40817650/actionpack/lib/action_dispatch/routing/mapper.rb:1367:in `resources'
jsonapi-resources@master/lib/jsonapi/routing_ext.rb:86:in `jsonapi_resources'
jsonapi-resources@master/test/test_helper.rb:101:in `block in <top (required)>'
$GEMS/rails-9c0b40817650/actionpack/lib/action_dispatch/routing/route_set.rb:399:in `instance_exec'
$GEMS/rails-9c0b40817650/actionpack/lib/action_dispatch/routing/route_set.rb:399:in `eval_block'
$GEMS/rails-9c0b40817650/actionpack/lib/action_dispatch/routing/route_set.rb:377:in `draw'
jsonapi-resources@master/test/test_helper.rb:99:in `<top (required)>'
jsonapi-resources@master/Rakefile:4:in `require'
jsonapi-resources@master/Rakefile:4:in `<top (required)>'
ruby-2.2.2/lib/ruby/2.2.0/rake/rake_module.rb:28:in `load'
ruby-2.2.2/lib/ruby/2.2.0/rake/rake_module.rb:28:in `load_rakefile'
ruby-2.2.2/lib/ruby/2.2.0/rake/application.rb:689:in `raw_load_rakefile'
ruby-2.2.2/lib/ruby/2.2.0/rake/application.rb:94:in `block in load_rakefile'
ruby-2.2.2/lib/ruby/2.2.0/rake/application.rb:176:in `standard_exception_handling'
ruby-2.2.2/lib/ruby/2.2.0/rake/application.rb:93:in `load_rakefile'
ruby-2.2.2/lib/ruby/2.2.0/rake/application.rb:77:in `block in run'
ruby-2.2.2/lib/ruby/2.2.0/rake/application.rb:176:in `standard_exception_handling'
ruby-2.2.2/lib/ruby/2.2.0/rake/application.rb:75:in `run'
ruby-2.2.2/bin/rake:33:in `<main>'


Dismissing a Dialog that was triggered by a menu item on a mobile device breaks the scrolling of the page that was under the Dialog

🐛 Bug Report
After dismissing a <Dialog> that was triggered with a<Menu> item (like in the Spectrum docs @ https://react-spectrum.adobe.com/react-spectrum/DialogContainer.html#dialog-triggered-by-a-menu-item) on mobile, scrolling on the page that was underneath the <Dialog> before it was dismissed is broken. Broken ranges from completely non-functional to incredibly inconsistent, but I am consistently able to reproduce this issue where scrolling does not work as expected. I'm still able to interact with any elements that were underneath the <Dialog> like buttons but scrolling is definitely broken. I tested it on my iPhone 12 Pro and on a Chrome simulated iPhone 12 Pro and was able to see this issue on both with the app I'm working on and on the actual example of this functionality on the linked Spectrum docs page above.
🤔 Expected Behavior
After dismissing the <Dialog> on mobile, the page that was underneath it should be able to scroll as normal.
😯 Current Behavior
After dismissing the <Dialog> on mobile, the page that was underneath it will either no longer scroll or (only after a lot of aggressive back and forth swiping) will scroll unreliably.
💁 Possible Solution
Not sure, but I did notice on my iPhone 12 Pro that when I trigger the <Dialog> on the Spectrum docs, the page scrolls all the way back to the top on its own before the <Dialog> is presented. Maybe there's something there? 🤷🏽♂
🔦 Context
I'm trying to present the set of Legal notices for the product on our mobile devices. Presenting a <Dialog> with these notices was not a problem on desktop but this issue is preventing this very important piece from being included on mobile. There's only one item in the <Menu> that triggers a <Dialog> (this one) and the other <Menu> items still work as expected.
💻 Code Sample
I just copied the code from the same Spectrum docs linked above into the sandbox below
https://codesandbox.io/s/brave-brattain-w4ort6
🌍 Your Environment

Software
Version(s)

react-spectrum
3.13.0

Browser
Chrome (desktop), Safari (mobile)

Operating System
macOS Big Sur (desktop), iOS 15.5 (mobile)

🧢 Your Company/Team
Adobe (Adobe Acrobat Sign Integrations)
🕷 Tracking Issue (optional)
N/A

Here's a video of the behavior on the Chrome simulated iPhone 12 Pro environment (so that the "taps" can be visualized as I try to scroll to no avail):
https://user-images.githubusercontent.com/22261998/176565002-79d6d4e9-b596-485e-987d-d34523956978.mov

Also, if you need to reach out to me it's probably better to reach out to my Adobe account<EMAIL_ADDRESS>

I can reproduce it on my iPhone 13 Pro iOS 15.5

I cannot reproduce this on the latest. Please confirm, if it's still an issue, we can reopen


Configure: Make --strict-warnings meaningful with MSVC cl

We also add this to our x86 builds on appveyor

Appveyor approves, so I'm taking this out of WIP / draft.  Time for final review

Merged.
b4a7b4ec4acc712b1f22a83966ac986b510f25d8 Configure: Make --strict-warnings meaningful with MSVC cl

Mental note to sself: This needs to be backported to 1.1.1, ref #8074

It was almost trivial to cherry-pick it.  To be safe, I'm making a separate backport PR

Backport in #10365


Working only with original REZFILE?

Awesome work! I had a lot of fun with it. But I'm making my own version of 3DO Doom and have a modified REZFILE already. I'm trying to use modified REZFILE, which is working without any errors on a real 3DO and in any 3DO emulator. But your app crashes on startup with this message: "Failed to load a CEL format image used by the...". Does your app uses only hardcoded original REZFILE?

Thanks @Versusvs! There's nothing in the code that requires a specific REZFILE, it's reading the data and resource file contents as-is. The resources need to be in the same order however as the original resources file since the game uses simple integer (array) indexes to access resources rather than names - that part is hardcoded for sure and was in the original code release too.
From the look of your error message it seems like the game might be having trouble loading the specific CEL image format that you are using. While I made every effort to support as much CEL modes as I could, it's entirely possible there may be specific formats that the game doesn't handle or support properly. I just did what I needed to make everything in the original game work basically, since documentation/examples for this image format are thin on the ground.
I would need to see your data to confirm but I suspect that might be the issue.

"that part is hardcoded for sure and was in the original code release too"
I think that's the reason. I added some resources to rezfile and app expects to see something else than it currently avalable at that index. It's not about cel format, however... May be there's multiframed sprite at that index or wad lump or something...  You can look at my doomrez.h file. https://github.com/Versusvs/3DO-Doom-WIP. I'll be happy if your app will support modified REZFILEs.

I did a diff of your rezfile with the original 3DO one, it looks like quite a few new resources were added. This would cause some of the slots/indices that resources are stored in to shift within the REZFILE. This in turn would break the .exe I compiled (and the original 3DO binary) if you used this REZFILE since resources would now be in unexpected locations within the global resources list.
The only fix for this situation (unfortunately) is to modify PhoenixDoom's own DoomRez.h: https://github.com/BodbDearg/phoenix_doom/blob/master/source/Game/DoomRez.h to include your new resource ids, and recompile. The REZFILE is a very primitive file format and contains no information identifying the lumps in the file (unlike a .WAD) other than their position in the resource list, so if the order is upset in some way then everything breaks...
I can't fix this issue without breaking compatibility with the normal game or coming up with an entirely new modding mechanism that sidesteps the REZFILE, which I'm not prepared to do at this time: see https://github.com/BodbDearg/phoenix_doom/blob/master/docs/Q%26A.md


Find cool css template

This is really Important!!@!!

http://www.infinitytechnologies.com.au/

Boss Free Website Template - Free-CSS.com.zip


feat(buttons): updates buttons to npm styles

BREAKING CHANGE: (class name) .btn-highlight-alt and .btn-highlight deprecated
A few things of note:

I kept a .btn-danger class even though it currently matches our red highlight button. My thought process was that the two seem likely to diverge
I fudged the disabled styles for v1. I'm hoping Ken tells me all disabled buttons can just be gray. I'll do that in another PR.
I made the .btn-sm class also all-caps. Should it be all caps instead via the addition of the emphasis class instead? @jefflembeck would love to get your opinions.

Ooh, not just deprecated but removed!

I usually say "deprecation warning" when something is going away soon and "deprecated" when it is gone. Do you say it another way?

'deprecation' means a suggestion not to use something, from latin for 'expressing disapproval'. So you deprecate, then remove.

I must say though these buttons look fantastic. :)

:sheep:!

Should it be all caps instead via the addition of the emphasis class instead?

@stubbornella I think the emphasis class is best here. It'll give consistency across buttons.

Ok, I'll fix it
On Thu, Mar 10, 2016 at 6:38 AM -0800, "Jeff Lembeck"<EMAIL_ADDRESS>wrote:
Should it be all caps instead via the addition of the emphasis class instead?
@stubbornella I think the emphasis class is best here. It'll give consistency across buttons.
—
Reply to this email directly or view it on GitHub.

Looks good to me still.  I like the keeping the meaning of btn-danger!


Add solution for CodeChef/SUMTRIAN in Java

Add solution for Sum in a Triangle in CodeChef in Java.

Thanks!


Feature: Pass LexicalEditor to LexicalComposer

It would be useful to be able to pass an instance of LexicalEditor into LexicalComposer just like you're able to do with LexicalNestedComposer.
I'm working with a setup where a DecoratorNode needs to generate serialized versions of 2 editors rendered with a React component. It's simpler if the DecoratorNode controls the editor instances and passes them down to the component. The alternative is having the DecoratorNode prop drill the params necessary to render the editors, let the React component instantiate the editors, and then access the instances via multiple levels of refs.
The LexicalComposer config still allows for a editor__DEPRECATED param that makes my proposal possible. My feature request is to drop the __DEPRECATED label and support it as a config option.
To avoid confusion, the initial config could support both editor and editorState, but only allow one at a time.
PR that deprecated the editor prop: https://github.com/facebook/lexical/pull/1407

After examine the code, I found you can create your own provider of LexicalComposerContext, it is exported.

If you're not using it to create the editor, then you should create a LexicalComposerContext directly


LibWeb/CSS: Parse custom-idents more consistently

These have a few rules that we didn't follow in most cases:

CSS-wide keywords are not allowed. (inherit, initial, etc)
default is not allowed.
The above and any other disallowed identifiers must be tested case-insensitively.

This introduces a parse_custom_ident_value() method, which takes a list of disallowed identifier names, and handles the above rules.

Can we add a test?

Can we add a test?

Sure! It's a bit tricky to test this but the default case at least was wrong before and now is correct.


Benchmarking Spatial CV

Currently, getting the following error while running the benchmark, caused by mixed_norm_solver_bcd:
File "/home/anujanegi/BSI-Zoo/mne/lib/python3.8/site-packages/bsi_zoo-_0.1.dev_-py3.8.egg/bsi_zoo/estimators.py", line 90,
in _get_coef    coef = self.solver(  File "/home/anujanegi/BSI-Zoo/mne/lib/python3.8/site-packages/joblib-1.1.0-py3.8.egg/joblib/memory.py", line 594, in __call__    return self._cached_call(args, kwargs)[0]
File "/home/anujanegi/BSI-Zoo/mne/lib/python3.8/site-packages/joblib-1.1.0-py3.8.egg/joblib/memory.py", line 537, in
_cached_call    out, metadata = self.call(*args, **kwargs)
File "/home/anujanegi/BSI-Zoo/mne/lib/python3.8/site-packages/joblib-1.1.0-py3.8.egg/joblib/memory.py", line 779, in
call    output = self.func(*args, **kwargs)
File "/home/anujanegi/BSI-Zoo/mne/lib/python3.8/site-packages/bsi_zoo-_0.1.dev_-py3.8.egg/bsi_zoo/estimators.py", line 295,
in iterative_sqrt    x = _solve_reweighted_lasso(
File "/home/anujanegi/BSI-Zoo/mne/lib/python3.8/site-packages/bsi_zoo-_0.1.dev_-py3.8.egg/bsi_zoo/estimators.py", line 44,
in _solve_reweighted_lasso    coef_, active_set, _ = _mixed_norm_solver_bcd(  File "<decorator-gen-495>", line 12, in _mixed_norm_solver_bcd
File "/home/anujanegi/BSI-Zoo/mne/lib/python3.8/site-packages/mne-1.0.3-py3.8.egg/mne/inverse_sparse/mxne_optim.py",
line 237, in _mixed_norm_solver_bcd    _grp_norm2_acc = groups_norm2(X_acc, n_orient)
File "/home/anujanegi/BSI-Zoo/mne/lib/python3.8/site-packages/mne-1.0.3-py3.8.egg/mne/inverse_sparse/mxne_optim.py",
line 25, in groups_norm2    return np.sum(np.power(A, 2, A).reshape(n_positions, -1), axis=1)
ValueError: cannot reshape array of size 46880 into shape (1562,newaxis)

It ran smoothly for one subject and then crashed on the others.
@agramfort @AliHashemi-ai

do you have a script so I can replicate on my laptop?

Message ID: @.***>

@agramfort  run bsi_zoo/run_benchmark.py

in which branch?

Message ID: @.***>

@agramfort the current one: benchmark_cv
https://github.com/braindatalab/BSI-Zoo/blob/benchmark_cv/bsi_zoo/run_benchmark.py

Did you get a chance to look at this @agramfort?

ok I think the problem is solved @anujanegi
basically L.shape[1] / 3 was not an int as there was a mismatch between orientation type and n_orient in your benchmark code.

@anujanegi it is green now

Running it on the cluster for 2 subjects, 3 runs now!

🚀🚀🚀

Message ID: @.***>


support k8s 1.11.8 and 1.11.9

https://raw.githubusercontent.com/kubernetes/kops/master/channels/stable
 - range: ">=1.11.0"
    recommendedVersion: 1.11.8

[x] mirror fileRepository for 1.11.8
[x] mirror fileRepository for 1.11.9

ref: https://github.com/aws/containers-roadmap/issues/188

1.11.8 is ready now
Simply
KUBERNETES_VERSION=v1.11.8 make create-cluster

version bump to 1.11.9 https://github.com/nwcdlabs/kops-cn/commit/3a58a801caf089c6001f562c2ea71f5bc6882d9b


Get rid of unused JSON tools

Type of change

[x] Refactor
[ ] New feature
[ ] Bug fix
[ ] CVE fix
[ ] Optimization
[ ] Documentation Update
[ ] Configuration Update
[ ] Bump-up dependent library

Description
json_tools.py is not used anywhere and we agree with @thoraxe to drop it.
Related Tickets & Documents

Related Issue #OLS-83

Checklist before requesting a review

[x] I have performed a self-review of my code.
[x] Unit tests passed locally.
[ ] If it is a core feature, I have added thorough tests.

Testing

Will be performed on CI

/approve
this wasn't being used anywhere and I honestly can't remember why I inserted it.

/lgtm
/approve


Make User#tag return unique username instead of display name

the point of .tag previously was to get the unique username you can use to add people (username + discrim), so for migrated users, it is logical to also return their unique username. Returning the non unique global displayName makes no sense to me.


I'm getting this error when I try to join the game using my alt.

This error happens on the main one.
ERROR: Invalid packet received. Unabled to find requested cached node.
   At: core\io\multiplayer_api.cpp:265
ERROR: Invalid packet received. Requested node was not found.
   At: core\io\multiplayer_api.cpp:204
ERROR: Invalid packet received. Unabled to find requested cached node.
   At: core\io\multiplayer_api.cpp:265
ERROR: Invalid packet received. Requested node was not found.
   At: core\io\multiplayer_api.cpp:204
ERROR: Invalid packet received. Unabled to find requested cached node.
   At: core\io\multiplayer_api.cpp:265
ERROR: Invalid packet received. Requested node was not found.
   At: core\io\multiplayer_api.cpp:204
ERROR: Invalid packet received. Unabled to find requested cached node.
   At: core\io\multiplayer_api.cpp:265
ERROR: Invalid packet received. Requested node was not found.
   At: core\io\multiplayer_api.cpp:204
ERROR: Invalid packet received. Unabled to find requested cached node.
   At: core\io\multiplayer_api.cpp:265
ERROR: Invalid packet received. Requested node was not found.
   At: core\io\multiplayer_api.cpp:204
ERROR: Invalid packet received. Unabled to find requested cached node.
   At: core\io\multiplayer_api.cpp:265
ERROR: Invalid packet received. Requested node was not found.
   At: core\io\multiplayer_api.cpp:204
ERROR: Invalid packet received. Unabled to find requested cached node.
   At: core\io\multiplayer_api.cpp:265
ERROR: Invalid packet received. Requested node was not found.
   At: core\io\multiplayer_api.cpp:204
ERROR: Invalid packet received. Unabled to find requested cached node.
   At: core\io\multiplayer_api.cpp:265
ERROR: Invalid packet received. Requested node was not found.
   At: core\io\multiplayer_api.cpp:204
ERROR: Invalid packet received. Unabled to find requested cached node.
   At: core\io\multiplayer_api.cpp:265
ERROR: Invalid packet received. Requested node was not found.
   At: core\io\multiplayer_api.cpp:204
ERROR: Invalid packet received. Unabled to find requested cached node.
   At: core\io\multiplayer_api.cpp:265
ERROR: Invalid packet received. Requested node was not found.
   At: core\io\multiplayer_api.cpp:204
ERROR: Invalid packet received. Unabled to find requested cached node.
   At: core\io\multiplayer_api.cpp:265
ERROR: Invalid packet received. Requested node was not found.
   At: core\io\multiplayer_api.cpp:204
ERROR: Invalid packet received. Unabled to find requested cached node.
   At: core\io\multiplayer_api.cpp:265
ERROR: Invalid packet received. Requested node was not found.
   At: core\io\multiplayer_api.cpp:204
ERROR: Invalid packet received. Unabled to find requested cached node.
   At: core\io\multiplayer_api.cpp:265
ERROR: Invalid packet received. Requested node was not found.
   At: core\io\multiplayer_api.cpp:204
ERROR: Invalid packet received. Unabled to find requested cached node.
   At: core\io\multiplayer_api.cpp:265
ERROR: Invalid packet received. Requested node was not found.
   At: core\io\multiplayer_api.cpp:204
ERROR: Invalid packet received. Unabled to find requested cached node.
   At: core\io\multiplayer_api.cpp:265
ERROR: Invalid packet received. Requested node was not found.
   At: core\io\multiplayer_api.cpp:204

And this one happens on the alt one.
ERROR: Node not found: Spatial/Players/1.                                                                                At: scene\main\node.cpp:1381                                                                                ERROR: MultiplayerAPI::_process_get_node: Failed to get cached path from RPC: Spatial/Players/1.                           At: core\io\multiplayer_api.cpp:272                                                                                ERROR: Invalid packet received. Requested node was not found.                                                              At: core\io\multiplayer_api.cpp:204                                                                                ERROR: Node not found: Spatial/Players/1.                                                                                At: scene\main\node.cpp:1381                                                                                ERROR: MultiplayerAPI::_process_get_node: Failed to get cached path from RPC: Spatial/Players/1.                           At: core\io\multiplayer_api.cpp:272                                                                                ERROR: Invalid packet received. Requested node was not found.                                                              At: core\io\multiplayer_api.cpp:204                                                                                ERROR: Node not found: Spatial/Players/1.                                                                                At: scene\main\node.cpp:1381                                                                                ERROR: MultiplayerAPI::_process_get_node: Failed to get cached path from RPC: Spatial/Players/1.                           At: core\io\multiplayer_api.cpp:272                                                                                ERROR: Invalid packet received. Requested node was not found.                                                              At: core\io\multiplayer_api.cpp:204                                                                                ERROR: Node not found: Spatial/Players/1.                                                                                At: scene\main\node.cpp:1381                                                                                ERROR: MultiplayerAPI::_process_get_node: Failed to get cached path from RPC: Spatial/Players/1.                           At: core\io\multiplayer_api.cpp:272                                                                                ERROR: Invalid packet received. Requested node was not found.                                                              At: core\io\multiplayer_api.cpp:204                                                                                ERROR: Node not found: Spatial/Players/1.

Here's the project, if you want to debug.
DiscordMultiplayerGame.zip

Did I do something wrong?

Did I do something wrong?

This is not a godotcord problem. There is no player node created for the lobby creator in the second user's instance. That why it complains about not finding the node. You have to first save all players in the Globals.players array and then iterate over it.

This is not a godotcord problem. There is no player node created for the lobby creator in the second user's instance. That why it complains about not finding the node. You have to first save all players in the Globals.players array and then iterate over it.


Fix wrong variable type in "set_max_time_per_frame(const bool value)" and others in the same class

Hi, first of all... you have created really amazing modules!!
I am using this one inside my upcoming terrain module, with some minor modifications. While reading the code I found that some methods to modify float values declare arguments as boolean. I am new in c++,, but is this intended?

Hi,
Thanks for reporting.
No, those are typos, that I never noticed because I never set them from script before.
I'll fix them (probably tomorrow).
I also did some improvements to the module in the pandemonium engine repo which I wanted to backport for a while, I'll probably do that too.
I also think set_max_time_per_frame needs to recalculate some internal variables that I skipped doing back when I implemented it, I'll make sure that that works too.

Great!... then.... can I take your improvements from the pandemonium engine and use them? 😇

Ah, by the way... I just downloaded al your modules... I am styding them.

Great!... then.... can I take your improvements from the pandemonium engine and use them? innocent

That's why its open source.
However note that I moved it to core in that project, and I also had to do a few engine side changes to it to make it work that way, so you can't just copy it's classes back to this module anymore. It also needs a bit more tweaks, and I think it probably still has methods that are affected by this same issue.
I'll likely get to it in a few hours so you will probably want to wait a bit.
By the way I only made internal changes to it, like it now uses a List instead of a Vector, so from your code's point of view nothing will change after I backport the improvements.


Permissons

How should permissions be handled? Im looking into developing something custom in the pre_save or a decorator unless you have a better idea? :-)

i was thinking of something like this (not tested):
def check_permissions(request, model_meta):
    # Map HTTP methods to CRUD operations
    method_operation_map = {
        'GET': 'read',
        'POST': 'add',
        'PUT': 'update',
        'PATCH': 'update',
        'DELETE': 'delete',
    }

    # Determine the operation type from the request method
    operation = method_operation_map.get(request.method)

    # If the method is not recognized (not in our map), we do not handle permission checking
    if operation is None:
        raise ValueError("Unrecognized HTTP method for permission checking.")

    # Construct the permission codename
    perm_codename = f"{operation}_{model_meta.model_name}"

    # Check if the user has the permission for the given operation
    if not request.user.has_perm(f"{model_meta.app_label}.{perm_codename}"):
        raise PermissionDenied(f"You do not have permission to {operation} {model_meta.verbose_name}")

But it should not be a pre_save_hook as we want early stopping and want to run it before the model has been created.

You're absolutely correct – it should not be a pre_save hook but rather a component of the view's decorators. I typically implement it as follows:
from functools import wraps

from django.core.exceptions import PermissionDenied
from django.http import HttpRequest
from ninja import Router

from ninja_crud import views, viewsets
from tests.test_app.models import Collection
from tests.test_app.schemas import CollectionIn, CollectionOut

router = Router()

def user_is_creator(func):
    @wraps(func)
    def wrapper(request: HttpRequest, *args, **kwargs):
        collection_id = kwargs.get("id")
        collection = Collection.objects.get(id=collection_id)
        if collection.created_by != request.user:
            raise PermissionDenied()
        return func(request, *args, **kwargs)

    return wrapper

class CollectionViewSet(viewsets.ModelViewSet):
    model = Collection

    update_view = views.UpdateModelView(
        input_schema= CollectionIn,
        output_schema= CollectionOut,
        decorators=[user_is_creator],
    )
    ...

CollectionViewSet.register_routes(router)

My apologies for the current lack of examples. To keep things straightforward, I've omitted them for the time being. However, I plan to author some articles in the upcoming weeks that will illustrate common use-cases in more detail. ✨


Fix error reporting in view macro

rust-analyzer: 2024-01-29 (v0.3.1823)
This PR is aimed to improve DX of using leptos by fixing error reporting in view! macro, so that errors inside it are reported over the token, that caused an error, instead of the whole view! macro call site.

[!NOTE]
This PR is tied to bugfix in rust-analyzer (that is already merged), so "minimum expected rust-analyzer version" is v0.3.1823. Also, in order to get better rust-analyzer feedback - you need to add "rust-analyzer.cargo.allFeatures": true to your VSCode config (or similar flag for other IDEs). Should I add these two points to leptos-rs/book/getting_started/leptos_dx.md?

Here is a simple example:

Before

After

List of all errors that are covered by this PR
unreachable_code/missing_field
Disable "unreachable_code" lint when there is an error view! macro
Report "missing field" and other .build() errors on component's name
Regression: "Go to Definition" triggered on Component name in view! macro now suggests build method definition in addition to Component itself. Previously only Component was reported

Before

After

component_with_props_without_macro
Component with props but without #[component] macro is used in view! macro

Before

After

generics
When incorrect generics are passed or inferred in component the error is reported over the whole view! macro.
Regression: "Go to Definition" triggered on Component name in view! macro now suggests leptos::component_props_builder definition in addition to Component itself.

Before

After

prop_into
Error reporting with #[prop(into)]

Before

After

events
Error for "on:" events should be reported on it's name

Before

After

directive
Missing or incorrect type of the param when using directive

Before

After

block_in_fragment
If block inside fragment returns something, that is not "renderable"

Before

After

slots_prop_into
Error reporting with #[prop(into)] in slots

Before

After

wrong_slot_name
Wrong slot name

Before

After

undefined_slot
Using slot that is not defined in a component

Before

After

slot_expected_one_got_more
Expected one slot, got more

Before

After

slot_unreachable_code/slot_missing_field
Disable "unreachable_code" warn when there is an error in slot in view! macro
Report "missing field" and other .build() errors on slot's name
Regression: "Go to Definition" triggered on Then in view! macro now suggests build method definition in addition to Then itself. Previously only Then was reported

Before

After

children_clone
Using clone: notation on type that does not implement clone

Before

After

children_let_expected_one_got_none
Expected let: binding, got Children.

Before

After

children_projection_error

Before

After

children_projection_error_slot_version

Before

After

expected_children_got_let_bind

Before

After

expected_children_got_let_bind_slot_version

Before

After

expected_one_let_bind_got_more

Before

After

expected_one_let_bind_got_more_slot_version

Before

After

element_incorrect_attribute_type

Before

After

element_incorrect_spread_type

Before

After

element_incorrect_child_type

Before

After

[!NOTE]
There are also some regressions regarding "Go to Definition" LSP functionality - in some cases it now suggests implementation details alongside original definition. See missing_field, generics and slot_missing_field. Although it makes DX of using "Go to Definition" worse than before - I believe it's a fair trade-off for correct error reporting.

Almost all examples listed above have a corresponding test case in leptos_macro/tests/ui/view. Some tests have subtly different output between ssr and client modes.

Example
EXPECTED:
┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
error[E0277]: expected a `Fn()` closure, found `A`
 --> tests/ui/view/element/incorrect_child_type.rs:7:14
  |
6 | /     view! {
7 | |
{A}

  | |              ^-^
  | |              ||
  | |              |this tail expression is of type `A`
  | |              expected an `Fn()` closure, found `A`
8 | |     };
  | |_____- required by a bound introduced by this call
  |
  = help: the trait `std::ops::Fn<()>` is not implemented for `A`
  = note: wrap the `A` in a closure with no arguments: `|| { /* code */ }`
  = help: the following other types implement trait `IntoView`:
            bool
            char
            isize
            i8
            i16
            i32
            i64
            i128
          and $N others
  = note: required for `A` to implement `IntoView`
help: you might have meant to create the closure instead of a block
  |
7 |
|_| {A}

  |              +++
┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈

ACTUAL OUTPUT:
┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
error[E0277]: expected a `Fn()` closure, found `A`
 --> tests/ui/view/element/incorrect_child_type.rs:7:14
  |
6 | /     view! {
7 | |
{A}

  | |              ^-^
  | |              ||
  | |              |this tail expression is of type `A`
  | |              expected an `Fn()` closure, found `A`
8 | |     };
  | |_____- required by a bound introduced by this call
  |
  = help: the trait `std::ops::Fn<()>` is not implemented for `A`
  = note: wrap the `A` in a closure with no arguments: `|| { /* code */ }`
  = help: the following other types implement trait `IntoView`:
            bool
            char
            isize
            i8
            i16
            i32
            i64
            i128
          and $N others
  = note: required for `A` to implement `IntoView`
note: required by a bound in `HtmlElement::<El>::child`
 --> $WORKSPACE/leptos_dom/src/html.rs
  |
  |     pub fn child(self, child: impl IntoView) -> Self {
  |                                    ^^^^^^^^ required by this bound in `HtmlElement::<El>::child`
help: you might have meant to create the closure instead of a block
  |
7 |
|_| {A}

  |              +++
┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈

List of all problematic tests
use leptos::*;

struct A;

fn incorrect_attribute_type() {
    view! {

    };
}

fn incorrect_child_type() {
    view! {

{A}

    };
}

fn incorrect_class_type() {
    view! {

    };
}

fn incorrect_fancy_class_type() {
    view! {

    };
}

fn incorrect_global_class_type() {
    view! { class=A,

    };
}

fn incorrect_style_type() {
    view! {

    };
}

fn incorrect_fancy_style_type() {
    view! {

    };
}

fn incorrect_event_type() {
    view! {

    };
}

// `prop:` are not currently checked in ssr at all
fn incorrect_prop_type() {
    view! {

    };
}

fn incorrect_spread_type() {
    view! {

    };
}

Unfortunately, there is no easy way to implement these tests, because maintainer of trybuild crate refuses to allow specifying custom suffix on TestCases: https://github.com/dtolnay/trybuild/issues/245. Currently, I see 4 possible ways about this:

Duplicate these tests in separate folders (view_ssr and view_client) and load them conditionally (based on current feature flags)
Fork trybuild crate and add suffix functionality
"Add code in the test to rename the right set of files to .stderr before calling into trybuild" - suggestion from maintainer of trybuild
Just ignore these tests and hope DX will not degrade in the future

Looks like after adding a bunch of spans clippy now more aggressively checks output of view! macro. I fixed ones, that broke the tests/examples, but I think this does not cover all possible clippy lints...

Simply going on the basis of the screenshots: Wow. I have not looked through it in more depth yet, but just wanted to express my gratitude for your work on this, which will be a huge help to the whole community.

@gbj Thank you for such kind words :3. That's actually just a starting point - I plan on making at least 2 more PRs: better support for LSP features inside view! macro (like "Go to Definition" for attributes, better support for punctuated attributes, etc.) and better syntax highlighting (I have an idea how to highlight closing tag for components without duplicating the whole node tree :D).
On the side node: I am a bit of a dumby and forgot to run cargo make test in leptos_macro - already pushed a commit with fixes

Thanks! I've just looked through and this looks great over all. However, it looks like there are still some failing tests in leptos_macro, including at least some of the tests you're adding in this PR (I think). Once those are passing, I think this should be good to go.

As per this discussion on discord I decided to remove snapshot tests for view! macro. Quick rundown for anyone without access to discord:

Errors reported by rustc seem to fluctuate A LOT between versions (specifically nightly ones). For example:

I had locally version rustc 1.77.0-nightly (88189a71e 2024-01-19) - cd leptos_macro && cargo make test reports no failing snapshot tests
On github ci there is rustc 1.77.0-nightly (635124704 2024-01-27) - it reports snapshot mismatches in missing_field.rs,  slot_missing_field.rs and slot_unreachable_code.rs
I run rustup update and it installed rustc 1.78.0-nightly (0ecbd0605 2024-02-25) - it now reports snapshot mismatches in block_in_fragment.rs, directives.rs, generics.rs, prop_into.rs, slots_prop_into.rs and wrong_slot_name.rs, BUT NOT in the tests, that ci reports failures in.

If this is a common trend in rustc (errors reported change each new nightly release) - I am not sure that snapshot tests for view! macro is worth the effort, as it seems to me that every week or two we will need to update all snapshots because there is a minor update to errors. Looks like a lot of unnecessary burden on leptos maintainers.

What is the state/progress of this PR? Is there anything that should be done from my side?

My apologies! The status of the PR is that I could've sworn it was merged long ago because it was excellent, when in reality I lost track of it during a busy month and have done nothing.
I just merged the one outstanding conflict and will let the CI run now and merge. Thanks so much for the contribution and sorry about the delay.


Separate model and view

Would be nice if the view of the table and the data model for it could be separated. For an example of what I mean you might want to have a look at javax.swing.JTable and its use of TableModel and TableCellRenderer classes.
What this separation allows is for the TTable to be backed by a simple list of Model objects (e.g. each representing a file copy operation in progress) with one of the columns represented by some TProgressBar object instead of normal labels. The current design somewhat blocks this usecase for multiple reasons:

I have to copy data from my program's model over to the TTable component
I can only have plain strings (Labels) for the display, not progress bars, checkboxes or other widgets.

To make this change possible each access to the lines [sic] field should at least be wrapped by some "getObjectForCell" (JTableModel.getValueAt) call.

I will have a look at that.

Hello,
Sorry, I've been quite busy IRL...
Still, would https://github.com/nikiroo/jexer/tree/ttable (far from done, it's still a WIP) looks more or less like what you were expecting that change to become?
Note, it's currently not usable: it is still not possible to select a row nor to add actions, and I still haven't added the jDoc (SHAME!).
But if you have any note to swap about the implementation (since it seems you gave some thought to it), I'm interested.
Thanks,
Niki

I know this feeling; not too different around here. :) I had a short look at the for patches and only noticed one minor wording issue bit skimming over the code. Will have to actually implement some bigger test case against the interface to tell for sure, but the direction looks good on first glance; probably some kinks here and there that will need some tweaking.

Ok, I finally had some time to work on this (I actually saw the message from the other thread before this one... shame on me).
I did indeed rename lines to rows, it seems better.
I also adopted a JModel approach, and allowed for a separate renderer.
It works well for text (with colours and such), and seems mostly OK for widgets (still have some problems when moving with the hscroller, the content is visible outside of the window).
I still need to implement 2 things though:

support for bigger than 1 row height
support for separately browsing through the columns (for now, it only works line by line)

Both branches are up to date (ttable and ttable_pull) but the second one has 4 simple commits and is upstream-updated.
If you have notes regarding the current status, feel free to share!
(Sorry for the long delay, I was very busy IRL, though I have slightly moer time now -- my old eeePC is now back to work, so I can code when commuting to work.)


No images are being loaded except for in the spashscreen

Actual Behaviour
The speaker images and the logo aren't being loaded.
Expected Behaviour
Since the images are there in the JSON files, they should load in the app too.
Screenshots of the issue

Where-ever possible add a screenshot of the issue.
Would you like to work on the issue?
Yes.
Target Milestone to solve the issue
Till which milestone will you be fixing the issue?
https://github.com/fossasia/open-event-android/milestone/26

Same is happening with other standard FOSSASIA samples as well. For instance, the sponsors images aren't loading apart from speakers and logos.

Can you see if the image requests are being made in Stectho please?

Sure, @iamareebjamal. I'm testing and creating issues as of now. Then I will get to solving them and so I will look into Stetho :)

I think reason behind this is images are not cached and may be  internet is not working on device

Oh, in that case @shailesh351 , in that case could you please check out some of the apks? the zips are available in the open-event repo. Specifically, FOSSASIA 2014 and 2016

@mahikaw Just confirm if your internet is working and image must load. If not, we can say that that's not the case

@iamareebjamal According to me the net is working. As I mentioned earlier to @Shailesh351 it will be nice if someone can confirm. Specifically 2016 and 2104 samples.

@mahikaw Is it related to the naming error of image folder?

@iamareebjamal no. That is different. I am looking into this issue right now. :)

@iamareebjamal @mahikaw issue is there i am also facing it.

@mahikaw Problem is that in samples images are stored in images/speakers folder which are not added in assets folder while generating app.
And url for speaker's image is like /images/speakers/HongPhucDang_1.jpg  which is not valid url. So picasso is not making network call for it and image is not loaded

Yeah I guessed so @Shailesh351

@Shailesh351 @iamareebjamal actually the images arent rendered from images folder. we are providing a url using google storage api to render the image.

Yes, but the sample events didn't have those links making it load nothing. This is an issue, the images must be loaded into apk drawable-nodpi so that they can be referenced from the app

Or every sample must conform to a full link description of those images so they can be loaded fro, git server, but it not a flexible solution, more so a hack

see the current process should be fine because of the following reasons:
1: If we include the speaker images into the drawable folder we are increasing the apk size which we dont want. By default the server provides an storage api with the help of which we can load speaker images using Picasso.
2: As by default when we create an event we get a json response like that. i think its not an issue.
Now coming over to the smaple part which we have to create we can do a temporary solution which can be used for development right now.

@arp95 Is there a use case where the JSON payload provided by user will only contain local image links and not URLs
I think so, and then our fix won't work.
What I'm trying to say is why adding local photos to samples if they won't be used?

@iamareebjamal
sorry for misunderstanding you earlier. yes this is what i am trying to say, why add local images if not used at all.

@niranjan94 Is there any plan for the use of images? Because local paths won't get resolved in the app

@iamareebjamal the generator can upload the images from the zip to a cloud storage server and replace local paths with a remote URI.
Or the app could be modified to accept either asset locations or remote URL. In that case, we could keep the images in the assets folder. Picasso accepts URI in the form of file:///android_asset/image.png right ? Would that work ?

@niranjan94 we are trying to use the uri '/images/speakers/abc.png/' but that doesnt work
in fact when we try to see the image path it comes out to be a storage api link? is that correct?

@niranjan94 Yes the second option is viable but it will greatly increase the size of application ~ 22 MB or more for a medium event with about 30 speakers

@niranjan94  when we create an event on eventyay and export the json from that we get the speaker photo in storage api form right?
If yes then our main question is why use local images and how to make our samples render image.

@arp95 this same discussion took place before too. The main thing is, we want the user to have to ability to either have images in the zip itself or add images as a URL. We want the user to be able to create Open Event compatible zips without using a server instance. We're trying to make a Universal Open Event format.

@iamareebjamal can you sepcify the uri which will work? have tried many but none loads the image.

@iamareebjamal you mean i can use any storage link for samples right? drive etc?

@arp95 yes. as long as it is a direct link to the resource

@arp95 If the user chooses to use local JSON images, we should let them as they will know that the apk size will increase, or is there is any way we can upload the images while generating @niranjan94 ?

We can upload. But both functionality is required depending on what the user prefers. We should give a choice to the user in the generator.
If the user prefers a completely offline app, it should work with images within the apk itself.
Else we can upload and refer from there.

so this means we have to change the generator code to provide a way to store speaker images in the apk, right?

We can technically upload. But the generator shouldn't be doing that. All it's supposed to do is get the input from user and generate it.

@arp95 Yes, that's correct

This issue is essentially #1610 @arp95
Should this one be closed?

@iamareebjamal yes you are right. this can be closed.


[Cosmos] Sync/Async Client cleanup

Summary
Cosmos GA'd V3 with CosmosClient being non-blocking/Async methods. The Track 2 requirements dictate that this should be the blocking/Sync methods. We've agreed to a compromise where both clients are labels sync and async, and we'll deprecate the CosmosClient class and avoid using it in samples/etc.

Async guidelines section: https://azure.github.io/azure-sdk/java_design.html#async-api

"✅ DO offer an async service client named AsyncClient. More than one service client may be offered for a single service."

Sync guidelines section: https://azure.github.io/azure-sdk/java_design.html#async-api

"✅ DO offer a sync service client named Client. More than one service client may be offered for a single service."

Work

Sync (Being addressed in https://github.com/Azure/azure-sdk-for-java/pull/4757)

[x] Add Sync API using CosmosSyncClient and <Resource>Sync pattern
[x] Add buildSyncClient to builder

Async

[x] Add CosmosAsyncClient as clone of CosmosClient
[x] Add buildAsyncClient to builder

Cleanup

[ ] Deprecate CosmosClient
[ ] Deprecate CosmosClientBuilder#build()
[ ] Once we can take Azure.Core dependency, we need to add annotations

V4 follows track2 guidelines, so these need not be done on V3


Fix(todo: linear card): Webhooks overview content overflow

Identified when validating #1487

Dups #1723


Stop Dependencies should be moved to onStopped()

Because dependencies are created and started in onStart() method of a caller subsystem, they should be stopped and destroyed in the symmetrical onStopped() method of the same caller. They are currently stopped and destroyed in the onStop() method, which can generate errors in the caller's process when using a dependency, either through polling or concurrent query.

fixed in 1.3.0


Enhance table browsersync_host

Table should at least have a PROJECT column that refers to the config.json project name.

R&D Note: We did not use a table as a final solution. Everything is managed directly within the project which helps reduce dependencies on the project. They're various tickets on this decision.


BitcoinPrivate Signed Message, bitcoinprivate: prefix handling

@daniel-farina This needs pulling in and subsequent testing (tho I'm told all works fine on Win & Mac).


i18n(es): Update getting-started.mdx

Description

Update getting started page in Spanish

size-limit report 📦

Path
Size

/index.html
5.23 KB (0%)

/_astro/*.js
21.54 KB (0%)

/_astro/*.css
13.13 KB (0%)


provide better guidelines on tag vs. field

inspired by https://github.com/influxdb/influxdb/issues/3493

wrong repo


Shouldn't "encoding/xml" handling of []byte mirror that of "encoding/json"?

What version of Go are you using (go version)?
v.1.12.5
Does this issue reproduce with the latest release?
yes
What operating system and processor architecture are you using (go env)?
go env Output
$ go env
GOARCH="amd64"
GOBIN="/Users/jamie/Code/go/bin"
GOCACHE="/Users/jamie/Library/Caches/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/jamie/Code/go"
GOPROXY=""
GORACE=""
GOROOT="/usr/local/Cellar/go/1.12.5/libexec"
GOTMPDIR=""
GOTOOLDIR="/usr/local/Cellar/go/1.12.5/libexec/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-I/usr/local/include"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/y9/_gm0t1010sx43s27vxrcrmh40000gq/T/go-build272664046=/tmp/go-build -gno-record-gcc-switches -fno-common"

What did you do?
https://play.golang.org/p/oZCebOm521l
Marshaled a []byte using "encoding/xml"
What did you expect to see?
base64 encoded handling, like with json
What did you see instead?
a raw binary interpretation

XML and JSON are not the same.  The code is working as intended.


Reported broken build even after build succeeded

Greenkeeper has opened a pull request in my repo (here) reporting there was  a failure to build, but as you can see every check has passed, even code coverage.

Hey @ranisalt,
thanks for your bug report. Sometimes builds fail because of some random factors that go away after restarting the build. Can you rule out that someone restarted the build after the PR was created?
If that wasn't the case we'll investigate what was happening, especially what data GitHub sent us, to rule out this bug and to prevent any false alarms in the future.
If this keeps happening again please let us know here, so we can identify the problem.
Thanks for using Greenkeeper,
Stephan

That might be the case, yes. But if there is an error with Travis and not with the code itself, I think greenkeeper should warn differently, not asserting that "This means your software is now malfunctioning, because of this update.", is it possible?
Thanks for the answer :D

Thanks for your quick reply. 99% of the time flaky tests aren't really a problem with the CI server, but with the test setup. It's also something we can't really detect – the decision whether something was "just a flaky build" has to be made by a human.
However I agree that the message is too definite, so we'll weaken it a bit.
Thanks for your report.
Best,
Stephan


block_token.List.start is both a classmethod and attribute

While looking through the codebase to understand it (and maybe write some type stubs), I noticed that block_token.List has both a classmethod start(), and an attribute with that same name. This does happen to work, but it's rather awkward, and might confuse various tools (or humans).
The classmethod seems to be common to all the token classes, so it seems better to rename the attribute form. (ordinal perhaps?) Either way it's backwards incompatible, though a custom descriptor class could be used temporarily to produce warnings.

@TeamSpen210, thanks for pointing out this, hopefully just minor, issue. I think we can consider fixing it at some point, possibly when doing some bigger code cleanup. Provided we would rename the start attribute, I would vote e.g. for start_num (ordinal comes too generic to me).


[OSD-11452] Add files to run linting with tox.

As gosec is not useful to add to a python project for security linting, this PR adds the bandit linter to the project to run via tox.

Added a pyproject file
Added a make target for lint
Added the basic tox file that runs bandit for security linting

/lgtm

/lgtm

@jharrington22 I was looking for something that would scan for security vulnerabilities and not code smells (so pep8 or pylint were not what I was looking for), because the ticket was about finding security issues.
Bandit was a tool that seemed well maintained from the same organization that also maintains flake8 and pylint, which seems a good indicator that it won't be abandoned.
If we usually us another tool for python security analysis I'm happy to switch it out though, it was mostly what I did find by looking around - there also seems to be pyre as an alternative - or we could run both.

/lgtm

@bergmannf thanks for the explanation thats what I was looking for, I also looked it up it seems it came out of the OpenStack.
/approve
/lgtm


Add  Shanghai Ocean University

Add  Shanghai Ocean University;

Add  Shanghai Ocean University;

@Hujinnan Pull request merged. Thank you!


azcopy is waiting on input when run in the background

Which version of the AzCopy was used?
$ azcopy --version
azcopy version 10.21.2
INFO: azcopy 10.21.2: A newer version 10.22.1 is available to download

Note: The version is visible when running AzCopy without any argument
Which platform are you using? (ex: Windows, Mac, Linux)
LSB Version:    :core-4.1-amd64:core-4.1-noarch
Distributor ID: RedHatEnterprise
Description:    Red Hat Enterprise Linux release 8.9 (Ootpa)
Release:        8.9
Codename:       Ootpa

What command did you run?
azcopy copy $URL my_local_file &
Note: Please remove the SAS to avoid exposing your credentials. If you cannot remember the exact command, please retrieve it from the beginning of the log file.
What problem was encountered?
Process is started in the background and is then stopped waiting for input.
[1]+   Stopped    azcopy copy $URL my_local_file

How can we reproduce the problem in the simplest way?
Attempt to copy a blob from cloud storage that requires login credentials when you don't have any:
azcopy logout
export URL='https://XXXXXXX.blob.core.windows.net/...'
azcopy copy $URL mylocalfile &

Have you found a mitigation/solution?
Providing some input, e.g.:
export URL='https://XXXXXXX.blob.core.windows.net/...'
azcopy copy $URL mylocalfile </dev/null &

Could be related to #974

Problem also occurs with azcopy rm

When any file is to be overwritten or delete AzCopy asks for confirmation on the console for the same. If you run it in background then it will wait forever in such situation. You need to provide force related options in CLI to avoid this.

Ok.  I just tried it again using the following commands:
URL=https://azureopendatastorage.blob.core.windows.net
URL=$URL/holidaydatacontainer/Processed
URL=$URL/part-00000-tid-8468414522853579044-35925ba8-a227-4b80-9c89-17065e7bf1db-649-c000.snappy.parquet
azcopy cp $URL /tmp/holidays.parquet
ls -al /tmp/holidays.parquet
sleep 60
azcopy cp $URL /tmp/holidays.parquet
ls -al /tmp/holidays.parquet

The file was copied from cloud storage and then 60 seconds later I was not prompted for confirmation to overwrite the file and the timestamp of the file changed.

 --overwrite string                     Overwrite the conflicting files and blobs at the destination if this flag is set to true. (default 'true') Possible values include 'true', 'false', 'prompt', and 'ifSourceNewer'. For destinations that support folders, conflicting folder-level properties will be overwritten this flag is 'true' or if a positive response is provided to the prompt. (default "true")

I see it shall overwrite by default and prompt only if you configure it to.
Can you validate if you run in foreground does it prompt anything or wait for any user input. If no then background should have also worked. However, azcopy dumps quite a few details on console so running it in background is not a good practice.

Closing this as there is no update on this. Feel free to reopen once you have required data available.

I can confirm that:

indeed the default option is to overwrite as using --overwrite true works the same as not providing the option at all
running azcopy in the background, azcopy cp $URL /tmp/holidays.parquet > log &, results in the background process waiting for input regardless if you provide the --overwrite true option or not and also does not display any output messages
running azcopy with --overwrite false executes without error and reports the file as skipped.  Running it in the background however still results in the background process waiting for input.
running azcopy with --overwrite prompt works as expected. I didn't run it in the background because...well it is going to prompt to overwrite...

When placing long-running Linux commands in the background I'm quite comfortable using > and | to handle the output. And azcopy already dumps plenty of information in its logs under ~/.azcopy.  I'm just not used to them waiting on input when they're not supposed to be receiving any.

When any file is to be overwritten or delete AzCopy asks for confirmation on the console for the same. If you run it in background then it will wait forever in such situation. You need to provide force related options in CLI to avoid this.

If nothing else this itself is a bug. CLI tools can tell if they're running with a tty or if stdin is open; azcopy should fail when user input is required and that input channel is not available.


Error: :erlang.binary_to_float("2222222")

Thank you for awesome library!
Here is an error when I try to connect to my DB

My work around is using (instead of to_float())
record |> Float.parse() |> elem(0)

Thank you. Credit goes to Supabase realtime and cainophile ;)


Corrected vivado_hls g++ version check

Description
Corrected the parsing of the version returned from g++ version.
Problems
G++ 11.4.0 was judged as a "too old" version.
Proposed Solutions
11 * 10 + 4 >= 48 will be working with this change.
4 * 10 + 8 >= 48 will be working with this change.
Examples
(Please provide an example of the input program and the expected behavior, e.g., the generated IR.)
Checklist

[ ] PR's title starts with a category (e.g. [Bugfix], [IR], [Builder], etc)
[ ] Changes are complete (i.e. I finished coding on this PR)
[ ] All changes have test coverage (It would be better to provide ~2 different test cases to test the robustness of your code)
[ ] Code is well-documented

Thanks for revising the PR!


Large Residuals feature proposal: Find Potential Bad Jump Flags

Adds an option to large_residuals() that can print a list of potential Jump flags that only appear in the toas with large residuals, alongside the percent of such toas that share that flag. The goal of this feature is to make troubleshooting combinations easier. This PR also includes a change to the print_bad implementation that checks the print_bad boolean before finding toa names.

The current test failure seems to be about a change introduced in PINT 1.0.1. I've opened issue #67 about it.

Now that Michael's fix for #67 is merged, you should try merging the fix into this branch, and see if that makes the tests pass.

As discussed at the git-flowers meeting yesterday, merging this will also merge the changes from #68 into master. But doing so appears to be desireable in any case.

I'm going to go ahead and merge this now.


Refine documentation around setting and communicating availability and working hours.

Migrated from GitLab: https://gitlab.com/meltano/handbook/-/issues/72
Originally created by @cjohnhanson on 2022-03-08 19:43:40

The communication section of the handbook should include documentation about how team members communicate their availability and working hours. This could be something similar to:

We indicate our working hours and availability using Google Calendar and Slack so that our teammates know when they are able to reach us. Within Google Calendar you can set your working hours by going to "Settings" and then "Working Hours and Location". If your working hours change, be sure to update Google Calendar to reflect those changes. During short periods of unavailability during normal work hours, for instance going to a dentist appointment, stepping away from your desk for lunch, or taking a walk around the block, update your Slack status to indicate that you are unavailable.

View 2 previous comments from the original issue on GitLab


[Macro] Fix bugs in macro dependency scanning

Fix few issues from previous implementation from explicit module build with macros and accurate macro dependency scanning in https://github.com/swiftlang/swift/pull/73421.
First, there is a crash when propagating the macro dependencies. It turns out that the current macro plugin implementation doesn't need the downstream users to know about the plugin search path from the upstream dependencies.
Secondly, fix a bug that the swiftinterface that has macro usage won't build because the build command doesn't inherit the plugin search path option.
Finally, add JSON output for macro dependencies so it is easier to debug the macro dependencies.
rdar://131214106

@swift-ci please smoke test

@swift-ci please smoke test

@swift-ci please smoke test


Integrate with Mozilla OpenBadges

How about issuing a badge for each completed level which can be sent to a player's Mozilla OpenBadges backpack? You already have awesome images for each level which would do well as a badge image.
see http://www.openbadges.org/

I've checked out the Open Badges thing, but it's a bit confusing, and I don't think it's adding enough value for CodeCombat players, so I'm going to close this–not going to implement. If someone is super interested, they can do all the integration work themselves and we'll accept the pull request.


Update documentation for V1

There are a number of changes which need to be documented for V1. A changelog will also be required to document any breaking changes.
Also, a large amount of the API usage being documented is now provided in the Typescript declarations (see #138). TSDoc output should be able to automate API documentation for use in the README.md or a Wiki page.
Tasks

[ ] Update README.md

[ ] Document API changes
[ ] Add updated exchange documentation
[ ] Replace README.md API documentation with that produced by TSDoc.

[ ] Add CHANGELOG.md
[ ] MIGRATION.md

[x] Create MIGRATION.md with changes
[ ] Add links to documentation

Going to close this for now in favour of the pending #181 PR.


component-id lack a default value

Proposal:
Adding the following default value VlanFdCapability::component-id : Integer = -1

Proposal to the 5G-xhaul call on 29th of September 2021:
Adding default value -1 => VlanFdCapability::componentId : Integer = -1

Decision on 5G-xhaul call on 29th of September 2021:
Adding default value -1 => VlanFdCapability::componentId : Integer = -1

Solved with VlanFd_1.0.0-tsp.220407.1740.


DLRS dependency on apex-common - Platform Encryption

DLRS depends on apex-common
apex-common has several test methods that use LIKE or ORDER BY on potentially encryptable OOTB standard fields:

Account.Name
Opportunity.Name

see issues:

https://github.com/financialforcedev/fflib-apex-common/issues/194
https://github.com/financialforcedev/fflib-apex-common/issues/180
https://github.com/financialforcedev/fflib-apex-common/issues/237

This would make DLRS uninstallable/unupgradeable in orgs that implemented Platform Encryption on those fields

Thanks @cropredyHelix . Can you confirm if this is indeed and issue you have hit?

Andrew - Thank you for following up.
YES, this is confirmed.

I took a Trailhead DE org,
enabled Encryption on Opportunity.Name (couldn't enable encryption on Account.Name because DreamHouse app prevents that)
installed DLRS 2.11
received error as shown below

I will note I had a similar discussion on this topic with Doug Ayers and his Mass Action Scheduler package.  You can read about that here.

@cropredyHelix thanks so much for sharing further background.

No problem; as I stated to Doug Ayers, I've come to the conclusion that
ISVs or open source GitHub repos should enable Shield encryption for every
OOTB standard field that is encryptable and then test their package/repo.
This will help avoid testmethods shortcuts such as using ORDER BY or LIKE
on encryptable fields; it also helps sort out any Dynamic SOQL issues that
could occur at runtime.
Topic for an andyinthecloud blog post?
On Thu, Jan 2, 2020 at 1:18 PM Andrew Fawcett<EMAIL_ADDRESS>wrote:

@cropredyHelix https://github.com/cropredyHelix thanks so much for
sharing further background.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/afawcett/declarative-lookup-rollup-summaries/issues/865?email_source=notifications&email_token=AGDWAA6JEPZM7DFYT7WTFCDQ3ZKZZA5CNFSM4IYEDLAKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEH7OOQI#issuecomment-570353473,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AGDWAAZXAG3GBVX6OE67VGLQ3ZKZZANCNFSM4IYEDLAA
.

--
Eric Kintzer
Salesforce Architect
101 S. Ellsworth Ave, Suite 350, San Mateo, CA 94401
650 533 5619 (m)
www.helix.com | We're hiring https://www.helix.com/careers
--
CONFIDENTIALITY NOTICE
This e-mail and any attachments contain
confidential information from Helix and are for the sole use of the
intended recipients. This e-mail may also contain legally privileged
communications or work product. If you have received this e-mail in error,
please notify the sender by reply e-mail and delete the message. Any
disclosure, copying, distribution, or use of this communication by someone
other than the intended recipient is prohibited.

@afawcett  We are experiencing the same issue on Contact Name. Do you know if anything happened in relation to encryption support the past year? Thanks a lot!
This is the specific error we see LastName on Contact:
Apex Class: ConvertRecordsToCSVQueueableTest, line 67, column 42: field 'LastName' can not be grouped in a query

I'm not sure I understand the issue here. To help prioritize this can we understand why the test classes need to pass in an org that has encryption enabled on these fields?
Test classes don't need to be executed in installed orgs, only in packaging orgs. Maybe I'm lost on something here?
If we can add some details then we can review the impact. Thanks!

@aheber  I just faced the exact same issue.
We are using shield encryption and opportunity name is encrypted. Thus the installation failed.
When we are installing the dlrs package, all the test classes in the package are run in the installing org.
Since SOQL on deterministic encrypted fields under the WHERE filter statement is not allowed with operators LIKE is not supported. Please check https://developer.salesforce.com/docs/atlas.en-us.securityImplGuide.meta/securityImplGuide/security_pe_deterministic_considerations.htm for all considerations.
Moreover , if the encryption is probabilistic, then the field cannot be used in WHERE Clause.
So, i would suggest to write test classes with standard fields which are not available for encryption to avoid this SHIELD encryption issue.
This should be impacting multiple users. Please take this change request on priority.
We are waiting for this fix as well.

@afawcett , this is a quick tune up of the test classes. Can we get this in the next update/release ?

I have this on my backlog to look at. I don't know if it is execution of the test classes as much as compilation, the platform is smart enough to reject that Apex because it is incompatible with the org.
I don't think it is a heavy task but I haven't finished research on the impact to make the change.
In theory the tests need to be adjusted to use fields that can't be added to shield encryption so anyone is welcome to raise a PR before any of the rest of the team can get to it.

I've submitted a PR to be reviewed by the team.
I've added a not on the PR but I'll restate here.
I believe that with these changes you'll be able to install now. You'll still have some limitations on what rollups can be configured, fundamental limitations related to encrypted fields. (Not in WHERE or ORDER BY in most cases). Hopefully this gives you enough freedom to experiment and find configurations that work for your needs.
Once this merges in it should be in the next release that is likely a few months away at the soonest.

That's great news!
Thats for the quick action on the Test Class changes. We can wait for the next release and we do understand the limitations with the Encryption fields and DLRS
Thanks @aheber

I'm going to close this, these fixes should have been in the last few versions. If anyone has additional problems please open a new issue and we can look further.


Radiant Spincrystals counter not count default songs.

Radiant Spincrystals counter not count default songs.
It says 0 of 78 but default songs are always marked

Can you provide screenshots of this exact issue?


Fixes #454 NullReferenceException in CreateOrAddVirtualEnvironment

Fixes #454 NullReferenceException in CreateOrAddVirtualEnvironment
Improves (adds) null handling for the _interpreters variable, which is set to null when disposing.

:+1:


[5.4] @default directive proposal

I think that right now there is no way to have default slot values (as in Vue).
But since they are just variables I had the idea of creating a simple Blade directive to handle those cases:
@default($description)

Lorem ipsum

@enddefault

if $description is not defined or it is empty it will print Lorem ipsum otherwise it will print the value of $description.
This is not limited to slots but can be used with any variable.

For inline cases I think using or is fine: {{ $image or 'default.png' }}, this is meant to be used with default values that span through multiple lines.
I also thought about naming this @alt or even @or 😐

I would rather just have people check isset($slotName).

@taylorotwell:
@if (isset($slot))
    {{ $slot }}
@else

Lorem ipsum

@endif

doesn't look like fun... And what if it is set but empty?


Yarn build uses local config instead of production

Expected Behavior
When building application production config  app-config.production.yaml should be used.
Actual Behavior
Instead of app-config.production.yaml, app-config.local.yaml is used.
Steps to Reproduce

setup backstage project
run yarn build
when build is run its reporting that

yarn build
yarn run v1.22.19
$ backstage-cli repo build --all
Building packages
Building apps
Loaded config from app-config.yaml, app-config.local.yaml

Context
This affects my because my prod config has customize base path for application.
I found that href to static resources were using root path (based on local config) rather than app.baseUrl from production config.  Because of that I was getting 502 as static resource hrefs were pointing to wrong basepath.
I didn't found any other command to build app for prod.
as quick fix I change package.json with following
-    "build": "backstage-cli package build",
+    "build": "backstage-cli package build --config app-config.yaml --config app-config.production.yaml",

Your Environment

Browser Information:
Not related. Problem with build

Output of yarn backstage-cli info:

OS:   Darwin 21.6.0 - darwin/x64
node: v14.20.0
yarn: 1.22.19
cli:  0.19.0 (installed)
backstage:  1.6.0

Dependencies:
  @backstage/app-defaults                          1.0.6
  @backstage/backend-common                        0.15.1
  @backstage/backend-plugin-api                    0.1.2
  @backstage/backend-tasks                         0.3.5
  @backstage/catalog-client                        1.1.0
  @backstage/catalog-model                         1.1.1
  @backstage/cli-common                            0.1.10
  @backstage/cli                                   0.19.0
  @backstage/config-loader                         1.1.4
  @backstage/config                                1.0.2
  @backstage/core-app-api                          1.1.0
  @backstage/core-components                       0.11.1, 0.9.5
  @backstage/core-plugin-api                       1.0.6
  @backstage/errors                                1.1.1
  @backstage/integration-react                     1.1.4
  @backstage/integration                           1.3.1
  @backstage/plugin-api-docs                       0.8.9
  @backstage/plugin-app-backend                    0.3.36
  @backstage/plugin-auth-backend                   0.16.0
  @backstage/plugin-auth-node                      0.2.5
  @backstage/plugin-catalog-backend-module-github  0.1.7
  @backstage/plugin-catalog-backend                1.4.0
  @backstage/plugin-catalog-common                 1.0.6
  @backstage/plugin-catalog-graph                  0.2.21
  @backstage/plugin-catalog-import                 0.8.12
  @backstage/plugin-catalog-node                   1.1.0
  @backstage/plugin-catalog-react                  1.1.4
  @backstage/plugin-catalog                        1.5.1
  @backstage/plugin-github-actions                 0.5.9
  @backstage/plugin-home                           0.4.25
  @backstage/plugin-org                            0.5.9
  @backstage/plugin-permission-common              0.6.4
  @backstage/plugin-permission-node                0.6.5
  @backstage/plugin-permission-react               0.4.5
  @backstage/plugin-proxy-backend                  0.2.30
  @backstage/plugin-scaffolder-backend             1.6.0
  @backstage/plugin-scaffolder-common              1.2.0
  @backstage/plugin-scaffolder                     1.6.0
  @backstage/plugin-search-backend-module-pg       0.4.0
  @backstage/plugin-search-backend-node            1.0.2
  @backstage/plugin-search-backend                 1.0.2
  @backstage/plugin-search-common                  1.0.1
  @backstage/plugin-search-react                   1.1.0
  @backstage/plugin-search                         1.0.2
  @backstage/plugin-sonarqube-backend              0.1.1
  @backstage/plugin-sonarqube                      0.4.1
  @backstage/plugin-stack-overflow                 0.1.5
  @backstage/plugin-tech-radar                     0.5.16
  @backstage/plugin-techdocs-backend               1.3.0
  @backstage/plugin-techdocs-module-addons-contrib 1.0.4
  @backstage/plugin-techdocs-node                  1.4.0
  @backstage/plugin-techdocs-react                 1.0.4
  @backstage/plugin-techdocs                       1.3.2
  @backstage/plugin-user-settings                  0.4.8
  @backstage/release-manifests                     0.0.6
  @backstage/test-utils                            1.2.0
  @backstage/theme                                 0.2.16
  @backstage/types                                 1.0.0
  @backstage/version-bridge                        1.0.1

This is expected behavior for the base yarn build which by default is meant for local development.
See https://backstage.io/docs/conf/#supplying-configuration.

However docs about docker and building docker image do not mention anything about that its only for local. This not very useful. Usually docker is used to build image locally or in CI server and run it somewhere else.
See https://backstage.io/docs/deployment/docker
Ideally docker image should be env agnostic and config should be mounted as volume. That way it will follow 12 factor app
https://12factor.net/

The docker configuration supplied there works for the out of the box Backstage experience, it's expected that your Git instance will not include app-config.local.yaml per https://github.com/backstage/backstage/blob/master/packages/create-app/templates/default-app/.gitignore.hbs. Then yarn build in your CI server will only be operating on app-config.yaml.
There is currently no easy way to have a completely environment agnostic server as the front end has to be generated at build time and packaged into the Docker container. I opened https://github.com/backstage/backstage/pull/13927 to allow for relative urls at build time, which should solve some of the issue.

Indeed this is perhaps not perfect when you have a local config.
We should add a --config option to backstage-cli repo build. Anyone interested in fixing this? 🙏

Happy to take a stab at it, but I believe I had a discussion with @Rugvip in https://github.com/backstage/backstage/pull/13896 about frontend only configs (which if I'm understanding correctly is what this is). I think this would be solved by https://github.com/backstage/backstage/pull/13927 which could be passed in at build time.

I actually have the same issue, I was going a bit crazy actually about that until I found that the build doesn't take the config you specify (and you can't add a --config option). So for us using docker (which is for us the production), it means I HAVE to use the app-config.yaml as the production one.
I think it would be useful to be able to create the docker image with different configs.
This is just my opinion :D
Thanks

See #14329 for --config for repo build. We're on it :grin:

This is the updates solution for this: #14627. The yarn build command was incorrectly pointing to backstage-cli repo build --all, which didn't really make sense. It's now removed in favor of a build:backend command that should be used instead.
If you're building the frontend separately, you can add something like this to your own project:
"build:frontend": "yarn workspace app build",
"build:frontend:prod": "yarn workspace app build --config ../../app-config.yaml --config ../../app-config.production.yaml",

@Rugvip Thank you so much for the guidance w/ regard to building the frontend separately.
In the setup you described here, how would you recommend handling the backend build given that it automatically builds the frontend w/out forwarding any --config arguments that may be provided? Using --skip-build-dependencies doesn't work in the scenario where internal plugins also need built.

It should be really well documented. I have waste my day trying to figure out what was the problem


Method honeypot_string allows disguising honeypot name

Simple change to allow altering the honeypot name, in case any malicious users get wise to the hardcoded 'hp' string.

This seems to have no effect.
I added:
  'im-not-a-honeypot-at-all'
end````

to my ApplicationContoller and it did not change the name of the field.

Field was still: a_comment_body_hp_1447213190

Hmmm, works for me. Feel free to submit a failing test case if you're still experiencing a problem.


Warnings when generating manual

Describe the bug
I'm seeing these warnings when generating the manual
1><rst_epilog>:2: WARNING: Duplicate explicit target name: "visit".
1>visit/src/doc/gui_manual/Contributing/index.rst:6: WARNING: Duplicate target name, cannot be used as a unique reference: "visit".
1>visit/src/doc/gui_manual/Contributing/index.rst:6: WARNING: Duplicate target name, cannot be used as a unique reference: "visit".
1>visit/src/doc/gui_manual/Contributing/index.rst:73: WARNING: Duplicate target name, cannot be used as a unique reference: "visit".
1>visit/src/doc/gui_manual/Contributing/index.rst:95: WARNING: Duplicate target name, cannot be used as a unique reference: "visit".
1>visit/src/doc/gui_manual/Contributing/index.rst:102: WARNING: Duplicate target name, cannot be used as a unique reference: "visit".
1>visit/src/doc/gui_manual/Contributing/index.rst:102: WARNING: Duplicate target name, cannot be used as a unique reference: "visit".
1>visit/src/doc/gui_manual/Contributing/index.rst:402: WARNING: Duplicate target name, cannot be used as a unique reference: "visit".
1>visit/src/doc/gui_manual/Contributing/index.rst:415: WARNING: Duplicate target name, cannot be used as a unique reference: "visit".
1>visit/src/doc/gui_manual/Contributing/index.rst:415: WARNING: Duplicate target name, cannot be used as a unique reference: "visit".
1>visit/src/doc/gui_manual/Contributing/index.rst:440: WARNING: Duplicate target name, cannot be used as a unique reference: "visit".
1>visit/src/doc/gui_manual/Contributing/index.rst:461: WARNING: Duplicate target name, cannot be used as a unique reference: "visit".
1>visit/src/doc/gui_manual/Contributing/index.rst:466: WARNING: Duplicate target name, cannot be used as a unique reference: "visit".
1>visit/src/doc/gui_manual/Contributing/index.rst:468: WARNING: Duplicate target name, cannot be used as a unique reference: "visit".
1>visit/src/doc/gui_manual/Contributing/index.rst:478: WARNING: Duplicate target name, cannot be used as a unique reference: "visit".

Ok, thats a tad odd. Its associated with the macro we use, VisIt_, which is supposed to always render VisIt's name but also make it a link to VisIt's home page.
If you get into conf.py and find rst_epilog variable, you'll see what its doing.
I think we might need to format the https://... link a bit different there to correct.

BTW...where are you seeing? Windows, Linux? What version of Sphinx are you running?

Windows and Linux
I use our 'manuals' target in the build, which uses Sphinx 2.2.1 in our python (3.7.7)

I modified conf.py as you suggested, and changed one line in gui_manual/Contributing/index.rst
That one modified line in index.rst did not yield a warning, but many many more warnings were introduced in other files.

Yeah, I'd expect the other warnings because VisIt_ (single underscore) is no longer defined. So, try adjusting rst_epilog with both variants (just to test this)....hmmm...is Contributing/index.rst the only file generating the warnings? We use that macro everywhere so its strange that only that one file would complain. Maybe its something specific to that one file.

Ok, reading about Sphinx substitutions it looks like something has changed in more recent versions of Sphinx that prevent the way we were doing it from working. A slightly new way needs to be adopted. Minimally, this would mean all instances of VisIt_ in *.rst* files would need to be replaced with |VisIt|_` which is a real pain. I mean, I can sed script it but why is only this one file complaining?

Ok, I figured out why its just this one file. One option is to change line 487 in that file to...
487 .. _VisIt: https://visit-dav.github.io/visit-website/

So that it matches the same line in rst_epilog

Ok, I've found a couple of other tiny issues to correct related to this. I've assigned to myself and will push a PR this afternoon.
@biagas thanks for reporting 👍🏻


supported platforms

Can stddecimal be used:

in android/ios?
in browser (emscripten, wasm)?

It's limited to the platforms supported by the underlying Intel floating point library as described here.
https://software.intel.com/content/www/us/en/develop/articles/pre-release-license-agreement-for-intel-decimal-floating-point-math-library.html
I've only compiled and tested it on macOS and Linux.


ID not found

Hi.
Trying to develop a Node-Red adapter for Wiser, I encounter issues from the get-go.
I can get the API token easily enough, but run into issues when I try to interact with a load.
I only got one device (3401.A - one load on/off button with wifi) that's connected. No other device.
C firmware version : 0x50005000
A firmware version : 0x10100712
mPi : 1.14.0-142 (commit 569acf3)
I can get the list of loads through /api/loads :

However, as soon as I try to interact with that load in any way, it just gives me an "ID not found" error. This happens in all of those endpoints :

/api/loads/1/ctrl
/api/loads/1/target_state
/api/loads/1/state

If I try to query /api/loads/state, it returns me an empty array...

...Is there anything I'm doing wrong ?
Thank you...

Hi @Webbeh
thank you for posting your issue.
Can you try the following URLs, just using a browser (not over the Node-Red-Adapter)
I assume that your Wiser-Gateway has IP-Address <IP_ADDRESS>

http://<IP_ADDRESS>/api/loads
http://<IP_ADDRESS>/api/loads/1
http://<IP_ADDRESS>/api/loads/state
http://<IP_ADDRESS>/api/loads/1/state

Thank you...

Same result with Reqbin, Postman and, obviously, Node-Red.

Okay,
thanks for reply.
Can you send me your device information:
http://<IP_ADDRESS>/api/devices/00009de5

{
  "data": {
    "inputs": [
      {
        "type": "toggle"
      }
    ],
    "outputs": [
      {
        "type": "onoff"
      }
    ],
    "a": {
      "hw_id": "0x1110",
      "nubes_id": 68954,
      "fw_version": "0x10100712",
      "address": "0x00009de5",
      "comm_name": "Druckschalter 1K",
      "serial_nr": "011110_B_007021",
      "fw_id": "0x0100",
      "comm_ref": "3401.A"
    },
    "last_seen": 109,
    "id": "00009de5",
    "c": {
      "hw_id": "0x8613",
      "nubes_id": 57177,
      "fw_version": "0x50005000",
      "cmd_matrix": "0x0101",
      "comm_name": "Druckschalter 1K WLAN",
      "serial_nr": "018613_B_000860",
      "fw_id": "0x8692",
      "comm_ref": "926-3401.1.W.A"
    }
  },
  "status": "success"
}

Here's the result of the extended device diagnostic, as well.

************************************

Start Extended System-Diagnostics 🛫

************************************

Read System Information 🔎..

1 Devices to check.

Read Device RSSI 🔎..

Device 00009de5: {"kplus":0,"current_ch0":0,"flash":0,"current_ch1":0,"zero_cross":0,"mag":0,"dc_voltage":0,"temp_ch1":0,"temp_ch0":0}

All 1 devices are healthy! 👍

Check Short Frame Data Transmission over K+ 🔎

Start Transmission... .................................

Read Error Registers 🔎..

Device 00009de5: {"rx_errors":0}..

Device 00009de5: {"noise_warn_cnt":0}

Transmission successful (without errors)! 👍

Check Long Frame Data Transmission over K+ 🔎

Start Transmission... .......................

Read Error Registers 🔎..

Device 00009de5: {"rx_errors":0}..

Device 00009de5: {"noise_warn_cnt":0}

Transmission successful (without errors)! 👍

Generate Tx-Burst and read Test-Result (This may take 2 seconds) 🔎....

Device 00009de5: 655350

Burst Signal of 1 devices

Signal max:655350; min:150000; mean:655350

 - OK (min > 205) 👍

Burst signal diagram:

Burst signal    0|· · · · · · · ¦----------------------------------------------O¦|655350

*****************************************

 Extended System-Diagnostics Completed 🏁

          All tests PASSED 👍

*****************************************

**************************************

Start Device Health Condition Check 🛫

**************************************

Read System Information 🔎..

1 Devices to check.

* A-Block checks *

Read Device Health Check Information 🔎..

Device 00009de5: {"kplus":0,"current_ch0":0,"flash":0,"current_ch1":0,"zero_cross":0,"mag":0,"dc_voltage":0,"temp_ch1":0,"temp_ch0":0}

All 1 devices are healthy! 👍

Read Device DC Voltage 🔎..

Device 00009de5: 23.9 VDC

Voltages of 1 devices

Read RSSF Free Blocks 🔎..

Device 00009de5: Free blocks: 1475

RSSF Free Blocks of 1 devices

Read RSSF Erased Pages Counter 🔎..

Counters of 0 devices

Read Switch ON counter Channel 1 🔎..

Device 00009de5: Switch ON count: 31

Counters of 1 devices

Read Switch ON counter Channel 2 🔎..

Device 00009de5: Switch ON count: NaN

Counters of 1 devices

Read Peak Temperature CH 1 🔎..

Temperatures of 0 devices

Read Peak Temperature CH 2 🔎..

Temperatures of 0 devices

* C-Block checks *

Read Device Health Check Information 🔎..

Device 00009de5: {"health_check_errors":0}

All 1 devices are healthy! 👍

Read Device DC Voltage 🔎..

Device 00009de5: 24.2 VDC

Voltages of 1 devices

*******************************************

 Device Health Condition Check Completed 🏁

          All tests PASSED 👍

*******************************************

Also, I tried integrating it now in the Wiser eSetup app, and I got an error :
Error : Load 1 not found
on the app, after pairing the device (press of the button when the app asks for it).

Last but not least, I tried :

Checking whether a new version of the firmware was available on the cloud - which returned negative
Re-applying the current firmware to the device (the bottom right led flashed pale red during the flash)

This had no effect, the problem persists.

Wiser-by-Feller WLAN-gateway reset-functions
By pressing the reset-button (1) for a while its possible to reboot or even to reset the WLAN gateway.

Press the reset-button (1) until the LED (2) color change to your desired function and then release the button.
Possible functions according LED color:

🟢 reboot the WLAN-gateway

No data will be erased

🔵 network-config reset

WLAN configurations will be removed
WLAN-gateway is set in Access-Point-Mode

🔴 factory-reset

Set WLAN-gateway to factory-settings
All configured settings (WLAN, ...) will be deleted
WLAN-gateway is set in Access-Point-Mode

So, apparently, a factory reset seemed to do the trick.
Note, however, that for whatever reason, the backlight settings stayed saved on this device (I set them to red for off and green for on, and it stayed so after factory reset and even after a power cycle).
Thank you !