implement a proper interface for the 2d camera

Refer to #41 and #42. This interface will be used in the scripting layer.
Default behavior

camera will never move if there is no target entity or position
camera spawns 3 units away from [0, 0, 0] zoomed in to an average level
camera spawns with no target (nullptr or Entity::Null)

Expected interfaces

set the camera position
set the camera rotation
set the camera zoom (force a min/max value and provide a default value)
set the camera's type (perspective/ortho)
set the camera near and far clip (force a min/max value and provide a default value)
set the camera target entity (can set to nullptr or Entity::Null to disable)
set the camera target position (overload of the above function to pass in a position)
halt all camera movement (instantly, no jitter or lerping)
set camera smoothness (0 for instant movement to target, force a min/max value)

Default behavior has yet to be confirmed but the rest of the interfaces are present


Add HL token

Official announcement: http://foxecology.cn.com/
Project team background:
The HL project team has a very experienced team of senior experts, and the team members have many years of experience in the blockchain industry. The HL project team has four core members, and dozens of excellent blockchain experts and development engineers are joining our team.Founder: Prescott——Senior architect, engaged in software architecture, design, and research and development for nearly 20 years. In his early years, he successfully led the team to implement medium and large software R&D and delivery for North American customers.
Project basic information:
Fox ecology is created by the HL Blockchain Foundation, aiming to use self-developed community autonomous flexible finance" The “increase and decrease” agreement effectively solves the existing problems in the industry. Through the establishment of the “increase and decrease agreement”, the formation of decentralization is driven to ensure that the price of the currency cannot be manipulated, thereby establishing a fairer, free and high-value return for users and investments Token space. Provide infrastructure and reference benchmarks for industry development, and drive high-value fission in the encrypted digital currency market.
Recommended Gas Limit (For ERC-20 project teams) for transaction:  60,000

欢迎在社区中推荐用户使用 imToken 2.0 ，imToken 支持比特币, 以太坊, Comos, EOS, 波场, Nervos, 比特币现金, 莱特币，波卡等资产管理；同时支持去中心化币币兑换功能 Tokenlon；转账页面支持 ETH, USDT, EOS, BTC OTC 功能；另外对于没有 ETH 矿工费的用户，也提供 ETH 手续费充值功能。


Troubleshooting -> Visual Diffs

Add section about Visual Diffs

Visual diff based on config in the branch?

Addressed in new section of Troubleshooting page: My Tugboat Preview has built, but something isn't as I expect -> Troubleshooting Visual Diffs.


Fixed crash when cross-file reusing nodes for class member snippet completions

fixes https://github.com/microsoft/TypeScript/issues/58205

Uhhhhh, kinda nervous about walking the tree on every literal.
@typescript-bot perf test this

I think the right thing to do is do a clone of the node from wherever this comes from. Especially since there are other bugs that often come up like when a node is reused within the tree and the formatter tries to overwrite it.

I think the right thing to do is do a clone of the node from wherever this comes from. Especially since there are other bugs that often come up like when a node is reused within the tree and the formatter tries to overwrite it.

Yep, if the underlying problem is that node re-use messes up the formatter calls in the services layer, we seem to have many occurrences of that. @armanio123 is working on a fix for https://github.com/microsoft/TypeScript/issues/57924#issuecomment-2016963508, which is an instance of this, although that crash is caused by re-use of a question token instead of a literal.

@typescript-bot perf test this

So I thought that the node reuse would be desired here. If I understand correctly you are saying that it should never happen here, right? Cloning the original node would likely make it synthesized or something and that would prevent reuse altogether.

So I thought that the node reuse would be desired here. If I understand correctly you are saying that it should never happen here, right? Cloning the original node would likely make it synthesized or something and that would prevent reuse altogether.

The current state of the formatter is such that we should never pass it an AST that has node reuse, as that will cause a crash. Other parts of the compiler don't suffer from this problem. I think the emitter doesn't care about node reuse, for the most part.
I think the problem is that the formatter was written to handle actual parse trees, coming from actual files, but we've been using it to format trees we generate for completions.

I think the problem is that the formatter was written to handle actual parse trees, coming from actual files, but we've been using it to format trees we generate for completions.

Yeah, and I believe the formatter actually mutates the parse trees, so that complicates things too.

I didn't see (yet?) any mutation like that happening. getSynthesizedDeepCloneWorker (that gets already called!) has some specific logic to handle string literals:
https://github.com/microsoft/TypeScript/blob/21b5c9624c0765e6baea1f21a26531aac4824a41/src/services/utilities.ts#L3205-L3211
createStringLiteralFromNode sets .textSourceNode on the created node:
https://github.com/microsoft/TypeScript/blob/21b5c9624c0765e6baea1f21a26531aac4824a41/src/compiler/factory/nodeFactory.ts#L1266
and that gets used here by the emitter in getLiteralTextOfNode:
https://github.com/microsoft/TypeScript/blob/21b5c9624c0765e6baea1f21a26531aac4824a41/src/compiler/emitter.ts#L5150
Given all of that It still feels like using the correct source file is the easiest here - but I can change the location where it's looked for because only the code that uses .textSourceNode has to look for that original source file. I pushed out this change - please take a look and let me know what do you think about it. If you like this approach I'll look for more locations using .textSourceNode because I'm pretty sure that this doesn't cover everything right now.

@typescript-bot perf test this

Some notes for the future:

This is not a bug related to node reuse. The bug is in how the emitter emits literals. A string literal node can be created from another node via createStringLiteralFromNode, and this newly string literal node will have a textSourceNode that points to the node it was created from. When the emitter tries to emit this string literal, it will attempt to get the text from this textSourceNode, because we prefer to get the original text as it was written, rather than the normalized version we store in the node's text property. But when it tries to get the text from this text source node, the emitter assumes the text source node's file is the current file, which is not necessarily true, and thus it gets the text from a different file, so the text is wrong.

In this PR, we'll only ever look up a node's source file when we are emitting a string literal that has the textSourceNode property, i.e., nodes created by transformers or services, so that doesn't seem very impactful for performance in general.


new monitoring pkg: servicemonitor handler added

@kononovn @trewest @cdvultur @achuzhoy PTAL

@trewest PTAL


darwin: fix uv_barrier race condition

Prior to this patch a race condition may occur
in case a thread tries to destroy the barrier
while other awaiting threads were not
notified. Since the internal mutex and
condition variables are destroyed this may
cause an undefined behavior as described
by the man pages.
So in order to prevent such scenarios the
detroy function will not wait until all
awaiting threads are finished before
proceeding.
Closes: #3102

Hey guys, I updated the code.

CI: https://ci.nodejs.org/job/libuv-test-commit/2179/

thank you!


The module was compiled against a different Node.js version

Unhandled promise rejection: Error: The module '/home/container/node_modules/better-sqlite3/build/Release/better_sqlite3.node' was compiled against a different Node.js version using NODE_MODULE_VERSION 83. This version of Node.js requires NODE_MODULE_VERSION 102. Please try re-compiling or re-installing the module (for instance, using npm rebuildornpm install)
Ive been trying to start my bot using pterodactyl panel and ive been getting this error, when running it on my pc or as a normal node process on my vps it runs just fine. Any ideas?

Please try re-compiling or re-installing the module (for instance, using npm rebuildornpm install``

I assume this didn't fix it? You are probably copying node_modules around.

the commands didnt fix it no. Any suggestions how i can fix?

I'm sure the solution is in here somewhere: https://github.com/JoshuaWise/better-sqlite3/search?q=The+module+was+compiled+against+a+different+Node.js+version&type=issues This is not an issue with better-sqlite3, you must be doing something wrong with how your install/build your packages.

Hi, using nodejs 18, getting this error too:
Error: The module '/myprojectpath/node_modules/better-sqlite3/build/Release/better_sqlite3.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 93. This version of Node.js requires
NODE_MODULE_VERSION 108. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or `npm install`).

I did remove my node_modulesand run yarn again, same issue.

I assume the wrong prebuilts are currently installed (instead of failing the prebuilt), see https://github.com/JoshuaWise/better-sqlite3/pull/800

It would be nice though, that this program works also on newer versions such as v18...

Node.js v18 has been out for all of two weeks. Support will come soon.

I'm sorry for my behavior JoshuaWise, it's just that I've gotten a bit burnt. I feel the shapes.
My current node version is v16.15.0, so that message that appears to me is very strange.
My apologies and I hope you have not taken it the wrong way.

JoshuaWise I installed node version 16.1.0 and miraculously it worked!! I can now connect to the database. Please, if you can delete my previous thread https://github.com/JoshuaWise/better-sqlite3/issues/805 I don't want to stain your work, I hope you have excused me.

@Regradert  Even though you wrote a huge rant there, you never mentioned you were trying to build against Electron v18. Module version 103  is reserved by Electron for version 18. Usually people who work with Electron a lot, are familiar with these module versions. Next time please make yourself familiar with the environment you're working on by reading stuff like this documentation. You would've been introduced to this thread if you made it clear there.
What happened was, you kept building the addon for your locally installed Node.js and kept trying to run that on Electron v18. Two different environments. All you had to do was search for what those versions meant. My suggestion is to use something like electron-builder which supports building native addons against the Electron version used by your project. Command is electron-builder install-app-deps. Simple as that.
@JoshuaWise can we get #126 pinned again? It's buried deep in old issues.

@m4heshd Thank you very much !! I wish I had found it sooner, that thread has helped me a lot.

Closing this as it's not really an issue with better-sqlite3.


damage_increase_on_hit

If the user dies with damage stacks, it will not reset. It also doesn't reset if you switch classes. The damage bonus will be applied to whatever the slot was for the new class (aka the secondary damage glitch that happens on my servers). Additional, if the user has stacks, then un-equip the custom weapon outside of spawn then touches a resupply.... the stacks aren't removed.
The only time is correctly removes stacks is when an enemy is killed.

https://youtu.be/hRGd2leX0WY

Should be hotfixed in a85e67e1e7748be10ba0264c6868c8fbe0785552, in case you missed it.
One remaining edge case would be that the damage bonus will carry over if the player equips a different weapon in the same slot with the damage increase mult on hit attribute and touches resupply, but there's no non-hacky way to fix that without either

resetting the damage bonus entirely on resupply even if it's the same weapon
patching up CW{3,4} with the item persistence fix and resetting the damage bonus on a new weapon equip


Handling the exit trap

Since wasmtime-py 0.18.0, it seems that when the main() function returns, the call to _start() also simply returns, which is good. However, it looks like if exit() is called, then the result is a wasmtime._trap.Trap: Exited with i32 exit status 1. It is not clear how this trap can be handled besides matching the exception message with a regex.

It looks like I am mistaken; the only change in behavior is that nonzero exit codes result in a trap now. That's great, actually! But I'd still need some nice way to handle the trap.

After more testing I think my original conclusion was accurate; I later dismissed it because wasmtime 0.17 had another issue, which is that it looks like setting argv doesn't work at all.

Ah yes, I'll add C API functions for inspecting this so a new exception class can be implemented here.

Ok I've added bindings for this at https://github.com/bytecodealliance/wasmtime-py/pull/35


reader: Fix conflicting sector error message.

The conflicting sector error message incorrectly displays the track instead
of the sector in conflict.  Fix by removing unused track and head arguments,
displaying only the sector in conflict.

Thanks!


change Control word to Dashboard

Current Behaviour:
The word control is written
Expected Behaviour:
change to Dashboard
Steps to Reproduce:
NO/

Environment:
Emulator: Pixel 6 Pro
Android version: 12
Android SDK: 33

hey @JordyHers , I would like to work on this ?

@gantanikhilraj don't forget to put the issue "in Progress" if you started working on it.


Training result not good

Hello! I'm trying to train the model from scratch, and I found even after 100 epochs on vocaset using the parameters you give, the result is depressing. The faces rarely move, and the performance is far from your given checkpoint's. Do you use other training tricks not listed in your paper or did I miss anything?

Is that so? I've tried to train on the vocaset and checked some rendering results following the instruction. The result seems fine to me though.

my training result on the default source code after 100 epochs is not good either, have you found some resolution? @Aiedails


[fa] rewrite sentences

Just some rewrites to make sentences suitable and easy to understand for common users who don't have any knowledge about programming.
PS: My first language is Farsi.

Hello,
thank you, but not conflict with the purpose of Anisi ?

I didn't see that coming. sorry for that.

Hello @mdaliyan,
it's not a problem, but, we have a problem in validation.php with attributes.password_confirmation.
I accept your version or his version ??

Well, Apart from the fact that I made a lot of change on the file, the only conflict between these 2 versions is "password_confirmation" key.
The exact translation for "confirmation" is "تاییدیه"... but this word is not used in this case. We commonly use "تکرار رمز عبور" that is translated to "repeat password". The most common use case of "تکرار رمز عبور" phrase is in ATMs.
As I said before, these translations are edited to be easy to understand for common users.
May you please tell your opinion @Anisi ?

I agree with your opinion @mdaliyan  about that "تکرار رمز عبور" is more common for users.

Thank you

That's right @Anisi . using "پست الکترونیک" bothers me a lot too.


Immediate back gesture fire

Hi,
using 2.0.0-alpha.42 causes immediate back gesture on iOS when I am just a bit too fast. When I touch the edge very carefully and drag suuuuper slow, it does not happen, but as soon as I fling it, it closes and don't follow the finger.
I know its Alpha, but though it's worth mentioning.

Can you upgrade to latest version and check if it's still an issue?

I swapped over to the native-stack, so I can't test it currently


⚠ ClamAV has degraded performance

In ab685b1, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 48 ms

Resolved: ClamAV performance has improved in e8e95cf after 5 minutes.


Expand source map usage for front-end

Right now the source map entries are the functions used to instantiate each module. For code reuse between modules of the same type, the source map should allow for other sub entries. There would need to be a standard name for the function used to create the front-end instance.
From the below example, a module would be created by calling new sourceMap["MyMod123"].create(). That instance could then call the someCommonFunction without needing to have a local copy of its own. The goal of this is to reduce the size of the instances created and improve code readability.
const sourceMap = {
  "MyMod123": {
    create: function() {
      // Create instance of class
    },
    someCommonFunction: function(a, b, c) {
      return a + b +c;
    }
  }
}

This has been scrapped for now


STG91 Beta Release

Description
Beta release for STG91 features.

API change check
API changes are not detected in this pull request.


question about your cross-validation & results reported in paper

Hi,
Thanks for sharing the code of your great work.
I noticed that you use n-fold cross validation for all 3 datasets. And I can see from your .bundle files that, in each split, you use 4/5 of all data for training and 1/5 of all data for testing (in the case of 5-fold cv).
I am just wondering how you select the best model, for example, how do you know at which epoch to save the model as your best model to report testing results on the 1/5 test data? Do you further split the 4/5 training data into a train set and a val set and use the small val set for model selection? (Though I do not see this from the code.) Or, do you use the 1/5 test data both for selecting the best model and reporting the results?
Please correct me If I am very wrong in understanding your training process.
Thanks!!

Hi kingofapplehead,
The .bundle files are borrowed from the implementation of MS-TCN (https://github.com/yabufarha/ms-tcn). Following the evaluation code of MS-TCN, we choose the epoch which achieve the best average performance over all splits (e.g., 4 or 5), where we believe it is a standard practice in cross-validation. We do not further split the training data into training set and val set. In my understanding, the cross-validation itself is used to avoid the usage of val set if the total size of training data is small. Therefore, if someone need to train a final model to predict in the true test set, he should train the model in all splits and use the same epoch with the one achieving best average performance over all splits in the cross-validation stage. Sadly, the datasets of action segmentation task commonly do not have a real test set which can only be evaluated in the online test server, so researchers in this area commonly just report the cross-validation results.
Please feel free to comment here if you have further questions.

Hi, I see what you mean. Thanks for your kind explanations!

Hi, I hope it is ok to comment on this closed issue, however my question is related to this. Happy to open a new issue if required.
Are you reporting the average training accuracy for the 5 splits? If so, is there a reason that the average test accuracy was not shown as I would expect this to be the more meaningful result? I have also asked this question of the MS-TCN project, as after forking their repository, I have noted a significantly reduced average test accuracy. I would have thought that this may indicate overfitting but I am keen to get your views on this?
Thanks for the great resources and great work by the way!!

Are you reporting the average training accuracy for the 5 splits? If so, is there a reason that the average test accuracy was not shown as I would expect this to be the more meaningful result?

Hi VassMorozov,
I do not understand your question well. First of all, all the reported accuracy results are average results from all splits (4 or 5) on the test set. In the cross-validation paradigm, the test set is a specific split and the training set is all other splits. If you mean the test accuracy differs from each split, I agree with you. But what is so called 'meaningful results'?

Hi, thanks you have answered my question. I wasn't sure if average train or test was being reported! By meaningful results, I meant it makes more sense to see the test rather than the train as the train would of course be higher than the test.
Thanks again!


Space before deleted character removed while using backspace

Jodit Version: 3.2.xxxxx
Browser: Chrome
OS: Windows/Linux
Step 1) Type 'a b c d e'
Step 2) Set cursor after e
Step 3) Press backspace
Actual behaviour: The space after 'd' is also deleted
Expected behaviour: Space should not be removed

Yes, this is a very, very annoying new behavior, wants me to go back to a much older Jodit. And at first, I was thinking it had to do with the different line breaks like , or  but that did not fix it. Also when going from editor to 'source view' and back this behavior sometimes is not there. Also now it just seems that the 'space' is still there but it is just not showing (as it takes 2 backspaces to remove the letters. It makes typing letters so awkward and so not conform other editors/word processors that this will be thrown off users.


Fix vendor contract missing

This PR fixes issue #2006

Can one of the admins verify this patch?

Coverage remained the same at 41.678% when pulling 5ff3c63f27017a8f5d3c80e69164c84090341779 on fix_vendor_contract_missing into 90350e3c204c54511f89f39e559e2b61369eb63c on ethereum-master.

[ ] @amangale will be extending this fix to other dispute functions


docs: explain how to configure the dagger engine

Explain how to configure mirror on the dagger engine
Resolves: #5055

@TomChv, please see my changes and merge if OK.

I'm not totally sure if it's a good idea to put this in our "official website docs". The reason it's just in the "advanced" operator manual on our repo is that it's currently a pretty advanced use case that requires custom setup of Dagger, use of _EXPERIMENTAL_* env vars etc. We've generally tried to avoid going into all of that on our official docs since it's all meant to be a temporary solution to unblock power users, with better interfaces to come later.
For example, this guide is currently highly specific to a custom engine running in docker, but most of the time power users are running somewhere else, so it's not clear if the docker-specific instructions would be all that useful to them; I fear it may just raise more questions than it answers in addition to enshrining our current hacky OX as the "official" way.
@shykes curious to get your thoughts here

@sipsma Should we put it into the operator manual then?

@vikram-dagger @sipsma I updated this PR by removing the guide and instead added a small line in the FAQ that redirect to our operator guide.
I think it's still important to mention it on our doc so user can find a result if they use the search bar but same as rootless, most of the content is in the operator guide.
Let me know if there's anything to change.
@vikram-dagger This change lighten the complete exemple but we have no guided example in our operator manual, so I just added a small one line example to show how to replace the default config file with the user's one.


Add forecast for materials in queue

It should work like Tracker._queue(), but start date = end of the all reading materials + 1

Tracker._queue() removed: b70410d77ea31858e14517f251965bceff910efe


Add option to encrypt logs via KMS

Description
Add option to encrypt logs via KMS. Supported options

no encryption
module managed KMS key
user provided key

Migrations required
NO
Verification
default
Documentation
Please ensure you update the README in _docs/README.md. The README.md in the root can be updated by running the script ci/bin/autodocs.sh

@hendrixroa I was inspired by your PR #132 but took a bit different approach providing / supporting a few scenario's. What do you think of this approach?

@npalm Yes, I agree, the encryption kms should be optionally


Add support for Path mapping in Vendor package

Because the proxy is based on Flow convention, we can not support path mapping in Vendor package (stored in the Library folder). If Flow is configured to build proxy class for those packages, the path mapping will not work.

Not really a big problem for modern Flow version, package from Library are skipped from proxy by default.


Update application-gateway-backend-health-troubleshooting.md

Update link to start and stop application gateway to new Powershell documentation.

@greg-lindsay
Can you review the proposed changes?
When the changes are ready for publication, add a #sign-off comment to signal that the PR is ready for the review team to merge.
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

#sign-off


UHF-8503: CKEditor cleanup (path fix)

UHF-8503

What was done

CKE configuration filepath was not using assets-path

How to install

Make sure your instance is up and running on latest dev branch.

git pull origin dev
make fresh

Update the Helfi Platform config

composer require drupal/helfi_platform_config:dev-UHF-8503_CKEditor_cleanup

Run make drush-updb drush-cr

How to test

[ ] Check that CKE config is loaded via assets-path
[ ] Check that code follows our standards

Other PRs

Codecov Report

Merging #553 (d01cd27) into main (3332988) will not change coverage.
The diff coverage is n/a.

:exclamation: Current head d01cd27 differs from pull request most recent head c0ee88f. Consider uploading reports for the commit c0ee88f to get more accurate results

@@            Coverage Diff            @@
##               main     #553   +/-   ##
=========================================
  Coverage     12.74%   12.74%
  Complexity      236      236
=========================================
  Files            30       30
  Lines           902      902
=========================================
  Hits            115      115
  Misses          787      787

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Update CI for SGO role binding change (#316)

Resolve issue with CR and CSV example for snmptrap receiver (#307)

Expose minimal set of bridge controls for SGs (#312)

Expose minimal set of bridge controls for SGs

Expose a minimal set of bridge controls for sg-bridge in the clouds
collectors configuration. Exposes the ringBufferCount, ringBufferSize
and verbose options. Sets the default values to an increased value of
16384 which seemed to be safe in testing and deal with most of the
buffer overflows that were resulting in corrupted messages being passed
to sg-core. The values can now be tuned to match the environment easily.
Discussion also referenced originally in
https://github.com/infrawatch/smart-gateway-operator/pull/91. This
change helps satisfy for changes in sg-core that allows it to receive
larger message sizes per https://github.com/infrawatch/sg-core/pull/74.

Implement defaults in user-interface (OLM)

Update CI for SGO role binding change

Fix path for role binding namespace replacement

Fix the path for the role binding namespace replacement in CI for Smart
Gateway Operator.

Fix linting

Fix linting by locking versions (#113) (#317)

Lock versions installed as part of the CI linting system as new rules
existing for newer Ansible Runner versions (which we're not using).
Cherry picked from commit 737a30e7c56ef492242731d92600297738397a93
--> infrawatch/smart-gateway-operator.git

This PR confuses me appears to only contain the linting changes, not any of the role binding or bridge controls mentioned in the description. I'm okay with the actual changes, just wondering if this was an oops of somesort,

That's the set of changes that were part of the cherry-pick commit message. I effectively duplicated the changes in this PR (which was oddly only merged into stable-1.4...), so the commit message itself is actually invalid. I should have actually modified the commit message to better call out what was expected.
I might still do that, but I'll have to force-push the changes here (which I think is ok, no one is going to be working again this PR). I'll make the commit message better reflect why these changes exist.


poetry

Description
see https://github.com/Josh-XT/AGiXT/pull/463
Wanted to rename the branch, thought it was transparent, but it killed the old PR
Motivation and Context

How has this been tested?

Screenshots (if appropriate)
Types of changes

Changes visible to users:

[ ] Bug fix (prefix: fix - non-breaking change which fixes an issue)
[ ] New feature (prefix: feat - non-breaking change which adds functionality)
[ ] Breaking change (prefix: feat!! or fix!! - fix or feature that would cause existing functionality to not work as expected)

Internal changes:

[ ] Refactor (prefix: refactor - non-breaking change which only improves the design or structure of existing code, and making no changes to its external behaviour)
[ ] Tests (prefix: test - additions and improvements to unit tests and the smoke tests)
[ ] Infrastructure (prefix: chore - examples include GitHub Actions, issue templates)

Checklist

[ ] My code follows the code style of this project and passes yarn run lint.
[ ] My change requires a change to the documentation.
[ ] My change works!

@Josh-XT fixed the publishing, just fails because i dont have rights for agixt package
Python-publish operation already in place, all you need to do is to put this in your workflow:
https://github.com/localagi/AGiXT-docker/blob/build-localagi/.github/workflows/publish-pypi.yaml
(Make it how it suits you - like build triggers, repo branch - the source and default values are here, you probably can leave out everything: https://github.com/localagi/AI-pipeline/blob/main/.github/workflows/operation-python-build-publish.yml)

Ah yeah, and the ddg fix is already in a long time...ignore the conflict please, just remove requirements.txt

Has conflicts currently. Also need to have the actual version on the API, not just v1.0.0.

Has conflicts currently. Also need to have the actual version on the API, not just v1.0.0.

The conflicts dont matter. Delete the requirements txt. Your change.
Whats the API version for?

Double checked. It's perfect (99%-human-perfect).
Improves and keeps away a lot of reocurring errors the last weeks.
Additional versions can be pinned (and i am already doing so to further stabilize the builds, but that's topic for another PR to check the particular changes)

refs https://github.com/Josh-XT/AGiXT/issues/462


launching air through makefile not working

Abstract
When using the make watch command I get the response air is not installed. Do you want to install it now? (y/n) Even though air is installed and is in my $GOPATH/bin.
Issue Replication
Machine type: darwin amd64 (206 macbook pro)
Expected Behavior
With my environment laid out as it is this command should run air the way it does when I use the air command

do you have $GOPATH configured? what's the output when you type echo $GOPATH in your terminal?


Applying 1/2 Move, 1/2 Dodge (and 1/2 ST)

@InexplicableVic had a suggestion.   A status that would apply 1/2 move, 1/2 dodge (and 1/2 ST) for 1/3 fatigue or 1/3 HP.
Originally, I didn't want to do this because of the automation aspect.   I didn't want to "automatically" apply 1/2M,D(,ST).    But if we make the GM manually apply the status, all it would do would be to lower those values.    1/2 Move and 1/2 Dodge would be easy enough.   I don't know what we would do with 1/2ST.   Does that affect weapon damage or encumbrance or anything like that?   If not, I guess we could 1/2 ST as well.
One problem is NPCs.   The GM might not want the players to know if the NPC is 1/3 FP or 1/3 HP.    So we might not be able to use the standard Status Effects, and instead, make it some kind of GM only flag that can be set per character.
Thoughts?

For the most part, 1/2 move and 1/2 dodge come up a lot in combat (it's all part of that fun "death spiral").  GCS has that built in, IIRC. The ST is really just for ST rolls (like forcing a door, pinning someone), but doesn't lower HP or damage, so that's not as big a deal, and candidly doesn't come up a lot.
With regard to NPCs--yeah, I can see GMs not wanting players to know that (I don't let them know exactly, but they always have a good idea). I think it could be a status effect, but it could just be something built into the sheet, kind of like how in GCS, if you lower current HP to less than 1/3, it adjusts move and doge (same for FP, and then for both--see below). I have no idea how that gets implemented in the code, but it does know to signal death checks at -1x HP, etc., so perhaps it is similar to that function? (Forgive my lack of understanding when it comes to coding).

I don't have an implementation yet, but I was playing around with an interface idea, and I think it could work.   Since 1/3 FP and 1/3 HP are MOSTLY related to combat, we could enhance the combat tracker to add 2 new icons (and only the GM can see these), something like:

Also, we could enhance the character sheet to show icons, which only the GM can see, and they could click on (RED) or leave off (grey) to turn on/off the 1/3 FP or 1/3 HP status.

I get the "get-that-automation-outta-here!" approach.
I can't say about Fantasy Grounds, but Roll20 applies 1/2 move, 1/2 dodge (and 1/2 ST) for 1/3 fatigue or 1/3 HP.
Maybe it would be something the GM would apply via a /you-are-busted <actor> function?

I personally liked this idea enough to write it into my last "system" for maptool directly. As much as I think it's a good idea, it is opinionated in the sense that all of the GURPS rules are optional. Other GMs may not want to use that rule and an automatic thing will obfuscate the numbers they're hoping to find.
So yes, this feature is a good idea, but there should be some sort of "opt-out" option somewhere.

I don't know what we would do with 1/2ST. Does that affect weapon damage or encumbrance or anything like that? If not, I guess we could 1/2 ST as well.

@crnormand I think the strength penalty is just for lifting/strength contests, but I may be wrong about that.

Sorry, I didn't explain it well (and the pictures implied more than they should).   The "Opt-Out" options are the icons themselves.
Until we are allowed to do the automation... the GM will have the manually click the icons to enable the 1/2 Move/Dodge, etc.    If/when we are allowed to automate this, I would add a system setting to allow the GM to control how it works.
But my proposal is completely manual.   I just placed the icons in the HP and FP condition fields since there was some room, and it could be a gentle reminder to the GM (as the condition background changes from green to cyan and others), the "heart" icon will stay gray, until the GM clicks on it.

Actually, thinking about it, if the GM turns on one of the options, it will probably display the red icon on the player sheet (but not the gray one).   As a reminder to the player why their move and dodge (and maybe ST) are down.   It would not be clickable by the player... it would just be there as a visual reminder.

@trev-dev I read it as not affecting damage or encumbrance (the person's move is already brought down significantly due the status, so it probably doesn't matter). It would affect ST checks (wrestling, forcing doors, etc.).

I'm okay with this. I would like it if the meaning of the icons were clearer, but I can't think of good, compact, images that say 'tired' or 'reeling'. I say go for it. The icons should have the standard red glow that all buttons do in Foundry when hovered over to indicate that they do something, and there should be a tooltip that says 'Apply 1/2 Move, Dodge, ST' etc.

Wow, I really like these ideas and the implementation. Yeah, clicking on reeling or tired and having that affect move & dodge? That is really great. I'd love to see that implemented.

I am about 50% done with this.   But right now, the GM/Owner can click on the grey 'heart' icons in the codition area to turn on/off "Reeling" or "Tired" (or both).   A whisper is sent to the owner to remind them of this fact,  And when they are on, they pulsate red.

At some point in a future, I will probably add a system setting to do this automatically (depending on SJG)

Lookin' GOOOOOOOOOOD. Thanks, man.

I've cleaned up the chat message and implemented the feature in the Full and Combat sheets.    https://github.com/crnormand/gurps/pull/338   It doesn't make as much sense in the Simplified or NPC sheet.   If the GM really needs the functionality, they can always switch to the Full sheet.
I am going to investigate if I can actually put it in the combat tracker... the earlier pic was just for show.... the buttons didn't work.

Added buttons to Combat tracker as well.   https://github.com/crnormand/gurps/pull/342.   Closing.


md-data-table eating drop events

I'm trying to make a row or a cell within a row a drop target. On the table row, the table cell and a span within the cell I've tried adding:
ondrop="order.dropFromWeb(event)"  ondragover="order.allowDrop(event)" ondragexit="order.allowDrop(event)" ondragenter="order.allowDrop(event)"
All of these are removed from the HTML when it's rendered. I know I should probably create a directive, but was trying to get something up and running first.

I wrote a sortable directive a few months ago that would reorder an arbitrary list of elements, including table rows, by drag and drop. I did not use HTML5's drag and drop API because I remember it being a problem with table rows.
My data table module should not remove attributes, I suspect that the browser is doing this because HTML5 drag and drop attributes within a table are invalid?
I've been given permission to open source some of the directives/modules I've written for the people I work for. I may open source my sortable directive soon.

@daniel-nagy Do you have an update regarding your sortable directive? That would be awesome!


Season not syncing in coop-multiplayer

For some reason, in community multiplayer games, the first season is Spring only for the host, but for other players the starting season is Summer.
Host:

Client:

Looks like you have lock configuration disabled on server side and season override Summer enabled in client side.

Looks like you have lock configuration disabled on server side and season override Summer enabled in client side.

Both enabled... This is my Modpack, I upload the configs to assure me and my wife are playing the exact same thing:
https://valheim.thunderstore.io/package/KAW/KAW_Modpack/

You're right. The first season should be Spring. And my only guess is something is wrong with day length, net time (time in seconds since world start) or season override. Current season and day are updated on the server and sent to the clients.
You can try to enable logging in General section and log time in Test section to see if the calculation of current day and season is right. Also when you enable loggin in General you should see the moment the day and season are synced.
It would help if you share the log files from the server and client. With "Logging" enabled and "Log time" disabled. I have no way currently to test it in player-player connection and on dedicated server everything is working just fine. Maybe the logs will help.

Hey, sorry for late response, got a busy day.
Host Log:
LogOutput.log
Client Log:
LogOutput.log
If you are up to, we can chat on discord to test player-player stuff, just sent you a friend invite (williamcp10).

Fixed in 1.1.4


TrustWallet iOS app collapses when connecting with WalletConnect

Expected Behavior
When connecting with WalletConnect after scanning the QR code and clicking "send test transaction" in the website the app shouldn't crash, instead it should proceed smoothly.
Current Behavior
Instead of proceeding with the test, the app suddenly crashes. This shouldn't be happening.
Possible Solution
A better integration with WalletConnect should be implemented to prevent the app from crashing when using WalletConnect.
Steps to Reproduce (for bugs)

Download the TrustWallet app from the iOS App Store

Visit https://example.walletconnect.org/

Click Connect to WalletConnect and scan the QR with the TrustWallet iOS app.

Click "send test transaction" in WalletConnect.

Videos:
iPad POV: https://www.youtube.com/watch?v=t8VjPBiZX0s
Computer with WalletConnect POV: https://www.youtube.com/watch?v=P-t6DHhiZQs
Video where the 2 devices can be seen at the same time: https://www.youtube.com/watch?v=3BhvAggi_wU
Context
This issue affected me because I wasn't able to use/test WalletConnect.
The integration with WalletConnect should be improved.

@vikmeup I don't think it is the iPad. What makes you think that?

@dedicatedguy This issue has been fixed on the iOS app and will be released this week.
on iPad, if popoverPresentationController not specified for alert view controller, it just crashes the app.

Hey @vikmeup 👋
I'm looking into using TrustWallet for a Cosmos webapp. Any chance you can point me to the resolved issue for the iOS app?

Does Cosmos webapp supports WalletConnect? Can you provide content that you are signing?

@vikmeup this will be a simple MEW like webapp used to generate and sign Cosmos txs.
I don't have anything to show you atm, but just wanted to know if TrustWallet iOS app will work with walletconnect and be able to provide me signing functionality?

Yes! We are able to support it, this would be awesome! We would need to add cosmos models on app side to support signing.  I will message you in tendermint slack group tonight for details

Cool! So as of right now, if I establish a connection through wallet-connect, I can’t sign cosmos messages? Thanks!


add support for macos sequoia

Thanks for confirming @chefnaphtha; I'll close the issue and update the README. I'm still on an older version of macOS and couldn't check it myself.

it works on sequoia

well for me it doesn’t work it says this

it works on sequoia

well for me it doesn’t work it says this

nevermind i fixed it


[stable/falco] Fix issues from https://github.com/helm/charts/pull/14813

Signed-off-by: Néstor Salceda<EMAIL_ADDRESS>
What this PR does / why we need it:
This PR fixes the issues with previous pull request https://github.com/helm/charts/pull/14813
There were 3 things that were not properly reviewed:

Why was update to 0.8.x series without a valid reason?
Didn't have a ChangeLog entry
The PR name doesn't start by [stable/falco]

Which issue this PR fixes
(optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close that issue when PR gets merged)

fixes #

Special notes for your reviewer:
Checklist
[Place an '[x]' (no spaces) in all applicable fields. Please remove unrelated fields.]

[x] DCO signed
[x] Chart Version bumped
[x] Variables are documented in the README.md
[x] Title of the PR starts with chart name (e.g. [stable/chart])

/assign @bencer


process started at ...has now terminated shown if reading from a file

the <process started at ...has now terminated> messages are intended to be shown for processes only, but other logsources now also report it.

cannot reproduce, closing


basic support for compiling C files

closes #321
Very basic support. Files that end with .c will pass -x c instead of -x c++ to the compiler and the -std=YY is not added.
For my use case it's very useful because we include zlib in the project and I just want to compile the C files.

Code review OK. Thanks for helping us implementing this.

Good to see it was merged so quickly :)
Thanks again for your great tool!


Highlighting breaks after multiple protocol inheritance and with @main

In the following file at the bottom: https://github.com/apple/swift/pull/68861/files
The coloring seems to break after a few protocols are listed in the inheritance part of a declaration:

Similarly the @main strut Main coloring also breaks all the way until the code comment

This looks to be a duplicate of #10 which I believe is caused by https://github.com/github-linguist/linguist/issues/6668. You can follow that issue if you're interested in tracking the investigation.

I see, thanks for cross referencing!


upgrade to v0.22 bindings

fixes #121

I want this.

There may be some additional work to do regarding implicit vs. explicit
acknowledgements in the scheduler/executor bindings. We're very accepting
of PR's if you're so inclined :)
On Fri, Jun 19, 2015 at 12:51 PM, Andrew Hodges<EMAIL_ADDRESS>wrote:

I want this.
—
Reply to this email directly or view it on GitHub
https://github.com/mesos/mesos-go/pull/124#issuecomment-113572566.

xref #102 - parameterize implicit acknowledgements

0.23 bindings have already been merged, closing this out


IRlock driver in v1.7.4 Beta

I want to use precland mode with IRlock camera. It seems that precland is supported on v1.7.4 Beta, not on v1.7.3 Stable.
In v1.7.4 Beta, if I type "irlock start", "irlock test" and show up the IR marker (MarkOne Beacon V2.0), then the FW shows some detection results (3-10 times) and abruptly RESET the Pixhawk, stop all of motors if it is arming (tested in both case of arming and disarming).
But if I switch back to v1.7.3 Stable, the irlock driver works fine, just don't have "precland" mode.

@ndepal Could you have a look?

We are using the irlock driver on a PixRacer and  have never seen these issues. But I also never use irlock test, perhaps that's what causes problems.
Does it only crash if you do irlock test? What happens if you do irlock start and then listener irlock_report once you hold the beacon in front of the camera?
What board are you using?
Using a PixRacer with PX4 1.7.4 I can't reproduce this issue.

I am using  Pixhawk 2.4.8 board and enable driver/irlock module in v2-default.cmake file
I cannot fit listener module in the flash (just 1MB) for your suggestion. But I modify px4_simple_app to listen to irlock_report topic. It works without any problem when I show the IR marker infront of the IR camera.
So I think the problem comes from "irlock test" function.


remove Js-string related definitions

We will support the Js-string-builtin proposal, so the legacy Js-string is removed.

we can make a heads up warning first before removing it

we can make a heads up warning first before removing it

Done.


default distiller with new pairtools

just want to trigger the test:
Docker has to be rebuild and pushed: only mirnylab can do this ...
Create our own images for now?!

upcoming changes to pairsamtools makes proposed changes irrelevant


mkpr package.json sed s/"npm-pkgbuild":.*/"npm-pkgbuild":"^6.5.1",/

Pull Request Test Coverage Report for Build 1756

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 99.7%

Totals

Change from base Build 1750:
0.0%

Covered Lines:
302

Relevant Lines:
302

💛  - Coveralls


Handle fit being called again

If fit is called on a fit model again, it should either add more trees, or reset it. Probably reset it.

Released


stack layout 'wiggle' offset mode cannot generate right results

I'm using stack layout, and I cannot understand why with the same code I can generate plots using as offset zero, expand and silhouette while using the same dataset and the same stack layout the wiggle offset does not produce anything.  While I using wiggle mode, I get results with NaN y0.

It’s probably because you haven’t set an x-accessor, and the wiggle offset in 3.x requires it. It turns out the x-values actually cancel out in the calculation so this accessor will be removed in 4.0, but you’ll need to specify one to use it in 3.x. (Alternatively, you could pull in d3-shape and use the prerelease 4.0 version, but that’s probably not worth the hassle.)


inconsistent application of reset_coords

We are not consistent in the structure of the datasets we return.
If there is an ensemble dimension, we apply the reset_coords method to change variables that we set as coordinates for convenience and that do not have corresponding dimensions back to data_vars
https://github.com/NCAR/intake-esm/blob/57d99a0184f296acec977ab004471cc4faa7bff7/intake_esm/aggregate.py#L171-L172
However, if there is no ensemble dimension, this reset is not applied. Having things like time_bound as a coordinate confuses other tools (i.e., esmlab), so I think we should always apply this reset.

Fixed in #91


Fix latency

Specify suggested_latency from device info. This is the same behavior as when previously using Stream::open_default() before 1396f97. Using the default high output latency ensures robust playback. This fixes #102.

Thanks !


Fix low contrast

Identified in Android pre-launch report

Closed with https://github.com/NebraLtd/maker-starter-app/pull/110


MessageVideoNote Caption is missing

In some telegram messenger such as iOS telegram client and mac telegram client, the caption for VideoNote is present and is shown as expected (So it basically supports caption).
But in this tdlib and some clients such as Telegram X, it doesn't show the caption. And in documents it seems that VideoNote doesn't support caption officially.
Can you add caption to MessageVideoNote.It would be appreciated.
Thanks for sharing this great library.

Video notes aren’t normal videos, but round ones (referred as video messages in other clients)

VideoNotes are round ones in client side but they are really  squared ones which therefor can be shown as round.
There is not much difference between them.
Adding caption for them as we know they already accept it, should not be a problem .

Thanks, for pointing this out. The problem is that all clients must be consistent with each other: there is no reason to allow to send something that can't be seen by others. If iOS and macOS Telegram clients show it and Android (both X and regular) and Desktop clients don't show it, then this inconsistency should be fixed. But there are two ways of fixing it: captions should be disallowed for video notes in all clients or should be shown in all clients. Initially it was decided that video notes shouldn't have a caption. If it isn't a case anymore, caption support for video notes will be added to TDLib, otherwise that support is better to be removed from iOS and macOS clients.

Thank you for the explanation. I love this library and want it to be great.

It is up to the clients, it can use it or leave it.
The first implementation of this feature was due to sending selfie videos but nowadays it can be used for music video clips and more which a caption would be very meaningful.
This feature is useful and it is supported by telegram api(because it is now using in some clients), so ignoring it would be a pity.

It is up to the clients, it can use it or leave it

No, all up-to-date clients should behave in the same way.

The first implementation of this feature was due to sending selfie videos but nowadays it can be used for music video clips and more which a caption would be very meaningful.

VideoNotes was added exactly for selfie-like videos, there is no way to send other videos as video note in official clients. For music video clips the ordinary video format is much more appropriate.

This feature is useful and it is supported by telegram api(because it is now using in some clients), so ignoring it would be a pity.

Core Telegram API is type agnostic. It also allows to specify that video note is also a sticker and a voice note in the same time. If something is allowed by Telegram API, it doesn't mean that it will be or should be supported by clients.


Fix command: ... to support multiple platforms

Closes https://github.com/ansible/molecule/issues/1780.
I manually tested the following:
platforms:
  - name: instance-1
    image: centos:7

  - name: instance-2
    image: centos:7
    command: "bash -c 'while true; do sleep 20000; done'"

  - name: instance-3
    image: centos:7
    override_command: False

Where my Dockerfile.j2 file had the following:
CMD ["sh", "-c", "while true; do sleep 10000; done"]

And after a molecule create, I got:
(.venv) ➜  testrolelatest (fix-override-command) ✗ docker ps --no-trunc
CONTAINER ID                                                       IMAGE                     COMMAND                                        CREATED             STATUS              PORTS               NAMES
e6f23f65fb0a352504ecad956938b25905a7541900aa8f3a806848c7d7de784e   molecule_local/centos:7   "sh -c 'while true; do sleep 30000; done'"     6 seconds ago       Up 5 seconds                            instance-3
45f698f04447e1531e65880987f6910dc6b85c00bff0c637820a671314b45058   molecule_local/centos:7   "bash -c 'while true; do sleep 20000; done'"   7 seconds ago       Up 6 seconds                            instance-2
13dc5814db942a19dec510e87e078169e55449ae250af809a7dc7aeae0df9d58   molecule_local/centos:7   "bash -c 'while true; do sleep 10000; done'"   8 seconds ago       Up 7 seconds                            instance-1

What do you reckon @zeitounator? Your fix was good! :smile_cat:
PR Type

Bugfix Pull Request

Bumping this onto v2.20 project as a needed bug fix.

Can we also support exec syntax for command? ["some", "cmd", "args"]

Can we also support exec syntax for command? ["some", "cmd", "args"]

Sounds good, wanna open an issue?

@decentral1se Unfortunately the fix is not complete. Now we get a fail if all platforms are declared with override_command: false. This is how to fix
command: "{{ (command_directives_dict | default({}))[item.name] | default(omit) }}"

Oh dear @zeitounator, I took that reaction on the comment to mean testing went fine.
My fault, I'll get the patch out, thanks for following up!

Could you take a pass on https://github.com/ansible/molecule/pull/1793 @zeitounator, thanks!


fix: time related issues in the "map by line" page

Description
Fixes #902.
Fixes the following issues:

Single lines times stopped at 6PM
First lines were from 11PM the day before
The wrong time was used to filter the times (recorded at times instead of scheduled start time) - which resulted in issue 2.

Optimizations:

Optimized the useMemo to return an empty array if no positions passed the filter (typically when no line is chosen yet)
Switched to using a Set to ensure times can only appear in options once

screenshots

Taken at 22:58 (two minutes before the next bus is scheduled)

Taken at 23:00 (after the bus is scheduled)

@TomRytt Thanks for making this effort, I'm not really sure where this PR stands. Can I merge it?  Thank you very much

@TomRytt Thanks for making this effort, I'm not really sure where this PR stands. Can I merge it?  Thank you very much

Replying here so it is also documented as we resolved this face to face. After speaking I merged this PR but I am getting notifications that the Pipeline fails, I need to investigate it later today, might require assistance, I'll let you know if I do.

Thanks! It's failing because of a test that we should fix -
https://github.com/hasadna/open-bus-map-search/pull/958#issuecomment-2514118547
I'll address it later today (probably in the evening) by fixing / skipping the problematic test :pray:


Detect usage of scopes in the container

According to https://github.com/symfony/symfony/pull/15693, the scope concept of Symfony is removed in v3. It would be cool to add a detection for this to this tool to ease the migration of existing projects

At the moment we don't parse any configuration in order to detect deprecations, but IMO we could add a check in later a version :+1:

:+1:


Adding hundreds of millions of clauses crashes solve

I assumed this had something to do with passing too-large an array to the solve method at once... so I attempted to enhance the extension with a Solver class (I didn't change it's name from the Noddy template example though):
https://github.com/ContinuumIO/pycosat/compare/master...nmz787:patch-1
but when I run this, at 234 million clauses the python.exe RAM usage is just under 4GB (~3.89 GB), and it crashes.
I am not sure what to do, but will keep thinking.

This will also crash pycosat as-is, without my modifications:
pycosat.solve([[i for i in range(1,235000000)]])
confirmed by a friend who initially tried this on his pypi installed pycosat:
pycosat.solve([[i for i in range(1,1000000000)]])


Server maintenance tasks

Creating this here as a reminder for us to get some server / domain tasks done
Domain stuff

Terasology domains purchased - @Cervator - done!
Domains forwarded in some fashion - @Cervator

Hosting account

Account access of some sort setup for @Cervator & @stellarfirefly to be able to admin forum / blog / wiki / etc / maybe even game server down the road - @begla

Jenkins

Users for @Cervator, @Stuthulhu, and @stellarfirefly - @begla

Blog

Adjust links for Twitter and Facebook with those two now renamed - @begla or @Cervator
Add links in a more prominent position (header?) to our other sites (GitHub, Wiki, Forum, Jenkins, YouTube...) - @begla or @Cervator

Some added related stuff on this note: New<EMAIL_ADDRESS>emails have been created and made functional; some of our services have been set to use the new emails (and made more time-generic as we're spread all over timezones); an IRC robot has been prepared; and new core contributor Marc has been set up with some more access

I think I've forgotten to do something important here. Help? Otherwise this issue can be closed.

We did this partially - I've had it sitting in a browser tab for a while to get back to it and do the redirects for instance :-)
Getting the links into a prominent spot on the forum was another relative biggie, but might split that out for later, not sure it is super easy.


Revert "Bump three from 0.127.0 to 0.128.0"

This should hopefully patch #184 while we figure out what went wrong and write a more permanent solution.

Confirmed that this fixes the issue; waiting on a review.


Workflow does not complete if count_reads is true but  run_static_html is false

As count_reads can be true but run_static_html can be false, I wanted to see how the workflow would behave under this configuration (i.e. the user wants to count reads but doesn't want HTML output) . Currently the workflow terminates without invoking collateTpms or countReads.
Branch develop, commit 66ccfb5 Thu Aug 19 05:41:11 2021:
$ rm -rf vignette/output/ vignette/index vignette/tmp/ work/
$ nextflow run prep_riboviz.nf -ansi-log false -params-file vignette/vignette_config.yaml --run_static_html false
...
[fb/9f30f9] Submitted process > generateStatsFigs (WTnone)
[2e/e0748a] Submitted process > generateStatsFigs (WT3AT)
Finished processing sample: WTnone
[e8/223a8a] Submitted process > renameTpms (WTnone)
Finished processing sample: WT3AT
No sample was visualised successfully

$ echo $?
1
$ ls vignette/output/
WT3AT  WTnone

The workflow has prematurely terminated and both read_counts.tsv and TPMs_collated.tsv are missing :-(
Branch parallel-count-reads-386, commit d1bffa2 Mon Aug 16 11:17:52 2021:
$ rm -rf vignette/output/ vignette/index vignette/tmp/ work/
$ nextflow run prep_riboviz.nf -ansi-log false -params-file vignette/vignette_config.yaml --run_static_html false
...
[bd/9641ca] Submitted process > generateStatsFigs (WTnone)
[22/68012b] Submitted process > generateStatsFigs (WT3AT)
Finished processing sample: WTnone
[56/d05e19] Submitted process > renameTpms (WTnone)
Finished processing sample: WT3AT
No sample was visualised successfully

$ echo $?
1
$ ls vignette/output/
WT3AT  WTnone

Same issue.
In develop, the countReads process has a dependency on channel collate_tpms_sample_ids from collateTpms. This ensures that countReads doesn't start until collateTpms has complete and processing of samples (not counting staticHTML) has completed.
In parallel-count-reads-386 (for #386), the countReads process dependency on channel collate_tpms_sample_ids from collateTpms was updated by @canuse to depend on static_html_sample_ids from the staticHTML process. This ensures that countReads doesn't start until processing of all samples in staticHTML has completed. This prevents these two compute-intensive tasks from happening concurrently.
In both cases the workflow needs to be studied to see how it can be redesigned to avoid this situation. On a more general point, the more optional steps that are introduced into the workflow the more likely such issues might arise.

Though I found this via looking at #386, given it affects develop too I don't think it should block any future merge of #386's branch into develop. Nor is it critical - users just have to not use that configuration combination!

prep_riboviz.nf has:
process staticHTML {
    ...
    output:
      val sample_id into finished_viz_sample_id
      file "${sample_id}_output_report.html" into static_html_html
    when:
      params.run_static_html
    ...

finished_viz_sample_id
    .ifEmpty { exit 1, "No sample was visualised successfully" }
    .view { "Finished visualising sample: ${it}" }

If run_static_html is false then staticHTML produces no output onto finished_viz_sample_id so it will always be empty and so finished_viz_sample_id will always immediately terminate the workflow. The exit needs to be made dependant, somehow, on run_static_html also.

In addition, for the parallel-count-reads-386 branch, how to ensure that countReads triggers even if staticHTML produces no output?
OR
How to ensure that countReads and staticHTML do not execute concurrently? Is there another approach not involving input/output channels?

Commit 30a73c8 in workflow-bug-fix-416 has a bug fix for develop:
// Create handler for finished_viz_sample_id channel, output by
// staticHTML, only if run_static_html is true i.e. if staticHTML
// executes.
if (params.run_static_html) {
  finished_viz_sample_id
      .ifEmpty { exit 1, "No sample was visualised successfully" }
      .view { "Finished visualising sample: ${it}" }
}

run_static_html false:
$ rm -rf vignette/output/ vignette/index vignette/tmp/ work/
$ nextflow run prep_riboviz.nf -ansi-log false -params-file vignette/vignette_config.yaml --run_static_html false
...
[2a/dd66ea] Submitted process > generateStatsFigs (WTnone)
[bd/b4c860] Submitted process > generateStatsFigs (WT3AT)
Finished processing sample: WTnone
[7d/e8102a] Submitted process > renameTpms (WTnone)
Finished processing sample: WT3AT
[bb/0fd8b3] Submitted process > renameTpms (WT3AT)
[20/d14aa7] Submitted process > collateTpms (WTnone, WT3AT)
[d2/64cfe9] Submitted process > countReads
Workflow finished! (OK)
$ echo $?
0
$ ls vignette/output/
read_counts.tsv  TPMs_collated.tsv  WT3AT  WTnone

run_static_html true:
$ rm -rf vignette/output/ vignette/index vignette/tmp/ work/
$ nextflow run prep_riboviz.nf -ansi-log false -params-file vignette/vignette_config.yaml
...
[c1/9f5791] Submitted process > generateStatsFigs (WTnone)
[58/6f4ebe] Submitted process > generateStatsFigs (WT3AT)
Finished processing sample: WTnone
[47/d34dec] Submitted process > staticHTML (WTnone)
[27/ae2aec] Submitted process > renameTpms (WTnone)
Finished processing sample: WT3AT
[0b/50a3c9] Submitted process > renameTpms (WT3AT)
[2f/34cc4f] Submitted process > staticHTML (WT3AT)
[a0/e31978] Submitted process > collateTpms (WTnone, WT3AT)
[8f/d3bc17] Submitted process > countReads
Finished visualising sample: WTnone
Finished visualising sample: WT3AT
Workflow finished! (OK)
$ echo $?
0
$ ls vignette/output/
read_counts.tsv  TPMs_collated.tsv  WT3AT  WTnone

For parallel-count-reads-386, merging into develop will apply the above fix to prevent the workflow terminating prematurely if run_static_html is false.
At present countReads has the following inputs to forge it not to execute until previous processes have completed:

develop: collate_tpms_sample_ids from collateTpms.
parallel-count-reads-386, static_html_sample_ids from staticHTML

Perhaps combining these two approaches, and using a condition, would work so that countReads executes when collateTpms has completed if run_static_html is false or when staticHTML has completed if run_static_html is true.
if (params.run_static_html) {
  count_reads_sample_ids = static_html_sample_ids
} else {
  count_reads_sample_ids = collate_tpms_sample_ids
}

process collateTpms {
    input:
        val sample_ids from count_reads_sample_ids.collect()
        ...
    output:
}

Whether this would work depends on whether the channel assignment would work.

Foregoing works. commit 0522458 of parallel-countread-386-workflow-bug-fix-416 from parallel-countread-386 with branch workflow-bug-fix-416 merged in has the updated version.
Tested as follows:
$ rm -rf vignette/output/ vignette/index vignette/tmp/ work/
$ nextflow run prep_riboviz.nf -ansi-log false -params-file vignette/vignette_config.yaml --run_static_html false --count_reads false
$ echo $?
$ ls vignette/output/
# Check for presence/absence of reads_counts.tsv
$ ls vignette/output/WTnone
# Check for presence/absenence of WTnone_output_report.html

Each of the 4 combinations of  run_static_html true|false and count_reads true|false was tested.

Merged update-file-names-411 (ac1ad88 27/08/21) into workflow-bug-fix-416.  workflow-bug-fix-416 pull request #419 to be merged into develop post-merge of update-file-names-411 pull request #422.


fix: Git import fails when pages directory contains a file

Description
It fixes the Git import failure bug when there's a file in the  pages directory.
PR fixes following issue(s)
Fixes #27466
Media
N/A
Type of change

Bug fix (non-breaking change which fixes an issue)

Testing
How Has This Been Tested?

[x] Manual
[ ] JUnit
[ ] Jest
[ ] Cypress

Test Plan

Add Testsmith test cases links that relate to this PR

Issues raised during DP testing

Link issues raised during DP testing for better visiblity and tracking (copy link from comments dropped on this PR)

Checklist:
Dev activity

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes
[ ] PR is being merged under a feature flag

QA activity:

[ ] Speedbreak features have been covered
[ ] Test plan covers all impacted features and areas of interest
[ ] Test plan has been peer reviewed by project stakeholders and other QA members
[ ] Manually tested functionality on DP
[ ] We had an implementation alignment call with stakeholders post QA Round 2
[ ] Cypress test cases have been added and approved by SDET/manual QA
[ ] Added Test Plan Approved label after Cypress tests were reviewed
[ ] Added Test Plan Approved label after JUnit tests were reviewed

/ok-to-test sha=fd58cc4

/build-deploy-preview

Verified the fix and it LGTM


When is the best time to observe a single target?

Wouldn't it be nice to have an option on visibility.py to give the best time of the year to observe a target? Just input a single target and -b/--best.

This is what STARALT's starobs mode does, sort of. Right now, visibility.py implements the staralt mode. In my opinion it's probably best to write a new script for the visibility over the whole year. Either that or make a "mode" option but this might increase the complexity of the script a bit too much.

I don't mind a new script for this, but yes, it's exactly that mode I'm looking for.

Let's have a link to pull request #7


[eas-cli] compute the runtime version for a build's  metadata

Checklist

[ ] I've added an entry to CHANGELOG.md if necessary. You can comment this pull request with /changelog-entry [breaking-change|new-feature|bug-fix|chore] [message] and CHANGELOG.md will be updated automatically.

Why
eas build throws a validation error when we use a runtime version policy.
How
Apply the config plugin to compute the policy.
Upgraded @expo/config-plugins to get the correct typing for the runtime version plugins. Checked there were no breaking changes.
Test Plan
tested in a demo repo with runtimeVersion: {"policy":"nativeVersion"}

/changelog-entry bug-fix compute runtimeVersion policies


Adapt NEW_ROUND function to new playerround information

More information is available in the playerround record. This new information needs to be transferred correctly between rounds.

This is a function of the player app -- the player app should update the information constantly and consistently in the playerround record of the player.


Number in NumberPropertyValue needs to be Nullable.

As per  2021-08-16 Notion API version, empty database properties are now returned as null.
https://developers.notion.com/changelog/notion-version-2021-08-16#empty-database-properties-are-now-returned-as-null
I got this exception when querying and a record hand an empty Number type field.
Exception : Error converting value {null} to type 'System.Double'. Path 'number', line 1, position 1237.
I did not check other property types that may now be nullable.

Can I take this one


Feature Request: Add a new group for security rewritings and a rewriting for CALL TRANSACTION first

Add a new group "SECURITY" for security code rewritings, start with rewriting CALL TRANSACTION.
As of ABAP 7.4 CALL TRANSACTION which isn't followed by WITH AUTHORITY-CHECK or WITHOUT AUTHORITY-CHECK is obsolete and should not be used, but is still used in legacy code.
The rule should rewrite:
CALL TRANSACTION 'XD03'. CALL TRANSACTION 'XD03' using lt_param.
to
CALL TRANSACTION 'XD03' WITH AUTHORITY-CHECK. CALL TRANSACTION 'XD03' WITH AUTHORITY-CHECK USING lt_param.
Please see first poc implementation at https://github.com/franzreitmayer/abap-cleaner/blob/dev/com.sap.adt.abapcleaner/src/com/sap/adt/abapcleaner/rules/security/SecurityCallTransactionWithAuth.java
https://github.com/SAP/abap-cleaner/compare/main...franzreitmayer:abap-cleaner:dev

I'm interested in implementing this feature and send an according pull request.
...to be continued with further security rewritings... ;)
Thanks,
Franz

I am a bit scared of this code formatter doing such functional (?) changes and them going unnoticed. If I understand the docs correctly adding WITH AUTHORITY-CHECK to a CALL TRANSACTION  will result in the settings in TCDCOUPLES being ignored. Meaning some legacy applications relying on that feature will stop working or you need to retest them and adjust roles? Maybe I am misunderstanding the docs as I am not that familiar with the feature but currently this doesn't look like a compatible change to me.
https://help.sap.com/doc/abapdocu_757_index_htm/7.57/en-US/index.htm?file=abapcall_transaction_auth_obs.htm

Neither of the additions [WITH|WITHOUT AUTHORITY-CHECK](javascript:call_link('abapcall_transaction_authority.htm')) are specified in this variant of the statement [CALL TRANSACTION](javascript:call_link('abapcall_transaction.htm')). In this case, the content of the DDIC database table TCDCOUPLES specifies whether automatic authorization checks take place or not.
If the current transaction code and the called transaction code exist as a pair in the columns TCODE and CALLED of the database table TCDCOUPLES and if the database field OKFLAG of this row has the value X, the same authorization checks are performed as when the addition [WITH AUTHORITY-CHECK](javascript:call_link('abapcall_transaction_authority.htm')) is specified. If this is not the case, no check takes place.

That's a good point and you're of course right! This requires retesting and perhaps adjustment of authorizations. I think it's down to the nature of security fixes to change processing. Otherwise it would be pointless.
I just wonder wether it's possible/wanted to integrate this type of changes in abap-cleaner or not and how to do this. And I think we agree this is the first and basic question.
Personally I'm more scared of unintended authorizations rather than on a code cleaner fixing this and I think resulting code is still developers responsibility. I never percieved such tools as fire and forget.
Maybe this can be migtigated by defining options that must be considered to get it to work and hence draw the developers attention on this points?
Thanks and Regards,
Franz

Personally I'm more scared of unintended authorizations rather than on a code cleaner fixing this and I think resulting code is still developers responsibility. I never percieved such tools as fire and forget.

Personally this specific tool is fire and forget to me as it's basically advertised as a pretty printer on steroids or at least it acts like one being so fast and my muscle memory already presses ctrl + 4 in the basic rotation instead of shift + F1 by now.
I would be scared of being woken up in the middle of the night because some automated warehouses stopped working as they can no longer create deliveries from sales orders as the call transaction in the batch input processing suddenly stopped working. And all because of a transport labelled "Minor formatting changes". :P
Sure, you can make the rule optional and not part of any delivered profile but this being a security topic I would much rather want to block the transport with a centralized protected configuration based on the finding for changes (baseline) instead of relying on every developer having the correct config and no bad actors changing anything. Quickfixes can offer assisted fixes requiring the manual intervention you mention. Exemptions may also help in some use cases. Also the ATC check already exists.

Hi franzreitmayer,
first of all, I'm impressed that you simply tried it out and apparently, successfully added a cleanup rule (or two of them)!
However, I really think from the way how ABAP cleaner is used (sometimes doing Ctrl+A, Ctrl+4 on veeery large code documents), it should be restricted to "fire and forget" changes, so after some initial configuration you can be sure even without looking that your code gets improved, while functionality is completely unchanged. At maximum, ABAP cleaner could add a TODO comment, as done by the rule "Delete unused variables" for variables that are assigned but never used – but especially for security relevant issues, an ATC check should be better for this.
So, I think I should find a suitable place in documentation on this repo to clarify this. Nevertheless, thanks for the discussion and hope you don't regret trying it out! And also thanks @fabianlupa for investigating the functional difference.
Kind regards,
Jörg-Michael

Hi Jörg,
Thanks for making this clear. I can understand this point and hence the feature request. One more question: Can you help me on track with ATC? I know how to implement own ATC checks, but I don't know how to write custom quickfixes, is that possible?
Thanks!
Franz

Hi Franz,
I haven't implemented custom quickfixes yet, either, but did you come across ABAP Quick Fix? This project indeed has some functional overlap with ABAP cleaner, but the approach is different, because it uses quick fixes – so it's not doing "everything everywhere" in the "fire and forget" way, but allows you to do things in a more targeted, handpicked way (at the obvious cost of more user interaction). With this, ABAP Quick Fix can have functions like "Remove all comments", which you could never have in ABAP cleaner.
Anyway, I guess there you can get guidance and code samples of how quick fixes are implemented! (And if you do, please say hello to Łukasz Pęgiel :-)
Kind regards,
Jörg-Michael

Hi Franz, Fabian and ConjuringCoffee,
thanks again for the fruitful discussion, this point was definitely worth clarifying! So, I'd add the following lines to the Limitations section of the README:

ABAP cleaner strives to offer cleanup rules that automatically detect what can be improved in the given ABAP code, so after some initial configuration, users shall be able to apply "everything everywhere" with just one keystroke. ABAP cleaner is therefore restricted to cleanup rules that keep functionality unchanged and can be applied without any additional user interaction, or need for subsequent inspection of changes.

Kind regards,
Jörg-Michael

Hi Franz,
thanks again – the documentation was now enhanced with version 1.8.0!
Kind regards,
Jörg-Michael


Test issue for Discord notification

this is body text
mention test @saki7
link test #1

comment test

close test

reopen test


Enterprise Application Owner can't see Sign-In logs

According to this documentation when someone is Owner of an Enterprise Application it should be able to see all Sign-In logs related to that application.
The action is microsoft.directory/signInReports/allProperties/read and it has the following description: Read all properties (including privileged properties) on signInReports in Azure Active Directory.
Could you please review this? Thanks

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

ID: 510faed7-b79d-b8ec-f32f-e64d8773a30c
Version Independent ID: 522e7e2e-ea93-5249-5e6f-5c984f1b6277
Content: Default user permissions - Azure Active Directory
Content Source: articles/active-directory/fundamentals/users-default-permissions.md
Service: active-directory
Sub-service: fundamentals
GitHub Login: @ajburnle
Microsoft Alias: ajburnle

@robermud Thanks for the feedback! We will review and update accordingly.

@robermud Thanks for reaching out and apologies for the delay on this. Yes Ideally a owner of Enterprise App should be able to see  the sign in logs. Are you still facing the issue ?

@robermud We will be closing this now, please feel free to tag me in your comment if you need help.

Hi @vipulsparsh thanks for your quick response. Yes, I added a couple of Owners to an App because they needed to see those logs but they can't. They are regular users in our Azure AD, do you think that they need any other permission? Thanks again!

FYI in case it helps anyone else, it appears to take a while for the sign in logs to become visible after being assigned as Owner.
If you sign out and back in again, that seems to speed it up.


Model.clone() broken for namespaced services (PR attached)

Steps to reproduce
Setup a service in the Vuex store with a namespace: eg
  plugins: [
    service('asset-types', {
      namespace: 'assetTypes',
    }),

Try to .clone() a Model from that namespaced service
      const { AssetType } = this.$FeathersVuex;
      const assetType = new AssetType();
      this.assetTypeCopy = assetType.clone();

Expected behavior
The model is cloned.
Actual behavior
Error: service-module.js?9849:153 Uncaught (in promise) TypeError: Cannot read property 'keepCopiesInStore' of undefined
System configuration
Module versions 1.4.8
Looks like it is a 1 line fix in service-module.js
change
if (store.state[Model.servicePath].keepCopiesInStore) {

to
if (store.state[namespace].keepCopiesInStore) {

PR in #146 with a fix thanks!

Wow.  Thank you for this.  I've been busy for a few days, and it's so good to see awesome PRs come in while I'm out.  Thanks a million.

I have a few PRs to review, but I'll merge this in as soon as possible.

Same error here.


Support a conversion precision key

One of our designers recently did an outline font and needed to set it to 4000 upM. The conversion precision conversely needed to be higher. This can be done on the command line, but may be better kept inside the UFO?

needed to set it to 4000 upM. The conversion precision conversely needed to be higher

as you know, you can specify a conversion error parameter that is relative to the font's UPEM. E.g. 0.001 would mean 1 unit in 1000 UPEM grid, or 4 in 4000 UPEM one.
Regardless, yes we store that parameter in the UFO and/or designspace lib element, under a private cu2qu key.
PR are welcome

typo: "yes we can store...", not "yes we store", as we do not right now.


conditionally update the header for the adoption preferences section of the family account creation form

In family account creation form, only display Adoption Preferences section, if family stage selected is MAPP Training Completed, or Homestudy Completed.  If any of the other three stages, user should not see these options.
Additional and unrelated small change to this form: For field "Number of other adults living in home" change to "Number of OTHER adults living in home (not listed above)".  (Does not need to change in UI, people are just not understanding the question as written)

@bchiaruttini the current behavior of the family registration form is to require the fields in the Adoption Preferences section when Working with an agency is checked.  If I'm reading the requirements correctly, that section would remain hidden even if Working with an agency is checked but MAPP Training Completed or Homestudy Completed aren't checked.
Should I remove the required behavior for Working with an agency, or add Working with an agency to the list of options that displays the Adoption Preferences fields?

Updated and ready for testing in develop!

looks perfect, ready to push.


BaseView.ExecuteAsync disposes the response stream

I was looking at this line and I got confused a little. It disposes the stream which is basically the response stream.
Should this be flush instead of dispose?

Should change the StreamWriter to AutoFlush.


chore: upgrade py deps for rules_overview_generator

What type of PR is this?

Uncomment one (or more) /kind <> lines:

/kind feature

/kind bug

/kind cleanup

/kind design

/kind documentation

/kind failing-test

Any specific area of the project related to this PR?

Uncomment one (or more) /area <> lines:

/area rules

/area registry

/area build

/area documentation

Proposed rule maturity level

Uncomment one (or more) /area <> lines (only for PRs that add or modify rules):

/area maturity-stable

/area maturity-incubating

/area maturity-sandbox

/area maturity-deprecated

What this PR does / why we need it:
chore: upgrade py deps for rules_overview_generator
CI is currently failing. This fixes the CI.
Which issue(s) this PR fixes:

Fixes #
Special notes for your reviewer:

@LucaGuerra in case we would like the GitHub pages to be updated again.

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: incertum, leogr
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [incertum,leogr]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

LGTM label has been added.  Git tree hash: fdb6685eaff17b3136e3874c28801c211894e69c


Refactor method fails

def x():
    print("that")
    print("1")
    print("1")
    print("1")
    print("1")

Refactor the last two print statements
As can be seen below, two function invocations get added

def x():
    print("that")
    newmethod446()newmethod446()

def newmethod446():
    print("1")
    print("1")
    print("1")

Unable to replicate.


Crash upon GL.createCapabilities() (OS X)

Upon trying to use the latest nightly build of LWJGL 3, with the example code on the website (or even just the line GL.createCapabilities();), the application crashes with the error
java(1028,0x7fff7eb3d000) malloc: *** error for object 0x7fcb8129f7f5: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug

Further inspection via Apple's Instruments app reveals 36 memory leaks, although I'm slightly confused about this as it reports memory leaks when I've paused the app using IntelliJ's debugger before it hits the GL.createCapabilities(); line, all reported entries however are from malloc.
If it helps (eg: If I'm using the wrong version), here's my build.gradle (Although I've tried running it using the download from the website instead of using Gradle)
group 'io.github.craftedcart'
version '1.0-SNAPSHOT'

apply plugin: 'java'

sourceCompatibility = 1.6

def lwjglVersion = "3.0.0-SNAPSHOT"

repositories {
    mavenCentral()

    maven {
        url "https://oss.sonatype.org/content/repositories/snapshots/"
    }
}

dependencies {
    compile "org.lwjgl:lwjgl:${lwjglVersion}"

    compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.5'
    compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.5'

    runtime "org.lwjgl:lwjgl-platform:${lwjglVersion}:natives-windows",
            "org.lwjgl:lwjgl-platform:${lwjglVersion}:natives-linux",
            "org.lwjgl:lwjgl-platform:${lwjglVersion}:natives-osx"

    testCompile group: 'junit', name: 'junit', version: '4.11'
}

Some Info:

OS: OS X El Capitan 10.11.1
Model: iMac (21.5-inch, Late 2013)
CPU: 2.9 GHz Intel Core i5
GPU: NVIDIA GeForce GT 750M 1024 MB
Running via IntellliJ using JDK 1.7.0_80 - I have also tried using the DCEVM (IDK which JDK version)
VM Args: -XstartOnFirstThread

Thanks!


Allow discard of pending sched req with remembering for recurring tasks

One way is to still generate sched req record but add a flag to indicate the sched req record doesn't correspond to any task seg place
This way, instantiation function doesn't require much change if any

Approach adapted is to move the discarded sched req to a separate store (sched_req_discarded_store), and instance checking checks the store as well


Updated README.md TODOs

Added some potential security concerns to the README

Passwords are currently stored in the user database as an HMAC hash of the password with the salt being the FLASK_SECRET secret, which means that if the user database were compromised, matching passwords would be revealed through matching hashes. It would be much better to use bcrypt for this function.
Furthermore, invalid login attempts are not moderated. It would be simple to implement some sort of dictionary outside the user database that could store the number of login attempts per user over a certain interval of time. This way, brute-force attacks would be significantly less viable options for guessing even a fairly weak password.

Note that TLS for both the web app and the api will be implemented in a later stage.

See issue #5 regarding TLS implementation

TLS is already being implemented, self-signed, for the API, in the feature-rest-api branch-- see c431bb45294e4c58810e1f75e539bd8d29a60b57

See #6 regarding password security


(WIP) Discrete log and Dirichlet characters

Discrete logarithms and Dirichlet characters. Resolves #88 and #119. In roughly this order, this is my plan for full efficient implementation of both.

[x] Added MultMod type to represent elements of the multiplicative group mod m, with Monoid instance. Added PrimitiveRoot type to represent primitive roots of the (cyclic) multiplicative group.
Note these two types together make discreteLogarithm a total function. Partial constructors have been added and deconstructors. (I would like feedback on the name MultMod, I feel a better name is possible.)
[x] Amended primitive root code, testing, benching with the new type structures.
[x] Very simple discrete log code, with test and bench.
[x] Baby-step giant-step method for discrete logs.
[x] Additional testing and benching for discrete logs, with prime power cases included also.
[x] Refactor discrete logs to be efficient on prime powers, using Bach's method described here and here. (Also use the canonical isomorphism for double prime powers).
[x] Implement Pollard's rho algorithm for discrete logs with prime moduli (#129 would be helpful for this). Notably, Pollard's rho is a Las Vegas algorithm (which is why @Taneb's attempt in #110 did not always return success) so may need to run multiple times - experiment with starting inputs.
[ ] Write an internal discrete log function for moduli 2^k, which are necessary for Dirichlet characters (see Bach paper for efficient algorithm).
[ ] Implement DirichletCharacter type and constructor.
[ ] RootOfUnity type and Semigroup and Monoid instances.
[ ] Bounded, Enum (potentially Show) instances of DirichletCharacter.
[ ] Conversion of DirichletCharacter to function Int -> RootOfUnity.

Cool! I'll take a look by the end of the week.

I'm deeply confused by this failure, any clues on how to fix?

Implement Pollard's rho algorithm for discrete logs with prime moduli (#129 would be helpful for this)

I pushed solveLinear into master.

Great, thanks!

The Bach reduction gave a large speedup for prime powers: the case 2^n = 7 mod 3^20 went from around 41ms to 3.5µs and 3^n = 17 mod 5^16 went from 549ms to 3.8µs.  Range benchmarks did not change significantly, which is expected since prime powers are rare compared to primes in general.

Cool!

I've added Pollard's rho but on benchmarking, it doesn't have the speedup I expected. Specifically, for moduli below around 10^8 it is slower than the baby-step giant-step method, but works faster for large moduli. For cases near 10^6, the BSGS method took 27.27ms while Pollard's rho took 43.15ms while for cases near 10^10, BSGS took 8.61s and Pollard's rho took 4.06s.
While it's not surprising that Pollard's rho is eventually faster, I'm surprised the cutoff is so high. Is there some obvious deficiency in my rho algorithm that makes it perform badly on small inputs? @Bodigrim
(Note the rho implementation isn't perfect right now - it currently only works probabilistically but the probability of error is so small that it succeeds on all the test cases and benchmark cases. The functions starter and begin are part of the fix for this, but right now they appear redundant, and when failure occurs, the error will be from calling head on an empty list in line 79. I'll fix in later commits.)

There are two sources of inefficiency: redundant divisions in step and allocating lazy triples on heap.
Here is my attempt:
data Pollard = Pollard !Integer !Integer !Integer

discreteLogarithmPrime :: Integer -> Integer -> Integer -> Natural
discreteLogarithmPrime p a b = fromInteger $ head $ filter check $ begin (starter 0 0)
  where
    n = p-1 -- order of the cyclic group

    halfN = n `quot` 2
    mul2 m = if m < halfN then m `shiftL` 1 else m `shiftL` 1 - n

    step (Pollard xi ai bi) = case xi `rem` 3 of
                          0 -> Pollard (xi*xi `rem` p) (mul2 ai) (mul2 bi)
                          1 -> Pollard (a*xi `rem` p)  (ai+1) bi
                          _ -> Pollard (b*xi `rem` p)  ai (bi+1)

    starter x y = Pollard (powModInteger a x n * powModInteger b y n `rem` n) x y
    begin t = go (step t) (step (step t))

    go :: Pollard -> Pollard -> [Integer]
    go tort@(Pollard xi ai bi) hare@(Pollard x2i a2i b2i)
      | xi == x2i = solveLinear' n (bi - b2i) (ai - a2i)
      | otherwise = go (step tort) (step (step hare))

    check t = powModInteger a t p == b

One can check by dumping GHC Core {-# OPTIONS_GHC -ddump-simpl -dsuppress-all -dno-suppress-type-signatures #-} that no Pollard thunk is actually allocated and all computations have reduced to naked Integer. Your version of discreteLogarithmPrime tended to allocate and deallocate (_, _, _) constructors here and there.
Before:
Discrete logarithm/range/100 cases near 10000 mean 15.01 ms  ( +- 2.861 ms  )
Discrete logarithm/range/100 cases near 1000000 mean 124.5 ms  ( +- 26.73 ms  )
Discrete logarithm/range/100 cases near 100000000 mean 976.0 ms  ( +- 87.84 ms  )

Now:
Discrete logarithm/range/100 cases near 10000 mean 9.049 ms  ( +- 1.375 ms  )
Discrete logarithm/range/100 cases near 1000000 mean 78.45 ms  ( +- 3.424 ms  )
Discrete logarithm/range/100 cases near 100000000 mean 746.1 ms  ( +- 33.00 ms  )

I'm not convinced that allocation of tuples is an issue here, since the Core output shows that unboxed tuples are being used, which has no heap overhead, but I'll investigate further.
Your code doesn't succeed when I test it - there are many missing rem calls which cause it to fail. I suspect the improvement in the range benchmarks is due to these calls being omitted when they are truly necessary.

Sorry, it is my fault; maybe wrong compilation parameters. I can confirm: your code does not allocate triples as well.

Your code doesn't succeed when I test it - there are many missing rem calls which cause it to fail.

What do you mean? It seems passing tests in my environment.

What do you mean? It seems passing tests in my environment.

Hm this is curious, the first four benchmarks all fail with head of an empty list with your code, but succeed with mine.

Weird. This is what I see:
Discrete logarithm/individual case/5ⁿ == 8 mod 10^9 + 7 mean 42.95 ms  ( +- 1.763 ms  )
Discrete logarithm/individual case/2ⁿ == 7 mod 3^500 mean 231.4 μs  ( +- 25.78 μs  )
Discrete logarithm/individual case/2ⁿ == 3 mod 10^11 + 3 mean 176.6 ms  ( +- 7.414 ms  )
Discrete logarithm/individual case/3ⁿ == 17 mod 5^350 mean 288.4 μs  ( +- 35.09 μs  )

Very strange, on running stack bench --ba '--match prefix Disc -q' I get this error:
arithmoi-<IP_ADDRESS>: benchmarks
Running 1 benchmarks...
Benchmark criterion: RUNNING...
criterion: Prelude.head: empty list
benchmarking Discrete logarithm/individual case/5ⁿ == 8 mod 10^9 + 7 ... Benchmark criterion: ERROR

--  While building custom Setup.hs for package arithmoi-<IP_ADDRESS> using:
      /Users/bmehta/.stack/setup-exe-cache/x86_64-osx/Cabal-simple_mPHDZzAJ_<IP_ADDRESS>_ghc-8.2.2 --builddir=.stack-work/dist/x86_64-osx/Cabal-<IP_ADDRESS> bench criterion "--benchmark-options=--match prefix Disc -q"
    Process exited with code: ExitFailure 1

I pushed my changes onto CI: it fails with GHC 8.2 and earlier, but succeedes with GHC 8.4 and newer. Very odd. Unfortunately, I am leaving for vacation and won't be able to investigate until the end of next week.

No worries - thanks for your help regardless.

Got it. Prior to GHC 8.4 both powModInteger and recipModInteger were broken for a negative first argument (https://ghc.haskell.org/trac/ghc/ticket/14085).
That is why after my modification solveLinear' started to return weird results in GHC 8.2 and led to an empty filter check $ begin (starter 0 0). I have pushed fixes for solveLinear' into master and now my implementation works fine for all supported range of GHCs (https://travis-ci.org/Bodigrim/arithmoi/builds/423235835). 20-30% improvement in benchmarks is observed, same to reported above. I suspect it is purely due to changes in step function.
Could you please rebase your branch upon the latest master?

It passes tests but I'm not fully convinced of correctness - you've removed the rem after ai+1 and the like, but the remainder still should be taken after these additions, since they are likely to get larger than the modulus. In addition, the expression for mul2 assumes that the input m is reduced modulo n, but this is not guaranteed since the rem is no longer taken after ai+1.

I've changed some things, removing some of the rem calls. When I benchmark, using m * 2 instead of shiftL is noticeably faster, so I've kept it.  Since Pollard reduces to identical code as the tuples, I've left that as is also.
The calls to mod in line 92 may not be strictly necessary - I originally kept them because solveLinear' was not exported and so I wanted to make sure the input was as expected. Also, it is likely that the mod call will reduce arguments into a smaller range, so the function may run faster, but I'm happy to remove them if necessary.

solveLinear' should work fine for unreduced arguments. Even without reduction by modulo bi-b2i and ai-b2i are O(n) with probability close to 1, so there should not be any performance hit. I suggest to remove mod from line 92 for the sake of clarity.

Awesome. I greatly appreciate your work.
Does it make sense to split this PR into two? The first one about discrete log (which is ready to merge, up to my understanding) and the second (future) one about Dirichlet characters. What is your opinion?

I think this is a good idea - in fact I'd like to split it into three PRs: The currently implemented work on discrete logs (which is ready to merge), possible speed ups on discrete logs (including Pollig-Hellman, which I'm investigating at the minute) and Dirichlet characters.
Something worth pointing out is that the algorithm is probabilistic, as I mentioned in the most recent commit, and so has a (negligible) probability of failing. Currently three starting inputs are used, which cubes the failure probability making it even more negligible, but still non-zero. Possible fixes are to allow all starting inputs on failure, so that the function is guaranteed not to fail, or just to use a small amount and hope for the best (cf line 87 in the last commit).
What is your opinion on this?

It would be nice to find via brute force at least one example, when a) implementation with only one seed fails to find an answer, b) implementation with two seeds fails, c) current implementation with three seeds fails. And add them to tests.
Can we resort to BSGS, when Pollard rho has failed with three seeds?

That would be nice, but I fear that the probability of failure is genuinely tiny - testing all primes less than 7000 represents over 5 billion instances of the discrete log problem, and no failure has yet occured.
Possibly, but BSGS uses IntMaps internally and right now BSGS is used anyway when the inputs are less than 10^8 so in that scenario, the values may not fit within an Int. In addition, if Maps are used instead, it is possible that massive maps are made and create memory issues instead.  I'd be more comfortable allowing more seeds instead.

I may be wrong, but my impression is that your implementation of Pollard is not probabilistic. AFAIU we say that Pollard algorithm failed for a given seed when the algorithm found a collision with bi == b2i, for which solveLinear' returns a full, unrestricted range. But in our case we just resort to brute force check-ing.

If bi == b2i, then solveLinear' attempts to solve 0x + a = 0, and returns the empty list, so we immediately fail.

Note that Math.NumberTheory.Moduli.Equations exports solveLinear' - hopefully this is acceptable

I've thought about it and decided to revert this new export in 473a5ef25eadc4a0d033a691e4e54d24dae5d5fe. An additional public function needs documentation, tests and is a commitment to support its interface. Being public, solveLinear' should deal somehow with negative modulo and zero modulo, it may also be reasonable to make it working for any Integral a instead of Integer only. That said, from the maintainer's viewpoint it is preferable to use solveLinear only.

Unchecked preconditions are the root of all evil :) They are the worst plague of arithmoi API in its current state.
Currently I am tying up loose ends for an upcoming release; I'll be glad to return to solveLinear' question afterwards. Please raise an issue to facilitate discussion.

Unchecked preconditions are the root of all evil :) They are the worst plague of arithmoi API in its current state.

I see! Fair enough - I have no real complaints about the state of solveLinear' as it is.