Mat/Pat - Form validation for Maternity leave screens + additional logic

Birthing Parent Selection

"Are you a birthing parent?" is mandatory

Maternity leave info and Leave length info

no field validation or logic

Start Date

mandatory
must be a valid date (submitter logic)

if before form submission max 9 months in the future from current date, cannot be a past date
if approved:
- if before leave start, max 9 months in the future from current date or at max 1 month in the past
- if after leave start, max 1 month in the past from current date. Cannot be a future date

Number of weeks

mandatory
must be a number
must not be more than 17 weeks
after start date and number of weeks is input, show the info box with start & end dates calculated

Allowance Estimation

main logic in #911
Add info popup that shows instructions on how to calculate basic pay (updated April 12)

Instructions to calculate gross basic pay
In your paystub, ADD all of the line items present in your pay stub from the following list. It is okay if you do not have all of the line items listed below in your pay stub, just add the ones that are present.

Regular Hours Paid Earnings
Salary Protection
Classification Adjustment
Temporary Market Adjustment (AMA Market Adjustment)

Add info popup that shows screenshot of EI estimation screen to help people find where the estimate is Maternity Leave & Parental Leave EI Estimate Popup
~- Add tooltip for additional earnings to be decided~ Not needed, updated april 12

Allowance selection

mandatory

Keep an eye out for timezones @Andrew-Vargas-bcgov
Also refer to the original mat/pat form & logic - maybe things can be reused

need infopop screenshot to add.

After leave starts, can be a date at max 1 month in the past from current date
if editing a submitted form, date can be in the past
Finished researching this. These can be implemented after summary screen created.

On the leave length screen, the dates are calculated even before the value is input. Also, the initial design was to have it as part of an info box. Also info box should appear after the start date is input.

Tested and verified!
The start and end dates appear before the user inputs maternity leave value, like Fazil mentioned. Once the maternity leave field has an input, the 'End date' gets updated.

@Andrew-Vargas-bcgov  @chriscaldwell-psa
Issues found

For consistency lets change the error message for mat leave start date to "You must select a date in the future"

updated validation messages.
Changed allowance selection to mandatory.
added fields for chris to display dates in info boxes.

1 - 4 complete
5. working with Iman on this one. The feature for adding tooltips does not seem to work for number fields.
6. complete

Iman to look into this one

FYI the error message is incorrect. It should use the name of the question "Are you a birthing parent?" instead of the content below.

@fazil-ey This validates in the review section now, so you can skip over it initially and only verify at the end. Whatever is checked on this page or the review page is written to both fields. Is this okay?

Tested:

Birthing section - mandatory ✅

Private Zenhub Image

Maternity leave info and Leave length info - contains no logic ✅

Start date - acceptance criteria met ✅

Private Zenhub Image

Number of weeks - validated, info box appears with calculations ✅

Private Zenhub Image
[Private Zenhub Image]
(https://api.zenhub.com/attachedFiles/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBanc4IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--0bb75670e908692bbacb36a2e96a99fbc6153279/image.png)

Allowance estimation - info box for calculating salary and EI estimation does not appear right ❔

Private Zenhub Image

Allowance section - mandatory ✅

Private Zenhub Image

Tested and works as expected. Except Allowance calculator info pop which is split into #1304


Function flow

The code is a bit sloppy when flowing from goto's. Instead of going to a specific place, then going back, CALL the "checkpoint", then execute code after it.

Resolved by using Call :subroutine


Refactor to unify FlatLaf handling

Extracted FlatLaf handling into a separate file flatlaf.py and FlatLaf class.
Updated used FlatLaf version from 0.43 to 1.6.5
Tested with Ghidra 10.1 on Linux.

See many bugfixes since 0.43: https://github.com/JFormDesigner/FlatLaf/releases

This looked good, thanks for your contribution!


debugger; statements not honored in _mocha context

Hi all:
problem statement
debugger; statements are ignored when running node-debug _mocha some-mocha-script.
This traditionally has not been an issue for me.  Following is my env, my script, and my results.  If there are logs/etc you would like me to provide, I would be eager to provide them per request.  Very grateful for this project.  Beats the classical debugger by a longshot :smile:
env
$ node-inspector -v
Node Inspector v0.9.2
$ node -v
v0.12.0
$ sourceme
CHA-CHING!  Ceez is runnin' OSX Darwin 13.4.0 64-bit (64)

supporting context - experiment 1
script
'use strict';
var mocha = require('mocha');
var should = require ('should');

debugger;
console.log('bananas');

results
I was going to attach screenshots, but it's frivolous.  Running  node-debug _mocha some-mocha-script plays right thru the script, with no stop on debugger;.  Running node some-mocha-script stops on the debugger; line successfully.
supporting context - experiment 2
Manually boot this little guy
script
// debuggins.js
'use strict';
var mocha = require('mocha');
var should = require ('should');

describe('what?', function () {
    it('should do what...', function () {
        debugger;
        console.log('bananas');
    });
});

node-inspector  process brought up and left running.  open a new terminal and try the following:

running  mocha --debug debuggins.js, the script stops at the debugger sometimes.  but there's some race condition perhaps going on, as otherwise it stops periodically here in timers.js, just one line above my reported issue in #611:

running mocha --debug-brk ./debuggins.js produces #611 sometimes when it doesn't fail immediately

$ mocha --debug-brk ./debuggings.js
Debugger listening on port 5858
node.js:444
        stream = new tty.WriteStream(fd);
                 ^
TypeError: undefined is not a function
    at createWritableStdioStream (node.js:444:18)
    at process.stdout (node.js:502:16)

I'm not sure which of the above mocha --debug-xxxx file syntaxes are right (if either).

---
Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/11300651-debugger-statements-not-honored-in-_mocha-context?utm_campaign=plugin&utm_content=tracker%2F195817&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F195817&utm_medium=issues&utm_source=github).

Hello, @cdaringe , thanks for verbose description.
At first glance your first experiment is related with #597
The second looks like a node problem. Can you reproduce it on 0.10.?
Or maybe using node debug command on 0.12.?
I inspect the same problem at current time - TypeError: undefined is not a function in place where it is impossible, but I can't prepare a small bug sample to retarget this problem to nodejs.

Hello, I have a similar issue, and I am running on the following versions
node -v
v0.12.2
node-inspector -v
Node Inspector v0.10.0
And my command is
node-debug mocha test.spec.js

and I do not know how to instruct node-inspector to stop at my test. It is very frustrating...
Thanks for any help!
Cheers,
Andrej

https://github.com/node-inspector/node-inspector/pull/637

Fixed in 0.10.1
Next part doesn't fixed at current time, but this is out of scope of this issue.
$ mocha --debug-brk ./debuggings.js
Debugger listening on port 5858
node.js:444
        stream = new tty.WriteStream(fd);
                 ^
TypeError: undefined is not a function
    at createWritableStdioStream (node.js:444:18)
    at process.stdout (node.js:502:16)


Angular + WebPack + OcLazyLoad

I created a OcLazyLoad and test module called "Dashboard", i think it's better use of Webpack and Angular together.

That seems amazing. I have been using ocLazyLoad in a different project.


Summary api objects

support vuln summary object:

add new type VulnerabilitySummary and generate relevant files (new type doc: https://cyberarmor-io.atlassian.net/wiki/spaces/RD/pages/216727553/Summary+vuln+object+CRD+modification)
this type is not actually store in the storage, it is always regenerate for every K8S GET API
all of other K8S API to this object will return error that claims that the current API used is not supported

@vladklokun for now we are not going to support cluster scope, just namespace scope.


Feature/xivy 3509 open api show

This PR deprecated old ODATA special handling in favour of a JAX-RS client that relies upon an OpenAPI 3.0 converted model.


Do not fail fast in actions

If there's a problem in one ROS distro, we still want to see whether the others are building correctly

Merging although the noetic build is currently failing on setting up the downstream workspace. That was exactly the reason I made this PR in the first place.


Auto Scroll not stopping on swipe gesture

Auto scroll stops on tap gesture , but doesn't on swipe gesture, also images are not loading automatically after swiping far.

This has been fixed now.


[Feature Needed] Add /get-token?id=? support

Casdoor has a token api which receive id parameter to get token detail.
And no implementation of the api was found in casdoor-go-sdk.

fixed by: https://github.com/casdoor/casdoor-go-sdk/commit/348c6d99dc24fd6f66e39ced23e41137715c7765


Preliminary data relay documentation

Goal: Fix the pre-commit errors

Hi @YanlinQi-BIA I added this 15807c6
Now this is good to go. (Note the trailing space error dissapear) You can do the "Merge pull request"


Update release.yml

@mario-campos

@baretta881 @mario-campos This release branch of mine was still a WIP outside of the update to actions/checkout@v2. If you look at the most recent release workflow, you'll see that it fails with exit code 1 as by design since the script being called is a TODO script and does not build the binaries as expected.

@katiem0, oh I see. Thanks for the clarification. I thought it seemed like a simple and innocuous change to just bump checkout to v3, but I suppose let's not break things here.


[QUESTION]init.py generates a wrong path for hparams.yaml in Windows

What is your question?
Hello Ricardo,
i just installed COMET 2.0.0 and ran a basic test with the text examples after the full installation. And i got the Exception:
hparams.yaml file is missing from C:Users\username.cache\huggingface\hub\models--Unbabel--wmt22-comet-da\snapshots\371e9839ca4e213dde891b066cf3080f75ec7e72!
I noticed that the path of the parent folder is incorrect, a "\" is missing in "C:Users".
How can I fix it?
Thank you!
What's your environment?

OS: Win11
Packaging: Pip
Version: COMET 2.0.0

It happens here:
https://github.com/Unbabel/COMET/blob/77eb17921d597ffcea2ab6eea15a9c36ce78bd3e/comet/models/__init__.py#L56-L59
Python 3.10.10 (tags/v3.10.10:aad5f6a, Feb  7 2023, 17:20:36) [MSC v.1929 64 bit (AMD64)] on win32
>>> import os
>>> os.path.join("C:", "Users")
'C:Users'

For temporary usage, try to move the snapshot into the folder where your project locates in and use relative path to load it.

To developers: I'd suggest using pathlib for path manipulating.
from pathlib import Path

# ...
checkpoint_path = Path(checkpoint_path)

if not checkpoint_path.is_file():
  raise Exception(f"Invalid checkpoint path: {checkpoint_path}")

parent_folder = checkpoint_path.parents[1] # .parent.parent
hparams_file = parent_folder / "hparams.yaml"
# ...

Thank you!

Thank you! @K024

Thanks @K024.

@YZhou0413 I just pushed the changes suggested above. You can test the current master

@ricardorei It's working, Thanks!

@YZhou0413 I'll release this on the next pypi version!
Since we just released version 2.0 and I expect more people reporting issues, I'll just wait a few weeks.


eslint-import-resolver-node's resolution does not match node's with respect to symlinks

Consider this example project, structured similarly to what pnpm produces: t.tar.gz
The directory structure looks something like this:
t/
t/index.js
t/node_modules/
t/node_modules/b -><EMAIL_ADDRESS>t/node_modules/.pnpm/
<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>-><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>t/package.json

Of particular note, package b depends on c, and pnpm structures things as above so that t/index.js won't see c as a phantom dependency. c exports a named export 'foo', and b rexports that with export * from 'c'.
When t/index.js imports b, standard Node module resoluton resolves that via the symlink t/node_modules/b, returning the absolute realpath<EMAIL_ADDRESS>Resolving c relative to that path finds it via the symlink<EMAIL_ADDRESS>eslint-import-resolver-node's resolution differs in one key respect: by default, instead of returning the absolute realpath<EMAIL_ADDRESS>it returns /some/absolute/path/t/node_modules/b/index.js instead. It then (correctly) cannot resolve c relative to that path.
A relevant eslint.config.js to use with the above could look like this:
import importPlugin from 'eslint-plugin-import';

export default [ importPlugin.flatConfigs.recommended ];

which will produce the following false positive due to this bug
  1:10  error  foo not found in 'b'  import/named

If you want a "real" reproduction, starting in an empty project:

Create a package.json with "type": "module" (or use extension .mjs instead of .js in steps 3 and 4).
Run pnpm add eslint eslint-plugin-import @playwright/test.
Create the above eslint.config.js.
Create a JS file containing import { expect } from '@playwright/test';.
Run eslint on that file.

As for a fix, it looks like setting preserveSymlinks: false in https://github.com/import-js/eslint-plugin-import/blob/d5f295081ed1fcf9ff1b21a1a586cc50caebe36f/resolvers/node/index.js#L11-L20 should do it. As a workaround this can be set in the eslint config with
{
    settings: {
        'import/resolver': {
            node: {
                preserveSymlinks: false,
            },
        }
    }
}

I note the README for the resolve package you use recommends setting preserveSymlinks: false to match Node's behavior; as far as I can tell, preserving symlinks was only the default in Node for a short time between 6.0.0 and 6.2.0, although the documentation as to the expected behavior was unclear before that.

https://github.com/jestjs/jest/issues/5356#issue-290272302 has some more of the context/history as well.
You are correct that this value should be set to false by default. The reason that we don't do that in the node resolver at the moment is because that would be a breaking change.


No submit data find for x

Some games are throwing errors when trying to upload playtime, manually or automatically. For example, Dark Souls Remastered:
17-06 19:04:03.339|INFO |HowLongToBeat#HowLongToBeatClient:GetSubmitData(Dark Souls: Remastered, 28149882)
17-06 19:04:03.838|ERROR|HowLongToBeat#Common:Error on GetSubmitData()|D:\GitHub\Lacro59\playnite-howlongtobeat-plugin\source\Services\HowLongToBeatClient.cs|488
System.Exception: No submit data find for Dark Souls: Remastered - 28149882
at HowLongToBeat.Services.HowLongToBeatClient.GetSubmitData(String GameName, String UserGameId) in D:\GitHub\Lacro59\playnite-howlongtobeat-plugin\source\Services\HowLongToBeatClient.cs:line 488
17-06 19:04:03.838|WARN |HowLongToBeat#PluginDatabaseObject`4:No hltbPostData for Dark Souls: Remastered

Same problem here various games doing me the same, the extension must be fixed please 🙄

Also seemingly random games here (they worked before)
Log for Yu-Gi-Oh! Duel Links
18-06 13:16:34.016|INFO |HowLongToBeat#HowLongToBeatClient:GetSubmitData(Yu-Gi-Oh! Duel Links, 24159304)
18-06 13:16:34.941|ERROR|HowLongToBeat#Common:Error on GetSubmitData()|D:\GitHub\Lacro59\playnite-howlongtobeat-plugin\source\Services\HowLongToBeatClient.cs|488
System.Exception: No submit data find for Yu-Gi-Oh! Duel Links - 24159304
   at HowLongToBeat.Services.HowLongToBeatClient.GetSubmitData(String GameName, String UserGameId) in D:\GitHub\Lacro59\playnite-howlongtobeat-plugin\source\Services\HowLongToBeatClient.cs:line 488
18-06 13:16:34.941|WARN |HowLongToBeat#PluginDatabaseObject`4:No hltbPostData for Yu-Gi-Oh! Duel Links


Scripts set in manualChunks are loaded directly in front page, instead to be lazy loaded when needed

Describe the bug
To manage well the bundle, I am setting the packages into manualChunks e.g.:
The package fabric is used only in the admin area of my app, that is why I don't need it to be loaded directly in the front page.
If I don't set it in manualChunks, it works good and it will not be loaded in the front page, but my chunks then are too large, because vite place it automatically together with others in a huge backend chunk. Then as soon I open the backend it lazy loads all the other chunks, including the one that contains fabric. So this is the expected behavior.
If I set it in manualChunks, e.g.:
    rollupOptions: {
      output: {
        manualChunks: {
          fabric: ['fabric'],
        }
     }
   }

the fabric chunk is loaded directly on the front page. Even if I am not admin.
You can see the differences when I include fabric or not:
Not included in manualChunks

Included in manualChunks:

Expected behavior is: fabric should only be loaded when really used, else it creates only network traffic and lowers the Lighthouse score because of unused code!
NOTE: I am using an example with fabric here, but in my project I have a bunch of other libraries that have the same issue with manualChunks.
Reproduction
I created a small reproduction in this repo:
https://github.com/a-tonchev/react-boilerplate/tree/vite_no_lazy_load
Steps to reproduce:

Install deps (yarn)

Try bug:

yarn build && yarn serve
Open localhost:4000 and see in Network -> JS, the fabric script is loaded

To try without, open vite.config.js:
https://github.com/a-tonchev/react-boilerplate/blob/vite_no_lazy_load/vite.config.js
and comment out line 40

yarn build && yarn serve
Open localhost:4000 and see in Network -> JS, the fabric script is no more loaded,

System Info
Windows 10 + WSL (Ubuntu)

Vite version "^2.3.8"

Used Package Manager
yarn
Logs
No response
Validations

[X] Follow our Code of Conduct
[X] Read the Contributing Guidelines.
[X] Read the docs.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] Make sure this is a Vite issue and not a framework-specific issue. For example, if it's a Vue SFC related bug, it should likely be reported to https://github.com/vuejs/vue-next instead.
[X] Check that this is a concrete bug. For Q&A open a GitHub Discussion or join our Discord Chat Server.
[X] The provided reproduction is a minimal reproducible example of the bug.

I can confirm that this issue occurs. Also, it seems that even dependencies I've never imported are passed to manualChunks, raising the chunks size.

On the other hand, it is good to have the option to decide which chunks should be loaded immediately, because thus we will avoid the waterfall-effect on chunks that are always needed.
I suggest to have either two rules manualChunks + preloadChunks or just to put this option in the manualChunks e.g. { chunkUrl, preload: true }

I have some confusion about this issue,  i use build.rollupOptions.output.manualChunks and import() in other project. Finally, i didn't find this issue. And, the reproducible repo isn't simple.

Is something happening with this issue? @TrickyPi if you are using it without any issue in other projects, can you show us your example? Are you sure those manual chunks are really lazy-loaded? ... because this really does not work as expected. Once you start using manualChunks, lazy-routes are not lazy-loaded at all, they load together with index (first page) - utilizing the last version of vite and vue-router.

I can confirm this too in our Vue app. We didn't have the issue before migrating from Webpack, using /* webpackChunkName: "foo" */ feature. We tried to mimic that, but for now it's counter productive. (we're using vite 2.8.6).

Yes the issue is still there and since it is build issue, I can not just make a code-sandbox example.
The repository I mentioned in my first post shows clearly the problem.

I created a minimal repo.
step

git clone -b vite-issue-5189-temp https://github.com/TrickyPi/issue-repo
see reproduce.md.

I think this should be fixed now in Vite 2.9 (changelog). Would appreciate if y'all can verify this, and whether this can be closed.

i think this "issue" is unrelated to the Vite's default chunking strategy.

No change with Vite 2.9.1 unfortunately, all chunks are still loaded via <link rel="modulepreload" href="xxx"> tags in <head>.

I use your reproduction and add the plugin vite-plugin-webpackchunkname, that resolve the issue.
your repo vite.config.js:
import {manualChunksPlugin} from 'vite-plugin-webpackchunkname'

export default defineConfig({
  plugins: [
    ....
    manualChunksPlugin(),
  ],
})

Any fix in view (from Vite - no extra packages solution please!)?

Same edge-case,
I need to chuck opencv and lazy load only at some point, with this preload feature always enable an user 'll download 2.5MB gzip at app bootstrap, in background yes but it's 2.5MB

I've been banging my head against the wall with this error. It appears that returning void like the documentation shows is causing the error. When returning void, Vite will chunk synchronous modules with asynchronous modules, causing the chunk to be preloaded. If you return a default value to catch everything else, then Vite will not do this. Thankfully, that default return value will still pass over asynchronous components you define with defineAsyncComponent, but it will catch everything else, possibly causing large builds. There may be a work around, I'm still playing with a solution.
I also finally found a workaround that allows for custom chunk names similar to webpack's magic comments. I developed this because the plugin vite-plugin-webpackchunkname was throwing errors. Please note the last line and comment of the example
  manualChunks: (id) => {

      // This is how I do dynamic chunk naming.
      // Example uses:
      // import("some/module/index?chunkName=my-custom-chunk-name")
      // import MyComponent from "some/component.vue?chunkName=restricted_path/my-custom-chunk-name"
      if(id.includes("?chunkName=") || id.includes("&chunkName=")){
          let name = id.match(/(?<=chunkName=)(.*)(?=&)|(?<=chunkName=)(.*)/gm)
          if(name[0]) return name[0];
      }

      // Vendor Chunks
      if(id.includes('node_modules')) return 'vendor';

      // Here's the odd fix. You cannot return void, it must return a string
      return "index";
  },

I'm still cleaning this up and will post updates as it develops.
Noteable issues:

Typescript is throwing errors with the query in the url string. It's possible that Javascript will too.
Chunking does not work if you are importing from a generic package in node_modules. You must import a file.
Does not work: "node_module_package_name?chunkName=package"
Does work: "node_module_package_name/index?chunkName=package"

Ignore modulepreload <link rel="modulepreload" href="xxx">
Use the following configuration to ignore modulepreload.
https://github.com/vitejs/vite/blob/main/docs/config/build-options.md#buildmodulepreload
{
  build: {
    modulePreload: {
      resolveDependencies: (url, deps, context) => {
        return [];
      }
    }
  }
}

Ignore type error Cannot find module 'xxx' or its corresponding type declarations.ts(2307)
https://www.typescriptlang.org/docs/handbook/modules.html#wildcard-module-declarations
https://github.com/microsoft/TypeScript/issues/38638
// e.g. import("module?chunkName=name&")
declare module "*&" {
  const value: any;
  export = value;
}

Grouping Components in the Same Chunk
https://github.com/vitejs/vite/commit/849e8456e1f7609040030c87cdc51e2fc76235b7
https://github.com/vitejs/vite/blob/main/packages/vite/src/node/plugins/splitVendorChunk.ts#L114
{
  build: {
    rollupOptions: {
      output: {
        sourcemapExcludeSources: true,
        manualChunks:(id) => {
          const url = new URL(id, import.meta.url);
          const chunkName = url.searchParams.get("chunkName");
          if (chunkName) {
            return chunkName;
          }
          // return void will invoke the built-in `viteManualChunks`
        }
      }
    }
}

Hi everyone, I experienced the same problem and thanks to @pfdgithub , the following update solved the issue. Both build size and Lighthouse score ok now.
{
  build: {
    modulePreload: {
      resolveDependencies: (url, deps, context) => {
        return [];
      }
    },
    rollupOptions: {
      output: {
        sourcemap: false,
        manualChunks: {
          ethers: ['ethers'],
          router: ['react-router-dom'],
          rtk: ['@reduxjs/toolkit'],
          redux: ['react-redux'],
          chakra: ['@chakra-ui/react'],
        },
      },
    },
  }
}

I created a minimal repo, and it works.
step

git clone -b vite-issue-5189-temp https://github.com/TrickyPi/issue-repo
see reproduce.md.

Hello @TrickyPi, I've cloned this repo and tried it. Yes, it works with Vite 2.9.1. But when I updated Vite to the latest 5.0.10, it was not working as expected anymore.

@huseyindeniz I tried following :
 export default defineConfig({     optimizeDeps: {         include: ["@vue/runtime-dom"],         exclude: ["flowbite"],     },     resolve: {         alias: {             vue: "@vue/runtime-dom",         },     },     build: {         modulePreload: {             resolveDependencies: (url, deps, context) => {                 return [];             },         },         rollupOptions: {             output: {                 manualChunks(id) {                     if (id.includes("node_modules")) {                         return id                             .toString()                             .split("node_modules/")[1]                             .split("/")[0]                             .toString();                     }                 },             },         },     },
I'm getting a chunk / module BUT, all chunks are loaded immediately on page load. They are not loaded when required, which results in a bad lighthouse score. What am I doing wrong? Thank you for your help.

hi @magicyoda did you add the following to your index.html file, if not, can you try
<script>       window.global = window;     </script>

Why is this issue still opened? I've just checked it in vite@5 and the issue is still there.

This appears to be unresolved in the latest version of Vite as far as I can tell, and none of the above solutions seem to address it. All manual chunks are eagerly loaded which has catastrophic effects on performance.

BUMP!!
Anything going on here?? Related issues breaks vue-router dynamic imports. Cannot find module with dynamic imports that are loaded on direct navigation to a URL.

Still.

Any news on this one? It really should be fixed.

Bump.

2 years later: bump!
Would be nice to have, at least, a feedback!

This is still happening. Any news to resolve it?

We really need to get this fixed.

Is it not possible to load bundles async in Vite? I'm a bit confused. I need lazy loading and I was under the assumption Vite handled this through manualChunks and import. Can someone on the Vite team advise if this is user error or an actual bug?

Is it not possible to load bundles async in Vite? I'm a bit confused. I need lazy loading and I was under the assumption Vite handled this through manualChunks and import. Can someone on the Vite team advise if this is user error or an actual bug?

It is an actual bug, else manualChunks would be total useless concept since all the chunks are loaded at the beginning.

@a-tonchev I was able to figure it out and I actually don't agree. You provide manual chunks with an undefined return and it will do its own internal processing.
The async loading using import definitely works but you have to make sure the module is not loaded synchronously.

@a-tonchev I was able to figure it out and I actually don't agree. You provide manual chunks with an undefined return and it will do its own internal processing.
The async loading using import definitely works but you have to make sure the module is not loaded synchronously.

Okay then what would be your suggestion to solve the problem, can you give an example?

@a-tonchev I was able to figure it out and I actually don't agree. You provide manual chunks with an undefined return and it will do its own internal processing.
The async loading using import definitely works but you have to make sure the module is not loaded synchronously.

async loading with an import works yes, but the question is that if you want to group multiple async components together to a certain chunks via manualChunks (just like you can do in Webpack with a magic comment "webpackChunkName"), it doesn't work as then the defined chunk is loaded always regardless of is the component used or not.

@a-tonchev I was able to figure it out and I actually don't agree. You provide manual chunks with an undefined return and it will do its own internal processing.
The async loading using import definitely works but you have to make sure the module is not loaded synchronously.

async loading with an import works yes, but the question is that if you want to group multiple async components together to a certain chunks via manualChunks (just like you can do in Webpack with a magic comment "webpackChunkName"), it doesn't work as then the defined chunk is loaded always regardless of is the component used or not.

Yes and that is the problem. Creating chunks makes only sense to load different parts of the JS on demand. If you load all the chunks at the beginning - code splitting makes no sense at all, you can just load the whole JS. That is why this bug makes the manualChunks useless

Tested around and had the same issue. I wanted to split out the jsoneditor library from my vendor file, but my vendor.js was always importing the jsoneditor file as well as the index.html. When analyzing the bundles not minified, I've recognized that it was just the commonjsHelpers.js that was included in my jsoneditor file, what was then required by the vendor file and the index. So my final solution was the following:

vite.config.js

import { defineConfig, splitVendorChunkPlugin } from "vite";
import react from "@vitejs/plugin-react";
import tsconfigPaths from "vite-tsconfig-paths";

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [react(), tsconfigPaths(), splitVendorChunkPlugin()],
  server: {
    port: 3000,
  },
  build: {
    rollupOptions: {
      output: {
        sourcemapExcludeSources: true,
        manualChunks(id: string) {
          if (id.includes("jsoneditor")) {
            return "jsoneditor";
          }
          if (id.includes("node_modules") || id.includes("commonjsHelper")) {
            return "vendor";
          }
        },
      },
    },
  },
});

Example code of my jsoneditor usage:
    async function setupJsonEditor() {
      const JsonEditorLib = (await import("jsoneditor")).default;
      await import("jsoneditor/dist/jsoneditor.min.css");

      const editor = new JsonEditorLib(
        ...,

Initial page load:

I hope it helps someone! :)

@Tschuck
The known common chunk:
    "vite/preload-helper",
    "vite/modulepreload-polyfill",
    "vite/dynamic-import-helper",
    "commonjsHelpers",
    "commonjs-dynamic-modules",
    "__vite-browser-external",

Thanks to @pfdgithub, I have made this work for our project.
It appears that the issue was that while I was configuring a set of files for a specific manualChunk, rollup was spreading dependencies around all the chunks. So it seems that defining a manualChunk for some dependencies but not all means that all the dependencies you specify will be in the chunks you specify, but the ones that are not defined may still end up in those chunks as well - and if those dependencies are common, they will be eagerly loaded.
As an example, I was trying to split a number of mock/test-related files out to a manual chunk which should not be loaded outside of the test environments. But rollup was adding sentry into the same chunk, so as soon as the application loaded it would load my test code file.
The solution was to specify for all 3rd-party chunks where they should go, especially the ones mentioned by @pfdgithub:
{
  build: {
    rollupOptions: {
      output: {
        manualChunks: (id) => {
          // List of modules that rollup sometimes bundles with manual chunks, causing those chunks to be eager-loaded
          const ROLLUP_COMMON_MODULES = [
            'vite/preload-helper',
            'vite/modulepreload-polyfill',
            'vite/dynamic-import-helper',
            'commonjsHelpers',
            'commonjs-dynamic-modules',
            '__vite-browser-external'
          ];

          // Split out mock code into its own chunk
          // (THIS IS AN EXAMPLE, REPLACE WITH WHATEVER YOU NEED)
          if (id.includes('/node_modules/@mswjs/')) {
            return 'mock';
          }

          // Bundle all other 3rd-party modules into a single vendor.js module
          if (
            id.includes('node_modules') ||
            ROLLUP_COMMON_MODULES.some((commonModule) => id.includes(commonModule))
          ) {
            return 'vendor';
          }

          // All other files are project source files and are allowed to be split whichever way rollup wants
        }
      }
    }
  }
}

I hope this helps someone else.

I was recently reading about a new vite-compatible bundler called Farm. It has an interesting set of options in what it calls Partial Bundling. Might be worth a look for those who are flexible with their build tools.
I've not personally tried it myself, but hope to soon, as hand-tuning manualChunks is a real pain

I found a way to drastically improve FP/FCP using manualChunks.
The idea is to remove script lines with rel="modulepreload" from appearing in HTML for generated JS manual chunks.
Because the main chunk that loads on WS first always reference these manual chunks it's easy to do and it doesn't break anything.
I have these manual chunks:
manualChunks: (id) => {
  if (id.includes('/src/pages/index')) return '01_main';
  if (id.includes('/src/pages/r/') || id.includes('/src/pages/recommendations/[recommendationId]') || id.includes('/src/layout')) return '02_recommendation';
},

I use 01, 02 prefixes because it appears the order matters to balance the size of manual chunks
It's a Nuxt 3 app so I'm creating chunks for pages and layouts, that's the only way I found to not break anything by creating manual chunks + it does make sense if you want to optimize the page that is most commonly used
I don't create the separate vendor chunk because I would rather split node_modules by usage between pages

Now the waterfall looks like this (main chunk + manual chunks loads at the same time and blocks FP/FCP):

But if I add a module that sets preload=false for these chunks in .output/server/chunks/build/client.manifest.mjs:
  modules: [
   ...
    async (_, nuxt) => {
      nuxt.hooks.hook('build:manifest', (manifest) => {
        for (const item of Object.values(manifest)) {
          if (item.name?.includes('01_main') || item.name?.includes('02_recommendation')) {
            item.preload = false;
          }
        }
      });
    },
  ],

As you can see the main JS chunk loads first and then it loads all manual chunks. Unfortunately works only with JS:

The good thing is that FP/FCP happens after all sources from HEAD are being loaded, so it's much faster now:

(thanks to https://github.com/johannschopplich/nuxt-vitalizer for the example of build:manifest hook usage)

Same problem, use onnxruntime-web, the library loaded at the first always.
A quick look into load-script, vite mistakenly resolve the library dependency,  onnxruntime-web is imported at the first time, so load it.
I think it is not a simple problem.

Any update on this ?


[bitcoind] Add initcontainer copy to bypass 1.9.4 read-only configmap mount

This PR fixes issue https://github.com/kubernetes/charts/issues/4407
Another chart bug from 1.9.4's read-only configmap mounts.
@govale @daniel-yavorovich

/assign @sameersbn

/lgtm

/ok-to-test

/lgtm


build(testnet): bump version

Bumps runtime version ahead of next release, purely to resolve a node syncing issue introduced with the last version bump of dependencies (i.e. 1.7 SDK update via psvm -v 1.7.0).
The executor used is still the below, so the native wasm now built is panicing when verifying state roots, presumably due to the changes introduced in sp_api.
type ParachainExecutor<E> = NativeElseWasmExecutor<E>;
This version bump would have had to have happend in any case, but doing so ensures that the onchain wasm is used and the node syncs.
Further investigation and testing should be carried out.

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

Project coverage is 3.30%. Comparing base (e403ef4) to head (3d22c72).

@@          Coverage Diff          @@
##            main    #144   +/-   ##
=====================================
  Coverage   3.30%   3.30%
=====================================
  Files         30      30
  Lines       6843    6843
  Branches    6843    6843
=====================================
  Hits         226     226
  Misses      6617    6617

Files
Coverage Δ

runtime/testnet/src/lib.rs
14.88% <ø> (ø)


Fingerprint filename for the same Git repository is not consistent

Motivation:
The fingerprint filename for package coming from a Git repository should take the form of {PACKAGE_NAME}-{REPOSITORY_URL_HASH}.json. The REPOSITORY_URL_HASH part is to distinguish repository URLs with the same last path component (and therefore same package name). For example: https://github.com/apple/swift-nio
https://github.com/yim-lee/swift-nio
REPOSITORY_URL_HASH is computed by converting hashValue property of the URL string to hexadecimal, but turns out hashValue doesn't yield consistent value across program executions (because random seed is used), and as a result multiple fingerprint files get created for the same (package name, repository URL) pair.
Modification:
Generate consistent hash value to be used for fingerprint filename.
rdar://113540625

@swift-ci please smoke test

@swift-ci please smoke test

@swift-ci please test Windows platform


[SPARK] Support the filter operator of null-safe equailty comprison.

https://github.com/elastic/elasticsearch-hadoop/issues/569
I add the support of EqualNullSafe. For now it works fine and identical with EqualTo.
When the given value to the filter is null, Spark physical planning produces IsNull filter. So, it looks fine that it works as EqualTo.
However, it looks we better add some logic for null safety just in case here at EqualNullSafe but also at StringStartsWith, StringEndsWith and StringContains.

CLA sign-up is done.

Merged in master and 2.x


Draft: Environment setup and code updates

This PR adds some tools for setting up a build/run environment with spack, as well as some build logic using CMake

Added spack-repo folder, and defined a nudustc spackage. In prep for including the sundials package for integration, this was included as a dependency.
Included options to CMakeLists.txt to enable building with mpi, openmp. These options turn on/off the respective support for the parallelization options. For now this is straightforward, but in the future there could be mixing of these options that requires some more planning
Some source appears to be still not up-to-date with the main branch. This PR removes some required source files that are not part of the current repo (see commented source files in CMakeLists.txt)

spack
The addition of spack-repo allows for "easy" setup (tho spack itself can be a pain). There are lots of approaches, but myself, I often do:

mkdir nudustc-wksp && cd nudustc-wksp <-- try to keep everything contained under here
git clone https://github.com/spack/spack.git <-- use a "local" spack under nudustc-wksp
git clone https://github.com/lanl/nuDustC.git <-- our repo
source ./spack/share/spack/setup-env.sh <-- if not setup before, there's some work to do for spack to know how to build + what to build on a particular machine
cd nudustc; spack repo add spack-repo <-- tells the spack to use our package.py file
spack install -u cmake nudustc <-- this will install "until cmake", that is will install the dependencies we want (boost, sundials) without building/installing nudustc (spack install --only=dependencies nudustc works too)
spack build-env nudustc -- bash <-- this loads the nudustc build environment, and puts the dependencies into the environment. The -- bash will create a new shell, which is preferred since spack wants to build it without polluting the current shell.
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Debug <-- if everything went well at step 6, CMake should find everything

As you probably know, having spack "just work" like this isn't so simple, but once everything is in place it can really help in firing up development.
Other options for having a distributed (i.e. a setup included in the repo) environment could be conda, conan, vspkg. conda really should just be for python development, but it probably could work here for very simple builds. conan and vspkg are focused on c++, so we may want to look into those either as a spack replacement or in addition to spack
CMake options
I've added these options mostly as placeholders for future development. In practice, we want to use parallelism efficiently, which means figuring out how to use OpenMP, MPI, and potentially GPU offloading. For instance, MPI would be used to parallelize the cells/particles, OpenMP used to calculate the rates, and GPU acceleration used in the integration step. (this is just an example; what is best is usually platform specific, but we want to start to putting the options in the code for this to be controllable).
Other CMake options can be added relating to which parts of the code we want compiled (e.g. selecting an output method, or maybe using a different integrator package).
Other changes
There were some sources (src/destruction.cpp + others) that were listed as expected but did not exist in the main branch. I've commented these out in CMakeLists.txt just to get the code to build.
@SarahStangl I'd like you to review these changes (you can use the green "Review" button that should be on the upper right). I've marked this PR as Draft so that we don't merge it until it's gone under review and discussion.

@SarahStangl for the missing files, you can use this branch to add them, or make a separate PR. Either is fine.
using this PR
This way simplifies the main merge later (tho really that's not something to worry about), since it's just one PR instead of 2.
$> git checkout main; git pull # this is so you get this branch information from github
$> git checkout env_setup
# do you changes, e.g. add files or whatever
$> git add #...what you changed
$> git commit -m "added missing files to env PR" # messages can be anything
$> git push -u origin env_setup

makeing a new PR
Here, we don't need to worry about any changes I've made, because everything will get sorted out when merged into main down the line. git makes this very efficient and why it's used for collaborative development.
$> git checkout main; git pull # always a good idea reguardless
$> git checkout -b fix_missing_files # this creates a branch
# do you changes, e.g. add files or whatever
$> git add #...what you changed
$> git commit -m "added missing files"
$> git push -u origin fix_missing_files
# ... some stuff git tells you. will give you a link to create a PR for this branch


Separate sphinx into its own plugin and refactor

This is my first stab at breaking this apart.  So when I began to dig deep into this thing to separate the Sphinx stuff out, the spaghetti code that the gradle DSL and groovy generates by nature was driving me insane.  Its so hard to read.  So i decided to go ahead and apply some techniques that I came up with that i think vastly improve the readability of the code.  It allows for things to be broken apart, separated, and grouped by function.  I like this style, i think its very clean, it helps me, I hope you do too.
In addition to style, the abstract class i added null checks everything.  so it only creates the task if it can't find an existing one, it only applies the plugin if it isn't already applied and such.  I learned from bitter experience that this check is a very good idea.
I did open an issue during the course of checking this out:
https://github.com/linkedin/pygradle/issues/117
The tests will fail until i get an answer on it.  My preference is creating new tasks for the modified functionality, but i'm fairly certain that would break things on your side.  So as soon as you tell me what you want me to do there, i can fix the tests.
I still have a lot of testing and polishing to do, so this isn't even close to ready yet.  but since the changes were pretty substantial, i wanted to get this out there and get you guys commenting on it as soon as i could.

Ok, the ci circle one has me stumped.  can anyone give me a direction as to why it would fail like that?  I can't pull down that memory artifact it was talking about

Looks like there is a codenarc issue for the integTests. Is that what your talking about?

that came later.   CircleCI stated that it failed because the test suite blew the 4 gig jdk on an agent

Interesting. I'm OK with disabling codenarc on tests and integTests. I don't think they have much value. If you see that again try it and see if that helps.

thats a slippery slope.  As annoying as it is, I'd rather not.  The value is in the practice of following the rules.  I had to disable one check for method length because there was no other way to do it, but I have been on projects where the tests were a mess and I'd rather not.

hey, right there, look at circleci now.  Thats the same error i got before.  reply that you saw it cuz i wont touch anything so you can see it

Another option is to split the build into 2 (or more) discreet tasks so they don't try to use to much memory. Or we can set the max gradle JVM size to a smaller value.
Memory from your failed build
 13102 1429504 28.4 /usr/lib/jvm/jdk1.8.0/bin/java -XX:+HeapDumpOnOutOfMemoryError -Xmx2048m -Dfile.encoding=UTF-8 -Duser.country=US -Duser.language=en -Duser.variant -cp /home/ubuntu/.gradle/wrapper/dists/gradle-3.0-bin/2z3tfybitalx2py5dr8rf2mti/gradle-3.0/lib/gradle-launcher-3.0.jar org.gradle.launcher.daemon.bootstrap.GradleDaemon 3.0
 13624 1033940 16.2 /usr/lib/jvm/jdk1.8.0/bin/java -Djava.security.manager=worker.org.gradle.process.internal.worker.child.BootstrapSecurityManager -Dfile.encoding=UTF-8 -Duser.country=US -Duser.language=en -Duser.variant -ea -cp /home/ubuntu/.gradle/caches/3.0/workerMain/gradle-worker.jar worker.org.gradle.process.internal.worker.GradleWorkerMain 'Gradle Test Executor 4'
 13317 806612 9.3 /usr/lib/jvm/jdk1.8.0/bin/java -Djava.security.manager=worker.org.gradle.process.internal.worker.child.BootstrapSecurityManager -Dfile.encoding=UTF-8 -Duser.country=US -Duser.language=en -Duser.variant -cp /home/ubuntu/.gradle/caches/3.0/workerMain/gradle-worker.jar worker.org.gradle.process.internal.worker.GradleWorkerMain 'Gradle Compiler Daemon 2'
 21026 408808 181 /usr/lib/jvm/jdk1.8.0/bin/java -XX:MaxPermSize=256m -XX:+HeapDumpOnOutOfMemoryError -Xmx1024m -Dfile.encoding=UTF-8 -Duser.country=US -Duser.language=en -Duser.variant -cp /home/ubuntu/.gradle/wrapper/dists/gradle-3.0-bin/2z3tfybitalx2py5dr8rf2mti/gradle-3.0/lib/gradle-launcher-3.0.jar org.gradle.launcher.daemon.bootstrap.GradleDaemon 3.0
 13219 302800 1.5 /usr/lib/jvm/jdk1.8.0/bin/java -Djava.security.manager=worker.org.gradle.process.internal.worker.child.BootstrapSecurityManager -Dfile.encoding=UTF-8 -Duser.country=US -Duser.language=en -Duser.variant -cp /home/ubuntu/.gradle/caches/3.0/workerMain/gradle-worker.jar worker.org.gradle.process.internal.worker.GradleWorkerMain 'Gradle Compiler Daemon 1'

but where is this 4 gigs its talking about, is it taking these 5 dumps and combining them?  I only see it allocating 2 daemons, a  -Xmx2048m, and a  -Xmx1024m with a  -XX:MaxPermSize=256m.  If its totaling, i don't see how splitting it will help.  But granted, I use UrbanCode on a daily basis, not CircleCI so I don't have a clue what this thing is doing memory wise.

Sorry its been a while, life happened.  I split the unit tests into two, its not my best work, but I intentionally made it blazingly obvious on how to pull it out.  Hopefully some day someone can come up with a way to combine them into one suite again.  Im going to bed, the tests usually take about an hour to run so we shall see how things go in the morning

Ok, I don't know how to fix this.  Breaking them up into a different task didn't work, its still hitting some 4 gig limit.  I don't know how it can come nowhere near the limit on my machine but be blowing up to 4 gigs on theirs.

any ideas on how we can fix this test?  i suppose i can comment out a few of the testkit tests to reduce the memory usage, but thats not really a fix.

@scphantm can you disable parallel builds in the gradle.properties and see if that helps. If not ignore circleci and we'll figure out whats going on. As long as the other 2 pass it's good on your side.

Why are we splitting Sphinx into its own plugin @ethankhall ?
Sphinx is integral part of our overall build (for the docs of the package/product) and I don't see the use of it being a separate plugin at all.
If users need a program with Sphinx + dependencies (themes, additional packages) they should build a PEX executable using the existing pex plugin and use that executable program for their documentation needs.

we are splitting it off because im using this for a language agnostic documentation system.  my enterprise wants to use sphinx to handle code documentation for several hundred projects in about 4 different languages, none of them python.

I'll repeat: If users need a program with Sphinx + dependencies (themes, additional packages) they should build a PEX executable using the existing pex plugin and use that executable program for their documentation needs.
You can build yourself a sphinx executable using pygradle and use that executable for N other languages you need it for.

because the PEX support for windows is shady because of the symlink issues.  Yes, win 10 added symlinks, but only administrators can create them (my users have no admin access) and my 2000 developer machines are windows 7 with no plans to upgrade them for a few years.
We have been running this in snapshot in various forms for a few months now.  This technique runs great, and it adds an additional, very powerful, use case to the plugin.

Thanks for explaining your use case.
I still don't think that this much refactoring is needed just to create a plugin.
Can we re-focus and concentrate on making just a plugin?
If any refactoring of the rest of the code is needed we can send the fixes as separate commits.
We have thousands of working builds running every day at LinkedIn and cannot afford the breakage caused by the previous Windows refactoring again. We must be able to consume new versions of pygradle internally without a hitch. Large refactoring does not help with that.

@scphantm I talked with CircleCI and we now have 8G of memory on our tests, so we shouldn't run into the OOM problem anymore.

hey, i didn't forget this.  What happened is are forking this and bringing it internal.  This turned out to be far more important that i originally thought as our needs changed.  Also i had to almost completely rewrite the pivy-importer to work with our enterprise integration bus.  I am going to keep the code organized in such a way that I can try to submit it back when we finish our rollout, at the end of the year, maybe it can be pygradle 1 or 2 or something.  ill contact you when we have our enterprise up on this and see what you want to do from there.


With WebSockets, door becomes "unavailable" on unlock or ring (on 1.1.1)

Rather than showing it unlocked, or showing a doorbell press, the device becomes "unavailable" which makes it impossible to trigger actions.

@ethank unfortunately, the lock entity has to be made unavailable when unlocking because locking is currently unsupported by the API and leaving it active caused all sorts of issues. What kind of trigger are you using? Do you have a DPS installed?
The doorbell press has a separate binary_sensor that becomes true while the doorbell is ringing, false otherwise.

@ethank do you mean the device lock.device_name?
@imhotep I don't see this problem, but I'm using Access version 1.22.10, maybe it's been fixed?

@ethank I am going to close this as there is no way to disable the lock entity without causing other issues. The doorbell press has its own binary_sensor and the API does not support locking a door so have to make it unavailable while unlocked.
If there are specific automations you have in mind, I am happy to help wit those.


Drag and drop a tab onto a single-tab window with no tab bar

Thank you very much for this sample project, it's very useful! This is more or less a feature request, feel free to ignore.
The current implementation doesn't allow for a tab to be moved to another window via drag and drop if that window doesn't already have multiple tabs and its tab bar is hidden. Tabs can only be moved to windows that already display a tab bar.
Ideally I would like to be able to drop a tab onto a single-tab, no-tab-bar window like Safari and Finder allow you to do. Do you have any ideas how this could be achieved?

Similar question here. @DivineDominion - any idea how to easily update this example project? :)

@Kaspik Since that's the macOS default behavior, there'll be tinkering involved. I'd try these steps, but there might be other ways:

We'd need an indicator of "a window is currently dragged".

Observe the NSPasteboard that's responsible for drag & drop if it changes to an observable value when you drag window tabs.
Maybe there's a notification of KVO'able state when a window begins being dragged around by its tab?

We'd need to accept drops in the other NSWindow, where the tab bar is not visible

Observe mouse movement above the drop target NSWindow; if our indicator "a window is being dragged by its tab" is true, animate display of the tab bar if needed, so users have a drop target.

Make sure that dragging a window in the title bar does not trigger accidental merging of windows. Maybe allow merging of windows when the dragged window is released above the drop target's tab bar, though?  That could be useful when the dragged window doesn't originate as a tab, either.
Overall that's a cool feature, so if you come up with anything, I'd be happy to merge the feature here, too, and spread the word on my blog.


About the training pair

Thanks for your great work!
I would like to know what format the training data is in.

Sorry I didn't express my question clearly. I mean, is the input and output of training, like IPAdapter, trained as a reconstruction task, i.e. the input style image is the target image?

understand. Thank you for your patience.

hello,  What is used for training loss in this paper? @GongyeLiu

Hello, just the common MSE loss for diffusion models.


Modal forms for sign-in / sign-up

something to design as a plugin-package to be added with something like
meteor add useraccounts:modal

should be something on the lines pioneered by @zachdixon and @BradRyan as stated in #153

@fpoirier1, Thanks for working on the submitHook... worked perfectly.  I was working on a new app and this was the solution for redirecting after successfull sign in... love my sign in modals :).  Without it, AccountsTemplates.avoidRedirect = true was preventing me from redirecting, even though I was setting it to false on user logout.  I guess the redirect function was firing before my Tracker function could set it to false.
In case anyone else is interested in modals for sign-in, I'll share my setup.  In my navbar, I have a sign in button that show's a modal and set the session var 'currentModal' to true, which I fetch in tracker.autorun to prevent page redirect behind the modal.
In Tracker.autorun:
Tracker.autorun(function() {
if (Meteor.userId()) {
      Session.set('currentModal',false);
      $('#BetaSigninModal').modal('hide');
  }
AccountsTemplates.avoidRedirect = Session.get('currentModal');
}

Navbar event handler:
Template.AdminLayout.events({
	'click #signIn': function() {
               Session.set('currentModal',true);
               $('#BetaSigninModal').modal('show');
	}
});

In my at_config.js file:
var mySubmitFunc = function(error, state){
  if (!error) {
    if (state === "signIn") {
      // Successfully logged in
      Router.go('/admin/account');
      $('#signinModal').modal('hide');
    }
  }
};

AccountsTemplates.configure({
    onSubmitHook: mySubmitFunc
});

Thanks again for the package!

@BradRyan thanks for sharing!
Lets consider this when I'll be on v2.0 packages
Cheers

Sounds good!  Just a quick update before I forget.  I noticed a bug after my page would reroute on sign-in.  I ended up having to wait for the modal to close before calling Router.go, otherwise not all of the modal classes would clear before routing.  As a result, my body appeared to be frozen, but the modal-open class had persisted.  I update my code above with the fix.

@BradRyan, lets have a look at the new client hooks introduced with<EMAIL_ADDRESS>

See the modal-forms card on Trello

AccountsTemplates.avoidRedirect = true;
Can we please add it to the Readme? I had to dig it out, when it was so simple


Apps to auto-select in App Grabber

Firefox (64 bit)
Google Chrome (64bit, not shown at all in App Grabber)
VLC (64bit, not shown at all in App Grabber)

And the 32bit releases if they also lack...
Would it be possible to also create default groups ?
I think at least an 'Office' category is mandatory, because libreoffice and Microsoft Office add many entries.
Something like this would be a good start I think (Photo from the official website).

These should be included already, but after looking into this I found some other bugs that caused these to be skipped over.
Pre-categorizing these is a good idea. I will give it a go.

@dremin Could you list the apps that should be auto-selected please ?
I would like to add some other apps but if there are bugs preventing them to show it will just bother you unnecessarily.

The bug was with multiple shortcuts to the same application, so doesn't affect most apps, and will be fixed in the next build.
Here is the list of app names that Cairo currently looks for. Feel free to add your suggestions here.

@dremin Some random unordered thoughts abouts categories, feel free to ignore some or all of them if they are not relevant.

Do you consider paint as an accessory? Microsoft do, but I'm not so sure it is relevant. Letting it in accessories does not lead to confusion due to the app's lack of complexity. But we have an appropriate Graphic category, what about using it?
Is it relevant to list libreoffice safe mode? I personally never used it I think (I frequently erase profile though when encountering bugs after update so I'm really not of sound advice on this).
Can you make a special 'Other' category at the end of all of them? It would list everything that is not in a category. So, e.g. I add Core Temp in app grabber, it does not belong to a category and it is one of the only app that is in that case, I will then check in 'Other' instead of in 'All' where I'm sure 90% of the app are not the one I seek for.
Perhaps auto-selecting Internet as default category would be good. I mean, it is what most people use (but not necessarily what typical cairo users would of course). I just thought that opening by default on 'All' is not nice, the list is pretty long. I feel a bit overwhelmed, perhaps the list height is a bit too much compared to it's width. It is no more tall than native start menu, but perhaps the impression is because the text is more compact.

@ dremin File explorer is uncategorized in task view (sorry, not the best place to report it)

Notepad++ should be in dev tools, not accessory.

@mdmk -

Uncategorized is hidden from Programs menu intentionally.
Safe mode icons should be hidden in the next build.
Notepad++ category will be Development by default in the next build.

The latest build includes the fixes mentioned above. Closing this issue as there are no more outstanding items that I plan on addressing. Thanks for providing the suggestions, this feature is much more complete with them implemented.

I spotted a regression on M3.6557
This apps are no longer auto-selected, unlike before (it is working fine in M3.6555) :

Calculator
Sticky notes
Edge
Dropbox
As for OBS, it is now called "OBS Studio (64bit)" and "OBS Studio (32bit)", not "Open Broadcast Software" like the legacy implementation that is discontinued.
So it is not selected by default. On 64bit OS the setup installs both 32 and 64bit versions.

The above items should be resolved in the next build.


Set body height 100% to run with egui #1642

https://github.com/emilk/egui/issues/1642

Does this affect the current demo?

Its in a case https://github.com/emilk/egui/pull/1650 be merged

Closed by https://github.com/emilk/eframe_template/commit/88e0b19c50bd444b5f19a90c931c96e376439404


Expose lr_scheduler to pl.LightningModule as a property (self.scheduler)?

What is your question?
Dear all,
Is lr_scheduler (or an array of them) exposed to pl.LightningModule as self.scheduler or something similar ? I only see self.trainer but self.scheduler would really complement the trainer!
What have you tried?
I tried looking for self.scheduler (and different variants) in the source / PDF manual but found nothing
What's your environment?

OS: CentOS 6
Packaging: conda
Version: 1.0.4

it's not there yet. Mind submit a PR to add that?

Looks like we should be accessing it via self.trainer.schedulers (rather than directly via self.schedulers) for consistency with self.trainer.optimizers. I'll submit a PR soon.

Hey, I think you can access the scheduler by using trainer.lr_schedulers, therefore maybe you could access from your pl_module by using self.trainer.lr_schedulers

@MohammedAljahdali I don't see lr_schedulers anywhere in trainer.py. Would you mind pointing me to the right location where it is defined?

@seannz it's added here:
https://github.com/PyTorchLightning/pytorch-lightning/blob/a32bffcdea3c12fb369f2cb87cbcf8b7e91396e6/pytorch_lightning/accelerators/accelerator.py#L187-L194

Hey, I think you can access the scheduler by using trainer.lr_schedulers, therefore maybe you could access from your pl_module by using self.trainer.lr_schedulers

yes you can access it via self.trainer but I think it can be exposed to LightningModule as property just like optimizers


[R-package] Fix Rmarkdown compilation

This might due to recent updates in interface, there are a few errors in the rmarkdown compilation here https://xgboost.readthedocs.org/en/latest/R-package/index.html
@pommedeterresautee can you look into it and update these. See how to compile the rmarkdown in https://xgboost.readthedocs.org/en/latest/dev-guide/contribute.html#r-package

@tqchen I have some difficulties to compile the project on my Windows 8 machine.
==> devtools::document(roclets=c('rd', 'collate', 'namespace'))

Updating xgboost documentation
Loading xgboost
Re-compiling xgboost
"C:/PROGRA~1/R/R-32~1.3/bin/i386/R" --no-site-file --no-environ --no-save  \
  --no-restore CMD INSTALL  \
  "C:\Users\mbenesty\Documents\GitHub\xgboost\R-package"  \
  --library="C:\Users\mbenesty\AppData\Local\Temp\Rtmp6LJMlg\devtools_install_19bc14b63144"  \
  --no-R --no-data --no-help --no-demo --no-inst --no-docs --no-exec  \
  --no-multiarch --no-test-load --preclean

* installing *source* package 'xgboost' ...
** libs
cp -r ../../src .
cp -r ../../rabit .
cp -r ../../dmlc-core .
cp -r ../../include .
cp -r ../../amalgamation .
g++ -m32 -std=c++0x -I"C:/PROGRA~1/R/R-32~1.3/include" -DNDEBUG -I.//include -I.//dmlc-core/include -I.//rabit/include -I./ -DXGBOOST_STRICT_R_MODE=1 -DDMLC_LOG_BEFORE_THROW=0 -DDMLC_ENABLE_STD_THREAD=0 -DDMLC_DISABLE_STDIN=1 -DDMLC_LOG_CUSTOMIZE=1 -DXGBOOST_CUSTOMIZE_LOGGER=1 -DRABIT_CUSTOMIZE_MSG_ -DRABIT_STRICT_CXX98_    -I"d:/RCompile/r-compiling/local/local323/include"  -fopenmp -pthread   -O2 -Wall  -mtune=core2 -c xgboost_R.cc -o xgboost_R.o
xgboost_R.cc:2:26: fatal error: dmlc/logging.h: No such file or directory
compilation terminated.
make: *** [xgboost_R.o] Error 1
Warning: l'ex�cution de la commande 'make -f "Makevars.win" -f "C:/PROGRA~1/R/R-32~1.3/etc/i386/Makeconf" -f "C:/PROGRA~1/R/R-32~1.3/share/make/winshlib.mk" CXX='$(CXX1X) $(CXX1XSTD)' CXXFLAGS='$(CXX1XFLAGS)' CXXPICFLAGS='$(CXX1XPICFLAGS)' SHLIB_LDFLAGS='$(SHLIB_CXX1XLDFLAGS)' SHLIB_LD='$(SHLIB_CXX1XLD)' SHLIB="xgboost.dll" ' renvoie un statut 2
ERROR: compilation failed for package 'xgboost'
* removing 'C:/Users/mbenesty/AppData/Local/Temp/Rtmp6LJMlg/devtools_install_19bc14b63144/xgboost'
Erreur : Command failed (1)
Ex�cution arr�t�e

Exited with status 1.

I will try this sunday on my Linux machine.
Kind regards,
Michaël

I encountered the same error:
* installing *source* package ‘xgboost’ ...
** libs
clang++ -std=c++11 -I/usr/local/Cellar/r/3.2.1_1/R.framework/Resources/include -DNDEBUG -I../..//include -I../..//dmlc-core/include -I../..//rabit/include -I../../ -DXGBOOST_STRICT_R_MODE=1 -DDMLC_LOG_BEFORE_THROW=0 -DDMLC_ENABLE_STD_THREAD=1 -DDMLC_DISABLE_STDIN=1 -DDMLC_LOG_CUSTOMIZE=1 -DXGBOOST_CUSTOMIZE_LOGGER=1 -DRABIT_CUSTOMIZE_MSG_ -DRABIT_STRICT_CXX98_ -I/usr/local/opt/gettext/include -I/usr/local/opt/readline/include     -fPIC  -g -O2 -c xgboost_R.cc -o xgboost_R.o
xgboost_R.cc:2:10: fatal error: 'dmlc/logging.h' file not found
#include <dmlc/logging.h>
         ^
1 error generated.
make: *** [xgboost_R.o] Error 1
ERROR: compilation failed for package ‘xgboost’
* removing ‘/usr/local/Cellar/r/3.2.1_1/R.framework/Versions/3.2/Resources/library/xgboost’
* restoring previous ‘/usr/local/Cellar/r/3.2.1_1/R.framework/Versions/3.2/Resources/library/xgboost’
Error: Command failed (1)

@tqchen Last time I was executing the same devtools::install_git('git://github.com/dmlc/xgboost',subdir='R-package') but it's actually installing the version on master so the installation actually didn't succeed on mac. Maybe there's something I missed.

The master version should be ready. Could due to not up to date version of devtools, we need a recursive clone to get the submodules. Try
devtools::install_git('git://github.com/dmlc/xgboost',subdir='R-package', args='--recursive')

@pommedeterresautee You will need to recursively clone the submodules as well, and we should add this note to installation guide. You can open a git shell, and do
git submodule init
git submodule update

I am having the same compilation error, @tqchen , I tried your solution without succes.
devtools::install_git('git://github.com/dmlc/xgboost',subdir='R-package', args='--recursive')
Downloading git repo git://github.com/dmlc/xgboost
Installing xgboost
'/usr/lib64/R/bin/R' --no-site-file --no-environ --no-save --no-restore CMD INSTALL '/tmp/Rtmp1jStfU/file3e382ec8d331/R-package'  \
  --library='/home/sam/R/x86_64-pc-linux-gnu-library/3.2' --install-tests

* installing *source* package ‘xgboost’ ...
** libs
g++ -std=c++11 -I/usr/include/R/ -DNDEBUG -I../..//include -I../..//dmlc-core/include -I../..//rabit/include -I../../ -DXGBOOST_STRICT_R_MODE=1 -DDMLC_LOG_BEFORE_THROW=0 -DDMLC_ENABLE_STD_THREAD=1 -DDMLC_DISABLE_STDIN=1 -DDMLC_LOG_CUSTOMIZE=1 -DXGBOOST_CUSTOMIZE_LOGGER=1 -DRABIT_CUSTOMIZE_MSG_ -DRABIT_STRICT_CXX98_ -D_FORTIFY_SOURCE=2   -fopenmp  -fpic  -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -c xgboost_R.cc -o xgboost_R.o
xgboost_R.cc:2:26: fatal error: dmlc/logging.h: No such file or directory
compilation terminated.
/usr/lib64/R/etc/Makeconf:141: recipe for target 'xgboost_R.o' failed
make: *** [xgboost_R.o] Error 1
ERROR: compilation failed for package ‘xgboost’
* removing ‘/home/sam/R/x86_64-pc-linux-gnu-library/3.2/xgboost’
* restoring previous ‘/home/sam/R/x86_64-pc-linux-gnu-library/3.2/xgboost’
Error: Command failed (1)
In addition: Warning message:
`args` is deprecated

Maybe the recursive argument isn't passed to git?

@tqchen indeed, it fixes my issue. Thanks.
@SamDM just for test, try to clone the repository in a new folder, it will have updated submodules.

@SamDM args has been deprecated in devtools. Try the code below:
install.packages("drat", repos="https://cran.rstudio.com")
drat:::addRepo("dmlc")
install.packages("xgboost", type = "source")

This has been fixed.
The error in markdown is not due to the change in interface.
You need to require(methods) manually when using Rscript in command line. Rscript doesn't load any default packages.


feat: center align action forms

Description
This PR will align the action forms to the center.
Fixes #Issue Number
or
Fixes Issue URL

[!WARNING]
If no issue exists, please create an issue first, and check with the maintainers if the issue is valid.

Automation
/ok-to-test<EMAIL_ADDRESS>@tag.Datasource"
:mag: Cypress test results

[!CAUTION]
If you modify the content in this section, you are likely to disrupt the CI result for your PR.

Communication
Should the DevRel and Marketing teams inform users about this change?

[ ] Yes
[x] No

/build-deploy-preview skip-test=true

/build-deploy-preview skip-test=true


Сhild element

Hi! Please tell me! How to add a template #icon to a child element?

If it's not difficult, can I have a more detailed answer?

Perfectly! Thank you very much! You have helped me a lot!

You're welcome.


warning: conflicting chdir during another chdir block

I get a lot of
/Library/Ruby/Gems/2.0.0/gems/credentials_manager-0.8.2/lib/credentials_manager/appfile_config.rb:31: warning: conflicting chdir during another chdir block
As a (possible) result lots of times I will get errors like
gym: No project/workspace found in the current directory
snapshot: No such file or directory - ./fastlane
This didn't happen before the last big update.

Similar issue, running fastlane beta, gets to the deliver step then
/Library/Ruby/Gems/2.0.0/gems/credentials_manager-0.8.2/lib/credentials_manager/appfile_config.rb:31: warning: conflicting chdir during another chdir block
[10:51:18]: You passed invalid parameters to 'deliver'.
...
[10:51:18]: fastlane finished with errors
/Library/Ruby/Gems/2.0.0/gems/fastlane_core-0.18.1/lib/fastlane_core/configuration/configuration.rb:52:in `block in verify_value_exists': Could not find option 'beta' in the list of available options

@OJDee : Deliver has received a major update to use spaceship and a some parameters have been changed. There is a migration guide to guide you through them : https://github.com/KrauseFx/deliver/blob/feature/spaceship/MigrationGuide.md
Regarding the main issue of the ticket I have it too since the last update :+1:

I'm seeing the same issue although not when gym is the only thing in a lane. It is happening when preceded by:
     ensure_git_branch(branch: '(develop)|(master)')
     ensure_git_status_clean
     increment_build_number

Will try to narrow it down further.

I'm seeing the same issue.  If I try to increment the build number and then call gym it causes issues.
/Users/michaelayles/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/credentials_manager-0.8.2/lib/credentials_manager/appfile_config.rb:31: warning: conflicting chdir during another chdir block
/Users/michaelayles/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/credentials_manager-0.8.2/lib/credentials_manager/appfile_config.rb:31: warning: conflicting chdir during another chdir block

@maxbritto thanks for the heads up. Even when I install spaceship I get the same issue - bear in mind I am calling fastlane not deliver, so having upgraded to latest version of fastlane I thought all it's components would have been updated too. Is there somewhere to just get all the latest version and have it just work through fastlane?

I'm having the same issue when calling sigh...

@OJDee : You are calling fastlane and fastlane is calling deliver for you (probably in one of your fastfile lanes). Everything has probably been updated correctly and that is why you must update you deliver configuration and the params that fastlane gives to deliver in the fastfile.

Same here :+1:

Also same issue.  Did fastlane init, then tried fastlane test.  The gym build works but fastlane fails in chdir to ./fastlane/

Sorry everyone for introducing this issue. I just pushed a new version (https://github.com/fastlane/fastlane_core/issues/34), please update using sudo gem update fastlane_core

And please let me know if that fixes your problem.

Seems to work for me. Thanks for all your work. Sorry I didn't have time today to dig deeper into it to send you PR.

Thanks for confirming @josephlord :+1:

Fixed it for me as well. Thanks.

On Sep 30, 2015, at 11:22 AM, Felix Krause<EMAIL_ADDRESS>wrote:
Sorry everyone for introducing this issue. I just pushed a new version (fastlane/fastlane_core#34 https://github.com/fastlane/fastlane_core/issues/34), please update using sudo gem update fastlane_core
—
Reply to this email directly or view it on GitHub https://github.com/KrauseFx/fastlane/issues/643#issuecomment-144482221.

Great, I'll close this issue for now :+1:


Implement clustering

Basically, the master could have an array of servers and distribute them to workers as needed. Then, in the worker processes, they could choose to only handle events from their servers.

Note that some commands use in-memory objects to store data, but I don't believe there are any cases where this data would need to persist between servers.


Fix issue with width on custom filter component

Fix #790

Coverage remained the same at 75.972% when pulling 14aec9ae4821a237dc140dbcd9ef7eda8ea77117 on pkmnct:patch-1 into 6e973d22c8d3b67c983ae57deb6cd8edc11b037d on gregnb:master.

Hm, not sure I see how this relates to custom filters. Custom filters are rendered using the renderCustomField method, not the renderSelect method. What are your filterOptions?

@gabrielliwerant You are correct. It turns out this was an issue on my implementation. I've closed the issue and PR!

I did some more research on this, and I figured out what was causing the weirdness. The FormControl components for the Select and TextField filter options had a style that did the equivalent of the fullWidth prop. I've removed this style and used fullWidth on all of the FormControls that had used it, in addition to the one for the custom filter type.


Feedback on SBI 3.0

DBTR:

"The configuration of each debug trigger is expressed by three entities" ->
"The configuration of each debug trigger is expressed by three parameters" ->

sbi_debug_set_shmem - is it allowed for the shared memory to be
discontigous i.e. wrap around at the boundary of the maximum supported
physical address?

sbi_debug_read_triggers - does the trig_state get sanitized in any form?
Why is desired to return the hardware index? For SBI provided by a
hypervisor, is the expectation that the VU/VS refer to the guest of the
guest hypervisor? Is it an error to specify non-zero VU/VS privileges
H extension is not supported.

The usage of the mask in functions such as sbi_debug_uninstall_triggers
is not specified.

MPXY:

MSI Interrupt -> MSI

sbi_mpxy_write_attributes - description is copied from sbi_mpxy_read_attributes
and needs update.

sbi_mpxy_send_message_with_response - "After sending the message, this
function waits for SBI implementation for the message response." This text
does not read right.

"Some messages may require sending multiple times for complete data transfer "
Is the intent to say "send data using multiple messages" or "Send multiple
messages for complete data transfer"? This sentence should be reworded.

"If any notification indication mechanism" -> "If no notification mechanism"?
Reword the second non-normative note on page 97

"In the shared memory, 16 bytes starting from offset 0x0 are used for this
state data." Is the intent that the 16 bytes are used to return the state
data and not used for holding this state data?

FWFT:

FWFT states "control behavior of firmware features". However, the types
related mostly to controlling hardware features. The description should be
updated to better reflect the extensions purpose.

When supervisor mode exists, medeleg must exist. The description "if medeleg
is present" is redundant as supervisor mode is required for SBI.

Pointer masking tag length -> pointer masking length

"for supervisor mode" is redundant in description of DOUBLE_TRAP.

If an implementation supports PMLEN of 7 and 16 and FWFT may pick a
PMLEN >= N then it seems impossible to set PMLEN of 7 if the implementation
always picks 16. Is that intentional? Why?

sbi_fwft_get does not provide a way to read back the flags such as the LOCK.

SSE:

"global software event is a system event and can be handled by any
hart." this may want to be more constrained to say "participating harts"

Should there be two RAS events - to denote high and low priority?

EventID based priority - this would always favor the lower numbered 16-bit
group. Is that intentional?

Is a partial success allowed when write of SSE an event attribute fails?

Is handler entry PC checked for validity? Are there rules for supervisor
when its switching to/from Bare virtual memory system mode.

When a SSE is registered, is it in masked state? Should mask/unmask check
for being in REGISTERED state or ENABLED state?

This section is missing guidance and rules on implementing SSE handlers.
For instance, is it allowed for an SSE handler to cause an exception.

Have the interactions of SSE with double trap been considered? Is it legal
to cause an SSE when SDT is 1 for reasons other than notifying occurrence
of a double trap?

DBTR:
"The configuration of each debug trigger is expressed by three entities" ->
"The configuration of each debug trigger is expressed by three parameters" ->

Done.

sbi_debug_set_shmem - is it allowed for the shared memory to be
discontigous i.e. wrap around at the boundary of the maximum supported
physical address?

Any shared memory in the SBI spec is guided by chapter 3.2. Shared memory physical address range parameter. Discontiguous memory is not allowed. If shared memory crosses maximum supported physical address then it is technically not accessible to supervisor software so we should return SBI_ERR_INVALID_ADDRESS
Please let us know if you think more clarification is necessary in 3.2

sbi_debug_read_triggers - does the trig_state get sanitized in any form?

Some of the RISC-V implementations require actual hardware trigger index to start/stop trace. Upon request from such RISC-V implementations, we have kept an optional hardware index trigger state which SBI implementation may or may not provide.

Why is desired to return the hardware index?

Some of the RISC-V implementations require actual hardware trigger index to start/stop trace. Upon request from such RISC-V implementations, we have kept an optional hardware index trigger state which SBI implementation may or may not provide.

For SBI provided by a
hypervisor, is the expectation that the VU/VS refer to the guest of the
guest hypervisor? Is it an error to specify non-zero VU/VS privileges
H extension is not supported.

Yes, that is correct. Specifying VU/VS privileges in trig_tdata1 when H-extension is not support is clearly an invalid configuration and sbi_debug_install_triggers() returns SBI_ERR_INVALID_PARAM.

The usage of the mask in functions such as sbi_debug_uninstall_triggers
is not specified.

The SBI implementation finds a set of trigger IDs with a combination of base and mask. This allows supervisor mode software to uninstall/enable/disable multiple triggers at once. It can invoke these functions multiple times with different base to set trigger IDs > unsigned long as well.
Clarifications to each function along these lines added. See PR #

MPXY:
MSI Interrupt -> MSI

Done.

sbi_mpxy_write_attributes - description is copied from sbi_mpxy_read_attributes
and needs update.

Overall layout of the text is the same as sbi_mpxy_read_attributes() but there are differences. Can you let us know which part of text needs to be updated ?

sbi_mpxy_send_message_with_response - "After sending the message, this
function waits for SBI implementation for the message response." This text
does not read right.

Fixed. See PR PR

"Some messages may require sending multiple times for complete data transfer "
Is the intent to say "send data using multiple messages" or "Send multiple
messages for complete data transfer"? This sentence should be reworded.

Fixed. See PR

"If any notification indication mechanism" -> "If no notification mechanism"?
Reword the second non-normative note on page 97

Fixed. See PR

"In the shared memory, 16 bytes starting from offset 0x0 are used for this
state data." Is the intent that the 16 bytes are used to return the state
data and not used for holding this state data?

Yes.

FWFT:
FWFT states "control behavior of firmware features". However, the types
related mostly to controlling hardware features. The description should be
updated to better reflect the extensions purpose.

Fixed. See [PR] (https://github.com/riscv-non-isa/riscv-sbi-doc/pull/190)

When supervisor mode exists, medeleg must exist. The description "if medeleg
is present" is redundant as supervisor mode is required for SBI.

Fixed. See [PR] (https://github.com/riscv-non-isa/riscv-sbi-doc/pull/190)

Pointer masking tag length -> pointer masking length
"for supervisor mode" is redundant in description of DOUBLE_TRAP.

Done

If an implementation supports PMLEN of 7 and 16 and FWFT may pick a
PMLEN >= N then it seems impossible to set PMLEN of 7 if the implementation
always picks 16. Is that intentional? Why?

We are not sure if we follow your question here. The firmware feature allows to set the PMLEN value >=N.
When you say "implementation always picks 16" - Do you mean SBI implementation or hardware ?

sbi_fwft_get does not provide a way to read back the flags such as the LOCK.

Yes. There is no mechanism to return the state of the flags. Do you envision a use case where it will be useful ? If it is just for informational purposes for supervisor mode software, we can introduce another explicit return code. Currently, SBI_ERR_DENIED is returned if the feature is locked.

SSE:
"global software event is a system event and can be handled by any
hart." this may want to be more constrained to say "participating harts"

Done.

Should there be two RAS events - to denote high and low priority?

Sure. We will add it to both local and global RAS events.

EventID based priority - this would always favor the lower numbered 16-bit
group. Is that intentional?

Yes. Possible high priority events (e.g RAS < PMU).
The event priority is programmable and supervisor software can set desired value but by default it is zero. The EventID based priority is used as a tie-breaker when two events have the same priority. This also means EventID based priority is the default priority behavior.

Is a partial success allowed when write of SSE an event attribute fails?

No. We will clarify it in the specification.

Is handler entry PC checked for validity?

Nope. It's supervisor software's responsibility to pass a valid address. As SBI implementation shouldn't care or access that address at anytime. Thus, if it is an invalid address, it will fault in Supervisor mode after jumping to it.

Are there rules for supervisor
when its switching to/from Bare virtual memory system mode.

It is the supervisor software’s responsibility to either enable/disable event OR re-register a different handler when switching to/from bare virtual memory mode.

When a SSE is registered, is it in masked state? Should mask/unmask check
for being in REGISTERED state or ENABLED state?

Each SSE have an “enabled” state and no mask/unmask state (please refer to the “Software Events State”. The SSE state transitions are independent of the HART SSE mask/unmask state. This means we don’t need to check HART mask/unmask state for registering events. Currently, upon CPU power-down we mask all SSE events for the CPU and unmask all SSE events upon CPU power-up. Same applies to when CPU goes in non-retentive suspend and comes back.

This section is missing guidance and rules on implementing SSE handlers.
For instance, is it allowed for an SSE handler to cause an exception.

Taking trap when handling SSE event in supervisor mode can be catastrophic for supervisor software. We will add some non-normative text.

Have the interactions of SSE with double trap been considered? Is it legal
to cause an SSE when SDT is 1 for reasons other than notifying occurrence
of a double trap?

Taking an SSE has higher priority than taking a trap/interrupt from a supervisor perspective. Each SSE has its own handler and context from a supervisor's perspective, so supervisor software can take SSE even while it was in a low-level trap handler saving/restoring registers.

@avpatel @hschauhan @SiFiveHolland @clementleger @pathakraul @jones-drew : Please add anything if I missed something.

I checked the MPXY related changes and they looks good to me

Overall layout of the text is the same as sbi_mpxy_read_attributes() but there are differences. Can you let us know which part of text needs to be updated ?

"Supervisor software MUST read the message protocol specific attributes via separate call to this function ...." This function is used to write the attributes and not read the attributes.
"Upon calling this function the message channel attribute values are returned starting from the offset 0x0 in the shared memory of the calling hart where the value to be written in attribute with attribute_id =base_attribute_id + i is at the shared memory offset 4 * i." This function should be updating the attribute values and not returning attribute values.
Do these sentences need to be updated?

"In the shared memory, 16 bytes starting from offset 0x0 are used for this
state data." Is the intent that the 16 bytes are used to return the state
data and not used for holding this state data?

Yes.

Then "used for this state data" would want to be updated to "used to return this state data" or similar.

We are not sure if we follow your question here. The firmware feature allows to set the PMLEN value >=N. When you say "implementation always picks 16" - Do you mean SBI implementation or hardware ?

The specification states: "Enable pointer masking for supervisor-mode with PMLEN >= N." This implies that the SBI implementation when invoked with a value of N may choose to enable pointer masking with PMLEN = N or PMLEN > N. Is that the intent to provide the flexibility for the SBI implementation to pick either the specified value of N or any value greater than N?

Yes. There is no mechanism to return the state of the flags. Do you envision a use case where it will be useful ? If it is just for informational purposes for supervisor mode software, we can introduce another explicit return code. Currently, SBI_ERR_DENIED is returned if the feature is locked.

Please consider whether usages like kexec may be surprised by error denied.

"In the shared memory, 16 bytes starting from offset 0x0 are used for this
state data." Is the intent that the 16 bytes are used to return the state
data and not used for holding this state data?

Yes.

Then "used for this state data" would want to be updated to "used to return this state data" or similar.

Fixed in the PR #190

We are not sure if we follow your question here. The firmware feature allows to set the PMLEN value >=N. When you say "implementation always picks 16" - Do you mean SBI implementation or hardware ?

The specification states: "Enable pointer masking for supervisor-mode with PMLEN >= N." This implies that the SBI implementation when invoked with a value of N may choose to enable pointer masking with PMLEN = N or PMLEN > N. Is that the intent to provide the flexibility for the SBI implementation to pick either the specified value of N or any value greater than N?

Thanks for the clarification. Yes. If the value is set to <=7, it will first try to set 7. If failed for some reason, it will try to set 16.
@SiFiveHolland : Please add anything else if required.

Yes. There is no mechanism to return the state of the flags. Do you envision a use case where it will be useful ? If it is just for informational purposes for supervisor mode software, we can introduce another explicit return code. Currently, SBI_ERR_DENIED is returned if the feature is locked.

Please consider whether usages like kexec may be surprised by error denied.

kexec path will invoke hart stop via SBI HSM call. The SBI implementation will unlock any feature that was previously locked. Am I missing any other use case ?

We are not sure if we follow your question here. The firmware feature allows to set the PMLEN value >=N. When you say "implementation always picks 16" - Do you mean SBI implementation or hardware ?

The specification states: "Enable pointer masking for supervisor-mode with PMLEN >= N." This implies that the SBI implementation when invoked with a value of N may choose to enable pointer masking with PMLEN = N or PMLEN > N. Is that the intent to provide the flexibility for the SBI implementation to pick either the specified value of N or any value greater than N?

Thanks for the clarification. Yes. If the value is set to <=7, it will first try to set 7. If failed for some reason, it will try to set 16. @SiFiveHolland : Please add anything else if required.

Yes, it is exactly the intention to provide flexibility to the SBI implementation. The assumption is that software written for a particular PMLEN value will function transparently with a larger PMLEN. It is valid for hardware to support PMLEN = 16 but not PMLEN = 7, and the current API abstracts this away from S-mode software. This also provides transparent forward compatibility for whatever meaning is assigned to the reserved PMLEN encoding. The OpenSBI algorithm of trying PMLEN = 7 first is not guaranteed by the spec.

Yes. There is no mechanism to return the state of the flags. Do you envision a use case where it will be useful ? If it is just for informational purposes for supervisor mode software, we can introduce another explicit return code. Currently, SBI_ERR_DENIED is returned if the feature is locked.

Please consider whether usages like kexec may be surprised by error denied.

kexec path will invoke hart stop via SBI HSM call. The SBI implementation will unlock any feature that was previously locked. Am I missing any other use case ?

The "boot hart" of the new kernel will not go through HSM hart stop. I still think the current behavior is okay; if S-mode chooses to lock a feature, then it must be prepared for the consequences (e.g. maintaining a valid shadow stack through the kexec path).

The text as written states: "Enable pointer masking for supervisor-mode with PMLEN >= N". Consider an implementation that always picks "16" irrespective of whether N was 7 or 16. In such an implementation, there no way to select 7 even when the hardware supports it. Is picking 16 when OS requested 7 transparent for all OS's. Would some OSs rather not run with PM when their requested length is not supported by hardware? Would a Sv57 OS that invoked this call when it had data mapped into high addresses be surprised when a PMLEN wider than what it requested becomes active when this call returns?

kexec path will invoke hart stop via SBI HSM call. The SBI implementation will unlock any feature that was previously locked. Am I missing any other use case ?

Should this text clarify that sbi_hart_stop should be considered hart reset?

If provided, once set, the feature value can no longer be modified until:

hart reset for feature with local scope
system reset for feature with global scope

The text as written states: "Enable pointer masking for supervisor-mode with PMLEN >= N". Consider an implementation that always picks "16" irrespective of whether N was 7 or 16. In such an implementation, there no way to select 7 even when the hardware supports it. Is picking 16 when OS requested 7 transparent for all OS's. Would some OSs rather not run with PM when their requested length is not supported by hardware? Would a Sv57 OS that invoked this call when it had data mapped into high addresses be surprised when a PMLEN wider than what it requested becomes active when this call returns?

Right. A larger than requested PMLEN is not transparent when the mask bits overlap with valid virtual address bits. Since the SBI implementation cannot know which addressing mode S-mode will use, the SBI implementation would only be allowed to choose a larger PMLEN if doing so doesn't overlap with the hardware's widest addressing mode. Either that, or we should require that PMLEN = N all the time.

mode

Yes. There is no mechanism to return the state of the flags. Do you envision a use case where it will be useful ? If it is just for informational purposes for supervisor mode software, we can introduce another explicit return code. Currently, SBI_ERR_DENIED is returned if the feature is locked.

Please consider whether usages like kexec may be surprised by error denied.

kexec path will invoke hart stop via SBI HSM call. The SBI implementation will unlock any feature that was previously locked. Am I missing any other use case ?

The "boot hart" of the new kernel will not go through HSM hart stop. I still think the current behavior is okay; if S-mode chooses to lock a feature, then it must be prepared for the consequences (e.g. maintaining a valid shadow stack through the kexec path).

I think it is already taken care of in shadow stack patches. Cc: @deepak0414 for confirmation.

I think it is already taken care of in shadow stack patches. Cc: @deepak0414 for confirmation.

The primary question was about the ability to read back that a feature is locked. Not being able to unlock it seems fine. However, presently software has no way to determine a) whether it is locked and b) reason why a feature that is being enumerated is being denied. If software could read the status of that the feature is locked it may not get surprised. Is this an issue?

I think it is already taken care of in shadow stack patches. Cc: @deepak0414 for confirmation.

The primary question was about the ability to read back that a feature is locked. Not being able to unlock it seems fine. However, presently software has no way to determine a) whether it is locked and b) reason why a feature that is being enumerated is being denied. If software could read the status of that the feature is locked it may not get surprised. Is this an issue?

via another API(e.g get_flag_status) or just as a explicit error code as SBI_ERR_LOCKED ?
If there are multiple flags define, the explicit API would fit well. It may be an an overkill for just for 1 flag as we are not sure if we will have many more flags in the future.

via another API(e.g get_flag_status) or just as a explicit error code as SBI_ERR_LOCKED ?

Will defer that to the TG to decide the right way.

via another API(e.g get_flag_status) or just as a explicit error code as SBI_ERR_LOCKED ?

Will defer that to the TG to decide the right way.

Sure. We will discuss in the TG in the next meeting.

First thing kexec flow will do is that it will take hart satp to bare mode.
And that will effectively break shadow stack. If menvcfg.SSE = 1, then all shadow stack instructions will
start raising store/AMO  access-fault exceptions.
So kexec flow has to ensure that menvcfg.SSE = 0 (thus not have shadow stack FWFT locked),
so that shadow stack enabling is re-established.
On topic of locking shadow stack with respect to kexec.
Perhaps locking shadow stack with kexec is not ideal for following reason
"""
If an attacker has found a vulnerability in kernel to perform a ROP, they can perform a kexec on a kernel
which wasn't compiled with shadow stack instructions and thus completely bypassing shadow stack protections.
Thus going out of the way to ensure that locking of shadow stack works with kexec may not be useful anyways.
"""
So it should be a kernel policy to ensure that if kernel is enabled to perform kexec then shadow stack FWFT
shouldn't be locked.


How to auto connect to a selected server when game open?

I want to load game with auto connect to my selected server . How can i do that?

You can write a script and use the scripting API to connect to the server you want

@Sardelka9515 its ok, thanks for your reply.
It's working. Now I can connect to server press key without ragecoop menu from a simple basic mod.
I tried apibridge connect (address). But it's gives an error after connect and basic mod goes disable after connect. Connection is working but for the first time.

@Sardelka9515 its ok, thanks for your reply. It's working. Now I can connect to server press key without ragecoop menu from a simple basic mod. I tried apibridge connect (address). But it's gives an error after connect and basic mod goes disable after connect. Connection is working but for the first time.

Hello sir, can I also ask a copy of the script that you made? Thanks in advance.

So can you share your Script?

local rageconnect ={}
local RageCoop.Client ={}
function rageconnect.tick()
if get_key_pressed(Keys.F4) then
_serverConnectItem.Activated += (sender, item) => { Networking.ToggleConnection(Main.Settings.LastServerAddress); };
end
return rageconnect
help me with script


Adding MOG to ethereum.ts

Adding MOG token with the contract 0xaaeE1A9723aaDB7afA2810263653A34bA2C21C7a

@zekraken-bot for review


[Bug] input shadows light/dark theme

There is a big difference in input shadows in light and dark mode. They seem two different themes:

https://github.com/Laravel-Backpack/theme-tabler/pull/102 fixes this one 🙌


Chance of getting 409 while renewing the primary host lock.Fixes  #1864

@alrod,
Thanks for having already signed the Contribution License Agreement. Your agreement was validated by .NET Foundation. We will now review your pull request.
Thanks,
.NET Foundation Pull Request Bot