Role mapping

Hi,
we've discussed this via email. Anyhow, I do not want this feature request to get lost.
There is a demand for automatically generated users to have more than just the member role. For instance, it could be desirable to also allow them to access swift, which is usually governed by the swiftoperator role, adding two roles at the same time. Additionally, VOMS attributes could be evaluated and mapped to other roles and properties of the user, too.
Cheers,
Björn

Following the discussion last week in the EGI F2F, this feature seems to be really important. What is the worked to be done (I can do it)?

I think we need to rethink this feature outside Keystone-VOMS, which should be deprecated once we move completely to Keystone V3 and OS-FEDERATION. I haven't checked the new mapping coming to Ocata, but probably it is worth to invest some time to understand if the features would be enough.

Regarding the thread in the fedcloud list, I have started to check how is working FQN in the keystone-voms plugin. FQAN are correctly collected, but are not used (only to eventually get the tenant group). I have started to modify the plugin for test at IPHC. Here is the worklow:

In the _get_user function, I try to retrieve the role from the DN and get the mapping the mapping from voms.json file (if it exists).
The role is passed to the function _update_user_roles
The _update_user_roles function check is the role exists and create it if it doesn't; then it assign the role to the user.

However, I have a few questions:

In this configuration, roles are not dynamic. If a role is removed from the VOMS, it is not removed from OpenStack
What is the purpose of the user_roles in the configuration file?


Versioning

How is the versioning done?
Personally, I like more the major.minor.patch notation (like you already have in package.json), but I see that in the releases page you prefixed everything with v.
Also, when I release initial releases I do 1.0.0. How about here?
I'm not going to enforce my guidelines here, but of course, I can give a piece of advice, at least ask some questions. :grin:

I belive that a major.minor.patch structure works well and I do it with pie. I just put the v prefix for convention like on linux project.

Also, when I release initial releases I do 1.0.0. How about here?
I belive that 1.0.0 is for when the project is stable and with a functional updater module. Until there, I like the ideia to keep the clearly impression that GitPie is under development. For example, the Atom editor still under 1.0.19 version and is pretty stable.

Got it! :+1:


Move git_based_domain_import to core

used in ui-classic and api so it should live in core anyway
LJ's got that moving code that lives in UI-classic that could be called from non-puma workers thing happening and this one is valid and shouldn't run afoul of Jason's comment at the bottom of that open issue
NEEDS CONCURRENT MERGE WITH https://github.com/ManageIQ/manageiq-ui-classic/pull/6763
it's wip cause it requires https://github.com/ManageIQ/manageiq-ui-classic/pull/6763 and LJ's approval
transferred from https://github.com/ManageIQ/manageiq-ui-classic/commit/5ed6abfea3090fbf6c33e860101bd69059c6d3bf

d-m-u requested review from Fryguy and gtanzillo as code owners now
no I did not. LIES, ALL OF IT

@miq-bot assign @jrafanie

@miq-bot add_label refactoring

Related to https://github.com/ManageIQ/manageiq/issues/19863

Is there a cross-repo for this to show that ui-classic and api pass after this?
In #19863, I saw that api accesses this class here:
11:18:40 ~/Code/manageiq-api (master) (2.5.7) - git grep -E "AutoPlacementVisibilityService|AutomateImportJsonSerializerService|AutomateImportService|ChartsLayoutService|CloudTenantDashboardService|CloudTopologyService|ContainerDashboardService|ContainerProjectDashboardService|ContainerProjectTopologyService|ContainerServiceMixin|ContainerTopologyService|CustomizeFieldsVisibilityService|DashboardService|DialogFieldVisibilityService|DialogLocalService|EmsCloudDashboardService|EmsDashboardService|EmsInfraDashboardService|EmsPhysicalInfraDashboardService|GitBasedDomainImportService|GitRepositoryService|HawkularProxyService|InfraTopologyService|LinkedCloneVisibilityService|MiqPolicyImportService|InvalidMiqPolicyYaml|NetworkTopologyService|NetworkVisibilityService|NumberOfVmsVisibilityService|PhysicalInfraTopologyService|PrivilegeCheckerService|PrometheusProxyService|PxeIsoVisibilityService|RequestTypeVisibilityService|RetirementVisibilityService|ServiceTemplateFieldsVisibilityService|SysprepAutoLogonVisibilityService|SysprepCustomSpecVisibilityService|TopologyService|UserValidationService|WidgetImportService|ParsedNonWidgetYamlError|GtlFormatter"
app/controllers/api/automate_domains_controller.rb:        unless GitBasedDomainImportService.available?
app/controllers/api/automate_domains_controller.rb:        task_id = GitBasedDomainImportService.new.queue_refresh_and_import(data["git_url"],
app/controllers/api/automate_domains_controller.rb:          unless GitBasedDomainImportService.available?
app/controllers/api/automate_domains_controller.rb:          task_id = GitBasedDomainImportService.new.queue_refresh_and_import(domain.git_repository.url,
spec/requests/automate_domains_spec.rb:        allow(GitBasedDomainImportService).to receive(:available?).and_return(true)
spec/requests/automate_domains_spec.rb:        expect_any_instance_of(GitBasedDomainImportService).to receive(:queue_refresh_and_import)
spec/requests/automate_domains_spec.rb:      expect(GitBasedDomainImportService).to receive(:available?).and_return(false)
spec/requests/automate_domains_spec.rb:        expect(GitBasedDomainImportService).to receive(:available?).and_return(true)
spec/requests/automate_domains_spec.rb:        expect_any_instance_of(GitBasedDomainImportService).to receive(:queue_refresh_and_import)
spec/requests/automate_domains_spec.rb:        expect_any_instance_of(GitBasedDomainImportService).to receive(:queue_refresh_and_import)

My initial thinking is this makes sense to move.  It really was a core feature and not really a service in terms of the UI helpers, especially since it was called from both UI and api.

https://github.com/ManageIQ/manageiq-cross_repo-tests/pull/87/checks?check_run_id=536934831

anyone want to tell me what this is still missing?


Populate tracker with current live information for LungV1 atlas

For now hard code the data in the API responses...

Add the Lung V1.0 atlas  https://data.humancellatlas.org/hca-bio-networks/lung/atlases/lung-v1-0
Add its 2 component atlases
Add its component datasets.
Create API endpoints for component-atlases and source-datasets
Create Component Atlas and Source Dataset entities
Configure similar to the current views e.g. https://data.humancellatlas.org/hca-bio-networks/lung/atlases/lung-v1-0/datasets we can refine later.

We can do the tabs on the atlas detail views on a separate ticket.
Replace the test data with the above.

Merged


Responsive slides containing image adn text

Is it possible to scale slides down responsively? So that the width is always 100% of the container while the height keeps the same ratio. The slides would contain any type of HTML. Usually some text over a background image.
We have a bunch of JSSOR sliders that do this. But we're looking to replace them as JSSOR has a bunch of problems itself and Slick looks like the perfect candidate if only it supported the above. If it can do the above then it'll definitely be the "only slider we'll ever need" ; )

Check out "css intrinsic ratios"


feat: some trivialities about Nat.primeCounting and Finset.filter

Also move some general results out of PrimeCounting.lean.

Note that you add 103 files to the import closure of Mathlib.Data.Nat.PrimeFin

Note that you add 103 files to the import closure of Mathlib.Data.Nat.PrimeFin

Huh, not sure why I didn't catch that. I reverted that change

maintainer merge

bors merge


fix(app): listen to app.listen.host

Hey, I just made a Pull Request!
When running the backstage frontend app in a Docker container, e.g. when using docker-compose for local development of app, backend, database and lighthouse, the frontend app by default refuses to accept connections, the container giving empty responses. The reason seems to be that the webpack dev server is started with localhost as host, which in turn is interpreted as do not accept connections from other than localhost. This PR allows overriding this behaviour by setting the app.listen.host configuration parameter to <IP_ADDRESS> (allow incoming connections on all network interfaces). The current code instead uses the host from the URL configuration, but it is inconvenient to remember to browse to http://<IP_ADDRESS>:3000 when developing (and modify CORS etc from default configuration)
:heavy_check_mark: Checklist

[ ] A changeset describing the change and affected packages. (more info)
[ ] Added or updated documentation
[ ] Tests for new functionality and regression tests for bug fixes
[ ] Screenshots attached (for UI changes)

A bit lazy, but ☝ is not super-relevant to this little change I think.

Gotcha 🙇, changeset added

:grin:, well that's some timing :p

Wanted to try out the changesetbot's workflow for adding changesets :grin:
Gonna be biased and keep mine :p
Thank you though!


issue with downloading the datasets for learning_to_simulate

Use the following command to download:
wget -O datasets\WaterRamp\metadata.json https://storage.googleapis.com/learning-to-simulate-complex-physics/Datasets/WaterRamp/metadata.json
--2021-12-07 10:47:55--  https://storage.googleapis.com/learning-to-simulate-complex-physics/Datasets/WaterRamp/metadata.json
Resolving storage.googleapis.com (storage.googleapis.com)... <IP_ADDRESS>, <IP_ADDRESS>, <IP_ADDRESS>, ...
Connecting to storage.googleapis.com (storage.googleapis.com)|<IP_ADDRESS>|:443... connected.
HTTP request sent, awaiting response... 403 Forbidden
2021-12-07 10:47:58 ERROR 403: Forbidden.
Any help ?
Thanks

I think you may be missing a letter. The dataset name should be WaterRamps

OOPS yes indeed, so silly I am! Thanks for your reply. Now it is fine. Thanks again.

Hello, I would like to learn this model. Where can I download the relevant data set? Thanks

Hello, I would like to learn Graph Matching Networks. Where can I download the relevant data set?Thanks


Added comments to agent.py

Status (please check what you already did):

[ ] made PR ready for code review
[ ] added some tests for the functionality
[x] updated the documentation
[ ] updated the changelog

Looking good, thanks a lot :+1:


Service discovery and "PollConsul" type: ServicesAreEmptyError

I was trying to access a microservice called UserManagement from an ocelot api gateway but when attempting the request, i got the following error in logs:

and here is my ocelot.json file :
{
  "Routes": [
    {
      "UseServiceDiscovery": true,
      "DownstreamPathTemplate": "/{url}",
      "DownstreamScheme": "http",
      "ServiceName": "UserManagement",
      "UpstreamPathTemplate": "/gateway/{url}",
      "UpstreamHttpMethod": [ "Get", "POST" ],
      "ReRoutesCaseSensitive": false,
      "LoadBalancerOptions": {
        "Type": "LeastConnection"
      }
    }
  ],
  "GlobalConfiguration": {
    "ServiceDiscoveryProvider": {
      "Host": "localhost",
      "Port": 8500,
      "Type": "PollConsul", // !!!
      "PollingInterval": 100
    }
  }
}

And the service was successfully registered because I can clearly see it's in consul UI dashboard in services list.
I appreciate any help because it's an urgent matter!
P.S: The following steps were produced without Docker, just a normal web API.

Hello please check the following issue.
https://github.com/ThreeMammals/Ocelot/issues/1329
Try "Consul" instead of "PollConsul"

@Danimatar0

I appreciate any help because it's an urgent matter !

Is it still urgent? :rofl:

@ggnaegi  Hi Guillaume!
It seems we have typo issue: Search for "PollConsul" in docs
If @Danimatar0  has used this configuration sample:
"ServiceDiscoveryProvider": {
    "Host": "localhost",
    "Port": 8500,
    "Type": "PollConsul", // WRONG !!!
    "PollingInterval": 100
}

But it is wrong!
I believe it should be:
"ServiceDiscoveryProvider": {
    "Host": "localhost",
    "Port": 8500,
    "Type": "Consul", // CORRECT !!!
    "PollingInterval": 100
}

What do you think?

@raman-m Hi Raman
When using "Type": "Consul", then the service address is retrieved from consul for every request. When using "Type":"PollConsul", the gateway should poll Consul for service addresses, but there is imho a problem: Wenn calling the endpoint the first time, you will get the error mentioned by @Danimatar0 until the interval is reached, then you will get some answers from your endpoint... But imagine if your PollingInterval is high. Maybe the "PollConsul" variant has been abandoned. I came with another solution: https://github.com/ggnaegi/Ocelot/blob/develop/src/Ocelot.Provider.Consul/PollingConsulServiceDiscoveryProvider.cs
I could prepare a PR if you want, it's stable, using on a productive system for two years now.

I could create a PR if you want, it's stable, used on a productive system for two years now.

Wow! That will be awesome! :heart_decoration:
You can attach this issue to your new created PR, please! Pay attention before a PR creation you need to merge all develop branch top commits to your forked develop branch as it is feature branch now! And your feature branch has a lot of merge conflicts. I've created the PR 1 to update your feature branch:

https://github.com/ggnaegi/Ocelot/pull/1

It seems it will not be easy to resolve all these merge conflicts...
The goal is to have all your changes on the top commit of ThreeMammals:develop.
The simplest strategy:

Backup your develop branch source code of forked repo to some safe folder
Remove Ocelot fork completely from your account (to remove merge conflicts implicitly :smile:
Re-fork Ocelot with top changes in develop branch
Apply your code changes from the file backup

OR
I can add you to Ocelot Core team :wink:  and you will have ability to create feature branches inside of Ocelot repo directly!

Would you like to join Ocelot Core team? :wink:

In my case, short interval polling was too chatty, there are some issues there if your consul.json file is big with several routes. The references to the consul services are not stored as singletons. So, as soon, as you are querying new routes, then the gateway will try to retrieve the service addresses... For one address, ok, but then, it's the explosion...

Oh, no! :cry:
I see some critical performance issue here... :disappointed:
Can you confirm that somehow plz? May be some sample project...
Do you have some workarounds for this bug? Have you worked on this bug?

Yeah, sure, I would love to be part of the team :-)
I don't have much time until wednesday, but I will prepare something next week.
As for the performance issues, they should be addressed in my forked repo.

Yeah, sure, I would love to be part of the team :-)

Sorry, I've double checked, and I cannot add you to the team because I have no rights to manage the repo.
I've already asked Tom. But he is silent for now.

I have forked Ocelot to have top commits always for linear git history.
Just let me know please!
I advise you to start by resolving merge conflicts first if you are only going to use your repo.
Waiting a good news from you about your contribution!

Hello @raman-m
I will delete my forked repo, refork the current official repo, import the changes to the solution, make sure the tests are passing and then I will create a PR, probably tomorrow in the afternoon or on wednesday morning.

By the way, the PR should address the following issues:
https://github.com/ThreeMammals/Ocelot/issues/1304
https://github.com/ThreeMammals/Ocelot/issues/1329
https://github.com/ThreeMammals/Ocelot/issues/1487
Some PR are related:
https://github.com/ThreeMammals/Ocelot/pull/1572
https://github.com/ThreeMammals/Ocelot/pull/1562

Some PR are related:
https://github.com/ThreeMammals/Ocelot/pull/1572
https://github.com/ThreeMammals/Ocelot/pull/1562

Well... Did you reuse the ideas from these PRs? 😜

@Danimatar0
Could you verify the solution from PR #1670 please?
Let me know your testing results please!

@ggnaegi Congrats! Done!


[BugFix] fix string format pattern

Fixes #issue
What type of PR is this:

[X] BugFix
[ ] Feature
[ ] Enhancement
[ ] Refactor
[ ] UT
[ ] Doc
[ ] Tool

Does this PR entail a change in behavior?

[ ] Yes, this PR will result in a change in behavior.
[X] No, this PR will not result in a change in behavior.

If yes, please specify the type of change:

[ ] Interface/UI changes: syntax, type conversion, expression evaluation, display information
[ ] Parameter changes: default values, similar parameters but with different default values
[ ] Policy changes: use new policy to replace old one, functionality automatically enabled
[ ] Feature removed
[ ] Miscellaneous: upgrade & downgrade compatibility, etc.

Checklist:

[ ] I have added test cases for my bug fix or my new feature
[ ] This pr needs user documentation (for new or modified features or behaviors)

[ ] I have added documentation for my new feature or new function

Bugfix cherry-pick branch check:

[X] I have checked the version labels which the pr will be auto-backported to the target branch

[X] 3.2
[X] 3.1
[ ] 3.0
[ ] 2.5

[FE Incremental Coverage Report]
:disappointed: fail : 0 / 1 (00.00%)
file detail

path
covered_line
new_line
coverage
not_covered_line_detail

:large_blue_circle:
com/starrocks/journal/JournalWriter.java
0
1
00.00%
[264]

[BE Incremental Coverage Report]
:heart_eyes: pass : 0 / 0 (0%)

@Mergifyio backport branch-3.2

@Mergifyio backport branch-3.1


Token cannot be pasted in JupyterNotebook in VScode

Hi, I am using jupyternotebook via VScode. But When I run
from huggingface_hub import notebook_login

notebook_login()

I copy the Token, but I cannot paste it in the jupyternotebook in VScode. How to solve it?
!huggingface-cli login

doesn't work either.
Thanks!

cc @LysandreJik @sgugger

Could you explain a bit more why you can't paste it? On my side, I get the login window like on a regular notebook/colab and can paste the token then clean Login.

Could you explain a bit more why you can't paste it? On my side, I get the login window like on a regular notebook/colab and can paste the token then clean Login.

I copy the token and I want to paste it in the Token textbox， but nothing show in the textbox. I am sure I copied cause I can paste it anywhere except the Token textbox. Click login and Use Password button don't work.

Sounds like an issue with the widgets not properly working in VSCode. There is little we can do on our side to fix it, you should raise the issue on their repos.

As a temporary workaround, since you're running on your personal machine and since the token is shared on a user-level, you should be able to do huggingface-cli login in your console and be logged-in in your notebook.

I experienced the same issue. As a workaround, you could open your .ipynb in Jupyter Notebook, run notebook_login(), add your token and continue. After saving, you can continue in VSCode.

(related issue on from the forum: https://discuss.huggingface.co/t/notebook-login-not-working-in-jupyterlab/21747)

I was having the same issue in Jupyter and I was able to log in with:
from huggingface_hub import interpreter_login interpreter_login()

For anyone landing on this issue, here is a summary of how to login with the Hub:
The preferred way: use login
It will open the widget in a notebook and default to prompting the user in the terminal.
from huggingface_hub import login

login()

Without user input: login(token="hf_***")
It's also possible to login by providing directly the token. For example, you can get it from an environment variable.
import os
from huggingface_hub import login

login(token=os.environ.get("HF_TOKEN"))

In this example, if the environment is set, it is used. If not, the user is prompted.
If you need to force it
Use interpreter_login or notebook_login if you want to force it to use 1 or the other (instead of the auto-detection). When doing this, you can provide the token as input.
For more details, here is the related package reference. Hope this can help future users :)

I was having the same issue in Jupyter and I was able to log in with: from huggingface_hub import interpreter_login
interpreter_login()

Thank you.
This method worked for me.

I was having the same issue in Jupyter and I was able to log in with: from huggingface_hub import interpreter_login
interpreter_login()

Thanks. I use vs code to login huggingface and apply ur approach. It worked for me.

pour moi cela ne fonctionne pas sur Jupyter
ni from huggingface_hub import interpreter_login
interpreter_login()
ni
from huggingface_hub import notebook_login
notebook_login()

svp aidez moi

ni from huggingface_hub import interpreter_login
interpreter_login()

@michaelndam2023 Have you tested solutions presented in https://github.com/huggingface/huggingface_hub/issues/752#issuecomment-1480943873? Also when you say "pour moi cela ne fonctionne pas sur Jupyter", can you be more explicit on the problem you are getting?
Also, please do not send 3 comments in a row requesting for help - this doesn't improve response time on an open-source project.

@Wauplin  oui oui j'ai essayé mais en vain

@Wauplin  oui oui j'ai essayé mais en vain
l'on me dit jeton invalid et pourtant le jeton est correct
Invalid token passed!

Re-generate a new token on https://huggingface.co/settings/tokens.

Same Thing on a Mac here, both interpreter and notebook_login does not let paste, and login() runs forever

Hey @pechaut78, sorry for the inconvenient. This bug in VScode is not fixed. What you can do is to use the workarounds described in https://github.com/huggingface/huggingface_hub/issues/752#issuecomment-1480825924 and https://github.com/huggingface/huggingface_hub/issues/752#issuecomment-1480943873.

I was having the same issue in Jupyter and I was able to log in with: from huggingface_hub import interpreter_login
interpreter_login()

thank you very much!


Submission format question and no result

I submitted a prediction 12 hrs ago to test out the format, but the status still only showed "submitted" without any result/stdout/stderr.
May I ask what might go wrong and how to debug locally?
Also, from the submission page, the formats of 1) groupings predicted part-mat pairs and 2) groupings labels for each point are {n-shapes x max-groups x 2} and {n-shapes x n-points x 2} respectively which are not the same as sizes shown in HDF5 schema:
    "part_mat_pairs": array(shape=[n_shapes * max_groups * 2], type=int16)
    "point_grouping": array(shape=[n_shapes * n_points],       type=uint8)

nor those in example submission code on the same page:
train_hdf5.create_dataset('part_mat_pairs',
                            shape=(n_shapes * MAX_GROUPS, N_POINTS),
                            dtype='int16')
train_hdf5.create_dataset('point_grouping',
                            shape=(n_shapes, N_POINTS),
                            dtype='uint8')

May I ask what are the correct formats?

Hello @Cattalyya, thanks for your interest in the challenge :)
1) Thanks for reporting the typos! These mistakes from the doc are now fixed.
To clarify things a bit:

The part_mat_pairs array is a list of part-material groupings (where each grouping is in the form of a vector with two entries: a part label and a material label)
The point_grouping array associates each point with a group index, where the index

2) I have reran the submission worker and your submission did exit, but with an output error.
I have checked your submission and it appears that the format of the part_mat_pairs array is incorrect, it should be of dimensions n_shapes x max_groups x 2.
3) You can pad this matrix by -1 (not 0 as in your submissions) to get the evaluation script to automatically evaluate the part-material pairs by maximum voting.
4) There should be a total of 6770 entries in your submission (there are 677 shapes in the validation set, and the challenge is evaluated with 10 compositions per shape). Your submission has 6784 which causes a mismatch with our ground truth.
Here is what an example submission should look like for the validation set:

Best,
Habib

Thank you so much Habib for your quickly resolve my issue! Really appreciate it and thank you for correcting the submission page as well. :D


Min interval for periodic job

Hi,
just a question: in my project I may need to run periodic jobs every 30/45 secs but I just realised there is a limit in the library of 60 sec. currently I have workarounded the limit rescheduling a new non-periodic job after x seconds. What is the reason you added this limit?
yes I know that a periodic job executed every x secs (with x < 60) its a bad idea for energy consumption. many thanks!

In the latest version the minimum is 15 minutes. It's a system limitation, you can read more about it here.
In your case a handler would work much better.


Failed to call API on server

Link to reproduction
arkage.staging.arkage.it
Describe the Bug
Hi there,
I’ve just started with Payload. I’ve hosted a simple website copying the website template on a Plesk server and it is up and running here, https://arkage.staging.arkage.it/.
However, when I want to create the admin user https://arkage.staging.arkage.it/admin/create-first-user the system is looking for an API from localhost and I get an error:
http://localhost:3000/api/users/me. While the first API works correctly https://arkage.staging.arkage.it/api/users/init.
Why I have one api working with the correct endpoint and the second one looking from localhost?
To Reproduce
Copy the website template: npx create-payload-app@latest my-project -t website
Run yarn install
Run yarn build
Upload the dist, build, media, package.json and .env on remote Plesk
Connect to remote Plesk and launch yarn install
On remote Plesk launch the node server
Visit the /admin url
Payload Version
"payload": "^2.0.0"
Adapters and Plugins
db-mongodb

Hey @EmanueleGuidotti this is likely due to your serverURL being defined and pointed at localhost:3000 whenever you run payload build. You should not have to set serverURL at all, so try and remove that from your config and build / deploy again.
This is not a problem with Payload itself though so I will convert this to a Q&A discussion and we can continue to help!


⚠ Bofrost.lu has degraded performance

In b5caeb9, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 1796 ms

Resolved: Bofrost.lu performance has improved in eb21b29 after 6 minutes.


How do you use "No Behavior Spec" to test an operator?

On the operators page there is this reminder:

Remember, you can use the “No Behavior Spec” option in your TLC model to test various operators and cases.

Which conceptually makes sense, but if I try to put the operator definition (Neq(a,b) == a /= b ) directly in the "Evaluate Constant Expression" section then I get an error. Similarly if I put the operator definition in the PLUSCAL algorithm I get a compilation error. I suppose this is because an operator is a TLA+ concept rather than a PLUSCAL concept.
But at this point in the tutorial we haven't written any actual TLA+ code yet and I'm a bit unsure how to best do so. I can add the operator definition in the middle of the TLA+ block but that wouldn't be the best place since it will get overridden upon the next PLUSCAL translation. I guess the best place would be before or after the BEGIN TRANSLATION or END TRANSLATION statements?
By the way I'm very much enjoying the tutorial so far. I'm asking these questions to further my edification as well as improve the tutorial for everyone else. For this particular issue I think that either I'd remove the tip block or add a new section that will actually run the user through adding an operator definition to their TLA file (and telling them where it should go).

if I try to put the operator definition (Neq(a,b) == a /= b ) directly in the "Evaluate Constant Expression" section then I get an error.

I got stuck here as well, the notion of "expression" is still not defined at this point in the tutorial, and I did spend so time trying to run the examples given in the "Operators" section. I guess the fix is not to suggest running the examples in No Behavior Spec

Tip.
Remember, you can use the “No Behavior Spec” option in your TLC model to test various operators and cases.


Add more data

Fixes #4

Created get_hourly_forecast function to get hourly weather data
Updated gather_data function to take in the get_hourly_forecast function
Added "Cloud Cover" and "Visibility" to ocean_data_dict
Added "show_visibility" and "show_cloud_cover" to arguments dictionary
Removed "city" as a parameter of print_outputs function to pass linter, as "city" is called in the arguments dictionary and does not need to be in parameters of print_outputs
Created print_hourly_data function to print the output of the get_hourly_forecast function
Added print_hourly_data function to print_outputs to include the hourly data in the main printing function
Added curr_hour_data to cli.py to print hourly weather data

Summary by Sourcery
Add functionality to retrieve and display hourly weather data, including cloud cover and visibility. Enhance existing data gathering and output functions to incorporate the new hourly data. Fix linter issue by removing unnecessary 'city' parameter from print_outputs function.
New Features:

Added get_hourly_forecast function to retrieve hourly weather data including cloud cover and visibility.
Introduced print_hourly_data function to display hourly weather data.

Bug Fixes:

Removed 'city' parameter from print_outputs function to resolve linter issues.

Enhancements:

Updated gather_data function to incorporate hourly weather data.
Modified print_outputs function to include hourly weather data in the main output.

Hey @MylesPerHour201
Nice work. I'm going to review you're PR later today

@all-contributors please add @MylesPerHour201 for code


[feature request] Restrict access to organization by network

For compliance reasons, we're looking into ways to restrict api access to a given org and its spaces / apps / services / etc by ip address--for example, the owner of an org might want to ensure that all access to that org comes from the owner's employer's network. Would you all be interested in adding this feature to the cloud controller or reviewing a patch to add this functionality?
cc @cnelson @mogul

@jmcarp @cnelson @mogul, sorry for the slow response.
This is an interesting feature idea. I'm concerned about the potential complexity something like this could introduce. I'd be curious to know what a patch for this might look.
Specifically I'm interested in:

How you will determine and trust the incoming IP
How you will configure ip ranges per org
How you will enforce the access constraints

Have you taken a look at route services as a possible extension point to add additional policy?
I do wonder if CC is the correct place to apply incoming IP policy, since it is likely behind many layers of proxies -- LB, gorouter, etc.

@zrob

Specifically I'm interested in:

For our use-case we'd assume we can trust X-Forwarded-For as the CC already does for things like rate-limiting.

We were hoping for some feedback from you here on what an acceptable approach would be. I think the right way to do this would be to associate this data with the org via extending PUT /v2/organizations or adding a new method to set this information.

We'd expect the CC to return CF-NotAuthorized (or another error you deem appropriate) if a request is made that would otherwise be authenticated but comes from a disallowed address.

Have you taken a look at route services as a possible extension point to add additional policy?

Is it possible to put a route service in front of the CC?  I've only used it for fronting hosted apps, not CF components themselves -- regardless of how you put a proxy in front of the CC it's hard to implement this kind of filtering with one:

I do wonder if CC is the correct place to apply incoming IP policy, since it is likely behind many layers of proxies -- LB, gorouter, etc.

I'd love to hear your thoughts on how this could be accomplished further up the stack, we came to the conclusion that this belongs in CC as the knowledge of which resource belongs to which organization only exists in CC.  For any proxy to implement this kind of filtering, it would need to understand CAPI at a deep level in order to  properly filter all requests based on which org owns the resource a given request is operating on. For the majority of requests this means parsing the full request (including the body), and then making additional requests to the CC to find out which org owns the resource being queried so the filtering could be applied.   This type of proxy was our initial approach when looking to solve this need, but we abandoned the idea after some research as we felt the complexity involved made it too brittle.
We also considered making this simpler by implementing filtering based on user and not organization as that would only require inspecting the auth info in each request and figuring out who the user is but users can be members of multiple organizations some of which may have ip filtering policies enabled while others may not.  We felt it could be potentially very confusing for a user when their request for something in org b is rejected because they are also a member of org a and it has IP filtering enabled.
Hopefully this helps explain our thought process and research to date on this feature request.

Knowing you're open to the idea was the first hurdle. Now that we know that, we'll noodle out some of the details and get back to you here soon.
We did consider route services, but those are only applicable for app traffic, not the API. Unless we're missing something?

(Oh whoops, GitHub hadn't updated so I'm only now seeing @cnelson's post.)

@zrob -- Wondering if you've had a chance to read / think about this any more?  We are scheduling work for the next quarter and are trying to decide if we should allocate some time in our schedule for working on a PR for this feature.

@zrob  Checking in again.  Have you had a chance to review the answers to your questions?

Following discussion with @zrob yesterday, it seems like there's low appetite for CAPI taking on a role involving trusting X-Forwarded-For headers, and in general doing IP-related things at the CAPI level.
So we've decided to implement a different feature which is less flexible and self-service, but can be implemented outside CAPI in a proxy:

For certain (e-mail) domains, we will (manually) collect the set of expected IP ranges for users in that domain.
In each request to CAPI, we'll inspect the auth info and figure out which (e-mail) domain the user belongs to.
If we have a whitelist of IP ranges on record for that domain, and the request didn't come from one of them, we'll return 403 Forbidden. Otherwise we'll pass it through.

@zrob you mentioned you thought it was possible to put a route-service in front of CAPI. Can you point out documentation or a sample showing how to accomplish this?
There's a CAPI feature request here, though it's not needed for us to proceed: We'd like a simple, consistent way to query CAPI for the org and space associated with a particular resource, across all resource types. If that existed, it would make writing features like this a lot easier... There'd be no need to modify CAPI directly and we wouldn't be stuck writing brittle API-aware filtering code, and we would be able to implement this kind of policy at the org- rather than user/domain-level, as we'd intended.

We'd like a simple, consistent way to query CAPI for the org and space associated with a particular resource, across all resource types.

Even better if we can also find out the isolation segment... Then it's easy to also have the proxy enforce policy relative only to specific segments.

Any thoughts about this?

We'd like a simple, consistent way to query CAPI for the org and space associated with a particular resource, across all resource types. If that existed, it would make writing features like this a lot easier... There'd be no need to modify CAPI directly and we wouldn't be stuck writing brittle API-aware filtering code, and we would be able to implement this kind of policy at the org- rather than user/domain-level, as we'd intended.

Would you be open to accepting a PR that refactors and consolidates that logic, with the expectation it could be exposed via an API addition (or factored out into a separate service, if that makes sense)?

Was able to discuss this out of band with @mogul.
We agreed that CC was not a good option for handling IP based policy.


testing cli request-pull cmd

This is a pull request.

Coverage remained the same at 58.49% when pulling 0f91220fe4f9dded593782a5b5daba4a09ebf209 on make_tiling_work_46 into 361a9f0b32d19d0127fc49b2fb6b7da39ec6683a on master.


Load test scripts

Issue/Task Number: #359
Overview
Add a new sub-app dedicated to load testing.
Changes

Add a new subapp LoadTester
Build the load test script using Chaperon
Add the following scenarios:

Call /api/admin once
Call /api/admin/admin.login once
Call /api/admin/user.get_wallets once
Call /api/admin/token.all once
Call /api/admin/token.create once
Call /api/admin/account.all once
Call /api/admin/account.create once
Call /api/admin/account.get_wallets once
Call /api/admin/transaction.create for the given LOADTEST_TOTAL_REQUESTS within LOADTEST_DURATION_SECONDS

Implementation Details
Chaperon is selected as the load testing framework because:

It's written in Elixir. Bundling it with the current ewallet app is easy.
Supports clustering
Overall this means we can pretty much use the existing Erlang/Elixir infra built for the app for load testing.

Usage

Spin up a pair of machines with the eWallet app installed
Migrate and seed the target machine, e.g. ewallet-loadtest-server, with:

$ mix ecto.create
$ mix ecto.migrate
$ E2E_ENABLED=true \
<EMAIL_ADDRESS>\
  E2E_TEST_ADMIN_PASSWORD=loadtesting \
  mix seed --test --yes

Run the load test from another server with:

$ LOADTEST_TOTAL_REQUESTS=1800 \
  LOADTEST_DURATION_SECONDS=60 \
  LOADTEST_PROTOCOL=http \
  LOADTEST_HOST=ewallet-loadtest-server \
  LOADTEST_PORT=4000 \
  mix run -e 'Chaperon.run_load_test(LoadTester.Runner)'

Impact
No API or DB changes

@T-Dnzt

How do you get the user<EMAIL_ADDRESS>in the db before running the tests? Do we have to create it manually?

The load test scripts don't need any extra pre-seeded data so any admin user credentials is fine.
The easiest way is to use the admin email set during the seed. So with the command above, the default seeded user<EMAIL_ADDRESS>with the generated password is fine too.

@unnawut Can we add the generation of an admin user as part of the load testing? It removes one step and makes the whole thing simpler to run.

Setup:

1 instance of GCP's n1-standard-2 (2 vCPUs Intel Broadwell, 7.5 GB memory) for the application

Database server resides on the same instance as the application server

1 instance of GCP's n1-standard-2 (2 vCPUs Intel Broadwell, 7.5 GB memory) for generating and measuring the load

Results:

Path
TPS
Max Response Time
Mean
Min

/api/admin/transaction.create
Ping
0.228
0.162
0.120

1
52
39
29

10
40
31
28

20
40
30
26

30
61
31
28

40
2455
1532
54

50
Timeout
Timeout
Timeout

100
Timeout
Timeout
Timeout

200
Crashed
Crashed
Crashed

Quick takeaway:
Supports up to 30 TPS with standard configurations (although it can be easily scaled up since it's a typical application server).


Cannot modify accessories with PlayerOptimizationsEnabled set to true

Tested in a Calico enabled only environment in a solo lobby. When PlayerOptimizationsEnabled is set to true, you are unable to modify your own accessories, whatever you joined with, you are stuck with.

This only applies to accessories.
Hats, shirts, etc. function properly

Thanks! This is now fixed in 0.3.4.


CRC option in not working

Hi,
I would need to use the CRC to be sure my messages are valid but when I tried to use the CRC as mentioned in the README.md, it seems that it is not taken into account. If I'm not wrong, in the source files, it is never checked. Is that normal ? Would it be possible to add it ? :)

Will have a look when time is available.


build: respect environment LDFLAGS and strip the build path

golang does not natively respect LDFLAGS, but you can pass them on the command line using -ldflags=-extldflags=...
This is important for distributions, in order to provide common functionality such as hardening flags.
Also strip the prefixed root source directory from the embedded source file paths. This is not important information for the debugger, which should only care about paths relative to $GOPATH, and results in less build environment metadata leaking into the final binary. (This also aids in reproducible builds when using different build directories, see e.g. https://github.com/golang/go/issues/16860)

Before:
$ checksec -f bin/hub
RELRO           STACK CANARY      NX            PIE             RPATH      RUNPATH	Symbols		FORTIFY	Fortified	Fortifiable  FILE
Partial RELRO   Canary found      NX enabled    PIE enabled     No RPATH   No RUNPATH   No Symbols       Yes	0		2	bin/hub
$ strings bin/hub| grep $USER
/home/eschwartz/git/hub/main.go
/home/eschwartz/git/hub/.gopath/src/github.com/github/hub/commands/version.go
/home/eschwartz/git/hub/.gopath/src/github.com/github/hub/commands/utils.go
/home/eschwartz/git/hub/.gopath/src/github.com/github/hub/commands/sync.go
[...]

After, with LDFLAGS="-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now" (note the presence of relro)
$ checksec -f bin/hub
RELRO           STACK CANARY      NX            PIE             RPATH      RUNPATH	Symbols		FORTIFY	Fortified	Fortifiable  FILE
Full RELRO      Canary found      NX enabled    PIE enabled     No RPATH   No RUNPATH   No Symbols       Yes	0		2	bin/hub
$ strings bin/hub| grep $USER
$

I've been trying to think what to do for go 1.9, the problem is that -gcflags=all= on go>=1.10 is equivalent to -gcflags= on go 1.9 and using the latter everywhere causes newer versions of go to not trim all paths (only some).
From the release notes:

The go build -asmflags, -gcflags, -gccgoflags, and -ldflags options now apply by default only to the packages listed directly on the command line. For example, go build -gcflags=-m mypkg passes the compiler the -m flag when building mypkg but not its dependencies. The new, more general form -asmflags=pattern=flags (and similarly for the others) applies the flags only to the packages matching the pattern. For example: go install -ldflags=cmd/gofmt=-X=main.version=1.2.3 cmd/... installs all the commands matching cmd/... but only applies the -X option to the linker flags for cmd/gofmt. For more details, see go help build.

I think the solution is to do string comparison on the output of go version to choose between the two.


Setup

Sets up the repository and adds a basic pipeline that can be used for testing, refactoring etc.

@lewisjared ready for a first look.
@mikapfl and @JGuetschow this is also all doit based so might be of some interest. The current setup (or at least what it will be after we finish this PR) could form the basis for a 'notebook-based workflow/application' copier repository in future.

@JGuetschow tagging you here, I can add you as a reviewer once you join the CR GitHub group

@lewisjared @JGuetschow @mikapfl last chance for any comments or follow up here. Otherwise I'll merge Monday and we can deal with issues/refactorings in a more narrow context.

@lewisjared @JGuetschow @mikapfl last chance for any comments or follow up here. Otherwise I'll merge Monday and we can deal with issues/refactorings in a more narrow context.

I think you showing it and our discussion based on it was super useful for me. This PR here is a lot of code, so I didn't actually look into it. Any more detailed feedback from me would probably happen after I worked with this setup.

I think you showing it and our discussion based on it was super useful for me. This PR here is a lot of code, so I didn't actually look into it. Any more detailed feedback from me would probably happen after I worked with this setup.

Very fair. I hope to get you working with it in the week of December 5 just as fyi (only checking things run though, not actually doing development)


Blazor/Razor Components docs links are broken

Hi Team;
As of last night all MSFT Docs links pointing to Blazor or Razor components are broken
https://docs.microsoft.com/en-us/aspnet/core/razor-components/

Razor Components are renamed back to Blazor. Doc is now here:
https://docs.microsoft.com/en-us/aspnet/core/blazor/?view=aspnetcore-3.0


Fixes #2076. Running alone the SetColors_Changes_Colors unit test will fail.

Fixes #2076 - The reason for the test not failing when running all tests at once is because the FakeConsole _defaultBackgroundColor and _defaultForegroundColor fields being initialized by an previous tests. Running the SetColors_Changes_Colors alone the BackgroundColor and ForegroundColor properties aren't yet initialized because the _defaultBackgroundColor and _defaultForegroundColor fields are initialized after the properties setter with the default color black/black foreground and background colors.
Pull Request checklist:

[x] I've named my PR in the form of "Fixes #issue. Terse description."
[x] My code follows the style guidelines of Terminal.Gui - if you use Visual Studio, hit CTRL-K-D to automatically reformat your files before committing.
[x] My code follows the Terminal.Gui library design guidelines
[x] I ran dotnet test before commit
[x] I have made corresponding changes to the API documentation (using /// style comments)
[x] My changes generate no new warnings
[x] I have checked my code and corrected any poor grammar or misspellings
[x] I conducted basic QA to assure all features are working

Already merged by the 15a7e37a50a52e9066316e267cdb6038beaaa0ca commit.


Autoplay not working in Chrome

As it stands, when I click either the Youtube or Vimeo links in your demo they open but do not autoplay (in Chrome). They seem to work in Safari and FF.
Was searching around and it seems that the common update required for video to autoplay in Chrome is to have allow="autoplay" in the iframe embed.  I've changed the following in your lity.js file:
function iframeHandler(target) {         return '

';     }
to:
function iframeHandler(target) {         return '

';     }
and that seemed to work for both Youtube and Vimeo.  Any way to test on your end and potentially add this as an update?
Thanks for taking the time to create this plugin btw!

+1

+1

Video should be muted for autoplay to work. Autoplay will not work, if you dont set mute true.

As @navneet29 said, #222 is not enough for autoplay to work. You also need to make it muted. Vimeo uses ?muted=1 querystring, and I think YouTube also has similar configuration.

@sntran
You can add YouTube Parameters to url.
iFrame Youtube

In my case mute=1 was not necessary, just use this as href:
<a href="https://www.youtube.com/embed/<YOUTUBE_ID>?autoplay=1" data-lity>iFrame Youtube


Disk Resource defines CIM class MSFT_Disk which is a Windows built-in CIM class

While adding PartitionStyle parameter to Disk (see https://github.com/PowerShell/StorageDsc/issues/137), I realized that the name of the CIM class implemented in the Disk resource (MSFT_Disk) is the same name as the built-in CIM Class (https://msdn.microsoft.com/en-us/library/windows/desktop/hh830493(v=vs.85).aspx).

This causes some odd behavior, such as Get-TargetResource to return an object that contains both the parameters defined in the resource MOF and the built in CIM class definition. This also results in any property that exists in the build in CIM Class definition can not be set when returned by Get-TargetResource. So when I tried to implement the PartitionStyle parameter, it worked correctly in Set-TargetResource and Test-TargetResource, but Get-TargetResource would always return the default value from the built-in CIM class (which was Unknown).
This behavior only resulted when xStorage was renamed StorageDsc.
To work around this issue for now I'm going to use the name PartitionFormat for the resource parameter.
In the longer term I think it might be worth considering renaming the resource as I'm not sure if there are any other nasty side effects with conflicting with one of the built-in CIM classes. This would be a significant BREAKING CHANGE however.
@johlju - any thoughts on this?

As per discussion, let see if we can change the prefix 'MSFT' to 'MSFTDSC' for this particular resource to avoid a breaking change.

This looks like something I complained about on MSDN late 2016.
Get-Disk -BusType now has an enumeration for NVME, however the same information is harder to collect in traditional cmd.
The objects use different source classes and at one stage I had a Samsung 850 Pro report it was using IDE.
DISKPART
WMIC DiskDrive
Get-Disk
Get-PhysicalDisk
DevCon
A moderator on MSDN told me that MSFT_Disk wasn't a base class.. so I stopped bothering to provide feedback and just use my own fixes for WinPE.
I also believe that the recent SD Card fiasco is related to this.
I'll be back when I return to my pc as I'm afk

Thanks for the info BeoBeum!

@PlagueHO
I found the other mismatch or wmi class that doesn't provide information if querying BusType. Specifically querying BusType "NVME".
SCSIBus and InterfaceType don't have any corresponding data pairs with MSFT_Disk.
As I'm not at my computer, I haven't checked, but I'm fairly sure that Win32_DiskDrive has no way to return a BusType for NVME since I last checked in  #2016.
https://docs.microsoft.com/en-us/windows/desktop/cimwin32prov/win32-diskdrive


Clone with branches lead to infinite loop

Hi all
I encountered a problem while cloning a TFS Repository into a Git Repository with Full History.
A simplified view of my TFS Repository looks like this:
             MAIN
             /     \
           /         \
  Dev/Dev       Release/UAT       <--- C5315 (Caused the problem)

I cloned the Repository with following command
D:\GitTfs-0.23.0\git-tfs.exe clone --with-branches --with-labels -d  $/k2.DWH/Main D:\GitRepo\
During the clone process, the changeset C5315 on Branch Release/UAT causes an infinite loop, as the Changeset is a "merge changeset" and includes a rename of the Branche Release/UAT from "UAT" to "Release/UAT"
Somehow it always tries to clone itself for infite...
How can I avoid this issue while cloning the TFS Repository with full history?
As the history is extremely long, we decided, we don't need everything.
Therefore I tried additionaly to clone the repository beginning from Changeset C12322, to avoid having the troublesome changeset in the history.
I used the following command:
D:\GitTfs-0.23.0\git-tfs.exe quick-clone --with-branches --with-labels -changeset=12322 -d  $/k2.DWH/Main D:\GitRepo\
After that initial clone I used a pull to get the rest of the history:
D:\GitTfs-0.23.0\git-tfs.exe pull -i default --all -d
Unfortunately, the process also encounters the troublesome changeset C5313.
Can I somehow clone the repository beginning with changeset C12322 and ignore every older changeset lower than C12322?
Thanks a lot for your efforts and Best Regards,
Sterbsli

Hello,
I can also reproduce the problem by deleting (and re-creating?) a branch.
Repro Steps

Add trunk "$/TeamProject/Trunk".
Create branch "$/TeamProject/Branch" from "$/TeamProject/Trunk".
Delete branch "$/TeamProject/Branch".
Create branch "$/TeamProject/Branch" from "$/TeamProject/Trunk" again.

Debug output (repeating endless)
Looking for changeset 68744 in git repository...
Changesets fetched!
Cleaning...
Fetching remote :default
Try fetching changesets...
info: refs/remotes/tfs/default: Getting changesets from 68834 to -1 ...
Looking for changeset 68744 in git repository...
info: refs/remotes/tfs/Branch: Getting changesets from 67012 to 68744 ...
Setting up a TFS workspace at .git\~w
TFS Workspace 'git-tfs-cde6789e-ff61-448f-927f-450d5f331d85;User Name' was removed.
Cleaning...
Looking for changeset 68744 in git repository...
Changesets fetched!
Cleaning...
Fetching remote :default
Try fetching changesets...
info: refs/remotes/tfs/default: Getting changesets from 68834 to -1 ...
Looking for changeset 68744 in git repository...
info: refs/remotes/tfs/Branch: Getting changesets from 67012 to 68744 ...
Setting up a TFS workspace at .git\~w
TFS Workspace 'git-tfs-91bd1279-b9b6-49fa-a594-59d567d3910d;User Name' was removed.
Cleaning...

Debugging Information
// Class: Sep.Git.Tfs.Core.GitTfsRemote
// Method: FetchWithMerge(int, bool, int, IRenameResult, string[])

// DEBUG: changeset.IsRenameChangeset = true
// DEBUG: isFirstCommitInRepository = false
if (changeset.IsRenameChangeset && !isFirstCommitInRepository)
{
  // DEBUG: renameResult = null
  if (renameResult == null || !renameResult.IsProcessingRenameChangeset)
  {
    fetchResult.IsProcessingRenameChangeset = true;
    fetchResult.LastParentCommitBeforeRename = MaxCommitHash;
    // DEBUG: Here the fetch-loop is aborted.
    return fetchResult;
  }
  renameResult.IsProcessingRenameChangeset = false;
  renameResult.LastParentCommitBeforeRename = null;
}

And this is what the caller does with the result:
// Class: Sep.Git.Tfs.Core.GitTfsRemote
// Method: FindRemoteAndFetch(int, bool, bool, IRenameResult, [out] string)

try
{
  var fetchResult = ((GitTfsRemote) tfsRemote).FetchWithMerge(-1, stopOnFailMergeCommit, parentChangesetId, renameResult);
}

Thanks for the reproduction case!
...but I won't be able to work on that before long! :worried: If you could continue and find a solution, it will be a real pleasure!

Hello, I'm having the same issue that Gareon when migrating the full history. The branch was created and after 1 commit, deleted and re-created.
Is there a way I can bypass this branch?
Or ignore the old branch creation and only took the latest?
Thanks,
Rodrigo

First of all, I've to say I am very impressed with the power of this tool, I've find this very useful and extensive!
After spending several time with the code i didn't found a fix but a hack that worked to clone the whole history. Perhaps someone else can perform the change in code.
Here's my scenario:
        trunk b1
7370    *        commit1 in trunk
7371    |\----*  b1 created from 7370
7372    *     |  commit2 in trunk
7373    |\    x  deleting b1
7374    | \---*  b1 created from 7372
...     |     |
7378    |     *  commit3 in b1
7380    *----/   merged commit3 in trunk

The problem is originated when a branch is reused and merged into trunk. To fetch the whole history of trunk, the program goes through the changes in that branch until it finds a merge. There, it tries to pull the branch's history that originated the merge commit. So it looks for the root changeset of the branch by picking the first commit on the branch. The problem is that in this case would be C7371, but I would wanted it to pick C7374. My idea was to pick the latest branch root changeset, by changing in TfsHelperBase::GetRootChangesetForBranch to:
var changesets = VersionControl.QueryHistory(tfsPathBranchToCreate, VersionSpec.Latest, 0, RecursionType.Full, null, null, null, int.MaxValue, true, false, false, true).Cast<Changeset>();
var firstChangesetInBranchToCreate = changesets.LastOrDefault(x => x.Changes.Any(c => c.ChangeType.HasFlag(ChangeType.Branch) && c.Item.ItemType == ItemType.Folder && c.Item.ServerItem == tfsPathBranchToCreate));

Here, I'm looking for the last changeset that performs a branch operation of the branch root folder.
Having that changeset, the program searches for its parent commit were the branch was created from, and use its changeset id to start fetching the branch, in this case is C7372.
But when is going to fetch the changesets for the branch, in GitTfsRemote::FetchChangesets, it starts from the parent's changeset (C7372) + 1, and therefore stopping at C7373 were the branch is deleted.
int lowerBoundChangesetId;
if(properties.InitialChangeset.HasValue)
    lowerBoundChangesetId = Math.Max(MaxChangesetId + 1, properties.InitialChangeset.Value);
else
    lowerBoundChangesetId = MaxChangesetId + 1;

So, my hack was to identify the branches under this situation and change the original changeset for the branch in the method GitTfsRemote::FetchChangesets to the one I wanted (C7374 in this case).
I believe MaxChangeset should be initialized with the first changeset to pull, but I wasn't sure how this change would affect the rest of the process.
I hope this helps others to be able to do the change in code.
Thanks,
Rodrigo

@rrivem or @icnocop if you have a chance could you make a PR with the code changes in the previous comment?

@spraints, it seems the code changes by @rrivem are specific to his changeset ids, so they can't just be taken as-is.

Exactly, what I did was bypassing the commits that belonged to branches that were recreated with the same name.
If you're experiencing the same issue you can replace the 3 code snippets I described above, and you should be able to replicate the entire history.
Let me see if I can upload the changes to github

I tried to create a unit test to test the behavior but I get an unexpected/unrelated exception. Any ideas?

There might be a workaround that could work for "lighter" clones. That is the full history will not be available
If possible start the clone after the initial "reused" branch is already dead by using "-c 7374"  (7374 from example above replace with your changeset-id)
This works for me on a test project I have setup as @rrivem described above. I am trying to verify it on my real project as well but that will take quite some time....

No luck for my real project, that actually contains multiple renames. I think there are two issues at play here. One for renames as @Sterbsli points out and the other for dead branches as @rrivem and @Gareon points out.
For renames the "-c" does not work as the "init" of a new branch goes all the way to the beginning. As seen here https://github.com/git-tfs/git-tfs/blob/9399d4dd08976a2f654fe3089ff9fb189c036058/GitTfs.VsCommon/TfsHelper.Common.cs#L299

I would be very happy if someone explained the purpose of this (https://github.com/git-tfs/git-tfs/blob/9399d4dd08976a2f654fe3089ff9fb189c036058/GitTfs.VsCommon/TfsHelper.Common.cs#L316)
if (renameFromBranch != null)
                    GetRootChangesetForBranch(rootBranches, renameFromBranch);

This is causing my problems for renaming (branches have changed names back and forth). I added an extra condition to it and then it works for my renames:
 if (renameFromBranch != null && !renameFromBranch.Equals(tfsParentBranch))

I am guessing that this code is responsible for infinte recursion as it is calling itself...

possibly related: issue #871

I'm also having infinite recursion issues. Branches have been deleted and recreated and renamed.
Looking for a workaround!

I'm also having infinite recursion issues and I got it well defined and pinned down to a test at #1074. It is caused by a merge changeset having as a parent a rename changeset.
There seem to be multiple fixes or workarounds, but I'm not sure which is the right one. Would any of you who might be able to lend insight please take a look? Thanks!

Close as old and maybe fixed by #1493


Posting debug to help with development

LACT-sysfs-snapshot-20241115-193700.tar.gz
too see if this can help squash more bugs

Everything looks correct in there. Thanks though


Edit Device name during intial registeration

It would be nice to have the option to specify the device name during first time registration.
Waiting for the registration to complete and then renaming the device will require restarting HA to update the notification service.

+1 for this. Current implementation is painful and you have to remember to go into settings and change it. It should be asked immediately upon mobile_app registration.

Duplicate: https://github.com/home-assistant/home-assistant-android/issues/381

While I agree it would be nice to ask for the device name during onboarding, the user will always need to restart HA in order for the service call to load.  So not only should we prompt the user to enter the device name but we should also remind the user they need to restart HA for notifications to work.  Also keep in mind the device name is taken from Settings > About Phone so you can easily set it there and not have to worry about it next time you need to clear data in the app.

Choosing the device name during onboarding affects the name of the device, the device_tracker entity and the notification service name.
For me I prefer to use a different name as device name in HA than the one I set in my mobile. Also not all users are familiar with changing the mobile name in the phone Settings.

Also keep in mind the device name is taken from Settings > About Phone so you can easily set it there and not have to worry about it next time you need to clear data in the app.

On my phone the name seems to come from "Model" not the "Unit name" that i can set my self.
My device_tracker is allways named "device_tracker.oneplus_a6013" until i rename it.

I'm aware that we must restart HA to get the changes applied, but would it be possible to not restart HA? Not so long ago we couldn't reload services, now we can (at least some of them)

Not being  able to set the device name from the outset has caused me real headaches tonight - My wife and I have the same model phone, and when editing the device name after logging in the 'integration' name in HA still shows the original name.
This means that notifications do not work on one handset, as they both get registered with the same name in the 'integrations' section and only one service call is created for notify_app.

I'm aware that we must restart HA to get the changes applied, but would it be possible to not restart HA? Not so long ago we couldn't reload services, now we can (at least some of them)

This needs to be done in the HA core side as the notify domain needs to allow it, I think.

On my phone the name seems to come from "Model" not the "Unit name" that i can set my self.
My device_tracker is allways named "device_tracker.oneplus_a6013" until i rename it.

Looking back I may have been incorrect with the device name, it could be the model.  On my Pixel 4 XL both device name and model are the same.

Not being able to set the device name from the outset has caused me real headaches tonight - My wife and I have the same model phone, and when editing the device name after logging in the 'integration' name in HA still shows the original name.
This means that notifications do not work on one handset, as they both get registered with the same name in the 'integrations' section and only one service call is created for notify_app.

So once you rename the device in app configuration, you need to restart HA for the notify service to update its name so you avoid this conflict.  Thats the interim fix until we update the device name during registration.

I understand all of this and it really makes sense, but for easier use, why couldn't we simply have a "enter device name" field in onboarding, so that in HA the device_id immediately is device_tracker.john_doe_phone, not device_tracker.g8441 (that's what I get when I register my Xperia).

So once you rename the device in app configuration, you need to restart HA for the notify service to update its name so you avoid this conflict. Thats the interim fix until we update the device name during registration.

For me, this procedure didn't work - I renamed the device within the app, force closed and restarted. Restarted HA (multiple times) and it still retained the same name.
In the end I managed to fix the issue by manually editing the config_entries file for HA.

I have an issue where one of my phones gets an error and no device_tracker is created under HA, and it looks like it is caused by the app which can't retrieve phone model (undefined/empty field seems to cause an error at registration).
So I was wondering why the device_tracker isn't using the username for registration instead of the phone model? Most of the time it wouldn't require any change on HA side, because it would be easier to identify in automations.
Still have to deal with multiple device_trackers for one user, but adding a random id after username could fix that easily.
PS: I must mention that I'm not 100% percent sure of the cause of the issue I met, but some evidence lead to this. I am sure you will ask for a specific issue, but this "enhancement" would solve it. I followed all the recommendation given to reset the set of the app and the ha side one, with no success.

@mathieu-mp you should file a separate defect for your error and device tracker missing issue.  That is separate from this issue and should be corrected.  This issue is a feature request to allow the user to change the name before the sensor is registered.  The device name will still attempt to pull the phone model and you will hit the error again so we should try to solve it.


Add contributing doc

This adds instructions on how to contribute to CSS3. It covers opening
an issue, submitting a pull request, setting up a dev environment, tips,
and some links to learn more.
Feel free to make edits or change wording. If anything, this could just be something to start with.

Should I change all of the singular I pronouns to plural for the entire document?

Closing. Will reopen against new_syntax_format and address feedback there.


doesn't seem to work on M1s?

It would appear https://registry.hub.docker.com/r/buildkite/plugin-tester/tags that no version of this image is built for the arm64 platform.
Is that an oversight or is there a workaround that I'm missing, for running this image on M1s?

Unfortunately, that is correct. For the time being we are only building amd64 images


[GitHub Actions] - Run RC Validations Workflow

As part of the Beam Release Process, the following PR includes the workflow to run the run_rc_validation.sh script described in step 10. Run validations using run_rc_validation.sh
Files:

Composite action to install common python tools .github/actions/common-rc-validation/action.yaml
Run RC Validations Workflow: .github/workflows/run_rc_validation.yml
Updated CI.md file

* Note: This PR needs to be merged after PR#23390 as we are using the github/actions/setup-gh-cli-linux/action.yml action to setup GitHub CLI.
Work done along with:  @elink21
Thank you!

Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily:

[ ] Choose reviewer(s) and mention them in a comment (R: @username).
[ ] Mention the appropriate issue in your description (for example: addresses #123), if applicable. This will automatically add a link to the pull request in the issue. If you would like the issue to automatically close on merging the pull request, comment fixes #<ISSUE NUMBER> instead.
[ ] Update CHANGES.md with noteworthy changes.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

See the Contributor Guide for more tips on how to make review process smoother.
To check the build health, please visit https://github.com/apache/beam/blob/master/.test-infra/BUILD_STATUS.md
GitHub Actions Tests Status (on master branch)

See CI.md for more information about GitHub Actions CI.

R: @damccorm


[Feature Request] - Pinned Searches

It would be great to define some custom searches that can be pinned to the initial modal.
For example. I use the #T/Project tag for notes that contain projects. I would love to have something that prefills the searchbox with "#T/Project" and then I can sub search amongst the results
Requirements:

Pinned searches can be defined in options using a simple string.
By default the modal (or modal view) starts a default list of pinned searches.

Hi, @rapatel0. Thank you for your FR :)
I think https://github.com/tadashi-aikawa/obsidian-another-quick-switcher/issues/19 will satisfy your requirement. What do you think?

Yeah This is clearly a duplicate of that request. Happy to link and close

Duplicate of #19

@rapatel0
I have released this feature in v6.0.0-beta4 🚀
If you use BRAT, please confirm whether it works as you expected. Of course, It would be great to have feedback or bug reports at #19 :)

Released in v6.0.0 🚀


Document how the Promscale SQL data are stored in the PostgreSQL database

It would be very handy to provide us with some good visual representation of how exactly the SQL data are stored in the PostgreSQL database (also clarifying relations between them) so that writting complex SQL queries become less painful and more obvious. Thank you.

Thank you for the feedback. I agree, a visual representation is something that is helpful to understand the promscale SQL arch better and will be useful in writing queries.
cc @cevian

@mjf We have recently added documentation on SQL schema for metrics. Below are the docs pages created for same:

https://github.com/timescale/promscale/blob/master/docs/sql_schema.md#data-model-schema
https://github.com/timescale/promscale/blob/master/docs/data-model.md

Would appreciate your feedback on docs. Also, if the docs offer the information that the issue expects, feel free to close the issue. :)


Taking the nthRoot of both sides

More support for finding roots of an equation.
e.g. x^2 - 2 = 0 - > x = [nthRoot(2, 2)]
e.g. (y + 1)^2 = 1 - > y = 0

Just did a very cursory pass, will come back and re-read later today, but looks great!


Changing language on add page formular throws 404

If you want to add a new page to Sulu, and you try to change the language in the following form:

You will be redirected to the URL http://sulu.lo/admin/#content/contents/sulu_io/de_at/edit:undefined/content, which will lead to a 404 error.

i remember this error also appear when @thomasduenser and @wachterjohannes  develop the first version of startpage copy function I think to fix this the same check as in this PR is needed.
https://github.com/sulu-cmf/sulu/pull/777/files

As far as I see from this code it is not the same error, because the index page always exists. I probably have to add that this error only occurs if the parent page is ghost page in the selected localization.


Force all non-spectators to play even when not explicitly "Ready"

Implements ppy/osu/issues/22090
It has been previously decided that players who don't press the ready button in multiplayer should still be pushed into gameplay when match starts. This is what this PR achieves. The actual implementation was fairly simple, but i had to handle a lot of changes in tests. I also wrote a new one in order to ensure that MultiplayerHubContext.ChangeAndBroadcastUserState doesn't add user to or remove them from gameplay group multiple times which would cause a memory leak & trigger certain events multiple times.

I've pushed simplifications to this PR.
I have NOT yet tested this, and believe there may be a very big oversight: What happens if a user doesn't have the beatmap available locally? This needs test coverage at very least.

Fails precisely as expected:

I've fixed this up and tested quite extensively.
Unfortunately there are now a lot of line changes. But most are fixing tests.
I'm not going to attempt to split out the beatmap availability changes into their own PR as they are very intertwined with the behavioural changes in this PR.


Can I use this template  in production for a data-heavy application

Not right now. The app is using beta releases of Next.js 13. Not production ready.


Update the dependencies

Update the dependencies to the latest version.

It is dependency free, what do you mean?
https://github.com/TheAwiteb/data2sound/blob/master/Cargo.toml#L17-L18

Ok, I think you mean nothing.

@TheAwiteb Sorry, I forgot to verify if it was dependency-free.
I though this because most Rust programs use third-party libraries and your program is a little old.


[resolves #2070] Pass host argument to Docker pull command

Hmmm... there's something odd about the CI env which makes this fail.


Update README.md

Hello,
Thank you for your hard work and dedication! I am the author of the paper titled "AutoDAN: Generating Stealthy Jailbreak Prompts on Aligned Large Language Models." I have observed what appears to be a repetition concerning my paper. I kindly request that you take this into consideration and address the issue.
Thank you for your attention to this matter.

Thanks for your timely correction. We have rectified our list in today's update.


Update d.tsv

Made the move order in every Blackmar-Diemer Gambit variation consistent and in accordance to the book The Blackmar-Diemer Gambit by Christoph Scheerer.
Changed the name Bogoljubov Variation to Bogoljubow Defense, since every other variation after 1. d4 Nf6 2. Nc3 d5 3. e4 dxe4 4. f3 exf3 5. Nxf3 is called Defense. Also, this defense is named after Efim Dmitriyevich Bogoljubow (not Bogoljubov!). Source: The Blackmar-Diemer Gambit by Christoph Scheerer, p.169
Changed the name Sneider Attack to Sneiders Attack, since this attack is named after Edgar Sneiders (not Sneider!). Source: The Blackmar-Diemer Gambit by Christoph Scheerer, p.28

Thanks for the fixes, and for underlining them with sources!


when number of sprite increased,the browser Become Caton

when number of sprite increased,the browser Become Caton and  Performance degradation,because my project need many sprite,this cause render interval is too long

This is a duplicate of your previous issue
https://github.com/pixijs/pixi.js/issues/2892
Please reply to the suggestions and comments made there; for example, the last suggestion was reducing the number of interactive sprites you have

good point! @themoonrat closing this as this is a duplicate.


How search match count display? which config or plugin did this?

who can help me understand which config or plugin enable the search match count display?
in my own, it only shows in the status line instead of just display right of the matched words like kickstart.

I took a spin through the code and couldn't find this.
Might it be a Telescope configuration setting?
@tjdevries Sorry to bother you good sir but do you have any thoughts on this one?

Hi.
I tried to repro this and can't.  Here's a screenshot with no LSPs enabled, but I saw identical behavior in a Python buffer.
I'd recommend commenting out bits of your init.lua to understand which plugin is causing this behavior if you're seeing something unusual on your end.
I've attached a screenshot of what I'm seeing, and I think this is the behavior we want.

Closing because as near as I can tell we're working as designed.


Working image types, outside of the allowlisted file extensions, throws a generic error

Description of the bug
When using an image that appears to work, but falls outside the allowlisted file extensions (e.g., .webp), the error handling is unusual.  The error thrown is "Error! Metadata failed to update "Could not parse the error message"", rather than the usual "Error! Failed to update metadata element 'toolicon'. ['Supported icon image types are png, gif, jpeg, ico, and svg']." thrown (e.g., by icon URL "google.com/index.html").
Steps to reproduce the bug:

Create a resource of type Web App Connector
Set "Icon URL or File" to "https://upload.wikimedia.org/wikipedia/commons/a/a1/Johnrogershousemay2020.webp"
Save and observe the generic error

Expected behavior
A more actionable and descriptive error is thrown, like the "Error! Failed to update metadata element 'toolicon'. ['Supported icon image types are png, gif, jpeg, ico, and svg']." thrown in other cases.
https://user-images.githubusercontent.com/43424907/178643646-f4740b26-6bba-4788-a623-2549b8658084.mov

reopening this issue.
rc2.1 (89dc601dead967653ac54ddc9160e1140e800f1e) local dev env gives the correct error message:

But rc2.1 deployed to beta however gives:

re-opening, needs another look


Files path and embedd Twitter post issue

Hi,
I noticed issue with embedded posts from twitter and files like images.
For example here is twitter code

Bludit is international #Qatar #Doha pic.twitter.com/xktofW1dEe
— Bludit (@bludit) 7 March 2016

Here code transformed by bludit  - the last line was changed into

Similar if you add image

Bludit will change it into

Hi,
yes is a little bug and regex.
I use this approach to insert the images in the editor and then parse the code, with this way the user don't need to put the full URL of the image.
https://docs.bludit.com/en/content/how-to-insert-an-image
Some recommendations?

This feature was implemented on the latest beta version, please take a look https://github.com/dignajar/bludit/releases/tag/2.0-beta7
Feel free to open a new ticket if you need it.


4-adjust-the-static-content

We need to adjust the static content of the website.

Footer (4a-adjust-the-footer)
About page (4b-adjust-about-page)
Help center (4c-adjust-help-center)

 [C - Essential] Adjust the static content

 [P+C - Essential] Allow the C to enter the number of people coming to the party.

The whole form will be refactored in #55


Update v0.0.4

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

Wasn't this version just merged?

Yeah it looks like their automerge process started around the same time I opened this PR.


R Package: Date/Time types

Is there any news about this issue?

working on it...

Added in https://github.com/cwida/duckdb/commit/59a24af98009e923140548e9be90eb4dcc3c1314


Blinkstick cannot be found

I installed libusb through:
sudo apt-get install libusb-1.0-0 since sudo apt-get install libusb yields an 'package not found' error.
using the latest node version by running:
nvm install --lts (12.14.0 for me)
Script
const blinkstick = require('blinkstick');
const led = blinkstick.findFirst(); // always null

package.json:
...
"dependencies": {
    "blinkstick": "^1.2.0",
}

What am i missing here?

I was using a charging-only cable, not meant for data transfer.


add input token address

Can u add input token address, so not from drop down list. let say,i have source token then paste in destination or from token then will show estimate swap price & gas

No for the moment you can only use the listed tokens but I'll think about it
Le lun. 30 mai 2022 à 02:33, XpniagaDevs @.***> a
écrit :

Can u add input token address, so not from drop down list. let say,i have
source token then paste in destination or from token then will show
estimate swap price & gas
—
Reply to this email directly, view it on GitHub
https://github.com/Aymen1001/Dex-aggregator/issues/1, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AT6N7NF7UJ3LYL5KKOTFNADVMQLGPANCNFSM5XJAIOBQ
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>


TrueCraft

TrueCraft is a complete open source implementation of 1.7.3 beta.
http://truecraft.io/
It could help us in determining how to implement certain Minecraft features properly, such as fluids.

Awesome :D

I updated the github organizations picture with some glowstone xD

Hacker News has some good discussion on TrueCraft: https://news.ycombinator.com/item?id=9469175
For the logo, best to use a custom asset (not based on or from Mojang's texture pack)

I'm working on a logo.

I changed the logo to the ProgrammerArt texture for glowstone for now, to avoid using Mojang's copyrighted textures.

Closing this as discussion has ceased, and nothing useful can be discussed further.


database: switch to ifstream, less code, more idiomatic C++

More idiomatic C++ means less manually written error handling and more reliance on exceptions.
This was inspired by seing fread() turning up and I think ifstream should be faster because as it is inlined and we're reading gigabytes.
I suspect, but don't have a way to measure precisely and accurately enough a 10% improvement: https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts/issues/1001#issuecomment-1517339354
10% might not seem like much, but if the performance problems in the GUI can be addressed, 10% grows to become a substantial part of the load time. Let's say the rest of the load is made 5x faster, then 20% today becomes 50% of the load time.

I suspect, but don't have a way to measure precisely and accurately enough a 10% improvement: https://github.com/The-OpenROAD-Project/OpenROAD-flow-scripts/issues/1001#issuecomment-1517339354

@maliberty good to go if the computer says yes.

Do you plan to do dbOStream too?

No, I am focusing on read performance. I think it should be done though, cant take long.


CVE-2023-25194<EMAIL_ADDRESS>

Incoming dependency CVE

seems we already updated - i was running on incorrect commit - apologies for noise


Add additional details section in GitHub bug template

uhh @EpicWink thanks for this, but our templates are consistent across SDK repos and you can always just add in more info to the issue after creating it and editing. Sorry, closing!


Umlauts don't work

Hey there, it seems that keyboard input doesn't quite work with umlauts. Every time I try to enter one, it inserts the base character and then adds the character for the dots after it and then weirdly selects and sometimes deletes it, but sometimes ... it doesn't ... I don't know.
Just watch this gif:

Is that something wrong on my side or is that scrcpy's fault?
My PC and phone both use the same language.

Could you test with the old v1.3, please?

Same thing 🤔

OK, so this is the other possible cause: your keyboard does not handle key composition correctly (IIRC, this is the case for the Google keyboard). I have no solution for this problem unfortunately (this key composition is already a poor solution to workaround Android limitations for injecting non-ASCII characters).

How about adding support for handling input using Linux uinput feature ? It handles raw keycodes like phone has connected an external keyboard. However I don't know about umlauts or other non-ASCII characters, maybe I'll check it later. The disadvantage is that it requires ioctl() handling what invokes need of root access

need of root access

Yes, that's a problem.
Also see: https://github.com/Genymobile/scrcpy/issues/279

On StackOverflow I've found something like this: https://stackoverflow.com/questions/14224549/adb-shell-input-unicode-character
Hope this could help a little bit

In the comments: https://github.com/senzhk/ADBKeyBoard

In the comments: https://github.com/senzhk/ADBKeyBoard

After testing, I can confirm that ADBKeyBoard works.
The other question is how to integrate ADBKeyBoard into scrcpy.
Maybe we can simply send broadcast to ADBKeyBoard and it normal works. However, this method will suffer some delay, not reliable, etc. I recommend to implement a similar input method which relies on scrcpy socket.

Thank you for your test :+1:
This method requires to install an app on the device (and enable the keyboard in settings). So if we integrate such a thing, I think it needs to be optional (explicitly requested on the command line).

Thank you for your test
This method requires to install an app on the device (and enable the keyboard in settings). So if we integrate such a thing, I think it needs to be optional (explicitly requested on the command line).

Yes!
There is a simple proposal, create a scrcpy-input-method.apk which listen to scrcpy-input socket and implement similar method from ADBKeyBoard. If user explicitly setup, we create scrcpy-input socket and install scrcpy-input-method.apk. Functions like copy_text will send to scrcpy-input socket. Also, when leaving, we should uninstall scrcpy-input-method.apk and change input method back to the original method.

Also, when leaving, we should uninstall scrcpy-input-method.apk and change input method back to the original method.

Always consider either the app, the phone or scrcpy crashing. How would that be reset then?

Hi, all
I am working on the proposal I presented.
There is some result, see YouTube.
The SocketIME repository is here.
In the next step, I will try to integrate it into scrcpy.
Cheers!

Cool, thank you for the PoC! :+1:

Hi, all
There are 3 options for integrating SocketIME into scrcpy.

SocketIME as a git submodule for scrcpy. We provide a build option for building and supporting SocketIME. We may need to add an additional thread for handling input window, events, etc.
Instead of building SocketIME, we provide a hint for user to download it from the release page of SocketIME. Like option 1, we need to implement text windows in scrcpy.
SocketIME as a different project. We don't integrate it into scrcpy. Instead, we start to implement pc client for SocketIME. Like now, user can use scrcpy as normal. If user want to type some complex text, user can turn on SocketIME client.

My concern is about implementing such things in scrcpy is not a elegant way...
Before doing something, I'd like to hear your opinion on it.
Cheers!

In my opinion, being able to type whatever character is needed in the user's language of choice should be regarded as part of scrcpy's most basic functionality.
Otherwise it would even be completely unusable for people whose languages don't even use latin characters like most Asian languages, Russian or Greek do for example.
I really hope that everyone can agree on this with me.

@npes87184 I'm not sure the keyboard should use a socket. IMO it could be controlled via intents/binder from the scrcpy server (the client would just send text events, and the server would send intents to the keyboard). What do you think?

@npes87184 I'm not sure the keyboard should use a socket. IMO it could be controlled via intents/binder from the scrcpy server (the client would just send text events, and the server would send intents to the keyboard). What do you think?

The code may more clear in this way. However, we may suffer some delay when user types, I think.

This seems to work for (German) umlauts now (I'm on v1.11), but not alt keys (like there is Alt Gr + E for the Euro € symbol).
Apart from that, that's a nice improvement already. 😀

@metaa With what parameters do umlauts work for you ? I (currently on v.1.14) do not get them to work.

@metaa With what parameters do umlauts work for you ? I (currently on v.1.14) do not get them to work.

No parameters at all.
Maybe it depends on the language. Some characters are their own ASCII symbol, some consist of multiple symbols and include modifiers.

Thats interesting. What characters can you use, for example ? The ones I'm missing mostly are ä ö ü. They only exist on german-layouted keyboards, but writing without them is horrible.

ä ö ü ß work for me and I actually use 1.11.

1.14 works just the same, but I noticed that (also in 1.11) if you hold the key (or look at it while you press it), you can see for äöü that it first inserts the dots and then the rest (building it from two characters?)

I wonder if that has anything to do with what keyboard is used. Because in my case when I press any of them, nothing is sendt to the device. I use Hackers Keyboard (https://f-droid.org/en/packages/org.pocketworkstation.pckeyboard/) on Android 9.
Edit: Does not seem to be related. I just tested anyoft keyboard and simple keyboard which made no difference.

Yes, it can depend on the device keyboard (but it should work with the keyboards you tested).
Did you test with scrcpy --prefer-text?

Yes, I did. was the first thing I tried after reading through this thread. Sadly it didn't work with that option either. Is there anything else I can provide to find out why it does not work for me ?

I'm using ubuntu and can't get the umlauts to work ( v. 1.16 ).

I can narrow it (or at least my specific umlaut-problem) down to using the snap-version.
I had to use the snap package at the beginning, because there was no package in the ubuntu repositories, so I kept using it though there is one, now.
I tried using umlauts in the scrcpy-snap-shell ("snap run --shell scrcpy") which didn't work either, so it seems to be a problem with the particular snap package.
Using the regularly (via apt) installed package as well as the self-compiled (https://github.com/Genymobile/scrcpy/blob/master/BUILD.md) binary umlauts are working as expected. I don't even need to enable --prefer-text. @mrbgfromv Maybe your problem has the same cause ?
Thanks to @rom1v & @metaa for trying to figure this out with me.

@PureIncompetence THANK YOU very much, I can confirm umlauts working under ubuntu using the package provided via apt.

I confirm, that with snap Umlauts don't work with the apt package it works. THANKS a LOT. I was looking for a solution for many month already.

I confirm, that with snap Umlauts don't work with the apt package it works. THANKS a LOT. I was looking for a solution for many month already.

Any chance you could have a look at how to get German umlauts working with the snap package version as it still does not work? I need the snap version because the version provided in apt (Ubuntu 20.04) is too old. Interesting: copy/paste a text with German umlauts work fine, just not when typing them. Thanks!

@heurekus You can manually install the latest version easily: https://github.com/Genymobile/scrcpy/blob/master/BUILD.md#simple

I can confirm that the repository version on Ubuntu 20.04 (v 1.12) works for german Umlaute.
But many other things are missing in this version.
Any chance to transfer to keyboard handling of 1.12 to the current version?
Would be a great help...
THX

@ManFarang There is no change regarding this between 1.12 and the latest version (1.24). It appears to be an issue with the snap package. You can install the latest version manually: https://github.com/Genymobile/scrcpy/blob/master/BUILD.md#simple

Removed the SNAP version (was a bit tricky because SNAP was very sticky. Rebooting was necessary).
Followed your advice and installed the latest version manually according to the above URL.
And I can happily confirm German Umlauts work flawlessly :-)
Thx a lot

Same here: On my Lubuntu 20.04 scrcpy 1.12 could not handle screen resolution, so I installed a snap to get the latest stable edition. But without any umlauts! The installation oft the latest version via the git repo as suggested by @rom1v did the trick. Thank you all! I did not find out how to contact the snap packager, someone should tell him...


Update jax.scipy.special.gamma and gammasgn to return NaN for negativ…

…e integer inputs.
Change to match upstream scipy: https://github.com/scipy/scipy/pull/21827.

Looks good, but also looks like some unrelated changes snuck in?

Looks good, but also looks like some unrelated changes snuck in?

I don't think so? I'm now using packaging.Version for a version test.

I don't think so? I'm now using packaging.version for a version test.

Is that necessary? In several other places we use the jtu.parse_version utility for that: https://github.com/jax-ml/jax/blob/65f9c7855e25f21935f00bed8c4e899d7be808ba/tests/lax_scipy_test.py#L39

I don't think so? I'm now using packaging.version for a version test.

Is that necessary? In several other places we use the jtu.parse_version utility for that:
https://github.com/jax-ml/jax/blob/65f9c7855e25f21935f00bed8c4e899d7be808ba/tests/lax_scipy_test.py#L39

I think we can/should delete that utility, but ok let's save that for another change.


Add build flair

Dearest Reviewer
I have add the travis-ci build badge to the README. I pushed the image down towards the bottom. I was thinking that most people reading the readme do not care about the build status. I have seen the badge done in different locations and with different titles. I am easy on where it goes. I added it because I found that I was looking for the status when my branch was failing. I have since learned the travis interface.
<3 Becker

Thanks! Can you actually move this up to the top of the README? (right before the first heading), I always like seeing this prominently on pages :)
Also you can feel free to add the AppVeyor image as well, I think it'll look like:

I had to inspect github to get the true url. I am using the data-canonical-src for the image you linked.

@bors: r+ 41ecf3b2c3379f5b71e7c48d08ce8da4c187a3b7
Thanks!

:hourglass: Testing commit 41ecf3b with merge fb52825...

:sunny: Test successful - cargo-linux-32, cargo-linux-64, cargo-mac-32, cargo-mac-64, cargo-win-gnu-32, cargo-win-gnu-64, cargo-win-msvc-32, cargo-win-msvc-64


JVM platform image assembler

What is the goal of this PR?
We've added a new macro, assemble_jvm_platform, which is used to produce an application image for the platform it is run on.
It takes in a java_deps target, image-specific info such as an application name, and startup info such as the main Java class, and outputs a single application image bundled into a ZIP archive.
What are the changes implemented in this PR?

Add assemble_jvm_platform macro

As there are other urgent priorities, we've decided that I should defer reviewing the PR to next week. Merging it as is for now.


chore: update versions

what

update dates
update branches

why

preparing for v4 release

Changed v4.1/dev to main, so I'll need reapprovals.


delite a song on playlist

i want to delite a song from my playlist! pleas at this

add  a button or make it able to task "enf" NUM on keyboard.


Showing Test Results / Code Coverage in Jenkins

Hi,
I am trying to run tests in CodeBuild plugin and showing results on Jenkins. I was able to put test results on CodeBuild reports, but I am struggling to display these results on Jenkins UI. I searched online but unable to find any sample. I put the buildspec file & my jenkins stage below.
** jenkins stage Testing **
    stage('Testing') {
        steps {

            script {
                    echo ("caller identity with JenkinsMaster Role: ")
                    sh "aws sts get-caller-identity"

                    withAWS(region: "${region}", role: "${buildRole}", roleAccount: "${buildAccount}") {
                        echo ("caller identity within withAWS: ")
                        sh "aws sts get-caller-identity"
                        try {
                        // Initially anything inside "awsCodeBuild...." runs as jenkins-build-buildrole1-BuildCodeBuildRole1
                        // Use cbResult to get Build results - https://issues.jenkins-ci.org/browse/JENKINS-61259?focusedCommentId=386419&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel
                        cbResult = awsCodeBuild projectName: "${repoName}",
                            sourceControlType: 'project',
                            credentialsType: 'keys',
                            region: "${region}",
                            envVariables: "[ { assume_role_arn, arn:aws:iam::${devAccount}:role/jenkins-build-deployrole1-DeployCodeBuildRole1 }, { AWS_DEFAULT_REGION, ${region} } ]",
                            sourceTypeOverride: 'S3',
                            sourceLocationOverride: "${sourceLocation}/${artifactName}",
                            buildSpecFile: "buildspec_test.yml"
                        } catch (Exception cbEx) {
                            cbResult = cbEx.getCodeBuildResult()
                        }
                    }

                    echo ("********Results Start: ********")
                    echo cbResult.getArtifactsLocation()
                    echo cbResult.getBuildId()
                    echo cbResult.getArn()
                    echo currentBuild.result
                    echo ("********Results End: ********")
                    // A workaround to catch failing stage (until fixed in the code) - https://github.com/awslabs/aws-codebuild-jenkins-plugin/issues/63
                    // Only needed if using cbResult = .... (https://issues.jenkins-ci.org/browse/JENKINS-61259?focusedCommentId=386419&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel)
                    if(currentBuild.result == "FAILURE") {
                        throw new Exception()
                    }
            } //script
        } // steps
    } // stage - testing

buildspec file
version: 0.2
env:
  parameter-store:
    TOKEN: /codebuild/bitbucket/token
phases:
  install:
    runtime-versions:
      nodejs: 12
    commands:
    # Get Chrome Information
    - curl -s S -o - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
    - echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list
    - apt-get -y update
    # Install chrome
    - apt-get -y install google-chrome-stable
    # Installation of all required packages.
    - apt-get install -yq gconf-service xvfb libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget
  pre_build:
    commands:
      - echo "awscli ...."
      - aws --version
      - ls -l
      - echo "caller identity within withAWS BEFORE assuming the jenkins-build-deployrole1-DeployCodeBuildRole1 ':' "
      - aws sts get-caller-identity
      - TEMP_ROLE=''
      - TEMP_ROLE=`aws sts assume-role --role-arn ${assume_role_arn} --role-session-name test --region ${AWS_DEFAULT_REGION} --endpoint-url https://sts.${AWS_DEFAULT_REGION}.amazonaws.com`
      - export AWS_ACCESS_KEY_ID=$(echo "${TEMP_ROLE}" | jq -r '.Credentials.AccessKeyId')
      - export AWS_SECRET_ACCESS_KEY=$(echo "${TEMP_ROLE}" | jq -r '.Credentials.SecretAccessKey')
      - export AWS_SESSION_TOKEN=$(echo "${TEMP_ROLE}" | jq -r '.Credentials.SessionToken')
      - echo "caller identity within withAWS AFTER assuming the jenkins-build-deployrole1-DeployCodeBuildRole1 ':' "
      - aws sts get-caller-identity
      - echo "Installing NVM"
  build:
    commands:
      - echo "Token value from parameter store is':' ${TOKEN}"
      - echo "Runnings OMO FRONTEND UNIT TESTS ..."
      - echo "${CODEBUILD_SRC_DIR}"
      - ls -l "${CODEBUILD_SRC_DIR}"
      - echo "List files...."
      - ls -l
      - pip3 --version
      - npm --version
      - npm install
      - npm run utf-ci
      - ls -l
      - ls -l "test-results/"
  post_build:
    commands:
      - echo "OMO FRONTEND UNIT TESTS':' Completed..."
      - unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN
reports:
  FrontEndUnitTests: # CodeBuild will create a report group called "FrontEndUnitTests".
    files: #Store all of the files
      - '**/*'
    base-directory: '/test-results' # Location of the report

The plugin currently doesn't support displaying test reports in the Jenkins UI, but we have recorded your request for that functionality and will update this issue when we implement it.

The plugin currently doesn't support displaying test reports in the Jenkins UI, but we have recorded your request for that functionality and will update this issue when we implement it.

👍  Thank you for the quick response, Leo. Look forward to using new functionality once it's implemented.