Amplify deploy fails when using pnpm catalogs

Environment information
System:
  OS: macOS 15.0.1
  CPU: (8) arm64 Apple M1
  Memory: 331.17 MB / 16.00 GB
  Shell: /bin/zsh
Binaries:
  Node: 20.18.1 - ~/.asdf/installs/nodejs/20.18.1/bin/node
  Yarn: undefined - undefined
  npm: 10.8.2 - ~/.asdf/plugins/nodejs/shims/npm
  pnpm: 9.5.0 - ~/.asdf/installs/nodejs/20.18.1/bin/pnpm
NPM Packages:
  @aws-amplify/auth-construct: Not Found
  @aws-amplify/backend: Not Found
  @aws-amplify/backend-auth: Not Found
  @aws-amplify/backend-cli: 1.4.2
  @aws-amplify/backend-data: Not Found
  @aws-amplify/backend-deployer: 1.1.10
  @aws-amplify/backend-function: Not Found
  @aws-amplify/backend-output-schemas: 1.4.0
  @aws-amplify/backend-output-storage: Not Found
  @aws-amplify/backend-secret: 1.1.5
  @aws-amplify/backend-storage: Not Found
  @aws-amplify/cli-core: 1.2.0
  @aws-amplify/client-config: 1.5.2
  @aws-amplify/deployed-backend-client: 1.4.2
  @aws-amplify/form-generator: 1.0.3
  @aws-amplify/model-generator: 1.0.9
  @aws-amplify/platform-core: 1.2.2
  @aws-amplify/plugin-types: 1.5.0
  @aws-amplify/sandbox: 1.2.6
  @aws-amplify/schema-generator: 1.2.5
  aws-amplify: Not Found
  aws-cdk: 2.171.1
  aws-cdk-lib: 2.171.1
  typescript: 5.5.4
No AWS environment variables
No CDK environment variables

Describe the bug
When deploying monorepo using the pnpm catalogs, Amplify cannot figure out the 'next' version.
Minimal reproduces

https://github.com/hwwi/issue-amplify-turborepo-pnpm-catalogs/tree/main - turborepo + pnpm => deploy success.
https://github.com/hwwi/issue-amplify-turborepo-pnpm-catalogs/tree/with-catalogs - turborepo + pnpm + pnpm catalogs => deploy fails.

Amplify build log

2024-12-06T08:43:18.815Z [INFO]: # Cloning repository: git@github.com:hwwi/issue-amplify-turborepo-pnpm-catalogs.git
2024-12-06T08:43:20.094Z [INFO]:
2024-12-06T08:43:20.095Z [INFO]: Cloning into 'issue-amplify-turborepo-pnpm-catalogs'...
2024-12-06T08:43:20.095Z [INFO]: # Switching to commit: 81217aa2cde4b7bfff0d6fe2e4e7c154810f8705
2024-12-06T08:43:20.107Z [INFO]: Note: switching to '81217aa2cde4b7bfff0d6fe2e4e7c154810f8705'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 81217aa feat: apply pnpm catalogs
2024-12-06T08:43:20.198Z [INFO]: Successfully cleaned up Git credentials
2024-12-06T08:43:20.198Z [INFO]: # Checking for Git submodules at: /codebuild/output/src3269592691/src/issue-amplify-turborepo-pnpm-catalogs/.gitmodules
2024-12-06T08:43:20.203Z [ERROR]: !!! CustomerError: Cannot read 'next' version in package.json.
If you are using monorepo, please ensure that AMPLIFY_MONOREPO_APP_ROOT is set correctly.
Learn More: https://docs.aws.amazon.com/amplify/latest/userguide/monorepo-configuration.html#setting-monorepo-environment-variable
2024-12-06T08:43:20.204Z [INFO]: # Starting environment caching...
2024-12-06T08:43:20.204Z [INFO]: # Environment caching completed

Reproduction steps

Initialize monorepo with turborepo + pnpm + pnpm catalogs

npx create-turbo@latest --example with-tailwind
# ? Where would you like to create your Turborepo? ./issue-amplify-turborepo-pnpm-catalogs
# ? Which package manager do you want to use? pnpm
cd issue-amplify-turborepo-pnpm-catalogs
pnpx codemod pnpm/catalog
echo "\nnode-linker=hoisted" >> .npmrc

Create amplify.yml

version: 1
applications:
  - frontend:
      phases:
        preBuild:
          commands:
            - npm install -g pnpm
            - pnpm install
        build:
          commands:
            - pnpm turbo run build --filter=docs
      artifacts:
        baseDirectory: apps/docs/.next
        files:
          - '**/*'
      cache:
        paths:
          - .next/cache/**/*
          - node_modules/**/*
      buildPath: /
    appRoot: apps/docs
  - frontend:
      phases:
        preBuild:
          commands:
            - npx pnpm install
        build:
          commands:
            - npx turbo run build --filter=web
      artifacts:
        baseDirectory: apps/web/.next
        files:
          - '**/*'
      cache:
        paths:
          - .next/cache/**/*
          - node_modules/**/*
      buildPath: /
    appRoot: apps/web

Deploy with "AMPLIFY_MONOREPO_APP_ROOT" environment variable.

@hwwi any solution here? I have same issue

Hi @Silon 👋 , thanks for raising this with us. I was able to reproduce a similar behavior and it looks like we do not infer or translate the next dependency version correctly here. I'd recommend directly adding the next dependency to the project's package.json file. Marking this as a feature request to support the pnpm catalog feature.


Show Confirmation dialog before delete in Jstree

Is there any way to show confirmation before deleting of node, I tried adding in check_callback but I am showing confirm dialog box using Sweetalert 2 which use promise for the result, so it gets value before even get confirm from sweetalert, Is there any way I can stop from assigning value to check_callback before getting confirm from sweetalert.
"check_callback": function (operation, node, node_parent, node_position, more) {                             debugger                             if (operation === 'delete_node') {                                 alertMessageDelete(function (result) {                                     debugger                                     if (result.value == true) {                                         return true                                     } else {                                         return false;                                     }                                 });                             }                             return true;                         },

The easier way would be to bind the alert to your UI and only invoke jstree's delete method once the user has confirmed. This will not work with the default keyboard shortcuts out of the box though - you would have to override the 'del' shortcut to first show the alert. Same goes for the contexmenu (if you use it) delete action.


Get command output response in JSON format

HI - How can I get the response/result for any command in JSON format? Something like this.
sfdx.list().then(function(response){
//response as JSON string
});

Hi -
Commands return JSON-formated output when the 'json' flag is set to 'true'.
sfdx.list({ json: true })
See more info at the API documentation here. I'll try to add examples that are more explicit soon.
If you are interested, I am also developing a project that uses JSON output from this module in my SFDX-WebUI project here.

Thanks Zander. Are you still actively developing this one as well? I have added few more methods for some missing SFDX commands which I wanted to submit to this project.

Yeah! It's a bit of a side project, but I am working with it / on it actively, so feel free to submit a pull request or any other questions you might have.


Latest Version - Session goes to the FAILED state immediately after scanning QRCODE

Hello,
After updating image with new pro version and restarting the docker containers we are facing this error.
When new session is created it goes into SCAN_QR_CODE state. However once QRCODE is scanned and login completes then session goes into "FAILED" state immediately.
I deleted the session folders also and repeated image update and docker container restart steps and still facing same error.
{"name":"60601-01","status":"FAILED","config":{"proxy":null,"webhooks":[{"url":'*****',"events":["message","message.any","message.ack"],"hmac":null,"retries":null,"customHeaders":null}]}}

ℹ⚠
Hi everyone!
If you're facing the same issue with FAILED session - please update to the 2023.8.10 version, it fixes the issue
The error in logs you could see is
 ERROR [WhatsappSession - 60601-01] Error: Evaluation failed: TypeError: Cannot read properties of undefined (reading 'CallCollection')
    at __puppeteer_evaluation_script__:9:66


gtm commit deletes pending time when a note for last commit already exists

I would like to be able to track hours without actually committing (maybe code is not ready for commit and I spent a couple of hours reading a code base). I figured the command gtm commit should do the trick.
When I execute the command gtm commit -yes, I get the following message and the command exits with error code 1:
$ gtm commit -yes
note for '<SHA-1>' exists already

But the main issue is, that after executing gtm commit my pending data is gone, i.e., the gtm report command shows no new time added and gtm status resets.
Here is a full sequence of steps on how to reproduce the issue:
$ gtm report  # Shows last commit
7d50e9b <commit message>
Thu Apr 02 21:40:12 2020 +0200 notes Luigi

        1m  0s 100% [r] ../.git/modules/notes/COMMIT_EDITMSG
        1m  0s          notes [+1 -0 = 1] [60/hr]

$ gtm status. # Pending time with a couple of files

       24m 40s  91% [r] Terminal
        1m 50s   7% [r] TODOs.org
           30s   2% [r] Projects.org
       27m  0s          notes

$ gtm commit -yes # Run the aforementioned command
note for '7d50e9b9ce48f25273bd150c62e100c8d11dbfa9' exists already

$ gtm report # Same as first report, no pending time was added
7d50e9b <commit message>
Thu Apr 02 21:40:12 2020 +0200 notes Luigi

        1m  0s 100% [r] ../.git/modules/notes/COMMIT_EDITMSG
        1m  0s          notes [+1 -0 = 1] [60/hr]

$ gtm status # Pending time was reset, deleting time of corresponding files

        1m  0s 100% [r] Terminal
        1m  0s          notes

Am I doing something wrong? How is the gtm commit command should work exactly?
Just wondering, last commit for gtm was from last year, how active is the project? I'm asking because I really enjoy managing my time with it, and I would like to see it gaining more traction.
Anyways, thanks for this cool tool!

Reading the Wiki found out this is exactly the expected behavior. Taken from the Wiki, Commit Time:
This is automatically called from the postcommit hook
Warning - any time logged will be cleared from your working directory

I'll close this issue.


Setting rich text

Hi,
first, thanks creating for this library, it's very useful.
I would like to know if it's possible to have rich text inside a cell? What I mean by rich text is text with a rich format, for instance "Hello world" where world is bold but Hello isn't. I have tried to dabble with SetCellStr and SetCellDefault with content such as "Hello world" (I don't know a lot about XLSX format so my example may be wrong) but the cell value ends up escaped (with SetCellDefault too).
Thanks!

Thanks for your issue, reference issue #69 (set multiline texts to cells support) and #100.  I have added this feature request to the Roadmap.

Thanks
Do you think there is a lot of work required to complete this feature, and do you already have a clear idea of how to implement it? Maybe I could lend you a hand depending on what's needed

Welcome! The cell's text style (include font, size, color, bold, underline, etc.) is stored in the file: xl/sharedStrings.xml and the data structure of this file is defined in  xmlSharedStrings.go. In order to implement this feature, we need to refactor functions: GetCellValue() and SetCellValue(), change the interface to make them get/set the value and style from the xl/sharedStrings.xml, and add new function SetCellValueWithStyle().

hi,will this feature be implemented in the future?

Yes, I have added this feature request to the Roadmap.

Hi @mbresson and @VioletEvergardenZ. Sorry for my late reply. I have added rich text support for this lib, now you set cell with rich text by the SetCellRichText function.

Thanks!


Placeholder issue

@FoksWang
After adding the image view as a container view in the player controller. It's not showing the placeholder image just showing the black color when the video is stopped.
self.player = FWPlayerController(playerManager: playerManager, containerView: self.videoImgVw)

Right, the placeholder is a video cover just displayed before playback.

So how I can handle this. Need to show the placeholder when the video is stopped.

Are you using custom controlView or default?

This is fixed. I am placing a placeholder when the video is ready to play then hide the placeholder.

This is fixed. I am placing a placeholder when the video is ready to play then hide the placeholder.

@FoksWang I have one more question. How we can mute the video player audio?

@FoksWang I have one more question. How we can mute the video player audio?

if you are using FWPlayerMediaPlayback, you can use muted to control.
otherwise, you can control it like below:
self.player = FWPlayerController(playerManager: playerManager, containerView: self.containerView)
playerManager.isMuted = true

if you are using FWPlayerMediaPlayback, you can use muted to control.
otherwise, you can control it like below:
self.player = FWPlayerController(playerManager: playerManager, containerView: self.containerView)
playerManager.isMuted = true

@FoksWang Thanks for the reply.
How we can handle the speed rate playback (0.5x, 1.0x, 1.25x, 1.5x, 2.0x)?

@FoksWang Thanks for the reply.
How we can handle the speed rate playback (0.5x, 1.0x, 1.25x, 1.5x, 2.0x)?

@FoksWang After changing the playback speed rate How we can get that video?

@FoksWang After changing the playback speed rate How we can get that video?

@FoksWang Can we add filters in the video?

could you close this issue and open another one?


Check Order Preferences Verbiage

*When I have pushed the new online order form to the master branch so you can see it :) ...
On the Order Process + Scan page, check the verbiage I added under "Order preference images"
Also, we need to edit verbiage on other pages that relate to preference images & order placement to include something about order-specific preferences

Verbiage suggestion:
"Have a specific order that needs to look different then your standard vision? Have specific colors of an object that needs to be matched (i.e invitations, fabric, paint, etc.)? Submit your order specific preference images for our scan techs to match in place of your current preferences on file."
"Please keep in mind that in the winter months we typically run at a 1–2 business day service time. To ensure your order specific preferences are used please submit them prior to your film arriving in lab."


How do I load this page?!

Starting up and ran into this error in the log
2019-09-11 12:12:38 TRACE MercuryClient:173 - Handling packet, cmd: MercuryReq, seq: 5, flags: 1, parts: 2
Exception in thread "handle-packet-25709859" java.lang.IllegalStateException: How do I load this page?!
        at xyz.gianlu.librespot.player.StateWrapper$TracksKeeper.updateWithPage(StateWrapper.java:494)
        at xyz.gianlu.librespot.player.StateWrapper$TracksKeeper.access$600(StateWrapper.java:402)
        at xyz.gianlu.librespot.player.StateWrapper$TracksKeeper$1.response(StateWrapper.java:510)
        at xyz.gianlu.librespot.player.StateWrapper$TracksKeeper$1.response(StateWrapper.java:504)
        at xyz.gianlu.librespot.mercury.MercuryClient.lambda$send$2(MercuryClient.java:96)
        at xyz.gianlu.librespot.mercury.MercuryClient.handle(MercuryClient.java:210)
        at xyz.gianlu.librespot.core.PacketsManager$Looper.lambda$run$0(PacketsManager.java:64)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

Do you have the full log? Also, what were you trying to load and from where (application)?

I do, but the previous logs seems to be irrelevant to this error. Any settings to get more info?
This is starting up librespot-java and connect via the Android Spotify app, playing back this album https://open.spotify.com/album/4oqJ13EemIRGsK7u5JIJef?si=2uu_FQIMT3mFDGkfifGFnw


Wasm: failure in gc.cpp find_first_object

Wasm can cause the assert assert (Align (size (o)) >= Align (min_obj_size)); in find_first_object in gc.cpp.  When this happens size(o) == 0 and execution goes through the logic for searching the previous bricks.  Also a clue perhaps is that o & 2 == 2

Just creating a lot of RhpNewArrayAlign8 is enough to break it.
        var mr = new MiniRandom(57);
        var keptObjects = new object[100];
        for (var i = 0; i < 1000000; i++)
        {
            var r = mr.Next();
            object o;
            o = new long[10000];
            keptObjects[r % 100] = o;
        }

Looks like I've passed the wrong size to RhpGcAlloc and RhpPublishObject, hopefully an easy fix

While the linked PR fixes the above case, this still happens when trying larger projects, e.g. starting a Uno Platform HelloWorld app


Question: Testing Best Prcatice

Hey
First off this is an amazing library and I love it 👍
This is a generate question about how I might go about writing unittest's in my application which uses this library. For example, best practice for testing errors potentially mocking results etc.

Anyway, any pointers in the right direction would be greatly appreciated 😄
Thanks,
Chris

I'm not sure if it helps, but take a look at https://github.com/bsm/multiredis, it defines a commands interface. Alternatively, you can also look into https://github.com/alicebob/miniredis.
Ultimately, it's probably best practice to wrap the redis client in you own struct, test that against an actual redis database and then expose that struct to the rest of your app via an interface:
// DB is a wrapper interface, stub it out in tests of other packages
type DB interface {
  // GetData is the only method it supports
  GetData(id int64) ([]int64, error)
  // Exposing Close is a really good idea
  Close() error
}

// The implementation, using an actual redis client.
// Should be tested against an actual redis server instance or (at least) miniredis
type dbImpl struct {
  *redis.Client
}

// Constructor, returns a DB
func Connect(opt *redis.Options) DB {
  return &dbImpl{Client: redis.NewClient(opt)}
}

// Implementation if the interface method
func (db *dbImpl) GetData(id int64) ([]int64, error) {
  key := fmt.Sprintf("resource:%d", id)
  strs, err := db.Smembers(key).Result()
  if err != nil {
    return nil, err
  }
  nums := make([]int64, len(strs))
  for i, s := range strs {
    num, err := strconv.ParseInt(s, 10, 64)
    if err != nil {
      return nil, err
    }
    nums[i] = num
  }
}

Thank you the pointers @dim
I have ended up writing a simple wrapper interface like this:
type RedisClient interface {
	Get(string) (string, error)
	Set(string, string, time.Duration) (string, error)
	ZAdd(string, ...redis.Z) (int64, error)
	ZRem(string, ...string) (int64, error)
	Close() error
}

type Redis struct {
	c *redis.Client
}

func (r *Redis) Get(key string) (string, error) {
	return r.c.Get(key).Result()
}

func (r *Redis) Set(key string, value string, expr time.Duration) (string, error) {
	return r.c.Set(key, value, expr).Result()
}

// Other methods here

Allowing me to write a fake mockable redis interface in unitests like this:
type FakeRedis struct {
	GetFunc   func(string) (string, error)
	SetFunc   func(string, string, time.Duration) (string, error)
	ZAddFunc  func(string, ...redis.Z) (int64, error)
	ZRemFunc  func(string, ...string) (int64, error)
	CloseFunc func() error
}

func (r *FakeRedis) Get(key string) (string, error) {
	if r.GetFunc != nil {
		return r.GetFunc(key)
	}

	return "", fmt.Errorf("Get %s Error", key)
}

// Other methods here

Allowing my test cases to look like this:
func TestWhatEver(t *testing.T) {
	cases := []struct {
		redisClient db.RedisClient
		item        string
		err         error
	}{
		{
			&testutil.FakeRedis{},
			"foo",
			errors.New("Get key Error"),
		},
	}

	// Loop over cases here
}

So I can basically swap in and out real and fake redis clients as and when needed 😄

I use interfaces in my libs too, e.g. https://github.com/go-redis/rate/blob/v4/rate.go#L14-L16 and https://github.com/go-redis/cache/blob/v3/cache.go#L18-L22

Zombie post, but this is pretty high on google. You can embed an interface inside a struct. Calling any methods from that interface will panic, however, you can then define your own copy of that method.
type MyRedis struct {
    redis.Cmdable
}

func (mr *MyRedis) Set(key string, val interface{}, ttl time.Duration) * redis.StatusCmd {
    // your implementation
}

This struct will work in place of a redis client now, but only for Set calls.


Insert too long integer: 'invalid integer'

Hello, I am using InfluxDB 0.9.2 and I need to insert big integers in my DB, but I have this problem:
When I insert points with tiny int, it works:
curl -i -XPOST 'http://localhost:8086/write?db=dgs' \
--data-binary '--data-binary 'mystats,id=15 netbandwithtx=1000<PHONE_NUMBER>'

But when I insert a big int (like int64), it fails:
curl -i -XPOST 'http://localhost:8086/write?db=dgs' \
--data-binary '--data-binary 'mystats,id=15 netbandwithtx=10000000000000000000<PHONE_NUMBER>'

> unable to parse 'mystats,id=15 netbandwithtx=10000000000000000000<PHONE_NUMBER>': invalid integer

But when I insert the same number in scientific notation it works:
curl -i -XPOST 'http://localhost:8086/write?db=dgs' \
--data-binary '--data-binary 'mystats,id=15 netbandwithtx=1e19<PHONE_NUMBER>'

Is it a bug or it's normal to be not allowed to insert a big number like this?

My bad, 1e19 is a float

@Nurza 1e+19 as an integer exceeds the maximum int64 value of<PHONE_NUMBER>854775807, which is roughly 9e+18. See https://influxdb.com/docs/v0.9/guides/troubleshooting.html#architectural-limits for the limits of the various data types.

I understand my mistake. Thank you for this useful link.


implement minikube class for cluster create/delete/modify/display

WoW! This is an exciting feature!

@312hzeng Let me know when you think you can merge it.

@312hzeng Let us know when you think you can merge it.

Thank you Professor Xu! I think I'll ask Tyler about his suggestions for the code revision regarding class method implementation and related testcases on tomorrow's meeting before this pr can get merged.

great
btw how did you test your feature/PR? @312hzeng

great
btw how did you test your feature/PR? @312hzeng
Thank you for the question, I use pytest to test individual feature.
create cluster:
call the method and check them using minikube profile list for the version, name, num_nodes, etc
delete cluster:
call the method and check them using minikube profile list
display nodes in the cluster:
call create and then call the display method, assert the num_nodes
call delete and then call the display method, expect a runtime error is raised

I think there's more to add to the testcases, I just want to discuss the update with Tyler first tomorrow before I add more testing

BTW the End-to-End Test runs on riverrun, which has been flaky recently. The End-to-End Test may fail due to timeout (24 hrs), I will run it on a cloudlab machine.

ok, thank you for the information

WoW this is a big PR and is opened in Oct 9, 2023! Glad to see that it was not given up but finally merged. Great job @312hzeng and @tylergu !


only macos?

I have a friend running it on linux, but one has to remove the calls for the rumps module...

Look at #13 and #11
As you don't specify which platform you are trying to run, I would subscribe to the #13 and try like they did there. It should run on any platform.


Cannot display all symbols of Default Settings (1.8)

VSCode Version: Code 1.8.0 (38746938a4ab94f2f57d9e1309c51fd6fb37553d, 2016-12-13T17:38:28.425Z)
OS Version: Darwin x64 15.6.0
Extensions: none

With the new appareance of Default Settings, we loose the possibility to view all settings (symbols) using cmd+shift+O.
Moreover, the commands Fold All and Unfold All are not more applicable to Default Settings, only to User/Workspace Settings.

Is it a settings to disable new Default Settings view and restore old one ?

Duplicate of #17376. Having an option for using the old behavior is tracked in #17371.

@pierredewilde As said this is being tracked in #17371, your input over there is much welcome. Thanks.


Update README.md

Do all work for this task in a branch called issue-03
Update the README.md for our home page repo

Updated to the following


[poco] update to 1.10.1

Library name: Poco
New version number: 1.10.1
Other information that may be useful (release notes, etc...)

Duplicated to https://github.com/microsoft/vcpkg/issues/9964


Troubleshooting required checks doesn't explain skipped check behaviour with 'needs'

Code of Conduct

[X] I have read and agree to the GitHub Docs project's Code of Conduct

What article on docs.github.com is affected?
https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/troubleshooting-required-status-checks#handling-skipped-but-required-checks
What part(s) of the article would you like to see updated?
The warnings about skipped checks don't explain that jobs skipped because dependent jobs in their 'needs' clause won't cause required checks to fail.
This is important because user may believe their branches are protected when they are not.
Additional information
No response

@innomatics Thank you for opening an issue and linking it to your PR! ✨


Replace use of unwrap/expect methods with unwrap macro

This change is

Reviewed 21 of 21 files at r1.
Review status: all files reviewed at latest revision, all discussions resolved.

Comments from Reviewable


[Help Wanted] Font Loading

Describe The Problem
So for correct localization support in my plugins, I need to load arbitrary fonts. Working with fonts in ImGui is pain by itself, so no wonder I am having issues.
ImGui recommends to load fonts during initialization. I tried doing so in IPlugin.OnLoad() but that throws an exception on game launch.
try
{
	var fonts = ImGui.GetIO().Fonts; // Line 53

	font = fonts.AddFontFromFileTTF(Path.Combine(Constants.PLUGIN_DATA_PATH, "NotoSansKR-Bold.otf"), 26f, null, fonts.GetGlyphRangesKorean());
	fonts.Build();

	ImGui.SetCurrentFont(font);

	var loaded = font.IsLoaded();
	Log.Info(loaded.ToString());

}
catch (Exception exception)
{
	Log.Error(exception.ToString());
}

Ok, then I tried to do that during runtime inside IPlugin.OnImGuiFreeRender() (once). With exact same code as above it goes without crashes but all ImGui windows stop being rendered at all.
loaded prints True thou.
If I remove ImGui.SetCurrentFont(font), the result is the same.
I call ImGui.PushFont(font) and ImGui.PopFont() inside IPlugin.OnImGuiFreeRender(). If I don't do that, the result is the same.
Is there something that I am missing?
PC Specs

Show/Hide

Motherboard: Asus ROG Strix Z390-H Gaming
CPU: Intel Core i9-9900k
RAM: 32 GB 3200MHz
GPU: Nvidia GeForce RTX 3090 Ti
System and Game SSD: Samsung SSD 970 EVO Plus NVMe M.2 1TB
Plugin Repo SSD: Western Digital Blue SATA M.2 2280 2TB

Environment

Show/Hide

OS: Window 10 Enterprise Version 22H2 (OS Build 19045.3996)
Monster Hunter: World: v15.21.00
SharpPluginLoader: v<IP_ADDRESS>
Nvidia Drivers: v551.76

Game Display Settings

Show/Hide

DirectX 12 API: On
Screen Mode: Borderless Window
Resolution Settings: 2880x1620 (Supersampled down to 1920x1080)
Aspect Ratio: Wide (16:9)
Nvidia DLSS: Off
FidelityFX CAS + Upscaling: Off
Frame Rate: No Limit
V-Sync: On

Game Advanced Graphics Settings

Show/Hide

Image Quality: High
Texture Quality: High Resolution Texture Pack
Ambient Occlusion: High
Volume Rendering Quality: Highest
Shadow Quality: High
Capsule AO: On
Contact Shadows: On
Anti-Aliasing: Off
LOD Bias: High
Max LOD Level: No Limit
Foliage Sway: On
Subsurface Scattering: On
Screen Space Reflection: On
Anisotropic Filtering: Highest
Water Reflection: On
Snow Quality: High
SH Diffuse Quality: High
Dynamic Range: 64-bit
Motion Blur: On
DOF (Depth of Field): On
Vignette Effects: Normal
Z-Prepass: On

Mods and External Tools:

Show/Hide

RTSS Overlay v7.3.4
Reshade 6.0.0 with SMAA.fx
Stracker's Loader v3.0.1
Performance Booster and Plugin Extender v1.3
HunterPie v<IP_ADDRESS>
HelloWorld (an overlay that shows lots and lots of stuff) v10.4
Bow Spread Pattern Fix v1.0
Tic Rate Fix v1.0
Guiding Lands Gathering Indicator v<IP_ADDRESS>
Gems Sorted by Name (Alphabetized Gems) v1.6.1
Reshade Hook v1.0
Endemic Quality (Iceborne Edition) v1.4
Remove censor bad word banned word filter v1.0
Monster Weakness Icon Indicator for Iceborne (Hi-Res) vFinal
Cuter Handler Face Model (Post-Iceborne) aka Make Handler Cuter Again v3.0

Additional Context
Tea Overlay Repo
Better Matchmaking Repo

OnLoad won't work because all DirectX/ImGui related stuff is only initialized during the transition to the title screen. But yeah I'll have a look, I'm not completely sure how exactly fonts work in ImGui either.
It also might take a bit before I get to it because I'm pretty busy at the moment and working on this by myself lol.
What you could try is during the first render call, load the font but with a config and enable MergeMode and specify glyph ranges. (See here)

Yeah, no problem. Whatever time you need and remember to take breaks too!

What you could try is during the first render call, load the font but with a config and enable MergeMode and specify glyph ranges. (See here)

This doesn't work either. Same result, all ImGui windows disappear.
private ImFontPtr Font { get; set; }
private bool IsFontInitialized { get; set; } = false;

private unsafe CustomizationWindow InitFont()
{
	IsFontInitialized = true;

	var fonts = ImGui.GetIO().Fonts;

	var fontConfig = new ImFontConfig();
	fontConfig.MergeMode = 1;

	var fontConfigPtr = new ImFontConfigPtr(&fontConfig);

	// fonts.AddFontDefault(fontConfigPtr); // Uncommenting makes no difference
	Font = fonts.AddFontFromFileTTF(Path.Combine(Constants.PLUGIN_DATA_PATH, "NotoSansKR-Bold.otf"), 26f, fontConfigPtr, fonts.GetGlyphRangesKorean());
	fonts.Build();

	// ImGui.SetCurrentFont(Font); // Uncommenting makes no difference

	var loaded = Font.IsLoaded(); // True
	Log.Info(loaded.ToString());
}

public void OnImGuiFreeRender()
{
	if(!IsFontInitialized) InitFont();

	ImGui.PushFont(Font);
	...
	ImGui.PopFont();
}

I tried doing it inside SPL directly, in Core -> Renderer -> ImGuiRender() before ImGui.NewFrame() and I am getting same results as inside plugin's OnImguiFreeRender().
With the code below, in both cases, the windows don't disappear, thou default font is not actually updated, korean symbols don't work. Calling Build() does make them disappear.
public unsafe void InitFont()
{
	IsFontInitialized = true;

	var io = ImGui.GetIO();
	var fonts = io.Fonts;

	ImFontConfig* config = ImGuiNative.ImFontConfig_ImFontConfig();
	config->MergeMode = 1;

	Font = fonts.AddFontFromFileTTF(Path.Combine(Constants.PLUGIN_DATA_PATH, "NotoSansKR-Bold.otf"), 26f, config, fonts.GetGlyphRangesKorean());
	// fonts.Build();
}

There was a person on ImGui.NET discord who appears to had the same issue. So it's most likely ImGui.NET bug.

Mine:

Have you tried loading the font inside D3DModule::imgui_load_fonts ? If it really is a bug with ImGui.NET then you could also try creating a native component and load the font from there, at least until I manage to find a proper fix for it.

I haven't, I will take a look, thanks!

Loading the font inside D3DModule::imgui_load_fonts worked, as I would expect. I will fiddle with a native component now.
void D3DModule::imgui_load_fonts() {
    const auto& io = *igGetIO();
    ImFontAtlas_Clear(io.Fonts);

    const auto& chunk_module = NativePluginFramework::get_module<ChunkModule>();
    const auto& default_chunk = chunk_module->request_chunk("Default");
    const auto& roboto = default_chunk->get_file("/Resources/Roboto-Medium.ttf");
    const auto& noto_sans_jp = default_chunk->get_file("/Resources/NotoSansJP-Regular.ttf");
    const auto& fa6 = default_chunk->get_file("/Resources/fa-solid-900.ttf");

    ImFontConfig* font_cfg = ImFontConfig_ImFontConfig();
    font_cfg->FontDataOwnedByAtlas = false;
    font_cfg->MergeMode = false;

    ImFontAtlas_AddFontFromMemoryTTF(io.Fonts, roboto->Contents.data(), (i32)roboto->size(), 16.0f, font_cfg, nullptr);
    font_cfg->MergeMode = true;
    ImFontAtlas_AddFontFromMemoryTTF(io.Fonts, noto_sans_jp->Contents.data(), (i32)noto_sans_jp->size(), 18.0f, font_cfg, s_japanese_glyph_ranges);
    ImFontAtlas_AddFontFromMemoryTTF(io.Fonts, fa6->Contents.data(), (i32)fa6->size(), 16.0f, font_cfg, icons_ranges);

    ImFontAtlas_AddFontFromFileTTF(io.Fonts, "D:/Programs/Steam/steamapps/common/Monster Hunter World/nativePC/plugins/CSharp/BetterMatchmaking/data/NotoSansKR-Bold.otf", 26.0f, font_cfg, ImFontAtlas_GetGlyphRangesKorean(io.Fonts));

    ImFontAtlas_Build(io.Fonts);

    ImFontConfig_destroy(font_cfg);
}

Actually, this issue seems to be related: https://github.com/ocornut/imgui/issues/2311.

Okey, so. I don't know how to link ImGui to a Native Component, so I tried to modify existing SPL code. I assume I need to call rebuild the texture and ImGui_ImplDX12_CreateFontsTexture() does everything I need. It calls ImFontAtlas_GetTexDataAsRGBA32 which internally calls ImFontAtlas_Build, creates font atlas texture and sets the id for it:  ImFontAtlas_SetTexID.
In Managed -> Core -> Rendering -> Renderer I did this:
private static ImFontPtr Font { get; set; }

private static bool IsFontInitialized { get; set; } = false;

private static unsafe void InitFont()
{
	IsFontInitialized = true;

	var io = ImGui.GetIO();
	var fonts = io.Fonts;

	ImFontConfig* config = ImGuiNative.ImFontConfig_ImFontConfig();
	config->MergeMode = 0;
	config->FontDataOwnedByAtlas = 0;

	// Maybe I will need this, idk
	fonts.Clear();

	fonts.AddFontDefault();
	config->MergeMode = 1;

	Font = fonts.AddFontFromFileTTF(@"D:\Programs\Steam\steamapps\common\Monster Hunter World\nativePC\plugins\CSharp\BetterMatchmaking\data\NotoSansKR-Bold.otf", 26f, config, fonts.GetGlyphRangesKorean());

	// Only doing DX12 for now for simplicity
	ImGuiExtensions.RecreateFontTextureDX12();
}

[UnmanagedCallersOnly]

internal static unsafe nint ImGuiRender()

if(Input.IsPressed(_menuKey))
			_showMenu = !_showMenu;
		if(Input.IsPressed(_demoKey))
			_showDemo = !_showDemo;

		if(!IsFontInitialized) InitFont();

		var io = ImGui.GetIO();
		var anyFocused = ImGui.IsWindowFocused(ImGuiFocusedFlags.AnyWindow);
		var anyHovered = ImGui.IsWindowHovered(ImGuiHoveredFlags.AnyWindow);
		io.MouseDrawCursor = anyFocused || anyHovered;
		io.DisplaySize = _viewportSize;

		if(_showMenu)
			ImGui.GetStyle().Alpha = anyFocused ? 1.0f : 0.5f;

		ImGui.NewFrame();
		...
}

In Managed -> Core -> Rendering -> ImGuiExtensions I added this:
public static void RecreateFontTextureDX12() => InternalCalls.RecreateFontTextureDX12();

In Native -> Header Files -> mhw-cs-plugin-loader -> Modules -> ImGuiModule.h I added this:
private:
    static void recreate_font_texture_dx12();

In Native -> Source Files -> mhw-cs-plugin-loader -> Modules -> ImGuiModule.cpp I added this:
#include "imgui_impl_dx12.h"

void ImGuiModule::initialize(CoreClr* coreclr) {
	coreclr->add_internal_call("RecreateFontTextureDX12", &ImGuiModule::recreate_font_texture_dx12);
	...
}

void ImGuiModule::recreate_font_texture_dx12() {
	// Line that produces the error:
    ImGui_ImplDX12_CreateFontsTexture();
}

This gives me this error:
>ImGuiModule.obj : error LNK2001: unresolved external symbol "void __cdecl ImGui_ImplDX12_CreateFontsTexture(void)" (?ImGui_ImplDX12_CreateFontsTexture@@YAXXZ)
1>E:\GitHub\SharpPluginLoader\x64\Release\mhw-cs-plugin-loader.dll : fatal error LNK1120: 1 unresolved externals

Sorry, I am not very familiar with C++. I am extra allergic to declaration/implementation split and dependency hells. xd

ImGui_ImplDX12_CreateFontsTexture is declared static meaning you cannot access it from outside imgui_impl_dx12.cpp. Only if you remove the static can you do that.

Realistically however you should not be calling that yourself. You should call ImGui_ImplDX12_InvalidateDeviceObjects instead, which will lead to the font atlas being rebuilt on the next frame. Be sure to do this before the NewFrame call.

Alternatively, this PR seems to be a more generic solution to this problem. I could potentially merge this into my fork of imgui.

Right now I am crashing on ImGui_ImplDX12_InvalidateDeviceObjects() in ImGuiModule.cpp. Commenting it out = no crash.
In Managed -> Core -> Rendering -> Renderer:
private static ImFontPtr Font { get; set; }

private static bool IsFontInitialized { get; set; } = false;

private static unsafe void InitFont()
{
	IsFontInitialized = true;

	var io = ImGui.GetIO();
	var fonts = io.Fonts;

	ImFontConfig* config = ImGuiNative.ImFontConfig_ImFontConfig();
	config->MergeMode = 0;
	config->FontDataOwnedByAtlas = 0;

	// Maybe I will need this, idk
	// fonts.Clear();

	fonts.AddFontDefault();
	config->MergeMode = 1;

	Font = fonts.AddFontFromFileTTF(@"D:\Programs\Steam\steamapps\common\Monster Hunter World\nativePC\plugins\CSharp\BetterMatchmaking\data\NotoSansKR-Bold.otf", 26f, config, fonts.GetGlyphRangesKorean());

	// Only doing DX12 for now for simplicity
	Log.Info("Pre-InvalidateDeviceObjectsDX12");
	ImGuiExtensions.InvalidateDeviceObjectsDX12();
	Log.Info("Post-InvalidateDeviceObjectsDX12");
}

[UnmanagedCallersOnly]
internal static unsafe nint ImGuiRender()
{
	if(Input.IsPressed(_menuKey))
		_showMenu = !_showMenu;
	if(Input.IsPressed(_demoKey))
		_showDemo = !_showDemo;

	if(!IsFontInitialized) InitFont();
	...
	ImGui.NewFrame();
	...
}

In Managed -> Core -> Rendering -> ImGuiExtensions:
public static void InvalidateDeviceObjectsDX12() => InternalCalls.InvalidateDeviceObjectsDX12();

In Managed -> Core -> InternalCalls:
public static delegate* unmanaged<void> InvalidateDeviceObjectsDX12Ptr;

public static void InvalidateDeviceObjectsDX12() => InvalidateDeviceObjectsDX12Ptr();

In Native -> Source Files -> mhw-cs-plugin-loader -> Modules -> ImGuiModule.cpp:
#include "imgui_impl_dx12.h"
#include "Log.h"

void ImGuiModule::initialize(CoreClr* coreclr) {
	coreclr->add_internal_call("InvalidateDeviceObjectsDX12", &ImGuiModule::invalidate_device_objects_dx12);
	...
}

void ImGuiModule::invalidate_device_objects_dx12() {
    dlog::info("ImGui_ImplDX12_InvalidateDeviceObjects"); // Never printed
    ImGui_ImplDX12_InvalidateDeviceObjects(); // Crashes here
}

Ok I got it working with calling ImGui_ImplDX12_CreateDeviceObjects().

Btw, would be nice if the SPL options in the toolbar were saved in a config.

I ended up choosing a different approach entirely, which is implemented in cfb9e11dfe2fcd99c9bec63139438678997eece8.
The new system lets you submit your own fonts inside OnLoad using Renderer.RegisterCustomFont.
public static unsafe void RegisterFont(string name, string path, float size, nint glyphRanges = 0,
    bool merge = false, int oversampleV = 0, int oversampleH = 0)

Example:
// Inside OnLoad
Renderer.RegisterCustomFont("My Font", @"C:\Windows\Fonts\times.ttf", 16f);

// Inside OnImGuiRender
ImGui.PushFont(Renderer.GetFont("My Font"));
ImGui.Text("Sample Text");
ImGui.PopFont();

Using a more unique name than "My Font" is recommended because it is using a dictionary behind the scenes, so try to avoid name collisions with other plugins.
For specific glyph ranges do not use the GetGlyphRanges... functions provided by ImFontAtlas, use Renderer.GetGlyphRanges instead. It provides all the default glyph ranges provided by ImGui as well. If you want to use custom glyph ranges, you can use GlyphRangeFactory.CreateGlyphRanges to allocate persistent arrays that can be passed directly to RegisterCustomFont.

Works well so far, thank you!

GlyphRangeFactory is internal so it's not accessible.

Whoops, let me fix that

Not sure if this is what's causing it and it might not be communicated properly, but you shouldn't free the glyph ranges until after the font was loaded (i.e. the first time OnImGui(Free)Render was called).
In fact, I'm not sure if you should destroy them at all. If anything, do it inside OnUnload. Should make that a bit clearer. And yes, merging seems to always be weird.
Another thing, you don't need to manually add the (0, 0) entries for your glyph ranges, those are added automatically.

Oopsies, you are right. I somehow thought that font is built on each RegisterFont, which is extremely silly of me.
Pr9bably, I got confused because I saw the method description saying to destroy the ranges, as well as saying to provide null terminator.

Creates a new set of glyph ranges from the provided ranges, with a null terminator at the end.

I read it as if null terminator should belong to the provided ranges.

It works now. Null terminator was the issue.

I will close this issue if there are no more problems.

Ok, sorry for bumping. Encountered an issue. Didn't test properly in the beginning.
The font initialization is called again when going back to main menu from a session, and if any plugin loads a font, it crashes.

Crash.

DinkDonk

This should now be fixed as of 734e9f84f3c9a598db8ab3736fdc617c751d6994, haven't gotten around to fixing this until now.


Error on Syntax Highlighting for HTML attributes

Theme Issue: Material Theme (default) Color Scheme
OS: Windows 10 (64x)
Sublime Text version: Sublime Text 3 (64x)
Materialize version: last update
Description of issue: Error on Syntax Highlighting for HTML attributes, when put a PHP tag into a HTML tag.
Steps to reproduce: Put a PHP tag into HTML tag:
<a href="<?=$somelink?>" class="btn btn-link">Some Link

Screenshot of issue:

Hey there @KaduAmaral, it looks like you're using a color scheme from Material Theme, not Materialize. You'll probably want to open this issue over there.

OMG, it's true, sorry... :confounded:

I've tried use Materialize instead of Material Theme, and happens the same bug.

Thanks for letting me know. Which color schemes cause this issue? And can you paste the code you've been trying out so I can also use it?

I removed all themes and restart sublime text some times and after I install the themes again the problem was solved. Thanks.


UnicodeEncodeError: 'charmap' codec can't encode characters in position 122-241:

UnicodeEncodeError: 'charmap' codec can't encode characters in position 122-241: character maps to
*** You may need to add PYTHONIOENCODING=utf-8 to your environment ***
This error seems to randomly appear and does not go away. No idea what causes it. Sometimes the prompts work, and other times the same prompt triggers that error, and just continues to get worse after it starts.

Ugh. I'm on it.


Export MarketState and Slab functions to read bid/ask data on-chain

The serum_dex package has helper functions for reading bid/ask data from the slab tree, but some of them are not public. This PR makes these functions and associated structs and enums public. Not a breaking change.
Is it useful? Yes. We need these functions in production.
Edit: more functions from critbit.rs made public.

Duplicate of #121

just an fyi i I did a similar set of changes that got reverted as these changes make types public which should not be:

https://github.com/project-serum/serum-dex/pull/106
https://github.com/project-serum/serum-dex/pull/108

In order to read bid/ask data on-chain all that is needed are the changes in this pr, as you can iterate over the bid/asks with just this set of changes.

just an fyi i I did a similar set of changes that got reverted as these changes make types public which should not be:

Mark Various Functions, And Enums Public For On-Chain Price Calculations #106
Revert "Mark Various Functions, And Enums Public For On-Chain Price Calculations" #108

In order to read bid/ask data on-chain all that is needed are the changes in this pr, as you can iterate over the bid/asks with just this set of changes.

Right now I need nodes() or parts() function at minimum to iterate over leaf nodes. Not very efficient since inner node data is not needed. There's a way of iterating without exposing nodes()?
let asks_slab = market_data.load_asks_mut(&ctx.accounts.market_accounts.asks)?;
let slab_nodes = asks_slab.nodes();

for current_node in slab_nodes.iter() {
        match current_node.as_leaf() {
        None => {}
        Some(leaf_node) => {
            // Some logic
        }
    }
}

how to load bids / asks list in solana program? plz help

@armaniferrante @bonedaddy exporting these functions will help devs a lot. This PR should be reconsidered. @bigdefidev @zhouhaw as in interim measure you can fork the repo, export these functions and import the new SDK crate in your rust project using git.

I concur, being able to pull the bids/asks off mutably via remove_min and remove_max is sufficient, but it's pretty awkward, and there seems to be no reason not to allow more direct access to the data structure?  After all, it seems as though anyone could cut & past the entire critbit.rs and overlay it on the account data anyway ...?


Docs: add focus visible outline to navbar's nav links and toggler

Description
This PR adds a focus visible outline to navbar's nav links and toggler. The outline is the same as the one used when focusing the navbar brand logo for consistency.
Thix fix only works for Chrome and Firefox. Safari's navbar brand and skip links focus visible already have a contrast issue in the main branch; the outline rules not being handled the same way by the browser.

Motivation & Context
In our current documentation, it's almost impossible to see the focused items in the navbar when navigating with the keyboard.
Before:

Type of changes

[x] Enhancement (non-breaking change which adds functionality)

Checklist

[x] I have read the contributing guidelines
[x] My code follows the code style of the project (using npm run lint)
[x] My change introduces changes to the documentation
[x] I have updated the documentation accordingly
(N/A) I have added tests to cover my changes
[x] All new and existing tests passed

Live previews

https://deploy-preview-39825--twbs-bootstrap.netlify.app/

Actually, using white might look better in all browsers?

The idea of the PR was mainly to be a quick fix: to have the same focus visible rendering for the nav links, the .navbar-brand and the skip links.
This fix only works for Chrome and Firefox.
Safari was not handled because the .navbar-brand and the skip links have already a contrast issue; the outline not being handled the same way for Safari.

We could tweak the whole rendering obviously for multi-browsers consistency, but it would take more time.

I'm just not sure the blue color along with white is good. Can't we just use white? Or will not look good in some cases?

I'm just not sure the blue color along with white is good. Can't we just use white? Or will not look good in some cases?

I think we could fine-tune the outline to be a white one-line (maybe with a bigger width) instead of two in the documentation header only, including skip links, since the background colors are known and with a dark tint both in light and dark modes.
Or we could do something more generic in the doc, like what's done in our Boosted documentation: a general rule that uses a double outline (black and white) that works everywhere and doesn't need fine-tuning: see https://boosted.orange.com/. With black and white double-outline for security, we're pretty sure that one color will be contrasted enough whatever the context. It's maybe less nice visually but works well overall.

It's been ages since I dived into the various styles, but I'm just wondering what kind of strange overrides we have in place that are causing the issue in Chrome/Firefox in the first place? Would just removing those (rather than adding explicit extra styles) work?
I'm assuming the issue in Safari is that "Apple knows best" and just always goes with its default blue outline, regardless? And yes, could outline-color: white or similar work (as a patch just for the navbar perhaps)?


Separate client certificates

The consul documentation is strongly against using server certs on clients:
In order to authenticate Consul servers, servers are provided with a special certificate - one that contains server.dc1.consul in the Subject Alternative Name. If you enable verify_server_hostname, only agents that provide such certificate are allowed to boot as a server. Without verify_server_hostname = true an attacker could compromise a Consul client agent and restart the agent as a server in order to get access to all the data in your cluster! This is why server certificates are special, and only servers should have them provisioned.
https://learn.hashicorp.com/consul/advanced/day-1-operations/certificates#step-2-create-individual-server-certificates
It would be nice to be able to use separate certs for agents.

You can do this with inventory host_vars, add them to your inventory file to look something like this:
consul1.consul consul_node_role=bootstrap consul_tls_server_cert=consul1.pem consul_server_key=consul1.pem
consul2.consul consul_node_role=server consul_tls_server_cert=consul2.pem consul_server_key=consul2.pem
etc...


Added listAssets method for build tools.

Hi.
Background: I use a tool named assetgraph-builder for packing my application for production. It relies on listAssets method of systemjs plugins to work correctly. You can see such a function in plugin-css here.
Taking inspiration from plugin-css I've added listAssets method to this plugin as well. Hoping it will be merged so that I don't have to keep a fork.

@Munawwar thank you! I released it as v1.8.2


Announce-list instead of announce

What steps will reproduce the problem?

fill both lists  for add and remove trackers
update torrent files with -U3 key

What is the expected output? What do you see instead?
i wanted to delete all dead trackers and add 51 fresh working trackers for each .torrent file
What version of the product are you using? On what operating system?
1.33.0 beta 5
шindoшs 7
Please provide any additional information below.
nothing have changed, I don't see all 197 trackers in my torrent-client, because they all are not in [announce] part, but in [announce-list]!!!  Is this normal? How to do this right? hash into resume.dat I deleted with bencode.

What torrent client/version are you using? utorrent, rtorrent, Qbittorrent,  etc. That is not able to read the multiple tracker added by bittorrent-tracker-editor.
multiple trackers are always place in the 'announce-list'
'announce' can only contain one URL tracker.


doc sorted issues

doc sorted issues
Description：
when I open the page of doc Archive， I found that there are some problems with the page rank.
Preview Pics：

this issue has been solved by @panyunyi97.


GH-34785: [C++][Parquet] WIP: Allow writing BloomFilter for specific column

Rationale for this change

Currently we allow reading bloom filter for specific column and rowgroup, now this patch allow it writing BF
What changes are included in this PR?
Allow writing bf:

[ ] Add WriterProperties config for writing bloom filter, including bf and (per-rowgroup) ndv estimation.
[ ] Add BloomFilterWriter for parquet
[ ] From FileSerializer to ColumnWriter, adding bloomfilter
[ ] Ensure Bloom Filter info is written to the file
[ ] Testing logic above

Are these changes tested?
Will test

Are there any user-facing changes?
User could create BF later

Closes: #34785

Will close and reopen a new pull request for this


Version 0.8.4 marker focus=true not working

When using 0.8.3 and marker focus = true, the popup shows up and I got no error on console. However, updating to 0.8.4, the same code shows error    [AngularJS - Leaflet] Popup is invalid or does not have any content. and popup marker initialize hidden on map.
http://jsfiddle.net/mzowsqzb/ - Check dev console

Fixed in master by this PR https://github.com/tombatossals/angular-leaflet-directive/pull/813

Test using master: OK!
Working again.
Thank you.

I might cut a new release today but I still need to add cgats commit msg and bump the current milestone work.

@jessertaylor just including you so u know what is going on.

:+1:


Can't retrieve indoor or outdoor temperature for MAW12V1QWT (U Inverter Window A/C)

Msmart returns 0 degress for both indoor and outdoor temperature. Also returns an incorrect target temperature:
{'id': '1d0a0100000d', 'name': '<IP_ADDRESS>', 'power_state': True, 'prompt_tone': False, 'target_temperature': 25, 'operational_mode': <operational_mode_enum.cool: 2>, 'fan_speed': <fan_speed_enum.Auto: 102>, 'swing_mode': <swing_mode_enum.Off: 0>, 'eco_mode': False, 'turbo_mode': False, 'indoor_temperature': 0.0, 'outdoor_temperature': 0.0}
This is passing through to hass in a strange way, as well:

With current temperature showing up incorrectly (probably by converting 0C to 32F) and showing a weird temperature set number.

you add this to your configuration.yaml and show me the debug log
logger:
  default: info
  logs:
    msmart: debug

Hi Mac,
This snippet represents the pattern of msmart data that appear in the logs. The full log file is huge and contains a lot of unrelated data. Is this sufficient?
2020-07-17 18:52:55 DEBUG (SyncWorker_0) [msmart.packet_builder] Finalize request data: aa20ac00000000000003418100ff03ff0002000000000000000000000000371223
2020-07-17 18:52:55 DEBUG (SyncWorker_0) [msmart.lan] Sending to <IP_ADDRESS>:6444 5a5a0111680020000000000009373412110714141d0a0100000d00000000000000000000000000006b000a76e27eed2c3647e57d8602df8b5d83c3d3bf05b1f7b20afd3884fc5234fabd9611a01068eac9c473549748254266a68f44cad7bfb785046231be43e2bc
[...]
2020-07-17 18:53:03 INFO (SyncWorker_0) [msmart.lan] Couldn't connect with Device <IP_ADDRESS>:6444
2020-07-17 18:53:03 DEBUG (SyncWorker_0) [msmart.device] refresh - Recieved from <IP_ADDRESS>, 1d0a0100000d:
[...]
2020-07-17 18:53:12 DEBUG (SyncWorker_7) [msmart.packet_builder] Finalize request data: aa20ac00000000000003418100ff03ff00020000000000000000000000000c8cd4
2020-07-17 18:53:12 DEBUG (SyncWorker_7) [msmart.lan] Sending to <IP_ADDRESS>:6444 5a5a01116800200000000000120c3512110714141d0a0100000d00000000000000000000000000006b000a76e27eed2c3647e57d8602df8b8b688a2805c90be589e77c77786e94e5beb10a3f262d838d74d1930679f6ac102743cd448d29e435771156f0950972ab
etc...
Thanks again.

I'm using a similar model, and it appears to use a new protocol that isn't supported yet. I have been working on adding support. If you are willing, create a network capture of the communication between the AC and the cloud using a tool such as WireShark or tcpdump. This data will assist in the reverse engineering of the new protocol.

@kueblc Between the AC and the cloud or the AC and my phone? AC<->Cloud communication is encrypted. Does the AC do SSL cert validation or can it just be MITM'd with a fake certificate?
I'm poking around a bit myself:

Decompiled the Android APK to get the new SDK. Function names are obfuscated. The message builder algorithm is a Rube Goldberg machine of magic strings and external function calls. Haven't finished sifting through that.
Tried exploring an alternate approach: replacing the Smart Kit USB dongle with an ESP8266. I took a firmware dump of the Smart Kit firmware and sniffed some of the UART comms between the Smart Kit and the AC itself, but I may be in over my head here. For what it's worth, it looks like UART communication is much simpler than communication over IP.

What have you found on your end?
AC->Phone Data Captures
(UDP) 837000b8200f04085a5a0111a8007a800000000000000000000000001d0a0100000d00000000000000000000000000008af22ba9782309b82db07399f95b7af2808bcfa840ddc318ec2202e3183205e5c05eadba650c040ae988e9dc770d1155bc3d108ec92a744b5dcd3518efacc8a3128d6ffcfaabb718deceafbd06021b4b0305a504e9e35c553636c63a1e9cdd21f31443d17c3aac03a7656614ae1dca44d899b6eb315e5e6c17a90e883249393f7679c95491ded5cb6fabd73057d8717d
(UDP) 837000b8200f04075a5a0111a8007a800000000000000000000000001d0a0100000d00000000000000000000000000008af22ba9782309b82db07399f95b7af2808bcfa840ddc318ec2202e3183205e5c05eadba650c040ae988e9dc770d1155bc3d108ec92a744b5dcd3518efacc8a3128d6ffcfaabb718deceafbd06021b4b0305a504e9e35c553636c63a1e9cdd21f31443d17c3aac03a7656614ae1dca44d899b6eb315e5e6c17a90e883249393f7679c95491ded5cb6fabd73057d8717d
(TCP) 8370008e2063c0307e882647aa13ce72fc4fac68bdd3e6cc05505536d8cfb24024a7a3c7ea4b3492fc9e546e876e9996a7402a2fd2d900531db368b6368fe0969224cb6857925fad74eb2a34f84ae1051a749188bcebac444764e23ca5a66d54a1b7552061d63faa01985f0e0b58aab0a715aa0d85d86f37a880dfb04fdd6ebc4aae3d1fd303b7bb4144b897152a8c7f3f3d82572abd
Phone->AC Data Captures
(TCP) 8370008e206680f428a6da8dd326b6176e18b10fc4842550dcffe4b776cf4ae2b0184cff68ba19c7844b541e18d8d54500a8c85b8aa2ddf33883bbc7f2d41338d9b6a3acc831623a9b3a2dda7993a7ccdcd9c96a8958b6e2fa4f1467c197c81cccd460491a3f6280a9d317be497abaaaca68fc61a4e146d63d41b41dd5ea85bb1c53a6756137d48754fb097813bd36f345c435d3d6ae
(TCP) 8370008e20660fd3da3cb0ec713f7055cbd0f14a3157b8a8a0bc00bca06cd7e27d2367875e33f2fd379eda27503d0c0bba8f0fe6df8216b5e312ea1ce83fd6fb463608e3646dd6322d2d662b999d869c13447c3b0cbc566be6572b992edd9573b16956b870d3ae5e983325346a1ae837a899a24aa87f5bc1e3fff38f856b0c8cfc86cb48956bdc28eb72a0d523eb4c7097fc590bbbbd
Smart Kit <-> AC Data Captures
UART Capture.xlsx
Unfortunately, I didn't make a note of how I connected the logic analyzer 🤦♂. Serial 1 / Serial 2 refer to UART TX / RX channels. One is for comms from the AC, the other is to the AC.

Between the AC and the cloud or the AC and my phone?

AC and cloud. Trying to understand the cloud handshake. AC and phone has been solved.

AC<->Cloud communication is encrypted. Does the AC do SSL cert validation or can it just be MITM'd with a fake certificate?

They thought they were being sneaky by putting the traffic over port 443, but it is not actually SSL/TLS. There are no certificates. The protocol is the same 8370 protocol, just with a different handshake.

What have you found on your end?

I have also reversed engineered the Android SDK and successfully replicated the local communication. See https://github.com/kueblc/midea-msmart/tree/support-8370
Others are trying the second approach as well, replacing the WiFi hardware.
Join the Telegram group where we are discussing our ideas and progress. https://t.me/joinchat/BhU6LRytPXLsiqTIar0jqg

The new version already supports 8370. Please Try.


Fix and simplify CI setup

The problem with the documentation setup introduced in #94 was that the actions were improperly specified. That is fixed in this commit.
In addition, the following changes were made to simplify the setup, bringing it more in line with Example.jl (I actually copied the file from there and made individual changes) and most other Julia packages:

The cronjob for running tests has been removed; it doesn't provide meaningful benefit atop running on PRs, tags, and pushes to main.
The concurrency specification has been removed. I believe what's specified is actually the default behavior.
include mentions a version check and branch protection but neither are present (I assume this was copied from elsewhere) so that step has been removed.
The separate JuliaNightly CI has been incorporated back into the regular CI setup as an include step. This avoids duplication.
https://github.com/JuliaRegistries/TagBot provides a template in its README which includes a few more items not present in the one here. Those have been added.

Hopefully these changes will make things more consistent and easier to maintain going forward.

Nice, CI is running! 🙂

Thank you very much for your help! I'll correct the error.


Update dependencies and fix out of the box testing

Resolves parts of #48 and #47.

Update tap to ^14.6.1 in order to resolve many security issues
Update log4js to ^5.0.0 in order to resolve more security issues
Explicitly use the en_US locale in tests
Add the ilib-loctool-javascript dev dependency to allow out of the
box testing to work

🎉

Node 6 does not support log4js 5, so I made my own PR with log4js 4 instead:
https://github.com/iLib-js/loctool/pull/63


Complete example file insufficiently documented

Description
Currently the example examples/complete/main.tf shows a lot of features and it is hard to tell whether some of them are examples of possibilities vs best practice. Eg kms + encryption of secrets is a best practice, whereas I presume that the node security groups are the opposite (they open pathways that should only be available in exceptional circumstances).
I would like to submit a PR with comment placeholders where clarifications are needed, then we could use the PR discussion to help me figure out what to write. Does that work?

[x ] ✋ I have searched the open/closed issues and my issue is not listed.

Versions

Module version [Required]: 18.29

Reproduction Code [Required]
Look at examples/complete/main.tf
Expected behavior
Many lines in that file should have a comment explaining purpose
Actual behavior
No comments explaining why certain configuration elements are used, and the description of associated inputs is insufficient to figure it out.

As we have stated here, the examples are not representative of "best practices" and its still up to users to know how they should configure the module to suit their workload and requirements. We will have some changes coming soon around this but the tl;dr is:

Reference https://github.com/clowdhaus/eks-reference-architecture
Reference https://github.com/aws-ia/terraform-aws-eks-blueprints

Keeping this open until I can see the "changes coming soon" mentioned by @bryantbiggs

It is coming in v19 https://github.com/terraform-aws-modules/terraform-aws-eks/pull/2250/files#diff-b335630551682c19a781afebcf4d07bf978fb1f8ac04c6bf87428ed5106870f5R25


Fixing gvr-cubemap reflection issue

Fixes reflection cube for vulkan.
Binding location for texture and location for normal was wrong.
Additionally fixing it on Note4. Adding mediump to samplerCube fixes the reflection.
GearVRf-DCO-1.0-Signed-off-by: Abhijit Jagdale<EMAIL_ADDRESS>

Planning to merge on Friday


Monorail traffic lights should not affect pedestrian lights

Monorails do not interfere with pedestrian crosswalks, thus they should not affect automatic pedestrian lights.

moved


Missing build instructions/dependencies

We can not find any information on package dependencies or how to build this software under Linux. The script build-all-deb.sh fails with cryptic error messages, then asks for super-user password. Also, the script creates a packages directory outside the repository's folder.
~/git/voxelsdk(master)$ ./build-all-deb.sh 0.6.7
Linux
CMake Error at /usr/share/cmake-3.5/Modules/FindPackageHandleStandardArgs.cmake:148 (message):
  Could NOT find SWIG (missing: SWIG_EXECUTABLE SWIG_DIR)
Call Stack (most recent call first):
  /usr/share/cmake-3.5/Modules/FindPackageHandleStandardArgs.cmake:388 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake-3.5/Modules/FindSWIG.cmake:75 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  Voxel/SWIG/CMakeLists.txt:5 (FIND_PACKAGE)

-- Configuring incomplete, errors occurred!
See also "/home/twelti/git/voxelsdk/build/CMakeFiles/CMakeOutput.log".
make: *** No rule to make target 'clean'.  Stop.
make: *** No targets specified and no makefile found.  Stop.
CPack Error: Cannot find CPack config file: "CPackConfig-*.cmake"
[sudo] password for twelti:
cp: cannot stat '*0.6.7*.deb': No such file or directory
tar: *.deb: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors

Please provide information on building under linux, since the prebuilt binary does not work.

Our build instructions for Linux are here:
https://github.com/3dtof/voxelsdk/wiki/Build-from-source-on-Linux
Some more dependencies are listed here:
https://github.com/3dtof/voxelsdk/wiki/Installation-on-Linux
Our target platform is Ubuntu 14.04 LTS, and there may be issues on Ubuntu 16.04 due to the default system python version being python3 instead of python2.


Add method to chart only top processes

Per comment in #20 add a way to only chart the top processes rather than all of the processes.

It's only picking the top processes based on CPU. You could still use this with the SIZE data type but it would be size of the top CPU users, not necessarily the top memory users.
I could modify this to have one for CPU and one for memory.

Added another pseudo-type for memory. Now use $TOP_PROCESSES_BY_CPU or $TOP_PROCESSES_BY_MEMORY.


Script to analyse the dependencies bundle

The current analyze script only analises the /src code. This adds another script to also analyze the 3rd party dependencies bundle which is in my opinion even more important to analyze.

In the meantime, a new version of source-map-explorer come out. It's able to analyze multiple bundles at once, so I will adjust the PR accordingly


[Bug]: Arrango: User gets error message if the user taps device enter/ return button after renaming the default datasource name

Is there an existing issue for this?

[X] I have searched the existing issues

Description
Arrango: User gets error message if the user taps device enter/ return button after renaming the default datasource name
Steps To Reproduce
Steps:

Click to add new arrango data source
edit the default name
Press return button from laptop/ device

Observe - There is an error message

Public Sample App
No response
Issue video log
No response
Version
Release v1.9.5

@sondermanish seems like a server issue, can you take a look?

Will be fixed with #20025


Code interpreter does not detect usage of variables in Python formatted strings.

Type: Bug
id = 0x30
err = 3
print(f"Failure by {id} with code {err}")

As id and err are only referenced in this formatted string, the interpreter thinks that they are not referenced.
VS Code version: Code 1.79.0 (b380da4ef1ee00e224a15c1d4d9793e27c2b6302, 2023-06-07T14:26:35.552Z)
OS version: Windows_NT x64 10.0.19042
Modes:

System Info

Item
Value

CPUs
Intel(R) Core(TM) i7-10850H CPU @ 2.70GHz (12 x 2712)

GPU Status
2d_canvas: enabledcanvas_oop_rasterization: disabled_offdirect_rendering_display_compositor: disabled_off_okgpu_compositing: enabledmultiple_raster_threads: enabled_onopengl: enabled_onrasterization: enabledraw_draw: disabled_off_okvideo_decode: enabledvideo_encode: enabledvulkan: disabled_offwebgl: enabledwebgl2: enabledwebgpu: enabled

Load (avg)
undefined

Memory (System)
31.75GB (19.95GB free)

Process Argv
--crash-reporter-id e4f75608-57bd-4362-a8d4-cdb8caef1f00

Screen Reader
no

VM
0%

/extPython

It looks like this is caused by the Python extension. Please file the issue to the Python extension repository. Make sure to check their issue reporting template and provide them relevant information such as the extension version you're using. See also our issue reporting guidelines for more information.
Happy Coding!


Gap between the main view and the navigation

How can I remove the gap between a view and the bottom navigation?
The FragmentContainerView is constrained app:layout_constraintBottom_toTopOf="@+id/nav_view" where the nav_view is the CurvedBottomNavigationView, in this case there is a white gap.
I cant set  app:layout_constraintBottom_toBottomOf="parent" cause I have some recycler view and the last item when I scroll is invisible

I don't know if I fully understand your problem, but the white gap may the result of the shadow. I think for your case it would be best to use app:layout_constraintBottom_toBottomOf="parent" and use give bottom padding equal to the height of the CurvedBottomNavigationView and then set clipToPadding to false. This way, the list items will appear behind the BottomNavigation and the last item will be visible as we have set the padding. Let me know if that fixes your issue. You can also attach the picture of the white gap so that I can find if there is any bugs in the library.

I did as you suggested, so I set the bottom padding of the view to 56dp, and everything is displayed correctly. Thank you

Glad to hear that, I'm closing this issue.


Log User info on effector invocation via REST API

Add user information

Mark's happy; merging.


Quick Fix info inconsistent when offering to import a UMD declaration.

TypeScript Version:  2.4.0 / nightly (2.5.0-dev.20170816)
To Reproduce:
C:\Source\import-quick-fix-issue> npm install -D typescript@next
C:\Source\import-quick-fix-issue> tsc --init
C:\Source\import-quick-fix-issue> npm install --save lodash @types/lodash
C:\Source\import-quick-fix-issue> 'export const chain = _.chain;'> index.ts
C:\Source\import-quick-fix-issue> code-insiders .

Open in Visual Studio Code, move cursor to _, click the 💡, and observe that the following quick fix info is displayed

Expected behavior:
If --allowSyntheticDefaultImports is true the quick fix info remains the same and the result is
import _ from "lodash";
export const chain = _.chain;

If --allowSyntheticDefaultImports is false the quick fix info changes to

and the result is
import * as _ from "lodash";
export const chain = _.chain;

Actual behavior:
Regardless of the values specified for --module and --allowSyntheticDefaultImports, the quick fix info is always

and the result is always
import * as _ from "lodash";
export const chain = _.chain;

Ideal behavior: 😃
If --allowSyntheticDefaultImports is true the quick fix info remains the same and the result is
import _ from "lodash";
export const chain = _.chain;

If --allowSyntheticDefaultImports is false and --module is either commonjs, amd, or umd the quick fix info is changed to

and the result is
import _ = require("lodash");
export const chain = _.chain;

PRs welcomed.

In light of #19261, I want to try and take this on if you do not mind.
I would welcome suggestions about where to get started.

I suppose you will always make it default if --allowSyntheticDefaults in https://github.com/Microsoft/TypeScript/blob/f8f662d0a197a2b5d276d3c4130ca52d74a1c1b2/src/services/codefixes/importFixes.ts#L623

Great, thank you.


Plasma desktop broken in recent updates on 17.03 stable Channel

Issue description
When I moved from Channel revision 17.03.1160.f2c4af4e3b to 17.03.1203.58e227052d My plasma desktop widget stopped working. Instead of my widgets showing up I just got a white box that when pressed gave the error message:

Error loading QML file: file:///nix/store/smlpa9dvd0n9qc1dn3vni47f2fs47hai-plasma-desktop-5.8.7/share/plasma/plasmoids/org.kde.plasma.taskmanager/contents/ui/main.qml:168:9: Cannot assign to non-existent property "enabled"

This error message also occurred in the test vm when I attempted to run 'nixos-rebuild build-vm'.
Steps to reproduce
Install the plasma desktop. Certain widgets stopped working, specifically the icons only task menu and task manager are broken on my desktop.
Technical details

System: (NixOS: 17.03.1203.58e227052d (Gorilla))
Nix version: (nix-env (Nix) 1.11.8)
Nixpkgs version: ("17.03.1203.58e227052d")
Sandboxing enabled: (true)

duplicate of #26080


Atom won't save anymore.

Description
Atom won't save files anymore. That happened after I changed settings to allow wrapping up, but that's not what caused it.
I have tried to open Atom in safe mode, but it doesn't help.
Just as an addition, I was also wondering how to get rid of the tabs "atom" and "ATOM_DISABLE_SHELLING_OUT_FOR_ENVRONMENT=false" which open everytime I open Atom.
Steps to Reproduce
Just trying to save a program. I don't have any explanation on why it started happening.
Reproduces how often:
All the time.
Versions
apm  2.5.0
npm  6.14.5
node 10.20.1 x64
atom 1.49.0
python 3.7.3
git 2.25.1

Hello, I have solved the annoying tabs issue thanks to this post.
However the most important issue of not saving continues, and on top of that, now I can not open more than one file at a time. Atom won't open neither new tabs, nor new windows, so I'm stuck to edit programs one by one, closing them in between, if only using Atom...

I too am having trouble.  I am new at using Atom.  Also, my autocomplete isn't functioning like it was.  My workaround is:
move or copy to a non-repository folder.
work on my program.
move or copy it back to my repo folder.
commit
A few extra steps for peace of mind and no lost data.

Similar issue here, working outside of the git repository and everything starts working again. Sounds similar to https://github.com/atom/atom/issues/18114


I can't find Hybrid Flow shop example

I'm looking for an example to create code to solve scheduling hybrid flow shop problem, but I can't find how to use cp solver to solve it. Which examples do I need to review?
Thank you for helping.

This is not an 'issue'.
There are multiple jobshop examples. As far as I understand, flow show is a special case of jobshop.


API support to query mempool transactions by transaction hash

Feature Request
Summary
API support to query mempool transactions by transaction hash
Problem Definition
Currently the only way to check if a transaction is in the mempool and retrieve raw Tx bytes corresponding to a TxHash is by going through all the mempool transactions, computing the Tx hashes and verifying the Tx Hash. We have observed that, this is a potential DDOS vector, and a single client can bring down the node, by querying for the transaction repeatedly as the hash computations are pretty expensive and hog down CPU drastically.  This also impacts the block times significantly.

Exposing this API brought down the block times singnificantly

Proposal
Mempool already has the infrastructure to support Tx lookups using the TxHash, It just need to be exposed.
	// Concurrent linked-list of valid txs.
	// `txsMap`: txKey -> CElement is for quick access to txs.
	// Transactions in both `txs` and `txsMap` must to be kept in sync.
	txs    *clist.CList
	txsMap sync.Map

Hi @charithabandi, thanks for submitting this issue. Just for clarification, are you talking about using the RPC endpoint /unconfirmed_txs ? If so, is the idea to provide a way to do something like unconfirmed_txs?hash=[tx_hash] ? and you get a response confirming if the tx is in the mempool?
I can't find the code for that profiling image you attached above, could you please provide more details or point in the code what are you referring to ?

If it's of any use, here is the snippet of our API and the changes we made to avoid this issue

Done in https://github.com/cometbft/cometbft/pull/3109


Updating bRealTime to EMX Digital

Since this is a name change, please approve this PR at the same time as this PR for Prebid repo.
https://globenewswire.com/news-release/2018/05/09/1499361/0/en/bRealTime-and-Clearstream-Merge-to-Form-EMX-a-New-Digital-Media-Marketplace.html

Which PR? Please resolve conflicts.

Fixed! This PR on Prebid, it was just approved and slated for 1.17 release

@bretg this did not show conflicts when I merged and doesn't show when I pull on my remote forked branch. We are simply renaming the brealtime.md file to emxdigital and renaming the assets in there as per the commit in this branch, no other changes. Let me know.

I fixed this for you. Closing this one in favor of https://github.com/prebid/prebid.github.io/pull/915


Upgrade module extend to fix CVE-2018-16492

Upgrade module extend to fix CVE-2018-16492 Prototype pollution vulnerability
Fixes #643
The extend module used in pubsub package is 3.0.1 which has known vulnerability - Refer https://nvd.nist.gov/vuln/detail/CVE-2018-16492
This vulnerability is fixed in version 3.0.2 of extend module.

I signed it!


Inline DefinitionBody always returns "Specify either 'DefinitionUri' or 'DefinitionBody' property and not both"

Same issue as: https://github.com/awslabs/serverless-application-model/issues/432, copying most of the content as I have the same exact issue.
Description:
Whenever DefinitionBody is used I seem to always get a validation error saying to Specify either 'DefinitionUri' or 'DefinitionBody' property and not both.
The template defines only a single instance of DefinitionBody, there is no reference to DefinitionUri.
Steps to reproduce the issue:

Go to the example given in this repo: https://github.com/awslabs/serverless-application-model/blob/develop/examples/2016-10-31/inline_swagger/template.yaml
Run sam validate

Observed result:
Error: Invalid Serverless Application Specification document. Number of errors found: 1. Resource with id [MyApi] is invalid. Specify either 'DefinitionUri' or 'DefinitionBody' property and not both
Expected result:
Pass validation
Additional environment details (Ex: Windows, Mac, Amazon Linux etc)
$ aws --version
aws-cli/1.15.20 Python/2.7.9 Windows/8 botocore/1.10.20
$ sam --version
SAM CLI, version 0.3.0

@mariotacke Looks like we missed a case here. Looks we just need to check if DefinitionBody is in the Properties before trying to override the URI.
Updating labels but @mariotacke would you like to take a stab at it?

@jfuss, I tried for about an hour but Python is not my strong suit. I don't think I have the expertise to build a proper unit test for this scenario. Would love to have someone with more experience look at this instead.
This is what I tried, though I'm not sure if that's the right way to go:
if resource_type == "AWS::Serverless::Api":
    if "DefinitionBody" in resource_dict:
        SamTemplateValidator._update_to_s3_uri("DefinitionBody", resource_dict)
    else:
        SamTemplateValidator._update_to_s3_uri("DefinitionUri", resource_dict)

@mariotacke It is close! You don't need to replace the value for DefinitionBody with an S3 URI. You can condense this to
if resource_type == "AWS::Serverless::Api":
    if not "DefinitionBody" in resource_dict:
        SamTemplateValidator._update_to_s3_uri("DefinitionUri", resource_dict)

So I will give some context on why that is and maybe it will clear things up. Customers have two ways to define their swagger in an AWS::Serverless::Api, (DefinitionBody or DefinitionUri). The DefinitionBody is where you would inline your swagger. So from a local point of view, you don't need to say where the file is on your machine. On the other hand, DefinitionUri is an S3 uri to tell SAM where to find the swagger definition. In this case, it makes sense for this to be a path to the file on your machine. But for SAM CLI, we do not require the DefinitionUri to be in the template and if it is not, we want to make sure the template can pass the transform on SAM (locally). So in order to do that we need to add the key or update it to be a what looks like a valid S3 Uri.
If you don't feel you have the expertise or want to do it, don't. You won't hurt anyone's feelings. We do appreciate the attempt in fixing it. I am happy to guide and help, if you do choose to continue otherwise I can work on getting this into an upcoming sprint for us.

Thank you for the explanation. Please prioritize it for your upcoming sprints.

facing same issue.. tried
generate next stage yaml file
aws cloudformation package
sed -i '' '/DefinitionUri/d' packaged-template.yaml
--template-file template.yaml
--output-template-file build/output.yaml
--s3-bucket $BUCKET
the actual deployment step
aws cloudformation deploy
--template-file build/output.yaml
--stack-name $PROJECT
--capabilities CAPABILITY_IAM
--parameter-overrides Environment=$STAGE
but no progress.
have any body been able to solve this issue.

@workforfilmsGithub This issue is not related to package and deploy commands. It is isolated only to the validate command.

Merged, yet to be released


GitHub repository does not link to the project website url

As part of our ongoing effort to ensure all the websites within the CNCF meet the CLOMonitor guidelines, we noticed that Notaryproject does not pass the website criteria on CLOMonitor.
To fix this:
Edit notaryproject/notary repository details

In the website section, add the link to the notary website

Once done, feel free to close this issue as CLOMonitor will recrawl the page and update accordingly.

Hi @thisisobate , this project has been inactive for a long time. We might work with other maintainers to start the archival process soon. Other active repositories are following the right practice and has a link to the website. Thanks

Thanks for letting us know @FeynmanZhou
Will send a PR to the CLOMonitor repo to update Notary checks to the active repo instead.


Fix several breadcrumb logging bugs

This PR makes the code follow more standard JS conventions, fixing several major bugs related to breadcrumb logging. It also tackles a few other minor cleanup items.

Properly log objects, booleans, null, and undefined in breadcrumbs

Previously, all of these values were completely dropped without warning

Use typeof in several places instead of various alternatives

Fixes a few potential bugs with inheritance and prototype modification

Use regular functions instead of closures

No need to create closures all over the place when functions will do
This also improves auto-completion and method tracing in some environments

Output slightly more helpful errors
Ignore the .idea directory created by IntelliJ IDEs

It does touch a lot of code, but luckily there are no conflicting PRs currently open :)
Please see the individual commits for more information and to understand each change as a unit.

Note: None of these changes should be breaking, except in the following case. The use of regular functions means that this can refer to the wrapper object in rare cases, for example if you do the following:
const bugSnag = new BugSnag(API_KEY);
export const bugSnagWrapperUtil = {
    trackError: bugSnag.notify,
};

This is a generally desirable side-effect of using ES6 classes, and can easily be resolved by using a closure to maintain the original this:
    trackError: (...params) => bugSnag.notify(...params),

@kattrali is there anything I can do to help this get merged? It fixes multiple important bugs. Let me know :)

Thanks for the bump, @cooperka. It's a little hard to bring all of this in at once, since it doesn't seem to all be breadcrumb related. I just have a few questions.

Properly log objects, booleans, null, and undefined in breadcrumbs
Previously, all of these values were completely dropped without warning

Makes sense. Though it seems a bit odd to add the logged error message as metadata. A console warning could suffice, similar to the other errors which could be encountered.

Use typeof in several places instead of various alternatives
Fixes a few potential bugs with inheritance and prototype modification

What behavior does this fix?

Use regular functions instead of closures

This change was introduced in #17, since requiring something like trackError: (...params) => bugSnag.notify(...params) was not immediately obvious to users of the library, and the resulting error was opaque. I encountered it when using Promise.catch(bugsnag.notify). This seems a bit unrelated to the breadcrumb issues.

@kattrali thanks for the feedback. My apologies for the confusion, my intent here really is to conventionalize the code in order to fix a few sneaky bugs, rather than fixing them more directly with workarounds. I've updated the title to make that more clear. If you'd like me to split it into separate PRs I would be happy to.
I didn't realize the closures were added intentionally; I'll rebase and exclude that commit. It does make sense why users were confused by the behavior you mentioned.
Can you clarify what you mean by "it seems a bit odd to add the logged error message as metadata"? Perhaps you're referring to https://github.com/bugsnag/bugsnag-react-native/pull/61?
Finally, there are a few answers on this SO question that explain why I prefer typeof. Most importantly for me is that instanceof compares to an existing instance directly, such as Object, which may not always be the same depending on scope. Obviously it's true that Object === Object, but a var saved by someone else's code may extend from a different Object than the Object in the current global scope. Let me know if that makes sense.
I'll rebase soon when I have access to my other machine!

Gotcha! Thanks for the clarifications, its much clearer now what is going on. I'll look it over again.

Thanks!


Step 4: Gradle project sync failed, Failed to resolve: viewmodel and Failed to resolve: runtime

I'd got those fail messages during sync.

When you face this issue. You meed to change the repository order of repositories in Project level build:gradle
`buildscript {
repositories {
google()
jcenter()
mavenLocal()
maven { url 'https://maven.fabric.io/public'  }
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.3'
classpath 'com.google.gms:google-services:4.0.1'
classpath 'io.fabric.tools:gradle:1.24.4'
}
}
allprojects {
repositories {
google()
jcenter()
mavenLocal()
}
}`
Reference: https://stackoverflow.com/a/50563942/8050752

감사합니다.


Add Hawkular Metrics reporter

Note that I only commited on branch 3.2-develoment, please tell me if I should report changes to master/4.0

This is fine, thanks!


Incorporate newly-added lambda and object functions

The following functions and changes to existing functions were added in ARM's 2024w12 release:
New functions:
objectKeys: Returns the keys of an object parameter.
mapValues: Create an object from an input object, using a custom lambda to map values.
groupBy: Create an object with array values from an array, using a grouping condition.
shallowMerge: Perform a shallow merge of input object parameters. Required to implement a "spread" operator in Bicep.
Updated functions:
map: Support optional index argument.
reduce: Support optional index argument.
filter: Support optional index argument.
Once this release has been rolled out globally, we should update Bicep to support the new capabilities.
This addresses some of the issues described under the following: #9244, #1560, #2082, #1853

@anthony-c-martin will the distinct function also be available?

@anthony-c-martin will the distinct function also be available?

No, sorry - this wasn't one of the functions I added. For distinct, what behavior would you expect for handling arrays and objects?
My expectation would be exact structural equality:
var a = distinct([[1], [1]) // returns [[1]]
var b = distinct([[1, 2], [1]) // returns [[1, 2], [1]]
var c = distinct([{a: 1}, {a: 1}] // returns [{a: 1}]
var d = distinct([{a: 1}, {a: 1, b: 2}]) // returns [{a: 1}, {a: 1, b: 2}]

It may also be useful to add a distinctBy function that accepts a lambda:
var foo = distinctBy([{a: 1}, {a: 1, b: 2}], (x, y) => x['a'] == y['a']) // returns [{a: 1}]

Closed by #13658.
@miqm for the distinct ask - please could you raise a new issue and answer my above question?

Closed by #13658.
@miqm for the distinct ask - please could you raise a new issue and answer my above question?

#2082 already exists. It was mentioned in the ticket description therefore I asked if it's going to be supported as I didn't see it on the list.


UHF-8909 Preprocess function refactor

UHF-8909

What was done

TBD

How to install

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

git pull origin dev
make fresh

Update the HDBT Admin theme

composer require drupal/hdbt:dev-UHF-8909 drupal/hdbt_admin:dev-UHF-8909 drupal/helfi_platform_config:dev-UHF-8909

Run make drush-cr

How to test

[ ] Check that this feature works
[ ] Check that code follows our standards

Continuous documentation

[ ] This feature has been documented/the documentation has been updated
[ ] This change doesn't require updates to the documentation

Translations

[ ] Translations have been added to .po -files and included in this PR

Other PRs

https://github.com/City-of-Helsinki/drupal-helfi-platform-config/pull/789
https://github.com/City-of-Helsinki/drupal-hdbt-admin/pull/292

Attach this to the release notes:
The hdbt_preprocess() has been removed to streamline the page rendering and thus all current_langcode variables have been assigned to more precise preprocessing functions, f.e. hdbt_preprocess_node(). Check that your subtheme has the current_langcode variables set, or switch to use the hdbt theme's hdbt_add_current_language() function. This function will set the language object to render array variables and the langcode can be called in a template with {{ language.id }}