Support Block Kit with Slack notifications

Hi Prometheus
Currently <slack-config> is using Simple formatting.
This is marked by Slack themselves as deprecated (or at least most hints dropped say: Format using Block Kit).
The new way to go seems to be Block-Kit.
I don't want to ask "Is there a plan?" as this would be a question. I'd like to pose as feature request to add something like:
<slack_config_blocks>
which would then accept stuff like:

And configuration like so (I am new to Yaml and Go Tmpl):
blocks:
- type: section
  text:
    type: mrkdwn
    text: ":fire: `Critical` alert in *production*: `ELK running out of shards (2
      left)`"
- type: section
  fields:
  - type: mrkdwn
    text: |-
      *Value before:*
      22
  - type: mrkdwn
    text: |-
      *Value now:*
      2
  - type: mrkdwn
    text: |-
      *Action:*
      Contact operations.
  - type: mrkdwn
    text: |-
      *Outcome:*
      X will happen.
- type: actions
  elements:
  - type: button
    text:
      type: plain_text
      emoji: true
      text: Victorops
    style: primary
    value: click_me_123
  - type: button
    text:
      type: plain_text
      emoji: true
      text: Silence
    style: danger
    value: click_me_123

Obvisouly my hardcoded strings would be replaced by {{ .alertProperties }}
Adding this I believe would make our DevOps plans (and hopefully others) dreams come true ❤

I'm worried that the configuration schema might quickly get out of control. But there's nothing preventing someone to try to come up with something reasonable.

Block kit makes formatting of messages SO much cleaner. If I could +1000 I would :)

+1 The possibilities are endless. These are all the things we can do: https://app.slack.com/block-kit-builder/T091CRSGH#{"blocks":[]}

Simple Formatting seems to be broken on Slack Desktop (at least for buttons).
Since  there is no more Slack support, this formatting could be completely broken soon.

Hey, I’m willing to make a PR for that.
I see two ways of doing that:

blocks field in slack_config is a tmpl_string that must render the JSON object sent to slack:

blocks: >
  {
    "type": "header",
    "text": {
      "type": "plain_text",
      "text": "{{ template "slack.default.title" . }}",
      "emoji": true
    }
  },
  {{ range .Alerts.Firing }}
  {
    "type": "section",
    "text": {
      "type": "mrkdwn",
      "text": "*Alert:* '{{ .Annotations.SUMMARY }} - `{{ .Labels.severity }}`'\n*Description:* '{{ .Annotations.DESCRIPTION }}'"
    }
  }, # Find a way to deal with comma after last block
  {{ end }}

blocks field in slack_config is a complex object that replicate Slack API with added options like repeat_for:

blocks:
  - type: header,
    text:
      type: plain_text
      text: '{{ template "slack.default.title" . }}',
  - type: section
    text:
      type: mrkdwn
      text: >-
        *Alert:* '{{ .Annotations.SUMMARY }} - `{{ .Labels.severity }}`'
        *Description:* '{{ .Annotations.DESCRIPTION }}'
      repeat_for: firing # Could be firing, resolved or all

As an administrator I prefer option 2, I find it clearer, but it’s way more work to implement it and it’s less flexible than option 1.
What do you think?

I think it would make sense to go with the yaml formatting, just like @mambax said. With @johanfleury's option 2, it's like yaml, but doesn't seem to be valid as such. The comma's are not needed, hence why I said about @mambax's comment.

It was just bad copy/paste, I fixed the snippets.

@johanfleury I like your first approach for 3 reasons:

as a user of this feature, I'll need to get familiar with the slack API and block features anyway. The best way to do so is to use the build kit viewer and get my formatting straight first and then I can just copy paste it here and add the necessary golang templating.
it's more flexible regarding slack API changes.
since it's easier to implement it would enable us to have the feature earlier.

@IppX you are right about the JSON formatting being similar to the block kit builder, however there would be loops and variables in there payload anyway so you would still have to edit the payload, copy and paste would be invalid. blocks is also a list, whereas the JSON version does not really account and inform the user about it being a list, the YAML version does.
Option 2 also keeps the formatting the same, the Prometheus config is actually in YAML, so it would mean we would have a JSON string inside of a YAML file.
IMO it makes more sense to keep the whole YAML file, in YAML.
There are also various tools that do JSON to YAML conversion online, so that isn't really a problem regarding the block kit builder.

I started working on option 2 and I’m facing a bunch of issues (explaining below) and I think option 1 is a better option if we want to keep code clean.

Option 2 also keeps the formatting the same, the Prometheus config is actually in YAML, so it would mean we would have a JSON string inside of a YAML file.

I definitely agree with that, I’d also rather have everything in YAML, but as I suspected when writing my first comment, this is a lot of work.

Now, regarding the issues I’m facing with option 1.
I don’t want to have to rewrite every block types, so I started creating a “generic” block type:
type SlackConfig struct {
	// ...
	Blocks []*SlackBlock `yaml:"blocks,omitempty" json:"blocks,omitempty"`
	//...
}

type SlackBlock struct {
	RepeatFor string                 `yaml:"repeat_for,omitempty" json:"repeat_for,omitempty"`
	Config    map[string]interface{} `yaml:"config,omitempty" json:"config,omitempty"`
}

This would translate to a config that looks like that:
slack_configs:
  - ...
    blocks:
      - config:
          type: header
          text:
            type: plain_text
            text: '{{ template "slack.default.title" . }}'
      - repeat_for: firing # Could be firing, resolved or all
        config:
          type: section
          text:
            type: mrkdwn
            text: >-
              *Alert:* '{{ .Annotations.summary }} - `{{ .Labels.severity }}`
              *Description:* '{{ .Annotations.description }}'

Problem is, when go-yaml is parsing that config it unmarshals any maps (e.g. config.text) as a map[interface{}]interface{} which Go’s encoding/json cannot marshal back to json (see https://go.dev/play/p/486JtJW9Sjw).
This also brings issue with templating as we now need to recurse over the whole map to find any string value and apply the templating function.
Also, template’s context inside blocks with repeat_for will be different to any other templates (you would only have access to Alert’s fields and not the whole data).
To be honest, I’m really not sure if there’s a way to keep both the code and the config clean at the same time.
I’ll create a draft PR for this option if someone wants to look at it, but I feel like it’s too messy and a bit too much work.

Yes, my team is waiting for this too. Simple formatting is deprecated, and not all messages are rendered correctly.
For example: we cannot use emojis in the title of the message, but that will be very useful, to show severity of alert. Interesting thing, that this functionality is working on PC and on Android, but not on iphones.
That is not a single issue, but just for example, to show, that simple formatting is really deprecated.
My team contacted Slack help, and they said, that we need to use blocks for sending alerts. We're waiting for news from this issue!

Anybody know if it’s possible to use Block Kit using Alertmanager http_ config and Slack incoming webhooks? This might be a better approach than a direct Slack integration.

Anybody know if it’s possible to use Block Kit using Alertmanager http_ config and Slack incoming webhooks? This might be a better approach than a direct Slack integration.

Did you ever try this? Seems like it would be a good alternative for rich alerts.

I prefer Option 2 over Option 1 as I have some experience using Jinja templates to output Yaml, and found writing templates that produced valid Yaml quite difficult when using if statements and for loops. For example, indentation. I am sure we can solve the issue with de-serialization, and having a Go struct for each kind of block would allow us to validate the configuration at start up time.

Here is an example of how I think it could look. However, for this to work, we also need to change UnmarshalStrict to Unmarshal in Load:
// config/config.go
// Load parses the YAML input s into a Config.
func Load(s string) (*Config, error) {
	cfg := &Config{}
	err := yaml.Unmarshal([]byte(s), cfg)
        ...
}

// config/notifiers.go
type SlackBlock struct {
	Type string `yaml:"type,omitempty" json:"type,omitempty"`
	// Config contains the configuration for the block. For example, if this
	// is a header block then Config is a *SlackBlockHeader.
	Config interface{} `yaml:"-" json:"-"`
}

type SlackBlockHeader struct {
	Type string               `yaml:"type,omitempty" json:"type,omitempty"`
	Text SlackBlockHeaderText `yaml:"text,omitempty" json:"text,omitempty"`
}

type SlackBlockHeaderText struct {
	Type string `yaml:"type,omitempty" json:"type,omitempty"`
	Text string `yaml:"text,omitempty" json:"text,omitempty"`
}

func (c *SlackBlock) UnmarshalYAML(unmarshal func(interface{}) error) error {
	type plain struct {
		Type   string      `yaml:"type,omitempty" json:"type,omitempty"`
		Config interface{} `yaml:"-" json:"-"`
	}
	if err := unmarshal((*plain)(c)); err != nil {
		return err
	}
	switch ty := c.Type; ty {
	case "header":
		var header SlackBlockHeader
		if err := unmarshal(&header); err != nil {
			return err
		}
		c.Config = header
	default:
		return fmt.Errorf("unknown block: %s", ty)
	}

	return nil
}

Yes, my team is waiting for this too. Simple formatting is deprecated, and not all messages are rendered correctly.
For example: we cannot use emojis in the title of the message, but that will be very useful, to show severity of alert. Interesting thing, that this functionality is working on PC and on Android, but not on iphones.
That is not a single issue, but just for example, to show, that simple formatting is really deprecated.
My team contacted Slack help, and they said, that we need to use blocks for sending alerts. We're waiting for news from this issue!

+1 for the issue. I'm facing a very similar issue to this - I have a nicely templated slack message with 4 buttons, which all show up in the phone app, but only 3 show up in the desktop app, or web.  I had a similar response from Slack support.

There is also a third option - Represent the slack API in yaml and make it a template.
Like option 1, let blocks be a template but in yaml. Encode to json before sending it to slack. Downside: you cant copy/paste json from the slack block builder tool.
I dislike having to template JSON, which would be required in option 1. It is easier to template yaml.
Option 2, will probably have annoying edge cases, eg. what would a nested loop look like. Almost feels like you either would need to design a templating DSL in yaml or keep it simple but inflexible. Option 1 or the above proposed solution is better IMO.

Guys, this is open for 4 years now. I can't send buttons with the current system. Any idea when we will have some way of using this? I am fine even if it is a plain and simple API body which I can send with basic HTTP. I just want to make this work. Convenience is secondary at the moment.


Chore/add prettier

Adding prettier to code base and bringing it all in line with prettier config

🦖


update to latest joern

As discussed in https://github.com/ShiftLeftSecurity/codepropertygraph/pull/1187, plugin now install the schema extensions (if any) themselves.

As discussed in ShiftLeftSecurity/codepropertygraph#1187, plugin now install the schema extensions (if any) themselves.
@fabsx00 @ursachec this is ready for a re-review now, ready to go from my side.


feedback

How about an example that I can work with, please?
I use Visual Studio 2010 [.NET Version 4.7.03056 SP1] where Windows 10 and my keyboard are already keeping me from being productive given other hardware related and touchpad related issues.
I hope to see a return on investment as I try to become more professional in my programming curriculum and all I read from the job market are layoffs and negative news unfortunately.

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

ID: 131b2f0d-3a66-82ec-c571-33344d8d1f95
Version Independent ID: cea36613-ef24-b09c-5a71-fb543eafd125
Content: PaintEventArgs Class (System.Windows.Forms)
Content Source: xml/System.Windows.Forms/PaintEventArgs.xml
Product: .net
GitHub Login: @dotnet-bot
Microsoft Alias: dotnet-bot

What exactly prevents you from working with the examples for that type?
Also, VS 2010 is a very old version. If you can, I suggest you to upgrade to VS 2017 (the Community version is free for individual developers).


Consider storing the current transformation in the parser

The parser gets a new field:
tf: Option<Transform>

And then \mathit sets this, and this is used to construct SingleLetterIdent.
I'll have to experiment to see how latex handles nested transformations.

I'll have to experiment to see how latex handles nested transformations.

I think this should work.

Nested transformations actually currently work only accidentally: once something is transformed, the unicode mapping considers the character as out-of-scope.


How to use cpu to run the torch code.

There is no GPU on my computer. How to use cpu to run the torch code. I have set gpu to -1, but still got error: module 'cunn' not found: No LuaRocks module found for "cunn".

Hi, @xiaogangLi ,
This code is expected to run on GPU. If you have no GPUs, you might need to change the code a little bit.
The first place I can see is line 145:
 model:add(dofile('models_def/'..opt.dataset..'.lua')):cuda()

You need to remove :cuda() from this line.
Also, you might need to comment all "require cunn" and "require cudnn" from the code.
Please let me know if you have any more questions on this code.

Thank you! Now, I want to compile lua-knn , but without gpu. What should I do?

@xiaogangLi , I think you can directly use torch to implement knn.


Converted from escape-html to jsesc

The implementation of escape-html over-escapes some characters causing edge cases to break apps (issue 184). This PR changes the escaping tool to jsesc, which has a configuration option specifically for escaping within

@cerebrl thanks for doing this 👍

@cerebrl this has been released as v4.2.1

Thanks for the quick response, @samsel!


wordLimiter() function is not functional

wordLimiter() from api/helpers/string.php#L109-L121 is not passing the functional test.
Following is the test code to test the function.
public function test_wordLimiter() {
	$str = "This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test";
	$result = wordLimiter($str);
	$expected = 'This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test This is a test…';
	$this->assertEquals($expected,$result);
}

No error found. Error in limit of words.


gpm: remove ncurses null override

Description of changes

Things done

Built on platform(s)

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

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] 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
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
22.11 Release Notes (or backporting 22.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
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[ ] Fits CONTRIBUTING.md.

4d47a0ef9003534c48f6275f3b31b2ca38720599 gpm: remove ncurses null override (#183810) somehow broke w3m in staging:
$ nix build -f. w3m -L
...
w3m> gcc  -I. -I. -g -O2 -I./libwc -I/nix/store/nzxhqf6dzhqwy72sg0b2qyvscr4i0cdv-openssl-1.1.1q-dev/include  -DHAVE_CONFIG_H -DAUXBIN_DIR=\"/nix/store/1rwpkdy595ls0882d6qii0ynz7563fid-w3m-0.5.3+git20190105/libexec/w3m\" -DCGIBIN_DIR=\"/nix/store/1rwpkdy595ls0882d6qii0ynz7563fid-w3m-0.5.3+git20190105/libexec/w3m/cgi-bin\" -DHELP_DIR=\"/nix/store/1rwpkdy595ls0882d6qii0ynz7563fid-w3m-0.5.3+git20190105/share/w3m\" -DETC_DIR=\"/nix/store/1rwpkdy595ls0882d6qii0ynz7563fid-w3m-0.5.3+git20190105/etc\" -DCONF_DIR=\"/nix/store/1rwpkdy595ls0882d6qii0ynz7563fid-w3m-0.5.3+git20190105/etc/w3m\" -DRC_DIR=\"~/.w3m\" -DLOCALEDIR=\"/nix/store/1rwpkdy595ls0882d6qii0ynz7563fid-w3m-0.5.3+git20190105/share/locale\" -o w3m main.o file.o buffer.o display.o etc.o search.o linein.o table.o local.o form.o map.o frame.o rc.o menu.o mailcap.o image.o symbol.o entity.o terms.o url.o ftp.o mimehead.o regex.o news.o func.o cookie.o history.o backend.o keybind.o anchor.o parsetagx.o tagtable.o istream.o version.o  -lm -lX11 -L. -lindep  -lgc -L./libwc -lwc -L/nix/store/sxgs416j8z3x9mj97939syyp8cv6064b-openssl-1.1.1q/lib -lssl -lcrypto -lssl -lcrypto -lgpm -ltinfo
w3m> /nix/store/dpxy5cr7cm0nch0qvq2qygs9jwnmhiy5-binutils-2.38/bin/ld: terms.o: in function `do_getch':
w3m> /build/source/terms.c:2174: undefined reference to `Gpm_Wgetch'

Ah, it's because w3m uses gpm-ncurses = gpm.override { inherit ncurses; }; and gpm now uses withNcurses = false;.

Proposed possible fix as https://github.com/NixOS/nixpkgs/pull/184146


Fix Gemm related issues for r212 and r213

previous PR: https://github.com/ROCmSoftwarePlatform/tensorflow-upstream/pull/2356
This one PASSED all unit tests without problem. Related issues are fixed and slightly increased tolerance compared to the original (0.003) on few tests due to denorm.

retest gpu-pycpp please

retest gpu-pycpp please

do we have gpu-pycpp CI for other branch rather than develop-upstream?

yes. This branch is protected. Not sure why the tests didn't run

retest gpu-pycpp please

retest cpu-non-pip please
retest gpu-non-pip-multi please
retest gpu-pycpp please

retest cpu-non-pip please
retest gpu-non-pip-multi please
retest gpu-pycpp please

retest gpu-pycpp please

retest gpu-pycpp please


The code doesn't actually work yet

Right now, the code doesn't actually work.  It currently asks for input, but does not output any useful information.  It is not possible to get good input using the current version.

I uploaded new code that processes files.


fuzzy black text on the red background in a 15.6 touchscreen on raspberry kernel 5.10,but kernel 4.19 works well

HI all,
our application need to show black text on the red background as error,
but fuzzy black text on the red background in a 15.6 touchscreen (Lilliput. The model is tk156a ) on raspberry kernel 5.10  ( ycoto meta-raspberrypi e1014d41ef459af807f95cb7ff9105f077bc6daa), the pi 4 hardware versions are  1.4 and 1.2
at same time, I tested updated raspbian image 2022-04-04-raspios-bullseye-arm64.img.xz(not yocto image) from here: https://www.raspberrypi.com/software/ (kernel 5.15)  it has the same issue on  both pi4 hardware 1.4 and 1.2
we have pi 4 hardware version 1.2 ,so I tested older yocto image (kernel  4.19 , meta-raspberrypi  b112816e95ec59447a82a3a0ee7842c547dda335) ,it works well!( of course ,this image can not startup in hardware 1.4,so  we can not use 1.2 boards for  our application )
therefore, I think kernel  4.19  work well for the touchscreen  ,but updated kernel (5.10,5.15) not work well. Maybe the issue is from HDMI drivers in higher kernel?
so do you know where are the HDMI driver files  in kernel? how to modified thems (I mean where is the key code ？）
any help?
I change different resolutions ,but same error.
this is no error  picture(kernel  4.19) ,you can see at right side  the letters "MN "are same dark, and at left side   letter"c" the upper angle is clear. green and blue background are same clear(sorry, the camera can not catch  clearly ,but it  still  can show it)

the following  pictures are error(kernel  5.10 & 5.15) , you can see  at right side  the letters "MN "are  NOT same dark(ink is not even), and at left side   letter"c" the upper angle is Not  clear(fuzzy). green and blue background are clear

ll

@gitgonewithwind As you mentioned that this is reproducible on Raspbian, could you please raise this issue against the RaspberryPi kernel repository?

@agherzan
sure.  how to raise this issue against the RaspberryPi kernel repository? Yes. I think it's the kernel issue
before I tried to question it on here https://forums.raspberrypi.com/viewforum.php?f=28 ,but it never display to show it on the forum.

That is exactly what I meant. I'll leave this issue open and if you figure a fix in upstream, let's try to follow up with a patch backport or a kernel bump.

@agherzan  great! hope someone can find a solution. I am trying to use the older HDMI source code to fix it.


Make use of Canonical footer

Fixes #1
@petesfrench here is how to add the HTML for the footer. Do you have an easy way to condense the css styles included from the ubuntu.com stylesheet only to those classes used in the template? The current css include is changing a lot of unintended things.

This contains a somewhat condensed version of the footer. The spacing isn't fully the same, mostly because Indico uses 14px font-size in :root, and Indico with the Ubuntu Summit theme applie uses 16px. @petesfrench , if you have a smart way to fix this without going through each size manually let me know. Otherwise, I think we can go with the not pixel perfect footer.
@arturo-seijas What would be a good repo to point people to for the "file a bug" link? I have the operator repo there now, but potentially this repo instead?

This contains a somewhat condensed version of the footer. The spacing isn't fully the same, mostly because Indico uses 14px font-size in :root, and Indico with the Ubuntu Summit theme applie uses 16px. @petesfrench , if you have a smart way to fix this without going through each size manually let me know. Otherwise, I think we can go with the not pixel perfect footer.
@arturo-seijas What would be a good repo to point people to for the "file a bug" link? I have the operator repo there now, but potentially this repo instead?

Where's that "file a nbug" link you are referring to?

@arturo-seijas "Report a bug on this site"

@kewisch Originally the Indico theme was using 14px as the root font-size. But a request, either from Britt or you, was made to bump it up to 16px. We could revert it to 14px I believe.

You might want to experiment setting the margin-left of the footer equal to that of the `global-margin-left' value found in the theme (350px). As this will align the footer with the rest of the content.

@kewisch Originally the Indico theme was using 14px as the root font-size. But a request, either from Britt or you, was made to bump it up to 16px. We could revert it to 14px I believe.

I think having 16px is better, I believe it was Britt's request, but we have 16px on the :root element on the Ubuntu Summit theme, and 14px on the main page and non-themed conferences. If I use rem, the margins will change depending on if you are on the main page or the conference page.
What we could do is bump it to 16px everywhere, but that might mess up the standard theme. Or we move the font-size change to 16px away from the root element, and then base all our rem values off of 14px. Given the conference is next week I'm inclined to keep it as is and follow up if needed.
I didn't find global-margin-left, but I did find var(--full-width). This stretches the footer pretty wide, so I'll keep it as is as well.

@kewisch It is important that we keep everything within the vanilla-grip pattern. This means aligning content, like we do on ubuntu:

There is a css variable in the theme called --global-margin-left for 350px. Adding this space to the left hand side of the footer should fix this.


Fix width of trrack

Should be as wide as possible

@ZachCutler04 I am stuck with this issue because of the way TrrackVis width works. I posted about my understanding of the issue in Slack.

It seems that Trrack-Vis is taking width of the backbone nodes as argument. I am guessing nodeWidthShown is the prop. In any case, there is a fixed width added to the div with labels. Since the parent of the div is a flex, we can set the width attribute to 100% an let it take all the remaining width. We can constrain the width of TrrackVis to whatever we want by wrapping it in a div with width when we use it.

If I'm missing something please let me know


failed to load correctly

I'm trying to add a couple new mods for my minecraft server on aternos. I got it on the server just fine but it won't work on my own account... not sure why. Here is a screen shot of the error and the logs
crash-2022-07-18_17.09.19-fml.txt
latest.log
.

Just realized it might actually be because of interference with the other mods I have on the server. If you would like the list, just let me know.


New project name psql role doesn't exist

Thanks for this great setup guide!
I was able to successfully change project names on an older build around the Django 4 update.
However on the latest, I can ./run manage migrate on the default name, but if I change project names, docker-compose up --build, then I run into a problem doing ./run manage migrate.
From Docker logs:
postgres_1  | 2022-01-11 21:42:09.081 UTC [33] FATAL:  password authentication failed for user "new_project"
postgres_1  | 2022-01-11 21:42:09.081 UTC [33] DETAIL:  Role "new_project" does not exist.
From shell stdout:
django.db.utils.OperationalError: FATAL:  password authentication failed for user "new_project"
My .env has the:
export POSTGRES_USER=new_project
export POSTGRES_PASSWORD=password

Hi,
What happens if you run a docker-compose down -v? That will completely wipe out your old DB and Postgres will make a new one with a new user / password based on your current .env.
If you ever change your DB user or password you need to either blow out your old DB (useful in dev) or run raw SQL commands to update the user's password (useful in prod). This is the same workflow with or without using Docker, it's just Docker is convenient because if it doesn't detect an existing volume it'll make a new DB user / pass for you by default based on the values in your .env, however changing those values won't update the credentials in an existing volume.

Thank you, that worked and your explanation was very helpful! Yep, I forgot I must have had the original volumes with 'hello' username running the whole time. I was confused why even nuking the repo and going straight to renaming still wasn't working.
Am I missing something I did incorrectly? Wouldn't other new users also run into this issue after renaming and needing to destroy the old volumes or run SQL commands?

The rename script should technically rename export COMPOSE_PROJECT_NAME=hellodjango in your .env file. This namespaces your volumes and other resources that Docker Compose creates.
If you use a different project name you should get a fresh volume (similar effect to docker-compose down -v) since you're starting from ground zero and wouldn't need to explicitly run any commands or change the user / pass.
Now I'm wondering how you got into this quagmire. Did you clone this, up it, play around, rename the project, up it, change your POSTGRES_USER or POSTGRES_PASS to something else? If so it's the last step that got you. If not, what did you do exactly?

Oh, starting from scratch again, I see now that docker-compose down -v is in the rename script. Remembering more clearly, the problem first arose after a successful rename, when I nuked the repo, forgot to bring down the docker containers+volumes, but only killed the containers manually. I must have left the volumes up, but always 1-to-1 dc up / dc down, so it was until there was a second dc down (during having a 'hello' username) that finally the old volumes were removed rather than the ones I had recently created? So essentially I always had an extra set of 'hello' volumes until I did a second dc down like you asked.
Only relevant logs I have from the past indicating psql wasn't working is:
postgres_1  |
postgres_1  | PostgreSQL Database directory appears to contain a database; Skipping initialization
postgres_1  |

If the COMPOSE_PROJECT_NAME changes I think technically it should work even if  -v wasn't included in the rename script. Although it sounds like maybe not based on what you wrote tho?
Your log output is expected if you up a project that already has a volume for Postgres. It skips creating a new db, user and password if it detects one. It sounds like you know that, but just including that here in case someone reads this in the future.


Meilisearch v1.3: accept ["*"] as a value for attributesToSearchOn

Describe the bug
Currently only the known document fields are accepted in attributesToSearchOn.
On other similar fields like attributesToRetrieve, the value ["*"] is also accepted.
To Reproduce
Steps to reproduce the behavior:

Make a search on an index with attributesToSearchOn: ["*"]

Expected behavior
Be consistent with the other similar fields
Meilisearch version:
v1.3.0rc-1

Curqui's update
["*"] means "all the possible attributes", so in this case, contrary to attributesToRetreive, it's "all the searchableAttributes"

Hello everyone 👋
We have released the first RC (release candidate) of Meilisearch containing this change!
You can test it by using

the release assets
the Meilisearch Docker image

docker run -it --rm -p 7700:7700 -v $(pwd)/meili_data:/meili_data getmeili/meilisearch:v1.3.0-rc.2

If you encounter any bugs, please report them here.
Thanks in advance for your help and your involvement in Meilisearch ❤
🎉 The official and stable release containing this change will be available on July 31st, 2023
⚠ RC (release candidates) are not recommended for production


Modify global storage to not have a copy of all opened notebooks

Related to #8961, we were writing to global storage every opened notebook. This grew global storage by a huge amount and was impacting perf.
We should clean this up. VS code suggested we use some private variables in the global storage to iterate through them and clean them up.

Validated. I opened up an ipynb file and edited a cell (no save). I checked the global cache. I don't see any file contents in the state file anymore. And under our extension directory I do see a new hash key .ipynb file name storing the current contents of the file.


Allow model credentials to be stored in an .env file

Consider moving to our model coordinates (sensitive) information being stored in a python dotenv file and/or determined from environment.
https://pypi.org/project/python-dotenv/
Related to #85

I think the key is automatically loaded from the environment if it is present. Looking at https://github.com/konveyor-ecosystem/kai/blob/6049eff2ea1b74d68c75554e8854302100322340/kai/model_provider.py#L47-L52 and https://github.com/konveyor-ecosystem/kai/blob/6049eff2ea1b74d68c75554e8854302100322340/kai/model_provider.py#L105-L113. OpenAI's key check still needs to be implemented if we want, but langchain does that for us

Removed the priority on this.  It's not essential to demo flow, usage of environment variables is fine for now.


Institute nag message for profile completion

When a user has an incomplete (not all required fields) profile, a nag message:

Should occur upon login.
Prevent the creation of any resources owned by the user until the profile is complete (i.e. appear when visiting Documents and disable the create resource button.)

@philtuskha I moved the milestone so we all believe we're looking at the same picture.


Template file could not be read during full-app test

I'm trying to write a full-app test of my email's rendering.
However, when I run meteor test --full-app --driver-package practicalmeteor:mocha --port 3100, I see these errors:
error: Could not read template file: weekly-email/template.html mailer

Everything works fine in dev and in production. It's just these full-app tests that can't find the template.
Any ideas?

Hi! We're seeing the same output when we're doing full app test too, and I've guessed so far that Meteor is building the app structure differently for those kinds of app startups. I.e. this package can't rely on fetching templates from the private dir. I'm not sure of where those templates are going during app testing.
We're doing some file trickery at the top of this file: https://github.com/lookback/meteor-emails/blob/master/lib/utils.js. As you can see, we use process.env.NODE_ENV to switch things. Is NODE_ENV === 'development' for you during app testing? Thanks!

Thx for the quick reply @johanbrook !
Here's what I have when I run my full app testing:
I20160926-21:06:05.830(-7)? info: Meteor.isTest: false
I20160926-21:06:05.830(-7)? info: Meteor.isAppTest: true
I20160926-21:06:05.831(-7)? info: Meteor.isDevelopment: true
I20160926-21:06:05.831(-7)? info: Meteor.isProduction: false
I20160926-21:10:59.135(-7)? info: process.cwd(): /private/var/folders/p4/466pgnmx7sd_2qwwwl2vc33m0000gn/T/meteor-test-runq2jraw/.meteor/local/build/programs/server
I20160926-21:06:06.294(-7)? info: process.env.BUNDLE_PATH: undefined

If I open /private/var/folders/p4/466pgnmx7sd_2qwwwl2vc33m0000gn/T/meteor-test-runq2jraw/.meteor/local/build/programs/server on my machine, the templates are stored in assets/app.
Looking at https://github.com/lookback/meteor-emails/blob/master/lib/utils.js, I suppose you could use the productionPrivateDir() logic if Meteor.isAppTest = true? Something like that. Not sure what other cases would break.

Hi guys,
yeah I just ran into this issue, but when running tests in UNIT-testmode, p.e. when running testmode like meteor test --driver-package practicalmeteor:mocha --port 3500.
Did you guys make any projects on this? Did you find a good solution/workaround?

Nope, no workaround yet. We can check for test runs with Meteor.isTest and try to find the templates if they're built on another path. But not sure where they're put when testing..

damn - thats a pitty. I was hoping that this package makes testing easy for me using the render() function... the problem is that even render() will not work and won't find the template

Yeah, not sure what's going on there.

Hi Johan,
I am not into your codebase, but I just scanned https://themeteorchef.com/snippets/using-the-email-package/#tmc-questions-comments. The comments might contain some interesting stuff to improve the code? Check it out and search for Assets.absoluteFilePath and Assets.getText('private/template_name.html'). Does that help in any way?

Neat, it was a while ago I looked at those APIs. Might help very much. Will have a look.

I don't know if you are much into unit-testing, so this is a little sceleton for you to get started
run via meteor test --driver-package practicalmeteor:mocha --port 3500
// mailer.test.js
import { Meteor } from 'meteor/meteor'
import { Mailer } from 'meteor/lookback:emails'
import { chai } from 'meteor/practicalmeteor:chai'
const expect = chai.expect

// SERVER TEST
if (Meteor.isServer) {
  describe('Mailer Servertest', () => {
    it('Mailer works in unit test mode', () => {
      const content = Mailer.render('mailTemplate')
      // unfortunatly lookback:emails will NOT throw an error,
      //  but LOG to the console. So check out the console for errors
    })
  })
}

Hi guys, I just submitted a pull request. @noahsw: can you check if this works in your app-tests?

This is fixed with https://github.com/lookback/meteor-emails/pull/78 for me, as seen in https://github.com/lookback/meteor-emails/pull/79. Both are merged to masted. Gonna publish fixes as *0.7.6`.
Thanks for your help! 💥


Update axon boa example to obelisk ALM, M1, VL connectivity

This branch is named incorrectly but it is just a one-off to update this connectivity.  should be merged after the previous PR on which it is based.

actually this ended up just being cleanup of commented-out connections -- additional notMaint -> VL produces later instability.  investigate this later.  will merge manually to get out of the way.


does fhog need padding?

Hello
I want to use dlib to build (using two students) an application which checks the presence and orientation of THT components mounted on printed circuit boards (capacitors, connectors IC's ...).
I consider that fhog classifiers should do the job (one for each type of component). For checking the orientation, I considered creating a tool like imglab, which also marks the orientation (4 possible directions). For training I considered chipping out all the positive images, rotate them to have the same orientation, and provide them to the trainer. To also have negative samples, the original image is also given to the trainer, with all the positive objects marked as ignore.
But after some experiments, the students are telling me that the detector trained with the original train_object_detector, by manually cropping and rotating the image chips, is not working. But it works if the components are marked as positive in the image of the entire PCB only when they have correct orientation, by rotating the entire image to get all components.
So, does the trainer need some padding around the positive samples?
If yes, how much is enough?

You should give the trainer the normal unmodified images.    Why don't you want to do this?

As I need to detect the orientation of the components, the classifier needs to be able to detect the orientation. On the same PCB, I have the same type of component oriented upwards, downwards, to the left or to the right.
So for training I need to rotate all these components to be oriented upwards, as I do not want to create four datasets in order to create four classifier for the same component (I will probably need to create classifiers for over hundred different component types).
Another way would be to rotate the entire images, but this would increase the needed memory pretty much (while experimenting, one student made the laptop crash by using just 20 images of 3 megapixels because of lack of memory).

Rotating is fine.  Although if there are just 4 directions I would train 4 classifiers.  That will run more quickly than rotating 4 times and running the same classifier on each since you won't have to recompute the HOG pyramid 4 times.  Use dlib::evaluate_detectors() to do this efficiently.
However, don't tightly crop things.  If you have a huge 3 megapixel image and are looking for a 10x10 object, obviously you don't need the whole image as input.  Crop it to 100x100 or something reasonable that is still representative of the task you are doing, but doesn't cause you to run out of RAM.

OK, thank you.
Probably the real camera will be 12megapixels, and detected objects at least 3000 pixels, but not necessarily square, for now we are using only a 3 megapixel webcam to see how it works.
The plan is to run the classifier only in the region of interest for each component, not on the entire image, as I suspect that in this way it will be possible to inspect a board in a reasonable time.

Downsample your images.  3000x3000 pixels is excessive.   What did you set the sliding window size to?  I assume it's still something small, or maybe even at the default value, which is far smaller than 3000x3000.  So it's spending a lot of time scanning for really tiny things in these huge images which is a waste of computer resources.

Sorry, I was not very clear. I meant the area of the object image is at least 3000 pixels, like 40x75, or 55x55, which will possibly need upsampling, not downsampling.
One of the classifiers will be used to find the entire board (on a soldering frame of 40x60cm), so maybe this will be downsampled once or twice, but the others will be small components placed on the board (around 1 cm square).


[MLDB-1266] Added import json procedure

Added minor comments.  Consider also adding one test case with an invalid json.  +1


Customize the design of the documentation

Customize the navbar and the colors:

Add a favicon:

Anything else need to be customized?

We should also make the docs look great when dark mode is enabled.


Stdenv: Add ENV.libxml2 and ENV.x11 for Linux

[x] Have you followed the guidelines in our Contributing document?
[x] Have you checked to ensure there aren't other open Pull Requests for the same change?
[x] Have you added an explanation of what your changes do and why you'd like us to include them?
[ ] Have you written new tests for your changes? Here's an example.
[x] Have you successfully run brew tests with your changes locally?

Add ENV.libxml2 primarily for the use of test do blocks. Also add a dummy ENV.x11 function.

Thanks for the review, Mike! Updated.

Using Formula["libxml2"] causes Homebrew/core to auto-tap. The auto-tap checks that the syntax of all tapped formulae is valid. That fails because the constant MacOS is undefined on Linux.
Here's a few options:

Prevent auto-tapping Homebrew/core on Linux.
Add a stubbed-out implementation of MacOS on Linux that returns false/Version::NULL for all tests.
Use -I#{HOMEBREW_PREFIX}/include/libxml2 rather than -I#{Formula["libxml2"].include/"libxml2"}

@sjackman Looks like it may be working now.

Well that's mysterious. Does Jenkins keep the tapped Homebrew/core from between runs of CI?

Well that's mysterious. Does Jenkins keep the tapped Homebrew/core between runs of CI?

It does not but I have a filthy hack which makes Linux use the single testbottest formula and pretend that it's all of Homebrew/core.

Thanks again @sjackman!

Thanks for merging, Mike!


User can't trigger plus plus on multiple users in the same line

For instance, if @Nick ++ @Al -- is entered, currently only the first command will be used

Fixed by commit:<PHONE_NUMBER>f66668762a63a63134257f93e0df60


Support for gracefully exiting ffmpeg

If you exit ffmpeg sending it the 'q' key, it will exit with status code 0, but if you send it SIGINT it exits with 255 and if you send it SIGTERM it exits with 147. (from versions of ffmpeg 4.1-4.2)
In all cases it seems to shutdown gracefully, however the second two trigger the 'error' event in fluent-ffmpeg, and when I checked, the error codes from ffmpeg were not documented and not encouraged to be used in scripting.
I added an FfmpegCommand.quit() to gracefully exit by sending the 'q' key to ffmpeg and wrote a unit test to verify it functions. I also verified in my own application this works as expected and does not produce errors.
It would be great if this could be merged and a new version published to npmjs - it seems the current version on the repo lags quite a bit from a lot of bug fixes.

agree

agree

This would be great, especially since the last release is years ago 🙈 and there are a lot of additions missing.

Adding, I installed your branch in my latest project and used the quit() successfully.


menuconfig: Add RGB color support to styles.

Styles can now take a HTML notation as a color value:

on terminals that support RGB color mode these are rendered
perfeclty
on 256 color terminals the closes matching color is used
on other terminals, the current color palette is scanned
and the closes matching color is used. This has few quirks

Example: Use "pure" red as selection foreground and "pure" blue as
background:
MENUCONFIG_STYLE="fg:#ff0000,bg:#0000ff"
Afterall, didn't turn out too bad. About 170 lines with comments.
Please review and decide if it is worthwhile to include. May still bit a bit overkill for this feature.

Ahh... looking at https://upload.wikimedia.org/wikipedia/commons/1/15/Xterm_256color_chart.svg, I see that it's offset at the beginning (jumps directly to 95 instead of 40), so that explains the 55.
Could you briefly explain tricky stuff like that in the comments (or link a reference)?

I think I've addressed most of the issues above, pushed a new squashed commit.

One more thing:
These functions are internal, so they should be prefixed with _.

Sorry for the late response, but it was pretty hectic today. Thanks for the documentation/comment fixes. I believe I've integrated all of your suggestion in the new squashed commit.

I believe I addressed the last batch of change requests.

I allowed myself to add another feature (it's 3 lines of code, so not sure if its worth a whole pull request).
Basically, you copy styles from other elements, like this:
MENUCONFIG_STYLE="separator=fg:white,bg:red path=separator"

I allowed myself to add another feature (it's 3 lines of code, so not sure if its worth a whole pull request).
Basically, you copy styles from other elements, like this:
MENUCONFIG_STYLE="separator=fg:white,bg:red path=separator"

No objections from me. Seems like a nice feature.
Will take a look after I'm done with work for today. Some documentation for the new color format and the path=separator feature in the module docstring would be nice as well.

Pushed a new squashed commit with docstring updates for the new color format and the path=separator feature.

Seems pretty robust now from playing around with it a bit. Merged.
Thanks! Learned some things about terminal colors.


Starting Palace of Ice Issue

Finished Crown of the Magister with a party of 5 member, and when i try to import that party to Palace of Ice, it only loads 4 party members, but not the 5th one.

You can export all characters and start palace of ice with these characters instead of that save

Sharing your save also helps

Modded.zip

also what is the mod version?

<IP_ADDRESS>

I cannot even import this save. It aborts on me. I suggest opening the save, resting, canceling any infusion items if you have them and then try import.


Transactions Failing on Collection Deletion

I'm trying to enable transactions when implementing a truncate-then-update operation. However, when I implement it using the code given in the docs, I get the following warning on the frontend before it times out after 3 attempts:
WARNING:urllib3.connectionpool:Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7ff80a49f3a0>: Failed to establish a new connection: [Errno 111] Connection refused')': /_db/test/_api/transaction/begin
When running it with our ArangoDB server URL, I get the following error on the frontend:
CollectionDeleteError: [HTTP 504] Gateway Time-out
And on the server:
 upstream timed out (110: Connection timed out) while reading response header from upstream, client: xx, server: xx, request: "DELETE /_db/db_name/_api/collection/Test123 HTTP/1.1", upstream: "[xx/_db/db_name/_api/collection/Test123"](xx/_db/db_name/_api/collection/Test123%22)
Code to reproduce:
from arango import ArangoClient

DB_URL = <server_URL>
DB_USER = <user_name>
DB_PASSWORD = <password>
DB_NAME = <db_name>
COLL_NAME = <coll_name>

client = ArangoClient(DB_URL)

db = client.db(DB_NAME , username=DB_USER, password=DB_PASSWORD)
collection = db.collection(COLL_NAME )

collection = txn_db.collection(COLL_NAME )

txn_db = db.begin_transaction(read=collection.name, write=collection.name)

txn_db.delete_collection(name=collection.name, ignore_missing=True)

txn_db.create_collection(COLL_NAME)

txn_db.commit_transaction()

Any assistance on what I am missing or doing wrong would be of great help.

Hello @sha-eln!
Sorry for the delay in responding to your issue, we truly appreciate your patience. Our team has been heavily occupied with other tasks.
In ArangoDB, creating and deleting collections are operations that can't be done inside a transaction. Transactions are designed to provide atomicity and isolation to data manipulation operations (like insert, update, delete) on existing collections, rather than structural changes to the database itself (like creating or deleting collections).
If you need to empty a collection (i.e., delete all documents but keep the collection itself), you should be able to do that using a truncate operation:
db = client.db(DB_NAME , username=DB_USER, password=DB_PASSWORD)
collection = db.collection(COLL_NAME)
collection.truncate()

Lastly, while you can truncate a collection inside a transaction, it's important to note that if truncation is all you're doing, a transaction is not necessary. Transactions are typically used to ensure atomicity of multiple interdependent operations.

Dear @sha-eln,
I believe my answer clears some of the confusion regarding transactions. Therefore, I am going to close this issue. In case you experience any problems with our Python driver, don't hesitate to open a new one.

@apetenchea Thank you so much for your response! Yes that does clear things up quite a bit. Wishing you all the best. :)


Update cargo deny config to temporarily ignore webpki advisory

To be removed once webpki has a safe release to upgrade to

There's a dependabot thing to update it, why not just update it? https://github.com/svix/svix-webhooks/pull/1050

I can absolutely do that, but it'll only solve one of the advisories. A fix for webpki is still outstanding.

Let's merge that one and remove the deny for that one, and sure, let's keep the pki one for now. Just better to address the updates than to silence them.


Feature Request: Add ability to access driver directly

From what I can tell right now, it doesn't look like you can directly access the driver and thus the client under it for something like PrintNode.
Their API contains a number of helpful routes like whoami, computers, and more that would be nice to access from the library without using PrintNode directly.

I personally have no need/interest for adding something like this to the repository. Feel free to fork/extend your own version to get desired functionality.


[Bug]: Docker image forces SSL termination at server, and assumes what the server URL is

Is there an existing issue for this?

[X] I have searched the existing issues

What is the current behavior?
The web interface listens only to HTTPS at 443
What is the expected behavior?
In many enterprise deployments SSL termination is usually done at a reverse proxy - nginx notably, and also there the real URL is configured. Testsigma should expose a plain HTTP listener, and should not try to guess what the URL of the server is, but rather expose it as a configurable env var.
Steps To Reproduce

Installation.

Version
Testsigma Community Edition

@ahristov314  - the testsigma server is exposing only HTTP at port 9090 and SSL is terminated at nginx which is running in the same container. The default server url is https://local.testsigmaos.com which can be changed using the ENV variable TESTSIGMA_SERVER_URL.

The urls are hardcoded i dont think adding env variable works


OpenJ9 0.9 releases are missing the xlinux large heap build

The OpenJ9 0.9 releases are missing the xlinux large heap builds
https://adoptopenjdk.net/archive.html?variant=openjdk8&jvmVariant=openj9
https://adoptopenjdk.net/archive.html?variant=openjdk10&jvmVariant=openj9

The good news is that it's still there at https://github.com/AdoptOpenJDK/openjdk8-openj9-releases/releases/tag/jdk8u181-b13_openj9-0.9.0

The solution in that PR is a bit of a "tactical fix" and is a result of the filenames being changed from LinuxLH to LinuxXL. The change in https://github.com/AdoptOpenJDK/openjdk-website/pull/319 was put in for JDK11 and is what caused it to disappear from the JDK8 release
@pshipton Hypothetically, would it be a problem if we left mt fix in place until we did a subsequent JDK8/J9 release with the "new" name and then undid it when we do the next JDK8.J9 release? - this would have the side effect of the 8u181 LH build not being visible on the web site but would still be available as part of the release downloadable on github?

@sxa555 I'm a little fuzzy on the meaning of your comment, but I chatted with @DanHeidinga and we think the Java 8 0.9 release should have a large heap download, even if this breaks it for Java 11 until the October release.

@pshipton The question is "Would you be ok with the Java 8 0.9 large heap release not being visible after we have done the next quarterly release of Java 8 0.11?" - The builds would still be available directly from the github release, but not necessarily from the web site.

I can live with that.  As long as the current release (what ever it is at any given moment) has a large heap download from the website.

I think the solution here is to identify large heap builds based on the "heap_size" property that the api returns rather than searching for strings in the filename. The heap_size returned is correct between 8/9/10 and binaries release before and after the script migration

@johnoliver I believe https://github.com/AdoptOpenJDK/openjdk-website/pull/333 addresses the concerns therefore I'm closing this issue ... If I'm mistaken please reopen ;-)

@sxa555 I cannot re-open this issue. The xlinux large heap build is still not being shown on the jdk8 archive page. https://adoptopenjdk.net/archive.html?variant=openjdk8&jvmVariant=openj9

Opened a new issue #639


changed sql types access to pub

the trait SqlTypes is not pub.
I needed to define a method parameter to values that have the SqlType trait but noticed that the sdk does not exposes the trait, making it impossible to do as I can not use ws_sdk::database::sql_types::SqlType

Hi IDEA-godwin, thx for the pr. Our host only supports serveral params currently. So SqlType isn't exposed at the first. Actually, you can add an implementation directly if it's common https://github.com/machinefi/w3bstream-wasm-rust-sdk/blob/main/src/database/sql_types.rs#L82
it would be great if you could share your implementation for SqlType trait


moved thirdpary, script and makefile sources, adopted build environme…

…nt and documentation

Oh, I think I missed that PR, sorry

That looks nice!


Can IPv6 be supported

My yaml template is
-Name: KEEPALIVED_ VIRTUAL_ IPS
Value: "IPv4 address dev network card name"
I want to configure dual stack, how to configure IPv6

Same issue. Tried updating to 2.2.8 with IPv6 vars as well


no unity file can be loaded

Excuse me, I used this tool to open a special game like hk or gs,but the tool show this message'no unity file can be loaded'. I find it needs a special key,so could you tell me how to unlock?Thanks.

Greetings,
It doesn't load games directly, you will need to find the decryption key first, add it to the keys list, then select and load.
Only then it'd be able to decrypt it.

so do you know how to find the decryption key？I remember this tool can open the game folder directly about half year ago.

Greetings,
Depends on the game, easiest option is to dump it at runtime.


feat: re-port Algebra.Order.Monoid.WithZero

This file had been modified in mathlib3 since the commit that the first port was based on.
Here is the mathlib3 commit that this port is based on:
4dc134b97a3de65ef2ed881f3513d56260971562
The first commit here is the output of mathport on that commit, in case anyone wants to check the diff.

bors merge


Added Statsd reporter to export metrics to Graphite.

@arsenaid Thanks for your patch! Previously we had merged the pull request https://github.com/linkedin/kafka-monitor/pull/56 which added GraphiteMetricsReporterService to report metrics to Graphite. Does that patch address the motivation of this patch?

Hi @lindong28. There are a few reasons I added Statsd export:

The existing Graphite exporting doesn't work or I cannot configure it out of box.
Statsd is a lightweight metrics aggregator using UDP instead of plain-text or other binary protocols

@arsenaid I see. Ideally we would like to have only one class to be used for sending metrics data to Graphite. Otherwise the code base will get harder to maintain over time. Maybe we should first try to understand why that GraphiteMetricsReporterService doesn't work for you and fix that. And I think it is reasonable to replace the existing graphte solution with your solution if the Statsd protocol is strictly better than the protocol used by the other solution.
BTW, the statsd-service is probably not suitable to be put in kafka-monitor.properties because kafka-monitor.properties is intended to be work out-of-the-box and provides only the basic config. Not all user has Graphite service in their cluster.
The other solution used net.savantly:graphite-client:1.1.0-RELEASE and your solution used com.timgroup:java-statsd-client:3.0.1 to send metrics to graphte. Is there a standard or dominant library used to send metrics to graphite?
@ccl0326 Do you have time to review this patch and comment on the choice of the library? Any comment on the comparison between Statsd and the protocol used in your patch? Thanks.

StatsD can integrate with different backends. Graphite's carbon is the most common integration used in many companies.
Here is a link to the Stack Overflow thread on the reasoning for using StatsD aggregation. http://stackoverflow.com/questions/13697553/why-use-statsd-when-graphites-carbon-aggregator-can-do-the-same-job
Maybe we can create a separate the Statsd config from the main kafka-monitor.properties as an example. That way default config is not affected. What would you suggest?
I don't have any objection on using another StatsD library. I just used the library which is preferred choice in the Spring Boot project. It's a proven one and works out of box with little configuration.
I think supporting different methods for exporting to metrics would be good for the users of the monitor.

@arsenaid Sure, this makes sense. The patch looks good to me. Instead of creating another Statsd config specifically to show how to use and config StatsdMetricsReporterService in the properties file, would it work to just provide the example config for StatsdMetricsReporterService in StatsdMetricsReporterServiceConfig? I am not sure we should have one example config file for each newly added reporter service.

Sounds good. I moved the config example to the StatsdMetricsReporterServiceConfig file.

@arsenaid Thanks for the patch!

Sorry for late reply.
From the integrate way, statsd is better than graphite. I add graphite reporter is because the metrics can send to storage directly, if use statsd, the user should add middleware like brubeck.
P.S. I think com.timgroup:java-statsd-client is not maintenance now, we use com.indeed.java-dogstatsd-client in production.


Operator overloading？

My usage scenario has implemented operator overloading. However, the type is still not supported on TS. Hopefully ts will provide a built-in generics that will allow me to omit strong conversion types。

type __NumberLike = number & Record<Exclude<keyof number, 'toString'>, never>;

declare type Vector = __NumberLike & {...}

You forgot to fill out the issue template for feature requests.
Sounds like a duplicate of #42218 / #5407.

To expedite the triage process, we need everyone to follow the issue template and instructions.
When you clicked "Create New Issue", the issue form was pre-populated with a template and some instructions. We need you to read those instructions completely, follow them, and then fill in all the fields in that template.
We are not able to assist with issues that don't follow the template instructions as they represent a significantly larger amount of work compared to issues which are correctly specified. Thank you for understanding.


FIXED :Added google form link to subscribe us button and fixed navbar transition effect while scrolling

#58 closes

@kaal-coder merge


The generated prisma failed to compile if both the relation field of entity and it's base type exsit in one model

The below schema passes the ZenStack CLI, but the generated Prisma schema fails validation:
Error: Prisma schema validation - (get-dmmf wasm)
Error code: P1012
error: Error validating field `posts` in model `User`: The relation field `posts` on model `User` is missing an opposite relation field on the model `Post`. Either run `prisma format` or add it manually.

model User {
  id String @id @default(cuid())
  name String?
  content Content[]
  post Post[]
}
model Content {
  id String @id @default(cuid())
  published Boolean @default(false)
  contentType String
  @@delegate(contentType)

  user User @relation(fields: [userId], references: [id])
  userId String
}

model Post extends Content {
  title String
}
model Image extends Content {
  url String
}

Fixed in 2.0.0-alpha.6


Develop

Codecov Report
Patch coverage: 100.00% and no project coverage change.

Comparison is base (ded5472) 89.34% compared to head (1f68b55) 89.34%.

Additional details and impacted files
@@           Coverage Diff           @@
##             main      #74   +/-   ##
=======================================
  Coverage   89.34%   89.34%
=======================================
  Files          16       16
  Lines         582      582
  Branches       95       95
=======================================
  Hits          520      520
  Misses         45       45
  Partials       17       17

Impacted Files
Coverage Δ

wtforglib/__init__.py
100.00% <100.00%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


GH-25: Exposed the IGitExecutionOptions on all GIt commands.

Closes: #25.
Signed-off-by: Akos Kitta<EMAIL_ADDRESS>

@AlexTugarev, can you please look into this?


Add python script to convert mp4 links into html tags for documentation

As we are using the DESCRIPTION.md that has been provided for napari hub for our documentation, we need to convert mp4 links in the .md into a html tag. This allows us to keep the video remotely, while having it rendered correctly in both napari hub and our documentation. We may want to remove this once/if we write dedicated documentation.

Codecov Report

Merging #56 (f2aa443) into main (90d44a5) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main      #56   +/-   ##
=======================================
  Coverage   82.97%   82.97%
=======================================
  Files           4        4
  Lines         141      141
=======================================
  Hits          117      117
  Misses         24       24

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 90d44a5...f2aa443. Read the comment docs.


[ERROR INSTALLING] -node-sass@3.4.2???

After typing:
npm install -g cordova ionic
I get an error when it starts to install<EMAIL_ADDRESS><EMAIL_ADDRESS>install C:\Documents and Settings\Bob\Application Data\npm\nod
e_modules\ionic\node_modules\node-sass
node scripts/install.js
Binary downloaded and installed at C:\Documents and Settings\Bob\Application Dat
a\npm\node_modules\ionic\node_modules\node-sass\vendor\win32-ia32-46\binding.nod
e
<EMAIL_ADDRESS>postinstall C:\Documents and Settings\Bob\Application Data\npm
\node_modules\ionic\node_modules\node-sass
node scripts/build.js
C:\Documents and Settings\Bob\Application Data\npm\node_modules\ionic\node_mod
ules\node-sass\vendor\win32-ia32-46\binding.node ` exists.
testing binary.
Then it writes the errror:
`npm ERR! Windows_NT 5.1.2600
npm ERR! argv "C:\Program Files\nodejs\node.exe" "C:\Program Files\nodejs\
node_modules\npm\bin\npm-cli.js" "install" "-g" "cordova" "ionic"
npm ERR! node v4.4.2
npm ERR! npm  v2.15.0
npm ERR! code ELIFECYCLE
npm ERR<EMAIL_ADDRESS>postinstall: node scripts/build.js
npm ERR! Exit status<PHONE_NUMBER>
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>postinstall script 'node scripts/build.js
.
npm ERR! This is most likely a problem with the node-sass package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node scripts/build.js
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs node-sass
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!
npm ERR!     npm owner ls node-sass
npm ERR! There is likely additional logging output above.
npm ERR! Please include the following file with any support request:
npm ERR!     C:\Documents and Settings\Bob\npm-debug.log`

Hey! Thanks for opening an issue with us!  As this issue is more related to the CLI and not the framework I will be moving this issue to that repo. Thanks again!

This issue was moved to driftyco/ionic-cli#910


[Event Request] table 5902 "Service Line" - OnBeforeValidateQtyToShipBase

We would like to add a new event OnBeforeValidateQtyToShipBase in the following trigger:
    field(5418; "Qty. to Ship (Base)"; Decimal)
    {
        Caption = 'Qty. to Ship (Base)';
        DecimalPlaces = 0 : 5;

        trigger OnValidate()
        var
            IsHandled: Boolean;
        begin
            //A200F0000.Event18.03.ns
            IsHandled := false;
            OnBeforeValidateQtyToShipBase(Rec, xRec, CurrFieldNo, IsHandled);
            if IsHandled then
                exit;
            //A200F0000.Event18.03.ne
            if "Qty. to Ship (Base)" < 0 then
                FieldError("Qty. to Ship (Base)", Text029);

            TestField("Qty. per Unit of Measure", 1);
            Validate("Qty. to Ship", "Qty. to Ship (Base)");
        end;
    }

Event Signature:
[IntegrationEvent(false, false)]
local procedure OnBeforeValidateQtyToShipBase(var ServiceLine: Record "Service Line"; xServiceLine: Record "Service Line"; CallingFieldNo: Integer; var IsHandled: Boolean)
begin
    //A200F0000.Event18.03
end;

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.


Is it possible to use Version Catalog while defining plugins in Convention Plugins?

Hi!
Thank you very much for such a useful article! I believe it should be included in the official Gradle documentation :)
I have just one question - is it possible to use Version Catalog while defining plugins in Convention Plugins?
As I noticed that the code snippets in your article do not facilitate Version Catalog to specify plugin versions.
I tried to do the following in my convention.gradle file:
plugins {
    alias(libs.plugins.jacocoPlugin)
}

But it caused an error:
 only alias(libs.plugins.someAlias) plugin identifiers where `libs` is a valid version catalog

  For more information on the plugins {} block, please refer to https://docs.gradle.org/8.9/userguide/plugins.html#sec:plugins_block in the Gradle documentation.

   @ line 2, column 5.
         alias(libs.plugins.jacocoPlugin)
         ^

  1 error

If it's not possible, maybe it would be possible to add such remark to the article? That would be very helpful as well!
Thank you for help!

Hi, @Kacper86! 👋
Thank you greatly for the kind words about my article. 😊
Unfortunately, it's not possible to use version catalog type-safe accessors within precompiled script plugins.
Actually, this is currently the most requested Gradle feature.
Please give this issue a 👍: https://github.com/gradle/gradle/issues/15383
You bring up a good point about mentioning it in the article. I'll consider that.
Thanks again!

Hi @erichaagdev ,
I see, thank you for a quick response!
I have a 👍 to https://github.com/gradle/gradle/issues/15383 :)
Have a great day!


Tuya Strip Light (Product ID: vnroaagz68oeftni) cannot be added to home app

The Strip light cannot  be added to the home app.
Product ID: vnroaagz68oeftni

Hi @asifrhm , Thank you for your feedback.
Please submit an Issue in the Issue Template format so that we can better help you solve the issue.
your device category should be "dd", because this category is not in the Tuya standard instruction set. We will support it in the next version as soon as possible. Please refer to more information of the supported category.

https://github.com/tuya/tuya-homebridge/issues/60

Hi @Hanh94,
What is the template format?
Also, How can I find the device category of the Tuya device

https://github.com/tuya/tuya-homebridge/issues/new?assignees=&labels=bug&template=bug_report.md&title=

Hi @asifrhm ,We already support Category "dd "in version 1.3.0, please update and try again.

yes its working now, thanks


ref.chartInstance always null

Hello, thanks for this package. I started using it on my team lately, and it's great!
However, I'm wondering if I'm doing something wrong or if there's an issue with the properties.
I use a ref on my component instance and am trying to access the chartInstance so that I can retrigger an update when one of my props changes (none of the data, just a background color for a dynamically drawn gradient).
Something like
<template>
  <Bar :data="data" ref="chartRef" />
</template>

<script>
setup () {
  const chartRef = ref(null)

  watch(barColorPreference, () => {
    const chartInstance = chartRef.value.chartInstance // this is always null
  })

  const data = computed(() => ({ })) // all my data

  return { chartRef, data }
}
</script>

The README.md specifies that I should be able to access the chartInstance this way. Am I missing something?
I forked the CodeSandbox from the README.md
https://codesandbox.io/s/demo-vue-chart-3-forked-y6jvv?file=/src/App.vue

Hi @Mootook and thanks!
You're not doing anything wrong, accessing chartInstance has been implemented today thanks to this issue #4 but I forgot to update the docs.
But there is still bugs because making chartInstance reactive will throw an error in Vue 3 and not in Vue 2 :(
I will work on a solution making chartInstance reactive only for Vue 2.
The workaround for now is using the events chart:render or chart:update like this:
<template>
  <div>
    <DoughnutChart
      ref="doughnutRef"
      :data="testData"
      @chart:render="handleChartRender"
    />
    <button @click="shuffleData">Shuffle</button>
  </div>
</template>

<script lang="ts">
import { shuffle } from 'lodash';
import { computed, defineComponent, ref } from 'vue';
import { Doughnut } from 'vue-chart-3';
import { Chart, ChartData, ChartOptions } from 'chart.js';

export default defineComponent({
  name: 'Home',
  components: { DoughnutChart: Doughnut },
  setup() {
    const data = ref([30, 40, 60, 70, 5]);
    const doughnutRef = ref<typeof Doughnut>();
    const testData = computed<ChartData<'doughnut'>>(() => ({
      labels: ['Paris', 'Nîmes', 'Toulon', 'Perpignan', 'Autre'],
      datasets: [
        {
          data: data.value,
          backgroundColor: ['#77CEFF', '#0079AF', '#123E6B', '#97B0C4', '#A5C8ED'],
        },
      ],
    }));

    function handleChartRender(chart: Chart<'doughnut'>) {
      console.log(chart);
    }

    function shuffleData() {
      data.value = shuffle(data.value);
    }

    return { testData, shuffleData, doughnutRef, handleChartRender };
  },
});
</script>

By the way the data in each Chart Component is already reactive to changes! If your data changes, the Chart will update itself like in the exemples :)

Docs updated!

@victorgarciaesgi Ah, that makes sense. Thanks!
Also, my use case does not involve changing the data. I'm allowing for dynamically setting the background color of a BarChart while keeping the data consistent.
This is perhaps not in the bounds of this issue, but my current implementation is something like
watch(barColorPreference, async newColor => {
  data.labels = [] // clear and await the render to rerender the chart
  await nextTick()
  data.label = originalLabels
})

I assume there's a much better way.

Okay! Does the workaround is okay for you ? (with the events)

@victorgarciaesgi yup! Thanks again


AddasyncThunk and extra reducers for fetching rockets data from the API

In the following project I was able to do the following

Linters configuration.
Fetch data from the rockets endpoint

closes #17

Hi @DianaBeki

There are some issues that you still need to work on to go to the next task but you are almost there!
To Highlight
✅ You used the correct Gitflow
✅ Descriptive pull request message
✅ linter error checks validated
✅ Documented your work professionally
✅ Implemented required function
Required Changes ♻
Check the comments under the review


Stress test the software

We need to stress test the database with synthetic data to assure it will scale.

Was this issue fixed by #192?

I don't think so, since this specific issue talks about adding large quantities of data to the DB to test where it is slow. However, the functions added in #192 can be used for this.

We have had numerous indications that the current code does not scale acceptably, including #364, #361, #385.  It is not known right now if this is due to database performance issues, tornado performance issues, or something else.  Someone is going to have to put in some serious effort to identify the source(s) of the problem and then figuring out how to fix them.

@charles-cowart / @AmandaBirmingham, I think this issue can be closed, right? Currently the only outstanding issue from the list is https://github.com/jdereus/labman/issues/361, which is an issue by itself ...

@antgonza the issue title is pretty broad; my guess is that there's more testing that could be done from now until full launch, even if #364, #361, and #385 are done.

So far, I am not convinced that this is done.  Below is the description I have of what stress testing was going to be done; if these steps have been done, can someone mine the info on them out of whatever email trail they ended up in and put them here?  If not, can we discuss why we no longer plan to do this work before we close this issue?
From Charlie, Amanda, Daniel meeting 03/19:
We were asked to generate "a plan to profile / isolate the known performance issues".  Our plan is to generate python code that can programmatically add 100,000 samples and their processed results to a test labcontrol installation, testing the performance of the system as we go and at the end of the process.  We will insert the samples as mixes of 96- and 384-well plates in groups of 1000 at a time, tracking how long the programmatic insertion takes and testing the interface performance manually after each 1000.  If we reach a point at which either (a) the programmatic insert process slows to an unacceptable speed or (b) the interface becomes unusable due to performance issues, we will stop the process (the person doing the testing will make the judgment call about whether either of these thresholds has been reached).   After the test data load is completed (either to the full 100,000 samples or to the point where it was stopped for performance concerns) we will manually examine and/or profile the code to identify the source(s) of the slow-downs.
The test load process may provide guidance on these source(s), since if the programmatic loads work well, then the performance issues are likely limited to the tornado interface, whereas if the programmatic load is slow, then database accesses are a likely culprit.


[AutoRelease] t2-security-2024-04-03-12943(can only be merged by SDK owner)

https://github.com/Azure/sdk-release-request/issues/4896
Live test success
https://dev.azure.com/azure-sdk/internal/_build?definitionId=1028

issue link:https://github.com/Azure/sdk-release-request/issues/4896


2022 ToDo list

[ ] Guidance on supp ==> Ismael should give a skeleton.
[ ] Finalize the supplemental material

[ ] Expand the filtering and curation of data.
[ ] Confusion matrix.

[ ] New data and redo the analysis.  ==> Ismael should send the new code (pre-processing and figures).
[ ]

US EPA Ecotox db (not necessary with regulatory design) comparison OPP pesticide Ecotoxicity (regulatory endpoints)


Add length check for email address.

This stops them from submitting the username and email address step of the signup process. Otherwise, you get to the end and get a not-so-useful message (“bad email address”).
@keybase/react-hackers, this is ready for review. Do we have a place for magic numbers?

we don't want to just allow this to be longer on the backend side?

We could, but we'd still want a check that matches what the database expects, right?


Use backend response text as single source of truth

Description

Use backend response text as single source of truth for frontend display, to avoid inconsistent prompts in frontend
Fix some missing typings
Add whitespaces for logical grouping in BackendSaga.ts
Remove test cases that are no longer needed

Type of change

[x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update
[ ] Code quality improvements

How to Test
Backend requests should display backend response text as prompts, e.g. attempts to unsubmit missions that have passed deadline should receive prompt 'Assessment not open' instead of 'Not avenger of the student'.
Checklist
Please delete options that are not relevant.

[x] I have tested this code

Pull Request Test Coverage Report for Build 7605

26 of 74 (35.14%)  changed or added relevant lines in 3 files are covered.
11 unchanged lines in 2 files lost coverage.
Overall coverage decreased (-0.3%) to 32.431%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/commons/sagas/RequestsSaga.ts
0
6
0.0%

src/commons/sagas/BackendSaga.ts
25
67
37.31%

Files with Coverage Reduction
New Missed Lines
%

src/commons/achievement/utils/AchievementInferencer.ts
2
72.87%

src/commons/sagas/BackendSaga.ts
9
45.53%

Totals

Change from base Build 7604:
-0.3%

Covered Lines:
2257

Relevant Lines:
6408

💛  - Coveralls


Is it possible to regularly schedule an API call (specifically to set a channel's topic)?

I'm hoping to regularly schedule app.client.conversations_setTopic API call via a bolt app to automatically set a channel's topic every week. I'm doing this thru a bolt app because I'm setting the topic based off data I pull from another API. I've gotten the API call working via a slash command, but I'd like to schedule this to happen automatically.
Currently I'm just trying to get this to work via a simple hello world-style app running locally with the python schedule package (link here). Is this even something that's possible (i.e. can it be done when my app is actually hosted somewhere)?
Reproducible in:
pip freeze | grep slack
slack-bolt==1.15.1

python --version
Python 3.10.6

sw_vers && uname -v # or `ver`
ProductName:	macOS
ProductVersion:	12.5.1

Steps to reproduce:
Source code:
from dotenv import load_dotenv
from slack_bolt import App
import schedule
from datetime import datetime

app = App(
    token=os.environ.get("SLACK_BOT_TOKEN"),
    signing_secret=os.environ.get("SLACK_SIGNING_SECRET")
)

def set_topic_cron(channel_id="channel_id_here"):
    now = datetime.now()
    app.client.conversations_setTopic(
        channel = channel_id,
        topic   = f"The datetime is {now}"
     )

if __name__ == "__main__":
    schedule.every(30).seconds.do(set_topic_oncall_cron)
    app.start(port=int(os.environ.get("PORT", 3000)))

Run above with a channel_id
It doesn't do anything

Expected result:
The channel topic will be updated with the current time.
Actual result:
Nothing happens.
Requirements
Please read the Contributing guidelines and Code of Conduct before creating this issue or pull request. By submitting, you are agreeing to those rules.

Tried doing this via /reminder @bot "run_command" every weekday (read about this somewhere), seems that doesn't work anymore? Just got I’m sorry! I’m afraid you can’t send reminders to bots.

Figured it out: /reminder #channel "@bot run_command" every weekday works (but sends the message publicly).


Remove empty h2

Remove empty h2 that is between textBreakStrategy and underlineColorAndroid

Deploy preview for react-native processing.
Building with commit 09dccd936b88c0a6455286538ffe03c89fd45b05
https://app.netlify.com/sites/react-native/deploys/5e93e0979d16c10008b7d556


Added reset password dialog upon SQL Server expired password error

This PR adds in a simple reset dialog that pops up whenever a password expired error is encountered while connecting to a profile.
The user can press OK to change the password (and connect to the server and save the password immediately if enabled).
If an error is returned from STS when attempting to change the password, users will need to try connecting again to bring the dialog again so they can enter a different password.
Redesigned password reset dialog:

Removed unnecessary dialog in error:

First connect for an expired password (initial unexpected error happens on SSMS as well):

Error for an invalid password (error from STS):

Loading spinner and successful connect for a valid password:

This PR fixes #605
Companion PRS:
https://github.com/microsoft/sqlops-dataprotocolclient/pull/71
https://github.com/microsoft/sqltoolsservice/pull/1771

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

12 of 76 (15.79%)  changed or added relevant lines in 6 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.02%) to 42.021%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/sql/workbench/api/common/sqlExtHost.protocol.ts
0
1
0.0%

src/sql/workbench/api/common/extHostDataProtocol.ts
0
3
0.0%

src/sql/workbench/services/connection/browser/connectionManagementService.ts
1
7
14.29%

src/sql/workbench/services/connection/browser/connectionDialogService.ts
0
11
0.0%

src/sql/workbench/services/connection/browser/passwordChangeDialog.ts
10
53
18.87%

Totals

Change from base Build<PHONE_NUMBER>:
-0.02%

Covered Lines:
28826

Relevant Lines:
63757

💛  - Coveralls

@erinstellato-ms it will occur if a user decides to enter a password that does not meet the password requirement or if the user decides to enter an empty string for the password. An error message will pop up explaining why the password failed to be changed (it is the two error messages posted above), then once the user presses OK, the error dialog disappears along with the change password dialog. This means the user will have to try connecting again in this case.

@erinstellato-ms
It will occur if a user decides to enter a password that does not meet the password requirement or if the user decides to enter an empty string for the password.
An error message will pop up explaining why the password failed to be changed (it is the two error messages posted above, and they clearly state what went wrong)
Once the user presses OK, the error dialog disappears along with the change password dialog. This means the user will have to try connecting again in this case.

Can you share an example of the error message?  I'd like to view the text if possible.  Thanks!

Wouldn't it be better to not hide the password change dialog until the change is successful or the user cancels? If an error occurs you can display that, but you probably should keep the dialog showing so the user doesn't have to go through the entire process again.

(also I would suggest removing the callstack from the error message displayed. That isn't really needed and would just confuse users)

Yeah I can @Charles-Gagnon just need to add a catch on the promise.

Added updated error messages in the STS side, (the "Changed Database" lines are part of the error message from SqlClient and are out of our control, but the first lines of the code tell the user the error reason directly.

Error recovery steps have been added to the error messages.

@smartguest the UX on the dialog seems like it could be improved a bit for basic things like padding, labels, alignment.  Could you please sync with @alanrenmsft to get some suggestions for this?

the dialog title should be left aligned
I think we only need the following fields on the dialog: New Password and Confirm Password. The UI is triggered by connect action, I don't think we need to ask the user whether they want to connect.
we should use the dialog's built-in loading indicator on the left side of the dialog footer, see the connection dialog's connecting indicator for example.
the width of the dialog should be reduced; size allocation should be: auto for label column and all other available for the input box column to accommodate the localized strings.

also, could you please attach the screenshot from SSMS for comparison and reference. @smartguest

@alanrenmsft @cheenamalhotra specifically asked me to include the ability to checkmark if we can connect or not, so I'm keeping that for now.

@alanrenmsft @kburtram, @cheenamalhotra specifically asked me to include the ability to checkmark if we can connect or not, since this may be reused for right click to change password feature but yes this can be defaulted to on.

@cheenamalhotra any reason?

@smartguest please update the screenshots/gifs after making changes.

@smartguest I'm not sure how the dialog looks at this point, but I would agree that the Connect? checkbox is not needed.  After the user changes the password, I would expect the flow to be that they select OK, the password is updated, and assuming success, we try to login.
If you can post updated screenshots of the dialog, I'm happy to review those for spacing, color, etc.  Thanks!

@Charles-Gagnon should I still leave the actual implementation of change password in the Connection Service of STS, it still relies on code that is part of the implementation of the Connection Service for one of its checks, not to mention the handling of requests.

To be clear - what you have isn't going to "break" anything as far as I'm aware. My concern here is that you're adding stuff to the public extensibility layer that other extensions won't be able to use (since this is currently only done for MSSQL).
You don't have to add things to the public API to do what you're trying to accomplish - we can have internal functionality that makes the RPC calls to the MSSQL extension directly to call changePassword. This of course isn't super great - ideally in my mind this functionality is something that all extensions could hook in to and utilize. But designing such a feature seems to be out of scope of what you're trying to accomplish so my suggestion is purely just to move things around so that we aren't confusing extension authors by providing a public API that does nothing for them.

Added updated GIFs after changes

I think 'Change Password' on server request/error number is not an uncommon scenario and can be extended beyond MSSQL provider. e.g. MySQL supports Password expiration which is something MySQL provider can make use of in future.

Definitely, I wasn't saying that it wouldn't be useful. Just that it currently isn't doing that.
And if you're looking to make this extensible I would very much suggest looking at a much more generic way of doing this - for example having a generic way for providers to register a callback that is called when an error occurs during a connection. This would allow them to do whatever they needed without us needing to cover every single possible scenario in core ourselves.
Example flow :

Provider is registered with an "onConnectionError" callback
User attempts a connection through that provider
Core calls the provider extension to make the connection
Provider connection call returns an error
Core calls the provider onConnectionError callback (if one exists, otherwise falls back to default of just showing error)
Provider does whatever it wants, such as showing a dialog or automatically trying to fix the issue and then returns the result (handled or not)
If result is handled core then re-attempts connection, otherwise it shows the error

We could then still provide simple ways for users to accomplish common tasks - such as showing the firewall rule dialog or change password dialog (so that each extension doesn't have to re-implement it themselves). This could be done either through the extension API or by a package we provide that they can reference separately.

@smartguest let's talk about the feedback in our meeting today.

Definitely, I wasn't saying that it wouldn't be useful. Just that it currently isn't doing that (we specifically check for MSSQL and only our specific error code).
And if you're looking to make this extensible I would very much suggest looking at a much more generic way of doing this - for example having a generic way for providers to register a callback that is called when an error occurs during a connection. This would allow them to do whatever they needed without us needing to cover every single possible scenario in core ourselves.
Example flow :

Provider is registered with an "onConnectionError" callback
User attempts a connection through that provider
Core calls the provider extension to make the connection
Provider connection call returns an error
Core calls the provider onConnectionError callback (if one exists, otherwise falls back to default of just showing error)
Provider does whatever it wants, such as showing a dialog or automatically trying to fix the issue and then returns the result (handled or not)
If result is handled core then re-attempts connection, otherwise it shows the error

We could then still provide simple ways for users to accomplish common tasks - such as showing the firewall rule dialog or change password dialog (so that each extension doesn't have to re-implement it themselves). This could be done either through the extension API or by a package we provide that they can reference separately.

@Charles-Gagnon as discussed offline, we would take this feedback as a follow-up investigation activity as its the initial design limitation and not specific to the proposed changes. It would be ideal to address it altogether with other error codes too.

@smartguest I have a question about this comment in the updated screenshots (thank you for those): "First connect for an expired password (initial unexpected error happens on SSMS as well)" Do we know why that fails and can we handle it better?

@erinstellato-ms The first connect error happens when you attempt to connect to a server using credentials for the first time, the exact error is:
"A connection was successfully established with the server, but then an error occurred during the login process. (provider: Shared Memory Provider, error: 0 - No process is on the other end of the pipe.)"
This will have to be a separate issue to be looked into as it also happens with SSMS so it's not really part of this PR.
Also those messages are part of the SqlClient error message as it is and processing them individually is not an ideal solution, but we can try to filter them from the string.

@smartguest This PR depends on both the STS changes and (to a slightly lesser extent) the dataprocol-client changes.
You typically should be including all required changes together in a single PR so we don't have broken features in ADS - which normally means waiting until a build of STS is published that contain the required changes. (and a new release of dataprotocol-client should be done as well)

It is merged but has it already been included at least in the insider version? Yesterday it expired and I did not get the pop up although it is possible that I did not have the latest build, now I have version 1.42.0-insider, yesterday I may have had the previous one

I'm still seeing this in version 1.48.0 in 2024. Every time I create a new user who uses Azure Data Studio with "User must change password at net login" , we have to have them use a desktop w/ SSMS to change their password.

@smartguest can you re-test this in ADS 1.48 when you have a minute?  Thanks.
@kisantia for awareness.

@erinstellato @rick-syncbak It appears the current code only handles one kind of password expired error: 18488, which is the Password needs to be changed (and not Password has expired which is 18487), I will add support for that number as an alternative check: https://learn.microsoft.com/en-us/sql/relational-databases/native-client/features/changing-passwords-programmatically?view=sql-server-ver15

@erinstellato It works for error 18488 (The one that states password needs to be changed and it should work for error 18487, which is the password expired error as addressed in this PR): https://github.com/microsoft/azuredatastudio/issues/22916).
Can you get the exact error from the "Copy Details" button when it happens? @rick-syncbak and paste it here? I need to identify to see if the error you are encountering matches the error code that we currently check for).

Here is a GIF of the 1.48 showing me creating the login on a non cloud SQL Server Instance with SQL Login, with password expired for next login, and then logging in with successful results:

I was able to test successfully on a "must change password on first login"
scenario.
Thank you!
On Tue, Mar 26, 2024 at 5:03 PM Alex Ma @.***> wrote:

@erinstellato https://github.com/erinstellato It works for error 18488
(The one that states password needs to be changed and it should work for
error 18487, which is the password expired error as addressed in this PR):
#22916 https://github.com/microsoft/azuredatastudio/issues/22916).
Can you get the exact error from the "Copy Details" button when it
happens? @rick-syncbak https://github.com/rick-syncbak and paste it
here? I need to identify to see if the error you are encountering matches
the error code that we currently check for).
—
Reply to this email directly, view it on GitHub
https://github.com/microsoft/azuredatastudio/pull/21295#issuecomment-2021548269,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABRRCEWTMCTKV5KJDTGXFXDY2HWDFAVCNFSM6AAAAAASIMCY32VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAMRRGU2DQMRWHE
.
You are receiving this because you were mentioned.Message ID:
@.***>

@rick-syncbak Thanks for following up, glad it's working for you!
Thanks @smartguest for validating and sharing the video!


Consider freezing MSRV

As an embedded Linux person, seeing MSRV being the current stable version is somewhat undesirable to me. All too often embedded is lagging behind other environments.
Working with Yocto/OpenEmbedded, one of the more popular build systems for custom embedded Linux images, I will not get access to 1.56 (likely 1.58 or 1.59 by then) until the next release in April. Which also happens to be the next LTS release. The current release includes 1.54. This is just one example, I'm sure there are more environments with this issue.
Disclosure: I am not a Northstar user, nor do I plan to, found this repository because of a link in Tokio's Discord. I am simply writing this issue for your consideration.

@jaskij Thanks for your input. I wasn't aware of the Yocto release cycle duration and haven't heart from the Yocto user of this crate that this has been an issue in the past. They probably just built it in a hacky way out of tree...
Yocto is tested from time to time on aarch64 from third parties, but is not a prio one target for this project.
The current MSRV is 1.56.0. This is probably missing in the docs but in the CI matrix.
I'll keep this issue until it's at leaset documented.

@flxo MSRV is listed in the README, but you have a typo (MRSV), so text-search fails. Search for 1.56 instead. (My edits to the issue stem from that).
Rust has been pulled from a separate meta-rust into openembedded-core in October's Honister (3.4) release, probably due to GNOME's dependency on librsvg, so it may see a wider adoption in the future.

@jaskij The MSRV is fixed in the README. The CI does a run with the MSRV. I'm closing the issues - feel free to reopen if there's anything left.


[com.google.fonts/check/kern_table] FAIL when non-character glyph used, WARN when no format-0 subtable present

Description
Fixes add new check: kern table, if present, does not contain non-unicode kern pairs #3148.
To Do

[x] update CHANGELOG.md
[x] wait for all checks to pass
[x] request a review

I reviewed the code and it looks good. I'm still waiting for the code-tests to run on GHActions. It seems to be kinda stuck again... ;-(

thanks, @moyogo

Isn't kerning between unencoded glyphs just as important as that between encoded glyphs? It seems we are crippling all fonts b/c of one broken application. What am I missing?

Isn't kerning between unencoded glyphs just as important as that between encoded glyphs? It seems we are crippling all fonts b/c of one broken application. What am I missing?

Is there an application that uses the kern table instead of the GPOS kerning and works when it has unencoded glyphs?

Today we've got some good vibes from twitter :-)

https://twitter.com/ArrowType/status/1412449003275440128


Update Cypress Amazon CI Guide to reference Docker Factory

Update: https://docs.cypress.io/guides/continuous-integration/aws-codebuild#Testing-in-Chrome-and-Firefox-with-Cypress-Docker-Images

This issue should be moved to https://github.com/cypress-io/cypress-documentation where the source
https://github.com/cypress-io/cypress-documentation/blob/main/docs/guides/continuous-integration/aws-codebuild.mdx
is located.