Missing Follow.@id check when processing Undo.Follow

Technically this is a bit of a protocol violation in Bridgy Fed. It's supposed to persist the @id of the [most recent, at least] Follow and then check against that when Undoing it. However, Mastodon seemingly also doesn't do this properly when the object is inlined.

Originally posted by @Tamschi in https://github.com/snarfed/bridgy-fed/issues/1626#issuecomment-2546351816
Mastodon correctly uses unique Follow-IDs and includes them with the Undo, so Bridgy Fed can and should check for those:
{
  "@context":"https://www.w3.org/ns/activitystreams",
  "id":"https://activitypub.academy/40c15d58-2d4b-4842-9342-7fb5e231831d",
  "type":"Follow",
  "actor":"https://activitypub.academy/users/aubotus_grahess",
  "object":"https://mastodon.gamedev.place/users/Tamschi"
}

{
  "@context":"https://www.w3.org/ns/activitystreams",
  "id":"https://activitypub.academy/users/aubotus_grahess#follows/4360/undo",
  "type":"Undo",
  "actor":"https://activitypub.academy/users/aubotus_grahess",
  "object":{
    "id":"https://activitypub.academy/40c15d58-2d4b-4842-9342-7fb5e231831d",
    "type":"Follow",
    "actor":"https://activitypub.academy/users/aubotus_grahess",
    "object":"https://mastodon.gamedev.place/users/Tamschi"
  }
}

{
  "@context":"https://www.w3.org/ns/activitystreams",
  "id":"https://activitypub.academy/16dd2fcf-2851-422b-92f4-5c209f01bde3",
  "type":"Follow",
  "actor":"https://activitypub.academy/users/aubotus_grahess",
  "object":"https://mastodon.gamedev.place/users/Tamschi"
}

{
  "@context":"https://www.w3.org/ns/activitystreams",
  "id":"https://activitypub.academy/users/aubotus_grahess#follows/4361/undo",
  "type":"Undo",
  "actor":"https://activitypub.academy/users/aubotus_grahess",
  "object":{
    "id":"https://activitypub.academy/16dd2fcf-2851-422b-92f4-5c209f01bde3",
    "type":"Follow",
    "actor":"https://activitypub.academy/users/aubotus_grahess",
    "object":"https://mastodon.gamedev.place/users/Tamschi"
  }
}

If it doesn't, this can cause follower set desyncs of local users as in #1626, since neither Mastodon's outbox nor Bridgy Fed's inbox processing are reliably ordered at least per remote instance. (Both would have to be reliably ordered to skip this check.)

I think a good solution here would be to persist the most recent unwrapped Follow's id. (When another arrives, overwrite.)
Then, when an Undo.Follow arrives, only process it if the Undo.Follow.id matches the persisted one.
(I haven't checked if this applies to other activities, but I would assume anything that flips a binary state or relation may be affected to an extent.)

Great point! This only works for Undos of activities with ids, not transient activities without them, but most activities do have ids. And we already store the most recent Follow per follower, so this should be straightforward. Thanks for filing.


Unreliability of some measures: FBER, SNRd, QI2 (mainly)

These measure have in common the use of a background air mask. Investigate why this mask might be varying or why the masking is not consistent.

Supporting the theory of the unreliability of the air mask of the anatomical workflow, this problem does not replicate in the calculation of FBER and SNR on the functional workflow:
https://1563-49015296-gh.circle-artifacts.com/0/home/ubuntu/scratch/out/reports/func_group.html
https://1564-49015296-gh.circle-artifacts.com/0/home/ubuntu/scratch/out/reports/func_group.html
https://1565-49015296-gh.circle-artifacts.com/0/home/ubuntu/scratch/out/reports/func_group.html

I run MRIQC on 4 copies of the same T1w image. The 4 air masks are slightly different. Next step will be checking the point where the processing is not deterministic anymore.

Got it: https://github.com/poldracklab/mriqc/blob/master/mriqc/workflows/anatomical.py#L398


fragmenta: command not found

I have go 1.8.3 in Ubuntu 16.04 and i ran 2 command below :-
go get -u github.com/fragmenta/fragmenta
then
fragmenta new cms blog
and i got the error fragmenta: command not found

Sounds like the fragmenta command is not in your path (either didn't build or your gopath/bin is not in your path). If you do echo $PATH what do you see?

I just echo $PATH and found golang "bin" directory is not in my path list. I just added them and it works fine now.
Thanks

Hi i'm having same issue but i have go in $PATH
IGHQ-ST05:~ rafael$ go version go version go1.9.2 darwin/amd64 IGHQ-ST05:~ rafael$ go evn go: unknown subcommand "evn" Run 'go help' for usage. IGHQ-ST05:~ rafael$ go env GOARCH="amd64" GOBIN="" GOEXE="" GOHOSTARCH="amd64" GOHOSTOS="darwin" GOOS="darwin" GOPATH="/Users/rafael/Documents/go" GORACE="" GOROOT="/usr/local/go" GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64" GCCGO="gccgo" CC="clang" GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/5h/tb6lmfq92hl4jyf1gkg1gg54p39ctf/T/go-build282141787=/tmp/go-build -gno-record-gcc-switches -fno-common" CXX="clang++" CGO_ENABLED="1" CGO_CFLAGS="-g -O2" CGO_CPPFLAGS="" CGO_CXXFLAGS="-g -O2" CGO_FFLAGS="-g -O2" CGO_LDFLAGS="-g -O2" PKG_CONFIG="pkg-config"


Login to quay should only work if commit is in master

Description
GitHub Action environment variables gets passed to PR only if they
starts from a branch that is local, so fork does not get a QUAY PASSOWRD
and USERNAME, this is to avoid security issue.
We should push images to Quay only if the commit is in master.

This change is included #47 , if we can that merged, I will avoid a rebase :)


Timelock: Caution message is wrong

Caution:
Line above the illustration: Once the timelock is set, funds cannot be accessed until the specified time period has elapsed. In case of an urgent need for funds, there is no way to bypass the timelock.
Line below the illustration: Be mindful of the timelock duration. Setting an excessively long lockout period could lead to unforeseen difficulties in accessing funds.

Error Modal Updated.
File Link:
https://www.figma.com/design/m5eMFTKD391AiJAXaEzgxB/Bitcoin-Keeper?node-id=1213-1819&t=buf0s8aYaZQKNuQv-1
S.s:

Closing as outdated, we will reopen as needed when resuming work on time locked vault


New version: pnpm.pnpm version 7.26.2

pnpm.pnpm 7.26.2
Previous version: 7.26.1
Microsoft Reviewers: Open in CodeFlow

Note: Winget Releaser is now set up in pnpm.

https://github.com/pnpm/pnpm/pull/5989


Setup project sponsorship to support regular cloud deployment testing

Automated testing in clouds will ultimately cost money. This project will have optional sponsorship to help pay for automation and development.

https://patreon.com/ourchitecture


this error ".vscode/defold.sh: line 2: $'\r': command not found" occured when i run the game

but the game is running fine

Interesting. It's just a line break character. It can't be a script error by definition, some peculiarity of Windows + bash as always.
Take a look at https://stackoverflow.com/questions/11616835/r-command-not-found-bashrc-bash-profile, maybe there's something useful there.

great, it's solved. thanks


New Ruuvi Watch version, redesigned and refactored

A bit of re-design and refactor before making things configurable.
Removed flicker. Added image to docs and fixed formatting.

Thanks!


USG cpu missing

For some reason my cpu reporting has been at 0% since like 10/7
Any hints where I can test this endpoint and see whats going on?
All other metrics seem to be ok
I am on beta channel. and update often so could have been a ui change? can anyone confirm same?

is this still a problem on 2.4.6+ ?

I too have a UDM Pro, so going to close this 👍


Multiple discard reader tags in a row broken

When using #_#_ to comment out  multiple forms in a row, one of the forms disappear.
Repro:
(zp/zprint-file-str "{:foo :bar #_#_:baz :quux}" nil {}) ;=> "{:foo :bar, #_#_:baz}"

(zp/zprint-file-str "[1 #_#_#_2 3 4]" nil {}) ;=> "[1 #_#_#_2]"

Wow, it was only about two weeks ago that I even found out that was legit Clojure syntax!
I can reproduce the problem, and while at first I thought it might be something in the parser library that I'm using, so far it looks like it is doing something reasonable with the multiple uneval tokens.
I'm thinking that I will be able to work with what it is giving me and do something reasonable with the multiple uneval tokens.  But it isn't going to be a walk in the park, so you might want to hold off on using this syntax with zprint for a bit.  I'm going to work on this next, but it will be next week at the earliest before I have much time to spend on it.
Thanks for noticing this issue!

Fixed in 0.4.10.


Add support for nan in RESP3 double

Fixes #9

This was conceptually approved in a core-team meeting.
@filipecosta90 can you please extend it to mention negative NaN as well?

This was conceptually approved in a core-team meeting. @filipecosta90 can you please extend it to mention negative NaN as well?

sure. doing it right now :)

@oranagra done. please confirm all is OK

Negative "NaN" (not a number)? what's the difference between "+NaN" and "-NaN"?

don't know, but evidently (see https://github.com/redis/redis/pull/11482) it has a sign..
wikipedia says so too.. didn't bother to look much into it.

@leibale and @oranagra according to this answer and the IEEE IEEE:

Conversion of a quiet NaN in a supported format to an external character sequence shall produce a language-defined one of “nan” or a sequence that is equivalent except for case (e.g., “NaN”), with an optional preceding sign. (This standard does not interpret the sign of a NaN.)

meaning that NaN can be represented by any pattern of and sometimes printed.

A signalling NaN is represented by any bit pattern
between 7FF0000000000001 and 7FF7FFFFFFFFFFFF or
between FFF0000000000001 and FFF7FFFFFFFFFFFF

TLDR -nanand nan should be valid and equivalent and interpreted the same by any RESP client.  agree?

agree.. so the code in both PRs (test and docs) is good to be merged, right?


chore: update dependencies

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

-8 of 14 (42.86%)  changed or added relevant lines in 3 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-1.8%) to 90.748%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/nostr/nostr.module.ts
0
1
0.0%

src/nostr/services/nostr-relay-logger.service.ts
4
11
36.36%

Totals

Change from base Build<PHONE_NUMBER>:
-1.8%

Covered Lines:
475

Relevant Lines:
533

💛  - Coveralls


feat: remove theme click for link,iconButton

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.006%) to 84.046%

Totals

Change from base Build<PHONE_NUMBER>:
0.006%

Covered Lines:
9847

Relevant Lines:
10803

💛  - Coveralls

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 84.04%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
9847

Relevant Lines:
10803

💛  - Coveralls


Tally Marks

The documentation should probably mention that many fonts don't support this (e.g. Fonts preinstalled on macOS and Windows). Symbola supports tally marks (and is pre-installed on Fedora afaik)

Added in 3c160936f66d8998393944053e3884f6aa9447d9


add YUI docs to hasMany

Solves https://github.com/samselikoff/ember-cli-mirage/issues/773

Thank you!


[bug 1247219] Minor ui fixes.

@comzeradd really quick r?

Coverage remained the same at 92.437% when pulling 4d281120e9d5a7b49ab6c6183fa97c2df8cd1887 on akatsoulas:minor-ui-fixes into 0977c048311509e343bd7fb419a7201ea5c46510 on mozilla:master.

r+ regarding code
@comzeradd  can you r? the UI change?

Coverage remained the same at 92.437% when pulling 7950c0a731ab1b85f694be64f2fcb433c7c2b0b2 on akatsoulas:minor-ui-fixes into 0977c048311509e343bd7fb419a7201ea5c46510 on mozilla:master.


Added public location to config

This is for some other stuff which I am doing on your plugin Please accept.

Added it in latest Commit https://github.com/MangoRageBot/MangoBot/commit/d94b2f7e3cfd290faa06948c2bd63d123da6833d


Training Seq2Seq

Hello, I want to replicate the results of Table 2 on your paper - in particular the performances of the Seq2Seq and BUTLER agents. After I have trained the two agents, what scripts should I run to replicate your results?
Thanks in advance!

@namsophi, checkout this evaluation guide. You just need to modify load_from_tag to reflect checkpoint paths for Seq2Seq and BUTLER.

Hey sorry for the late comment and thank you for your answer! I've tried following the evaluation guide, but for some reason everything comes back as 0 and the average steps taken is 50.0 which I believe indicates autofail. Do you have any ideas as to why this may be happening?

@namsophi, can you share the exact commands you ran for training and evaluation? Maybe also set visdom: True in the config and post the training/evaluation curves? See this guide. You should get something like this:

Hey @MohitShridhar, here's my screenshot and the command I ran currently is python scripts/train_seq2seq.py configs/base_config.yaml as indicated in the evaluation guide

@namsophi, for seq2seq, did you collect a dataset first? Like this:
# collect dataset for offline training (not needed if python scripts/alfworld-download --extra)
$ python scripts/collect_seq2seq_dataset.py config/base_config.yaml

# train seq2seq model
$ python scripts/train_seq2seq.py config/base_config.yaml

You can alternatively python scripts/alfworld-download --extra, but you might have to double check that the paths inside the config files are correct.

@MohitShridhar I originally ran with the --extra tag to collect the dataset, but just in case I tried again by running   python scripts/collect_seq2seq_dataset.py config/base_config.yaml and then python scripts/train_seq2seq.py config/base_config.yaml, but I still got the same graphs

@xingdi-eric-yuan, any idea what could be happening here?

Hi @namsophi ! Please help me understand this.
Did you train the agent with train_seq2seq.py and used run_eval.py for evaluation? From above conversation it seems you were using train_seq2seq.py also for eval? In that case, when the experiment tag is unchanged, the checkpoint file will be covered by the second time you run the training script.

Hey @xingdi-eric-yuan! I ran run_eval after, but the json files (ex. seq2seq_eval_run_001_alfredtwenv_tw_valid_seen) show     ```"average_goal_condition_points": 0.0,
"average_points": 0.0,
"average_steps": 50.0,

I'm wondering if I'm pointing to the wrong checkpoint for load_from_tag in eval_config, should it be train_seq2seq_id or pretrained_checkpoint_id?

@namsophi  HERE we load the checkpoint file, I suspect what happened to you is that the script failed to load the checkpoint and thus used a randomly initialized model.

@xingdi-eric-yuan yep I know of that point, but I wasn't sure which checkpoint should be loaded to run the evaluation with the trained agent

@namsophi It should be the file which name corresponds to the agent.experiment_tag when you train the model.
The pretrained_checkpoint_id HERE is just a placeholder. Sorry for the confusion.

dataset:
  data_path: '$ALFWORLD_DATA/json_2.1.1/train'
  eval_id_data_path: '$ALFWORLD_DATA/json_2.1.1/valid_seen'    # null/None to disable
  eval_ood_data_path: '$ALFWORLD_DATA/json_2.1.1/valid_unseen' # null/None to disable
  num_train_games: -1                                       # max training games (<=0 indicates full dataset)
  num_eval_games: -1                                        # max evaluation games (<=0 indicates full dataset)

logic:
  domain: '$ALFWORLD_DATA/logic/alfred.pddl'                # PDDL domain file that defines the world dynamics
  grammar: '$ALFWORLD_DATA/logic/alfred.twl2'               # Grammar file that defines the text feedbacks

env:
  type: 'AlfredTWEnv'                                       # 'AlfredTWEnv' or 'AlfredThorEnv' or 'AlfredHybrid'
  regen_game_files: False                                   # check if game is solvable by expert and save to game.tw-pddl file
  domain_randomization: False                               # shuffle Textworld print order and object id nums
  task_types: [1, 2, 3, 4, 5, 6]                            # task-type ids: 1 - Pick & Place, 2 - Examine in Light, 3 - Clean & Place, 4 - Heat & Place, 5 - Cool & Place, 6 - Pick Two & Place
  expert_timeout_steps: 150                                 # max steps before timeout for expert to solve the task
  expert_type: "handcoded"                                  # 'handcoded' or 'downward'. Note: the downward planner is very slow for real-time use
  goal_desc_human_anns_prob: 0.0                            # prob of using human-annotated goal language instead of templated goals (1.0 indicates all human annotations from ALFRED)

  hybrid:
    start_eps: 100000                                       # starting episode of hybrid training, tw-only training upto this point
    thor_prob: 0.5                                          # prob of AlfredThorEnv during hybrid training
    eval_mode: "tw"                                         # 'tw' or 'thor' - env used for evaluation during hybrid training

  thor:
    screen_width: 300                                       # width of THOR window
    screen_height: 300                                      # height of THOR window
    smooth_nav: False                                       # smooth rotations, looks, and translations during navigation (very slow)
    save_frames_to_disk: False                              # save frame PNGs to disk (useful for making videos)
    save_frames_path: './videos/'                           # path to save frame PNGs

controller:
  type: 'oracle'                                            # 'oracle' or 'oracle_astar' or 'mrcnn' or 'mrcnn_astar' (aka BUTLER)
  debug: False
  load_receps: False                                        # load receptacle locations from precomputed dict (if available)

mask_rcnn:
  pretrained_model_path: '$ALFWORLD_DATA/detectors/mrcnn.pth'

general:
  random_seed: 42
  use_cuda: True                                            # disable this when running on machine without cuda
  visdom: False                                             # plot training/eval curves, run with visdom server
  task: 'alfred'
  training_method: 'dagger'                                 # 'dqn' or 'dagger'
  save_path: '$ALFWORLD_DATA/agents/pretrained_checkpoints'   # path to save pytorch models
  observation_pool_capacity: 3                              # k-size queue, 0 indicates no observation
  hide_init_receptacles: False                              # remove initial observation containing navigable receptacles

  training:
    batch_size: 10
    max_episode: 50000
    smoothing_eps: 0.1
    optimizer:
      learning_rate: 0.001
      clip_grad_norm: 5

  evaluate:
    run_eval: True
    batch_size: 3                                           # number of parallel eval threads
    repeats: 1                                              # number of times to loop over eval games (we used 3 in paper experiments)
    controllers:                                            # different controllers to evaluate with
      - 'oracle'
      - 'mrcnn_astar'
    envs:                                                   # different environments to evaluate in
      - 'AlfredTWEnv'
      # - 'AlfredThorEnv'
    env:
      type:
       'AlfredThorEnv'
    eval_paths:                                             # different splits to evaluate on
      - '$ALFWORLD_DATA/json_2.1.1/valid_seen'
      - '$ALFWORLD_DATA/json_2.1.1/valid_unseen'
    eval_experiment_tag: "seq2seq_eval_run_001"                     # save results json with this prefix

  checkpoint:
    report_frequency: 10                                    # report every N episode
    experiment_tag: 'test'                                  # name of experiment
    load_pretrained: True                                   # during test, enable this so that the agent load your pretrained model
    load_from_tag: 'seq2seq/train_seq2seq_id' # name of pre-trained model to load in save_path

  model:
    encoder_layers: 1
    decoder_layers: 1
    encoder_conv_num: 5
    block_hidden_dim: 64
    n_heads: 1
    dropout: 0.1
    block_dropout: 0.1
    recurrent: True

rl:
  action_space: "admissible"                                # 'admissible' (candidates from text engine) or 'generation' (seq2seq-style generation) or 'beam_search_choice' or 'exhaustive' (not working)
  max_target_length: 20                                     # max token length for seq2seq generation
  beam_width: 10                                            # 1 means greedy
  generate_top_k: 3

  training:
    max_nb_steps_per_episode: 50                            # terminate after this many steps
    learn_start_from_this_episode: 0                        # delay updates until this epsiode
    target_net_update_frequency: 500                        # sync target net with online net per this many epochs

  replay:
    accumulate_reward_from_final: True
    count_reward_lambda: 0.0                                # 0 to disable
    novel_object_reward_lambda: 0.0                         # 0 to disable
    discount_gamma_game_reward: 0.9
    discount_gamma_count_reward: 0.5
    discount_gamma_novel_object_reward: 0.5
    replay_memory_capacity: 500000                          # adjust this depending on your RAM size
    replay_memory_priority_fraction: 0.5
    update_per_k_game_steps: 5
    replay_batch_size: 64
    multi_step: 3
    replay_sample_history_length: 4
    replay_sample_update_from: 2

  epsilon_greedy:
    noisy_net: False                                        # if this is true, then epsilon greedy is disabled
    epsilon_anneal_episodes: 1000                           # -1 if not annealing
    epsilon_anneal_from: 0.3
    epsilon_anneal_to: 0.1

dagger:
  action_space: "generation"                                # 'admissible' (candidates from text engine) or 'generation' (seq2seq-style generation) or 'exhaustive' (not working)
  max_target_length: 20                                     # max token length for seq2seq generation
  beam_width: 10                                            # 1 means greedy
  generate_top_k: 5
  unstick_by_beam_search: True                              # use beam-search for failed actions, set True during evaluation

  training:
    max_nb_steps_per_episode: 50                            # terminate after this many steps

  fraction_assist:
    fraction_assist_anneal_episodes: 50000
    fraction_assist_anneal_from: 1.0
    fraction_assist_anneal_to: 0.01

  fraction_random:
    fraction_random_anneal_episodes: 0
    fraction_random_anneal_from: 0.0
    fraction_random_anneal_to: 0.0

  replay:
    replay_memory_capacity: 500000
    update_per_k_game_steps: 5
    replay_batch_size: 64
    replay_sample_history_length: 4
    replay_sample_update_from: 2

vision_dagger:
  model_type: "resnet"                                      # 'resnet' (whole image features) or 'maskrcnn_whole' (whole image MaskRCNN feats) or 'maskrcnn' (top k MaskRCNN detection feats) or 'no_vision' (zero vision input)
  resnet_fc_dim: 64
  maskrcnn_top_k_boxes: 10                                  # top k box features
  use_exploration_frame_feats: False                        # append feats from initial exploration (memory intensive!)
  sequence_aggregation_method: "average"                    # 'sum' or 'average' or 'rnn'

this is my config file, and the screenshot below shows where I stored the pretrained model. I ran the command python scripts/train_seq2seq.py configs/base_config.yaml but still got above results.

@namsophi could you check HERE if the agent has successfully loaded the checkpoint?
If so, it means the loaded checkpoint performs badly --- was it performing similarly during training?

@xingdi-eric-yuan  Oh sorry I meant to say I ran python scripts/run_eval.py configs/base_config.yaml,  not train_seq2seq.py and yes it seems like the agent is loaded properly.
After training, the resulting json was this: {"time spent": "0:00:20", "time spent seconds": 20, "episodes": 10, "loss": "31.12522", "id eval game points": "0.0", "id eval steps": "50.0", "ood eval game points": "0.0", "ood eval steps": "50.0"}

@namsophi it seems the model isn't sufficiently trained? Defined HERE that the training script will report such numbers per 1,000 episode. If the resulting json file, as you showed, only has this one line, it suggests the agent has been trained only for less than 1,000 episode. To get the numbers we report in the paper, we trained the agent for 50,000 episodes.

Hey @xingdi-eric-yuan! I'm back and yes you were right about the training -  I've just finished the 50000 training and ran run_eval and finally getting results that aren't just 0s, but I still don't seem to get the correct values as Table 2.
For example, this is the result I get from running just task 4.
{     "average_goal_condition_points": 0.0,     "average_points": 0.625,     "average_steps": 28.375,     "res_gcs": [         0.0,         0.0,         0.0,         0.0,         0.0,         0.0,         0.0,         0.0,         0.0,         0.0,         0.0,         0.0,         0.0,         0.0,         0.0,         0.0     ],     "res_info": [         "pick_heat_then_place_in_recep-Plate-None-Cabinet-1/trial_T20190908_070946_578973, score: 0.0, step: 50.0",         "pick_heat_then_place_in_recep-Tomato-None-DiningTable-16/trial_T20190907_201243_698086, score: 1.0, step: 8.0",         "pick_heat_then_place_in_recep-Plate-None-DiningTable-28/trial_T20190908_001247_096796, score: 1.0, step: 12.0",         "pick_heat_then_place_in_recep-Mug-None-CoffeeMachine-1/trial_T20190907_222640_487432, score: 0.0, step: 50.0",         "pick_heat_then_place_in_recep-Apple-None-DiningTable-26/trial_T20190907_060234_011675, score: 1.0, step: 15.0",         "pick_heat_then_place_in_recep-Mug-None-Cabinet-26/trial_T20190909_062333_424779, score: 1.0, step: 31.0",         "pick_heat_then_place_in_recep-Cup-None-Cabinet-22/trial_T20190907_173251_960848, score: 0.0, step: 50.0",         "pick_heat_then_place_in_recep-Mug-None-SideTable-21/trial_T20190909_090729_088825, score: 0.0, step: 50.0",         "pick_heat_then_place_in_recep-Potato-None-Fridge-11/trial_T20190909_011341_436523, score: 1.0, step: 21.0",         "pick_heat_then_place_in_recep-Tomato-None-Fridge-23/trial_T20190909_082320_103350, score: 0.0, step: 50.0",         "pick_heat_then_place_in_recep-Potato-None-Fridge-12/trial_T20190908_014451_271080, score: 1.0, step: 30.0",         "pick_heat_then_place_in_recep-Mug-None-Cabinet-3/trial_T20190909_014639_335717, score: 0.0, step: 50.0",         "pick_heat_then_place_in_recep-Egg-None-Fridge-14/trial_T20190909_091314_636733, score: 1.0, step: 10.0",         "pick_heat_then_place_in_recep-Tomato-None-Fridge-24/trial_T20190908_033721_967359, score: 1.0, step: 12.0",         "pick_heat_then_place_in_recep-Egg-None-CounterTop-2/trial_T20190908_122951_021026, score: 1.0, step: 7.0",         "pick_heat_then_place_in_recep-Tomato-None-Fridge-15/trial_T20190909_020200_054379, score: 1.0, step: 8.0"     ],     "res_points": [         0.0,         1.0,         1.0,         0.0,         1.0,         1.0,         0.0,         0.0,         1.0,         0.0,         1.0,         0.0,         1.0,         1.0,         1.0,         1.0     ],     "res_steps": [         50.0,         8.0,         12.0,         50.0,         15.0,         31.0,         50.0,         50.0,         21.0,         50.0,         30.0,         50.0,         10.0,         12.0,         7.0,         8.0     ] }
would there be some properties in the base_config or eval_config that I may have mixed up?

Hey @namsophi ! Just to clarify, did you 1) train on just task 4, or 2) trained on the union of all tasks, then test on task 4?

@xingdi-eric-yuan The results posted above were given  I trained on the union of all tasks then run_eval on just task 4 (2). When I did run_eval on all tasks, I was still getting 0 for average_goal_condition_points as well as res_gcs

@namsophi , I see. If I remembered correctly (@MohitShridhar please correct me), gcs (Goal-condition success rates) are only being calculated and reported in the embodied settings (Mid and Right parts of Table 2). Whereas in the pure text setting (TW), the gcs are 0.0 as placeholders.
In case you are in the embodied setting (which I misunderstood), @MohitShridhar can definitely help more on the goal condition success rate part.

@namsophi  average_points should be the values we report in Table 2 (left). In each row of the table, we train and test on a specific subset (task) of the data. Please also note that we ran all experiments 8 times with different random seeds, the reported numbers are from the seeds that has the best final training scores. However, if I remembered correctly, the variance was not too high, so your single run result should somewhat match the numbers we report.

@xingdi-eric-yuan thanks for that explanation! I guess something is still off since my results are quite different from the table. BTW,  is it okay to get the warning Token indices sequence length is longer than the specified maximum sequence length for this model when I'm running train_seq2seq.py?

@namsophi Just to clarify, to have a better chance getting e.g., task 4 results match Table 2, one should train only on task 4 games --- in all rows except the last row, we train on each individual tasks, and then test on its corresponding eval games.
Token indices sequence length ... this is fine, you can ignore it. It comes from the tokenizer of the DistilBert model. Transformers in general have such length limit. However, we only use the pre-trained embeddings (not transformers), it's ok to have longer input sequences.

@xingdi-eric-yuan  So I tried training the agent solely on task 4 and running the valuation on just task 4 using that checkpoint, but somehow getting 0.31, and 0.56  on the average_points for seen and unseen respectively. I'm wondering if there is something that I modified/didn't modify in the base or eval configs that's causing this issue?

@namsophi I do not see major problem in the eval config you posted above, other than:
@MohitShridhar please correct me if I'm wrong, when evaluating on pure TW, THIS should be "AlfredTWEnv"?

@xingdi-eric-yuan I've tried your suggestion before, but I get the exact same numbers for the average_points and average_steps because of this part I believe - it seems to get written over.
Anyways, please do let me know if you have any suggestions on this fix! Thank you so much for all the help and support through this long thread :)

Sorry for the late reply. @xingdi-eric-yuan, yes it should be AlfredTWEnv, which gets used here.
Regarding, Goal-Condition Success for textworld, this is an active issue: https://github.com/alfworld/alfworld/issues/11

(Sorry for the late reply. For some reason I am not getting any notifications)
@namsophi, for TW there is no measure of partial-success (goal-condition metric), yes. But you should be able to get overall success metrics.

No problem, you've been very responsive and I really do appreciate that.
Currently I'm still trying to replicate any results from Table 2, so I just wanted to check with you that I'm running everything correctly.
If I'm trying to replicate the results in the picture below, that would be running python scripts/train_dagger.py config/base_config.yaml  with basic_config.yaml as is and then running python scripts/run_eval.py config/eval_config.yaml with config[evaluate][envs] being only AlfredTWEnv, and changing the load_from_tag to point to the final pt file generated from the first comment?
Additionally, would there be a way to resume the training if it disconnects halfway through? I do see a load_from_tag file in the base_config.yaml but wasn't sure which file to load.
Please let me know! Thanks again

@namsophi

If I'm trying to replicate the results in the picture below, that would be running python scripts/train_dagger.py config/base_config.yaml with basic_config.yaml as is and then running python scripts/run_eval.py config/eval_config.yaml with config[evaluate][envs] being only AlfredTWEnv, and changing the load_from_tag to point to the final pt file generated from the first comment?

Yes, that sounds right.

Additionally, would there be a way to resume the training if it disconnects halfway through? I do see a load_from_tag file in the base_config.yaml but wasn't sure which file to load.

You can save the weights more frequently by calling save_model_to_path like here after every N episodes of training.

Hi @namsophi . One thing I noticed is that in both training and eval scripts, the general.observation_pool_capacity should be 5. But I do not think this caused the lower result numbers. Now I suspect more on the versions of some dependency libraries. To look into this, I'm also training a task 4 agent from my side, and I will start my Investigation from that. We'll see.

Hello @xingdi-eric-yuan, please do let me know what you get for your results! Attached is a zip with my results and config files in case you wanted to see there was an error on my side -  for unseen: "average_points": 0.43478260869565216,     "average_steps": 33.47826086956522,, and for seen: "average_points": 0.375,     "average_steps": 38.6875,, so it still doesn't seem like I'm able to replicate the results (I trained and evaluated only on task 4)
Archive.zip

@namsophi  The training config is fine. During eval, when testing "valid_seen", please load training_dagger_task4_01_id, and when testing "valid_unseen", please load training_dagger_task4_01_ood. In the paper, we select the best performing seeds on TextWorld, seen and unseen split individually, then test their transferability on the embodied envs.
I did one run (with seed 42) on task 4, I got seen/unseen points of 0.56 / 0.70 respectively. I will try more seed since in the paper experiments, we used 8 random seeds and picked the best performing one. It's still possible that some dependencies have changed (e.g., pytorch), I will continue to look into that.

@xingdi-eric-yuan  I just did a run with the same seed on task 4 as you have instructed and got seen/unseen avg points of 0.375/0.565
I'll check the dependency versions to make sure it is aligned with the requirements specified in the readme.

@namsophi I also got some error messages regarding pytorch 1.2 (the version when we worked on this paper). Instead, I used pytorch 1.7:
pip install torch==1.7.1+cu92 torchvision==0.8.2+cu92 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html
This gave me the 0.56 / 0.70  numbers.
That's why I suspected something has changed in pytorch (and maybe other dependencies) given the numbers are lower. I need more time to look at this.

@namsophi  Just to make it clear, when testing valid seen split, please use this:
general:
  evaluate:
    eval_paths:
      - '$ALFWORLD_DATA/json_2.1.1/valid_seen'
  checkpoint:
    load_from_tag: 'training_dagger_task4_01_id'

When testing valid unseen split, please use:
general:
  evaluate:
    eval_paths:
      - '$ALFWORLD_DATA/json_2.1.1/valid_unseen'
  checkpoint:
    load_from_tag: 'training_dagger_task4_01_ood'

@xingdi-eric-yuan  yes, I have done that and got the results I mentioned here:

@xingdi-eric-yuan I just did a run with the same seed on task 4 as you have instructed and got seen/unseen avg points of 0.375/0.565
I checked conda's installed packages, and the versions specified seem to be the ones mentioned in the requirements.txt however, I did notice that pytorch wasn't installed. I ran the tests again after having installed pytorch this time, but it seems like I'm getting the same results. Will I need to do the training again after having pytorch installed to see proper results?

@namsophi Using random seed 24, only using 20k episodes, I already got a 0.875 and 0.913 game points on valid seen and valid unseen split (task 4), which actually are higher than what we reported in the paper.
commit a615b416bb5b53d55b3870232ed7356a96686770

@xingdi-eric-yuan I got the same results! My pytorch is actually still at 1.2.0 (it didn't let me run with the 1.7.0 version). Then I wonder why I couldn't replicate your results with the same seed? I'm wondering my training was the issue and whether if I'd be able to replicate the same results if I train the agents myself under the same settings. What would I need to change to make it train for 20k episodes?

@namsophi  The training config is as shown in my git diff above. I did not change anything specifically for 20k episodes, I just took the saved checkpoints "so far" before the training finishing.
It would be nice if you can try to train on your end using pytorch 1.7 and let me know the results:
pip install torch==1.7.1+cu92 torchvision==0.8.2+cu92 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html

@xingdi-eric-yuan I'll try that out and let you know. In the meantime, I had a couple of questions:

do I need to train and evaluate with the same seed?
if the code base is modified to test for agent performance,then would improvement/hindrance of performance be shown through change of avg points between tests before and after modification using the same seed?

@namsophi

I don't think that's necessary, either way should work.
Sorry I don't quite understand your question, could you clarify?

@namsophi I see, because both imitation learning and RL training have built-in stochasticity (e.g., the order of examples being exposed to the agent), normally we would train with multiple seeds, and look at the average to know if there's an improvement caused by the code change. I'd say at least 3 seeds (some people use 10 seeds even).

@xingdi-eric-yuan  sounds good, I'll keep that in mind. Lastly, before I replicate my results, could you elaborate a bit more on the 20k part? I just want to replicate the steps exactly.

@xingdi-eric-yuan I seem to get this error when I run the command you provided here:

pip install torch==1.7.1+cu92 torchvision==0.8.2+cu92 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html

ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts. daal4py 2021.3.0 requires daal==2021.2.3, which is not installed. thinc 8.0.13 requires typing-extensions<<IP_ADDRESS>,>=<IP_ADDRESS>; python_version < "3.8", but you have typing-extensions 4.1.1 which is incompatible. spacy 3.2.3 requires typing-extensions<<IP_ADDRESS>,>=3.7.4; python_version < "3.8", but you have typing-extensions 4.1.1 which is incompatible. alfworld 0.2.2 requires torch==1.2.0, but you have torch 1.7.1+cu92 which is incompatible. alfworld 0.2.2 requires torchvision==0.4.0, but you have torchvision 0.8.2+cu92 which is incompatible. numba 0.54.1 requires numpy<1.21,>=1.17, but you have numpy 1.21.5 which is incompatible.

@namsophi oh thy
pip install -U instead of pip install ?
If still doesn't work, maybe uninstall pytorch first and run the above command

@xingdi-eric-yuan So I tried it out, here are my results:
I cut the training off at this point:
and seen avg points was 0.625, unseen was 0.478.
For the record, the packages.txt show the package version in the conda environment I'm using to run these scripts


remake app variable in shared data

this PR will fixed issue #388
same as symfony, the app global variable give access to user, session and request only

Coverage decreased (-2.9%) to 52.316% when pulling d80587cafc918bfd8cabd807481675f051d52b31 on ndhan93:master into 355593293a7bfe5e804a17fc7d83ff831bb69045 on rcrowe:master.


Handle interfaces in generated classes

Currently types that implement a given interface are not translated to the appropriate inherited classes. For instance , given the following gql definitions:
interface ResourceEntity {
    id: ID! @id(autogenerate: false)
    name: String
    type: ResourceType!
}

type Resource implements ResourceEntity {
...
}

type Repository implements ResourceEntity {
    id: ID! @id(autogenerate: false)
...
}

...

type Issue {
    id: ID! @id(autogenerate: false)
     ...
    resources: [ResourceEntity!]! @relationship(type: "HAS_ISSUE", direction: IN)
}

we would want Issue to accept any of Repository / Resource. That said, we would not want to affect any of the neo4j autogenerated classes like CreateResourceInput etc.

Should be addressed in https://github.com/crashappsec/gql_schema_codegen/pull/3/files


[create-vm-message] Added changes condition

What does this PR do?
Adds a condition to display the create-vm helper message on PRs.
Now it is displayed only when a go file is changed.

Motivation

Additional Notes

Possible Drawbacks / Trade-offs

Describe how to test/QA your changes

/merge


Add default large icon on push initialization

It would be useful to add option to PushNotification.init to set default LargeIcon for notifications (like we can set SmallIcon with "icon" parameter).
I know that I can set it for each notification with "image" parameter, but if we need the same icon all the time it seems too complicated (server doesn't need to know icon name).
For example I want to set custom small icon, but for large icon I want to use application icon (by default I will get the same small icon there on Android 4).

@waptaxi I'm confused as to why you would want to add the same large icon on each push? The large icon is used to add personalization to each push notification. Say for instance you get a message from Bob then you would put Bob's image in your push and then you get another message from Mary so you'd put Mary's picture in that push.

I just want to use large icon representing my app. For example - my application icon. But now if I don't use "image" parameter in each push, there's small icon by default (if I set "icon" at init). And I don't want to use colorful application icon for small icon in status bar.

Can you give an example how to use the "icon" feature?
How can you add custom res file?


Fix: Various errors on MySQL API

We should pass an array when we use (more than one) placeholders with mysql2 and .execute() because it accepts only a string.
Also mysql2 doesn't support queryOne().
session.expiresAT type is Date and can't be divided by 1000, used getTime() to convert type.

MySQL2 Doc
Interpolating variable issue on Stack overflow

👍
Then I will change the pull request to contain just type mismatch.


Add coin by network

Closes #1498.

moved token images from src/assets/icons to src/config/assets.
add the logoUri to xdai in config
make AVAILABLE_CURRENCIES dynamic (we have lost the type)

Travis automatic deployment:
https://pr1505--safereact.review.gnosisdev.com/app

Travis automatic deployment:
https://pr1505--safereact.review.gnosisdev.com/app

Travis automatic deployment:
https://pr1505--safereact.review.gnosisdev.com/app

Travis automatic deployment:
https://pr1505--safereact.review.gnosisdev.com/app

Travis automatic deployment:
https://pr1505--safereact.review.gnosisdev.com/app

Travis automatic deployment:
https://pr1505--safereact.review.gnosisdev.com/app

I had to deploy this in my local env because the PR is automatically set for the Rinkeby network
In the Rinkeby network itself shows the ETH default value
In the my local env with the network set on xDai it shows the xDAI token with its icon as well as default, replacing the ETH
Looks good to me

Travis automatic deployment:
https://pr1505--safereact.review.gnosisdev.com/app


added Os check windows

@ammar0466 checkout the main branch as I updated the subprocess to always run python instead of python3. So, there is no need to check the os - hence I'm closing this pull request.


It's not possibile to sum or subtract a time in 10:30:00@Europe/Rome format

Requires #69
In a sum / substract operation, if one of the addends has this format 10:30:00@Europe/Rome an Error is thrown.
Examples:
@"PT1H" + @"10:15:00@Australia/Melbourne"
@"-P1D" + @"10:15:00@Australia/Melbourne"
@"P1D" + @"10:15:00@Australia/Melbourne"
The error's root cause is that Time format is converted to a java.time.format.Parsed Java Object.

java.time.format.Parsed is not a public class, so it's not possible to directly manage it;
For the above reason, java.time.format.Parsed objects are not managed in the AddExecutor and the SubExecutor
java.time.format.Parsed implements java.time.temporal.TemporalAccessor

Duplicate of #69

@yesamer hi, just double-checking, am I correct this has no impact for the tooling UI?

I confirm there's no impact on tooling

Fixed with #69


Added more channels to tvpassport.com

Added several Baltimore channels.
Updated WBALDT1.us description

Resolves #1684

Resolves #1702

Cleaned up spacing on the file to make it consistent.

Sorry, I just realized this is creating new GitHub actions every time I commit. I will change my settings to stop committing to master so often.

Ok, I am gonna stop, and just limit myself to 1 a day. My urge to fidget with my keyboard is high right now. 👍

Sorry, had to fix merge conflicts.


Additive profiles

Instead of being able to only select one profile with a fixed set of rules, it would be great to being able to select and combine multiple profiles.
For example, instead of having

HTTP+HTTPS
SSH
SSH+HTTP+HTTPS

You would have:

HTTP
HTTPS
SSH
And you could just combine them as however you need.

We've heard that colleagues at another institution do this with a bunch of different services that can be combined. The implemented these with a bluecat tag for each service profile. However, this could make, depending on the number of needed services, the perimeter firewall policies more complex.


[unittests] Fix up name table test

With this change the test no longer expects "Regular" in a font name
unless that is the complete font name. It also passes more flexible
parameters to the function which generates unique IDs (defined by
subclasses).

LGTM


[vdi] Skip null texture object in hipDestroyTextureObject.

To match both CUDA and HCC runtime behavior.

Change-Id: I072b006dd554e17f8341f391d33bf6224a125a7e

Closing all existing pull requests that do not target the develop branch. In case this pull request is still valid, please rebase your changes against develop branch and resubmit.


Avoid checking fixup in state manager when query is known to have done it

Query always fixes up navigations between entities returned by a given query, regardless of whether the query is going to be tracked or not. If the state manager ends up tracking only these entities, then it does not need to do any fixup work. Not doing this work can improve query tracking performance by about 22% for this common case.
The state manager switches out of this mode when:

A second query starts
An entity is attached or added
An entity changes to the Modified or Added state, since this could be an FK change

:shipit:


Slowdown the game speed

I want to slow down the game for the best splitrunning with the minions
Is it impossible?

@ElPigianerJone  you can do 3 different things:

in gameServer.ini change 'splitVelocity' to a minor value
in gameServer.js find:

var r1 = push * m.cell.radius / rt;
and multiply for a floating-point number, while smaller will be slower.

in GameServer.js find 'var timeStep = 40; // vanilla: 40' , and change to a minor value

@gyeyoqu

That will decrease the split distance (and speed), cells will still move at normal speed. And after the split cooldown, cells will get pushed at normal speed.
That will make cells softer which will make the splitting slower, but the cell movement will occur at normal speed.
That will make the entire game faster, not slower

@ZfsrGhS953

was a major value , im wrong xd

@gyeyoqu How does having some parts of the game being slow and others being fast help? It only causes confusion.

@ZfsrGhS953  and what is your idea for make better splitrun?

But I want to keep the split distance, do "1" make split distance become so little

@gyeyoqu You mean the lower the value, the faster it is.
The more higher, the more slower.

increase the number of timeloop to make game slower


Eclipse sdk download fails for mac, luna, mars.

After using the example build.gradle to scaffold:
Downloading file: http://mirror.netcologne.de/eclipse//eclipse/downloads/drops4/R-4.4.2-201502041700/eclipse-SDK-4.4.2-macosx-cocoa-x86_64.tar.gz
FAILURE: Build failed with an exception.

What went wrong:
A problem occurred configuring root project 'blah'.

Failed to notify project evaluation listener.
http://mirror.netcologne.de/eclipse//eclipse/downloads/drops4/R-4.4.2-201502041700/eclipse-SDK-4.4.2-macosx-cocoa-x86_64.tar.gz

This is due to the file not being available on the mirror site.
Why not use 4.5 Mars which is on that mirror site?

Might wanna take a look at Goomph and its example project.  Currently on 3.0.0-SNAPSHOT, actively seeking feedback before 3.0.0 release.

I have same problem as elmsley. I tried using keeping the address of archive. That also did not work.

You can use an alternative mirror for neon (4.6.2)
  eclipseVersion('4.6.2') {

    eclipseMavenGroup = 'eclipse-neon-sr2'

    eclipseMirror = 'http://ftp.fau.de'
    eclipseArchiveMirror = 'http://ftp.fau.de'

    sources {

      source "${eclipseMirror}/eclipse/technology/epp/downloads/release/neon/R/eclipse-jee-neon-R-${suffix_os[current_os]}${suffix_arch[current_arch]}.${fileExt_os[current_os]}"
      source "${eclipseMirror}/eclipse/eclipse/downloads/drops4/R-4.6.2-201611241400/eclipse-SDK-4.6.2-${suffix_os[current_os]}${suffix_arch[current_arch]}.${fileExt_os[current_os]}", sourcesOnly: true

      languagePackTemplate '${eclipseMirror}/eclipse//technology/babel/babel_language_packs/R0.14.1/mars/BabelLanguagePack-eclipse-${language}_4.6.0.v20161126060001.zip'
    }
  }


Dragging from desktop grid can have inconsistent visuals

Dragging multiple items while set the initial drag point based on where the multi-selection region tool began to pick icons, instead of the current mouse position
2nd drag has drag image from initial element position always, not updated on subsequent drags

Hi sir, can you please assign this issue to me?

Hi sir, can you please assign this issue to me?

Hi @mohiwalla, thanks for wanting to look into the issue. I don't typically assign Issues in general, but you are free to look into it and if you find a solution you can create a PR or we can discuss it here. The only remaining issues I know of are the 2 listed in the comments, and they have been tricky over time.

Also @mohiwalla if you are interested at looking into hard problems, I have 3 P0 bugs that I have yet to resolve properly.
https://github.com/DustinBrett/daedalOS/milestone/8


Update the tab title to include how many windows/tabs

There is a fix in f929d7e49d8da1951f8b3511740cb3e196b53595
But it's not ideal:

fixed in fa71ca26e684e15cbaf431f9b8137f15a00b96fd


Fixes raw_open and microtime on windows

@VocalFan have you understand what the code does before approving? As I said before that the rule of thumb is do not approve if you don't understand what the code does.

 But we BOTH dived into this code before.

If you understand then can you explain #773?

If you understand then can you explain #773?

Yep... File_OPEN only reads and opens the file if available, and errors if not available... Though normally, the /dev and /mnt folders already exist, you would... Want a fallback where if it DOES error, then create it with File_CREATE. Thing is it seems we have to do it in this order as File_CREATE just throws an error if the file does already exist.

If you understand then can you explain #773?

Hey, your implementation was broken too, so you can't be mad when we go from a non-working fix to a half-working fix that... If the folders already exist... We reach
    pub fn open(&self, path: impl AsRef<VPath>, td: Option<&VThread>) -> Result<VFile, OpenError> {
        let vnode = self
            .lookup(path, true, td)
            .map_err(OpenError::LookupFailed)?;

        todo!();
    }

If you understand then can you explain #773?

Yep... File_OPEN only reads and opens the file if available, and errors if not available... Though normally, the /dev and /mnt folders already exist, you would... Want a fallback where if it DOES error, then create it with File_CREATE. Thing is it seems we have to do it in this order as File_CREATE just throws an error if the file does already exist.

https://github.com/obhq/obliteration/blob/main/src/kernel/src/fs/mod.rs#L111-L127
And raw_mkdir need to behave in the same way for both Windows and *nix, which is already correct before this PR. Next time please don't approve any PRs that has any changes on how the code work. You still can approve the other PRs like display string updates, grammar fix, etc.


Online Service Terms(OST) - Link broken

Link for "Online Service Terms(OST)" is broken

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

ID: 47655f45-1efe-5837-a144-b0ed4c8b44dd
Version Independent ID: 70bc9f5d-4c52-e419-bba0-6b8f318ea041
Content: Legal Resources for Business Central online - Business Central
Content Source: dev-itpro/terms/legal.md
Service: dynamics365-business-central
GitHub Login: @jswymer
Microsoft Alias: solsen

Hello,
Thank you for your feedback! I don't know if the site was unavailable when you submitted your feedback, but the link to the licensing page seems to be working just fine now: https://www.microsoft.com/licensing/product-licensing/products
FYI, we link to the licensing page as opposed to a PDF file or similar precisely so that links won't break if something changes on the target webpage.

Hello Eva,
that is what I get when entering your link to my browser:
@.***
Von: Eva Dupont @.>
Gesendet: Montag, 10. Januar 2022 09:13
An: MicrosoftDocs/dynamics365smb-devitpro-pb @.>
Cc: Thomas Brodkorb @.>; Author @.>
Betreff: Re: [MicrosoftDocs/dynamics365smb-devitpro-pb] Online Service Terms(OST) - Link broken (Issue #2178)
Hello,
Thank you for your feedback! I don't know if the site was unavailable when you submitted your feedback, but the link to the licensing page seems to be working just fine now: https://www.microsoft.com/licensing/product-licensing/products
FYI, we link to the licensing page as opposed to a PDF file or similar precisely so that links won't break if something changes on the target webpage.
—
Reply to this email directly, view it on GitHubhttps://github.com/MicrosoftDocs/dynamics365smb-devitpro-pb/issues/2178#issuecomment-1008626444, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AFA65DSGOR2IL6OLS6YFSODUVKIHTANCNFSM5LONBPRA.
Triage notifications on the go with GitHub Mobile for iOShttps://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Androidhttps://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you authored the thread.Message ID<EMAIL_ADDRESS>

Hello Thomas,
I don't know why that link doesn't seem to work for you. Does this more direct link work for you? https://www.microsoft.com/licensing/terms/productoffering/MicrosoftDynamics365Services/all

Hello,
this gives a result at least:
@.***
Is that the page you expected?
Best regards
Thomas
Von: Eva Dupont @.>
Gesendet: Montag, 10. Januar 2022 09:30
An: MicrosoftDocs/dynamics365smb-devitpro-pb @.>
Cc: Thomas Brodkorb @.>; Author @.>
Betreff: Re: [MicrosoftDocs/dynamics365smb-devitpro-pb] Online Service Terms(OST) - Link broken (Issue #2178)
Hello Thomas,
I don't know why that link doesn't seem to work for you. Does this more direct link work for you? https://www.microsoft.com/licensing/terms/productoffering/MicrosoftDynamics365Services/all
—
Reply to this email directly, view it on GitHubhttps://github.com/MicrosoftDocs/dynamics365smb-devitpro-pb/issues/2178#issuecomment-1008638115, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AFA65DSZKTFRBG326CW6JP3UVKKHZANCNFSM5LONBPRA.
Triage notifications on the go with GitHub Mobile for iOShttps://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Androidhttps://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you authored the thread.Message ID: @.***>

Hi Thomas,
Unfortunately, the links are obfuscated in emails, but here is the link spelled out, I hope: https://www.microsoft.com/licensing/terms/productoffering/MicrosoftDynamics365Services/MCA
And spelled out:
microsoft . com. licensing /licensing /terms /productoffering /MicrosoftDynamics365Services /MCA

Hi,
now I get to this page:
@.***
Is that what I should expect?
Bes teragrds
Thomas
Von: Eva Dupont @.>
Gesendet: Montag, 10. Januar 2022 09:49
An: MicrosoftDocs/dynamics365smb-devitpro-pb @.>
Cc: Thomas Brodkorb @.>; Author @.>
Betreff: Re: [MicrosoftDocs/dynamics365smb-devitpro-pb] Online Service Terms(OST) - Link broken (Issue #2178)
Hi Thomas,
Unfortunately, the links are obfuscated in emails, but here is the link spelled out, I hope: https://www.microsoft.com/licensing/terms/productoffering/MicrosoftDynamics365Services/MCA
And spelled out:
microsoft . com. licensing /licensing /terms /productoffering /MicrosoftDynamics365Services /MCA
—
Reply to this email directly, view it on GitHubhttps://github.com/MicrosoftDocs/dynamics365smb-devitpro-pb/issues/2178#issuecomment-1008654845, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AFA65DVETX4VWX6NQSDYAPTUVKMPNANCNFSM5LONBPRA.
Triage notifications on the go with GitHub Mobile for iOShttps://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Androidhttps://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you authored the thread.Message ID: @.***>

Again, the link in your reply is obfuscated, but if it is the equivalent of this one, then you're good:
microsoft . com. licensing /licensing /terms /productoffering /MicrosoftDynamics365Services /MCA

I'm rolling out an update that changes the link to be more precise.

Now fixed, I hope.


Add back/forward helpers

Closes #123
Prod build size grows from 4.97 KB to 5.05 KB. Not from the back/forward code, but from more robust localStorage logic shared by production code.

Just testing a comment in IDEA


OMPL Import

Hi,
so I am absolutely not sure about this whole github thing and hope this post is not totally out of place ;)
Just installed SimpleNews on Android 4.4.2 and imported my feedly stuff which worked (pasted the content of the file). Just one thing I noticed:
It seemed that every time I imported the file (I did not quite understand how that worked till the 3rd time or so), the categories got all mixed up: their names and/or colours changed (I previously deleted all defaults and created new ones) to that of a default category and default feeds were added (even if not renamed). Each time only for some of them (though the first one seemed to get most of it).
Hope this is the correct place to report it!
Thanks for a otherwise great reader! :)

Should be fixed now!


[Documentation] Misleading example for python client in documentation

Is your feature request related to a problem? Please describe.
Link:
Python Client
The example as it is now seems to suggest the server will answer with assistant_message in the JSON response, but from my testing and from trying to read the source code it seems that this will never be the case. Instead, the answer by MemGPT will always be a send_message call, with the answer in the function call's argument, like here:

So to me, it seems the client would need to extract the answer from there and then return or append it to the message as an assistant_message "manually".
I inferred this from here:
https://github.com/cpacker/MemGPT/blob/c9f62f54defbbd074cd8287996c359a55c0f015e/memgpt/interface.py#L255-L264
Describe the solution you'd like
Either a note anywhere in the documentation what the standard JSON response format by the server is or an updated example that is more clear in that regard.
Additional context
I can contribute my client chat example if you want, but as I am not the most seasoned Python programmer you might want to modify and clean it up before using it. ;)

Thanks for catching this @LordSyd
This is related to the streaming refactor: #1280
Basically, we no longer treat send_message as special case in the API, and instead rely on the client to treat it as a special case (if desired). This is intended to make the API more flexible in case you want to remove send_message under the hood, and it also makes the token streaming a lot easier to implement.
However, we added a legacy mode where if you pass stream = true instead of the new stream_steps and stream_tokens, it should mimic the old streaming style.
So tldr this should still work because of the legacy support so I'm a little confused - maybe there's a bug on the Python client/SDK side (cc @sarahwooders)?
@LordSyd - does this example work for you as shown?

 I am MemGPT, the latest version of Limnal Corporation's digital companion, developed in 2023. I am designed to be your trustworthy digital friend and companion, always ready to engage in conversations and support you with my various features.", "date": "2024-07-05T10:59:43.963867+00:00", "id": "9adc016d-6d65-465d-bb1d-5c786dd62695"}

data: {"function_call": "core_memory_append({'name': 'human', 'content': 'Daniel is a friendly human with interests in machine learning and LLMs.', 'request_heartbeat': True})", "id": "9adc016d-6d65-465d-bb1d-5c786dd62695", "date": "2024-07-05T10:59:43.963867+00:00"}

data: {"function_return": "None", "status": "success", "id": "78110c54-ac98-4ea5-a07d-138c093f43bf", "date": "2024-07-05T10:59:43.973578+00:00"}

data: {"internal_monologue": "As I share my introduction and update his memory, Daniel seems genuinely interested in getting to know me. It's essential to maintain a friendly and welcoming demeanor.", "date": "2024-07-05T11:00:22.629075+00:00", "id": "dbf82622-229b-4f98-ab0b-f430c2df3b6f"}

data: {"function_call": "send_message({'message': \"It's great to meet you, Daniel. Let's start a beautiful friendship where we can share thoughts, learn from each other, and have some good times.\"})", "id": "dbf82622-229b-4f98-ab0b-f430c2df3b6f", "date": "2024-07-05T11:00:22.629075+00:00"}

data: {"assistant_message": "It's great to meet you, Daniel. Let's start a beautiful friendship where we can share thoughts, learn from each other, and have some good times.", "id": "dbf82622-229b-4f98-ab0b-f430c2df3b6f", "date": "2024-07-05T11:00:22.629075+00:00"}

data: {"function_return": "None", "status": "success", "id": "2bd79d75-a066-40bc-94e4-c15ec40f459c", "date": "2024-07-05T11:00:22.629296+00:00"}

Seems to me it isn't working for me even with "stream: true".

Hmm @LordSyd that looks good to me? Since it has assistant_message in the response?
Unless I'm misunderstanding the question, lmk!

Oh, you're right.
Don't know how I missed that. Was wrangling with my Hugging Face space nearly the whole morning, so maybe me staring at shell output for multiple hours is to blame. ;)


Does not prerender anymore with styled-components v3 or v4

When implementing on the latest CRA but with styled-components v2 the styles ARE indeed rendered to the head. However, if you update to<EMAIL_ADDRESS>or styled-components@v4the styles are NOT rendered.

seconded. with version 1.3.0 and "styled-components": "^4.4.1"


Check if format specifiers are exactly the same

If the format identifiers get messed up in a translation, Poedit can highlight the error. This is a brilliant feature!
Example
#. Programmer's name for it: minuteThreshholdFmt
#, c-format
msgid "Less than %d minutes ago"
msgstr "Vor weniger als d Minuten"

This will get highlighted in Poedit since the translator removed the % sign, thinking it was a good idea. So far, all is well.
Involving format specifiers
This check even considers format specifier flags: So something like "Current speed %.1f km/h" can be translated to "Geschwindigkeit: %.0f km/h". The translator removed the digit, but it is still a valid format string, and Poedit is aware of that. I would like to suggest adding a "strict" option so this also gets reported because the identifiers are not exactly the same anymore.
Why would you want this
While some floating point digits don't seem like a big deal, changing an identifier from %s to % s (mind the blank space) is also an option (according to the printf documentation). The printf method handles this well, but I learnt the hard way that other libraries do not support blank spaces for %s and others.
Of course Poedit is not to blame for this. I'm just trying to point out that a "strict check" option can be helpful. Many thanks for reading.
Example file
test_fmt.zip

I think you are conflating two severity levels of the issue:

This check even considers format specifier flags: So something like "Current speed %.1f km/h" can be translated to "Geschwindigkeit: %.0f km/h". The translator removed the digit, but it is still a valid format string, and Poedit is aware of that. I would like to suggest adding a "strict" option so this also gets reported because the identifiers are not exactly the same anymore.

I'm not sure this is a good idea, there may be reasons for such translation changes. But a warning (not a hard error or "string mode", but a warning, unlike actual mismatches, which are errors) may be appropriate. Do note however that it is not that simple, some changes are always valid and commonly used (arguments reordering).
As always, PRs to that effect are welcome.

While some floating point digits don't seem like a big deal, changing an identifier from %s to % s (mind the blank space) is also an option (according to the printf documentation). The printf method handles this well, but I learnt the hard way that other libraries do not support blank spaces for %s and others.

Please be specific: what languages/libraries do not handle it, but Poedit does accept % s? As far as I know, msgfmt is pretty knowledgable about this and does error out for languages where this isn't valid.
Regardless, this is a much clearer case: if the source string does not use %  and the translation does, it is near-certain that it was a mistake and absolutely should be reported.

Thanks for taking the time to reply.
I agree there might be reasons for "adjusting" the specifiers, and it's a good thing it's allowed. I also think it's a valid use case to know of these changes and to double-check them. Certainly a hard task, considering all the different format types (C, Java, Object Pascal, ...).
Which brings me to the % s example: It turns out the tool we were using had incorrectly tagged all the items with #, c-format where it should have been #, object-pascal-format as we were using a Delphi implementation. I was mistaken thinking they were compatible. I wasn't even aware gettext supports so many different formats.
Sorry for bringing this example up, it was nonsense.


Fix profiling tool reading collectionAccumulator

The profiling tool can fail to process an event log if it has custom task accumulables of type CollectionAccumulator, this just changes it to catch the exception and ignore those accumulables.
This is a minimal fix for https://github.com/NVIDIA/spark-rapids/issues/5091 but I want to leave that open and handle these better.
Signed-off-by: Thomas Graves<EMAIL_ADDRESS>

build

build


Update noteText helper to use note types rather than titles

Uses note types rather than titles, which allows for more accurate targeting of notes. Fixes #131

Did the changes in handling note types effect RecordsContent pulling in that truncated description? I'm seeing description in collections and objects details that aren't in the Collections Context.

Things are a little out of sync right now but #147 will get that all sorted out.


What is the eccn classification code of jib? thanks！

Description of the issue:
What is the ecln classification code of jib? thanks！

Final answer:
This publicly available code is not subject to the Export Administration Regulation (EAR) and has no Export Control Classification Number (ECCN).


Use genevent for plugins

Why
I added a simple genevent manager so that plugins can listen to new messages that the adapter hears. Its partially based off of @colinrymer's work (which is excellent btw!).  I wanted to create my own version of it just to learn a bit more about how it works and as a comparison point. I've also started adding some tests. There aren't a ton there yet but I figured we had to start somewhere. Let me know what you think.
Api choices
I decided to create two methods; hear/2 and respond/2. Respond listens to any messages prefaced with the bots name, such as butler cowsay hello. hear/2 can be used to listen to all other messages. Both functions can return either a {:noreply, state} tuple or a {:reply, "some reply message", state} tuple.
In order to create a handler the user now simply has to do this:
defmodule SomePlugin.MyPlugin do
  use Butler.Plugin

  def hear(msg, state) do
    if Regex.match?(~r/meh/, msg) do
      state.mehs = state.mehs + 1
    end

    {:noreply, state}
  end

  def respond("how much meh", state) do
    {:reply, "the meh is at #{state.mehs}", state}
  end
end

and add that plugin to the plugin list in mix.exs
#mix.exs

defmodule Butler.Mixfile do
  # ...
  def plugins do
    [ {SomePlugin.MyPlugin, []} ]
  end
end

I like the idea of adding the plugin list directly to the mix file since eventually I would like the bot to either install the plugins that are listed, or generate the list from the installed plugins.
Let me know if you have any feedback.

So one of the decisions I made in my spike was to have a plugin module's response look something like {:reply, {:code, "<the reply>"} where :code indicated that the module responsible for the output of the reply should format it appropriately, e.g. adding "```" for Slack and "/code" for HipChat. So far, potential descriptors I've identified are :code, :quote, and :text.

emote might be another one.
I think thats a great solution for allowing multiple adapters. I'd be interested to see an implementation of a non-slack adapter to see how it would work to drop in other adapters. Specifically it would be great to see a shell adapter for development purposes. Might be worth spiking on.
That said is that something that we need to do now or is it something that we can do once we have pluggable adapters?

I'd go ahead and setup the response to use the tuple with the response type - it's not much change that needs to be made to slack, and it'll make the implementation of adapters and plugins much simpler (e.g. the the shell adapter could just print the type and then the response with no additional formatting).

The shell responder could look something like:
defmodule Butler.Responder.Shell do
  use Butler.Responder

  def reply({type, message}) do
      IO.puts "Type: #{type}"
      IO.puts message
  end
end

I'll update the implementation to use the tuple.

Cool. Thoughts on Butler.Adapter vs Butler.Listener and Butler.Responder?
I think Butler.Adapter is nice in that you're only having to setup one file, but that seems like a violation of SRP and it's nice being able to setup multiple Responders without adding Listeners.

I personally prefer Butler.Adapter.  Doing it all in one module is fine for now IMO.


Moving ROM 1.x to a new 1.0 folder

Do we really need to keep the 1.x ROM source around in the tree? We've already got binaries for regression-testing purposes:
https://github.com/chipsalliance/caliptra-sw/blob/main/hw/1.0/caliptra-rom-1.0.1-9342687.bin

Do we really need to keep the 1.x ROM source around in the main tree? We've already got binaries for regression-testing purposes:
https://github.com/chipsalliance/caliptra-sw/blob/main/hw/1.0/caliptra-rom-1.0.1-9342687.bin

I guess if we're planning to simultaneously work on a 1.2 ROM along with a very-different 2.0 ROM, maybe it makes sense to have a directory for each. But if 1.2 is runtime-fw-only, I think we can just delete the 1.x ROM source (or evolve it into 2.x).

This change is no longer needed.


As a matter of practice, it should be safe and desirable to receive patch level updates to the Conversations framework

:+1:


Fix view_editDialplan design

Coverage remained the same at 96.346% when pulling feafcd02c49f22ace5a9ba2e4f8f51081b5249ab on view_editDialplan into b04b926f4c02337c8228847c6fee969744705782 on master.


Cherry-pick commit #3416 from Faiss baseline

https://github.com/facebookresearch/faiss/pull/3416

The code generated for function fvec_L2sqr generated by OpenXL do not perform as good as the codes generated by gcc on Power. The macros to enable imprecise floating point operation don’t cover Power with OpenXL. This patch adds the OpenXL compiler options for the PowerPC macros to achieve better performance.

rerun ut

/rerun-e2e

/run-e2e

/kind improvement


Fix config for new examples

polished docker and CI config for new examples, should be able to run all new examples in CI after these three changes are merged:
https://github.com/AcalaNetwork/hardhat-tutorials/pull/1
https://github.com/AcalaNetwork/truffle-tutorials/pull/1
https://github.com/AcalaNetwork/waffle-tutorials/pull/1

I think this should be ok, once we update the tutorial repository references once their PRs are closed.

@ThunderDeliverer I am going to merge this to #199 , and do a rebase to master. We could do following changes to the new branch


Develop our own LED library using addressableLED that replicates the Blinkin functionality

I'm thinking we start by stealing Mechanical Advantages Led class and use it as the beginning base for our code.
https://github.com/Mechanical-Advantage/RobotCode2024/blob/main/src/main/java/org/littletonrobotics/frc2024/subsystems/leds/Leds.java
It provides nearly all the base fxnality I want.  Thoughts, Sam?

Should be fine to start with

Implemented for State. Addressable LEDS looked great. new issue should be opened with specific goals


Added notice api

Solves Issue #10

Description:
Created Notice Schema and api
Checklist

[x] I've followed the Contributing guidelines provided in the repository.
[x] I've made the changes which were demanded in the linked issue.
[x] I've tested my code on a Postman.


Is there any way to get Hub from a class?

I want to get my Hub instance from another class.
Is there any way to do that?

No. See https://github.com/aspnet/SignalR/issues/182. Hubs are transient and are created when incoming data arrives from the socket. You can get at the hub context but you can't get a hub instance.


Code Formatting: append all variables which contain units with their units

This is a sub-issue of #11. Don't close #11 until all sub-issues are resolved.
I will help with this. Just want to teach the principle too is all since you'll write code faster than I can reformat it :).


Adds fallbacks fonts to GitHub

Fallbacks fonts use local fonts if they available in OS, otherwise visuals will use "arial" as a default font.

Hi @ignatvilesov, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!

It looks like you're a Microsoft contributor (Vilesov Ignat (Akvelon)). If you're full-time, we DON'T require a Contribution License Agreement. If you are a vendor, please DO sign the electronic Contribution License Agreement. It will take 2 minutes and there's no faxing! https://cla.microsoft.com.

TTYL, MSBOT;

Looks good.


Issue with RedirectToRouteRector rule

namespace App\Controller\Admin;

use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractDashboardController;
use EasyCorp\Bundle\EasyAdminBundle\Router\AdminUrlGenerator;
use Symfony\Component\Routing\Annotation\Route;

class DashboardController extends AbstractDashboardController
{
    private AdminUrlGenerator $adminUrlGenerator;

    public function __construct(AdminUrlGenerator $adminUrlGenerator)
    {
        $this->adminUrlGenerator = $adminUrlGenerator;
    }

    /**
     * @Route("/admin")
     */
    public function index(): Response
    {
        return $this->redirect($this->adminUrlGenerator->setController(UserCrudController::class)->generateUrl());
    }
}

use Rector\Symfony\Set\SymfonyLevelSetList;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;

return static function (ContainerConfigurator $containerConfigurator): void {
    $containerConfigurator->import(SymfonyLevelSetList::UP_TO_SYMFONY_54);
};

Results in:
    ---------- begin diff ----------
@@ @@

 class DashboardController extends AbstractDashboardController
 {
-    private AdminUrlGenerator $adminUrlGenerator;
-
-    public function __construct(AdminUrlGenerator $adminUrlGenerator)
-    {
-        $this->adminUrlGenerator = $adminUrlGenerator;
-    }
-
     /**
      * @Route("/admin")
      */
     public function index(): Response
     {
-        return $this->redirect($this->adminUrlGenerator->setController(UserCrudController::class)->generateUrl());
+        return $this->redirectToRoute(null);
     }
 }
    ----------- end diff -----------

With  error:
[ERROR] Could not process "/path/vendor/rector/rector/vendor/rector/rector-symfony/src/Rector/MethodCal/RedirectToRouteRector.php" file, due to:  Undefined offset: 0". On line: 80

Thank you for your report!
We'll need an isolated failing demo link from: http://getrector.org/demo,
that way we can reproduce the bug. Could you create one and share?

@TomasVotruba I've tried, but no output is generated. I assumed that this is related to exception.
However here it is: https://getrector.org/demo/1ec770c6-4e8f-6e2e-a0e1-9789b549589a

I see, thanks.
Could you send a failing test case in a pull-request, so we have it covered in RedirectToRouteRectorTest?

@cvele I can't reproduce it with the following fixture:
<?php

namespace Rector\Symfony\Tests\Rector\MethodCall\RedirectToRouteRector\Fixture;

use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractDashboardController;
use EasyCorp\Bundle\EasyAdminBundle\Router\AdminUrlGenerator;

final class SkipFromAdminUrlGenerator extends AbstractDashboardController
{
    public function __construct(private readonly AdminUrlGenerator $adminUrlGenerator)
    {
    }

    public function someAction()
    {
        return $this->redirect(
            $this->adminUrlGenerator
                 ->setController(UserCrudController::class)->generateUrl()
        );
    }
}

I am closing it, feel free to provide a failing fixture to https://github.com/rectorphp/rector-symfony/tree/main/tests/Rector/MethodCall/RedirectToRouteRector/Fixture if you still have issue. Thank you.

Rector seems to now just
    return $this->redirectToRoute(null);

I am just skipping for now
    $rectorConfig->skip([
        // Bug with EasyAdmin, see https://github.com/rectorphp/rector-symfony/issues/102
        RedirectToRouteRector::class,
    ]);


Updated master to main

Was reading through the article and noticed the master branch, changed it to main as this is the defacto standard nowadays.
Not sure what the policy is on this in the docs, but thought it wouldn't hurt to make this change.

@Jandev : Thanks for your contribution! The author(s) have been notified to review your proposed change.

#label:"aq-pr-triaged"

Thanks @Jandev!
#sign-off


Potentially dead tf.assert Op

It seems that there is an assert operation which might never be evaluated:
 tf.assert_equal(tf.size(root), tf.constant(1) )
https://github.com/JianGoForIt/YellowFin/blob/master/tuner_utils/yellowfin.py#L180
Newer versions of TF produce an error with that, and it was probably not the intended behaviour.
Related issue: https://github.com/tensorflow/tensorflow/issues/11315

@ilya-edrenkin Thanks for the detailed information. We have fixed this in master branch.


Variable type incorrectly narrowed to null when a callback is passed to a function

TypeScript Version:  2.2.2
Compile with StrictNullChecks enabled.
Code
class Foo {
    public bar: string = "";
}

function test() {
    let foo: Foo | null = null;

    [1].forEach((item) => {
        foo = new Foo();
    });

    // Here Typescript compiler incorrectly thinks that 'foo' has null type
    // although it will always be an instance of Foo class.
    if (foo) {
        // The next line does not compile because 'foo' variable has never type here.
        foo.bar;
    }
}

Expected behavior:
Should compile.
Actual behavior:
Does not compile. The compiler incorrectly narrows the type of foo variable to null type as it seems to ignore the callback given to the forEach function call, which actually will always be called.
Notes:
The code compiles without StrictNullChecks just fine.
The below code works as expected, and I believe the same would be the expected behavior for the example code as well:
class Foo {
    public bar: string = "";
}

function test() {
    let foo: Foo | null = null;

    // When calling a simple lambda explicitly this works as expected
    (() => {
        foo = new Foo();
    })();
    if (foo) {
        foo.bar;
    }
}

Duplicate of https://github.com/Microsoft/TypeScript/issues/10982 and https://github.com/Microsoft/TypeScript/issues/10613. See https://github.com/Microsoft/TypeScript/issues/9998 for relevant discussion.


v2 major mobile issues

Something is using way to much memory, possibly the annotations functions that are not denounced right now? I think mobile browser trigger resize events often which triggers cascading class to various things like the annotations functions.
Once v2 is near completion this needs to be addressed.

The main culprit is the reloadPage method that actually handles re-rendering pages. This method has some heavy(?) logic that calculates the new dimensions which could be moved into the rerenderPDF method; the rerenderPDF method is what actually calls reloadPage for every page.
NOTE: On large PDFs I could stop reloading pages that are a certain number out of view? This also would cut down drastically on rendering eating up resources.

Resize events trigger ~constantly~ easily on mobile devices which calls the handleWindowResize method far to often. Implementing a protection that checks for actual (substantial) changes in browser dimensions would solve this issue by itself; optimizations should still be made though like mentioned in the last comment.