Rolling refresh token expiry introduced a completely new "iat" behavior on token refresh

Subject of the issue
Release 2.5.0 (see #256) changed the behavior of the iat (issued at) timestamp during token refresh. Previously, the iat value remained unchanged across refreshes, creating a fixed refresh window from the original token’s creation. However, the new behavior issues a fresh iat with every refresh, resulting in a rolling refresh token expiry.
The description in the config do not reflect this change and this change also causes users of the package that expected the old behavior to have possibility of indefinite sessions which was not possible in the previous version when refresh_ttl was set.
The config states the following today:
    /*
    |--------------------------------------------------------------------------
    | Refresh time to live
    |--------------------------------------------------------------------------
    |
    | Specify the length of time (in minutes) that the token can be refreshed
    | within. I.E. The user can refresh their token within a 2 week window of
    | the original token being created until they must re-authenticate.
    | Defaults to 2 weeks.
    |
    | You can also set this to null, to yield an infinite refresh time.
    | Some may want this instead of never expiring tokens for e.g. a mobile app.
    | This is not particularly recommended, so make sure you have appropriate
    | systems in place to revoke the token if necessary.
    |
    */

    'refresh_ttl' => env('JWT_REFRESH_TTL', 20160),

Impact
This change modifies how refresh token expiry is calculated, as each refresh now resets the refresh window based on the most recent refresh time. This can lead to unexpected behavior for users expecting a fixed refresh window.
Suggested Solution
To support both behaviors, we suggest to introduce an optional config parameter:
'refresh_iat' => env('JWT_REFRESH_IAT', true),

Setting refresh_iat to false reverts to the previous behavior, maintaining a fixed refresh window from the original token creation. However, this change is not yet reflected in the configuration comments, which may cause confusion.
Your environment:

Q
A

Bug?
yes & no

New Feature?
yes

Framework
Laravel

Framework version
11.x

Package version
2.7.2

PHP version
8.3

I have opened up a pull request with a suggested solution/fix to this issue, #269.
The default behavior has been set to how the package works today, so it will not break existing users on new releases from 2.5.0. The 2.5.0 release did however technically break intended behavior based on the documentation in the config.php.

Hi @mfn,
Thanks for getting back to me! Sorry for the delayed response, I just got back from a vacation.

When using the refresh flow, a copied over iat would lead to a wrong validation in \PHPOpenSourceSaver\JWTAuth\Claims\IssuedAt::validateRefresh().

We managed to run all the rests successfully, might not be that there is a test case covering this? I'll let us sort out the other question below before we tackle that.

Refreshing essentially creates a new token: why would we carry over the iat? What's the purpose of, let me put it in striking words, "lying" about the tokens issued at?
You describe the problem with the change of the bevaiour, but can you also describe your use-case here?

The use-case; A user authenticates and checks "remember me". We should then allow the session to be active for a specified time-frame (for example 30 days) before the user is forced out and need to do the auth flow again. This way we will never get infinite activate sessions that can be misused or high-jacked without ever getting an expiry.
We do not wish to issue an access token that is usable for 30 days without making any refresh, we want short lived tokens. As this package uses a concept of JWT where the JWT (active and expired) can used to issue a new token, rather than a specific refresh token, the old implementation made a lot of sense as it combined the JWT and Refresh Token into one.
I understand this change might be helpful/needed for other use-cases, but it also causes issues based on the original intention and the documentation was not updated to reflect this or explain the reason for the change. The attached PR should allow for the old behavior without causing issues (we'll of course need to check the \PHPOpenSourceSaver\JWTAuth\Claims\IssuedAt::validateRefresh() you mentioned).
Does this clear up your question on the use case?

I agree with the author of the PR. Security is becoming a bigger and bigger concern nowdays, so the use-case is, what if the package user wants to set a maximum time-frame for the session of the user (including all refreshes) - before they need to re-authenticate. The security problem is, once you have a JWT, you can infinitely refresh it - even if for example the user is banned or judged to be a bad actor. Sure while it's possible to blacklist - that shouldn't be the permanent solution for these situations.
I have seen such security requirements as necessary when complying with some security frameworks, so I think it's important that we allow for this requirement to be met easily when using the package, and I think a config option is the best way to go from the perspective of developer experience.
I don't have any strong opinions for how to implement it specifically, I think an opt-in or even default (in my view it's best practice to limit it) to something that the developer can change is a good approach.


fixed terminal settings point at invalid anchor (fix #130618)

how to test
go to vs code settings.json file and type "terminal.integrated.shell.linux" , "terminal.integrated.shell.osx", "terminal.integrated.shell.windows", "terminal.integrated.shellArgs.linux", "terminal.integrated.shellArgs.osx" and "terminal.integrated.shellArgs.windows" hover the mouse over these settings and you will find link which now to points to https://code.visualstudio.com/docs/editor/integrated-terminal#_configuring-profiles
This PR fixes #130618

Thanks!

You're welcome.


util/build: rationalize json files

Since we use json files to guide the build, we should give them a bit more love:

[ ] replace .. inclusions with absolute paths (/ is the $HARVEY dir): so we can move folders easily
[ ] inherit CFlags whenever possible
[ ] make architecture-dependent paths depend on $ARCH (see core.json).
Requires little changes to build.go
[ ] use environment variables in Pre/Post scripts when appropriate (eg here and here)

on this

@sevki, if you are still working on this, give a look to this pending CL.
I have a small task pending on Cflags (enable extensive debug flags everywhere as I need them for #5), but to avoid Merge Conflict on Gerrit, I can send you a pull request in a branch you prefer.

@sevki in my debug-everything branch you can see the debugging options that I added.

@Shamar cool

In b8cfdeab918edba099e71faf034553ba7429de1d @rminnich centralized Cflags in amd64/include/cflags.json.

A new build tool is in progress.


Can't use django binary that is located in the virtual environment

so I created a virtual environment, sourced it, and installed Django. the version that is installed globally is 4.2.10 but the version I installed in the virtual environment is the latest one 5.0.2 and this is what I want to share with you
(python-tests) ➜  python-tests  uv pip install django
⠦ Resolving dependencies...                                                                                Resolved 4 packages in 10.64s
Installed 4 packages in 812ms
 + asgiref==3.7.2
 + django==5.0.2
 + sqlparse==0.4.4
 + typing-extensions==4.10.0
(python-tests) ➜  python-tests  django-admin --version
4.2.10

and when I typed django-admin startproject myproject . it used django 4.2.10 not 5.0.2
this is uv version
uv --version
uv 0.1.11

What I think might be the problem is the way you are creating the virtual environment. as when I use pip it uses the global pip not the one in the virtual environment.
What is think about the solution is to provide a way like uv exec some-command like other tools that will use the binaries in the virtual environment, not the global ones.
And in the end, I am sorry that I can't help to solve this problem as the only thing I know about rust is how to type Hello world 🙂

Hey there. uv always installs into the virtual environment -- have you tried activating the virtual environment before running django-admin, with something like source .venv/bin/activate?

Yes I activated it.
and btw I know that uv installs the packages into the virtual environment and it installs Django successfully. but the problem is when I execute the django binary django-admin (it's like uv binary we get when we install it using pip) even if I sourced the virtual environment source .venv/bin/activate and then runs django-admin the actual django-admin that runs is the global one that is installed outside the virtual environment.
and to give you a better prespective run these commands so you can know what I am facing
pip install "django==4.2.10" # install django "4.2.10" globally
uv venv && source .venv/bin/activate && uv pip install "django==5.0.2"

django-admin --version

the output of the last command should be "5.0.2" but what I am getting is "4.2.10"

@charliermarsh Something else I want you to keep in mind. if I created a virtual environment, activated it, and then ran pip freeze I would get the packages that are installed globally. which as I said earlier might be related to the way you are creating the virtual environment.

if I created a virtual environment, activated it, and then ran pip freeze I would get the packages that are installed globally. which as I said earlier might be related to the way you are creating the virtual environment.

We don't install pip in virtual environments by default, so you're probably getting the pip from your global installation. What does uv pip freeze show? What happens if you do uv pip install pip then pip freeze?
After activating the virtual environment, is it's bin folder earlier than your global Python in the PATH variable? Is there a django-admin binary present in .venv/bin/?

Also the feature you requested is being tracked in #1207

@zanieb if I installed pip using uv, pip freeze will still give me all packages installed globally. But not a problem as uv pip freeze works in the virtual environment it will be fine.
and yes this bin of the virtual environment is earlier than the global python path. This is the PATH variable if you want to take a look
/tmp/python-tests/.venv/bin:/home/zeyad/.bun/bin:/home/zeyad/.local/bin:/home/zeyad/.modular/pkg/packages.modular.com_mojo/bin:/home/zeyad/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/wsl/lib:/mnt/c/Program Files (x86)/Common Files/Oracle/Java/javapath:/mnt/c/Windows/system32:/mnt/c/Windows:/mnt/c/Windows/System32/Wbem:/mnt/c/Windows/System32/WindowsPowerShell/v1.0/:/mnt/c/Windows/System32/OpenSSH/:/mnt/c/Program Files (x86)/NVIDIA Corporation/PhysX/Common:/mnt/c/Program Files/NVIDIA Corporation/NVIDIA NvDLISR:/mnt/c/WINDOWS/system32:/mnt/c/WINDOWS:/mnt/c/WINDOWS/System32/Wbem:/mnt/c/WINDOWS/System32/WindowsPowerShell/v1.0/:/mnt/c/WINDOWS/System32/OpenSSH/:/mnt/c/Program Files/Git/cmd:/mnt/c/Program Files/nodejs/:/mnt/c/Users/Moaz-Mostafa/AppData/Local/Programs/Python/Python311/Scripts:/mnt/c/Program Files/Microsoft VS Code/bin/code:/mnt/c/Users/Moaz-Mostafa/AppData/Local/Microsoft/WindowsApps:/mnt/c/ProgramData/chocolatey/bin:/Docker/host/bin:/mnt/c/Users/Moaz-Mostafa/AppData/Local/Programs/Python/Launcher/:/mnt/c/Users/Moaz-Mostafa/.cargo/bin:/mnt/c/Users/Moaz-Mostafa/AppData/Local/Programs/Microsoft VS Code/bin:/mnt/d/Temp:/mnt/c/Users/Moaz-Mostafa/AppData/Local/Programs/oh-my-posh/bin:/mnt/c/Users/Moaz-Mostafa/AppData/Local/Programs/Hyper/resources/bin:/mnt/c/tools/neovim/nvim-win64/bin:/home/zeyad/Android/Sdk/tools:/home/zeyad/Android/Sdk/platform-tools#:/home/zeyad/.fzf/bin

the first one is the bin directory of my virtual environment.
and django-admin is also present in the bin directory which is strange btw. it should be executed correctly. What it might be related to??
can you please try to do this yourself. I am using WSL, so this might be the problem.
just run these commands and see what is going on
pip install "django==4.2.10" # install django "4.2.10" globally
uv venv && source .venv/bin/activate && uv pip install "django==5.0.2"

django-admin --version

what the last line gives you?? 4.2.10 or 5.0.2 ??

@konstin I can't remember how I installed Python but I think it was using the apt package manager
when I activate the virtual environment the python -c "import sys; print(sys.path)" gives me ['', '/usr/lib/python310.zip', '/usr/lib/python3.10', '/usr/lib/python3.10/lib-dynload', '/tmp/python-tests/.venv/lib/python3.10/site-packages']
and the python -m sysconfig gives me
        data = "/tmp/python-tests/.venv"
        include = "/usr/include/python3.10"
        platinclude = "/usr/include/python3.10"
        platlib = "/tmp/python-tests/.venv/lib/python3.10/site-packages"
        platstdlib = "/tmp/python-tests/.venv/lib/python3.10"
        purelib = "/tmp/python-tests/.venv/lib/python3.10/site-packages"
        scripts = "/tmp/python-tests/.venv/bin"
        stdlib = "/usr/lib/python3.10"

this is strange btw if you look at the scripts you will notice that it uses the bin of the virtual environment which should make be able to use django-admin without any problem. I will ask you to see this and tell me if I did something wrong.

Can you try cleaning the uv cache (uv clean) and after reinstalling, try running .venv/bin/django-admin directly?

@konstin I tried to clear the cache but I still have the same problem. I tried to use .venv/bin/django-admin and it worked successfully but the problem I am afraid of is this may affect some other components of uv.
And btw I tried to delete uv bin from ~/.cargo/bin/uv and re-install it but I still had the same problem. I will use .venv/bin/django-admin but I hope that this be fixed in some way. I am going to leave this issue opened but if you want to close it that's ok.

@konstin I just want to ask you about something. when I activate the virtual environment, I get this (python-tests) ➜  python-tests shouldn't it be like (.venv) ➜  python-tests or you have changed it??
And btw I tried to run uv on my Windows machine and everything worked ok so I believe that there is something wrong with my uv. As I said earlier I removed uv from ~/.cargo/bin/uv and installed it again. Should I delete something else so I can make sure that I have completely uninstalled uv from my WSL?

@konstin I am sorry for calling you several times but I just finally fixed the problem and I have no idea how it was fixed.
in the .venv/bin/activate in line 80 I saw VIRTUAL_ENV_PROMPT="dummy" as dummy is the parent directory of the virtual environment. and I just changed dummy to .venv and then deactivated the virtual environment and activated it again and everything worked just fine. I just hope to know why it gives me "dummy" when it should give me ".venv" automatically??
See this if you want

Sorry, no idea why this makes a difference

I have no idea also. But the question is do you know why it's "dummy" not ".venv" ?? if we just solved this, then everything will be OK.

The prompt should only be cosmetic i.e. it's just the text that's displayed to identify the virtual environment. I also could not reproduce this on macOS — I'm not sure what's going on but it does seem specific to something in your environment. If there's something that relies on VIRTUAL_ENV_PROMPT to determine binaries in your path, that sounds like a bug with their software.

I'm going to close this so we can keep the issue tracker actionable, thanks for all your investigation let us know if you find out more.
#1570 has more details on the default prompt value.

For anyone having the same problem I just noticed that the problem isn't with the VIRTUAL_ENV_PROMPT it's all that after installing Django you will just have to deactivate and activate the virtual environment again.


libxx:uclibxx: add patch use overload constructor of filebuf & ostream

.
Summary
Bug fix in uclibxx initalize
Impact
Testing

@xiaoxiang781216 why closed?

mistake, @zhuyanlinzyl will reopen again.

https://github.com/apache/incubator-nuttx/pull/5321
Please review again.
@yamt  @xiaoxiang781216


Configure Azure Pipelines

This pipeline configuration builds the application and produces a build for the Release configuration.

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.:x: srinathreddy4 sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.


[HOSTED] Generated Issue: FatalThrowableError

Please fill out the details below.
Summary:
Steps to reproduce:
Additional Details
Jikan Parser Version: v2.16.2@4e3781e1617047921d20acc7bb4390bc8e83502d
PHP: 7.3.20
Redis: Connected
Exception: Symfony\Component\Debug\Exception\FatalThrowableError
Code: 0
Message: Return value of Jikan\Parser\User\Profile\AnimeStatsParser::getMeanScore() must be of the type float or null, string returned
Trace: /Users/ap/jikan-rest/vendor/jikan-me/jikan/src/Parser/User/Profile/AnimeStatsParser.php on line 73
Request: GET /v3/user/adityagupta1089

Hi, you're on an older version of the parser (v2.16.2). The issue has been addressed in a later version.
Update the parser to the latest version (currently 2.17.7 by running
composer update jikan-me/jikan
Let me know if it works

Works after updating.


Class 03

When click on main nav links, uses data-attributes and jquery to display views as single page app.

-switching tabs- implements SPA rendering behavior


for growth direction, allow player_facing_yaw / pitch to be used

or at least an indication in the rc_form as to which direction the player is currently facing. knowing which way is X and Z and -X and -Z is a pain.

added this to the form at the top, at least


Restore Operator

Is your feature request related to a problem? Please describe.
For the next milestone I want to add the feature where the consumer of the library can use a new Operator to restore a database from a backup file.
Things to consider:

The SQL script.
Backup file location.
Connection to an existing database.
Restore as a brand new database with new name and different data/log locations -> maybe for a future milestone.

Describe the solution you'd like
For the consuming application to create an instance of the RestoreOperator and call its restore method using a connection string and backup file name and location.
Describe alternatives you've considered
The other alternative is for the user of the consuming application to use a tool like MSSQL Server Management studio to do the restore for them (manually).
Additional context
Some investigative work is required first to find all of the pitfalls and "how" to do the restore.

Are you currently working on this, or would it be okay if I contribute to it?

If you have the time to do it, by all means - go for it.


add a hook to wrap the router

Allows us to wrap the router, which is useful for stuff like fixing iframes in v4 (https://github.com/yoshuawuyts/choo/issues/344) and perhaps electron stuff also
Definitely needs tests to be added; a PR onto this branch for that would be :sparkles: amazing :sparkles: - also code reviews welcome! Thanks! :D

This would be a minor release - oh yeah also forgot to mention this would restore requirebin.com support - was struggling with that earlier - code to solve that is to iterate over the array of routes ahead of time and prepend them with the current url inside the iframe

How about including a test, would help in understanding how this works?


feat(pixels): my pixel contribution

Checklist

[x] I ran npm test locally and it passed without errors.

[x] I only edited the _data/pixels.json file.

[x] I entered the username in the pixels.json that I'm also using to create this pull request.
[x] I acknowledge that all my contributions will be made under the project's license.

Sorry, I made a mistake with this pull request, so I have opened another one and closed this one. :)


Add .gz file config

We are now generating gzipped files in JayPack for craft projects, so now we need to tell Craft to understand them.

Wrong.


[F] Add confirmation modal to delete button in lists

This PR adds a ConfirmModalBody component that follows the Simple Modal design and adds a ButtonControlConfirm pattern for rendering buttons that open the modal. Currently, only delete actions use the modal and the ConfirmModalBody component is hard-coded into the new pattern, so this likely needs further abstraction.

👏 This is looking great so far! I made a few styling and abstraction suggestions, but I think you did a great job breaking this down into reusable patterns. There is one odd bug I found on mobile:

@jen-castiron I went ahead and implemented what I said I'd try above for you to look at. I refactored BaseDropdown so that we could create the submenu in there without cloning lots of times, and then I cleaned up passing the closeDropdown function to ButtonControl. It seemed like the best way to do that was just to have the base ButtonControl responsible for handling that prop, so that any button can close a dropdown. My notes above have more detail. While I loved the idea of just putting the click handler on the list, I think this way of doing it, while more complex, is maybe more correct for a11y? Let me know what you think!

@jen-castiron Thank you for these notes! I got everything except a 2px difference in height between the edit and delete buttons on desktop that I can't figure out. I'm also wondering if there's a way to avoid passing breakpoint to Disclosure, but I couldn't figure out a way to get the padding right without it. I'll put a note on that in the code so it's easy to find.


Update arch packages to work with python-sphinx instead of python2-sphinx

Thanks for making an PR! I just merged #464 before i saw this one, do you think merging your extra changes are necessary too?

There are some changes that should be added. Currently the license file is not installed and it should be. This is included in commit https://github.com/boltgolt/howdy/pull/472/commits/b3c0ac291b572fe53950e6b4ee68754f9016049a.
The python-pam library is also missing a dependency on pam. This is unlikely to cause an issue as I'm sure most installations will include pam, but it should also be included, see commit https://github.com/boltgolt/howdy/pull/472/commits/d253522c1b3fd7221058b2030f56eeb042e61053.
Neither of these are likely to cause installation issues, but should be resolved anyway.
As I said before, if you'd like someone to take on maintenance of the AUR packages, I'd be happy to.

@Giannie thanks so much for your contributions! I'm going to merge them in through #477 as it does not have any conflicts


dont' reference built-in objects count

What this PR does / why we need it
Minor documentation update.
Special notes for your reviewer:
Built-in objects listed in the previous sections are: Release, Values, Chart, Files, Capabilities and Template. Text here refers to four built-in objects.
If applicable:

[X] this PR contains documentation
[ ] this PR contains unit tests
[ ] this PR has been tested for backwards compatibility

Don't know if this is the proper procedure but I forced push the signed-off commit on top of my branch.


Outdated dataset link

The 20bn links stopped working, I imagine because the company is now under Qualcomm.   Thanks for looking into this!

I have the same problem! I would really appreciate if I can get a working link!!


Make current list default view

Make the current list of conferences the default view instead of the blog posts. Move the blog posts & categorize as news.

Done.


Devel

Codecov Report

Merging #1 (bddeb7d) into main (c2a447a) will not change coverage.
The diff coverage is 82.60%.

@@           Coverage Diff           @@
##             main       #1   +/-   ##
=======================================
  Coverage   80.83%   80.83%
=======================================
  Files          17       17
  Lines         313      313
=======================================
  Hits          253      253
  Misses         60       60

Impacted Files
Coverage Δ

ramsey/_src/family.py
78.78% <ø> (ø)

ramsey/_src/gaussian_process/covariance/base.py
100.00% <ø> (ø)

ramsey/_src/neural_process/attention/attention.py
100.00% <ø> (ø)

...c/neural_process/attention/dotproduct_attention.py
0.00% <0.00%> (ø)

ramsey/_src/train.py
97.50% <ø> (ø)

ramsey/data.py
0.00% <0.00%> (ø)

ramsey/train.py
0.00% <0.00%> (ø)

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

...sey/_src/gaussian_process/covariance/stationary.py
100.00% <100.00%> (ø)

...rc/neural_process/attention/multihead_attention.py
100.00% <100.00%> (ø)

... and 7 more

Continue to review full report at Codecov.

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


add VxWorks samples and related README

Azure SDK for Embedded C has been ported to VxWorks. We contribute 2 samples to demonstrate how to develop, build and run Azure IoT Hub applications for VxWorks as well as a detailed README.

Thank you for the PR. We'll take a look at that over the next week and get back to you.

Hi @wduraes ,
Thanks very much for your time!
Looking forward to your comments.

Hi @ericwol-msft ,
Thanks very much for your time and effort on this review!
I have addressed almost all of your comments.
I replied some of them.
please have a look.
Thanks again!

A few final changes


[Bug]: "Root folder" setting not respected for the plugin

Issue validation

[X] I checked the issue to prevent duplicate
[X] I checked my configurations files and the documentation
[X] My issue concern doesn't concern the Mkdocs template

Command used
Refresh published and upload new notes
Plugin version
6.13.3
Describe the bug
The notes I have in obsidian vault are no longer published under the default doc folder, breading mkdocs.
How to reproduce ?
Just run the "Refresh published and update new notes" command, in a vault that is structured like this
.
You can see what publisher tries to do from this pr: https://github.com/yodahuang/notes/pull/19 (there's also link conversion going on but that's expected)
Minimal Reproducible Example
Any notes would do. I don't think it's related to file content

Configuration
{
  "github": {
    "branch": "main",
    "automaticallyMergePR": false,
    "tokenPath": "%configDir%/plugins/%pluginID%/env",
    "api": {
      "tiersForApi": "Github Free/Pro/Team (default)",
      "hostname": ""
    },
    "workflow": {
      "commitMessage": "[PUBLISHER] Merge",
      "name": ""
    },
    "verifiedRepo": true
  },
  "upload": {
    "behavior": "obsidian",
    "defaultName": "docs",
    "rootFolder": "",
    "yamlFolderKey": "",
    "frontmatterTitle": {
      "enable": false,
      "key": "title"
    },
    "replaceTitle": [],
    "replacePath": [],
    "autoclean": {
      "enable": true,
      "excluded": [
        "docs/assets/js",
        "docs/assets/meta",
        "docs/assets/css",
        "tags.md",
        "graph.md"
      ]
    },
    "folderNote": {
      "enable": false,
      "rename": "index.md",
      "addTitle": {
        "enable": false,
        "key": "title"
      }
    },
    "metadataExtractorPath": ""
  },
  "conversion": {
    "hardbreak": false,
    "dataview": true,
    "censorText": [],
    "tags": {
      "inline": false,
      "exclude": [],
      "fields": []
    },
    "links": {
      "internal": true,
      "unshared": false,
      "wiki": true,
      "slugify": false
    }
  },
  "embed": {
    "attachments": true,
    "overrideAttachments": [],
    "keySendFile": [],
    "notes": false,
    "folder": "",
    "convertEmbedToLinks": "keep",
    "charConvert": "->"
  }
}

Relevant log output
No response
OS
MacOS
Anything else?
No response
Obsidian information
SYSTEM INFO:
	Obsidian version: v1.4.16
	Installer version: v1.3.5
	Operating system: Darwin Kernel Version 23.3.0: Fri Dec  1 03:16:13 PST 2023; root:xnu-10002.80.11~58/RELEASE_ARM64_T6020 23.3.0
	Login status: not logged in
	Insider build toggle: off
	Live preview: on
	Legacy editor: off
	Base theme: dark
	Community theme: Things v2.1.18
	Snippets enabled: 0
	Restricted mode: off
	Plugins installed: 14
	Plugins enabled: 11
		1: Completr v3.2.0
		2: Contextual Typography v2.2.5
		3: Hider v1.3.1
		4: Kanban v1.5.3
		5: Metadata Extractor v1.1.0
		6: Style Settings v1.0.7
		7: Minimal Theme Settings v7.3.1
		8: Text Format v2.4.0
		9: Quick Latex for Obsidian v2.6.4
		10: Remotely Save v0.3.37
		11: Github Publisher v6.13.3

RECOMMENDATIONS:
	Update installer: installer version too low, please download from https://obsidian.md/download?os=mac&arch=arm64 and reinstall.
	Custom theme and snippets: for cosmetic issues, please first try updating your theme and disabling your snippets. If still not fixed, please try to make the issue happen in the Sandbox Vault or disable community theme and snippets.
	Community plugins: for bugs, please first try updating all your plugins to latest. If still not fixed, please try to make the issue happen in the Sandbox Vault or disable community plugins.

Oups, I'm sorry!
When I refactored the way path was parsed, I made a typo error that breaks that.

Thanks for the quick fix!


saga,scootapi/server: remove logging, reduce size

This makes our tests faster and quieter (so they're easier to run and debug)

Current coverage is 71.57% (diff: 100%)

Merging #79 into master will increase coverage by 0.46%

@@             master        #79   diff @@
==========================================
  Files            40         41     +1
  Lines          1980       2002    +22
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
+ Hits           1408       1433    +25
+ Misses          498        493     -5
- Partials         74         76     +2

Powered by Codecov. Last update 2ff21c1...46f3422

lgtm, although we'll want to replace logs with metrics where it makes sense.


AppState: storing cursor, returning array

The doc states that you can store minimongo cursors in the AppState object. But from what I understand of the code, this is not true: you simply convert cursors to arrays using fetch().
This has been debated before, but it seems cursors have performance benefits over arrays (see here). So it is usually discouraged to use fetch(), at least when rendering with Blaze.
I think it would be better to forget about cursors and let people use fecth() manually if they really want to:
// save some state from the database
AppState.set('videoList', function() {
  return Videos.find({}).fetch();
});

I'm sorry but I don't get what's the issue here.
Is there something which doesn't work or doesn't work as expected?

Sorry, I wasn't clear at all. And also, I mixed up the "cursor" case and the "function returning a cursor" case.
Working code:
Posts = new Mongo.Collection(null);
let myCursor = Posts.find();
AppState.set('myCursor', myCursor);
myCursor = AppState.get('myCursor');
console.log(myCursor.count());

Output, as expected:
0

Non-working code:
Posts = new Mongo.Collection(null);
AppState.set('myCursor', function() {
  return Posts.find();
});
const myCursor = AppState.get('myCursor');
console.log(myCursor.count());

Unexpected output:
Uncaught TypeError: myCursor.count is not a function

AppState is not designed to retrieve cursors, but an array instead.
This is by design, to mimic Blaze helpers and make AppState work consistently in both worlds.
If you do this:
{{#each posts.items}}
  {{> post
{{/posts.items}}

you get an array even though posts.items is a cursor.
If you do this:
_.each(AppState.get('posts.items'), item => {
  doSomething(item);
});

you get an array, like in Blaze, even though posts.items is a cursor.
I suggest you to store the count in a separate property:
AppState.set('myCursor', function() {
  return Posts.find();
});
AppState.set('myCursor.count', () => Posts.find().count());

Using count() was just an example, to show that in the same situation your package sometimes returns cursors, sometimes arrays.
I have to admit I don't understand your explanation, but this is ok for now :-) You probably thought about it more than I did.
At this stage, all I want to say is this: Blaze is one of the Meteor rendering layouts and has not much to do with the business logic field, where this package belongs.

Our design approach here is that both AppState.get('something') and its Blaze helper {{something}} should retrieve exactly the same thing. That's the reason AppState.get will retrieve an array even if you store a Mongo Cursor.

But why are you saying that Blaze converts cursors to arrays? I am not aware of such conversion. See the following code:
<body>
  {{#with getCursor}}
    {{>myTemplate}}
  {{/with}}
</body>

<template name="myTemplate">
</template>

//client only code
Players = new Mongo.Collection(null);

Template.body.helpers({
  getCursor: function () { return Players.find(); }
});

Template.myTemplate.created = function() {
  console.log(this.data);
}

Output:
L…n.Cursor {collection: LocalCollection, sorter: null, matcher: M…o.Matcher, _selectorId: undefined, skip: undefined…}

See? A cursor remains a cursor.

With Blaze I mean Spacebars.

Do you mean Spacebars converts cursors to arrays? Do you have an example?

Both {{#each cursor}} and {{#each array}} return an Array.

I really don't get it.

We have deprecated this functionality so I will close this now.


Standardize file folder input args

Motivation
The new annotation method that gives us full control over path types also now allows us to control localized naming conventions rather than having to rely on the underlying package scheme. We therefore have an opportunity to standardize how all our interfaces operate here with respect to input argument naming schemes, which is a nice convenience IMO and came up briefly in our last team meeting.
This PR standardizes all FilePathTypes to correspond to an input argument called file_path. It mostly affects the previous interfaces reliant on neo as the extractor, since these instead usually follow the convention of filename.
This would introduce a break to back-compatibility with previous versions, so if the convenience of this is agreed upon we can wait to merge until the next big version update (likely the SpikeInterface2 writers + Icephys). Something we could do now if this is approved is to add some deprecation warnings to the affected interfaces to let people know of the upcoming change.
How to test the behavior?
test_interfaces ensures nothing breaks in the schema validation with the name changes; I had to update test_gin to properly use the adjusted naming, indicative of the break in back compatability
pytest

Checklist

[X] Have you checked our Contributing document?
[X] Have you ensured the PR description clearly describes the problem and solutions?
[X] Have you checked to ensure that there aren't other open or previously closed Pull Requests for the same change?

I agree this would be great to have, but that we should be careful about backwards compatibility so I agree we should wait a bit

Swapping branches


Add example: Add and remove NFT Allowances

🆕🐥 First Timers Only
This issue is reserved for people who have never contributed to Hedera or any open source project in general.
We know that creating a pull request (PR) is a major barrier for new contributors.
The goal of this issue and all other issues labeled by 'good first issue' is to help you make your first contribution to Hedera.
👾 Description of the issue
The Hedera SDK offers an example to demonstrate how to add and remove NFT allowances, which is a crucial process for controlling asset permissions. However, the complexity of the operations can make it difficult for developers to follow without a clear step-by-step breakdown.
Solution
This example in the Java SDK showcases the process of managing NFT allowances, including creating NFTs, approving and revoking permissions, and transferring tokens using the Hedera SDK. By following these steps, developers can implement allowance functionality efficiently. NftAddRemoveAllowancesExamples.java
We need to provide such example for the swift sdk, too.
Implementation

Set up the SDK client with the necessary operator account and key.
Create a unique NFT and retrieve the associated token ID.
Mint NFTs by attaching metadata to each unique token serial number.
Generate spender and receiver accounts with their respective keys.
Associate the spender and receiver accounts with the NFT token.
Grant allowance for specific NFT serials to the spender account.
Execute an NFT transfer using the approved allowance on behalf of the spender.
Revoke the allowance for specific NFT serial numbers.
Attempt another transfer after revocation to confirm the permission removal.
Clean up resources by deleting the tokens and accounts used in the process.

📋 Step by step guide to do a contribution
If you have never contributed to an open source project at GitHub, the following step-by-step guide will introduce you to the workflow. More information and concrete samples for shell commands for each step can be found in our CONTRIBUTING.md file.
A more detailed general documentation of the GitHub PR workflow can be found here.

[ ] Claim this issue: Comment below that you are interested in working on the issue
[ ] Wait for assignment: A community member with the given rights will add you as an assignee of the issue
[ ] Fork the repository: You can do that in GitHub (by simply clicking the 'fork' button).
[ ] Check out the forked repository
[ ] Create a feature branch for the issue. We do not have a hard naming definition for branches but it is best practice to prefix the branch name with the issue id.
[ ] Solve the issue in your branch.
[ ] Commit your changes: Here, it is needed to add sign-off information to the commit to accept the "Developer Certificate of Origin" (https://developercertificate.org). More details can be found in our CONTRIBUTING.md
[ ] Start a Pull Request (PR): We have a pattern for naming pull requests that a GitHub Action checks. We use that pattern to support the creation of automatic release notes.
[ ] Check GitHub Actions: Several GitHub Actions will be triggered automatically for each PR. If a GitHub Action fails and you do not understand the cause of that error do not hesitate to add a comment to the PR and ask the Hedera developer community for support.
[ ] Wait for reviews: Members of the Hedera developer community will review your PR. If a reviewer finds any missing pieces or a problem, he or she will start a discussion with you and describe the next steps for solving the problem.
[ ] You did it 🎉: We will merge the fix in the develop branch. Thanks for being part of the Hedera community as an open-source contributor ❤

🎉 Contribute to Hacktoberfest
Solve this issue as part of the Hacktoberfest event and get a chance to receive cool goodies like a T-Shirt. 🎽
🤔 Additional Information
If you have any questions, just ask us directly in this issue by adding a comment. You can join our community chat at Discord. A general manual about open-source contributions can be found here.

I would like to work on this!

Sorry, will have to unassign on this issue as I can't obtain a mac atm

Please assign me on this issue

Can I work on this issue?

Please unassign me from this issue
The Mac that am using it’s not meeting the requirements for this project..I tried setting it up but kept getting errors
I was looking forward to the project..unfortunately I won’t be able to contribute @hendrikebbers

Thank you @hendrikebbers


Create a plan to fix our Javadoc warnings

Currently our Javadocs are lacking and we get a lot of warnings during builds about missing Javadoc information. We should come up with a plan on how to fix all of the missing Javadoc information over time.
Acceptance Criteria:

Tasks created to update our Javadoc information and enforce that new MRs don't introduce Javadoc warnings.

The javadoc warnings are in the hundreds and the 300-odd ones I've seen so far are mostly in pojos.
As we move more pojos to lombok, its possible that we won't need to fix the javadoc warnings.
I say that because here's what a draft MR with javadoc will look like - https://github.com/smartsheet/smartsheet-java-sdk/pull/105/files
We can do this work but it all gets blown away once we lombok-ify the classes
So, based on team consensus, closing this ticket for now.
See more discussion in https://smartsheet.slack.com/archives/C04LFRLSDHR/p1728670020703579?thread_ts=1722632912.916819&cid=C04LFRLSDHR


Make the interval configurable by env var; default to 5

Redeploying to change config is so 2012.
Also yes this will cause merge conflicts with myself #sorrynotsorry

Merge conflicts fixed!


Update co2 dataset

Improve metadata of the Jones et al. (2023) dataset on national contributions to climate change.
Add the data from Jones et al. (2023) to the owid_co2 dataset.

There's no need to thoroughly review etl/steps/data/garden/emissions/2023-05-03/owid_co2.py since it's duplicated from its previous version, with some adjustments. The main adjustment is to use the latest regions and populations datasets, as well as the Jones et al. (2023) dataset.

LGTM but not sure why it's failing CI?

Thanks! I think it was some buildkite randomness. I've re-run it again and now it works.


Update landscape (LFX term is over, mentor & mentees need less access)

Maybe just comment out or set @andreuxxxx to read as they may come back to mentor another semester in the new year 🙂
https://github.com/cncf/people/blob/f8b38d2cff4d9d2bff12b871cdb7b760424fd73e/config.yaml#L616-L623

@nate-double-u happy to do this update, but can't assign himself

/assign


Added blog/video to CheerpX

With this added, the video works also when in the CheerpX blog section. The issue was that the path was not correct so it wasn't able to load any video at all.
I tried adding the right path to the .mp4 file in labs but video  tag is not able to reach it when loading the website from the CheerpX website. Are all the branches (Cheerp, CheerpJ, CheerpX, labs) isolated from each other?

I think you need to move the video to the same folder where the blog .md file is (´/content/blog/´).
Make sure that the path in the markdown file is also correct once you do it.
Not ´sites/CheerpX/...´ and not 'sites/labs/public/blog/alpine-mines.mp4'


Organization Update Name

As an organization admin, when I visit "admin/organization/:org_id/edit".

I see a "Name" field.
When I enter text into the "Name" field, and click "Update", I can see that the name of my organization has been updated.
If I fail to enter text and click the "Update", I am shown an error message and redirected to the 'edit organization' page.

Figma

Hey :) I would like to work on this if it's available?

@LittleBigProgramming you got it :)

@jadekstewart3 Just checking if this is ready to be worked on, can't seem to find Organizations within the dashboard.

It could be I'm missing something or this route doesn't exist and needs adding as part of this issue?
Could you please clarify? Same for #166 :)

@LittleBigProgramming Ahh! 😱 I'm so sorry about that! It looks like we have some more work to do for Organizations before this will be ready. I believe we will be going over tickets during our meeting this evening, after that I should have some clarification!

@LittleBigProgramming Okay, so it looks like the Organization Dashboard route does not exist yet. I will create a new issue for the creation of this route, and if you would like, you can take it :) Sorry about all of the confusion, thank you for taking on issues for us!
Let me know if you have anymore questions :)

That makes sense! Thank you for looking into this :)
If it's still available I will pick up that issue and unblock this and #166 in the process :+1:

@LittleBigProgramming I looked into this further yesterday, and the Organization Dashboard did exist, it was being routed through the index action on the Organization dashboard controller. Sense it was a small fix, I went ahead and did it to unblock these issues for ya :) Now we should be able to begin building out the edit org functionality!

@LittleBigProgramming I looked into this further yesterday, and the Organization Dashboard did exist, it was being routed through the index action on the Organization dashboard controller. Sense it was a small fix, I went ahead and did it to unblock these issues for ya :) Now we should be able to begin building out the edit org functionality!

Oh fantastic! I'll pull the changes and get started

Hi,
Sorry can you please clarify which URL needs to be changed and where it's navigated from?
In the issue it says slug/organization/edit which I can't seem to route too. The organization_profile/edit however I can route too, which I am assuming is editing the current organization.
However the screen shown:

does not seem to match the designs which have the URL /:organization/profile/edit seems to look quite different.

Could you please explain which url the form should be changed on and if the design within this ticket is what it is expected to look like?
Thanks for the explanation, I'm just not sure if I'm confusing two routes or missing some context :)

@LittleBigProgramming Hi! Thank you for asking questions, this helps me write better tickets! Okay so this ticket is a little bit tricky, I think,🧐 because one editable attribute lives on the organizations table, and the others live on the organizations_profile table. So here are my thoughts, and I'll tag the rest of the team below cause I'm a jr, and I need sr input lol

I think that the url should be organization_profile/edit  because if I understand how delegate works, you should be able to delegate the name attribute to the organization_profile and have that attribute available to you.
I also believe that we do want to you use the geeks ui template for styling of this page, so it will require some view page work.
@kasugaijin @nsiwnf  @edwinthinks  What do ya'll think?

Hi, @LittleBigProgramming you are correct, the route is /organization_profile/edit and the routes are set up to also update the profile. Things changed a bit since the writing of this ticket. Name is on the Organization instead of the OrganizationProfile.
I think this ticket can be closed, but you are correct in that the layout is not what we want.
I have made this ticket: https://github.com/rubyforgood/pet-rescue/issues/328 to update the UI, which will then unblock the #166 Please comment on that ticket if you want it and I will assign you :) Thanks for your patience!

Completed.


Fix #4098: Avoid let/const when building the ASTs for GCC.

We now use vars instead, which do not expose the issue.
This is a workaround for an unknown root cause. We should properly fix this in the future.

Just tested v1.1.1 in the initial project and fullOptJS now completes successfully without any workaround :tada: Thanks for the quick resolution!


Apply PEP-8 Style Guide to Code

Apply PEP-8 Style Guide to Melissa for better readability of the code. Fixing this issue will also help you get familiar with Melissa's Codebase.

Do you want whole repo to be converted in PEP-8 Style or some specific file?

@yatingupta10 The whole repo. Thanks!

Am on it!

I'm working on implementing PEP-8 style guidelines to the code.

@yrahul3910 I think somebody is already working on that here.

Partial completion of this issue has been done here: https://github.com/Melissa-AI/Melissa-Core/pull/72.

Guys, @yatingupta10 @yrahul3910 @aniketmaithani you can still send in a PR for this as there are still some files left.

could you please check the above PR as in this I had converted all files to PEP-8 Style manually?

@yatingupta10 They give runtime error.

@tanay1337 I've made a PR for the same.
All tests are passing. Please review.

Fixed here: https://github.com/Melissa-AI/Melissa-Core/pull/75.


Add Validation for simple expression

currently only validating Camel URI.
it should be possible using
XmlRouteParser.parseXmlRouteSimpleExpressions(is, baseDir, fqn, fileSimpleExpressions);
org.apache.camel.maven.ValidateMojo.validateSimple(CamelCatalog, List)

might be more complicated than planned because it requires to provide the Classloader org.apache.camel.catalog.CamelCatalog to provide an accurate validation


Fix "invalid byte sequence in US-ASCII" issue with Chef

@yevgenko Could you please merge it?

why should the fix be in cookbook not chef-client itself?


chore(master): release filsnap 0.3.1

:robot: I have created a release beep boop
0.3.1 (2023-07-24)
Bug Fixes

use snap config to format fil amounts (eba19be)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/filecoin-project/filsnap/releases/tag/filsnap-v0.3.1 :sunflower:


Incompatible with Go 1.23 due to locking down linkname using

Describe the bug
Upstream JSON lib sonic is suffering from linkname usage locking down. And it affects hertz according to reports.
          got the same issue from `cloudwego/hertz`.

Originally posted by @xin-hao-awx in https://github.com/bytedance/sonic/issues/660#issuecomment-2190483847
Also can find more information at https://github.com/bytedance/sonic/issues/637
BTW, linkname is used in hertz, too. So maybe we need an investigation.
To Reproduce

Download Go 1.23 RC1
Build a naive Hertz project
See errors in building phase

Expected behavior
No error should be presented.
Hertz version:
On develop branch
Environment:
GO111MODULE=''
GOARCH='amd64'
GOBIN=''
GOCACHE='/home/test/.cache/go-build'
GOENV='/home/test/.config/go/env'
GOEXE=''
GOEXPERIMENT=''
GOFLAGS=''
GOHOSTARCH='amd64'
GOHOSTOS='linux'
GOINSECURE=''
GOMODCACHE='/home/test/go/pkg/mod'
GONOPROXY=''
GONOSUMDB=''
GOOS='linux'
GOPATH='/home/test/go'
GOPRIVATE=''
GOPROXY='https://goproxy.cn,direct'
GOROOT='/usr/local/go'
GOSUMDB='sum.golang.org'
GOTMPDIR=''
GOTOOLCHAIN='auto'
GOTOOLDIR='/usr/local/go/pkg/tool/linux_amd64'
GOVCS=''
GOVERSION='go1.23rc1'
GODEBUG=''
GOTELEMETRY='local'
GOTELEMETRYDIR='/home/test/.config/go/telemetry'
GCCGO='gccgo'
GOAMD64='v1'
AR='ar'
CC='gcc'
CXX='g++'
CGO_ENABLED='0'
GOMOD='/home/test/xcpc-team-reg-main/go.mod'
GOWORK=''
CGO_CFLAGS='-O2 -g'
CGO_CPPFLAGS=''
CGO_CXXFLAGS='-O2 -g'
CGO_FFLAGS='-O2 -g'
CGO_LDFLAGS='-O2 -g'
PKG_CONFIG='pkg-config'
GOGCCFLAGS='-fPIC -m64 -fno-caret-diagnostics -Qunused-arguments -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=/tmp/go-build2791510403=/tmp/go-build -gno-record-gcc-switches'

Additional context
We have an update PR (#1106 ) but idle for a time. I can compile a naive hertz project with Go 1.21, and it runs OK. Please consider bumping the PR status.

refer to https://www.cloudwego.io/zh/docs/hertz/tutorials/basic-feature/json/

refer to https://www.cloudwego.io/zh/docs/hertz/tutorials/basic-feature/json/

For the following code:
package main

import (
	"context"

	"github.com/cloudwego/hertz/pkg/app"
	"github.com/cloudwego/hertz/pkg/app/server"
	"github.com/cloudwego/hertz/pkg/common/utils"
	"github.com/cloudwego/hertz/pkg/protocol/consts"
)

func main() {
	h := server.Default(server.WithHostPorts("12345"))

	h.GET("/ping", func(c context.Context, ctx *app.RequestContext) {
		ctx.JSON(consts.StatusOK, utils.H{"ping": "pong"})
	})

	h.Spin()
}

Compiling with Go 1.23-rc1:
go build -tags stdjson

and the error message is:
# github.com/bytedance/sonic/loader
../go/pkg/mod/github.com/bytedance/sonic@v1.11.3/loader/funcdata.go:37:32: undefined: _func
../go/pkg/mod/github.com/bytedance/sonic@v1.11.3/loader/funcdata.go:74:12: undefined: moduledata
../go/pkg/mod/github.com/bytedance/sonic@v1.11.3/loader/funcdata.go:77:18: undefined: moduledata
../go/pkg/mod/github.com/bytedance/sonic@v1.11.3/loader/funcdata.go:188:28: undefined: compilationUnit
../go/pkg/mod/github.com/bytedance/sonic@v1.11.3/loader/stubs.go:27:22: undefined: moduledata
../go/pkg/mod/github.com/bytedance/sonic@v1.11.3/loader/stubs.go:29:26: undefined: moduledata
../go/pkg/mod/github.com/bytedance/sonic@v1.11.3/loader/stubs.go:34:27: undefined: moduledata
../go/pkg/mod/github.com/bytedance/sonic@v1.11.3/loader/stubs.go:36:36: undefined: moduledata
../go/pkg/mod/github.com/bytedance/sonic@v1.11.3/loader/stubs.go:46:21: undefined: moduledata
../go/pkg/mod/github.com/bytedance/sonic@v1.11.3/loader/stubs.go:50:22: undefined: moduledata
../go/pkg/mod/github.com/bytedance/sonic@v1.11.3/loader/stubs.go:50:22: too many errors

I found that we used sonic https://github.com/cloudwego/hertz/blob/develop/pkg/app/server/binding/internal/decoder/sonic_required.go here, but with a wrong(?) gjson tag. Not sure whether we should change it to stdjson.

@li-jin-gou Hi. The code above cannot be compiled under Go 1.23-rc1. Could you please take a look?

maybe we can wait for the new version of sonic and update the mod in the hertz
https://github.com/bytedance/sonic/pull/667

https://github.com/bytedance/sonic/releases/tag/v1.12.0
is ready


[Question] Is there any way to add the prisma types with non prisma types to builder.ObjectType

I'm trying to implement offset-based pagination for one of my resolvers. when the resolver executes I want to return a payload that looks like this
{
 hasNext: true,
 hasPrevious: false,
 count: 14,
 data:// This has to be the array of prisma object
}

To achieve this I created to type
export type PaginatedUserType = {
    hasNext: boolean,
    hasPrevious: boolean,
    count: number
    leave:[user] <----- Prisma type
}

and wants to build the objectType out of the above type
builder.objectType("PaginatedUserType", {
  fields:(t) => ({
    hasNext: t.exposeBoolean("hasNext"),
    hasPrevious: t.exposeBoolean("hasNext"),
    count: t.exposeInt("count"),
    data: t.expose("users",{ type: "user"}) <------ can't figure out how to get the correct reference here
  })
})

I'm not sure my approach is correct. I went through the doc but it's a bit hard to understand for me. I post this question SO as well but couldn't get any luck

builder.prismaObject returns a ref you can use as the type for fields


Basic install breaks tailwind

There must be something missing from the docs because after following the instructinons to create a new project none of the tailwind styles work.
Even basic HTML stuff like
 is broken as you can see below.
Since everyone must be having this issue, I'm missing something basic.
Here's how this is rendered:

Welcome to SvelteKit

Visit kit.svelte.dev to read the documentation

sdgdfg

none of the tailwind styles work.

What styles are you referring to here? Do you mean the typography ones? If so, you should know that you are the one to manually apply those.

Even basic HTML stuff like
 is broken as you can see below.

I'm lost here. Are you aware that installing tailwind basically resets all native/default styles?
Pardon me if I misunderstood you, but I'm pretty sure there is no issue here. All is as it should be.

As @shyakadavis said. These are the default tailwind styles. They remove the defaults in favor of ease of customization.


Using the Keystore on Android 4.3+

I am proposing a feature request :)
Since Android 4.3 the Android Keystore was introduced. Do you have any plans on switching to that for Android (or making it an option), since it's more secure for storing sensitive data like tokens and passwords?

Hello @denissb, we have already this feature, but it is in another branch: https://github.com/mCodex/react-native-sensitive-info/tree/keystore
Unfortunately, we don't have any plans to release it in our master because react-native supports Android 16+ and using Android Keystore requires RNSensitiveInfo using Android 18+ 😢 So, we wouldn't cover all devices supported by react-native.

Thank's for the information, using shared preferences should still be secure enough unless the application has root access. I will check the branch if I will desperately need this feature.

@mCodex - sorry for coming back to this, but why don't you apply it conditionally only if the Android version is 18+?

@denissb, I can try, but when I import Android Keystore methods I've to upgrade RNSensitiveInfo to Android 18+ 😞

I see, so react native detects usage of that Keystore package in Java and dose not allow to keep the same minimum version? (16+)

Not React, but Android itself :/

@mCodex react-native-keychain uses Facebook Conceal for 16 - 22 and keystore for 23+.


Prevent root build lifecycle events from going missing

Context
Change the service registry and listener manager infrastructure to make it less likely for events to go missing silently when service dependencies change. In particular:

Add a @StatefulListener annotation which can be attached to a listener interface to indicate that a listener instance must receive all events.
Automatically register all services annotated with this (via a listener interface) when the first event is fired on the listener interface.
Fail if a listener annotated with this is added manually after the first event is fired.

Annotate RootBuildLifecycleListener with this new annotation and remove workarounds from the implementation and registration code. Eventually, pretty much all of the internal listener interfaces should be annotated with this and the various work arounds removed.
Contributor Checklist

[ ] Review Contribution Guidelines
[ ] Make sure that all commits are signed off to indicate that you agree to the terms of Developer Certificate of Origin.
[ ] Make sure all contributed code can be distributed under the terms of the Apache License 2.0, e.g. the code was written by yourself or the original code is licensed under a license compatible to Apache License 2.0.
[ ] Check "Allow edit from maintainers" option in pull request so that additional changes can be pushed by Gradle team
[ ] Provide integration tests (under <subproject>/src/integTest) to verify changes from a user perspective
[ ] Provide unit tests (under <subproject>/src/test) to verify logic
[ ] Update User Guide, DSL Reference, and Javadoc for public-facing changes
[ ] Ensure that tests pass sanity check: ./gradlew sanityCheck
[ ] Ensure that tests pass locally: ./gradlew <changed-subproject>:quickTest

Gradle Core Team Checklist

[ ] Verify design and implementation
[ ] Verify test coverage and CI build status
[ ] Verify documentation
[ ] Recognize contributor in release notes

@bot-gradle test and merge

OK, I've already triggered a build for you.

@bot-gradle test and merge

Your PR is queued because #16952 is being built.

OK, I've already triggered a build for you.

@bot-gradle test and merge

Your PR is queued because #17188 is being built.


Bundling of fonts, js, css

Hello,
Thanks for a great hugo theme! I migrate my personal blog from octopress to hugo and use your theme there.
Within this theme are some components already bundled (e.g fontawesome), but some not (e.g. angular.js, google fonts). For my sites I usually try to avoid any not needed requests to other sites (performance, stability, privacy..).
So the question, are you open to have other things here bundled as well? If yes, I could provide some PRs

Hi,
why not.
In my pop over modal I use angular.js. So I have angular in the static/ folder somewhere.


Teach the miri cronjobs to speak politely

Please be kind and courteous. There’s no need to be mean or rude.

― Rust Code of conduct

:rofl:
@bors r+

:rofl:
@bors r+

:pushpin: Commit a4a643e7cbd364e72b27f580750da61dbd607047 has been approved by RalfJung

:pushpin: Commit a4a643e7cbd364e72b27f580750da61dbd607047 has been approved by RalfJung

:hourglass: Testing commit a4a643e7cbd364e72b27f580750da61dbd607047 with merge d814eaa1a7b5f3ec67becb88746e2453e66344ff...

:hourglass: Testing commit a4a643e7cbd364e72b27f580750da61dbd607047 with merge d814eaa1a7b5f3ec67becb88746e2453e66344ff...

:sunny: Test successful - checks-actions
Approved by: RalfJung
Pushing d814eaa1a7b5f3ec67becb88746e2453e66344ff to master...

:sunny: Test successful - checks-actions
Approved by: RalfJung
Pushing d814eaa1a7b5f3ec67becb88746e2453e66344ff to master...


Document.window.devicePixelRatio is missing from DomGlobal.window, could we have it ?

the devicePixelRatio method is missing from DomGlobal.window. It would be very nice to add it.

Another option would be to add it to dom_missing_api.js, like Location and Selection and others currently do. The devicePixelRatio property is defined in webkit_dom.js only, but it works in other browsers (according to https://developer.mozilla.org/en-US/docs/Web/API/Window/devicePixelRatio, is available in IE11 and above).
Or, as was suggested in a closure-compiler, modify the build rule for elemental2-dom to also include all *_dom.js files, instead of only the "standardized" ones (since many of the browser-specific ones have actually been standardized, but closure-compiler's policy is to not move the file to w3c_dom.js at that time).

Will be fixed when #88 is fixed


Dev markfeb

Merged the rest of my work plotting the data (largely scatterplots). Now I'm moving on to hypo tests.


Update cluster_proxy_misconfiguration.json

Removing OCP doc and pointing to rosa specific doc for proxy configuration

/lgtm
/approve

/lgtm


Opening HELP Form

Hi,
inside my project, ScottPlot is nested inside a Parent Form that has the TopMost property set to true.
And the Help Form opens behind the Parent Form.
It would be good to make HELP Form TopMost True as well.
Alternatively and extra property can be added to make everyone happy.

Hi @dusko23, thank you for reporting this!
It sounds like the problem is that in the WinForms control, the right-click help menu launches a form where TopMost defaults false.
I think manually setting TopMost to true in FormHelp will resolve this issue. I will make this change now, but feel free to re-open this issue if this does not solve your problem!
https://github.com/ScottPlot/ScottPlot/blob/e43c534943e560b318c0584c87da5df5204cd85f/src/ScottPlot4/ScottPlot.WinForms/FormHelp.cs#L15-L20
documentation: Form.TopMost Property


docker swarm mode Error response from daemon: rpc error: code = 4 desc = context deadline exceeded

When I run this portainer service on swarm mode, the following error occurred
[root@docker-master ~]# docker service create \
>     --name portainer \
>     --publish 9000:9000 \
>     --constraint 'node.role == manager' \
>     --mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
>     --mount type=bind,src=/path/on/host/data,dst=/data \
>     portainer/portainer \
>     -H unix:///var/run/docker.sock

Error response from daemon: rpc error: code = 4 desc = context deadline exceeded
[root@docker-master ~]# docker node ls
ID                           HOSTNAME       STATUS  AVAILABILITY  MANAGER STATUS
5z5qgowrqqcf7vnwicwaaomwy *  docker-master  Ready   Active        Leader
a1b5s761mz5fp0a73ug5ff7lg    docker-node01  Ready   Active
gdg3puyzl4dbyi5s4ggienz7j    docker-node02  Ready   Active
xwbceni0bbumtx8p3p4yz5b7t    docker-node03  Ready   Active
[root@docker-master ~]# docker version
Client:
 Version:      17.03.0-ce
 API version:  1.26
 Go version:   go1.7.5
 Git commit:   60ccb22
 Built:        Thu Feb 23 10:54:03 2017
 OS/Arch:      linux/amd64

Server:
 Version:      17.03.0-ce
 API version:  1.26 (minimum version 1.12)
 Go version:   go1.7.5
 Git commit:   60ccb22
 Built:        Thu Feb 23 10:54:03 2017
 OS/Arch:      linux/amd64
 Experimental: false
您在 /var/spool/mail/root 中有邮件
[root@docker-master ~]# docker info
Containers: 21
 Running: 12
 Paused: 0
 Stopped: 9
Images: 333
Server Version: 17.03.0-ce
Storage Driver: devicemapper
 Pool Name: docker-thinpool
 Pool Blocksize: 524.3 kB
 Base Device Size: 10.74 GB
 Backing Filesystem: xfs
 Data file:
 Metadata file:
 Data Space Used: 41.55 GB
 Data Space Total: 1.448 TB
 Data Space Available: 1.406 TB
 Metadata Space Used: 22.57 MB
 Metadata Space Total: 15.23 GB
 Metadata Space Available: 15.21 GB
 Thin Pool Minimum Free Space: 144.7 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: true
 Deferred Deletion Enabled: true
 Deferred Deleted Device Count: 0
 Library Version: 1.02.135-RHEL7 (2016-09-28)
Logging Driver: json-file
.......

Hey @troychn
Did you try to start another service using the CLI ? I think that this issue is related to Docker and not Portainer deployment.
Seems to happen occasionally when managing services: https://github.com/moby/moby/issues/29087

i find out answer in this page
#31427
thanks ! @deviantony

I got the same error when trying to join a swarm cluster as a worker Used 2 VMs from Google cloud for this..
Manager node was working fine ..docker info--> swarm did not give any errors. but when i try to join the worker nodes with the token .. i got this error "Error response from daemon: Timeout was reached before node joined. The attempt to join the swarm will continue in the background. Use the "docker info" command to see the current swarm status of your node. "  while docker info showed me
"rpc error: code = DeadlineExceeded desc = context deadline exceeded in swarm error"
tried a lot of different things finally below solution worked.
solution. -->. i used  "docker swarm init --force-new-cluster". in one of the vms i tried to join the as a worker..  and then i used "docker swarm leave --force" on the existing manager node .. and the joined that one as a worker to the newly created cluster. Other vm also also worked when tried to join as workers for the new cluster..
ubuntu - 18.04
docker version -20.10.17


Replace sqlite-net-pcl with Microsoft.Data.Sqlite

Microsoft has it's own Xamarin/MAUI compliant version of sqlite, Microsoft.Data.Sqlite, which is available as a NuGet package. Update the .NET MAUI local databases to use it, with links back to the docs for Microsoft.Data.Sqlite.
While this is a priority work item, it's doubtful it'll be completed until after the .NET 8 launch mid-November.
Don't forget to update SUPPORT.md.

Associated WorkItem - 177248

Scrapping this work item. It's too much of a step backwards.

it may useful

i must admit that using sqlite-net-pcl is a lot easier


Fix typos.

Ping @sebcrozet ? (I was away for the weekend!)

Thanks, sorry for me delay, it slipped my mind somehow!


Enforce image signing on AWS ECS

We have a requirement to enforce image signing on AWS ECR. Any AWS service that tries to run a container should be prevented from doing so if the image does not pass signature verification. All of our container run on ECS. Per the suggestion on issue 383, I'm trying to run a program that listens for ECS events, verifies the image signature, and kills the container if verification fails. I've been trying to prototype this on Lambda, but I've run into two problems that I believe are deal breakers for using Lambda for this:

The only way I could figure to run Cosign on Lambda was in a Docker container Lambda, which begs the question, what verifies the signature of the container that the Lambda runs?
I've found no way to run Docker-in-Docker on a Lambda container, meaning the Lambda can't do docker login <ecr-repo> and Cosign can't access the image.

 That would still present the problem of how to authenticate the Lambda to ECR. I'm not sure it's possible to run Cosign as a package in Go. Even if it is, no one in the company is a Go developer, and we're not keen to maintain a lone Go function for this purpose. That said, I wouldn't reject the solution out of hand if there was one.
I'm wondering if anyone in the Cosign community has seen image signing enforced on ECS done with Cosign before, and what the architecture looked like. Mainly I'm thinking about where to run the program that will run cosign verify, and how it listens for events.

We finally got something working here! Check out this blog post and code:
https://blog.chainguard.dev/cosign-verify-ecs/
https://github.com/chainguard-dev/cosign-ecs-verify

Closing since we published a sample.


Use a pre-trained model for evaluating a new test set?

Hi,
How can I use one of the pre-trained models from the 'models' folder to evaluate on a new test set? Just to check the generalization capability of the model?
The test set is already in BIO tagging scheme and need not to be splitted and tokenized. Just want to do the predictions and evaluation in terms of F1-score.
Thanks

I have tried using a pre-trained model and got the following error.
OSError: Unable to open file (unable to open file: name = 'linnaeus-IOB_0.9593_0.8883_2.h5', errno = 2, error message = 'No such file or directory', flags = 0, o_flags = 0)

It appears that the file does not exist. Have you specified the correct path?
Have you tried the Save_and_Load.py:
https://github.com/UKPLab/emnlp2017-bilstm-cnn-crf/blob/master/Save_and_Load.py
Does it work?

Hi,
I have specified the path correctly and the file does exist as i can see it.
There are a number of  models that i have trained most of them would throw the above error. While few of them work.

I haven't used save and load py. is it used for transfer learning?
I am only trying to use a pre-trained model for annotating free text for which i don't think i have to use saveandload.py


Python dev headers missing in venv

I think python dev headers are now missing when uv installs venv; repro (start from ubuntu 22.04):
confirmed on uv==0.5.0 and 0.5.4, not tested on other versions
export $VIRTUAL_ENV=/tmp/.venv
curl -LsSf https://astral.sh/uv/0.5.0/install.sh | sh
. $HOME/.local/bin/env
uv venv --python 3.10 $VIRTUAL_ENV
. $VIRTUAL_ENV/bin/activate
uv pip install ihm

output:
[stderr]
src/ihm_format_wrap_1.7.c:203:11: fatal error: Python.h: No such file or directory
  203 | # include <Python.h>
      |           ^~~~~~~~~~
compilation terminated.
error: command '/usr/bin/x86_64-linux-gnu-gcc' failed with exit code 1
  Caused by: This error likely indicates that you need to install a library that provides "Python.h" for<EMAIL_ADDRESS>
Annoyingly, it used to work - I was able to install this package, but a couple of weeks ago binaries shipped with uv were swapped for some other builds, this affected even previous versions of uv.

Similar to https://github.com/astral-sh/uv/issues/8966#issuecomment-2466513707
TL;DR Try sysconfigpatcher to adjust the uv python downloads to have the proper pkgconfig and sysconfig metadata for your system.

but a couple of weeks ago binaries shipped with uv were swapped for some other builds, this affected even previous versions of uv.

This doesn't quite make sense, we didn't change previous versions of uv and the Python distributions we use are hard-coded for each release and cannot change.

If you're using a system interpreter, you should install the headers, e.g., the following works:
docker run --platform linux/x86_64 -it ghcr.io/astral-sh/uv:bookworm /bin/bash -c "apt update && apt install python3-dev && uv venv && uv pip install ihm"

You can also use the system headers for our managed distributions, which surprises me:
docker run --platform linux/x86_64 -it ghcr.io/astral-sh/uv:bookworm /bin/bash -c "apt update && apt install clang && uv venv -p 3.10 && uv pip install 'ihm'"

I'm not sure if there are downsides to that.

this works:
docker run --platform linux/x86_64 -it --rm ghcr.io/astral-sh/uv:bookworm /bin/bash -c "apt update && apt install clang --yes && uv venv -p 3.10 && uv pip install ihm"

this doesn't
docker run --platform linux/x86_64 -it --rm ghcr.io/astral-sh/uv:bookworm /bin/bash -c "apt update && apt install clang --yes && uv venv -p 3.11 && uv pip install ihm"

Similar to #8966 (comment)
TL;DR Try sysconfigpatcher to adjust the uv python downloads to have the proper pkgconfig and sysconfig metadata for your system.

@arogozhnikov Please use sysconfigpatcher. Your second example does work when you use it.
docker run --platform linux/x86_64 -it --rm ghcr.io/astral-sh/uv:bookworm /bin/bash -c "apt update && apt install clang --yes && uv venv -p 3.11.10 && uv tool install git+https://github.com/bluss/sysconfigpatcher && uv tool run sysconfigpatcher /root/.local/share/uv/python/cpython-3.11.10-linux-x86_64-gnu && uv pip install ihm"

I am also having this issue, and using Docker is not a feasible workaround. Could UV not be modified so that installs the Python headers when creating a venv?

Hi @wjakob, the docker examples here are to provide an MRE, you can apply the same steps outside of docker.

This is on a machine where I don't have root access, hence installing the headers via apt is not an option (also, that would be for the OS Python version, which is often quite outdated). With uv not installing them as part of the virtual environment, it is impossible to build C extensions within the environment.

This is on a machine where I don't have root access, hence installing the headers via apt is not an option (also, that would be for the OS Python version, which is often quite outdated). With uv not installing them as part of the virtual environment, it is impossible to build C extensions within the environment.

Please see https://github.com/astral-sh/uv/issues/9347#issuecomment-2495214667

@arogozhnikov your failing example uses the system interpreter (3.11 is installed in the image already)
root@c0d1cea75e52:/# uv python list
cpython-3.13.0+freethreaded-linux-x86_64-gnu    <download available>
cpython-3.12.7-linux-x86_64-gnu                 <download available>
cpython-3.11.10-linux-x86_64-gnu                <download available>
cpython-3.11.2-linux-x86_64-gnu                 /usr/bin/python3.11
cpython-3.11.2-linux-x86_64-gnu                 /usr/bin/python3 -> python3.11
cpython-3.11.2-linux-x86_64-gnu                 /bin/python3.11
cpython-3.11.2-linux-x86_64-gnu                 /bin/python3 -> python3.11
cpython-3.10.15-linux-x86_64-gnu                <download available>
cpython-3.9.20-linux-x86_64-gnu                 <download available>
cpython-3.8.20-linux-x86_64-gnu                 <download available>
cpython-3.7.9-linux-x86_64-gnu                  <download available>
pypy-3.10.14-linux-x86_64-gnu                   <download available>
pypy-3.9.19-linux-x86_64-gnu                    <download available>
pypy-3.8.16-linux-x86_64-gnu                    <download available>
pypy-3.7.13-linux-x86_64-gnu                    <download available>

That's why you need to install development headers via the system package manager.
If you force uv to use a managed interpreter with --python-preference only-manage, the example works
docker run --platform linux/x86_64 -it --rm ghcr.io/astral-sh/uv:bookworm /bin/bash -c "apt update && apt install clang --yes && uv venv -p 3.11 --python-preference only-managed && uv pip install ihm"

@wjakob please share a reproducible example

docker run --platform linux/x86_64 -it --rm ghcr.io/astral-sh/uv:bookworm /bin/bash -c "apt update && apt install clang --yes && uv venv -p 3.11 --python-preference only-managed && uv pip install ihm"

Thanks @zanieb, I've been incorrectly under assumption OP wanted to use gcc and not clang, hence my suggestions to use sysconfigpatcher.
docker run --platform linux/x86_64 -it --rm ghcr.io/astral-sh/uv:bookworm /bin/bash -c "apt update && uv venv -p 3.11.10 && uv tool install git+https://github.com/bluss/sysconfigpatcher && uv tool run sysconfigpatcher /root/.local/share/uv/python/cpython-3.11.10-linux-x86_64-gnu && uv pip install ihm"

Do you think it's worth expanding in docs when is it reasonable to attempt to use sysconfigpatcher by adding a note to python-versions.md or maybe a troubleshooting faq.

Do you think it's worth expanding in docs when is it reasonable to attempt to use sysconfigpatcher by adding a note to python-versions.md or maybe a troubleshooting faq.

It's sort of a priority for me to understand the problems people are encountering and fix it here rather than recommend sysconfigpatcher — it's nice that it exists and I'm sure we'll learn from it but I'd prefer a first-party solution.

Great to see it’s already being looked at! :-)

Gonna review this today to see if it's resolved with latest changes.

If it's any help, this would still fail
> docker run --platform linux/x86_64 -it --rm ghcr.io/astral-sh/uv:0.5.9-bookworm /bin/bash -c "uv venv -p 3.11.10 && uv pip install ihm"
Using CPython 3.11.10
Creating virtual environment at: .venv
Resolved 2 packages in 330ms
  x Failed to download and build `ihm==1.8`
  `-> Build backend failed to build wheel through `build_wheel` (exit status: 1)

      [stdout]
      running bdist_wheel
      running build
      running build_py
      creating build/lib.linux-x86_64-cpython-311/ihm
      copying ihm/__init__.py -> build/lib.linux-x86_64-cpython-311/ihm
      copying ihm/dataset.py -> build/lib.linux-x86_64-cpython-311/ihm
      copying ihm/representation.py -> build/lib.linux-x86_64-cpython-311/ihm
      copying ihm/analysis.py -> build/lib.linux-x86_64-cpython-311/ihm
      copying ihm/report.py -> build/lib.linux-x86_64-cpython-311/ihm
      copying ihm/metadata.py -> build/lib.linux-x86_64-cpython-311/ihm
      copying ihm/flr.py -> build/lib.linux-x86_64-cpython-311/ihm
      copying ihm/cross_linkers.py -> build/lib.linux-x86_64-cpython-311/ihm
      copying ihm/reader.py -> build/lib.linux-x86_64-cpython-311/ihm
      copying ihm/restraint.py -> build/lib.linux-x86_64-cpython-311/ihm
      copying ihm/source.py -> build/lib.linux-x86_64-cpython-311/ihm
      copying ihm/startmodel.py -> build/lib.linux-x86_64-cpython-311/ihm
      copying ihm/format.py -> build/lib.linux-x86_64-cpython-311/ihm
      copying ihm/model.py -> build/lib.linux-x86_64-cpython-311/ihm
      copying ihm/test.py -> build/lib.linux-x86_64-cpython-311/ihm
      copying ihm/geometry.py -> build/lib.linux-x86_64-cpython-311/ihm
      copying ihm/citations.py -> build/lib.linux-x86_64-cpython-311/ihm
      copying ihm/format_bcif.py -> build/lib.linux-x86_64-cpython-311/ihm
      copying ihm/protocol.py -> build/lib.linux-x86_64-cpython-311/ihm
      copying ihm/multi_state_scheme.py -> build/lib.linux-x86_64-cpython-311/ihm
      copying ihm/dictionary.py -> build/lib.linux-x86_64-cpython-311/ihm
      copying ihm/location.py -> build/lib.linux-x86_64-cpython-311/ihm
      copying ihm/dumper.py -> build/lib.linux-x86_64-cpython-311/ihm
      copying ihm/reference.py -> build/lib.linux-x86_64-cpython-311/ihm
      creating build/lib.linux-x86_64-cpython-311/ihm/util
      copying ihm/util/__init__.py -> build/lib.linux-x86_64-cpython-311/ihm/util
      copying ihm/util/make_mmcif.py -> build/lib.linux-x86_64-cpython-311/ihm/util
      running build_ext
      building 'ihm._format' extension
      creating build/temp.linux-x86_64-cpython-311/src
      clang -pthread -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3
      -Wall -fPIC -fPIC -Isrc -I/root/.cache/uv/builds-v0/.tmpOq7G05/include
      -I/root/.local/share/uv/python/cpython-3.11.10-linux-x86_64-gnu/include/python3.11 -c src/ihm_format.c -o
      build/temp.linux-x86_64-cpython-311/src/ihm_format.o

      [stderr]
      error: command 'clang' failed: No such file or directory

@samypr100 You need to have a sane build setup (C++ dev environment) in your container. This is not related to the main issue, which was about the presence of Python headers.

@samypr100 You need to have a sane build setup (C++ dev environment) in your container. This is not related to the main issue, which was about the presence of Python headers.

Thanks, note this is a buildpack-deps based image so it has a sane build setup.

I presume the point is that we'd need #9916 for that example to work?

Yeah for me that's separate from this issue (though a good point from @samypr100).

Confirmed that this works on latest (with CC=gcc).

My last example now also works as of 0.5.10 release without the need for CC=gcc 🥳
> docker run --platform linux/x86_64 -it --rm ghcr.io/astral-sh/uv:0.5.10-bookworm /bin/bash -c "uv venv -p 3.11.10 && uv pip install ihm"
Using CPython 3.11.10
Creating virtual environment at: .venv
Resolved 2 packages in 406ms
   Built ihm==1.8
Prepared 2 packages in 2.72s
Installed 2 packages in 2ms
 + ihm==1.8
 + msgpack==1.1.0


[feature] Implement "pseudo" task manager for listing running task

Hello again,
I hope you like the feature. You can just call it like:
 Serial.print(threads.threadsInfo());

and get a list of the running tasks 👍🏿 with some extra information!
Accidentally I had pushed some work in progress into your master branch. 😬
I am really sorry for that! If you merge this pull request everything will be clean up! 🤞🏿
If you like the feature, I could gladly write some information in your README.md doce. Thanks

A sample output can be seen below:
0:Stack size:10240|Used:537296896|Remains:-537286656|State:RUNNING|cycles:1863991007
1:Stack size:2048|Used:184|Remains:1864|State:SUSPENDED|cycles:4802728
2:Stack size:1024|Used:168|Remains:856|State:RUNNING|cycles:810566274

Can you maybe explain the Used/Remains for stack 0? Why such huge number?

It does seem like the number for Thread 0 isn't reliable perhaps because Thread 0 is the main thread provided by Teensy at boot. It's stack is not managed by the library. I'll have to look more closely at it to see if it can be fixed.


json to data-frame

Hi. I'm making a package for data-frames. The goal is to convert an arbitrary json to a data-frame (like doing python3 with pandas). I have this code that works, but I don't know if the use of "eval" is completely correct.
(defun make-dataframe (data &optional (df-name "DF"))
  ;; Ensure session is not NIL
  ;; Verify and set the structure of the data
  (setf *data* (check-structure-type data))

  ;; Initialize the database
  (setf *db* nil)

  ;; Extract keys from data and process them
  (let* ((keys-list (get-keys-as-list *data*)))
    (dolist (key keys-list)
      (let* ((hash-table-list (get-hash-table-list key)))
        (process-hash-table-list hash-table-list)))

    ;; Define the dataframe using lisp-stat:defdf
    (eval  `(lisp-stat:defdf ,(intern (str:upcase df-name))
		,(make-data-frame (extract-keys-columns *db*) *db*)))))

https://github.com/gassechen/json-to-data-frame

defdf is a macro, so you do have to use eval on it.  It was modeled on defparameter, and I've been thinking for a while now that it should be converted to a function, as I've needed it in situations similar to yours.  Nevertheless, it's a macro now and anything other than a top level definition means eval. You might consider eval-when to see if you can make it work elsewhere (here's a stackoverflow thread on uses of eval).  Alternatively perhaps you can convert defdf into a function equivalent, and I'd welcome that as a pull request.
Your json-to-data-frame seems to be more generic than existing json-> data-frame converters; You might want to refer to the one used in plot for ideas on how to (and how not to) do similar conversions: encode.lisp.  I wasn't able to figure out a generic json parser, and look forward to seeing this completed!

This is what I'm doing with lisp-stat, data-frame and vega plot
https://youtu.be/ZGgvDj00SZE?feature=shared

This is what I'm doing with lisp-stat, data-frame and vega plot https://youtu.be/ZGgvDj00SZE?feature=shared

Very interesting!  The web page graphics look very professional.
Do you have what you need as far as using the eval statement?  It's correct as far as this usage goes.  If there's nothing else I can help with I'd like to close this issue.  You can always reopen another if you like.


Add simpler phaser/webpack setup sample

While the phaser-es6-webpack project works, it contains a lot of boilerplate code that obscures the minimal steps needed for making phaser work with a webpack setup. I've provided a really simple gist showing how easy it actually is.
The gist: https://gist.github.com/georgesboris/48e40307243248f2c8890e6f8ae00613

I'm actually questioning if this shouldn't just be added in it's entirety to the docs. Since it's so small. It can even be shortened with that in mind.

Please update your PR description to add your Gist link, so other contributors can find it more easily and provide their input.

@rblopes Sure! 👍

If you write the equivalent config you can take #95 as well. 😃

@samme Do you think that updating the webpack project template with the minimal setup needed with comments and such would be a better solution? That way we could just link the template from the readme. (This should be really trivial. Should I update the PR with this changes or should I create another fork?)

Sure, you can just update this PR.

@samme I've updated the webpack project template. It is working as expected.


Reducing node module dependencies

This PR contains all the files changed while reducing the number of node module dependencies, like package.json, tsconfig.json etc.

[x] The React app is working well

Signed-off-by: bhanvimenghani<EMAIL_ADDRESS>

This PR corresponds to issue no. 8

LGTM


distance between robot and line

Hi,
I want to use your package to create a wall following algorithm where instead of checking directly the distance to the wall through the laserscanner points, I want to just compute the distance to the line. I see that the output of the line_segment topic is the polar coordinates. which angle of the robot does the r value given corresponds to ? Thanks  in advance.

See Figure 2 in this paper.
The axes in that figure are the axes of the laser scanner. The radius returned by this package is the value of R in the figure, and the angle returned by this package is the value of α.

Hi, I have a same question but I can't open the link.
Would you mind copying the figure here?

@dlfksj Updated link here.


Exception:  RangeError (index): Index out of range: index must not be negative: -1

Describe the bug
Exception: RangeError (index): Index out of range: index must not be negative: -1
This issue exists for a while.
To Reproduce
Steps to reproduce the behavior:

Add a suggestion
Click on this newly added suggestion
OnSuggestionTap: context.push to another widget
Back to the searchfield widget
Often this exception occurs in step 3.

[ X] By clicking this checkbox, I confirm I am using the latest version of the package found on pub.dev/searchfield
1.1.1
Expected behavior
No assertion failure
Actual behavior
Assertion failure
Screenshots
======== Exception caught by widgets library =======================================================
The following IndexError was thrown building RawGestureDetector(state: RawGestureDetectorState#b6d79(gestures: [tap])):
RangeError (index): Index out of range: index must not be negative: -1
The relevant error-causing widget was:
...
When the exception was thrown, this was the stack:
dart-sdk/lib/internal/js_dev_runtime/private/ddc_runtime/errors.dart 296:3     throw
dart-sdk/lib/_internal/js_dev_runtime/private/js_array.dart 592:7               _get]
packages/searchfield/src/searchfield.dart 668:46
dart-sdk/lib/_internal/js_dev_runtime/private/js_array.dart 624:15              indexWhere]
packages/searchfield/src/searchfield.dart 667:39                                didUpdateWidget
packages/flutter/src/widgets/framework.dart 5789:55                             update
packages/flutter/src/widgets/framework.dart 3941:14                             updateChild
packages/flutter/src/widgets/framework.dart 6907:14                             update
packages/flutter/src/widgets/framework.dart 3941:14                             updateChild
packages/flutter/src/widgets/framework.dart 4090:32                             updateChildren
Without knowing the root case, my temporary workaround in searchfield.dart :666
Adding a few checks can avoid the exception, and I haven't observed any side effect.
// if a item was already selected
      if (selected != null && selected! >= 0 && selected! < oldWidget.suggestions.length) {
        selected = widget.suggestions.indexWhere(
            (element) => element == oldWidget.suggestions[selected!]);
      }

Hi @twfungi, Thanks for filing the issue. Can you please share a minimal reproducible code sample for me to investigate.
Thanks

STR:

Enter "Q" and select the suggestion "Queen". It will be pushed to Page2.
Press Back button from Page2 to HomePage.
Click on "Queen" in the TextEdit, and the exception will occur without any edit.

Console messages
Performing hot restart...
Waiting for connection from debug service on Chrome...
Restarted application in 184ms.
[log] [onSuggestionTap] selected Queen
======== Exception caught by widgets library =======================================================
The following IndexError was thrown building RawGestureDetector(state: RawGestureDetectorState#4f3ec(gestures: [tap])):
RangeError (index): Index out of range: index must not be negative: -1
The relevant error-causing widget was:
GestureDetector GestureDetector:file:///Users/jamesho/AndroidStudioProjects/searchfield_issue1/lib/main.dart:98:15
When the exception was thrown, this was the stack:
dart-sdk/lib/internal/js_dev_runtime/private/ddc_runtime/errors.dart 296:3     throw
dart-sdk/lib/_internal/js_dev_runtime/private/js_array.dart 592:7               _get]
packages/searchfield/src/searchfield.dart 669:46
dart-sdk/lib/_internal/js_dev_runtime/private/js_array.dart 624:15              indexWhere]
packages/searchfield/src/searchfield.dart 668:39                                didUpdateWidget
packages/flutter/src/widgets/framework.dart 5789:55                             update
packages/flutter/src/widgets/framework.dart 3941:14                             updateChild
packages/flutter/src/widgets/framework.dart 6907:14                             update
packages/flutter/src/widgets/framework.dart 3941:14                             updateChild
The complete source code
import 'package:flutter/material.dart';
import 'package:searchfield/searchfield.dart';
import 'dart:developer' as d;

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});
  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> with AutomaticKeepAliveClientMixin {
  @override
  bool wantKeepAlive = true;
  final focus = FocusNode();
  final _controller = TextEditingController();
  bool submitted = false;
  var suggestions = <String>["Alpha", "Beta", "Charlie", "Delta", "Echo", "Fox", "Gamma", "Hello", "Indigo"];

  var defaultSuggestions = <String>[
    "Alpha",
    "Beta",
    "Charlie",
    "Delta",
    "Echo",
    "Fox",
    "Gamma",
    "Hello",
    "Indigo",
    "Jimmy",
    "Kitty",
    "Lemon",
    "Monkey",
    "Nimo",
    "Oxford",
    "Peter",
    "Queen",
    "Rabbit",
    "Snake",
    "Timothy",
    "Uncle",
    "Victor",
    "Whiskey",
    "Xray",
    "Yellow",
    "Zullu"
  ];

  @override
  void initState() {
    super.initState();
    suggestions = getSuggestions();
  }

  @override
  void dispose() {
    _controller.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    super.build(context);
    Widget searchChild(x) => Padding(
          padding: const EdgeInsets.symmetric(vertical: 4.0, horizontal: 12),
          child: Text(x, style: Theme.of(context).textTheme.bodyMedium!),
        );

    SuggestionDecoration suggestionDecoration = SuggestionDecoration(
      elevation: 16.0,
      color: Colors.white54,
      borderRadius: BorderRadius.circular(24),
    );

    return Scaffold(
        appBar: AppBar(centerTitle: true, automaticallyImplyLeading: true, title: const Text('test')),
        body: GestureDetector(
            onTap: () {
              FocusScope.of(context).unfocus();
            },
            child: SizedBox(
                height: double.infinity,
                width: double.infinity,
                child: Column(
                  children: [
                    SizedBox(
                        width: 400,
                        child: SearchField(
                          controller: _controller,
                          onSearchTextChanged: (query) {
                            List<String> filter;
                            query = query.trim();
                            if (query.isEmpty) {
                              filter = suggestions = getSuggestions();
                            } else {
                              filter = defaultSuggestions
                                  .where((element) => element.toLowerCase().contains(query.toLowerCase()))
                                  .toList();
                            }
                            return filter.map((e) => SearchFieldListItem<String>(e, child: searchChild(e))).toList();
                          },
                          onSubmit: (str) async {
                            submitted = true;
                            d.log('[onSubmit] $str');
                            saveSuggestion(str.trim());
                            if (mounted) {
                              await Navigator.push(
                                  context, MaterialPageRoute(builder: (context) => const Page2(title: 'onSubmit')));
                            }
                          },
                          initialValue: null,
                          onTap: () async {
                            suggestions = getSuggestions();
                            setState(() {});
                          },
                          showEmpty: false,
                          emptyWidget: Container(
                              decoration: suggestionDecoration, height: 200, child: const Center(child: Text('Empty'))),
                          key: const Key('searchfield'),
                          dynamicHeight: true,
                          maxSuggestionBoxHeight: 300,
                          scrollbarDecoration: ScrollbarDecoration(minThumbLength: 30, thickness: 10),
                          onTapOutside: null,
                          suggestionDirection: SuggestionDirection.down,
                          suggestionStyle: Theme.of(context).textTheme.bodyMedium!,
                          searchInputDecoration: SearchInputDecoration(
                            searchStyle: Theme.of(context).textTheme.bodyMedium!,
                            prefixIcon: const Icon(Icons.search),
                            fillColor: Colors.white38,
                            suffixIcon: IconButton(
                              onPressed: _controller.clear,
                              icon: const Icon(Icons.clear),
                            ),
                            focusedBorder: OutlineInputBorder(
                              borderRadius: BorderRadius.circular(24),
                              borderSide: const BorderSide(
                                width: 1,
                                color: Colors.grey,
                                style: BorderStyle.solid,
                              ),
                            ),
                            border: OutlineInputBorder(
                              borderRadius: BorderRadius.circular(24),
                              borderSide: const BorderSide(
                                width: 1,
                                color: Colors.black,
                                style: BorderStyle.solid,
                              ),
                            ),
                            filled: true,
                            contentPadding: const EdgeInsets.symmetric(
                              horizontal: 20,
                            ),
                          ),
                          suggestionsDecoration: suggestionDecoration,
                          suggestions:
                              suggestions.map((e) => SearchFieldListItem<String>(e, child: searchChild(e))).toList(),
                          focusNode: focus,
                          suggestionState: Suggestion.expand,
                          onSuggestionTap: (SearchFieldListItem<String> x) {
                            submitted = false;
                            focus.unfocus();
                            d.log('[onSuggestionTap] selected ${x.searchKey}');
                            saveSuggestion(x.searchKey);
                            Future.delayed(const Duration(milliseconds: 200), () async {
                              if (!submitted) {
                                if (mounted) {
                                  await Navigator.push(context,
                                      MaterialPageRoute(builder: (context) => const Page2(title: 'onSuggestionTap')));
                                }
                              }
                            });
                          },
                        )),
                  ],
                ))));
  }

  List<String> getSuggestions() {
    return suggestions;
  }

  void saveSuggestion(String item) {
    if (item.isNotEmpty) {
      suggestions.removeWhere((e) => e == item);
      suggestions.insert(0, item);
      if (suggestions.length > 10) {
        suggestions.removeLast();
      }
    }
  }
}

class Page2 extends StatefulWidget {
  const Page2({super.key, required this.title});
  final String title;

  @override
  State<Page2> createState() => _Page2State();
}

class _Page2State extends State<Page2> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(centerTitle: true, automaticallyImplyLeading: true, title: Text(widget.title)),
        body: Center(child: Text('This is the Page2 from [${widget.title}]')));
  }
}

I'm getting same issue here. Please check it

Fixed and released in searchfield: ^1.1.2