ios 1024x1024 icon should be no-transporent

Hello! I just got rejecting of build.

https://stackoverflow.com/questions/46585809/error-itms-90717-invalid-app-store-icon

Make sure your PNG doesn't contain any transparency and try again, can you let me know if it works?

But I want use transparency for icons of other size. I removed transparency manually by image magic.

Oh I see what you mean, do you mean that you want to use a PNG with transparency, then have the tool automatically remove the transparency for images which do not support it?

@dwmkerr yes I do. It would be cool!

OK will see what I can do!


Bring back hybrid capability

This is being looked at, though the impact of calculating the gradient when the hybrid is on needs to be looked at in JEDI vs what GSI does.
Just to outline requirements:

revamp of how GMAO ensemble is read into GSI;
I already have the nc-reader,
but it needs parallelization and conversion to subdomain
GFS's hooks should need only very small changes in GSIbec to trigger the code, but the bad part here is the heavy dependency on nems_io - another library dependency to have to add - I will worry about this once the GMAO hook is revised; no extra dependencies should be necessary for the GMAO hook.

This has been done for GEOS. It is now part of version 1.1.0. Quick comparison w/ results from GSI show reasonable agreement, but a full accurate comparison is still pending.

I am spitting this issue as to put the GFS interface into another separate issue - the GEOS interface works now.


fsdp + DPO + fullyfintune会报错

Reminder

[X] I have read the README and searched the existing issues.

System Info
pass
Reproduction
CUDA_VISIBLE_DEVICES="0,1,2,3,4,5,6,7" accelerate launch \
    --config_file examples/accelerate/fsdp_config.yaml \
    src/train.py examples/train_full/llama3_full_dpo_fsdp.yaml

Error message:
0%|                                                                                | 0/33 [00:00<?, ?it/s
[rank1]: Traceback (most recent call last):
[rank1]:   File "/home/xxx/llm_projects/LLaMA-Factory/src/train.py", line 28, in <module>
[rank1]:     main()
[rank1]:   File "/home/xxx/llm_projects/LLaMA-Factory/src/train.py", line 19, in main
[rank1]:     run_exp()
[rank1]:   File "/home/xxx/llm_projects/LLaMA-Factory/src/llamafactory/train/tuner.py", line 56, in run_exp
[rank1]:     run_dpo(model_args, data_args, training_args, finetuning_args, callbacks)
[rank1]:   File "/home/xxx/llm_projects/LLaMA-Factory/src/llamafactory/train/dpo/workflow.py", line 79, in run_dpo
[rank1]:     train_result = trainer.train(resume_from_checkpoint=training_args.resume_from_checkpoint)
[rank1]:   File "/home/xxx/anaconda3/envs/llama-factory/lib/python3.10/site-packages/transformers/trainer.py", line 1932, in train
[rank1]:     return inner_training_loop(
[rank1]:   File "/home/xxx/anaconda3/envs/llama-factory/lib/python3.10/site-packages/transformers/trainer.py", line 2268, in _inner_training_loop
[rank1]:     tr_loss_step = self.training_step(model, inputs)
[rank1]:   File "/home/xxx/anaconda3/envs/llama-factory/lib/python3.10/site-packages/transformers/trainer.py", line 3307, in training_step
[rank1]:     loss = self.compute_loss(model, inputs)
[rank1]:   File "/home/xxx/anaconda3/envs/llama-factory/lib/python3.10/site-packages/trl/trainer/dpo_trainer.py", line 1257, in compute_loss
[rank1]:     loss, metrics = self.get_batch_loss_metrics(model, inputs, train_eval="train")
[rank1]:   File "/home/xxx/llm_projects/LLaMA-Factory/src/llamafactory/train/dpo/trainer.py", line 228, in get_batch_loss_metrics
[rank1]:     reference_chosen_logps, reference_rejected_logps = self.compute_reference_log_probs(model, batch)
[rank1]:   File "/home/xxx/llm_projects/LLaMA-Factory/src/llamafactory/train/dpo/trainer.py", line 206, in compute_reference_log_probs
[rank1]:     reference_chosen_logps, reference_rejected_logps, *_ = self.concatenated_forward(ref_model, batch)
[rank1]:   File "/home/xxx/llm_projects/LLaMA-Factory/src/llamafactory/train/dpo/trainer.py", line 177, in concatenated_forward
[rank1]:     all_logits: "torch.Tensor" = model(**batch, return_dict=True, use_cache=False).[logits.to](http://logits.to/)(torch.float32)
[rank1]:   File "/home/xxx/anaconda3/envs/llama-factory/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1532, in _wrapped_call_impl
[rank1]:     return self._call_impl(*args, **kwargs)
[rank1]:   File "/home/xxx/anaconda3/envs/llama-factory/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1541, in _call_impl
[rank1]:     return forward_call(*args, **kwargs)
[rank1]:   File "/home/xxx/anaconda3/envs/llama-factory/lib/python3.10/site-packages/accelerate/utils/operations.py", line 822, in forward
[rank1]:     return model_forward(*args, **kwargs)
[rank1]:   File "/home/xxx/anaconda3/envs/llama-factory/lib/python3.10/site-packages/accelerate/utils/operations.py", line 810, in __call__
[rank1]:     return convert_to_fp32(self.model_forward(*args, **kwargs))
[rank1]:   File "/home/xxx/anaconda3/envs/llama-factory/lib/python3.10/site-packages/torch/amp/autocast_mode.py", line 16, in decorate_autocast
[rank1]:     return func(*args, **kwargs)
[rank1]:   File "/home/xxx/anaconda3/envs/llama-factory/lib/python3.10/site-packages/transformers/models/llama/modeling_llama.py", line 1174, in forward
[rank1]:     outputs = self.model(
[rank1]:   File "/home/xxx/anaconda3/envs/llama-factory/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1532, in _wrapped_call_impl
[rank1]:     return self._call_impl(*args, **kwargs)
[rank1]:   File "/home/xxx/anaconda3/envs/llama-factory/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1541, in _call_impl
[rank1]:     return forward_call(*args, **kwargs)
[rank1]:   File "/home/xxx/anaconda3/envs/llama-factory/lib/python3.10/site-packages/transformers/models/llama/modeling_llama.py", line 931, in forward
[rank1]:     inputs_embeds = self.embed_tokens(input_ids)
[rank1]:   File "/home/xxx/anaconda3/envs/llama-factory/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1532, in _wrapped_call_impl
[rank1]:     return self._call_impl(*args, **kwargs)
[rank1]:   File "/home/xxx/anaconda3/envs/llama-factory/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1541, in _call_impl
[rank1]:     return forward_call(*args, **kwargs)
[rank1]:   File "/home/xxx/anaconda3/envs/llama-factory/lib/python3.10/site-packages/torch/nn/modules/sparse.py", line 163, in forward
[rank1]:     return F.embedding(
[rank1]:   File "/home/xxx/anaconda3/envs/llama-factory/lib/python3.10/site-packages/torch/nn/functional.py", line 2264, in embedding
[rank1]:     return torch.embedding(weight, input, padding_idx, scale_grad_by_freq, sparse)
[rank1]: RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cpu and cuda:1! (when checking argument for argument index in method wrapper_CUDA__index_select)
[rank0]: Traceback (most recent call last):
[rank0]:   File "/home/xxx/llm_projects/LLaMA-Factory/src/train.py", line 28, in <module>
[rank0]:     main()
[rank0]:   File "/home/xxx/llm_projects/LLaMA-Factory/src/train.py", line 19, in main
[rank0]:     run_exp()
[rank0]:   File "/home/xxx/llm_projects/LLaMA-Factory/src/llamafactory/train/tuner.py", line 56, in run_exp
[rank0]:     run_dpo(model_args, data_args, training_args, finetuning_args, callbacks)
[rank0]:   File "/home/xxx/llm_projects/LLaMA-Factory/src/llamafactory/train/dpo/workflow.py", line 79, in run_dpo
[rank0]:     train_result = trainer.train(resume_from_checkpoint=training_args.resume_from_checkpoint)
[rank0]:   File "/home/xxx/anaconda3/envs/llama-factory/lib/python3.10/site-packages/transformers/trainer.py", line 1932, in train
[rank0]:     return inner_training_loop(
[rank0]:   File "/home/xxx/anaconda3/envs/llama-factory/lib/python3.10/site-packages/transformers/trainer.py", line 2268, in _inner_training_loop
[rank0]:     tr_loss_step = self.training_step(model, inputs)
[rank0]:   File "/home/xxx/anaconda3/envs/llama-factory/lib/python3.10/site-packages/transformers/trainer.py", line 3307, in training_step
[rank0]:     loss = self.compute_loss(model, inputs)
[rank0]:   File "/home/xxx/anaconda3/envs/llama-factory/lib/python3.10/site-packages/trl/trainer/dpo_trainer.py", line 1257, in compute_loss
[rank0]:     loss, metrics = self.get_batch_loss_metrics(model, inputs, train_eval="train")
[rank0]:   File "/home/xxx/llm_projects/LLaMA-Factory/src/llamafactory/train/dpo/trainer.py", line 228, in get_batch_loss_metrics
[rank0]:     reference_chosen_logps, reference_rejected_logps = self.compute_reference_log_probs(model, batch)
[rank0]:   File "/home/xxx/llm_projects/LLaMA-Factory/src/llamafactory/train/dpo/trainer.py", line 206, in compute_reference_log_probs
[rank0]:     reference_chosen_logps, reference_rejected_logps, *_ = self.concatenated_forward(ref_model, batch)
[rank0]:   File "/home/xxx/llm_projects/LLaMA-Factory/src/llamafactory/train/dpo/trainer.py", line 177, in concatenated_forward
[rank0]:     all_logits: "torch.Tensor" = model(**batch, return_dict=True, use_cache=False).[logits.to](http://logits.to/)(torch.float32)
[rank0]:   File "/home/xxx/anaconda3/envs/llama-factory/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1532, in _wrapped_call_impl
[rank0]:     return self._call_impl(*args, **kwargs)
[rank0]:   File "/home/xxx/anaconda3/envs/llama-factory/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1541, in _call_impl
[rank0]:     return forward_call(*args, **kwargs)
[rank0]:   File "/home/xxx/anaconda3/envs/llama-factory/lib/python3.10/site-packages/accelerate/utils/operations.py", line 822, in forward
[rank0]:     return model_forward(*args, **kwargs)
[rank0]:   File "/home/xxx/anaconda3/envs/llama-factory/lib/python3.10/site-packages/accelerate/utils/operations.py", line 810, in __call__
[rank0]:     return convert_to_fp32(self.model_forward(*args, **kwargs))
[rank0]:   File "/home/xxx/anaconda3/envs/llama-factory/lib/python3.10/site-packages/torch/amp/autocast_mode.py", line 16, in decorate_autocast
[rank0]:     return func(*args, **kwargs)
[rank0]:   File "/home/xxx/anaconda3/envs/llama-factory/lib/python3.10/site-packages/transformers/models/llama/modeling_llama.py", line 1174, in forward
[rank0]:     outputs = self.model(
[rank0]:   File "/home/xxx/anaconda3/envs/llama-factory/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1532, in _wrapped_call_impl
[rank0]:     return self._call_impl(*args, **kwargs)
[rank0]:   File "/home/xxx/anaconda3/envs/llama-factory/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1541, in _call_impl
[rank0]:     return forward_call(*args, **kwargs)
[rank0]:   File "/home/xxx/anaconda3/envs/llama-factory/lib/python3.10/site-packages/transformers/models/llama/modeling_llama.py", line 931, in forward
[rank0]:     inputs_embeds = self.embed_tokens(input_ids)
[rank0]:   File "/home/xxx/anaconda3/envs/llama-factory/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1532, in _wrapped_call_impl
[rank0]:     return self._call_impl(*args, **kwargs)
[rank0]:   File "/home/xxx/anaconda3/envs/llama-factory/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1541, in _call_impl
[rank0]:     return forward_call(*args, **kwargs)
[rank0]:   File "/home/xxx/anaconda3/envs/llama-factory/lib/python3.10/site-packages/torch/nn/modules/sparse.py", line 163, in forward
[rank0]:     return F.embedding(
[rank0]:   File "/home/xxx/anaconda3/envs/llama-factory/lib/python3.10/site-packages/torch/nn/functional.py", line 2264, in embedding
[rank0]:     return torch.embedding(weight, input, padding_idx, scale_grad_by_freq, sparse)
[rank0]: RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cpu and cuda:0! (when checking argument for argument index in method wrapper_CUDA__index_select)
  0%|                                                                                | 0/33 [00:28<?, ?it/s]
W0628 16:52:43.518000<PHONE_NUMBER>86016 torch/distributed/elastic/multiprocessing/api.py:851] Sending process 11966 closing signal SIGTERM
E0628 16:52:47.337000<PHONE_NUMBER>86016 torch/distributed/elastic/multiprocessing/api.py:826] failed (exitcode: 1) local_rank: 0 (pid: 11965) of binary: /home/xxx/anaconda3/envs/llama-factory/bin/python
Traceback (most recent call last):
  File "/home/xxx/anaconda3/envs/llama-factory/bin/accelerate", line 8, in <module>
    sys.exit(main())
  File "/home/xxx/anaconda3/envs/llama-factory/lib/python3.10/site-packages/accelerate/commands/accelerate_cli.py", line 48, in main
    args.func(args)
  File "/home/xxx/anaconda3/envs/llama-factory/lib/python3.10/site-packages/accelerate/commands/launch.py", line 1084, in launch_command
    multi_gpu_launcher(args)
  File "/home/xxx/anaconda3/envs/llama-factory/lib/python3.10/site-packages/accelerate/commands/launch.py", line 733, in multi_gpu_launcher
    distrib_run.run(args)
  File "/home/xxx/anaconda3/envs/llama-factory/lib/python3.10/site-packages/torch/distributed/run.py", line 870, in run
    elastic_launch(
  File "/home/xxx/anaconda3/envs/llama-factory/lib/python3.10/site-packages/torch/distributed/launcher/api.py", line 132, in __call__
    return launch_agent(self._config, self._entrypoint, list(args))
  File "/home/xxx/anaconda3/envs/llama-factory/lib/python3.10/site-packages/torch/distributed/launcher/api.py", line 263, in launch_agent
    raise ChildFailedError(
torch.distributed.elastic.multiprocessing.errors.ChildFailedError:
============================================================
src/train.py FAILED
------------------------------------------------------------
Failures:
  <NO_OTHER_FAILURES>
------------------------------------------------------------
Root Cause (first observed failure):
[0]:
  time      : 2024-06-28_16:52:43
  host      : [vision14.local](http://vision14.local/)
  rank      : 0 (local_rank: 0)
  exitcode  : 1 (pid: 11965)
  error_file: <N/A>
  traceback : To enable traceback see: https://pytorch.org/docs/stable/elastic/errors.html
============================================================

[rank1]: RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cpu and cuda:1! (when checking argument for argument index in method wrapper_CUDA__index_select)
[rank0]: RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cpu and cuda:0! (when checking argument for argument index in method wrapper_CUDA__index_select)
Expected behavior
No response
Others
llama3_full_dpo_fsdp.yaml
### model
model_name_or_path: /path/to/Meta-Llama-3-8B-Instruct/

### method
stage: dpo
do_train: true
finetuning_type: full
pref_beta: 0.1
pref_loss: sigmoid  # choices: [sigmoid (dpo), orpo, simpo]

### dataset
dataset: dpo_en_demo
template: llama3
cutoff_len: 2048
overwrite_cache: true
preprocessing_num_workers: 12

### output
output_dir: saves/llama3-8b-instruct/full_fsdp/dpo
logging_steps: 1
save_steps: 500
plot_loss: true
overwrite_output_dir: true

### train
per_device_train_batch_size: 1
gradient_accumulation_steps: 4
learning_rate: 1.0e-6
num_train_epochs: 1
lr_scheduler_type: cosine
warmup_ratio: 0.1
bf16: true
ddp_timeout: 180000000
flash_attn: fa2
save_only_model: True

### eval
val_size: 0.1
per_device_eval_batch_size: 2
eval_strategy: steps
eval_steps: 50

I had the same problem using a slightly different config:
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 accelerate launch  \
    --config_file ./examples/accelerate/fsdp_config.yaml \
    ./src/train_bash.py \
    --stage dpo \
    --do_train \
    --model_name_or_path my_model \
    --dataset my_dataset \
    --template maritalk \
    --split train \
    --finetuning_type full \
    --dpo_beta=0.1 \
    --cutoff_len 2048 \
    --max_length 2048 \
    --max_new_tokens 2048 \
    --output_dir ~/my_output \
    --overwrite_cache \
    --overwrite_output_dir \
    --per_device_train_batch_size 1 \
    --gradient_accumulation_steps 1 \
    --lr_scheduler_type cosine \
    --logging_steps 10 \
    --save_steps 500 \
    --learning_rate 1e-5 \
    --warmup_ratio=0.1 \
    --num_train_epochs 3.0 \
    --plot_loss \
    --fp16 \
    --use_fast_tokenizer=True

I had the same problem, too.

What I can do to temporarily solve this problem is to set both fsdp_cpu_ram_efficient_loading and fsdp_offload_params in fsdp_config.yaml to false, so that the CPU is not used, but the memory requirement will increase.

same error.


Waiting on integrations to complete setup

System Health details
System Information

version
core-2024.5.0b1

installation_type
Home Assistant OS

dev
false

hassio
true

docker
true

user
root

virtualenv
false

python_version
3.12.2

os_name
Linux

os_version
6.6.21-haos

arch
x86_64

timezone
Europe/Amsterdam

config_dir
/config

Home Assistant Community Store

GitHub API
ok

GitHub Content
ok

GitHub Web
ok

GitHub API Calls Remaining
5000

Installed Version
1.34.0

Stage
running

Available Repositories
1407

Downloaded Repositories
49

HACS Data
ok

Home Assistant Cloud

logged_in
true

subscription_expiration
31 augustus 2024 om 02:00

relayer_connected
true

relayer_region
eu-central-1

remote_enabled
false

remote_connected
false

alexa_enabled
false

google_enabled
true

remote_server
eu-central-1-5.ui.nabu.casa

certificate_status
ready

instance_id
f51092d0098f40faa50dfd391c4bf925

can_reach_cert_server
ok

can_reach_cloud_auth
ok

can_reach_cloud
ok

Home Assistant Supervisor

host_os
Home Assistant OS 12.2.dev20240313

update_channel
beta

supervisor_version
supervisor-2024.04.4

agent_version
1.6.0

docker_version
24.0.7

disk_total
458.4 GB

disk_used
29.9 GB

healthy
true

supported
true

board
generic-x86-64

supervisor_api
ok

version_api
ok

installed_addons
Log Viewer (0.17.0), Samba share (12.3.1), Terminal & SSH (9.13.0), Mosquitto broker (6.4.0), Z-Wave JS (0.5.0), ESPHome (2024.4.0), Studio Code Server (5.15.0), Home Assistant Google Drive Backup (0.112.1), Whisper (2.0.0), Piper (1.5.0), openWakeWord (1.10.0), Matter Server (5.5.1)

Dashboards

dashboards
10

resources
28

views
116

mode
yaml

Recorder

oldest_recorder_run
13 april 2024 om 14:50

current_recorder_run
27 april 2024 om 10:48

estimated_db_size
2596.86 MiB

database_engine
sqlite

database_version
3.44.2

Checklist

[X] I have read the FAQ to see if there is a known solution to my problem.
[X] I have enabled debug logging for my installation.
[X] I have filled out the issue template to the best of my ability.
[X] This issue only contains 1 issue (if you have multiple issues, open one issue for each issue).
[X] This issue is not a duplicate issue of currently previous issues..

Describe the issue
seeing this since a few restarts (in HA 2024.5 beta):
Logger: homeassistant.bootstrap
Bron: bootstrap.py:688
Eerst voorgekomen: 10:49:36 (1 gebeurtenissen)
Laatst gelogd: 10:49:36

Waiting on integrations to complete setup: {('powercalc', '140072626338432'): 3197947.64381924}

Reproduction steps

simple restart

...
Debug logs
not yet logged

Diagnostics dump or YAML config
didnt change from before, so probably not related to user config.
not sure yet what this means, and all is functional. It didnt show before though, so maybe the speed improvements HA has seen lately are now catching up with Powercalc ;-)

Which version of Powercalc are you using?

1.12.0-beta5

Ah ok, could you try upgrading to beta 6 first? As I'm pretty sure there was an issue causing powercalc to redownload on every startup.
When you are still experiencing this issue please enable debug logging for powercalc and share the logs after startup.
I am also doing some additional changes to further improve startup time.
https://github.com/bramstroker/homeassistant-powercalc/pull/2217

Still there…
Logger: homeassistant.bootstrap
Bron: bootstrap.py:688
Eerst voorgekomen: 11:01:53 (1 gebeurtenissen)
Laatst gelogd: 11:01:53

Waiting on integrations to complete setup: {('powercalc', '139636165091520'): 3285083.602768622}

Please share debug logs, then I can see if there is any obvious to see causing a slow down.
I have also tried on my test instance running HA beta.5 but I don't have any issues.

sure will do, giving it a few restarts, but keep seeing this:
[custom_components.powercalc.power_profile.loader.remote] Remote profile is newer than local profile

could it be this is not saved locally correctly after being downloaded?

Yes that's definitely the problem, and what I suspected. That should only happen once, but keeps happening every restart for you. It's only a problem with the Powercalc v1.12 beta, which introduced remote loading.
I have reworked that check (to see if profile is outdated) a bit in beta.7. Could you please try that one?
90% change this fixes your problem. After first restart it should still be slow one time, but after a second restart you should not see Remote profile is newer than local profile logs anymore.
When still not fixed I might need to add extra debug logging.

Confirm the warning does not show now, on 1st restart after installling beta 7

Great to hear @Mariusthvdb.
Yes that debug line is expected now. I have added that in beta.7.
That should happen everytime at start. To fetch complete update powercalc library information. But that's only a json which contains all possible manufacturers, models and aliases and their updated_at times.
Fetching of the actual profile (and CSV files) to local filesystem should only happen once. Hence the Remote loading lines are gone now.


merge main

Closes #
Introduced changes

Checklist

[ ] Linked relevant issue
[ ] Updated relevant documentation
[ ] Added relevant tests
[ ] Add a dedicated CI job for new examples
[ ] Performed self-review of the code

good job


Fix undefined left shift in ncx_get_size_t()

Running a build on the .nc file corresponding to the below ncdump output
with -fsanitize=undefined raises
libsrc/ncx.c:4722:26: runtime error: left shift of 255 by 24 places cannot be represented in type 'int'
This is due to *cp being promoted to int before doing the left shift, instead
of the intended unsigned. So do the cast to unsigned internally rather than
externally
ncdump file to reproduce:
netcdf temp {
dimensions:
y = UNLIMITED ; // (0 currently)
x = 109067 ;
variables:
byte t(y, x, x) ;
data:
}
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2265
Credit to OSS Fuzz

Thank you! Reviewing now.

I've merged into the 4.5.0 release branch, and it will make its way back upstream to master in shorter order.  Thank you very much!  I'll leave this open, it should close automatically once the release branch is merged back to master.

Hi, @WardF
I noticed this issue and fixed all other similar type casting problems in ncx.m4.
The changes can be found in https://github.com/wkliao/parallel-netcdf/commit/68d3babfd0cb496a83ef0f70de22f45e9a213812
File ncx.m4 is expected to be the same between NetCDF and PnetCDF, when I revised it a while ago. I suggest to make a copy of ncx.m4 from https://github.com/wkliao/parallel-netcdf/blob/am/src/drivers/ncmpi/ncx.m4


[Bug] App crashes when choosing an anime to watch.

Describe the bug
The app crashes upon clicking an anime.
To Reproduce
Steps to reproduce the behavior:

Open app
Succesfully login to Anilist.
In settings, I chose gogoanime as provider.
Click on any anime shown.
App crashes, with no error mesage shown.

Expected behavior
Upon clicking an anime, show anime details and episodes list, then when clicking an episode, the app plays the episode on its built-in player.
Smartphone (please complete the following information):

Device: [Samsung A04]
OS: [Android 10]
Version [1.2.7]

Hi what is the issue?

After, I install the app (universal and armveav7).
I login with my Anilist account, after that the app shows its catalogue of animes, I then tried to tap on any anime just to test it out, the app then crashes and just kick me out of it.

The crashing problem stopped when I enabled Google Play Services. But now it seems like the sources are broken, most of the animes I tried to watch don't seem to work. (Case closed, HXH, Jujutsu Kaisen) using both Gogo and Kaido didn't work.


Not running checkers for all filetypes

I use a jsx addon that sets all JS files to the filetype javascript.jsx, so that I get syntax highlighting for JSX in all JS files.  However, for some reason it seems like only the JSX file checkers are getting run, despite the following being in my Vim configuration:
let g:neomake_javascript_enabled_makers = ['jshint', 'jscs']

So, with the given configuration, jscs doesn't get by default.  However, if I do the following instead
let g:neomake_javascript_enabled_makers = ['jshint', 'jscs']
let g:neomake_jsx_enabled_makers = ['jshint', 'jscs']

it works fine.  In this .js file, the set filetype returns filetype=javascript.jsx.

Do you know how to set up standard with babel-eslint parser to have neomake lint es6 code as well?

Any update on this? /cc @blueyed

Agreed this should be fixed for multi-FT files
As a stopgap you can get it to work by copying the maker config from the main ft (jsx) to the sub f (javascript)
so define g:neomake_jsx_jshint_maker = { same as in autoload/neomake/makers/javascript }
OR switch the ft to jsx.javascript (if the other plugins you're using support multi-ft correctly this will be fine).

I have this problem with html files - it's not running on html files with JS in script tags.

@wejrowski
What &ft are you using?
If it is only "html" then it's a different issue: it will only run checkers for "html".
As for using javascript.jsx etc: only makers from all the filetypes are being considered: https://github.com/neomake/neomake/blob/914609831b904f84f296826c2ad8f99d4bc7ce23/autoload/neomake.vim#L303-L304.
I am not sure if that makes sense though.
See also https://github.com/neomake/neomake/issues/572.

I ended up figuring it out and needing to define the maker args as is done by default behind the scenes.. not very clear.. I just had to copy the js one to html:
let g:neomake_html_eslint_maker = {
        \ 'args': ['-f', 'compact'],
        \ 'errorformat': '%E%f: line %l\, col %c\, Error - %m,' .
        \ '%W%f: line %l\, col %c\, Warning - %m'
        \ }

@wejrowski that is covered by / being discussed in #572 then.


crucial version bumps

This PR brings interchaintest v5 current:

cosmos-sdk
tendermint
ibc-go

I made a mess of this....


one click for create .ts/（.scss or .less or .css）/.html

It is tired to create files one by one, because the file name always same.
Just use windows copy then rename that's faster than use VS - from my colleagues exp...
thanks!

Thanks for the suggestion.
If I understand correctly, you're posting this here as a tip for other to see, rather than as a bug or feature request. In that case I'll mark this closed (as there are no changes for us to make). Thanks again!


Added import to telemetry opt out sample

Q
A

Bug fix?
[ ]

New feature?
[X] (barely 😉)

New sample?
[ ]

Related issues?
-

What's in this Pull Request?
Quick addition of the required import for the code snippet that shows how to opt out of the telemetry collection (I was searching within the sp-dev-fx-property-controls package but did not see initially that the telemetry had its own package).

@lafe thank you for adding this to the docs.


Order of Train Information

Hello, would it be possible to add an option to rearrange the order of the displayed information? Prior to the last update Adhesion and Tractive Effort have been close together in the overlay and it was easy to compare the two values with each other. Since the 1.0.0 update the information seem to be ordered alphabetical making Adhesion appear first in the list and Tractive Effort near the end. This makes it harder to keep both values in sight.

Thank you for the 1.1.0 update. The order can now be rearranged.


[bug] HostResourceRegionMismatch while deploying Azure IoT Operations

Describe the bug
While deploying Azure IoT Operations in westeurope, the deployment fails with the latest CLI-Extension as well as via the Azure Portal. It seems like the location name has changed since westeurope becomes west%20europe and therefore is not being recogniced by some API Endpoints.
Errors
Target: /subscriptions/xxxxxx/resourceGroups/rg-xxxxxx/providers/Microsoft.Resources/deployments/aziotops.init.e436b719fd1b4008964f5821342f298e
Exception Details:      (HostResourceRegionMismatch) Host resource region: west europe for ID: "/subscriptions/xxxxxx/resourcegroups/rg-xxxxxx/providers/microsoft.extendedlocation/customlocations/sro-aksee001-cl" does not match Custom Location region: westeurope
        Code: HostResourceRegionMismatch
        Message: Host resource region: west europe for ID: "/subscriptions/xxxxxx/resourcegroups/rg-xxxxxx/providers/microsoft.extendedlocation/customlocations/sro-aksee001-cl" does not match Custom Location region: westeurope
        Target: hostResourceId

Same error if you try to add the custom-location feature directly:
az connectedk8s enable-features -n sro-aksee001 -g rg-xxxxxx --features cluster-connect custom-locations

Error while fetching helm chart registry path: HTTPSConnectionPool(host='west%20europe.dp.kubernetesconfiguration.azure.com', port=443): Max retries exceeded with url: /azure-arc-k8sagents/GetLatestHelmPackagePath?api-version=2019-11-01-preview&releaseTrain=stable (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x08055A10>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed'))

After manipulating the ARM-Template to use the west%20europe version of the location name, the deployment goes to the next step and will fail with  "Microsoft.ExtendedLocation" resource provider does not have the required permissions to create a namespace on the cluster..
Cluster Environment

AKS EE Arc Agent version: 1.14.5
AKS EE Kubernetes version: 1.26.6

Developer Environment

CLI Client-OS: Windows 10 Enterprise
Shell: powershell
Az CLI version: 2.54.0
customlocation extension version: 0.1.3
IoT extension version: 0.2.0b1

I used the following cli command:
az iot ops init --subscription xxxxxx -g rg-xxxxxx --cluster xxxxxx --kv-id /subscriptions/xxxxxx/resourceGroups/rg-xxxxxx/providers/Microsoft.KeyVault/vaults/kv-xxxxxx --custom-location xxxxxx-cl --target xxxxxx-target --dp-instance xxxxxx-processor --mq-instance mq-instance --mq-mode auto --mq-mem-profile low

In the meantime I also found the root cause: The Engineer who created the AKS EE Instance used "West Europe" as location instead of "westeurope" inside of his aksedge-config.json:
{
  "SchemaVersion": "1.9",
  "Version": "1.0",
  "DeploymentType": "SingleMachineCluster",
  "Init": {
    "ServiceIPRangeSize": 100
  },
  "Arc": {
    "ClusterName": "xxxxxx",
    "Location": "West Europe",
...
}

I think the AKS EE Team should put some validation on that value, since other services propably do not check this other kind of name. @chgennar Could you check if we should put some kind of validation / fallback inside the IoT Operations ARM-Templates too?

Thank you for the debugging information. I'll forward this to the AKS-EE team.


Allow skiping question about project-name in advenced templates

Hi,
I wanted to create a template that allow me to create project within URL. The question about project-name in most cases is in GitHub link and this is in my opinion  the best approach to create new project from template. The project-name variable must be required, but checking about it absence should be postponed until all pre-hooks are called.
This is a pseudo dialog I want to achieve:
Past link to repository of your project: <github.com/organizaton/my-awesome-rust-project>
Is the name of your project correct my-awesome-rust-project? [Y (Yes)/e (Edit)]
Your project is created!!
To make this backward compatible the template should set option that allow template set project-name on it's own. For example in cargo-generate.toml template.project-name.ask = false (default true)
What do you think of this idea?

Interesting feature.
Let me explain 2 arguments why I think that would be a bit counter productive.

all my templates have the name "template" in the url, and I don't want to be have the project to be called template.
cargo-generate supports to have multiple sorts of templates in one single git repository. For example you can have a folder cli and a folder lib in the repository. Then when using cargo-generate with this one repository url it depends on the a different command line option what folder will be taken. So therefore the repository URL would also not reflect the right project name.

I think you misunderstood me, I suggest:

The cargo-generate require {project-name} to be defined (but not exactly as user input).
template is allowed to disable prompt for {project-name}
cargo-generate will exit with error if template will not provide {project-name} variable with pre-hook scripts.

Maybe examples would be more clear:

You want to create randomly-named-rust-project-template
cargo-generate ask about {project-name} (a bit ironic...)
You ignore user input and overwrite it with pre-hook script with random name for project

In my case I want to create template like this:

You run cargo generate --git me/my-template
You are asked about git origin of project  (so github.com/me/my-awesome-project)
my-template sets {project-name} to my-awesome-project

Yeah, I have misunderstood you in the first place.
Could you please show me such a template that would provide the project-name via hook?
In general it make sense that the project-name is also possible to provide via

environment variable: CARGO_GENERATE_VALUE_PROJECT_NAME
a template value file
or finally via hook

However, there are a few things that needs to be kept in mind. Since the project-name is used for a folder name and a crate name, it must be strictly validated. It bares a security risk to blindly allow any folder name that a template provides.
Having that said, we have basically 2 cases:

the user of the template is in charge of the name (env var or template value file)
the template author is in charge of the name (hooks)

So I tend to be sceptical that supporting case 2 is a wise thing to do (from a security point of view).

The level of security can be unchanged. The only thing that would change will be the point when {project-name} and variables that depends on {project-name} will be validated by cargo-generate.

Ask about all variables defined by cargo-geneate.toml
Run pre-hooks that allow modify variables or add new
Validate variables required by cargo-genare (like project_dir, project-name, crate_name,  crate_type)

So the validation should be done before this line: https://github.com/cargo-generate/cargo-generate/blob/69914f177317b6cc3f02a8d08bdd0e958f6f677c/src/lib.rs#L116

At this moment I am able to provide invalid value to project-name
CLI:
cargo generate -v --path ~/projects/github.com/xaoc/opinionated-rust-template/ template --name invalid2

and code in pre-hook that set invalid project-name
variable::set("project-name", "🦞");

and head of Cargo.toml:
[package]
name = "🦞"
version = "0.1.0"

(this will not affect project_dir since this variable is evaluate in rust code before calling pre-hooks. )

Could you please show me such a template that would provide the project-name via hook?

I want to write one so any working example yet.

Thanks for elaboration, sounds consistent to me.

I want to write one so any working example yet.

Looking forward to have such a template to simplify development efforts.

I have published example template that should provide project-name by hooks. Here is the link: https://github.com/xoac/opinionated-rust-template

I'll give this a go after #669 has been merged - otherwise I'll invite the merge conflict gods!

@xoac, @sassman  I have a few issues, actually its kinda breaking...

Currently, the pre-hook might actually depend on the project-name already being set.
If cargo-generate waits with asking until after the pre-hook, any templates that uses the variables in question from the pre-hook will break! (granted, it's not many!)

If we delay the check and ask a little later, it should really include all the builtin variables.


upgrade to latest ES spec

Now we can upgrade code to use latest ES since build tools bundling supports latest spec.

Implemented in #18


Update pull_request_template.md to reference data quality

Publishing Checklist
I confirm the following:

[ ] My open data feeds conform to one of the permissable combinations specified in https://developer.openactive.io/publishing-data/data-feeds/types-of-feed
[ ] My open data feeds all pass the OpenActive Validator's model validation (https://validator.openactive.io/)
[ ] My open data feeds all pass the OpenActive Validator's RPDE feed validation (https://validator.openactive.io/rpde)
[ ] My open data feeds include activity list references as specified in https://developer.openactive.io/publishing-data/activity-list-references
[ ] My dataset site(s) each reference a GitHub Issues Board

Maintenance Checklist
Our organisation is committed to:

[ ] Resolving issues that are raised on the GitHub Issues Board(s)
[ ] Ensuring activity providers are aware of the OpenActive opportunity on an ongoing basis

I'd suggest putting a summary of the key points of that data quality doc on https://developer.openactive.io, and then linking to a URL there - rather than a link to a Google doc directly. We've tried to avoid links to Google Docs throughout the infra and favoured stable links to URLs (noting that GitBooks automatically redirects if the URL of a page changes over time).
Additionally, the Google doc seems to be aimed at a different audience to those here; the audience here would likely benefit from a succinct summary of the "Initial Focus" and "Defining ‘good’ data quality" sections which answers the question "What makes my data high quality?", without the dashboard etc around it.
The documentation is intended to be immediately actionable for readers who are short on time and are seeking the key information they need, so shorter is better.
Finally, the Google Doc - if it is referenced in the developer documentation as suggested above - should probably live here: https://drive.google.com/drive/folders/11xwaofr1G5q_P9u54BgJch9RHLZr7SA4?usp=drive_link

Thanks @nickevansuk So, I've:

Added a brief data quality section on developer docs, that contains the link to a google doc
Moved the doc to the correct place on the OA google drive
Updated this change to point to the developer docs, not the google docs/drive

I will update the doc with latest on DQ framework, but the above are sufficient for this immediate change I think.


Showing validation errors on init

Question
Hi.
Thanks for the great lib which allows me to create Forms from JSON Schema :-).
I have one question.
Is it possible to show form errors when form is initialized?
i.e.
When input field has "minLength" set and it is initialy empty then field is not marked as "not valid"
I would like to know if there is an option which after enabling would show errors (or mark field as "not valid") upon form init
(Here's the link the starter which has "minLengh: 4" added to input field: https://stackblitz.com/edit/ngx-formly-ui-bootstrap-rxrpwh)
Also i noticed that the first validation runs on 1st blur, so when i start typing it is still not marked as "not valid"
If I click again the input field after "blur" then validation is executed on every keystroke.
It seems that validation is enabled only on 1st blur.
Thanks
Tomasz Kasowicz

see https://formly.dev/examples/validation/force-show-error


Translating  'password_change' in pt-BR locale

Thanks for this. The recommended way to contribute to the translations is to do so on Locale. Someone has already provided these translations on there which I've updated in git just now. If you feel the translations can be improved, please make changes on Locale or create a new pull request.

No worries, thanks @JasonBarnabe!

Will you bump a new version?
Cheers.

1.0.1 is out.

@JasonBarnabe thanks! :smile:


feat: export selectPlotArea custom interaction

导出 selectPlotArea 函数，用于自定义交互。

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

1 of 1 (100.0%)  changed or added relevant line in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 88.211%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
10038

Relevant Lines:
11020

💛  - Coveralls

这个感觉没有必要导出吧？可以直接使用导出的类名来获得对应的节点？
import { PLOT_CLASS_NAME } from '@antv/g2';

确实可以


Filmon Goitom: Ux/Ui design, 2 week

[my fork of module repository]
()

Learning Objectives
Learning Objectives

Priorities: 🥚, 🐣, 🐥, 🐔 (click to learn more)

There is a lot to learn in this repository. If you can't master all the material
at once, that's expected! Anything you don't master now will always be waiting
for you to review when you need it. These 4 emoji will help you prioritize
your study time and to measure your progress:

🥚: Understanding this material is required, it covers the base skills you'll
need for this module and the next. You do not need to finish all of them but
should feel comfortable that you could with enough time.
🐣: You have started all of these exercises and feel you could complete them
all if you just had more time. It may not be easy for you but with effort you
can make it through.
🐥: You have studied the examples and started some exercises if you had time.
You should have a big-picture understanding of these concepts/skills, but may
not be confident completing the exercises.
🐔: These concepts or skills are not necessary but are related to this module.
If you are finished with 🥚, 🐣 and 🐥 you can use the 🐔 exercises to push
yourself without getting distracted from the module's main objectives.

[1. Design Thinking] (. /1-design-thinking)

[x] 🥚 User Empathy: You understand what user empathy is, and can use it
to understand a classmate's needs and help them plan a home page.
[x] 🥚 Design Cycle: You will be able to describe the design cycle and
what steps you will take in each state (Empathize, define, ideate,
prototype, testing and implement).
[x] 🥚 Double Diamond: You can separate the design and deliver phases of a
project. Design and delivery are a never-ending cycle, but it helps to be
clear when you are focusing one or the other.
[x] 🥚 Stakeholder Interviews: You can interview another student to learn
their motivations, needs, and blocks
[x] 🥚 Rapid Prototyping: You can use rapid prototyping techniques (such
as paper prototyping) to test initial design hypotheses and receive user
feedback.
[x] 🥚 User Journeys: You can write user journeys for websites that you
use.

[2. Gestalt Principles] (. /2-gestalt-principles)

[x] 🥚 Design Principles: You can apply some of the key design principles
to your own site, such as alignment, proximity, contrast, balance and
space.
[x] 🐣 CSS: You can use CSS3 to implement responsive & accessible designs.

3. Collaborative Design Softwares

[x] 🥚 Figma: You can create, share and collaborate on a website design
using Figma.

[4. Accessibility] (. /4-accessibility)

[x] 🥚 Accessible Design: You will be able to make a website design more
accessible.
[x] 🐣 Screen Readers: You can navigate a web page using a screen reader,
and can use semantic elements and ARIA labels to make your web pages
accessible.

<! ---- BEGIN CHECK-IN TEMPLATE: copy this into a new comment for each week of the module
Week X

[x] I have pushed my progress to [my fork of exercises repo] (_)

Week 1

[x] I have pushed my progress to [my fork of exercises repo]
(https://github.com/filmon-goitom/hayko-amalikyan.github.io)

I Need Help With:
nothing
What went well?
everything
What went less well?
instructions
Lessons Learned
fork and contribute on other people work
Sunday Prep Work
start to look about it


Add a TimedCommands SystemParam for easier delayed operations

What problem does this solve or what need does it fill?
Queuing things to run at a specific later point in time is a pretty common requirement for many games, but our current setup for doing this type of thing is pretty boilerplate-heavy: see one example in the repo: https://github.com/bevyengine/bevy/blob/90bb1adeb28b82be96546e0c2cde81530241f7af/examples/time/timers.rs
What solution would you like?
Especially for situations where batch processing is not needed, we should be able to queue commands to happen at a specific future point in time, so a TimedCommands SystemParam would make sense:
pub fn foo_system(mut commands: Commands, mut timed_commands: TimedCommands, my_entity: Query<Entity, With<Foo>>) {
    let my_entity = my_entity.single();

    // Normally you might queue a command, and it would apply at the very next sync point:
    commands.entity(my_entity).insert(Bar);

    // However, with TimedCommands you would queue it to run a specific duration from now.
    // This would run at the soonest sync point after the duration has passed.
    timed_commands.after(Duration::from_secs(5)).entity(my_entity).insert(Bar);
}

HOWEVER, developers might run into issues where entities get despawned or changed between the time when the command was queued and when it gets applied, so we should take care with what kinds of operations we allow through TimedCommands.
What alternative(s) have you considered?
Continue with our current boilerplate-heavy solution.

HOWEVER, developers might run into issues where entities get despawned or changed between the time when the command was queued and when it gets applied, so we should take care with what kinds of operations we allow through TimedCommands.

A deferred command can't assume that the world is in the same state as when it was issued, whether it runs later in the frame (Commands) or in a later frame (TimedCommands). The set of assumptions should be the same in both cases, so the same commands should all be valid IMO.

What is the actual use case for this? Cause idk if you got this idea from the bug I encountered with bevy_kira_audio but that's a bug. Features shouldn't be added to work around bugs, bugs should be fixed.
I can't think of a context for this where it isn't just a foot gun. It's the equivalent of doing sleep(duration) conventional engines. If this can be a 3rd party crate I think it would be more appropriate as a 3rd party crate.

could we also add .after_future e.g. commands.after_future(async { ... }).entity(my_entity).insert(Bar) ?

What is the actual use case for this? Cause idk if you got this idea from the bug I encountered with bevy_kira_audio but that's a bug. Features shouldn't be added to work around bugs, bugs should be fixed.
I can't think of a context for this where it isn't just a foot gun. It's the equivalent of doing sleep(duration) in conventional engines. If this can be a 3rd party crate I think it would be more appropriate as a 3rd party crate.

I can think of one or two contexts where this can be useful, many of them just for a visual appealing
Lets say for example that the user clicks a button, and I want to, exactly two seconds after, jumpscare the user with some kind of image or song. That would be very easy with TimedCommands
Another easy context for this is dialogs. There are times where I want to have some short time with nothing going on just to the crack up moment to come, something rather easy with TimedCommands
note that there are some other ways to accomplish the same thing, but IMO this helps the ergonomics very much.

I feel like this would be adding specifics for something that could be modeled with a component containing a Timer + leveraging Trigger observer:

when timer just_finished, send an event with this entity as target
store any other data on component on that
observe the trigger event, add any other systemparam needed to react.
it could even have a component marker to customize auto ticking behaviour

example API:
command.spawn(
  TimerWithEvent(
    Timer::new(Duration::from_secs(1),TimerMode::Once)
  )
).observe(|trigger: Trigger<TimerFinished>, mut commands: Commands| {
  // TODO: anything useful
  commands.entity(trigger.entity).despawn();
}

example internal system

pub fn timer_with_events_trigger(
    mut commands: Commands,
    mut q_timers: Query<(Entity, &TimerWithEvent)>,
) {
    for (e, mut t) in q_timers.iter() {
        if t.0.just_finished() {
            commands.trigger_targets(TimerFinished, e);
        }
    }
}

Ticking behaviour
The ticking behaviour is not entirely trivial to make generic, because we might want to pause it, tick in specific schedules, tick faster/slower...
I'd suggest a TimerAutoTick component. (or incorporate it in TimerWithEvent, or have an opt-out TimerNoAutoTick...)
pub fn timer_ticker(
    mut commands: Commands,
    time: Res<Time>,
    mut q_timers: Query<&mut TimerWithEvent, With<TimerAutoTick>>,
) {
    for mut t in q_timers.iter_mut() {
        t.0.tick(time.delta());
    }
}


setup: concealcursor= conceallevel=2 ?

Currently it sets up concealcursor=nv, but not conceallevel.
I think it would be good to use conceallevel=2 to actual do the concealing, but not concealcursor (too see the codes at the cursorline).
Otherwise e.g. c-a / c-x will not work easily etc, and it appears to make horizontal movement "slower" (it looks like h/l go by unconcealed character, requiring you to use them several times with colored letters next to each other).

Right, I forgot that I set my own conceallevel and I was debating about the concealcursor because, to someone who doesn't understand, it does indeed look like it's going slower. I agree with your proposal.


Deployment guide feedback

Section heading: Tanzu Network Username parameter shows as secret **
Documentation issue description:
When we enter a Tanzu network username during Cloudformation template deployment, it shows as ***. I am wondering if we can show that as a plain string rather than as secret value.
https://aws-quickstart.github.io/quickstart-vmware-tanzu-application-platform/#_parameter_reference

@satya-dillikar ^^

ok, assigned this to me.
cc: @tlindsay42


[Bug] Error using a accessor as "attribute" on "relationship" field type with the "inline create" functionality

Bug report
What I did
I have a "relationship" field type, with the "create inline" functionality enabled. The target entity has two fields: "firstname" and "lastname". I also have generated an accessor called "fullname" which is the combination of them. This accessor is used in listings, selectors etc. And it is used as "attribute" definition in the relationship field.
CRUD::field('lawyers')
    ->label('Lawyers')
    ->type('relationship')
    ->attribute('fullname')
    ->ajax(false)
    ->inline_create([
        'entity' => 'lawyer',
        'force_select' => true
    ]);

What I expected to happen
After creating the record with the "create inline" functionality, I expect that the created record is correctly displayed as a selected item in the "relationship" field. It should appear in the list of selected records, with the field "fullname" defined as an attribute.
What happened
After creating the record, a selected item appears, but without text (only the box with the "x" to remove the association is visible).

What I've already tried to fix it
I think the problem comes from the fact that the field I am using is an accessor, and it is not a real field in the database. I think the programming that controls this does not take into account that the field defined as "attribute" can be a accessor.
Is it a bug in the latest version of Backpack?
I am using the 4.1 backpack
Backpack, Laravel, PHP, DB version
When I run php artisan backpack:version the output is:
PHP VERSION:
PHP 8.0.6 (cli) (built: May  4 2021 23:31:41) ( NTS Visual C++ 2019 x64 )
Copyright (c) The PHP Group
Zend Engine v4.0.6, Copyright (c) Zend Technologies
with Zend OPcache v8.0.6, Copyright (c), by Zend Technologies
LARAVEL VERSION:
v8.58.0@1b819bf99d87bd543a4d4895e5b3350f61ea7a23
BACKPACK VERSION:
4.1.51@756173cf6593c3d530fca0e54831763c796e24d8

Hi @pabloblazquez ,
Thanks for reaching out. I assume you already have an accessor (getFullnameAttribute()), not just a mutator (setFullnameAttribute()).
I've never tried that myself (use an accessor as an attribute for a relationship field), but I guess it's a reasonable thing to assume would work. If it doesn't already, we'll try to make it work (if it's technically possible and reasonable).
Have you tried adding fullname to your $appends array on the Model?
    protected $appends = ['fullname'];

I'll let Pedro take over for details - he knows more about this part than I do.
Just wanted to give my quick idea above.
Cheers!
PS. If it turns out we cannot make it work (due to processing order - accessors are only applied after the DB query is returned), computed DB columns will definitely make it work for you, and improve performance (eg. a migration that adds    fullname varchar(101) as (concat(first_name, ' ', last_name)) to that table). That's will offload the processing from PHP to the DB, which is much better at that. But yeah it's a data structure change and I know it's probably not what you're looking for.

Sorry, you're right, I always meant an "accessor", not a mutator. I've edited my original post to avoid doubts.
And thanks for the quick solutions, I'll try them.

Adding "fullname" to my $appends array on the Model works!.
protected $appends = ['fullname'];

public function getFullnameAttribute(): string
{
    return collect(['['.$this->code.']', $this->firstname, $this->lastname])->join(' ');
}

Thanks a lot!

Awesome. Happy to help.


Use of .sh files shunned globally.

Don't use .sh files for entrypoint. Shunned.
Use golang for statically typed and universal support.

Using node.js itself for the entrypoint should also be possible and may be the better solution.
I don't know golang but is that universal? Or how is it more universal?
The go-package is also quite huge and would blow up the image size if that should be required.

Strapi is running on Node.js, the alpine image is the lightest possible.


Create only required methods in UtUtils class

Description
Patch standard IntExamples a little, add the following constructor
 public IntExamples() {
        System.out.println("Vse ploxo!");
    }

Generate tests for max method.
This generation requires UtUtils class creation. But method createInstance only is required (and dependent getUnsafeInstance too).
Expected behavior
No other util methods should be located in UtUtils class (e.g. createArray - it is useless)
Actually, we see all supported in UtBot util methods in the generated code of util class.
Context
This behaviour seems to be the original design.
We select only required util methods when locate them in the test class, but having other util class we don't apply any filtering.

@EgorkaKulikov
This behavior has also one more effect:
The UtUtils class is created only once.
It is recreated only if mocking support is needed (and it was not before).
Or if the new version of UtUtils class has come with new version of UnitTestBot.

I'm not going to start doing this task right now, just to note that we have this behavior and it seems to be controversial.


Request Intercept and Self Signed Certificates

I am trying to intercept every request, then modifying its response's body and sending to browser. It all works fine until SSL certificate of website is valid. If some website has self signed SSL certificate then request always shown as pending in network section of developer console of Chromium and my interception function is never called. Even I have added setOverrideCertificateErrors to true and added listener for certificateError. How to solve this issue?
const chromeLauncher = require('chrome-launcher');
const CDP = require('chrome-remote-interface');
const atob = require('atob');
const btoa = require('btoa');

async function main() {
    const chrome = await chromeLauncher.launch({
        chromeFlags:
            [
                '--window-size=1200,800',
                '--user-data-dir=/tmp/chrome-testing',
                '--auto-open-devtools-for-tabs'
            ]});

    const protocol = await CDP({ port: chrome.port });
    const { Runtime, Network, Security } = protocol;
    const activated = await Promise.all([Runtime.enable(), Network.enable(), Security.enable()]);

    Security.certificateError(({eventId}) => {
        console.log("Ignoring cert error for " + eventId);
        Security.handleCertificateError({
            eventId,
            action: 'continue'
        });
    });

    await Security.setOverrideCertificateErrors({override: true});

    console.log("Network enabled: " + activated);

    await Network.setRequestInterception({patterns: [{
        urlPattern: '*',
            interceptionStage: 'HeadersReceived' }]});

    Network.requestIntercepted(async ({interceptionId, request}) => {
        console.log(`Intercepted ${request.url} {interception id: ${interceptionId}}`);
        const response = await Network.getResponseBodyForInterception({ interceptionId });
        console.log("Actual Body: " + response.body);
        const bodyData = response.base64Encoded ? atob(response.body) : response.body;
        // Do some changes to original data then forward it
        console.log("Decoded Body: " + bodyData);
        Network.continueInterceptedRequest({interceptionId});
    });
}

promise = main();
promise.then(value => console.log("Done Setting Up"));

I see, that's probably a bug in Chrome, here's how to reproduce it more easily:
const CDP = require('chrome-remote-interface');

async function main() {
    const client = await CDP();
    const {Page, Network, Security} = client;

    Security.certificateError(({eventId}) => {
        console.log(`Security.certificateError: ${eventId}`);
        Security.handleCertificateError({eventId, action: 'continue'});
    });

    Network.requestIntercepted(({interceptionId}) => {
        console.log(`Network.requestIntercepted: ${interceptionId}`);
        Network.continueInterceptedRequest({interceptionId});
    });

    await Page.enable();
    await Network.enable();
    await Security.enable();
    await Security.setOverrideCertificateErrors({override: true});
    await Network.setRequestInterception({
        patterns: [{
            urlPattern: '*',
            interceptionStage: 'HeadersReceived'
        }]
    });

    await Page.navigate({url: 'https://self-signed.badssl.com/'});
    await Page.loadEventFired();
    console.log('Done');
    await client.close();
}

main();

I suggest to file an upstream issue or to ask this in the Google Group, feel free to post the link here if you decide to do so.

There is already a question about this in chrome-debugging-protocol group but with no response. Is there any workaround or "hacky" solution for this problem? Thanks
Link to already existing question
https://groups.google.com/forum/#!searchin/chrome-debugging-protocol/certificate|sort:date/chrome-debugging-protocol/MnqC0ipuJ4U/hkoNAs-hCQAJ

There is already a question about this in chrome-debugging-protocol group but with no response.

I see, you should file an issue then. Post the link here if you do.

Is there any workaround or "hacky" solution for this problem?

If you don't need headless mode you can start Chrome with the --ignore-certificate-errors flag and remove from the program Security.setOverrideCertificateErrors and related code.

--ignore-certificate-errors seems to do the trick. It is working now. Thanks for helping.

I have opened a issue on Chromium Bug tracker. Link to the issue
https://bugs.chromium.org/p/chromium/issues/detail?id=894847&can=2&q=certificate&colspec=ID%20Pri%20M%20Stars%20ReleaseBlock%20Component%20Status%20Owner%20Summary%20OS%20Modified


Typescript support!

Following up on #220. This PR by no means converts fully to TypeScript, but it does add it to our toolchain so that we can incrementally add types in the future. The build process is a little wonky given that Next doesn't support transpiling server files itself (see https://github.com/zeit/next.js/issues/1735) so we have to work around that. I'm going to write docs explaining what I did and why I did it so that if problems come up in the future, future maintainers have something to go off of.
TODO

[x] Document the build process

Did my best to add a suitable linting config for TypeScript - there's a bit of weird duplication of some rules between JS and TS and I had to add some overrides since there's not great built-in support for dual-language projects in typescript-eslint. Lmk how things look to you!


Unable to set "pipecd.dev/config-hash" annotation into the workload manifest

What happened:
This error occurs very rarely when deploying.
Unable to set "pipecd.dev/config-hash" annotation into the workload manifest (illegal base64 data at input byte 4)

What you expected to happen:
How to reproduce it:
Environment:

piped version:
control-plane version:
Others:

I solved it by base64 encoding all data of Secret resource value.


CentOS 7 is end of life as of June 30, 2024, need to upgrade OS on freezingsaddles.org

CentOS 7 had its end of life on June 30, 2024. We need to upgrade to a newer, supported operating system, such as Rocky Linux 8 or 9, or maybe Amazon Linux 2023.

To prepare a dry run for this, I wanted to try an OS upgrade procedure using did the following:

Created a new KMS customer managed key unmanaged-freezing-backup-key that is multi-region enabled and replicated to us-west-2, ap-northeast-1, eu-central-1, and us-west-2, managed by FreezingSaddlesAdmin and gave it the right permissions for the AWS Backup service in the same region to use it.
Deleted the Default backup vault using the AWS CLI since it is not configured to use our KMS key
Configured a new AWS Backup vault to use the unmanaged-freezing-backup-key
Granted AWSBackupDefaultServiceRole the right to pass role to the IAM role that the instance runs with, see here for the details
Made an on-demand backup of the EC2 instance
Restored the EC2 instance to a slightly larger instance type to facilitate easy upgrade

Upgrading to Rocky Linux 8 with a dry run using leapp worked pretty well, only minor changes were needed to the docker-compose files. The basic services came over OK. I added some host name variants to test with, such as tmp-www.freezingsaddles.org and tweaked the environment file so those hosts would resolve.
Next up: upgrade to Rocky Linux 9, after making another backup of the temporary instance 	 unmanaged-fs-ec2-restore-tmp with AWS Backup.

To get from CentOS 8 to 9

To get the system up to date tried to issue sudo dnf update -y --allowerasing as there was one recalcitrant package:

Error:
 Problem: cannot install both nagios-plugins-2.4.9-1.el8.x86_64 from epel and nagios-plugins-2.4.9-1.el7.x86_64 from @System
  - package nagios-plugins-game-2.4.9-1.el7.x86_64 from @System requires nagios-plugins = 2.4.9-1.el7, but none of the providers can be installed
  - cannot install the best update candidate for package nagios-plugins-2.4.9-1.el7.x86_64
  - problem with installed package nagios-plugins-game-2.4.9-1.el7.x86_64
(try to add '--allowerasing' to command line to replace conflicting packages or '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)

But then the system upgrade bombed with errors about not finding some python2 packages in the preupgrade area...
That was a dead end so I discovered I had to edit  /etc/dnf/dnf.conf and remove the excludes
exclude=
#exclude=python2-leapp,snactor,leapp-upgrade-el7toel8,leapp

Then I was able to do sudo dnf remove -y python2-leapp python3-leapp and proceed to doing sudo yum install -y leapp-upgrade leapp-data-rocky
It looks like a bunch of things are still installed with el7 packages, including Docker, Nagios, and more. I'm not so sure this is a good idea, and I can't seem to get a clean upgrade to Rocky Linux 9 with this path, so I think it might be time to abandon it for now...

Instead of doing an upgrade, it's probably time to rebuild the system on a fresh Rocky Linux 9 system.
I subscribed to the Rocky Linux 9 AWS Marketplace offering in the Freezing Saddles AWS account to make this easier. I'll put the scripts in https://github.com/freezingsaddles/freezing-compose/pull/36 for this.
I'm going to adapt the

It's done! The new server is provisioned
The old server running CentOs 7 had over 1000 days of uptime, it had not been rebooted since January of 2021:
reboot   system boot  3.10.0-1160.53.1 Fri Jan 28 02:03 - 03:48 (1032+01:45)

Most of the provisioning was done in a scripted way, but there are some fixups I made by hand, this bash history gives the gist of how it went down. I had made backups by hand on the old server and selectively restored them.
freezingsaddles-bash-history.txt
To finish this off I should probably fix up the Icinga monitoring - that's severed into https://github.com/freezingsaddles/freezing-compose/issues/37


Enable max-complexity CI checks

Supports #131 , but does not fully close.
Implements a very generous cyclometric complexity limit, 5 times greater than the recommended limit.
This change makes our static analysis bot comment on any functions that are too complex, according to the cyclomatic complexity threshold set in setup.cfg. See the "files changed" tab:

Codecov Report

Merging #132 (3fd527e) into master (cf16f1d) will not change coverage.
The diff coverage is n/a.

:exclamation: Current head 3fd527e differs from pull request most recent head 731d90e. Consider uploading reports for the commit 731d90e to get more accurate results

@@           Coverage Diff           @@
##           master     #132   +/-   ##
=======================================
  Coverage   39.49%   39.49%
=======================================
  Files          50       50
  Lines       21410    21410
=======================================
  Hits         8456     8456
  Misses      12954    12954

Impacted Files
Coverage Δ

resqpy/property.py
44.23% <0.00%> (-0.03%)
:arrow_down:

resqpy/fault.py
37.56% <0.00%> (ø)

resqpy/model.py
62.02% <0.00%> (ø)

resqpy/well.py
33.25% <0.00%> (+0.01%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update cf16f1d...731d90e. Read the comment docs.

Closing for now - cannot enable complexity CI checks until existing complex functions are refactored.


Addition of Strongly connected component(Using KosaRaju's Algo)

I will include the c++ code for this problem

kindly assign this issue to me


Fixed: Dragging files over items select them

Resolved / Related Issues
Items resolved / related issues by this PR.

Related: #6768

Comments

I fixed the bug delaying the selection at the end of the timer. This way, the hovered item is selected just before it's opened.
There's still a problem with ColumnsLayout, where items have SelectedStyle even when they're not. I believe the bug affects ListViewBase since the code is the same as in GridViewBase, where the feature is working.

Validation
How did you test these changes?

[x] Built and ran the app

There's still a problem with ColumnsLayout, where items have SelectedStyle even when they're not. I believe the bug affects ListViewBase since the code is the same as in GridViewBase, where the feature is working

Doesn't DetailsLayout use ListViewBase as well?

If you hover over a folder for 1s while dragging an item, Files selects it and opens it.
If you use DetailsLayout this is not a problem, because Files loads a new pane.
With ColumnsLayout, the selected folder is opened in a new pane, but the previous one remains open. The bug happens here.

I just found out that you have already tracked this issue in #9594

https://github.com/files-community/Files/issues/9594 is a different issue


Use custom exception instead of runtime NullPointerException

NPE extends RuntimeException and the IDE does not advice catching it even if a method declares it throws NullPointerException.
Seen in BlurLayout.getDownscaledBitmapForView(...)
Use something like public class NoScreenException extends Exception {...}.

I reused the NullPointerException because there were cases where the screenView.draw(...) method would throw it, so I was handling that anyway. Thanks for the issue, I'll address this soon and add a custom exception type.

Now catching the NullPointerException thrown internally to the Android APIs, and a custom BlurKitException.


Is the useSanctumError exists?

Cant find it in official docs https://manchenkoff.gitbook.io/nuxt-auth-sanctum/usage/composables

Hi @projct1, nope, but here you can find an example of an error handler. It is not included because it may differ from project to project

Oh, sry, its custom composable breeze-nuxt/app/composables/useSanctumError.ts


The Scrollbar's ScrollController has no ScrollPosition attached

Video : https://vimeo.com/706511556
I have recorded one video in which I have implemented a color picker using the choice builder and choose the axis as horizontal then it will show internal error related to scroll controller could you please review it.
Also if you observe after selecting the right color it pop bottom sheet and show error page "no search result found" -> but although selecting color work perfectly please review it. i think we have to user willpopscope over here.
======== Exception caught by animation library =====================================================
The following assertion was thrown while notifying status listeners for AnimationController:
The Scrollbar's ScrollController has no ScrollPosition attached.
A Scrollbar cannot be painted without a ScrollPosition.
The Scrollbar attempted to use the PrimaryScrollController. This ScrollController should be associated with the ScrollView that the Scrollbar is being applied to. A ScrollView with an Axis.vertical ScrollDirection will automatically use the PrimaryScrollController if the user has not provided a ScrollController, but a ScrollDirection of Axis.horizontal will not. To use the PrimaryScrollController explicitly, set ScrollView.primary to true for the Scrollable widget.
When the exception was thrown, this was the stack:
#0      RawScrollbarState._debugCheckHasValidScrollPosition. (package:flutter/src/widgets/scrollbar.dart:1300:9)
#1      RawScrollbarState._debugCheckHasValidScrollPosition (package:flutter/src/widgets/scrollbar.dart:1325:6)
#2      RawScrollbarState._validateInteractions (package:flutter/src/widgets/scrollbar.dart:1272:14)
#3      AnimationLocalStatusListenersMixin.notifyStatusListeners (package:flutter/src/animation/listener_helpers.dart:233:19)
#4      AnimationController._checkStatusChanged (package:flutter/src/animation/animation_controller.dart:815:7)
#5      AnimationController._startSimulation (package:flutter/src/animation/animation_controller.dart:749:5)
#6      AnimationController._animateToInternal (package:flutter/src/animation/animation_controller.dart:612:12)
#7      AnimationController.reverse (package:flutter/src/animation/animation_controller.dart:494:12)
#8      RawScrollbarState._maybeStartFadeoutTimer.
(package:flutter/src/widgets/scrollbar.dart:1451:37)
(elided 11 frames from class _RawReceivePortImpl, class _Timer, dart:async, and dart:async-patch)
The AnimationController notifying status listeners was: AnimationController#6734e(◀ 1.000)
====================================================================================================
you guys are working so hard.
thank you so much from all of us
.

@amit-flutter Did you found any soluation?


Package information for PCB design

Hello,
Unless I missed it somewhere, the package information about the WLCSP used for Caravel seems to be missing.
I found https://caravel-harness.readthedocs.io/en/latest/pinout.html but this doesn't provide the bump size nor the recommended pad size and soldermask margin.
One of those two information is required in order to design PCBs using Caravel.
It is particularly important as the dimension provided are already really tight with regard to "standard" cheap PCB manufacturer capabilities. (JLCPCB, PCBWay, Aisler and probably others).
Could it be possible to provide the solder bump size of the WLCSP package ? (I would love to have the recommended pad size, but I would understand that you don't want to take responsibility with regard to PCB assembly.)
Best regards,
Julien FAUCHER

Please see:  https://github.com/efabless/caravel/blob/main/docs/source/_static/bond_plan.svg
The bump pitch is 0.5mm.  Note that the diagram is out of date (I have just corrected it and pushed the new version), and the bump diameter should be shown as 350um.
Also see https://github.com/efabless/caravel/blob/main/docs/source/_static/pcb_example_route_pattern.svg
for the recommended PCB pattern to reach all pins using a standard cheap PCB process (it is, admittedly, still rather tight, and you will need to shave the size of the pads down to less than the optimal dimension, but you should still be able to get a reliable attachment).

Hi @RTimothyEdwards ,
Thanks for your reply. On a personal note, I think it might be interesting to have this information in the table 3 of https://caravel-harness.readthedocs.io/en/latest/pinout.html (at the end of the page) to have all information in one table.
Anyway, the few documentation I found about WLCSP recommendations Analog Device AN-617 or This website mention a bump diameter of 320um for a bump pitch of 0.5mm .
While I'm not sure that 20um would have a very significant impact, it is always nice to be precise. Can you confirm that the bump diameter is 350um and not 320um ?

Also see https://github.com/efabless/caravel/blob/main/docs/source/_static/pcb_example_route_pattern.svg
for the recommended PCB pattern to reach all pins using a standard cheap PCB process (it is, admittedly, still rather tight, and you will need to shave the size of the pads down to less than the optimal dimension, but you should still be able to get a reliable attachment).

Just to be sure I am clear on my explanations, I was not asking for the escape route (that you provide and is a really nice thing to have ) but the pad size (see the previously linked  AN-617, page 5 for an example.
I was wondering if the company that performs the packaging (the packager ?) had such reference document about "their" WLCSP available.

@suzizecat :  Bump diameter depends on the capabilities of the vendor doing the bump bonding.  I wanted a bump diameter of 250um but 350um was the minimum diameter offered by Micross.
Micross does have some documentation, but they are a small vendor and do a lot of custom work, so they do not have any "fixed" process but will build to the specification of the customer.  There are some minimum/maximum limits such as redistribution layer wire width and spacing, and minimum bump diameter, but that's all.
The layout of the redistribution layer is part of the caravel chip design, but you have to go back to the original repository, which is now called caravel_mpw-one, to find the files "caravel_bump_bond.mag" and "caravel_bump_bond.gds.gz".  From the GDS file you can get the pad size and the dimensions of the redistribution metal layer.

@RTimothyEdwards

Bump diameter depends on the capabilities of the vendor doing the bump bonding. I wanted a bump diameter of 250um but 350um was the minimum diameter offered by Micross.

Therefore, it is definitely 350um, thanks !

The layout of the redistribution layer is part of the caravel chip design, but you have to go back to the original repository, which is now called caravel_mpw-one, to find the files "caravel_bump_bond.mag" and "caravel_bump_bond.gds.gz". From the GDS file you can get the pad size and the dimensions of the redistribution metal layer.

I think we might have a misunderstanding here, you seems to be talking about pads on the die to the bounding (or to the bumps) while, in this discussion, I am thinking about PCB Footprint pads. My original question being about the dimensions to take into account when designing the PCB board that will receive the caravel "component".

@suzizecat :  This is WLCSP, with the solder bumps attached directly to the front side of the chip die, so the position of the pads on the chip redistribution metal layer exactly matches the position of pads on the PCB (only flipped around one axis).


Use 7zip as the EXE wrapper instead of AutoIt

We can use https://www.7-zip.org/a/lzma1900.7z from https://www.7-zip.org/sdk.html. We need to create build.config.gspstool:
;!@Install@!UTF-8!
ExecuteFile="cmd.exe"
ExecuteParameters="/c title G Suite Password Sync diagnostics tool && cscript //nologo gspstool.vbs"
Directory="%temp%"
GUIMode="2"
Progress="no"
;!@InstallEnd@!

...and then:
"C:\Program Files\7-Zip\7z.exe" a gspstool.7z gspstool.vbs
copy /b 7zSD.sfx  + build.config.gspstool + gspstool.7z test-exe\gspstool.exe

Or just use AutoHotKey.

Fixed in 885078a, using the pure VBS method.


Send password to backend when signing up

We should be sending the password/password_confirmation fields to the users API but we're currently only sending email and zip.
See:
https://github.com/OperationCode/operationcode_frontend/blob/master/src/scenes/home/signup/signup.js#L54

This should be fixed now correct?

Yea - this was fixed in #78. Closing out.


Add Kotlin support

We should add Kotlin support, so this tool can remove unused dependencies from Kotlin targets. This would mean:

Creating a command-line tool which

parses Kotlin files and resolves references
produces a JSON file containing imported and exported symbols

Integrate this tool into the unused-deps CLI

run the tool mentioned in the previous bullet point
include Kotlin targets in the bazel dependency graph query

Consider using:

kotlinx.ast
Kotlin's compiler library (or kotlin-compiler-embeddable)

Does kotlin_* targets include kt_* from https://github.com/bazelbuild/rules_kotlin

Does kotlin_* targets include kt_* from https://github.com/bazelbuild/rules_kotlin

Updated it to be more general. (We don't use Kotlin at Stripe so I don't know the details of how Kotlin is built with Bazel :)


[Issue report]

Describe the bug or issue
A clear and concise description of what the bug is.
Describe your setup

Your Raspberry Pi model and spec variant, e.g. 4B with 2GB RAM
Your Chromium OS for Raspberry Pi release version, e.g. Chromium OS r77 r3
Your hardware configuration and setup, e.g. how you have wired the Pi board with any other peripheral connected to it

To Reproduce
Steps to reproduce the behavior:

Go to '...'
Click on '....'
Scroll down to '....'
See error

Expected behaviour
A clear and concise description of what you expected to happen.
Screenshots and/or hardware setup photos
If applicable, add screenshots to help explain your problem. If your problem is hardware related, it's much easier to include a photo of how your setup looks like.
Additional context
Add any other context about the problem here.

Don't do this again, it's spam.

Don't do this again, it's spam.


Cannot get lane shared values for ios bundleid

Question Checklist

[x] Updated fastlane to the latest version
[x] I read the Contribution Guidelines
[x] I read docs.fastlane.tools
[x] I searched for existing GitHub issues

Question Subject

Lane SharedValues
Question Description
In short, I am trying to get the following to work
puts Actions.lane_context[SharedValues::SIGH_PROFILE_PATH]
However that prints nothing.
My Match is configured and works fine otherwise. Here is a snippet of Fastfile
   match(type: "development", readonly: true)
    puts Actions.lane_context[SharedValues::SIGH_PROFILE_PATH]
    puts Actions.lane_context[SharedValues::MATCH_PROVISIONING_PROFILE_MAPPING]
    puts ENV["SIGH_PROFILE_PATH"]
    puts ENV["sigh_com.blah.blah_development_profile-name"]

And the output
INFO [2019-02-01 17:08:56.61]: Setting Provisioning Profile type to 'development'
Successfully loaded Appfile at path '/Users/blah/Documents/Xcode Projects/blah-fastlane/fastlane/Appfile'

app_identifier: com.blah.blah
 apple_id<EMAIL_ADDRESS> itc_team_id: XXXX
 team_id: ZZZZZ

INFO [2019-02-01 17:08:56.62]:
INFO [2019-02-01 17:08:56.62]: {"com.blah.blah"=>"match Development com.blah.blah"}
INFO [2019-02-01 17:08:56.62]:
INFO [2019-02-01 17:08:56.62]: match Development com.blah.blah

So, as you can see, Match successfully does its thing. What I need is the PROFILE_PATH. I I need the profile_path for the following:
automatic_code_signing(       use_automatic_signing: false,       team_id: "ZZZZZ",       code_sign_identity: "iPhone Developer",       profile_name: profile_path_here     )
I can get a mapping string. Or I can get profile path if I supply the bundle id in the environment variable ENV["sigh_com.blah.blah_development_profile-name"], but I don't want to hardcode the bundle ID anywhere.
Other actions have no problem figuring out the bundle ID, but I can't get anything to actually output the bundle ID.

Yes, I have read code signing guide, and I am using Match

Does match actually fill SIGH_PROFILE_PATH?

That doesn't meant it uses it like it would be used when using it directly in fastlane lane. It just means that parts of its code are used to produce the certificates for match. It could very well be that the "write info into environment variables" is only implemented in a part of sigh that match doesn't execute.
Looking through the codebase to understand where SIGH_PROFILE_PATH is set should be simple, and if you limit a search for sigh to the match folder it should be possible to find out where and how sigh is called as well. This should give some context.

So I took a look:

sigh is also known as get_provisioning_profile
The action get_provisioning_profile does this: https://github.com/fastlane/fastlane/blob/4a8cf2a81cc71a556cf20183a5071294921d6731/fastlane/lib/fastlane/actions/get_provisioning_profile.rb#L17-L30
match is also known as sync_code_signing
That one does not set the correct SIGH env var in the action:
https://github.com/fastlane/fastlane/blob/0ee1f22e3c8c0c69f7fa242c8a57b19080cccded/fastlane/lib/fastlane/actions/sync_code_signing.rb#L50
https://github.com/fastlane/fastlane/blob/0ee1f22e3c8c0c69f7fa242c8a57b19080cccded/fastlane/lib/fastlane/actions/sync_code_signing.rb#L26
Sigh is used by match here: https://github.com/fastlane/fastlane/blob/4a8cf2a81cc71a556cf20183a5071294921d6731/match/lib/match/generator.rb#L73-L77

So to get what you want and expect to work, we would either set the sigh env vars in     * Sigh::Manager.start already, or duplicate part of the get_provisioning_profile action code in the sync_code_signing action code.
Does this make sense?

Does this make sense?

Yes I understand.
Could you do that? It's rather confusing cause some of sigh variables are available (:SIGH_PROFILE_TYPE) and some aren't, and when documentation says "uses sigh and cert in the background", my first (albeit wrong) assumption is that it's an advanced wrapper around the two
This would make so many things so much either
Thank you

Could you maybe take a shot at implementing this? I can't really invest much time here right now.
Simplest way to build this would probably be to extract the Actions.lane_context management of sigh into a method, then make sure that method is also called in match.

Could you maybe take a shot at implementing this? I can't really invest much time here right now.
Simplest way to build this would probably be to extract the Actions.lane_context management of sigh into a method, then make sure that method is also called in match.

I've been using Fastlane for 2 weeks now, Ruby for 1.5 weeks :relaxed: , I wouldn't even know where to start. But I appreciate all the work you guys put into the free tool. Saves me tons of time.

So you didn't learn a new thing for a week now - time to start ;)
Of course it's fine if you don't want to jump in, please allow us a bit of time to take care of this. I added the you can do this tag to the issue, maybe someone else notices and creates a PR.

Hey guys 👋 I will jump on it and see what I can do, although I am not very familiar with match and sigh code, so it might take a bit 🙂 🙇

Before I start implementing the changes, gonna ask a few follow-up questions 😊
1. Are there any conventions / rules when we should set the values for shared hash?
According to Lane Context documentation:

The different actions can communicate with each other using a shared hash.

Wondering whether match should expose the same shared hash values that sigh does 🤔 The one way of looking at it is if one lane executes another under the hood, it should expose the same shared hash values. WDYT?
2. Testing changes in match and sigh lanes
Do you know what's the best way to test the changes in those two lanes? Is it adding new unit tests? Or it's just running and debugging, because unit testing might be quite hard in those cases?
3. Implementation details
I'd vote for the solution where we would put all Actions.lane_context[SharedValues::...] value settings to Sigh::Manager.start static method 👍 Although we'd need to investigate how many different components are calling Sigh::Manager.start as well, and what impact it has.
WDYT? 🙇
cc: @janpio , @hydraSlav

Before I start implementing the changes, gonna ask a few follow-up questions 😊

My 2 cents, although I am not a contributor or even an expert:

If people use sigh, they are probably not using match, and vice-versa, so IMHO there shouldn't be conflicts with match setting the same variables names.
Since sigh and match are separate actions, if someone really is using both, they can save the variables after sigh before they run match. The other way around is not applicable as sigh would just overwrite whatever match may have set.
Maybe have an option to pass to match indicating the prefix for variables, defaults to MATCH_ to avoid breaking anything existing. But then I can specify prefix SIGH_ and then other actions would integrate with match just as they do with sigh.

Even if all match lane variables are prefixed with MATCH_, I can utilize them in other actions. It wouldn't be seamless as I would have to pass lane variable as parameter to other actions, but at least it would be doable.
Thank you

The one way of looking at it is if one lane executes another under the hood, it should expose the same shared hash values. WDYT?

Yep, that is a valid justification. match also already does this, but only partially.

Do you know what's the best way to test the changes in those two lanes? Is it adding new unit tests? Or it's just running and debugging, because unit testing might be quite hard in those cases?

Have a look at the unit tests that exist - if you can put new stuff in there, great. In this specific case I think that those ENV vars and shared values are probably not tested for, so the best way to test for them will be to create a lane that reproduces the problem and checks if the value is available after your changes.

I'd vote for the solution where we would put all Actions.lane_context[SharedValues::...] value settings to Sigh::Manager.start static method 👍 Although we'd need to investigate how many different components are calling Sigh::Manager.start as well, and what impact it has.

Yep, sounds good. If it's not super easy, feel free to copy paste the "set the value" lines over from one to another. No reason to invest to much time here.
So just go ahead @mollyIV! 🚀
I agree with your first and second point @hydraSlav, but the third suggesting an option is not necessary here. Keep it simple.

@janpio @hydraSlav
When I was implementing the changes, I found new findings. I think what we are trying to do in this ticket is not doable 😬
We'd like to set Actions.lane_context[SharedValues::SIGH_PROFILE_PATH] value after calling a match(type: "development", readonly: true). SIGH_PROFILE_PATH variable represents a path to the downloaded provisioning profiles, right? If so, let's have a quick look at the documentation of sigh and match very quickly:

match is the implementation of the https://codesigning.guide concept. match creates all required certificates & provisioning profiles and stores them in a separate git repository.

sigh can create, renew, download and repair provisioning profiles (with one command).

The difference here is that match stores the profiles on a remote location like Git or Google Cloud and sigh stores the profiles locally. That's why we can provide a provisioning profile path after calling a sigh, but not for match.
sync_code_signing.rb calls Match::Runner.new.run(params) under the hood. The runner downloads the profiles and certificates to temp catalog, does decryption, installs them and removes them from the temp catalog by calling storage.clear_changes.
However I'd love to hear other thoughts on that with more match and sigh knowledge ☝

Hm, that is very much possible @mollyIV - if match only leaves it in the keychain, it will indeed be difficult.
Maybe it is time to take a step back and think about how to solve @hydraSlav 's original problem another way then:

I need the profile_path for the following:
automatic_code_signing( use_automatic_signing: false, team_id: "ZZZZZ", code_sign_identity: "iPhone Developer", profile_name: profile_path_here )

The difference here is that match stores the profiles on a remote location like Git or Google Cloud and sigh stores the profiles locally. That's why we can provide a provisioning profile path after calling a sigh, but not for match.

@janpio @mollyIV
match does store profiles (and certs) in a remote repo, however it also installs them locally into the default location same as what Xcode uses, i.e /Users/username/Library/MobileDevice/Provisioning Profiles/
This below is from running match(type: "adhoc")
13:05:54 INFO [2019-02-15 13:05:54.86]: Installing provisioning profile...
13:05:55 WARN [2019-02-15 13:05:55.32]: Setting environment variable 'sigh_com.blah_adhoc' to '97c39a3e-ZZZ-111-222'
13:05:55 WARN [2019-02-15 13:05:55.32]: Setting environment variable 'sigh_com.blah_adhoc_team-id' to 'ZZZZZ11111'
13:05:55 WARN [2019-02-15 13:05:55.32]: Setting environment variable 'sigh_com.blah_adhoc_profile-name' to 'match AdHoc com.blah'
13:05:55 WARN [2019-02-15 13:05:55.32]: Setting environment variable 'sigh_com.blah_adhoc_profile-path' to '/Users/username/Library/MobileDevice/Provisioning Profiles/97c39a3e-ZZZ-111-222.mobileprovision'

I had another look at the code. Please correct me if I am wrong, but the path match sets as environment variable is where it installed the provisioning profiles and sight sets the path (lane context SIGH_PROFILE_PATH) to downloaded provisioning profiles. The location for both is different, isn't it? 🤔

Well, does that really make a difference? Both are paths to the provisioning file in question. And @hydraSlav needs access to the file to be able to use it with another action.
But still, doesn't match also "download" the profile by decrypting it from git?

It does, however just after installing them, it clears the storage by calling
https://github.com/fastlane/fastlane/blob/69c04c5093175ca646e3b91c42107f239bfb5cd9/match/lib/match/runner.rb#L123
Maybe @hydraSlav could simply use an environment variable in that case? According to the code:
https://github.com/fastlane/fastlane/blob/69c04c5093175ca646e3b91c42107f239bfb5cd9/match/lib/match/runner.rb#L290-L293
https://github.com/fastlane/fastlane/blob/69c04c5093175ca646e3b91c42107f239bfb5cd9/match/lib/match/utils.rb#L31
The convention name is sigh_applicationId_profile-path.

@hydraSlav Did you have time to look into the ENV variable that @mollyIV found?

@hydraSlav Did you have time to look into the ENV variable that @mollyIV found?

@janpio @mollyIV
This is pretty much the amount of code I am forced to use:
match_type = Actions.lane_context[SharedValues::SIGH_PROFILE_TYPE]
if match_type.to_s == "ad-hoc"
    match_type = "adhoc"
  end
  if match_type.to_s == "app-store"
    match_type = "appstore"
  end
  sigh_profile_key = "sigh_"+CredentialsManager::AppfileConfig.try_fetch_value(:app_identifier)+"_#{match_type}"
  return File.join(FastlaneCore::ProvisioningProfile.profiles_path, "#{ENV[sigh_profile_key]}.mobileprovision")

And that's without any nil checks yet.
Thanks for looking into this guys, I get that this isn't a priority

Either I don't get your attitude or I misunderstood your tone.
In the timeframe of ~2 weeks two different people no only looked at your problem, but tried to understand and solve it. If I interpret your last reply correctly, what @mollyIV uncovered actually does work right now and solves your problem.
If this is the case, we now know what could/should be implemented to streamline usecases similar to yours.

Either I don't get your attitude or I misunderstood your tone.

I don't know what I said wrong, but if it offended anyone, I apologize.
I used molly's solution, thanked both of you, and even acknowledged that I understand you spent time on this despite it not being a high priority (so, double gratitude).
Please tell me what part of my reply was offensive, and I will edit it out.
Sorry and thank you.

Then I definitely misunderstood your tone - happens sometimes after reading >50 issues from sometimes angry people from the internet :) Sorry 🙇♀
Let's keep this open, maybe @mollyIV (can think of and) wants to implement a better solution.
This issue here actually triggered a bigger investigation at https://github.com/fastlane/fastlane/issues/14255 into how ENV vars and lane_context are intended to be used. Murky area as we found out, so we invest a bit of time to maybe be able to clean that up.

Then I definitely misunderstood your tone

Internet and non-verbal communication... am I right? :smiley:

This issue here actually triggered a bigger investigation at #14255 into how ENV vars and lane_context are intended to be used.

That's a great question and something that definitely got confusing for me while studying the documentation

I am glad proposed solution did work 💪 at the same time I agree - it does not look pretty and would be great to improve it.
One solution might be adding ENV variable ENV["MATCH_INSTALLED_PROFILE_PATH"] to the match lane. It is what we basically do in runner.rb (ENV it is named differently though):
https://github.com/fastlane/fastlane/blob/c3e1d4e0a956c655da1dc037f8c34d120707aef0/match/lib/match/runner.rb#L298-L301
The question is if we should add the new ENV variable? I believe it will be clear once we figure out https://github.com/fastlane/fastlane/issues/14255 issue 👍
WDYT guys?

Isn't the problem here that match could install x profiles?

You are right @janpio , that's why we create an ENV name dynamically ✨ So I guess maybe we could expose a different types: ENV["MATCH_INSTALLED_PROFILE_PATH_DEVELOPMENT"], ENV["MATCH_INSTALLED_PROFILE_PATH_ADHOC"], etc.
Since our workaround solution did the job, I'd suggest to continue the discussion and ENV variables clarification in #14255 to have a one source of truth 🙏 🙏

Nah, here it's about the specific use case of match, so we are good first hashing the details here I think.
I meant that match can actually download and install the certificates of several apps, or does it limit its activity to the current app id?

@janpio according to the documentation match supports multiple teams:

Use one git branch per team. match also supports storing certificates of multiple teams in one repo, by using separate git branches.

app_identifier parameter allows you to fetch code signing for a given application identifier:
match(type: "adhoc",
      app_identifier: "tools.fastlane.app")

so it seems by using match we can download and install the certificates of several apps.

Meaning what exactly?