Formatting of releases goes over multiple lines while it isn't intended

Affected Packages
pkg:changelog-github
Problem
We're experiencing an issue where there are newlines added to the release notes where it probably shouldn't:

I would expect it to be shown as:

Same issue seems to happen on the Chakra-UI repo:

Proposed solution
The getCommitLine should probably be modified

Hmm, this is somewhat strange because I don't experience that for example here and I'm using standard setup there, so probably the same one as you.
This stuff is generated here:
https://github.com/changesets/changesets/blob/a3fa3ece513f96f3e2ce1fb1f228e450e40cbdd2/packages/changelog-github/src/index.ts#L112-L116
and we might see that those parts are joined with an empty string and not with an empty line.
Would you be able to investigate this further?

@Andarist Can it be that prettier tries to format the output somehow? Prettier makes it into separate lines and follows the markdown spec, but GitHub isn't or something?

Perhaps you are using --prose-wrap always for *.md files in your Prettier config? This could explain the behavior, see this playground
I think this is a problem in the GitHub interface - their markdown renderer is not consistent. We can compare how the very same content is rendered "correctly" here (while those lines are still spread into separate lines in the raw content) when it is rendered weirdly when put in a github release here

For more information, we are also experiencing this issue with the actual changelog comments:

As an alternative we could run the prettier.format in the github package only?

But since the rendering isn't working on GitHub, might it be an idea to add prose-wrap: 'never' to these files?:

Wouldn't it be surprising though that we'd change the options that you have explicitly configured at the Prettier level? Such a change would also be immediately overwritten by any precommit hook running over *.md files.

For more information, we are also experiencing this issue with the actual changesets contents:

Could you link me to the place that you are talking about?

I've fixed the issue! I've modified our prettier config so that changesets does the right thing.
module.exports = {
  trailingComma: 'all',
  tabWidth: 2,
  semi: false,
  singleQuote: true,
  jsxSingleQuote: true,
  printWidth: 100,
  proseWrap: 'never',
  overrides: [
    {
      files: ['*.md', '*.mdx'],
      options: {
        printWidth: 80,
        proseWrap: 'always',
      },
    },
    {
      files: ['**/.changeset/*.md'],
      options: {
        proseWrap: 'never',
      },
    },
  ],
}

We're not public yet (should be in a week or something), but here is the source of a release (expand to view):

Could you share a URL that is affected by this? Of course, if that is sensitive you can replace its parts with some dummy placeholders. I'm just interested in the pattern~ of the URL

I've fixed the issue! I've modified our prettier config so that changesets does the right thing.

I'm glad that you have figured out a workaround here but it feels like we should open a ticket with the GitHub support and ask them if the rendered could be unified across different places on GitHub, right?

@Andarist We're public so I can share some URL's!
Pre fix: https://github.com/graphcommerce-org/graphcommerce/releases/tag/%40graphcommerce%2Fnext-ui%404.1.1
Post fix: https://github.com/graphcommerce-org/graphcommerce/releases/tag/%40graphcommerce%2Fnext-ui%404.3.0
As for the second point, I think that'll be a long shot and don't think they'll change anything unfortunately.

As for the second point, I think that'll be a long shot and don't think they'll change anything unfortunately.

I've just created a ticket nevertheless. Let's see if we get any response in the following weeks.

Cool :)


rainbowstream python code

Rainbowstream is a Twitter client which runs on terminal

This is a client, not system information tool. Can you change?

This is a client, not system information tool. Can you change?

Sorry I'm still a newbie.


Proposing better handling of defaults.vim

Hey there,
There still seems to be some controversy about the include order of default.vim.
As far as I understand it, the problem is that configuration set by default.vim cannot be (simply) overwritten by the system-wide /etc/vim/vimrc file. In addition to this, default.vim is only sourced if the user does not have a .vimrc file located in her home directory.
I (and probably a bunch of other people) find this behaviour unintuitive and invasive which leads me to the following proposition:
Let Vim only source defaults.vim if neither ~/.vimrc nor /etc/vim/vimrc are present.
This way, Vim will fall back to the defaults provided if no other configuration is found.
Each distro can decide whether to use defaults.vim by sourcing it in their /etc/vim/vimrc and whether it should override their settings or not.
This also removes the need for skip_defaults_vim.

I think this is a duplicate of #2042  and #2841

Both issues are certainly related, yet I don't think they really are duplicates. #2042 has been closed. We could close this one and add my proposal to #2042 if you think that would be better.
#2841 is more like a consequence of #2042 and would also be resolved by this.

It sounds like you're proposing basically the patch that Christian's provided at https://github.com/vim/vim/issues/2042#issuecomment-332420140 which Bram essentially dismissed with "distributions shouldn't provide a system vimrc".

I thought @jamessan 's point was primarily for those who have little choice but to rely on the settings provided by others; understandably, It's a pity that people suffer from what is not at their own choice.  However, if Neovim is a viable alternative to Vim for them, they seemingly have more discretion over how to resolve the issue than I imagined, though I'm not sure whether or not those who find it difficult to have their own .vimrc are easily permitted to install Neovim system-wide.  Now I'm wondering for whom the proposal is; for those who are effectively able to resolve the issue without the proposed change in accordance with their preferences, or for those who have no choice but to live with the given settings.

Although the choice of ignoring the system vimrc does affect me (since I get to listen to Debian users complain about their system-wide settings being ignored), I don't think that's the main problem.
Rather, I think the actual problem is that the way the new defaults were implemented is confusing to both old and new users.
The expected mechanism of overriding defaults by changing the option in your vimrc (whether it be the system or user) doesn't consistently work anymore.  For a system vimrc, it doesn't work because defaults.vim will still be loaded and therefore override the user's attempt at changing the default.  For a user vimrc, it will work but may have other side-effects due to disabling the loading of defaults.vim
The implementation also has a very narrow audience that will actually benefit from any updates, since defaults.vim is no longer sourced when a user creates their own vimrc.  This contributes to the confusion.  A new user who decides to customize Vim's behavior by creating their own vimrc now has a completely different behavior (in a negative way) than they did before creating the file.
This is in complete opposition to the prior behavior where creating a vimrc (even a blank one) would generally improve the user experience by disabling 'compatible'.

Please see James' suggestions.  The newer behavior is NOT intuitive, and for many old-school users looks broken (30 years for me).  Personally, I would also add that on any system that uses vim for the invoked 'vi', the editor defaults should be  'compatible'.  Invoking 'vim' would seem better with all the bells and whistles.

I came to Vim quite a time before defaults.vim was invented, so I suppose I'm among @jpmcneely 's «old-school users», yet for me nothing was broken. How come? Well, one of the lines near the top of my vimrc has long been runtime vimrc_example.vim. When the defaults.vim was introduced, the contents of the vimrc_example.vim were moved to it but the latter was not deleted: it became a wrapper, sourcing the defaults.vim. So now :scriptnames tells me
1. ~/.vimrc
2. /usr/local/share/vim/vim81/vimrc_example.vim
3. /usr/local/share/vim/vim81/defaults.vim

etc., while in Vim 6 or 7 defaults.vim wouldn't be named (it didn't yet exist, but its future code was part of vimrc_example.vim) and the rest was one line up in the list compared to what it is now.
Best regards,
Tony.

As a systems administrator for an office of Debian GNU/Linux users, defaults.vim is nothing but a mild annoyance. It does not improve anything for any of my users. Our office is almost completely vi users, but I am the only one who cares at all about Vim's specific extensions beyond a couple of people who know about using visual block mode for commenting stuff. They don't have .vimrc files. If they did, they certainly wouldn't bother putting it on every server. They just log on to any given server, type vi, and start editing.
So, from their point of view, vi is broken in Debian 9. They might listen to me explain it if I tried, but they don't really care why. Most of them use 16-color PuTTY with dark backgrounds (i.e. the default), which means they get dark syntax highlighting colors that are hard to read because of how the 'background' default is selected, and then notice "copy paste is broken too! Man, they really messed this release up!" . They do not care a whit for 'mouse'.
If a user with no .vimrc types vi, I don't think Vim should ever (now, or in the future, with or without a system vimrc) do anything but start a 'compatible' vi. It's just another thing to patch out with an /etc/vim/vimrc.local in our server setup. But at least applying the patch to skip loading it if a system vimrc file is present would remove this large and mostly-silent class of users who just want vi to work again.

I agree with @jamessan that /etc/vim/vimrc (and its /etc/vim/vimrc.local friend) should be given a chance to override the default behaviour.  Using -V9/tmp/vilog and reviewing /tmp/vilog I could see that only ~/.vimrc (or its presence) can override defaults.  For users without ~/.vimrc such as the root user, the vi verbose log shows that /usr/share/vim/vim81/defaults.vim takes precedence as it is processed AFTER /usr/share/vim/vimrc.

There is a bug in a logic or in a file name.
With current logic, the name of the file should be destroy_global_config_with_this_one.vim.
But looking at all the software I've used in my life, this is a bug in loading order.
If something is a default, then it's loaded at the very beginning, so anyone can use it or override a particular behaviour.
It may be hardcoded or may land as a default entry at the very beginning of /etc/vim/vimrc. So it's there by default, but admin is free to handle it in his own way if required.
Loading default.vim after the global one is a bug, nothing else.

I never liked allowing an admin playing ruler of the users, telling them how they should use Vim.  I would rather not load any system-dependent init file.  But some admins want to play god and want to do this, so Vim has historically supported it.
Whether the defaults.vim is loaded before or after the system init file is much more a practical question than a philosophical one.  The main reason the init file is loaded first is that it gives a chance of disabling the loading of the defaults.  Otherwise every time I add something to the defaults the admins would complain very loudly that they have to add something to their init file on thousands of systems.
Anyway, it's been like this long enough now to say it's not going to change.

First and foremost, admins are responsible for the system, they are about to set up the system in a way that it would be useful to (most of) the users. They are responsible for creating reasonable defaults. Is VIM responsible for any such system?
It's the admin responsibility, not the VIM one. So yes, admins are gods of the systems they maintain.
Software I know, is aware of this responsibility and uses proper hierarchy of configuration loading (top one is most important):

user config
system config
software defaults config

But VIM (by default) breaks this by overriding system config by its defaults. VIM plays god of all the systems, and here the VIM is the ruler of all the users and the admins - it behaves exactly in a way you do not like - it acts like that for all systems in the world where VIM is used.
The order mentioned above gives (by default) freedom to users to agree with system defaults or explicitly disagree by creating their own setup by creating a .vimrc file.
And there they can reload the defaults.vim on their own if they like to.
The order mentioned above gives (by default) freedom to admins to create system-wide defaults that fulfil users/company requirements of default VIM behaviour.
Fortunately, it's possible to fix that bug by placing @ilatypov configuration lines into /etc/vimrc.
Anyway, thank you for creating VIM, that's a good piece of software!


fix: doc in getAddress

Minor doc fix

@paouvrard I checked this is the first PR merged into master after 20 days, is it expected to merge into master, or are you using different release workflow?


format document

We have written the needed data into your clipboard because it was too large to send. Please paste.

@ajaykrishnalla please provide valid info (see the description of this issue) ;)


http: tracking active session under L7 timers

Tracking active session under the scope of L7 timers
Risk Level: Medium (L7 changes)
Testing: new UT
Docs Changes: n/a
Release Notes: n/a
Fixes #7300

I think this is most of the per stream timers?  Let me know if there are other areas I should have looked
grep -rl enableTimer source/extensions/filters/http/* source/extensions/filters/common/*
source/extensions/filters/http/fault/fault_filter.cc  <- here
source/extensions/filters/http/health_check/health_check.cc <- for cache results
source/extensions/filters/http/squash/squash_filter.cc <- here
alyssar@alyssar:~/git/envoy$ grep -rl enableTimer source/common/http/*
source/common/http/codec_client.h <- per codec not per stream
source/common/http/conn_manager_impl.cc  <- connection timer and request timeout (added)
source/common/http/date_provider_impl.cc < tls refresh
source/common/http/http1/conn_pool.cc <- onPoolReady and onPoolFailure now covered
source/common/http/http2/conn_pool.cc <- onPoolReady and onPoolFailure now covered
source/common/http/rest_api_fetcher.cc <- I think not on data plane.

I'm surprised there are so few places but yeah seems like a good first cut to me.
I have a more general question which is how human scalable this solution is going to be. If there are so few call sites, WDYT about actually adding this to enableTimer() itself and other similar call sites? Basically a scope tracker could be optionally passed into each of the dispatcher functions. I think this could be less awful than it sounds by having a ScopeTrackingDispatcher that exposes the current functions as is, but wraps the lower level dispatcher with the scope in various cases. This is roughly the solution I have discussed with @htuch for multi-tenant charging and fairness. Anyway, this is probably more work than you want to take on right now, but I'm wondering if we should work in that direction? Mainly because I think it's going to be very easy to not add new scope trackers for new timers, etc. as they get added to the code.
/wait-any

Yeah, I'd thought of doing that not for the dispatcher in general (which is operating on the level of connnections, which we want to deal with eventually but not today), but for alarms (since there's a bunch of those in the L7 scope).  My take-away after doing a bit of code analysis was that maybe 1/3 of the call sites where I want to track incoming alarm ended up not being done at the alarm (e.g the connection pool callbacks), at which point trying to create a generalized solution I couldn't use everywhere didn't seem worth tackling today.
That said, given that the dispatcher takes a scope pointer, it wouldn't be horribly painful to have createTimer take an optional (default null) scope, and have TimerImpl::TimerImpl do the scope tracking before it calls the callback, for the 2/3 which use timers, if you'd prefer I lay that groundwork now?

That said, given that the dispatcher takes a scope pointer, it wouldn't be horribly painful to have createTimer take an optional (default null) scope, and have TimerImpl::TimerImpl do the scope tracking before it calls the callback, for the 2/3 which use timers, if you'd prefer I lay that groundwork now?

+1 this would be awesome if are up for it. Might be worth it to briefly sync up with @htuch on this and see if he has any thoughts as it relates to the multi-tenancy work.

Yeah, I'm still not sure exactly which multi-tenant isolation path we want to do ideally; it could either be dispatcher per tenant, in which case we don't need any special sauce here or it could be multiple tenants with a scope aware dispatcher. The structural approach @mattklein123 is advocating would be useful in enabling the latter and SGTM providing it doesn't make the code unreadable or introduce too much boilerplate :)

This ended up being large enough I'm inclined to split out the alarm changes into their own PR, and using them in this one.  WDYT?

This ended up being large enough I'm inclined to split out the alarm changes into their own PR, and using them in this one. WDYT?

+1 that would be great, thanks.
/wait


PR checklist:

[x] make succeeds (on *nix)
[x] make reftests succeeds
[ ] tested examples with the following backends:

Thanks @Xaeroxe for taking a look!
I do agree that the zero checks/initialization with generic T is wonky as hell, but I don't want to hook up an extra dependency just to make it nicer. Perhaps, we could refactor it without num?..
I don't feel strongly about match versus those map/ok_or things. It's getting into the conflicted territory here between the preference of simplest language constructs (match is simpler than passing a closure somewhere) and avoiding some minor duplication (Ok/Err are mentioned twice).
Given no blocking concerns, let's proceed!
bors r=Xaeroxe

FWIW num is depended on by 368 other crates, several of which are graphics or audio related, so there's a pretty good chance the end user is compiling it anyways.

bors retry

bors retry

bors r=Xaeroxe


Use only the first output line of findmount in free space calc

Thanks @Samonitari! I will release a new version with your fix

Very big thanks!


Make connection header clearing conditional on whether or not request is upgrade

In issue #198 - Proxy Real-time APIs? - @GUI stated:

we clear the Connection header when proxying requests. This is done so we can support backend keepalive connections (see nginx's keepalive docs).
[to support websockets], we probably need to make clearing that header conditional on whether it's an upgrade request or not. That should be fairly simple, but there may be other small tweaks like this necessary in the stack to get websockets fully working.

This issue is opened to track the progress of any work to make connection header clearing optional.

Did we end up implementing this feature or not. I am looking to use this for websockets backend. I was wondering if this product is tested using websockets or not.


Problem with instalation on python 3.8

While trying to install xgboost using pip on python 3.8 I get this error:
ERROR: Command errored out with exit status 1: 'c:\users\exemed\pycharmprojects\test2\venv\venv38\scripts\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\exemed\\AppData\\Local\\
Temp\\pip-install-gbr4wub6\\xgboost\\setup.py'"'"'; __file__='"'"'C:\\Users\\exemed\\AppData\\Local\\Temp\\pip-install-gbr4wub6\\xgboost\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.re
ad().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\exemed\AppData\Local\Temp\pip-record-cyiy35un\install-record.txt' --single-version-ext
ernally-managed --compile --install-headers 'c:\users\exemed\pycharmprojects\test2\venv\venv38\include\site\python3.8\xgboost' Check the logs for full command output.

On python 3.7 there was no problem. How to fix it?

@hcho3 I think we don't have Python 3.8 binary right?  Maybe it's time to prepare a release ..

Our Python wheel is tagged with py3, so it should be compatible with Python 3.8.

Got it.  Let me try to reproduce this on Linux later.

Just tried it on my Windows machine and pip install xgboost worked as expected with Python 3.8.
@AlexanderGolys Can you try running pip install -v xgboost to get more diagnostic logs?

Also tried on Linux.  Works fine.

@AlexanderGolys Your Python environment might be broken. I had success with Conda:

Download Miniconda from https://docs.conda.io/en/latest/miniconda.html
In the Command Prompt, run conda create -n myenv python=3.8 to create a new Python environment.
Activate the environment with conda activate myenv.
Install XGBoost: python -m pip install xgboost.


Changing file icon theme to none applies it to only one VSCode window

Refs: #11130

VSCode Version: insider
OS Version: linux

Steps to Reproduce:

Open two vscode windows, enable seti icon theme
In one of those windows set icon theme to 'none'
Notice that this none theme only gets applied to that window, not the other one. Also notice that setting icon theme to anything other than 'none' nicely applies it to both windows

the problem seems to be in the windowService. onBroadcast is not called if the payload is empty.
windowService.onBroadcast(e => {
if (e.channel === ICON_THEME_CHANNEL && typeof e.payload === 'string') {
this.setFileIconTheme(e.payload, false);
}
});


[prim, otp] update prim_count handling of max value

should address #10378
add a parameter option when a custom max value is not required

Signed-off-by: Timothy Chen<EMAIL_ADDRESS>

@weicaiyang can you have a look to see if this resolves your issue?


deno task - Support brace expansion

I have this in my deno.json
{
  "tasks": {
    "check": "deno check services/*/{prod,dev}.ts"
  }

When I run deno task check, I got:
Task check deno check services/*/{prod,dev}.ts
error: Error parsing script 'check'.

Caused by:
    Unexpected character.
      {prod,dev}.ts

My deno version:
deno 1.36.3 (release, aarch64-apple-darwin)
v8 <IP_ADDRESS>
typescript 5.1.6

So at the very least, this would require modifying the parser such that curly braces are allowed when applying word parts combinators.
However, the major issue is that the glob module does not support string alternative syntax. A couple potential solutions to this:

Use the globset crate, which supports brace expansion, instead of glob. This, however, will almost certainly behave differently: for example, it doesn't support the require-literal-leading-dot option, which is enabled here. This could be a breaking change.
Write custom logic which runs at some point while we're evaluating word parts inner to replace WordParts that contain curly braces with a number of WordParts representing the expanded strings.

@dsherret between these approaches, what do you think?


feat(vscode-avalonia): prompt users to choose a solution file if workspace contains multiple

Resolves #101
Note: commented code will not work until tc39/proposal-explicit-resource-management is formally part of ES. The commented code can be compiled with ESNext, but won't run in supported in VSCode <= v1.86.1

Can you elaborate how this feature works please? I mean as a avalonia developer how will use this feature

Currently, if the workspace contains several Solution files, the extension selects the first one it finds (SolutionA) and passes it to the SolutionParser.
There's a chance SolutionA does not have any WinExe projects by design.
However, a WinExe project may exist in SolutionB, SolutionC, et cetera.
This change allows the user to choose which Solution file should be passed to SolutionParser.

On that note, perhaps every solution file should be parsed and filtered for Solutions which include the current document. Only then should the user be prompted.

Sounds goo. Could you fix the review comments? I will merge once you do it :)

I don't see any review comments to resolve.

I accidentally deleted the wrong branch and I'm unable to re-open the pull request. I have to create a new one...

w


added Ansible in DevOps

NOTE:

Please fill out the template below

Did you read the instructions in the README?

Y

Have you read the instructions in CONTRIBUTING?

Y

Have you written this article by yourself? Have you taken inspiration from anywhere and then written it in your words?

[I have taken inspiration from youtube videos for working of Ansible part.]

Great article. But content should be a little more richer. :smile:

I'll take care from next time 😃


[entropy_src/dv] Use the internal reset monitor to know a mid-test reset occurred

[ ] Change chip_sw_entropy_src_fuse_vseq use the internal reset monitor to know a mid-test reset occurred.
[ ] The tests chip_sw_entropy_src_fuse_en_fw_read_test and chip_sw_csrng_fuse_en_sw_app_read_test depend on this file and needs changes as well.

Refer to comment

assigning to @sriyerg for visibility.

Should be done by a dv engineer, so I'm unassigning myself.

In an attempt to reduce churn, marking as not planned since the current mechanism works fine and is used by multiple tests.


Certificate issue

A scan (see here for details and background) just revealed the APKs at your releases are signed using an expired debug key ("denyAfter 2019-01-01"). As that has security implications, may I ask you to please switch to a proper release key, and provide the corresponding APK signed with it? Thanks in advance!

@Mazahir26 Any chance? Or did you abandon development of this app?

Hey! Sorry for the late reply. I would like to use a proper release key, But I don't know how to do that. Any help would be awesome or give me some time to figure it out.
Thank you so much for reaching out!!

I'm not an Android developer, so I can just point you to the proper documentation giving some "basic hints". I'd recommend using apksigner for signing. Unfortunately, its documentation does not include generating your keys first, so we need another one. Let me check the search engine again… Ah. There's the official documentation for KeyStore – however, it's rather more focused on technical details. Easier and straight-forward instructions can be found in this StackOverflow answer, which suggests running
keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000

You will then be prompted for some details like your name, organization, location etc. While you can skip some, I recommend to at least fill some of them to make clear it is your key. E.g. you don't need to give your "real name", but should maybe at least put your nick ("Mazahir26") instead; you can entirely skip the "organizational unit" and even the "organization", but it might be helpful to at least place the country. All that is of course up to you.
Done that, you can verify results using
keytool -list -v -keystore my-release-key.keystore -alias alias_name -storepass mypassword -keypass mypassword

(if you don't want to specify the passwords as options here just skip those parameters, and you should be prompted for them).
As that post is from 2013, algorithm and keysize used should be checked again if they are still meeting today's requirements (the validity of 10000 just sets the expiration date to 10,000 days (approx. 27 years) into the future, which should be perfectly fine. And as even recent articles use RSA with 2048, that should be OK too – if you want to increase security, you could use keysize 4096 instead.
Note that I do not recommend using Android Studio for this (and especially not for signing) as that has some implications FOSS-wise – e.g. signing injects some binary stuff which is proprietary (and encrypted at that, so it's hard to impossible to verify).
Oh, now that I wrote up all that I find an easy how-to at StackOverflow with step-by-step instructions :see_no_evil: I'll leave the above in nevertheless as it might be helpful, too.

Hey! I have updated my releases with properly signed keys, Can you verify the same?
Thank you.

Thanks! The certificate looks good now.  But two findings still. First, it seems you didn't use any of the approaches above but took Android Studio for signing?
SigningBlock blobs:
-------------------
0x504b4453 (DEPENDENCY_INFO_BLOCK; GOOGLE)

That is an opaque block Studio injects by default. It's encrypted with a public key belonging to Google, so only Google can tell what's really inside. If you really want to use Studio for signing, maybe you can add this snippet to your buld.gradle?
android {
    dependenciesInfo {
        includeInApk = false
    }
}

Next I see you updated your versioning:
package: name='com.example.koduko' versionCode='2001' versionName='1.0.2'

This is the arm64-v8a APK taken from release v0.1.2. So your tag names do not match; my updater refused to pull anything, as 0.1.2 < 1.0.0. May I recommend to have the tag names follow the versionNames with future releases?
Last thing is versionCode. The 2001 there means it's still versionCode 1, as if it were the very first release, just for the arm64 ABI (Flutter adds a "2000" for that ABI). This being the third release, it would be expected to be "2003" (or a higher last digit). This is easy to fix here, you just need to add the proper versionCode to the version line:
version: 1.0.2+3

Without that, nobody will ever receive any updates, as Android internally uses versionCode to tell versions apart. If the versionCode did not change, it's not considered an update.
I've manually added the latest version now, as this time 2001 > 1 updates should be applied (I've picked the arm64 variant; with it's size down to ~10 MB, there's now be up to 3 versions kept in my repo instead of just a single one before, as the per-app limit of 30 MB allows that now). And I suggest starting applying these updates button-up: fixing versionCode  (for the next release) is the easiest one :wink:
Thanks a lot!

Yeah I also was running into the issue with the version code. Using Obtainium to keep track of github releases btw.

Hi @IzzySoft ,
Thank you for your detailed feedback and guidance! I've followed your bottom-up approach and addressed the issues as discussed:

Fixed the versionCode to 1.0.2+4 to ensure proper versioning and updates.
Corrected the GitHub tag naming to align with version names for future releases.
Resolved the original certificate problem by adjusting the signing process.

Could you please verify these changes on your end? Your insights have been invaluable, and I appreciate your guidance throughout this process.
I must also inform you that I have changed my signing key, which will unfortunately lead to significant complications. This change will require manual reuploading of the app as a new listing, and I apologize for any inconvenience this may cause.
Additionally, it took me quite some time to figure these issues out, so your help has been greatly appreciated.
If there are any other issues or further feedback, please let me know. Thank you once again for your assistance and understanding.
Thank you.

Yeah I also was running into the issue with the version code. Using Obtainium to keep track of github releases btw.

I'm very sorry for the inconvenience caused. I'll ensure that future releases are smoother. Please note that due to the recent changes, reinstalling may result in data loss.
Thank you for your understanding.

I an confirm that the version code reported by the OS in AppInfo, reported by the app in its settings and the github release all match now. Thank you for addressing this!

@fuzzblob Well with that said I am closing this issue. If anyone faces any issues regarding the certificate or versionCode, Please re -open this issue.
Thank you.

Manually triggered the update and adjusted the config. This will go live with the next sync then:


perf(traverse): speed up finding UID binding name

Speed up finding UID var name. Previously iterated through all SymbolTable::references and checked each for a string match. Replace that with a single hashmap lookup on ScopeTree::root_unresolved_references.

#4356  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @overlookmotel and the rest of your teammates on  Graphite

CodSpeed is showing -1% on transformer[pdf.mjs] benchmark. I believe this to be erroneous - just noise. The flame graph shows the part which has got slower is semantic, which is unaffected by this change.


[state-sync] Fix test_fn_failover() flaky test

Overview
This test seems to fail often, for unrelated changes.  It looks like there is a mismatch on an assertion, based on loading a PeerId that doesn't match the expected value.
Test
---- tests::integration_tests::test_fn_failover stdout ----
thread 'tests::integration_tests::test_fn_failover' panicked at 'assertion failed: `(left == right)`
  left: `1a58dee42ccd6ff4e1680f704c730372`,
 right: `0edbb1b5f6d1b842224a45bc38d0e027`', state-synchronizer/src/tests/integration_tests.rs:936:9

https://app.circleci.com/pipelines/github/libra/libra/28373/workflows/8a23e7ec-80d6-4c37-ada8-e2d18b578e11/jobs/188777

This seems to be much better now / the tests have changed significantly since then.


Feature request: EnumerateProcessor

My try add EnumerateProcessor in project
But seems to me, something is missing

It seems like you misunderstood the point of EnumerateProcessor. I added more context to issue (#4). Sorry for not doing it before.
Please, rewrite you realisation to match the initial aim.


Enhance cmake shared and static library generation for memilio

Currently we don't support this for mscv and also we need to clean up this

closed in favor of #506


FALCON-1941: HiveDR fails with NN-HA enabled on both the source and t…

Fix for HiveDR to work NN-HA enabled clusters

+1

+1

+1, will commit shortly.


cannot execute python command

I have latest ha-bridge 4.5.6
I want to control MyQ Chamberlain Garage Door via python script
I get the script from https://github.com/Einstein42/myq-garage
The script is working OK if I execute in terminal, for ex.
/usr/bin/python  /root/myQ/myq-garage.py  open  Garage Door
this will open door.
However when I put this command line in HA-Bridge, it doesn't work
Log file show below
Decode Json for url items: [{"item":"/usr/bin/python /root/myQ-Garage/myq-garage.py open Garage Door","type":"cmdDevice"}]
Exec Request called with url: /usr/bin/python /root/myQ-Garage/myq-garage.py open Garage Door and exec Garden: not given
Executing request: /usr/bin/python /root/myQ-Garage/myq-garage.py open Garage Door
Process running: true

Hi, have you found a solution to your issue? I am having a similar problem. I am trying to execute an sh script. I gave read and execute access to www-data. One will work but the other two do not work.
Device1 (executes sshpass to run a command in another linux system. It changes the voicemail on my asterisk PBX system)
exec:///etc/sh-scripts/voicemail1.sh
Device2 (executes sshpass to run a command in another linux system. It change the voicemail on my asterisk PBX system)
exec:///etc/sh-scripts/voicemail2.sh
Device3 (executes winexe to make the PC open a fireplace video and displays it on the TV
exec:///etc/sh-scripts/fireplace.sh
all scripts work fine from terminal but only one works from HA-Bridge. I came to the conclusion it has to do with privileges. The one without needing privileges executes just fine however the one requiring privilages will not execute from ha-bridge. Please note I do not have to type for any command when running from terminal they work fine from terminal. Maybe the ha-bridge is not running as www-data?

So, you need to encapsulate the running of python itself inside a script that is executed as a non shell command. You will need to google this please.


Fix potential deadlock in RecursiveReadLocker.

Scope & Purpose
Fixed a potential deadlock in RecursiveReadLocker. This could happen if  some thread A has acquired a read-lock, then some thread B signals that it wants to acquire a write-lock and now thread A recursively wants to acquire another read-lock. Since our ReadWriteLocks usually prefer writers, the second attempt to acquire the read-lock would block, waiting for the writer to finish while the writer would block, waiting for the first read to finish. To solve this, the RecursiveReadLock does no longer follow the principal that writes have precedence over reads.
Should only be merged after #14103

[x] :hankey: Bugfix (requires CHANGELOG entry)
[x] :book: CHANGELOG entry made

Backports:

[x] Backports required for: 3.8, 3.7, 3.6 (#14130, #14131, #14134)

Testing & Verification

[x] This PR adds tests that were used to verify all changes:

[x] Added new C++ Unit tests

Only I think that the problem solution -- removes the recursive capture lock usage?


2021 Artifact Building

Title:
2021 Artifact Building
Description
Updating code to build the 2021 child artifact for Ethiopia only

Category: data artifact

Changes and notes

Updating to remove age group restructuring between 2019 and 2021 GBD
Some causes (measles and LRI) need to be for 2019 data (GBD 2021, but year is 2019) so adjusting for that
A lot of debugging of various functions

Verification and Testing
Checked the artifact in this notebook, seen in the below PR
https://github.com/ihmeuw/vivarium_research_nutrition_optimization/pull/150

Looks good pending the changes Jim and I suggested!


Clarify agent health reporting

The AgentHealth currently has an up field and a last_error fields.
It is not clear how to set fields if the agent process is started and running but it is unhealthy (e.g. we have a way to verify its health by polling a health check endpoint). Should we set up to true or false in this case?
The up field definition is

Set to true if the Agent is up and running.

So, it seems like we should set it to true. However, there is no other explicitly defined way to indicate unhealthiness, unless we assume the presence of last_error is that indicator.
We need to either clarify the spec to say last_error is the indicator or add another field to indicate the unhealthiness (e.g. bool healthy), or maybe rename up to healthy?

@andykellr @PeterF778 what do you think?

I agree that this is unclear in the spec. I think healthy is a better name. I think an agent that is down is also unhealthy so I do not think we currently need another name.

I agree that this is unclear in the spec. I think healthy is a better name. I think an agent that is down is also unhealthy so I do not think we currently need another field to represent running/not-running.

What do we do with start_time_unix_nano in that case? It is said to be set when up is true. Should we untie these 2 fields?


[WIP] Add Short Description Data

Action point formulated in Todo:

[x] Add a short description of the data in the README.md directly.
[ ] Merge again with the main branch after nbdev is merged.

Transporting changes to index.ipynb.

Just for documentation:
Errors when running nbdev_build_docs:

first error with gem:

ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.6.0 directory

fixed with this solution

second error with the conversion of index.ipynb:

'HTMLExporter' object has no attribute 'template_path'

fixed with conda install nbconvert=5.6.1


Sparse-registry fetching total size keeps increasing

Problem
From original thread https://internals.rust-lang.org/t/call-for-testing-cargo-sparse-registry/16862/20?u=pickfire

One thing I noticed is that the fetching need to go through several loops now, previously it just fetch until 100% then done, but now when it reached 100%, then it had to fetch another time again, and the total stuff needed to fetch which keeps increasing (1 -> 10 -> 50 -> 100 -> 130) resulting in the progress decreasing, feels weird.
I feel like the total should be - until there is a definite answer to the total number that needs to fetch then only show it rather than keep increasing it.

Steps

rustup update nightly
cargo +nightly -Z sparse-registry update

Possible Solution(s)

A way to improve that in the registry would be to on publish, provide an optional expected_dep_forest_size from the number of transitive dependencies used at publish time. This number could be used to provide a reasonable progress estimate quickly.

Notes
No response
Version
No response

This is expected behavior, but I understand it's confusing to have progress go backwards.
@rustbot modify labels: -C-bug +C-enhancement

Some additional ideas on what we could do.
Remove the progress bar

But keep the X/Y status. Y will still change as deps are discovered.

Fetching (35/38)

Include an estimate of the dependency graph size when publishing

Dependency graph size can change depending on features, platform, etc.
Would require running a batch job to generate for all existing crate versions
Increases metadata size

Attempt to run the resolver using cached metadata to get an estimate

Only works if the local cache is fresh
Wastes CPU time

Use the lockfile to get an estimate of the total number of dependencies

Only works if a lockfile is present.

Maybe instead of 35/38 something like:
Fetching (35 completed; 3 downloading)

Or maybe X/N+3 then until it is confirmed, X/Y

What do you mean by confirmed? Each dependency that's fetched could potentially require additional dependencies that aren't fetched yet.

Confirmed as in cargo knows that there won't be any additional dependencies.


Expose execution unit calculation and adjust fee estimation accordingly

We want to adjust fee calculation by adding cost stemming from plutus scripts. They have memory imprint and number of steps to execute. This is encapsulated in ExecutionUnit and is standarized. This was introduced to Primitives.Types. Moreover, we can extract pricing for those two resources. It is available in ledger's PParams and in wallet it is represented in ExecutionUnitPricesdata type. Wallet's ProtocolParameters were extended by this. executionUnitPrices field is optional as only available for Alonzo era. Whole extracting from network layer, exposing in ApiNetworkParameters was done, along with needed changes in swagger.
There is test to be added in integration tests to show it works.
To be done:

implement _calcScriptExecutionCost that takes TxBody from SelaedTx and ProtocolParameters - after sign tx is merged DONE
Add golden unit testing for _calcScriptExecutionCost DONE
Extend TransactionCtx and TransactionSkeleton  and add script execution cost field DONE
Adopt additional execution cost from script in overall fee DONE

Comments

Issue Number

bors try

bors try

Q: Were the execution units from the golden tests retrieved/checked with cardano-cli?

Had a passing thought about property testing this and similar work. It would be nice if there was a cheap and more general way. Is there some unexplored middle-ground between integration and unit tests? Might think more about it tomorrow...

PR with a few suggestions https://github.com/input-output-hk/cardano-wallet/pull/2893

bors r+


Does it work on Windows ?

I am looking for a time picker on react native for Windows...
Thanks

Its for web only.


pika API compatiblity test with redis 6.0

Redis have release version 6.0 ,but we have not tested pika client API with it. if you can test it and list the results to us,we appreciate it！

兼容性比较我来做，很快
单元测试、集成测试补充
googletest集成
得基于cmake集成之后来做

acl 命令后续有计划支持吗


brew outdated brew

A detailed description of the proposed feature
Add brew outdated brew feature to check if brew itself is outdated.
The motivation for the feature
I believe brew doctor used to check if the installed brew version was up to date, but was removed at some point. While brew outdated can be used to check if a formula is outdated, there currently is no (straightforward) way to check if brew itself is outdated.
Npm has a similar 'npm outdated npm' feature.
How the feature would be relevant to at least 90% of Homebrew users
I'm working on Mac app that uses Homebrew and npm under the hood. I am providing my users a one-click update functionality for these tools. If npm is up to date, I simply hide the 'update' button. I'm unable to do the same with brew, since the app can't see if brew itself is outdated or now. Showing the 'update' button while brew is updated confuses users, so the alternative I'm considering is removing the update button for brew all together.
What alternatives to the feature have been considered
A Github API call or curl command to fetch the latest version could be an alternative.

brew updates itself on brew update, which itself (by default) runs automatically with a short timeout (60 seconds), so there’d be no point to checking if brew is outdated, because by the point you ran the command to check, it’d no longer be. brew’s update mechanism is zero-click, in that sense.
So just run your brew commands at will in the app. Any user that knows enough about Homebrew to turn off auto-updating should be smart enough to understand the consequences.

@vitorgalvao Thanks for the quick answer. I wasn't aware brew auto-updates. Whether that's a good design principle is a different discussion, but it works for me. I guess an outdated command would only make sense for the small minority who has auto-update disabled.

Whether that's a good design principle is a different discussion

It is. Only good things came out of it, less breakage and less bug reports.

I guess an outdated command would only make sense for the small minority who has auto-update disabled.

Not even for those. You need brew update to update the formulae and casks definition anyway. There’s no situation where that command would be useful.


Spy TheSpy.txt file

Hi,
I have an error when I run a runner. I have a SpyTheSpy.txt file that opens with a message "A Debugger has been detected! Please close System.Diagnostics.Process []".
Can you tell me where the problem comes from and how to fix it.
Thank you in advance.

You can't report it here you have to report it here https://github.com/ForlaxPy/openbullet-1.2
And yes ,I fixed it and the update will be launched today so feel free to close this.

This happens on another version (1.2.1) which is NOT made by me, closing


Multiple issues with rocprof

[1] rocprof shipped with rocm 2.9 is not consistent with https://github.com/ROCm-Developer-Tools/rocprofiler/releases/tag/roc-2.9.0
The rocprofiler-dev package list version 1.0.0. Totally irrelevant.
[2] Segmentation fault
$ rocprof ./a.out
RPL: on '191013_220730' from '/opt/rocm/rocprofiler' in '/home/yeluo/opt/miniqmc/build_ryzen_aomp_MP'
RPL: profiling './a.out'
RPL: input file ''
RPL: output dir '/tmp/rpl_data_191013_220730_8233'
RPL: result dir '/tmp/rpl_data_191013_220730_8233/input_results_191013_220730'
ROCProfiler: input from "/tmp/rpl_data_191013_220730_8233/input.xml"
  0 metrics
  0 traces
Segmentation fault (core dumped)
RPL: '/home/yeluo/opt/miniqmc/build_ryzen_aomp_MP/results.csv' is generated

[3] try to load non-exist dynamic library.
$ rocprof --hsa-trace ./a.out
...
Tool lib "/opt/rocm/roctracer/tool/libtracer_tool.so" failed to load.

[2] still persist with 2.10. A big dig into the log I found
Nov 27 01:04:47 ryzen-box kernel: [13115.668002] check_spo_batch[18207]: segfault at 3b ip 00007fd9e3f1ecd9 sp 00007fffba2d8630 error 4 in librocprofiler64.so.1.0.0[7fd9e3f04000+37000]
Nov 27 01:04:47 ryzen-box kernel: [13115.668008] Code: f8 fe ff ff ff 90 e8 00 00 00 85 c0 0f 84 3f 05 00 00 48 8b 85 08 ff ff ff 4c 8b 50 e8 4d 8b 42 78 4d 85 c0 0f 84 3f 05 00 00 <4d> 8b 48 10 4d 85 c9 0f 84 32 05 00 00 48 8b 8d d8 fe ff ff 48 8b
Nov 27 01:04:47 ryzen-box kernel: [13115.765316] Started evicting pasid 32770
Nov 27 01:04:47 ryzen-box kernel: [13115.765318] Evicting PASID 32770 queues
Nov 27 01:04:47 ryzen-box kernel: [13115.765465] Finished evicting pasid 32770

My system is ubuntu 18.04 + Radeon VII. Both 4.15 and 5.0.0 kernels hit segfault.

Same behavior here with gfx900 Vega 10 XTX [Radeon Vega Frontier Edition]. Ubuntu 18.04 and ROCm 2.9.6

Hi Ye-luo,
According to the issue 1. Could you clarify what do you mean under "The rocprofiler-dev package list version 1.0.0. Totally irrelevant."?
According to the issue 2. I'll try to reproduce it on Ubuntu 18.04. Could you share what application are you profiling?

[1] It seems that rocprofiler-dev version is listed constantly 1.0.0 even it gets updated as ROCm releases. The issue was when I upgraded to ROCm 2.9 the rocprofiler-dev contents were not consistent with https://github.com/ROCm-Developer-Tools/rocprofiler 2.9 tag.
[3] There is an dependency issue. roctracer-dev need to be required by rocprofiler-dev
I would say the above two are mostly packaging issue.
[2] is the major problem I had. You need to build https://github.com/QMCPACK/miniqmc using the OMP_offload branch. See AOMP instructions. You will need aomp 0.7-4 because I hit big problems with 0.7-5 https://github.com/ROCm-Developer-Tools/aomp/issues/45. When using 0.7-4, you will only be able to build part of miniQMC but you only need to succeed in make -j8 check_spo_batched.
Then I ran rocprof ./bin/check_spo_batched and hit Segmentation fault.

Hi Ye-luo,
Thank you for providing the details.
I'll check your application ant try to reproduce your issue.

The AOMP 0.7-5 issue I hit was related to my machine. After fixing that, [2] remains.

With rocm 3.0, the error becomes "Error: V3 code object detected - code objects tracking should be enabled"

There is a rocprof option to enable support for V3 code object '--obj-tracking on'.

After adding "--obj-tracking on", rocprof from rocm 3.0 works well with my application built with AOMP. Hopefully users don't need to specify this option in the future.

You can set "obj-tracking=on" by default in the profiler rc file 'rpl_rc.xml'.
Configuration file:
You can set your parameters defaults preferences in the configuration file 'rpl_rc.xml'. The search path sequence: .:$HOME:
First the configuration file is looking in the current directory, then in your home, and then in the package directory.
Configurable options: 'basenames', 'timestamp', 'ctx-limit', 'heartbeat', 'obj-tracking'.
An example of 'rpl_rc.xml':

@eshcherb The error message currently says
Error: V3 code object detected - code objects tracking should be enabled

But it could be updated to instead say
Error: V3 code object detected - code objects tracking should be enabled by passing '--obj-tracking=on'

Just a thought.  This would make it easier for the user to address the problem if there is a good reason code object tracking is not on by default.


Add Frobenius elements

Frobenius elements

@jjaassoonn @jouglasheen can you clarify why there are two files here? My instinct is to merge this PR (but ideally with the file in for_mathlib) and then refactor it until it's appropriate to go into mathlib.

@kbuzzard @jjaassoonn CrazyFrobenius.lean is an obsolete version of ExistsFrobenius.lean. We can delete CrazyFrobenius.lean.

Can you delete it and bump to current main? Or is this hard?

I tried to delete the file by right-clicking this:

but apparently that's not the way to do it. I don't know how to delete it or bump to the main branch.

I tried to delete the file by right-clicking this:  but apparently that's not the way to do it. I don't know how to delete it or bump to the main branch.

@jouglasheen, to delete the file, do it on the command line: git rm FLT/CrazyFrobenius.lean and then commit and push as usual.

@jouglasheen:

I don't know how to ... bump to the main branch.

You can just do:
git checkout CrazyFrobenius
git fetch
git merge origin/main

If the merge works, then just git push. Otherwise, learn how to deal with git conflicts. :-)

@semorrison @joelriou Thank you very much for the reviews and help with github. I have succeeded in deleting the obsolete file and I think I have succeeded in merging to the main branch.
Please, excuse some delay in responding to your reviews (I am currently studying for exams).


Building Taichi-Unity Project on iOS (iPad)

Hi, I'm trying to build the project from Taichi-UnityExample on my iPad.
I am facing difficulties in accomplishing this, so I'd like to ask for your help.
From what I understand, some libraries are required for this and they can be acquired as follows:

iOS/libtaichi_c_api.a: by building taichi repo using python3 build.py ios (v1.6.0+)
iOS/libtaichi_unity.a: by using sh build-ios.sh at root dir of taichi-unity2
macOS/arm64/libtaichi_c_api.dylib: by installing taichi (pip install taichi or developer installation)
macOS/arm64/libtaichi_unity.dylib: by cmake building taichi-unity2.

I cannot find the way to build "iOS/LaunchHook.m" that corresponds to the desired taichi version, but it seems that the same file can be used regardless of the version.
However, despite attempting the above entire process for multiple versions (1.5.0~1.7.0), I have not successfully built it on iOS.
Thus I'd like to ask whether there is any mistake in my steps I've taken or if there are any necessary tasks for building on iOS that I might be unaware of.

I had solved this problem by changing "ti_submit" into "ti_flush" of lines 393, 399 in Assets/Taichi/Generated/taichi_core.cs.


HHH-10803 - Fix getParameter methods to be JPA compliant with thrown exception types.

Looks good @Naros. We should have it integrated.

Applied upstream.


Property assignedBy for otherIdentifier and sellerProductOtherIdentifier

I would like to have a clarification about how to use property assignedBy for otherIdentifier and sellerProductOtherIdentifier.
Property assignedBy i optional with enumerations Customer and Seller. Only one occurence exists for otherIdentifier and sellerProductOtherIdentifier.
As far as I can see, the context defines if these identifiers are defined by the Seller or the Customer.
Why do we have this property assignedBy?
It would be more clear for implementers if the property assignedBy was required and always showing the owner of these identifiers. A bit confusing now when it is optional.

I think we do have the assignedBy property in order to anticipate that we will have more party types in the future. Today, with only the Seller and Customer values, it is true that the assignedBy property is redundant with the context.
If we decide to keep the assignedBy property, we can make it required. Let's discuss this issue during our next meeting (2022-07-27).

We keep the assignedBy property and we make it required.

If we accept issue #66  there will be no otherIdentifier properties anymore :-)

Following the issue #66, there will be no otherIdentifier property anymore, so we can close this issue.


Use the Declarative Net Request API

Hey!
This is a change request to use the Declarative Net Request API using dynamic rules defined in the background script.
Cons:

All rules require a Kagi token, this means that the user needs to set the token in the app whether or not they use Incognito

Pros:

The dynamic rules are persisted and run even when the background script is killed
The dynamic rules do not leak searches
The Kagi app could potentially set all the redirect rules and allow the user to allow the extension for search engines they want to use it on, which might remove complexity introduced by the search engine selector in app. The only input the user needs is the token.

That is amazing, but I am very concerned about requirement for token. Setting up the extension is already hard as it is and this may be over the top.
If it is necessary for this method to work could the extension autoamtically fill it (provided the user is logged into their Kagi account?)
Also what kind of permissions this approach requires?

I've thought about this and experimented a bit.
I've found that:

Injecting the token (based on the POC from https://kagifeedback.org/u/metaeaux) is necessary, if the user is already logged into kagi.com the existing cookie appears to be ignored by the redirect. I don't know why this is the case, but it's what I've observed.
It is possible to obviate the need for requesting the token from the user by using the Cookie API, essentially the background script could look up the session cookie directly and pass it on. I didn't suggest this because there are already concerns around permissions, and this would mean cookies for any allowed hosts would also be accessible from the background script as collateral damage

It is possible to obviate the need for requesting the token from the user by using the Cookie API, essentially the background script could look up the session cookie directly and pass it on. I didn't suggest this because there are already concerns around permissions, and this would mean cookies for any allowed hosts would also be accessible from the background script as collateral damage

I explored an approach where the popover could temporarily request the cookies permission for kagi.com  and pass the kagi_session value to the background script to enable the redirect rules.
This is not possible because Safari does not return HTTPOnly cookies. So even with the cookies permission this won't work.

I am very concerned about requirement for token

What I have discovered (but isn't spelt out in the documentation) is that when you use a Redirect Rule with the Declarative Net Request API it won't use any cookies that would otherwise be in the request if the user had initiated it manually.
For example, consider the two scenarios:
a. A user navigates directly to https://kagi.com/search?q=wat3wat
b. A user navigates to https://duckduckgo.com/search?q=wat3wat, which is then redirected using the DNR API to https://kagi.com/search?q=wat3wat
In the first case the browser looks up the cookies stored for .kagi.com and sends them in the request. But in the second case the browser chooses not to send any cookies. Furthermore, it does not send cookies across redirects. I suspect this is for security reasons, there is maybe a sneaky way to exfiltrate secrets if the cookies are sent.
This ties our hands with regards to needing to know the the token beforehand, and the dance is not so straightforward:

We redirect https://duckduckgo.com/search?q=wat3wat to https://kagi.com/search?q=wat3wat&token=<token>
Kagi redirects https://kagi.com/search?q=wat3wat&token=<token> to  https://kagi.com/search?q=wat3wat
We inject the token a second time as a cookie set-cookie kagi_session=<token> for kagi.com

We need to do it this way because if we didn't inject it in (1.) Kagi would redirect to https://kagi.com/signup, and if we didn't inject it in (3.) we would again be redirected to signup. We can only run one action per rule (we can't set the cookie and also redirect), so Kagi's redirect behaviour in (1.) is what enables this dance to happen.

@LukeChannings thanks for this PR and the research! I've got a POC in development around using this DNR api that I haven't finished yet, but I've got some learnings I can share:

First of all, kudos for the thorough research on the cookie-stripping situation with DNR redirects. This took me a while to track down switching back and forth between Xcode, Safari, and Proxyman. Did you ever find official documentation for why DNR redirects do not attach the cookies already associated with the site? I don't see the privacy benefit there, so my hunch is it's a bug in WebKit or Safari. I'll file a bug with them about it to see if I can get an answer.
Luckily, for non-private browsing, there's a workaround to the issue of DNR redirects not attaching cookies to the new request: redirect to "www.kagi.com" instead of "kagi.com". Kagi will then redirect to "kagi.com" and Safari will attach the cookies at that point. It's weird, but it works.
To make sure we support all possible search engine domains for a given engine, if using the host_permissions manifest key we'd have to include 261 patterns (e.g. google.co.ve, duckduckgo.pl), which would result in Safari's Settings->Websites->Kagi Search for Safari list showing 261 domains. That is confusing for the end user to deal with, so ideally we avoid that scenario. The desired solution would only show the domains the user has explicitly granted/denied permissions to the extension for showing up in that list. This is possible by using optional_host_permissions, but adds a layer of complexity due to now needing activeTab to figure out the current tab's hostname so we request the correct host permissions for a single domain.
For private browsing, we still have to get the session key somehow. While one option is to have the user manually paste it in the way we do now, I'm working with the Kagi team on a solution that would automatically fetch the token.
I've also found that for this relatively simple use case, it's a bit cleaner to just use the regexSubstitution method for all of the search engines. All we have to do is swap the parameter key to the one used by each engine. The regex itself is less self-explanatory than the declarative queryTransform syntax, but it means we don't need to maintain different templates for every search engine.

I'll be sharing my POC within the next 2 days, but I'd like to keep this PR open so we can learn from each other and figure out the best solution for using the DNR api in the Kagi extension.

@workwithnano

I've got a POC in development around using this DNR api that I haven't finished yet

I really didn't expect this PR to get merged since there are outstanding UX and testing problems. I hope it can be helpful for your implementation.

Luckily, for non-private browsing, there's a workaround to the issue of DNR redirects not attaching cookies to the new request: redirect to "www.kagi.com" instead of "kagi.com". Kagi will then redirect to "kagi.com" and Safari will attach the cookies at that point. It's weird, but it works.

This is strange. Does it attach cookies after 3 redirects? I tried variations and wasn't able to get Safari to send cookies with any redirect, I'll try with www. later to verify.

I've also found that for this relatively simple use case, it's a bit cleaner to just use the regexSubstitution method for all of the search engines.

This makes sense if you need to handle all TLDs as well. I needed to use regexSubstitution for Yahoo, since it uses a different search parameter name — I would worry about maintaining a single regex for all queries though, if only because it might make debugging harder. (testMatchOutcome would be useful here, but sadly Safari does not support it).

I'll be sharing my POC within the next 2 days, but I'd like to keep this PR open so we can learn from each other and figure out the best solution for using the DNR api in the Kagi extension

I'll be happy to test your POC when it's ready, no rush. I continue running my PR both on macOS and iOS, I'll update if any issues surface. So far I have had a smooth experience.

The behavior where the cookies aren't being attached when redirected, I'm guessing has something to do with the SameSite cookie setting? I could be wrong but it was something I've encountered before.
MDN page for the Lax value
kagi_session cookie has SameSite set to Lax (default, according to MDN). So it comes down to whether or not Safari counts DNR redirects as cross-site request.

@applefreak
Why would cookies not be attached when redirecting from kagi.com/search&q=<search>&token=<token> to kagi.com/search&q=<search> if that is the case?

Great to see all the discussion and research here!

To make sure we support all possible search engine domains for a given engine, if using the host_permissions manifest key we'd have to include 261 patterns (e.g. google.co.ve, duckduckgo.pl), which would result in Safari's Settings->Websites->Kagi Search for Safari list showing 261 domains. That is confusing for the end user to deal with, so ideally we avoid that scenario. The desired solution would only show the domains the user has explicitly granted/denied permissions to the extension for showing up in that list. This is possible by using optional_host_permissions, but adds a layer of complexity due to now needing activeTab to figure out the current tab's hostname so we request the correct host permissions for a single domain.

@workwithnano you might be able to reduce permissions further by making activeTab an optional permission, and having the popup UI for Kagi provide configuration options, such as automatically detecting the search engine, or manually entering the domain in a text field or a dropdown list e.g. "google.co.ve", and the requesting permissions after the user takes an action. That way you might be able to get permissions down to only 2 host permissions, which is better than the 1.0 permission requirements.

I've pushed a PR to https://github.com/kagisearch/browser_extensions/pull/60 with the fewest permissions and fewest chances for bugs I could manage.
@metaeaux making activeTab optional helps, as does making all the hosts optional_host_permissions. The dance of "enable activeTab, set up the redirects for the engine(s) you want, then you can disable activeTab" is annoying but I think it's not so bad. I added scripting as a "setup" permission along with activeTab which lets the user easily get the private session key from Kagi if they want private browsing to use Kagi.
@LukeChannings @applefreak the issue of the token as a query parameter not turning into a Set-Cookie before redirecting to the search query is a head scratcher. Luckily, having the cookie addition rule does the trick.
The remaining issue to resolve is allowing a !bang to redirect to the search engine even if we have a rule for that engine to redirect to Kagi. I'm not sure how to do that yet. Kagi uses the "default" search engine url for bangs, so we can make the assumption that !g means "google.com" and never "google.pl" or some other TLD. Perhaps we'll have to bake in the bangs for the Safari default search engines and create higher-priority rules that redirect directly to those main engine urls while stripping out the bang from the query.

The remaining issue to resolve is allowing a !bang to redirect to the search engine even if we have a rule for that engine to redirect to Kagi.

Not a lot of users would have a country specific bang so this should not be too much of an issue. Anyway can we check referrer to see if it is Kagi, while deciding to redirect?


ntfy-sh: add runtime secret file support

ADDED: smtpSenderPassFile and webPushPrivateKeyFile options
ADDED: systemd LoadCredential for secure runtime secret handling
ADDED: security hardening options for notification service
CHANGED: state directory handling
Closes #352461
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[x] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
Note: I attempted to run nixpkgs-review, but my dual core laptop repeatedly froze during the process. If additional testing is required, I would appreciate assistance or confirmation from a reviewer with more capable hardware.
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
25.05 Release Notes (or backporting 24.11 and 25.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

Welcome to Nixpkgs! Please squash your commits into just one 🥰

Thank you!

Looks like you mis-rebased there. Got a lot of unrelated commits in here

Looks like you mis-rebased there. Got a lot of unrelated commits in here

I think I fixed this. Sorry I am still getting the hang of git.

Looks like you mis-rebased there. Got a lot of unrelated commits in here

I am not sure why but I can't seem to fix it. Do you mind helping me out?

I think you just did a mass ping.

Oh my god sorry. Will do.


admin: disable admin html

This isn't something we want to expose when running Envoy Mobile.
For more details: https://github.com/envoyproxy/envoy/pull/21814
Risk Level: Low, will impact anyone who's used this feature before.
Testing: Verified that admin_html.cc is not compiled.
Docs Changes: N/A
Release Notes: N/A

How does this work with enableAdminInterface method that we currently have on the builder itself? I assume that it will no longer be possible to visit an admin webpage after we call enableAdminInterface on the builder (and build the engine)?

How does this work with enableAdminInterface method that we currently have on the builder itself?

I was only vaguely aware of this configuration point. I didn't know that the html interface was what we were explicitly exposing. Knowing that this is an explicitly enabled feature changes the discussion on this for sure.
I had started a discussion on Slack here: https://envoyproxy.slack.com/archives/C02F93EEJCE/p1656350561377359

I assume that it will no longer be possible to visit an admin webpage after we call enableAdminInterface on the builder (and build the engine)?

Yes that's my understanding as well based on the description in https://github.com/envoyproxy/envoy/pull/21814.

I was only vaguely aware of this configuration point. I didn't know that the html interface was what we were explicitly exposing. Knowing that this is an explicitly enabled feature changes the discussion on this for sure.

The feature was about exposing curl localhost:9901/stats and not the admin (/) endpoint itself so I think that it should be fine to proceed here. I have a PR that explains how to use EM admin facilities in https://github.com/envoyproxy/envoy-mobile/pull/2348

This should be good to merge no?

No, we decided to keep the feature enabled in our last community meeting, but to eventually replace it with safer programmatic APIs to provide the same kind of debugging features.


Love your color theme in the screenshots, curious what theme are you using?

I found this: https://github.com/nathanbuchar/atom-one-dark-terminal
But doesn't quite look like your theme

Hi, I use dracula theme :)

Thank you!


Allow Swift Package Manager to be used with Add to App

Build solution for add to app to be able to use Swift Package Manager for plugins.
Design / Proposal
Unfortunately, SPM doesn't really have a way to convert a package into an xcframework like CocoaPods does. It seems at some point there may have been a hacky way to do it, but I was unable to get it to work.
As an alternative, we can create a FlutterPluginRegistrant Swift Package that then has dependencies on all the Swift Package plugins and CocoaPod xcframeworks. The tricky part, though, is adding the dependency of the Flutter framework. If a plugin does not have a direct dependency on the Flutter framework, it's not guaranteed to be processed before the plugin compiles, which can cause errors about Flutter header not being found.
In https://github.com/flutter/flutter/pull/146256, we get around this issue by using a pre-build script that copies the Flutter framework into a spot (BUILT_PRODUCTS_DIR ) Swift Package Manager automatically uses as a framework search path. However, this doesn't quite work with the add to app scenario because the framework never gets codesigned and we can't codesign it in the pre-build step because for some reason EXPANDED_CODE_SIGN_IDENTITY is not included in the settings passed to the step. I also considered doing both the pre-build script and using Flutter framework as a dependency in the FlutterPluginRegistrant, however, Swift Package Manager appears to delete it from the BUILT_PRODUCTS_DIR before processing, so still could be a race condition.
My current plan is instead to inject a dependency at the bottom of each plugin's Package.swift like so:
package.dependencies += [
    .package(path: "/path/to/flutter_framework_swift_package")
]
let result = package.targets.filter({ $0.name == "plugin_name" })
if let target = result.first {
    target.dependencies.append(
        .product(name: "Flutter", package: "FlutterFrameworkPackage")
    )
}

We also will need to ensure the supported platforms for the plugin are higher than or equal to that of the flutter framework (otherwise Swift Package Manager may give an error).
To do this we can use swift package dump-package to convert the Package.swift to JSON to check if the version needs to be updated and then inject some swift code at the bottom of the Package.swift to alter the supported platforms, for example:
if package.platforms != nil {
    package.platforms = package.platforms?.filter({ !String(describing: $0).contains("ios") })
    package.platforms?.append(.iOS("12.0"))
} else {
    package.platforms = [
        .iOS("12.0")
    ]
}

cc @jmagman for feedback

Unfortunately, SPM doesn't really have a way to convert a package into an xcframework like CocoaPods does

The big limitation that Flutter has with xcframeworks and CocoaPods is the inability to handle common dependencies, https://github.com/flutter/flutter/issues/130220. If both host app and Flutter module (Flutter module's plugin) define the same pod dependency, and Flutter module is integrated using Option B (with xcframeworks), there will be an errors like Multiple commands produce 'CommonDependency.framework'. The workaround is to link every plugin source (podspec) from the Flutter module directly to the host app (in Podfile), instead of using plugins' xcframeworks produced by build ios-framework command, https://github.com/flutter/flutter/issues/114692. That was one of the reasons build ios-framework --no-plugins flag was introduced.
I am not so familiar with SPM, but the proposed alternative reminded me of this workaround, so I wanted to point it out. I hope the issue can be avoided for SPM.
Also, in CocoaPods case, each plugin defines Flutter as a dependency in their podspec, so maybe smth similar can be done in SPM case to avoid errors about Flutter header not being found.
s.ios.dependency 'Flutter'
s.osx.dependency 'FlutterMacOS'

The big limitation that Flutter has with xcframeworks and CocoaPods is the inability to handle common dependencies, #130220.

That's good to know about, thanks. I think SPM will not have this problem since dependency resolution will be handled by SPM, but I'll test it out.

Also, in CocoaPods case, each plugin defines Flutter as a dependency in their podspec, so maybe smth similar can be done in SPM case to avoid errors about Flutter header not being found.

Unfortunately, this isn't really possible with SPM because SPM needs to know where to find the framework and if it doesn't, it'll fail to resolve.


lstm sequence to sequence with functional api

I have some problems with the way functional api makes the graph
I'm implementing a sequence to sequence layer, not based in the concept of the addition_rnn example.
I'm thinking in the https://papers.nips.cc/paper/5346-sequence-to-sequence-learning-with-neural-networks.pdf paper. In these, the decoder has as a seed the last internal state of the lstm the C vector, and a end of sentence symbol in the input. The idea is make a loop providing as input to the decoder the last prediction made by the model.
To make this I was thinking in use the output layer like shared layer. Use it to perform the output with the softmax, and also,  use inside of my seq2seq function in order to perform the next step input in the decoder.
I think that it is important to train in these ways because it is interesting for example, during to training provide as decoder input the exact labels, and in testing make the loop function thing. This is explained in http://arxiv.org/abs/1506.03099
this is the code of my class
from ..engine import Layer, InputSpec
from .. import backend as K
from ..layers import Recurrent

import numpy as np

class Rnn_seq2seq(Recurrent):

    def __init__(self, encoder, decoder,  loop_function, eos_symbol, **kwargs):
        self.encoder = encoder
        self.decoder = decoder
        self.loop_function = loop_function
        self.eos_symbol = eos_symbol
        super(Rnn_seq2seq, self).__init__(**kwargs)

    def build(self, input_shape):

        assert len(input_shape) >= 3
        assert len(self.eos_symbol) == input_shape[2], " input_dim %d len eos %d" % (input_shape[2], len(self.eos_symbol))
        self.input_spec = [InputSpec(shape=input_shape)]
        input_dim = input_shape[2]
        self.input_dim = input_dim

        self.encoder.build(input_shape)
        self.decoder.build(input_shape)
        self.loop_function.build((input_shape[1],input_shape[2]))

        self.output_dim = self.decoder.output_dim

        super(Rnn_seq2seq,self).build(input_shape)

    def call(self, x, mask=None):
        input_shape = self.input_spec[0].shape
        if K._BACKEND == 'tensorflow':
            raise Exception('TODO')

        constants = self.encoder.get_constants(x)
        preprocessed_input = self.encoder.preprocess_input(x)
        initial_states = self.encoder.get_initial_states(x)

        last_output, outputs, states = K.rnn(self.encoder.step, preprocessed_input,
                                             initial_states,
                                             go_backwards=self.encoder.go_backwards,
                                             mask=mask,
                                             constants=constants,
                                             unroll=self.encoder.unroll,
                                             input_length=input_shape[1])

        constants = self.decoder.get_initial_states(x)

        sampling_states = [states]
        sampling_outputs = []
        constants = self.decoder.get_constants(x)

        cell_states = sampling_states[-1] + constants
        last_output, last_states = self.decoder.step(self.decoder.preprocess_input(self.eos_symbol[0]),cell_states)
        sampling_outputs.append(last_output)
        sampling_states.append(last_states)

        for i in range(1,input_shape[1]):

            cell_states = sampling_states[-1] + constants
            last_output, last_states = self.decoder.step(self.decoder.preprocess_input(self.loop_function(sampling_outputs[-1])),cell_states)
            sampling_outputs.append(last_output)
            sampling_states.append(last_states)

        if self.decoder.return_sequences:
            return sampling_outputs
        else:
            return sampling_outputs[-1]

To try this concept I'm using the addition_rnn example, In this example the model is described at the end

from __future__ import print_function
from keras.engine.training import slice_X
from keras.models import Sequential, Model
from keras.layers.core import Activation, RepeatVector,Dense
from keras.layers.wrappers import TimeDistributed
from keras.layers import recurrent,Input
import numpy as np
from six.moves import range
from keras.seq2seq.Seq2seq import Rnn_seq2seq

class CharacterTable(object):
    def __init__(self, chars, maxlen):
        self.chars = sorted(set(chars))
        self.char_indices = dict((c, i) for i, c in enumerate(self.chars))
        self.indices_char = dict((i, c) for i, c in enumerate(self.chars))
        self.maxlen = maxlen
    def encode(self, C, maxlen=None):
        maxlen = maxlen if maxlen else self.maxlen
        X = np.zeros((maxlen, len(self.chars)))
        for i, c in enumerate(C):
            X[i, self.char_indices[c]] = 1
        return X
    def decode(self, X, calc_argmax=True):
        if calc_argmax:
            X = X.argmax(axis=-1)
        return ''.join(self.indices_char[x] for x in X)

# Parameters for the model and dataset
TRAINING_SIZE = 500
DIGITS = 3
INVERT = True
# Try replacing GRU, or SimpleRNN
RNN = recurrent.LSTM
HIDDEN_SIZE = 64
BATCH_SIZE = 512
LAYERS = 1
MAXLEN = DIGITS + 1 + DIGITS + 2

chars = '0123456789+ es' # added s=start of sentence and e= end of sentence
ctable = CharacterTable(chars, MAXLEN)

questions = []
expected = []
seen = set()
print('Generating data...')
while len(questions) < TRAINING_SIZE:
    f = lambda: int(''.join(np.random.choice(list('0123456789')) for i in range(np.random.randint(1, DIGITS + 1))))
    a, b = f(), f()
    # Skip any addition questions we've already seen
    # Also skip any such that X+Y == Y+X (hence the sorting)
    key = tuple(sorted((a, b)))
    if key in seen:
        continue
    seen.add(key)
    # Pad the data with spaces such that it is always MAXLEN
    q = 's'+'{}+{}'.format(a, b)+'e'
    query = q + ' ' * (MAXLEN - len(q))
    ans = 's'+str(a + b)+'e'
    # Answers can be of maximum size DIGITS + 1 + 2 control characters
    ans += ' ' * (DIGITS + 1 + 2 - len(ans))
    if INVERT:
        query = query[::-1]
    questions.append(query)
    expected.append(ans)
print('Total addition questions:', len(questions))

print('Vectorization...')
X = np.zeros((len(questions), MAXLEN, len(chars)), dtype=np.bool)
yin = np.zeros((len(questions), DIGITS + 3, len(chars)), dtype=np.bool) # maximum output length plus sequence characters
yout = np.zeros((len(questions), DIGITS + 2, len(chars)), dtype=np.bool) # maximum output length plus sequence characters
for i, sentence in enumerate(questions):
    X[i] = ctable.encode(sentence, maxlen=MAXLEN)
for i, sentence in enumerate(expected):
    yin[i] = ctable.encode(sentence, maxlen=DIGITS + 3)
for i, sentence in enumerate(yin):
    yout[i]=yin[i][1:]

# Shuffle (X, y) in unison as the later parts of X will almost all be larger digits
indices = np.arange(len(yin))
np.random.shuffle(indices)
X = X[indices]
yin = yin[indices]
yout= yout[indices]

print('Build model...')

# Second model
eos=ctable.encode('e',maxlen=1) # end of sentence
eos=eos[0]
encoder_input = Input(shape=(MAXLEN,len(chars)))

encoder_cell = recurrent.LSTM(HIDDEN_SIZE)
decoder_cell = recurrent.LSTM(HIDDEN_SIZE)
softlayer = Dense(len(chars),activation='softmax')

seq2seq = Rnn_seq2seq(encoder_cell,decoder_cell, softlayer, eos)
outseq = seq2seq(encoder_input)

outlayer = TimeDistributed(softlayer)(outseq)

model2 = Model(input=encoder_input,output=outlayer)
model2.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

model2.fit(X, yout, batch_size=64, metrics=['accuracy'])

But the problem resides on how it makes the graph
There is a problem with the input types of the output shared layer, or the way in which I have to build the model

Traceback (most recent call last):
File "seq_deb.py", line 167, in
outseq = seq2seq(encoder_input)
File "/----/keras/engine/topology.py", line 485, in call
self.add_inbound_node(inbound_layers, node_indices, tensor_indices)
File "/----/keras/engine/topology.py", line 543, in add_inbound_node
Node.create_node(self, inbound_layers, node_indices, tensor_indices)
File "/----/keras/engine/topology.py", line 148, in create_node
output_tensors = to_list(outbound_layer.call(input_tensors[0], mask=input_masks[0]))
File "/----/keras/seq2seq/Seq2seq.py", line 73, in call
last_output, last_states = self.decoder.step(self.decoder.preprocess_input(self.loop_function(sampling_outputs[-1])),cell_states)
File "/----/keras/engine/topology.py", line 441, in call
self.assert_input_compatibility(x)
File "/-----/keras/engine/topology.py", line 382, in assert_input_compatibility
str(K.ndim(x)))
Exception: Input 0 is incompatible with layer dense_1: expected ndim=2, found ndim=3

I have tried to buid inside the model, outside, force dimension
Have anyone any suggestion for that??

@jllombart  I'm trying to do something similar - did you figure this out by any chance?


Release 0.3.0

closes #52

Changes Unknown when pulling 69e1f3c7dcd71d67edca0396e9b05db7590d8bfd on release-0.3.0 into ** on master**.


Improve the Travis config

use the faster Docker-based infrastructure
cache the composer cache between builds (cache is available on the new
infrastructure)
test against newer PHP versions

@stof Thanks!


Fix standalone news display

HI,
Attached contained few changes that should fix the news standalone display as mentioned on the card here https://trello.com/c/yhq0y0PG/499-fix-standalone-view-artcle for your perusal .

Coverage decreased (-0.2%) to 29.798% when pulling 15d7515ddf006127bc47f55102d5f12ce6500d94 on nuruddeensalihu:nuru/fix_news_standalone into dad1358c94fcf15aeab8829bbc45616c9faed85e on binary-com:master.

@nuruddeensalihu branch out of data

Changes Unknown when pulling 5feb997f5a1b71ca9bf7d71a3a3d820494d35517 on nuruddeensalihu:nuru/fix_news_standalone into ** on binary-com:master**.

Coverage decreased (-0.2%) to 30.185% when pulling 1a5aec61edc0c5cc1c4e2550c178e36a10f459a3 on nuruddeensalihu:nuru/fix_news_standalone into 3c30a9be2c525e4634e19e6aee7797f863524b1c on binary-com:master.

@nuruddeensalihu branch went out of date ~

@qingweibinary i think he can just click the update branch button when ready 😉 Continuos updating the branch at the moment would just keep adding unnecessary commits .

@nuruddeensalihu ok, an alternative is rebase ~ but use it with care =)


Upgrade version to 0.2.0

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (8b54ad1) 81.96% compared to head (f8fa2fa) 81.91%.

Additional details and impacted files
@@            Coverage Diff             @@
##             main      #55      +/-   ##
==========================================
- Coverage   81.96%   81.91%   -0.05%
==========================================
  Files          50       50
  Lines        6576     6576
==========================================
- Hits         5390     5387       -3
- Misses       1186     1189       +3

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


[Release 1.3.3] Change functionalTestDashboards to ref 1.3

Description
https://github.com/opensearch-project/opensearch-build/issues/2101
Issues Resolved
Part of https://github.com/opensearch-project/opensearch-build/issues/2101
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Hey @zelinh functionalTestDashboards has 1.3 https://github.com/opensearch-project/opensearch-dashboards-functional-test/tree/1.3
adding @kavilla

This shouldn't be changed. main branch is used all the time. I think that's the one they maintain on.

This might should be different since 2.0 would have tests updated for breaking changes.


YEAR AND MONTH OF SYMPTOMS ONSET (IMPROVING ACCESS TO PSYCHOLOGICAL THERAPIES)

Version 3 shows YEAR AND MONTH OF SYMPTOMS ONSET (IMPROVING ACCESS TO PSYCHOLOGICAL THERAPIES) linked to the attribute YEAR AND MONTH OF SYMPTOMS ONSET FOR IMPROVING ACCESS TO PSYCHOLOGICAL THERAPIES:
https://v3.datadictionary.nhs.uk/data_dictionary/data_field_notes/y/year_and_month_of_symptoms_onset_(improving_access_to_psychological_therapies)_dl.asp?shownav=1
This is what is shown in Together.
Why does Version 3+ show that it is linked to ACTIVITY DATE: https://datadictionary.nhs.uk/data_elements/year_and_month_first_started_antiretroviral_therapy.html

@AngelaFaulding Are you looking at the right elements?  The second link you've added is for Anti-retroviral Therapy.

Sorry I will have a closer look. It was passed to me, so will investigate.


Pass autocompletion broken

Autocompletion for the pass password manager is broken. It works on one computer but not on the other. Autocompletion for other programs (git ...) works.
I have no idea how to reproduce the bug.  Please advise me how to debug this.
System (both computers):

OS: Ubuntu 18.04.3
Zsh version: 5.4.2
Terminal emulator: gnome-terminal

Deleting the .zcompdump file restores autocompletion. See #7642.
Nonetheless this is not expected behavior.


Documentation/instance mocking

Hi!
I converted my blog post (http://robertbasic.com/blog/mocking-hard-dependencies-with-mockery) into a cookbook entry. This one is for #398

Added some very minor comments. Thanks @robertbasic :)

Coverage decreased (-1.05%) to 76.35% when pulling e8d622ddbd1cef58c7d39c87024fd57aff1275d6 on robertbasic:documentation/instance-mocking into f770ab0cf167cccf1a701f28411fbfc9971ff90e on padraic:master.

Thanks @robertbasic!


Updating start-server-and-test version

Due to CVE on Axios
https://github.com/opendistro-for-elasticsearch/anomaly-detection-kibana-plugin/security/dependabot/yarn.lock/axios/open
Description of changes:
Bumping up start-server-and-test version
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

thanks for making this change. Can you trying running yarn test:e2e to verify the change? This start-server-and-test  is only used in the test:e2e target. Make sure you have no process running on localhost:5601 and ES process is up before you run yarn test:e2e

thanks for making this change. Can you trying running yarn test:e2e to verify the change? This start-server-and-test  is only used in the test:e2e target. Make sure you have no process running on localhost:5601 and ES process is up before you run yarn test:e2e

thanks for making this change. Can you trying running yarn test:e2e to verify the change? This start-server-and-test  is only used in the test:e2e target. Make sure you have no process running on localhost:5601 and ES process is up before you run yarn test:e2e

Thanks @yizheliu-amazon for taking a look.
Yup I did run yarn test:e2eand verified that tests run as usual.

thanks for making this change. Can you trying running yarn test:e2e to verify the change? This start-server-and-test  is only used in the test:e2e target. Make sure you have no process running on localhost:5601 and ES process is up before you run yarn test:e2e

Thanks @yizheliu-amazon for taking a look.
Yup I did run yarn test:e2eand verified that tests run as usual.


small bug

the needCentred does not work because the + (void)updateNeedCentered:(BOOL)needCentered saves the value using the needCentered key and the getter is needCentred.

Hello!
Fix that in 1.0.2
Rename all occurrences of "needCentred" into "needCentered".


Consider creating some web services to integrate with github

At some point in the future, some of pyct's tasks might make good candidates to run on github PRs. E.g. you could imagine running something to report or strip unwanted metadata from notebooks. Or for dealing with data tests. And so on.
Although some such services might not map usefully to tasks that can be run locally, I'm keen for as many things as possible to also be runnable locally (with any services deployed to github just being wrappers).
Note: this is future work - I've created this issue only as a place for possible discussion right now.

Might be worth collecting examples/possible things to use:

https://github.com/MeeseeksBox/MeeseeksDev


Feature/#167 實作草稿repo

👏 解決掉的 issue / Resolved Issues

close #167

⛏ 變更內容 / Details of Changes

GetUserDrafts與UpdateUserDraft改傳回自定義的UserDraft，這需要在go-bbs內被實作
在MockUsercase與MockRepository新增MockUserDraft 以mockUserDraft

注意

目前MockUserDraft 是兩邊各定義相同的struct，之後可能要統一呼叫repo的

Codecov Report

Merging #204 (aa670f1) into development (f1d627c) will decrease coverage by 1.36%.
The diff coverage is 33.33%.

@@               Coverage Diff               @@
##           development     #204      +/-   ##
===============================================
- Coverage        46.25%   44.89%   -1.37%
===============================================
  Files               25       25
  Lines             1321     1321
===============================================
- Hits               611      593      -18
- Misses             623      641      +18
  Partials            87       87

Impacted Files
Coverage Δ

internal/repository/repository.go
0.00% <ø> (ø)

internal/repository/user.go
1.85% <0.00%> (ø)

internal/usecase/usecase.go
100.00% <ø> (ø)

internal/usecase/user.go
38.79% <ø> (ø)

internal/delivery/http/route_users.go
49.17% <100.00%> (-1.63%)
:arrow_down:

internal/usecase/article.go
40.74% <0.00%> (-11.65%)
:arrow_down:

internal/delivery/http/route_forward_article.go
68.51% <0.00%> (-1.66%)
:arrow_down:

internal/delivery/http/route_boards_treasures.go
57.14% <0.00%> (-1.48%)
:arrow_down:

internal/delivery/http/route_boards_articles.go
50.81% <0.00%> (-0.75%)
:arrow_down:

... and 7 more

Continue to review full report at Codecov.

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


anonymous view

i noticed that today the extension has new effect on the page.
kinda liked the previous version.
anyway, witth this new look, i cant find where the option to anonymous view is located?
can you guys give me hint/clue? (also if can, can you provide the option to keep in previous version?)
thanks

@adamjapon The only reason the previous version had a toggle for "Anonymous View" is because Instagram implemented their own stories which marked the story as seen when you open it in their viewer, but now that Chrome IG Story completely replaces Instagram's implementation, it's anonymous by default since the extension don't mark the story as seen when you view it.


taxonomy

Hello,
I am trying to use MMSEQS2 to assign taxonomy to a large set of predicted genes. However, the command “mmseqs taxonomy” is not identified.
I am using version 1d62934a57769c971fec3724d3e805f8162b976a . Could you please let me know how I should enable this option?
Thanks

Please use the latest git version, we first introduced the command in 1-c7a89, but it has some flaws there still. The latest git version should work fine.

We just packaged a new MMseqs2 release, that has everything you need.


Can't configure profile with AWS CLI for using AWS Built-in sagemaker algorithms

Hi everybody,
I am trying to use AWS built-in algorithms in Sagemaker Studio Lab. For that I need an execution role and region etc.
When I try to run my code it outputs
ValueError: Must setup local AWS configuration with a region supported by SageMaker.
Is it even possible to link access AWS resources in Studiolab?
Many thanks in advance!

Hi! The use case you are describing is exactly why we have this example notebook:

https://github.com/aws/studio-lab-examples/blob/main/connect-to-aws/Access_AWS_from_Studio_Lab.ipynb

Your net net is:
1/ Ensure you have proper training and authorization to use your AWS access and secret keys. If you are an AWS account admin, you can find this in your IAM console. If you are not, work with your admin to determine if this pattern is appropriate for you.
2/ If you are qualified to manage your AWS keys, create a new file called ~/.aws/credentials. There, copy and paste in your access and secret keys.
3/ Remove any cells you ran in a notebook to create or verify those files.
4/ Create a SageMaker execution role. The easiest way to do this is via the console - you can create a new SageMaker execution role when create a notebook instance or a Studio user profile. Once this is done, paste in the arn (Amazon Resource Name), for this execution role.
5/ Go forth and scale up on SageMaker! After that,  once you are using the SageMaker Python SDK, you should be able to use all code-based features within SageMaker, such as training, hosting, tuning, autopilot, pipelines, etc.

Hi @EmilyWebber. Can you share an example that doesn't require AWS account information and avoids "ValueError: Must setup local AWS configuration with a region supported by SageMaker"?
Since the SageMaker Studio Lab website emphasizes no costs and no need to sign up for an AWS account, a team and I are exploring whether to onboard students to try AWS SageMaker Studio Lab. So far we find the same code that runs in SageMaker Studio in an AWS account doesn't run on SageMaker Studio Lab outside an AWS account. Thank you in advance.

Hi @derekschan - thanks for the comment. This is actually expected behavior right now - Studio Lab defaults to not having access to any AWS API's unless explicitly granted. To date, that is solved only by the pattern mentioned above in this issue, explicitly installing AWS key permissions to utilize them.
Should that ever change in the future we will be sure to let you know! I'll mark your comment as a feature enhancement.

Thank you, @EmilyWebber.


need help

due to a bluetooth bug on IOS (not rescanning for changed services),
I have to implement your service at hardware startup.. BUT, I want it disabled until I explicitly enabled it
so the the receive and the hw/sw info  characteristics check a flag and silently returns, with no activity if not enabled
so I think this needs a new begin parameter to use this feature.. default is false.
if we have to add a new parameter, can we make it a bit field, 0x80 is requires_enable
and use another to advise auto advertising or not? (default yes)   I need it to be no..I'll handle that
that is to support #20  0x40 is no_auto_advertise
so 0x00 means default behavior, not requires_enable, auto_advertise

I see you had enable/disable on the lib.. hadn't fixed my fork for that..

closing as you have enable/disable (if I can get it to work)
already have #20 for advertising


Marvintests vpcofferingfix

It appears that original code did not expect there to be an alternate default VPC offering (Nuage) .
VPC selection uses isdefault=True which selects the Nuage Network offering, stopping the test from being run.
Fix was to look for name="Default VPC Offering" instead.
  Ping me, and I will help reduce down to the one expected change.


implement company resolver

Fixes #58

Codecov Report

Merging #60 (3f7a8e7) into main (48c6b27) will increase coverage by 1.17%.
The diff coverage is 60.00%.

@@            Coverage Diff             @@
##             main      #60      +/-   ##
==========================================
+ Coverage   39.02%   40.20%   +1.17%
==========================================
  Files           6        6
  Lines         287      296       +9
==========================================
+ Hits          112      119       +7
  Misses        155      155
- Partials       20       22       +2

Impacted Files
Coverage Δ

pkg/graph/schema.resolvers.go
65.38% <60.00%> (+6.56%)
:arrow_up:

Continue to review full report at Codecov.

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