opir acquires symbols defined for Windows on Linux

I was trying to import npy_common.h from Numpy C-API interface, but it seems to import also symbols for windows on my linux box
#if defined(_MSC_VER) && defined(_WIN64) && (_MSC_VER > 1400) || \
    defined(__MINGW32__) || defined(__MINGW64__)
    #include <io.h>

...

    #define npy_fseek _fseeki64
    #define npy_ftell _ftelli64
    #define npy_lseek _lseeki64
    #define npy_off_t npy_int64

...

#endif

nim file
import futhark

importc:
  absPath "/usr/lib/clang/10/include"
  path "/usr/include/python3.8"
  path "../venv/lib/python3.8/site-packages/numpy/core/include/numpy"
  define "NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION"
  "npy_common.h"

results in
lib/core/macros.nim(540, 17) Error: undeclared identifier: 'offt_452985251'

relevant opir cache section
    {
        "file": "/home/jack/nim/numpy4nim/venv/lib/python3.8/site-packages/numpy/core/include/numpy/npy_common.h",
        "kind": "const",
        "name": "npy_off_t",
        "position": {
            "column": 13,
            "line": 216
        },
        "type": {
            "kind": "alias",
            "value": "off_t"
        }
    },

The list of default defines for clang on my ubuntu 20.04 box doesn't contain MSC or MINGW
$ clang -dM -E - < /dev/null | grep MSC
$ clang -dM -E - < /dev/null | grep MINGW

I'm trying to include the defines manually, but I have question about syntax.
In the previously pasted define, I used define "NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" but I am not sure if it's the correct way
What's the correct way to import therse two, for example?
src: https://numpy.org/doc/stable/reference/c-api/deprecations.html?highlight=npy_no_deprecated_api#deprecation-mechanism-npy-no-deprecated-api
#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION

src: from https://termbin.com/tcpl
#define __clang_version__ "10.0.0 "

Hmm, I think 1.6.0 have changed some parsing rules so the same code yields different trees now. The error with defining stuff might be related to that.
That being said none of those defines should be needed, they should be set by Clang automatically.
The problem you're having is not that it is pulling in Windows definitions. If you look a bit closer at your code:
#define npy_off_t npy_int64

would define npy_off_t to be equal to npy_int64, but your JSON snippet clearly shows that it is defined as off_t. And off_t is defined in <sys/types.h> and is part of the POSIX spec. Not quite sure why Futhark isn't grabbing this definition though. I'll have to try this myself so I can get the full JSON and Nim outputs.

I feel stupid, but I've just found that if I compile the original effort not one but twice without clearing cache in the middle, it works
import futhark
#import nimpy

importc:
  absPath "/usr/lib/clang/10/include"
  path "/usr/include/python3.8"
  path "../venv/lib/python3.8/site-packages/numpy/core/include/numpy"
  define "NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION"
  "npy_common.h"

first nimble build
nimble build
  Verifying dependencies for<EMAIL_ADDRESS>      Info: Dependency on futhark@any version already satisfied
  Verifying dependencies for<EMAIL_ADDRESS>      Info: Dependency on https://github.com/PMunch/libclang-nim@#head already satisfied
  Verifying dependencies for clang@#head
      Info: Dependency on termstyle@any version already satisfied
  Verifying dependencies for<EMAIL_ADDRESS>      Info: Dependency on macroutils@any version already satisfied
  Verifying dependencies for<EMAIL_ADDRESS>      Info: Dependency on nimpy@any version already satisfied
  Verifying dependencies for<EMAIL_ADDRESS>   Building numpy4nim/numpy4nim using c backend
/home/jack/nim/numpy4nim/src/numpy4nim.nim(6, 1) template/generic instantiation of `importc` from here
/home/jack/.nimble/pkgs/futhark-0.3.1/futhark.nim(441, 14) template/generic instantiation of `importcImpl` from here
/home/jack/.nimble/pkgs/futhark-0.3.1/futhark.nim(142, 33) Warning: use `char` or `uint8` instead; cuchar is deprecated [Deprecated]
/home/jack/nim/numpy4nim/src/numpy4nim.nim(6, 1) template/generic instantiation of `importc` from here
/home/jack/.nimble/pkgs/futhark-0.3.1/futhark.nim(441, 14) template/generic instantiation of `importcImpl` from here
/home/jack/.nimble/pkgs/futhark-0.3.1/futhark.nim(621, 22) Warning: npyuint8 is deprecated [Deprecated]
/home/jack/nim/numpy4nim/src/numpy4nim.nim(6, 1) template/generic instantiation of `importc` from here
/home/jack/.nimble/pkgs/futhark-0.3.1/futhark.nim(441, 14) template/generic instantiation of `importcImpl` from here
/home/jack/.nimble/pkgs/futhark-0.3.1/futhark.nim(142, 33) Warning: use `char` or `uint8` instead; cuchar is deprecated [Deprecated]
/home/jack/nim/numpy4nim/src/numpy4nim.nim(6, 1) template/generic instantiation of `importc` from here
/home/jack/.nimble/pkgs/futhark-0.3.1/futhark.nim(441, 14) template/generic instantiation of `importcImpl` from here
/home/jack/.nimble/pkgs/futhark-0.3.1/futhark.nim(621, 22) Warning: npyuint8 is deprecated [Deprecated]
/home/jack/nim/numpy4nim/src/numpy4nim.nim(6, 1) template/generic instantiation of `importc` from here
/home/jack/.nimble/pkgs/futhark-0.3.1/futhark.nim(441, 14) template/generic instantiation of `importcImpl` from here
/home/jack/.nimble/pkgs/futhark-0.3.1/futhark.nim(631, 18) Warning: npyuint8 is deprecated [Deprecated]
/home/jack/nim/numpy4nim/src/numpy4nim.nim(6, 1) template/generic instantiation of `importc` from here
/home/jack/.nimble/pkgs/futhark-0.3.1/futhark.nim(441, 14) template/generic instantiation of `importcImpl` from here
/home/jack/.choosenim/toolchains/nim-1.6.0/lib/core/macros.nim(540, 17) Error: undeclared identifier: 'offt_452985251'
candidates (edit distance, scope distance); see '--spellSuggest':
 (9, 0): 'offt' [type declared in /home/jack/.nimble/pkgs/futhark-0.3.1/futhark.nim(631, 18)]
       Tip: 11 messages have been suppressed, use --verbose to show them.
     Error: Build failed for package: numpy4nim
        ... Execution failed with exit code 1
        ... Command: /home/jack/.nimble/bin/nim c --colors:on --noNimblePath -d:NimblePkgVersion=0.1.0 --path:/home/jack/.nimble/pkgs/futhark-0.3.1 --path:'/home/jack/.nimble/pkgs/clang-#head' --path:/home/jack/.nimble/pkgs/termstyle-0.1.0 --path:/home/jack/.nimble/pkgs/macroutils-1.2.0 --path:/home/jack/.nimble/pkgs/nimpy-0.2.0 --hints:off -o:/home/jack/nim/numpy4nim/numpy4nim /home/jack/nim/numpy4nim/src/numpy4nim.nim

second run
nimble build
  Verifying dependencies for<EMAIL_ADDRESS>      Info: Dependency on futhark@any version already satisfied
  Verifying dependencies for<EMAIL_ADDRESS>      Info: Dependency on https://github.com/PMunch/libclang-nim@#head already satisfied
  Verifying dependencies for clang@#head
      Info: Dependency on termstyle@any version already satisfied
  Verifying dependencies for<EMAIL_ADDRESS>      Info: Dependency on macroutils@any version already satisfied
  Verifying dependencies for<EMAIL_ADDRESS>      Info: Dependency on nimpy@any version already satisfied
  Verifying dependencies for<EMAIL_ADDRESS>   Building numpy4nim/numpy4nim using c backend
/home/jack/nim/numpy4nim/src/numpy4nim.nim(6, 1) template/generic instantiation of `importc` from here
/home/jack/.nimble/pkgs/futhark-0.3.1/futhark.nim(441, 14) template/generic instantiation of `importcImpl` from here
/home/jack/.cache/nim/numpy4nim_d/futhark_73FA32B2C582F887.nim(754, 25) Warning: use `char` or `uint8` instead; cuchar is deprecated [Deprecated]
/home/jack/nim/numpy4nim/src/numpy4nim.nim(6, 1) template/generic instantiation of `importc` from here
/home/jack/.nimble/pkgs/futhark-0.3.1/futhark.nim(441, 14) template/generic instantiation of `importcImpl` from here
/home/jack/.cache/nim/numpy4nim_d/futhark_73FA32B2C582F887.nim(812, 24) Warning: use `char` or `uint8` instead; cuchar is deprecated [Deprecated]
/home/jack/nim/numpy4nim/src/numpy4nim.nim(6, 1) template/generic instantiation of `importc` from here
/home/jack/.nimble/pkgs/futhark-0.3.1/futhark.nim(441, 14) template/generic instantiation of `importcImpl` from here
/home/jack/.cache/nim/numpy4nim_d/futhark_73FA32B2C582F887.nim(825, 25) Warning: use `char` or `uint8` instead; cuchar is deprecated [Deprecated]
/home/jack/nim/numpy4nim/src/numpy4nim.nim(6, 1) template/generic instantiation of `importc` from here
/home/jack/.nimble/pkgs/futhark-0.3.1/futhark.nim(441, 14) template/generic instantiation of `importcImpl` from here
/home/jack/.cache/nim/numpy4nim_d/futhark_73FA32B2C582F887.nim(1052, 5) Warning: npyuint8_452985262 is deprecated [Deprecated]
/home/jack/nim/numpy4nim/src/numpy4nim.nim(6, 1) template/generic instantiation of `importc` from here
/home/jack/.nimble/pkgs/futhark-0.3.1/futhark.nim(441, 14) template/generic instantiation of `importcImpl` from here
/home/jack/.cache/nim/numpy4nim_d/futhark_73FA32B2C582F887.nim(1172, 5) Warning: npybool_452985294 is deprecated [Deprecated]
/home/jack/nim/numpy4nim/src/numpy4nim.nim(6, 1) template/generic instantiation of `importc` from here
/home/jack/.nimble/pkgs/futhark-0.3.1/futhark.nim(441, 14) template/generic instantiation of `importcImpl` from here
/home/jack/.cache/nim/numpy4nim_d/futhark_73FA32B2C582F887.nim(1216, 5) Warning: npyubyte_452985310 is deprecated [Deprecated]
/home/jack/nim/numpy4nim/src/numpy4nim.nim(6, 1) template/generic instantiation of `importc` from here
/home/jack/.nimble/pkgs/futhark-0.3.1/futhark.nim(441, 14) template/generic instantiation of `importcImpl` from here
/home/jack/.cache/nim/numpy4nim_d/futhark_73FA32B2C582F887.nim(754, 25) Warning: use `char` or `uint8` instead; cuchar is deprecated [Deprecated]
/home/jack/nim/numpy4nim/src/numpy4nim.nim(6, 1) template/generic instantiation of `importc` from here
/home/jack/.nimble/pkgs/futhark-0.3.1/futhark.nim(441, 14) template/generic instantiation of `importcImpl` from here
/home/jack/.cache/nim/numpy4nim_d/futhark_73FA32B2C582F887.nim(812, 24) Warning: use `char` or `uint8` instead; cuchar is deprecated [Deprecated]
/home/jack/nim/numpy4nim/src/numpy4nim.nim(6, 1) template/generic instantiation of `importc` from here
/home/jack/.nimble/pkgs/futhark-0.3.1/futhark.nim(441, 14) template/generic instantiation of `importcImpl` from here
/home/jack/.cache/nim/numpy4nim_d/futhark_73FA32B2C582F887.nim(825, 25) Warning: use `char` or `uint8` instead; cuchar is deprecated [Deprecated]
/home/jack/nim/numpy4nim/src/numpy4nim.nim(6, 1) template/generic instantiation of `importc` from here
/home/jack/.nimble/pkgs/futhark-0.3.1/futhark.nim(441, 14) template/generic instantiation of `importcImpl` from here
/home/jack/.cache/nim/numpy4nim_d/futhark_73FA32B2C582F887.nim(1052, 5) Warning: npyuint8_452985262 is deprecated [Deprecated]
/home/jack/nim/numpy4nim/src/numpy4nim.nim(6, 1) template/generic instantiation of `importc` from here
/home/jack/.nimble/pkgs/futhark-0.3.1/futhark.nim(441, 14) template/generic instantiation of `importcImpl` from here
/home/jack/.cache/nim/numpy4nim_d/futhark_73FA32B2C582F887.nim(1172, 5) Warning: npybool_452985294 is deprecated [Deprecated]
/home/jack/nim/numpy4nim/src/numpy4nim.nim(6, 1) template/generic instantiation of `importc` from here
/home/jack/.nimble/pkgs/futhark-0.3.1/futhark.nim(441, 14) template/generic instantiation of `importcImpl` from here
/home/jack/.cache/nim/numpy4nim_d/futhark_73FA32B2C582F887.nim(1216, 5) Warning: npyubyte_452985310 is deprecated [Deprecated]
/home/jack/nim/numpy4nim/src/numpy4nim.nim(6, 1) template/generic instantiation of `importc` from here
/home/jack/.nimble/pkgs/futhark-0.3.1/futhark.nim(441, 14) template/generic instantiation of `importcImpl` from here
/home/jack/.cache/nim/numpy4nim_d/futhark_73FA32B2C582F887.nim(1557, 17) Warning: npyuint8_452985262 is deprecated [Deprecated]
/home/jack/nim/numpy4nim/src/numpy4nim.nim(6, 1) template/generic instantiation of `importc` from here
/home/jack/.nimble/pkgs/futhark-0.3.1/futhark.nim(441, 14) template/generic instantiation of `importcImpl` from here
/home/jack/.cache/nim/numpy4nim_d/futhark_73FA32B2C582F887.nim(1747, 16) Warning: npybool_452985294 is deprecated [Deprecated]
/home/jack/nim/numpy4nim/src/numpy4nim.nim(6, 1) template/generic instantiation of `importc` from here
/home/jack/.nimble/pkgs/futhark-0.3.1/futhark.nim(441, 14) template/generic instantiation of `importcImpl` from here
/home/jack/.cache/nim/numpy4nim_d/futhark_73FA32B2C582F887.nim(1815, 17) Warning: npyubyte_452985310 is deprecated [Deprecated]

`

I'll look into the define problem, it's just something that has to be fixed in Futhark.
And yes, I've run into this multiple run undefined symbol issue before. Not entirely sure why it happens, I'll have to look into that as well.

Seems that if C macro goes like
#define FOO BAR

and BAR is an enum value, Futhark generates
type Foo = Bar

instead of
const Foo = Bar

I had to put this before importc block to compile correctly
type
  Npytypes* {.size: sizeof(cuint).} = enum
    Npybool = 0, Npybyte = 1, Npyubyte = 2, Npyshort = 3, Npyushort = 4,
    Npyint = 5, Npyuint = 6, Npylong = 7, Npyulong = 8, Npylonglong = 9,
    Npyulonglong = 10, Npyfloat = 11, Npydouble = 12, Npylongdouble = 13,
    Npycfloat = 14, Npycdouble = 15, Npyclongdouble = 16, Npyobject = 17,
    Npystring = 18, Npyunicode = 19, Npyvoid = 20, Npydatetime = 21,
    Npytimedelta = 22, Npyhalf = 23, Npyntypes = 24, Npynotype = 25,
    Npychar = 26, Npyuserdef = 256

type
  Npydatetimeunit* {.size: sizeof(cint).} = enum
    Npyfrerror = -1, Npyfry = 0, Npyfrm = 1, Npyfrw = 2, Npyfrd = 4,
    Npyfrh = 5, Npyfrmenumval = 6, Npyfrs = 7, Npyfrms = 8, Npyfrus = 9,
    Npyfrns = 10, Npyfrps = 11, Npyfrfs = 12, Npyfras = 13, Npyfrgeneric = 14

const
  Npyfloat32* = Npyfloat
  Npydatetimedefaultunit* = Npyfrgeneric
  Npydefaulttype* = Npydouble
  Npyfloat64* = Npydouble
  Npyfloat128* = Npylongdouble
  Npycomplex128* = Npycdouble
  Npyint32* = Npyint
  Npycomplex256* = Npyclongdouble
  Npyuintp* = Npyulong
  Npyintp* = Npylong
  Npyuint32* = Npyuint
  Npyuint16* = Npyushort
  Npyint16* = Npyshort
  Npycomplex64* = Npycfloat
  Npyuint8* = Npyubyte
  Npyuint64* = Npyulong
  Npyfloat16* = Npyhalf
  Npyint64* = Npylong
  Npyint8* = Npybyte

importc:
  absPath "/usr/lib/clang/10/include"
  path "/usr/include/python3.8"
  path "../venv/lib/python3.8/site-packages/numpy/core/include/numpy"
  define "NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION"
  "npy_common.h"
  "arrayobject.h"
  "ndarrayobject.h"
  "ndarraytypes.h"

I already know that macro doesn't expose a type and so it's hard to guess, but I think is importart to start tracking different cases.
Meta
This issue drifted away from the original title. Here's the relevant things up to now linked to this issue:

some contexts require double compilation
define statement has to be fixed
this last comment

I just pushed a new version, it should fix the define statements mentioned in the latest comment. I also realised that to do defines with arguments you need to separate them with commas, so define "NPY_NO_DEPRECATED_API", "NPY_1_7_API_VERSION" should be valid.
Still not sure what causes the double compilation issue. But please create a new issue for that, this one has grown a bit off-topic.


Config to prevent vary on user-agent

We have a ton of records.config options around Vary. One particularly worrisome header for alternates is the User-Agent header -- there are so many of them. Most CDNs don't allow this -- but, we don't have any obvious ways to stop it (eg, minimally hard in header_rewrite; don't know of another).

The consensus is to use a plugin to remove this


Add cache for locations and parameters

create file equivalent for the Locations and Parameters cache properties:

method for reading/writing cache from files
including a cache-outdated parameter to check if cache is to be refreshed
include a periodic callback in bokeh.main to update cache (when outdated)

issue as solution for #49

Solves issues: #61 and #63

fixed in 0.6.0


Some samples default to different iModels

Some samples just look or work better with retail building or baytown.  We want the thumbnails to match with the starting model.
Also, I fixed a small bug with initializing the modelselector.

Just out of interest, what was the bug caused by the other way of getting the iModelSelector?

When a new sample is selected, the iModelSelector should be initialized to the first iModel in the list.  Problem is that we were using the iModel list from the state which reflects the previous sample.  Need to use the list from the new sample that hasn't been pushed to state yet.


VW: Move car specs to PlatformConfig

WIP per Discord discussion. Opened against @jnewb1's branch to show diffs for discussion.
Has a functional change to move PQ Sharan to the lat accel controller, I'll do that in a separate PR before moving forward.

was closed when i merged the branch, feel free to reopen


Grafana showing error: Failed to upgrade legacy queries.

After successfull installing the Postgres, Grafana and this TeslaMate addons I see that dashboards are created in grafana, and the correct car data is show in the TeslaMate UI

Sadly something seems not to be working as I get this view when it comes to grafana:

Does someone has any idea what could be wrong?

I recommend posting this on the upstream TeslaMate issues or discussions as this addon is just repackaging their work.

Ah, allright. I’ll try my luck there.


Peer Dependency Issues with "react": "^16.11.0",

react-native-dynamic cant be install because of the peer dependency issue of "react": "^16.11.0",
can you update to the latest am using "react":"17.0.1"

@Batsirai-sudo which version of NPM or Yarn were you using?
With yarn 1.22.17 I do see these issues, one of which is an open PR, the other is not (#19). Both of these should be addressed by the open PR - not just one of them.
warning " ><EMAIL_ADDRESS>has unmet peer dependency<EMAIL_ADDRESS>warning " ><EMAIL_ADDRESS>has unmet peer dependency<EMAIL_ADDRESS>

Could we get this package updated to support react 18?

^^ I'd love this as well!\

Please, update this package!


CQA improvements

Reformatted with Ruff (ruff fmt . --ignore=D --select=ALL --fix)
Improved typing (detailed description in 8a872ed)

This PR needs to be tuned for PEP 696.


context.mounted gives Don't use 'BuildContext's across async gaps message.

After upgrading to Flutter 3.7.0-1.1.pre on channel beta the context.mounted is flagged in use after async gap
I thought in my simple mind that context.mounted was "allowed" to be in use after async gap to detect valid context. If this should be so, what should we use instead to detect context validity ?

Thanks for the report @RoarGronmo
Can you check this comment and see if it helps in your case ?

I think it hasn't any practical issue, other that Lint is flagging it as "suspicius", when it wasn't "suspicius" in versions prior to 3.7.x.
But if it is "suspicius" after 3.7, how can we test the availability of context, when we cannot use context.mounted ?

BTW: As you see from the code suggestion which Flutter gives above, method is to use context.mounted as described.

Thanks for the update. Keeping this issue open and labeling for team's attention and insights.

/cc @goderbauer

@RoarGronmo Could you please post some real example code that reproduces this warning? I tried to reproduce it with the following code, but it was behaving as expected:
import 'package:flutter/material.dart';

Future<void> foo(BuildContext context) async {
  await Future.delayed(const Duration(seconds: 1));
  Material.of(context); // produces warning, as expected.
  if (context.mounted) { // no warning, as expected.
    Material.of(context); // no warning, as expected.
  }
}

Well, posting 550 lines not so suitable but I will give some more basic info first, that might give you some clues:
PS C:\FlutterProjects\mwork> flutter upgrade
Flutter is already up to date on channel beta
Flutter 3.7.0-1.1.pre • channel beta • https://github.com/flutter/flutter.git
Framework • revision e599f02c7a (8 days ago) • 2022-12-08 01:07:24 +0530
Engine • revision 4971c5b2e7
Tools • Dart 2.19.0 (build 2.19.0-444.1.beta) • DevTools 2.20.0

Android Studio Dolphin | 2021.3.1 Patch 1
Build #AI-213.7172.25.2113.9123335, built on September 30, 2022
Runtime version: 11.0.13+0-b1751.21-8125866 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Windows 11 10.0
GC: G1 Young Generation, G1 Old Generation
Memory: 4096M
Cores: 8
Registry:
    external.system.auto.import.disabled=true
    ide.text.editor.with.preview.show.floating.toolbar=false

Non-Bundled Plugins:
    org.jetbrains.kotlin (213-1.8.0-RC-release-311-AS6777.52)
    Dart (213.7433)
    io.flutter (71.1.3)

PS C:\FlutterProjects\mwork> flutter doctor -v
[√] Flutter (Channel beta, 3.7.0-1.1.pre, on Microsoft Windows [Version 10.0.22621.900], locale nb-NO)
    • Flutter version 3.7.0-1.1.pre on channel beta at c:\Flutter\flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision e599f02c7a (8 days ago), 2022-12-08 01:07:24 +0530
    • Engine revision 4971c5b2e7
    • Dart version 2.19.0 (build 2.19.0-444.1.beta)
    • DevTools version 2.20.0

[√] Windows Version (Installed version of Windows is version 10 or higher)

[√] Android toolchain - develop for Android devices (Android SDK version 33.0.1)
    • Android SDK at C:\Users\roarg\AppData\Local\Android\Sdk
    • Platform android-TiramisuPrivacySandbox, build-tools 33.0.1
    • ANDROID_HOME = C:\Users\roarg\AppData\Local\Android\Sdk
    • Java binary at: C:\Program Files\Android Studio\Android Studio 2<IP_ADDRESS>\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)
    • All Android licenses accepted.

[√] Chrome - develop for the web
    • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[√] Visual Studio - develop for Windows (Visual Studio Community 2019 16.11.3)
    • Visual Studio at C:\Program Files (x86)\Microsoft Visual Studio\2019\Community
    • Visual Studio Community 2019 version 16.11.31702.278
    • Windows 10 SDK version 10.0.19041.0

[√] Android Studio (version 2021.1)
    • Android Studio at C:\Program Files\Android Studio\Android Studio 2<IP_ADDRESS>
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.11+9-b60-7590822)

[√] Android Studio (version 2021.2)
    • Android Studio at C:\Program Files\Android Studio\Android Studio 2<IP_ADDRESS>
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.12+7-b1504.28-7817840)

[√] Android Studio (version 2021.3)
    • Android Studio at C:\Program Files\Android Studio\Android Studio 2<IP_ADDRESS>
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)

[!] Android Studio (version 2022.1)
    • Android Studio at C:\Program Files\Android Studio\Android Studio 2<IP_ADDRESS>
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    X Unable to find bundled Java version.
    • Try updating or re-installing Android Studio.

[√] Android Studio (version 2021.3)
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    X Unable to find bundled Java version.
    • Try updating or re-installing Android Studio.

[√] Connected device (4 available)
    • sdk gphone64 x86 64 (mobile) • emulator-5554 • android-x64    • Android 13 (API 33) (emulator)
    • Windows (desktop)            • windows       • windows-x64    • Microsoft Windows [Version 10.0.22621.900]
    • Chrome (web)                 • chrome        • web-javascript • Google Chrome 108.0.5359.100
    • Edge (web)                   • edge          • web-javascript • Microsoft Edge 106.0.1370.52

[√] HTTP Host Availability
    • All required HTTP hosts are available

! Doctor found issues in 3 categories.

pubspec.yaml
name: mwork
description: A tool for handling orders in Norva24.

# The following line prevents the package from being accidentally published to
# pub.dev using `flutter pub publish`. This is preferred for private packages.
publish_to: 'none' # Remove this line if you wish to publish to pub.dev

# The following defines the version and build number for your application.
# A version number is three numbers separated by dots, like 1.2.43
# followed by an optional build number separated by a +.
# Both the version and the builder number may be overridden in flutter
# build by specifying --build-name and --build-number, respectively.
# In Android, build-name is used as versionName while build-number used as versionCode.
# Read more about Android versioning at https://developer.android.com/studio/publish/versioning
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
# Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
version: 0.1.1+18

environment:
  sdk: ">=2.16.0-80.1.beta <4.0.0"

# Dependencies specify other packages that your package needs in order to work.
# To automatically upgrade your package dependencies to the latest versions
# consider running `flutter pub upgrade --major-versions`. Alternatively,
# dependencies can be manually updated by changing the version numbers below to
# the latest version available on pub.dev. To see which dependencies have newer
# versions available, run `flutter pub outdated`.
dependencies:

  #_fe_analyzer_shared: ^40.0.0
  #analyzer: ^4.1.0
  #camera_web: ^0.3.0
  #characters: ^1.2.1
  #material_color_utilities: ^0.1.5

  #flutter_webview_plugin:
  #  git: https://github.com/nuc134r/flutter_webview_plugin.git

  msal_js: ^2.14.0
  aad_oauth: ^0.4.1
  provider: ^6.0.3
  path_to_regexp: ^0.4.0
  quiver: ^3.1.0
  #introduction_screen: ^3.0.2
  intl: ^0.18.0
  #socket_io_client: ^2.0.0-beta.4-nullsafety.0
  flutter:
    sdk: flutter

  #--jwt--- makes it possible to analyze jwt

  jwt_decode: ^0.3.1

  #---Swagger changes---
  chopper: 5.1.0
  json_annotation: ^4.5.0

  #---Google Maps---
  google_maps_flutter: ^2.1.7
  google_maps_flutter_web: ^0.4.0

  #---Location data (GPS)---
  #location: ^4.4.0
  location: ^5.0.0-dev.8

  #---Get---
  get: ^4.6.5

  #---Flutter Bloc---
  flutter_bloc: ^8.0.1

  #---Settings / preferences ---
  #flutter_settings_screens: ^0.3.2-null-safety
  pref: ^2.6.0

  #---Camera function---
  camera: ^0.10.0+1
  path_provider: ^2.0.11
  path: ^1.8.1

  #---Floor functionality---
  #floor: ^1.2.0

  #---Drift functionality---
  drift: ^2.1.0
  #drift:
  #  git:
  #    url: https://github.com/simolus3/drift.git
  #    ref: develop
  #    path: drift
  #drift: 1.7.1
  sqlite3_flutter_libs: ^0.5.7

  #---Url launcher
  url_launcher: ^6.1.3

  # The following adds the Cupertino Icons font to your application.
  # Use with the CupertinoIcons class for iOS style icons.
  cupertino_icons: ^1.0.5

  #---badges for icons
  badges: ^2.0.3

  #---flutter webview plugin displace
  #flutter_webview_plugin:
  #    git: https://github.com/nuc134r/flutter_webview_plugin.git

  #---logging:
  logging: ^1.0.2
  firebase_core: ^2.0.0
  firebase_crashlytics: ^3.0.1
  package_info_plus: ^3.0.0
  firebase_performance: ^0.9.0+1

  #---db_inspector
  drift_db_viewer: ^2.0.0

  #---validators
  email_validator: ^2.1.17

  #---list extensions
  collection: ^1.16.0

  #---flag
  flag: ^6.0.0

#---Icons---

flutter_icons:
  android: "launcher_icon"
  ios: true
  image_path: "assets/icons/logo_round.png"
  adaptive_icon_background: "#666666"

dev_dependencies:
  flutter_test:
    sdk: flutter

  #---swagger changes---
  build_runner: ^2.1.11
  chopper_generator: 5.1.0
  json_serializable: ^6.2.0
  swagger_dart_code_generator: ^2.8.7

  #---Launcher icons---
  flutter_launcher_icons: ^0.11.0

  #---floor generators---
  #floor_generator: ^1.2.0

  #---drift generators---
  drift_dev: ^2.1.0
  #drift_dev: 1.7.1

  #--- analyzer
  #analyzer: ^4.1.0

  # The "flutter_lints" package below contains a set of recommended lints to
  # encourage good coding practices. The lint set provided by the package is
  # activated in the `analysis_options.yaml` file located at the root of your
  # package. See that file for information about deactivating specific lint
  # rules and activating additional ones.
  flutter_lints: ^2.0.1

# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec

# The following section is specific to Flutter.
flutter:

  # The following line ensures that the Material Icons font is
  # included with your application, so that you can use the icons in
  # the material Icons class.
  uses-material-design: true

  # To add assets to your application, add an assets section, like this:
  assets:
    - assets/icons/

  # An image asset can refer to one or more resolution-specific "variants", see
  # https://flutter.dev/assets-and-images/#resolution-aware.

  # For details regarding adding assets from package dependencies, see
  # https://flutter.dev/assets-and-images/#from-packages

  # To add custom fonts to your application, add a fonts section here,
  # in this "flutter" section. Each entry in this list should have a
  # "family" key with the font family name, and a "fonts" key with a
  # list giving the asset and other descriptors for the font. For
  # example:
  # fonts:
  #   - family: Schyler
  #     fonts:
  #       - asset: fonts/Schyler-Regular.ttf
  #       - asset: fonts/Schyler-Italic.ttf
  #         style: italic
  #   - family: Trajan Pro
  #     fonts:
  #       - asset: fonts/TrajanPro.ttf
  #       - asset: fonts/TrajanPro_Bold.ttf
  #         weight: 700
  #
  # For details regarding fonts from package dependencies,
  # see https://flutter.dev/custom-fonts/#from-packages

A simple timeline scheme (extraction):
import 'dart:ui';

import 'package:collection/collection.dart';
import 'package:flutter/material.dart';
import 'package:mwork/common/extensions.dart';
import 'package:mwork/common/globals.dart' as globals;
import 'package:drift/drift.dart' as drift;
import 'package:mwork/functions/loaders.dart';
import 'package:mwork/functions/processors.dart';
import 'package:mwork/utils/widgets/icon_field.dart';

import '../../../../functions/selectors.dart';
import '../../../../services/drift/database/m_work_database.dart';
import '../../../../utils/widgets/flex_icon_field.dart';
import '../../../message/message.dart';
import '../../settings/setting_keys.dart';

class TimelineTabCurrentDay extends StatefulWidget{
  final int date;
  final ScrollController scrollController;
  const TimelineTabCurrentDay({
    Key? key,
    required this.date,
    required this.scrollController
  }) : super(key: key);

  @override
  State<TimelineTabCurrentDay> createState() => _TimelineTabCurrentDayState();
}

class _TimelineTabCurrentDayState extends State<TimelineTabCurrentDay> {
  @override
  Widget build(BuildContext context) {
    // TODO: implement build

    print("date = ${widget.date}");

    return Scrollbar(
      controller: widget.scrollController,
      thumbVisibility: true,
      child: ScrollConfiguration(
          behavior: ScrollConfiguration.of(context).copyWith(
              dragDevices: {
                PointerDeviceKind.touch,
                PointerDeviceKind.mouse
              }
          ),
        child: RefreshIndicator(
          onRefresh: () async {
            var selectedFirm = await globals.mWorkDatabase.getSelectedFirm(
                SettingKey.userSelectionSelectedFirm,
                SettingKey.userSelectionSelectedCountry).getSingleOrNull();
            if(selectedFirm==null){
              Message.error(context.mounted?context:null,"Firm not selected! Could not refresh data from server!");
            } else {
              await getUserActivities(
                  frmNo: selectedFirm.frmNo,
                  frmHash: selectedFirm.hash,
                  frDt: widget.date);
            }
          },
          child: StreamBuilder(
            stream: globals.mWorkDatabase.getMyDayActivityAppointments(widget.date, widget.date).watch(),
            builder: (context, snapshot){
              if(snapshot.hasError){
                return Card(
                  color: Colors.red,
                  child: Text(snapshot.error.toString(), style: TextStyle(color: Colors.yellow)),
                );
              }

              List<ActivityAppointment> activities = [];

              if(snapshot.hasData){
                activities = snapshot.data as List<ActivityAppointment>;
              }

              print("scrollbar activities = $activities");

              return ListView.builder(
                controller: widget.scrollController,
                itemCount: activities.length,
                  itemBuilder: (context, index){
                      var activity = activities[index];

                      print("activity = $activity");

                      switch(activity.rspTp){
                        case null:
                          return const SizedBox.shrink(); //No data for null
                        case 1:
                          return InkWell(
                            onTap: (){
                              selectTime(context: context, dateTime: DateTime(0,1,1,((activity.frTm??0)~/100),((activity.frTm??0).remainder(100)))).then((value){

                              });
                            },
                            child: Card(
                              shape:RoundedRectangleBorder(
                                  side: const BorderSide(width: 1),
                                  borderRadius: BorderRadius.circular(4)
                              ),
                              color: Colors.orange[300],
                              child: Column(
                                children: [
                                  Row(
                                    children: [
                                      FlexIconField(
                                        iconData: Icons.punch_clock,
                                        text: activity.frTm.to24HoursMinuteString(),
                                        fillColor: Colors.orange,
                                        flex: 25,
                                      ),
                                      FlexIconField(
                                        iconData: Icons.today,
                                        text: activity.frDt.toDateMonthYearString(),
                                        fillColor: Colors.orange,
                                        flex: 33,
                                      ),
                                      FlexIconField(
                                        iconData: Icons.category,
                                        text: "Punched in !",
                                        flex: 62,
                                        fillColor: Colors.orange,
                                      )
                                    ],
                                  ),

                                  activity.newNo!=0?Row(
                                    children: [
                                      FlexIconField(
                                          iconData: Icons.warning_amber,
                                          text: "Not server registered",
                                          fillColor: Colors.red[400]
                                      ),
                                      Padding(
                                        padding: const EdgeInsets.only(right: 4.0),
                                        child: ElevatedButton(
                                          onPressed: () {

                                          },
                                          child: Row(
                                            children: const [
                                              Icon(Icons.send),
                                              SizedBox(width: 4,),
                                              Text("Register"),
                                            ],
                                          ),
                                        ),
                                      ),
                                    ],
                                  ):const SizedBox.shrink()

                                ],
                              ),
                            ),
                          );

                          break;
                        case 2:
                          return Card(
                            shape: RoundedRectangleBorder(
                                side: const BorderSide(width: 1),
                                borderRadius: BorderRadius.circular(4)
                            ),
                            color: Colors.green[200],
                            child: Column(
                              children: [
                                Row(
                                  children: [
                                    FlexIconField(
                                      iconData: Icons.start,
                                      text:activity.frTm.to24HoursMinuteString(),
                                      //text:"23:45",
                                      flex: 28
                                    ),
                                    FlexIconField(
                                        iconData: Icons.timer_outlined,
                                        text:activity.noReg.fromMinutesTo24HourMinuteString(),
                                        flex: 28
                                    ),
                                    FlexIconField(
                                      iconData: Icons.keyboard_tab,
                                      text:activity.toTm.to24HoursMinuteString(),
                                      flex: 28
                                    ),

                                    const FlexIconField(
                                        iconData: Icons.category,
                                      text: "Assignment",
                                      flex: 50
                                    ),
                                  ],
                                ),
                                Row(
                                  children: [
                                    FlexIconField(
                                      iconData: Icons.assignment_turned_in,
                                      text: "${activity.ordNo}",
                                      flex: 26,
                                    ),
                                    FlexIconField(
                                      iconData: Icons.format_list_numbered,
                                      text: "${activity.ordLnNo}",
                                      flex: 18
                                    ),
                                    FlexIconField(
                                      iconData: Icons.engineering,
                                      text: "${activity.descr}",
                                      flex: 56
                                    )
                                  ],
                                )

                              ],
                            ),
                          );

                          //TODO Production
                        break;

                        case 12:

                          return InkWell(
                            onTap: (){
                              selectTime(context: context, dateTime: DateTime(0,1,1,((activity.frTm??0)~/100),((activity.frTm??0).remainder(100)))).then((value) async {

                                var selectedFirm = await globals.mWorkDatabase.getSelectedFirm(SettingKey.userSelectionSelectedFirm, SettingKey.userSelectionSelectedCountry).getSingleOrNull();

                                var me = await globals.mWorkDatabase.getMe().getSingleOrNull();

                                if(value==null){
                                  Message.info(context.mounted?context:null, "Nothing changed !" );
                                } else if((me==null)||(selectedFirm==null)){

                                } else {
                                  await activityAppointmentCreateSendProcessor(
                                      context: context.mounted ? context : null,
                                      empNo: me.empNo,
                                      frmNo: selectedFirm.frmNo,
                                      frmHash: selectedFirm.hash,
                                      frDt: activity.frDt??0,
                                      frTm: value.hour*100+value.minute,
                                      toDt: activity.toDt??0,
                                      toTm: value.hour*100+value.minute,
                                      rspTp: 12);
                                }
                                /*
                                await createMeActivityAppointment(
                                    frmNo: activity.frmNo??0,
                                    frDt: activity.frDt,
                                    frTm: (value?.hour??0)*100+(value?.minute??0),
                                    toDt: activity.toDt,
                                    toTm: (value?.hour??0)*100+(value?.minute??0),
                                    rspTp: 12
                                );*/
                              });
                            },
                            child: Card(
                              shape:RoundedRectangleBorder(
                                  side: const BorderSide(width: 1),
                                  borderRadius: BorderRadius.circular(4)
                              ),
                              color: Colors.orange[300],
                              child: Column(
                                children: [
                                  Row(
                                    children: [
                                      FlexIconField(
                                        iconData: Icons.punch_clock_outlined,
                                        text: activity.frTm.to24HoursMinuteString(),
                                        fillColor: Colors.orange,
                                        flex: 25,
                                      ),
                                      FlexIconField(
                                        iconData: Icons.today,
                                        text: activity.frDt.toDateMonthYearString(),
                                        fillColor: Colors.orange,
                                        flex: 33,
                                      ),
                                      const FlexIconField(
                                        iconData: Icons.category,
                                        text: "Punched out !",
                                        flex: 62,
                                        fillColor: Colors.orange,
                                      )
                                    ],
                                  ),

                                  activity.newNo!=0?Row(
                                    children: [
                                      FlexIconField(
                                          iconData: Icons.warning_amber,
                                          text: "Not server registered",
                                          fillColor: Colors.red[400]
                                      ),
                                      Padding(
                                        padding: const EdgeInsets.only(right: 4.0),
                                        child: ElevatedButton(
                                          onPressed: () {

                                          },
                                          child: Row(
                                            children: const [
                                              Icon(Icons.send),
                                              SizedBox(width: 4,),
                                              Text("Register"),
                                            ],
                                          ),
                                        ),
                                      ),
                                    ],
                                  ):const SizedBox.shrink()

                                ],
                              ),
                            ),
                          );

                          break;

                        default :

                          return Card(
                            shape:RoundedRectangleBorder(
                                side: const BorderSide(width: 1),
                                borderRadius: BorderRadius.circular(4)
                            ),
                            color: Colors.blueGrey[300],
                            child: Column(
                              children: [
                                Row(
                                  children: [
                                    FlexIconField(
                                        iconData: Icons.start,
                                        text:activity.frTm.to24HoursMinuteString(),
                                        //text:"23:45",
                                        flex: 28
                                    ),
                                    FlexIconField(
                                        iconData: Icons.timer_outlined,
                                        text:activity.noReg.fromMinutesTo24HourMinuteString(),
                                        flex: 28
                                    ),
                                    FlexIconField(
                                        iconData: Icons.keyboard_tab,
                                        text:activity.toTm.to24HoursMinuteString(),
                                        flex: 28
                                    ),

                                    Flexible(
                                      flex: 50,
                                      child: StreamBuilder(
                                        stream: globals.mWorkDatabase.getActivityResponseTypes().watch(),
                                        builder: (context, snapshot) {

                                          var responseTypes = snapshot.data as List<ActivityResponseType?>?;

                                          if(responseTypes == null || responseTypes.isEmpty){
                                            return PopupMenuButton(
                                              itemBuilder: (context){
                                                return[
                                                  const PopupMenuItem(
                                                      child: Text("<No entries>", style:TextStyle(color: Colors.red))
                                                  )
                                                ];
                                              },
                                              child: IconField(
                                                iconData: Icons.category,
                                                text: "${activity.rspTp??""}",
                                              ),
                                            );
                                          } else
                                          {
                                            return PopupMenuButton<int>(
                                              child: IconField(
                                                iconData: Icons.category,
                                                text: "${responseTypes[activity.rspTp??0]?.descr??"--"}",
                                              ),
                                              onSelected: (index) async {
                                                await globals.mWorkDatabase.updateActivityAppointmentCategory(
                                                  responseTypes[index]?.rspTpNo,
                                                  activity.newNo,
                                                  activity.agrNo
                                                );
                                              },
                                              itemBuilder: (context){
                                                return responseTypes.mapIndexed((index, responseType){
                                                  return PopupMenuItem(
                                                    value: index,
                                                    child: Row(
                                                      children: [
                                                        FlexIconField(
                                                          iconData: Icons.category_outlined,
                                                          text: "${responseType?.rspTpNo??"--"}",
                                                          flex: 4,
                                                        ),
                                                        FlexIconField(
                                                            iconData: Icons.category,
                                                            text: "${responseType?.descr??"--"}",
                                                          flex: 6,
                                                        )
                                                      ]
                                                    )
                                                  );
                                                }).toList();
                                              },
                                            );
                                          }

                                        }
                                      ),
                                    ),
/*
                                    FlexIconField(
                                        iconData: Icons.category,
                                        text: "${activity.rspTp??""}",
                                        flex: 50,
                                        onTap: (){

                                        },

                                    ),*/
                                  ],
                                ),
                                ((activity.newNo!=0)||(activity.isChanged==true))?Row(
                                  children: [
                                    FlexIconField(
                                      iconData: Icons.warning_amber,
                                      text: "Not server registered",
                                      fillColor: Colors.red[400],
                                    ),
                                    Padding(
                                      padding: const EdgeInsets.only(right: 4.0),
                                      child: ElevatedButton(
                                        onPressed: () async {

                                          var selectedFirm = await globals.mWorkDatabase.getSelectedFirm(SettingKey.userSelectionSelectedFirm, SettingKey.userSelectionSelectedCountry).getSingleOrNull();

                                          await activityAppointmentCreateSendProcessor(
                                              context: context.mounted?context:null,
                                              empNo: activity.empNo,
                                              frmNo: activity.frmNo??0,
                                              frmHash: selectedFirm?.hash??"",
                                              frDt: activity.frDt??0,
                                              frTm: activity.frTm??0,
                                              toDt: activity.toDt??0,
                                              toTm: activity.toTm??0,
                                              rspTp: activity.rspTp??0);

                                        },
                                        child: Row(
                                          children: const [
                                            Icon(Icons.send),
                                            SizedBox(width: 4,),
                                            Text("Register"),
                                          ],
                                        ),
                                      ),
                                    ),
                                  ],
                                ):const SizedBox.shrink()
                              ],
                            ),
                          );

                          break;

                      }

                      return Text("${activities[index].agrNo}: ${activities[index].frDt}"); //Fail-over returns
                  });

              return Text("Text");  //Fail-over returns
            }
          ),
        ),
      ),
    );
  }
}

You will certainly not let it work since you miss some internal libraries, but the clue is: context.mounted is "linting".
Note: the context.mounted references appears in lines: 54, 236, 241, 447

@RoarGronmo Can you reduce the code sample that shows the erroneous behavior by removing subsequently removing all the stuff that isn't relevant? That will make it easier to debug this.

I have reworked the standard example to launch an AlertDialog with two buttons to mimick a delay.
As far as I see, the clue is that if(context.mounted) does not trigger message, but context.mounted?true:false trigger the message. You should make it possible to use context.mounted as a single legitim test, to avoid using if overall.
import 'package:flutter/material.dart';

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

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

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        // This is the theme of your application.
        //
        // Try running your application with "flutter run". You'll see the
        // application has a blue toolbar. Then, without quitting the app, try
        // changing the primarySwatch below to Colors.green and then invoke
        // "hot reload" (press "r" in the console where you ran "flutter run",
        // or simply save your changes to "hot reload" in a Flutter IDE).
        // Notice that the counter didn't reset back to zero; the application
        // is not restarted.
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

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

  // This widget is the home page of your application. It is stateful, meaning
  // that it has a State object (defined below) that contains fields that affect
  // how it looks.

  // This class is the configuration for the state. It holds the values (in this
  // case the title) provided by the parent (in this case the App widget) and
  // used by the build method of the State. Fields in a Widget subclass are
  // always marked "final".

  final String title;

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

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() async {

    setState(() {
      // This call to setState tells the Flutter framework that something has
      // changed in this State, which causes it to rerun the build method below
      // so that the display can reflect the updated values. If we changed
      // _counter without calling setState(), then the build method would not be
      // called again, and so nothing would appear to happen.
      _counter++;
    });
  }

  Future<int> longTime(int time) async {

    await Future.delayed(Duration(seconds: time),(){});

    return time;
  }

  @override
  Widget build(BuildContext context) {
    // This method is rerun every time setState is called, for instance as done
    // by the _incrementCounter method above.
    //
    // The Flutter framework has been optimized to make rerunning build methods
    // fast, so that you can just rebuild anything that needs updating rather
    // than having to individually change instances of widgets.
    return Scaffold(
      appBar: AppBar(
        // Here we take the value from the MyHomePage object that was created by
        // the App.build method, and use it to set our appbar title.
        title: Text(widget.title),
      ),
      body: Center(
        // Center is a layout widget. It takes a single child and positions it
        // in the middle of the parent.
        child: Column(
          // Column is also a layout widget. It takes a list of children and
          // arranges them vertically. By default, it sizes itself to fit its
          // children horizontally, and tries to be as tall as its parent.
          //
          // Invoke "debug painting" (press "p" in the console, choose the
          // "Toggle Debug Paint" action from the Flutter Inspector in Android
          // Studio, or the "Toggle Debug Paint" command in Visual Studio Code)
          // to see the wireframe for each widget.
          //
          // Column has various properties to control how it sizes itself and
          // how it positions its children. Here we use mainAxisAlignment to
          // center the children vertically; the main axis here is the vertical
          // axis because Columns are vertical (the cross axis would be
          // horizontal).
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            const Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headlineMedium,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        //onPressed: _incrementCounter,
        onPressed: () {
          showDialog(
            context: context,
            builder: (builderContext){
              return AlertDialog(
                title: Text("Test"),
                actions: [
                  ElevatedButton(onPressed: () async {
                    var value = await longTime(10);

                    if(context.mounted) print("context is mounted: var = $value");

                    print("context mounted = ${context.mounted}: var = $value");
                    print("builderContext mounted = ${builderContext.mounted}: var = $value");

                    if(builderContext.mounted) Navigator.pop(builderContext);

                  }, child: Text("10 secs")),
                  ElevatedButton(onPressed: () async {
                    var value = await longTime(1);

                    print("context mounted = ${context.mounted}: var = $value");
                    print("builderContext mounted = ${builderContext.mounted}: var = $value");

                    if(context.mounted) print("context is mounted: var = $value");

                    if(builderContext.mounted) Navigator.pop(builderContext);

                  }, child: Text("1 secs"))
                ],

              );
            }
          );
        },
        tooltip: 'Increment',
        child: const Icon(Icons.add),
      ), // This trailing comma makes auto-formatting nicer for build methods.
    );
  }
}

I hope this give you a clue !
-- Merry X-mas --

After upgrading to Flutter 3.7, I'm experiencing the same issue.
Besides the ternary operator, using !context.mounted results in the same warning.
It's pretty simple to reproduce:

Create a new project with flutter create
Then add this code to main.dart

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

  @override
  Widget build(BuildContext context) {
    return ElevatedButton(
      onPressed: () async {
        await Future<void>.delayed(Duration.zero);

        if (!context.mounted) {
          return;
        }
      },
      child: const Text('Test'),
    );
  }
}

@luccasclezar Could you file an issue with that repo case at https://github.com/dart-lang/linter/ and cc me please? It looks like the lint has a bug.

Closing this here since we are tracking the problem now at https://github.com/dart-lang/linter/issues/4007.


fail_if_exists not used

Based on the discussion in #471  and #470  and based on the code, I understand that this should be optional and the behavior should be controlled by the boolean variable "fail_if_exists". However, "fail_if_exists" is currently hardcoded to True in the call to render_and_create_dir. At the same time, the default value in render_and_create_dir is set to False. This seems contradictory and not intended.
In my view the behavior should be controllable by the user, e.g. via command line argument.

cc @lgp171188

@schacki @hackebrot The reason why I chose the default for fail_if_exists as False and overrode in one particular place is to keep other code which depend on the previous behaviour of render_and_create_dir from breaking. It looks to be a bad choice.
One way to fix it is to toggle the default and explicitly make fail_if_exists to be False wherever required.
As for the command-line argument, we can have fail_if_exists=True as the default behaviour (since it is never good to automatically overwrite some thing that already exists) and we can expose a command-line flag, say --overwrite-if-exists which will allow the user to override it.
Please let me know your thoughts on this.

cc @pydanny @michaeljoseph

:bell:


Entity Picking Bug

A coworker was working on something and came across a weird issue when attempting to pick entities in Cesium. I've put together a little example here
I attempted to post this in the forums but they weren't showing up.
The basic idea is, we are using the mouse_move event to pick and see what entities are under the cursor and display a tooltip for that entity. The sandcastle example above does just that.  We've come across a repeatable issue where Cesium doesn't correctly report the picked objects.
We found this in Cesium 1.32 I believe but have been able to reproduce it in the Sandcastle as well which I believe is currently at 1.33.
To reproduce the issue:

Zoom in to the right of the ISS path polyline (the purple one)
Adjust the camera angle downward (as low as possible) so that you're looking at the horizon. You should be below the polyline now
Click, drag and rotate the globe to a point beyond the ISS polyline (now on the left side of it)
Rotate the camera back around and look up at the ISS polyline
Mouseover the polyline for the ISS

If the steps above are executed correctly, the tooltip won't be displayed. In testing, it appears that the entity isn't correctly picked. Our code we were testing with would console log the value of the variable that we stored the picked entity into and in this instance, it would return undefined.
Getting it to fail my take a few tries but it's something that we've definitely been able to replicate numerous times. Is this a known issue?

Thanks for the detailed explanation and the code example @jdfwarrior!  We have seen some picking issues lately, but I wasn't able to reproduce the one you reported.  Could you copy/paste a screenshot of what the camera angle looks like when picking stops working?
Also, what browser, OS and graphics card are you using? Thanks!

Ok I just tried it again was able to replicate it a little easier this time. From the same link, double click on the ISS to track it. Click the globe to hide the info box then rotate under and back around to the top of the entity. At that point, the tooltip doesn't work. I know the tooltip isn't of your concern but the tooltip doesn't show when it found nothing to pick which seems to be the issue.
We did this in IE and Firefox (our IT team for some reason has bricked our ability to use Cesium in Chrome) on Windows 7 and graphics card is an NVIDIA Quadro K2200

Ah, thanks.  I was able to reproduce this in IE.  Most of us use Chrome for development so that's maybe why we haven't seen this.
This is what my view looked like when picking stopped working.  I would pop in occasionally, but hovering over most of the line returned nothing

Hey, I found this for @jdfwarrior.
I have noticed that if you resize the window it does start working again.
When it breaks sometimes the tooltip does show up in random places near the path. It seems like the calculation for pick is inaccurate.
We did this in a browser using IE to test the issue, but our typical environment is electron using chrome as the rendering engine where we originally encountered this issue. Thanks!

Thanks for the extra info @ChangeDotOrg!

I've actually ran into this a few times as well, but since I was on the 3D Tiles branch every time, I assumed it was specific to there.  "good" to know it's in master.  @bagnell can you take a look at this?

I just wanted to confirm that there is a picking bug even with the simple sandcastle demo on cesiumjs.org that picks a single cesium billboard entity. If you zoom out the earth ball and spin it around a few times and then zoom back in, picking stops working correctly and the part of the screen that causes the billboard to highlight is no where near the icon visually. Likewise as was mentioned if you then resize the screen, picking will start working again.
I attached a screen shot showing the mouse over Africa selecting an entity over the USA.

Thanks for including the screenshot @thedoctordiaz!  That should make it easier for us to reproduce what you are seeing.  We're going to try to look into this soon.

Turns out this is caused by the Sun coming into view alongside the Earth.  A fix is under review now, linked above,

This is fixed in master, and will be released with Cesium 1.35 on July 5th.  demo


username rename

What's the problem this feature will solve?
github and pypi different usernames or unwanted pypi username
Describe the solution you'd like
rename

We don't usually rename accounts on PyPI. You're welcome to register the new name and transfer any projects between the two accounts, and then close the original one.


Load application resources

[x] tests and linter show no problems (npm t)
[x] code is properly formatted (npm run fmt)

Landed in https://github.com/metarhia/impress/commit/4415da58298d5b9e6334051da632869c42ceb46e


Added http.noProxy setting which is same as NO_PROXY env variable value that is already present currently

Feature: #211956
The http.noProxy setting in Visual Studio Code mirrors the NO_PROXY environment variable, allowing users to specify domains or IP addresses exempt from HTTP proxy routing, streamlining network configurations for efficient development.

Testing Process
To test the http.noProxy setting in Visual Studio Code, you can follow these steps:

Open Visual Studio Code: Launch Visual Studio Code on your computer.

Access Settings: Navigate to the settings panel by clicking on "File" > "Preferences" > "Settings" or by using the shortcut Ctrl + , (Cmd + , on macOS).

Search for http.noProxy Setting: In the search bar at the top of the settings panel, type http.noProxy. This will filter the settings to display only the http.noProxy setting.

Modify http.noProxy Setting (if necessary): If you haven't already set the http.noProxy value, you can add it by clicking on the "Edit in settings.json" link below the setting. Alternatively, you can directly modify the settings.json file. Set the value of http.noProxy to a comma-separated list of domains or IP addresses that you want to exclude from the HTTP proxy routing. For example:
"http.noProxy": "localhost, <IP_ADDRESS>, example.com"

Save Settings: After making changes, save the settings.json file.

Test Connectivity: Now, you can test the changes by attempting to access resources that match the exclusions defined in http.noProxy. For example, if you've excluded localhost from the proxy routing, try accessing a local server running on your machine.

Observe Network Requests: You can also use network debugging tools within Visual Studio Code or external tools like browser developer tools to observe network requests and confirm that the excluded domains or IP addresses are not being routed through the HTTP proxy.

Verify Results: Verify that the excluded resources are accessible without going through the proxy server, confirming that the http.noProxy setting is functioning as expected.

By following these steps, you can effectively test the http.noProxy setting in Visual Studio Code and ensure that it meets your network configuration requirements.

@microsoft-github-policy-service agree

Thanks for the update. To make it work for extensions (it currently only reconfigures Electron), you also need to loop the value in to: https://github.com/microsoft/vscode-proxy-agent/blob/91b81109c75632b18fa2340f296ccaff9e9bcefa/src/index.ts#L80

Hi @chrmarti ,
I have updated the code to set no_proxy variable value to process.env from configuration, so that the no_proxy env variable gets directly passed to the @vscode/proxy-agent via ProxyAgentParams and the no_proxy support is enabled for extensions too.
https://github.com/microsoft/vscode/blob/b2e6cd0212dd5751bc852591608036fa6d76adbd/src/vs/workbench/api/node/proxyResolver.ts#L72
https://github.com/microsoft/vscode-proxy-agent/blob/91b81109c75632b18fa2340f296ccaff9e9bcefa/src/index.ts#L73-L80


Use BenchmarkDotNet for task perf project

See here: https://github.com/microsoft/visualfsharp/pull/6634#issuecomment-491852691
The perf suite in tests\fsharp\perf\tasks needs to use BenchmarkDotNet to account for any variance in runs, preferably with a README that has the last run stored. It should compare:

C# async runs as the baseline
F# async equivalent
F# asynccalling C# code with AwaitTask
Ply equivalent
Eventually, task CE in #6634

It should also use MemoryDiagnoser so we can see the memory usage of each case.

If you work on this please submit to the "tasks" branch in https://github.com/dsyme/visualfsharp

I'm switching it over to use BenchmarkDotNet now

Closing as all except Ply has been done in "tasks" branch


add tests and fix 500s

Description
Expose a few 500s based on fuzzing results and then fix them.
Review Instructions
Could try out weird languages and registries against the TRS API and get non-500s
Issue
https://ucsc-cgl.atlassian.net/browse/SEAB-6171
Security and Privacy
If there are any concerns that require extra attention from the security team, highlight them here and check the box when complete.

[x] Security and Privacy assessed

e.g. Does this change...

Any user data we collect, or data location?
Access control, authentication or authorization?
Encryption features?

Please make sure that you've checked the following before submitting your pull request. Thanks!

[x] Check that you pass the basic style checks and unit tests by running mvn clean install
[x] Ensure that the PR targets the correct branch. Check the milestone or fix version of the ticket.
[x] Follow the existing JPA patterns for queries, using named parameters, to avoid SQL injection
[x] If you are changing dependencies, check the Snyk status check or the dashboard to ensure you are not introducing new high/critical vulnerabilities
[x] Assume that inputs to the API can be malicious, and sanitize and/or check for Denial of Service type values, e.g., massive sizes
[x] Do not serve user-uploaded binary images through the Dockstore API
[x] Ensure that endpoints that only allow privileged access enforce that with the @RolesAllowed annotation
[x] Do not create cookies, although this may change in the future
[x] If this PR is for a user-facing feature, create and link a documentation ticket for this feature (usually in the same milestone as the linked issue). Style points if you create a documentation PR directly and link that instead.

JUnit tests should include assert() or fail() is a false positive, looks like assert is called in checkedResponse


Fix/129-admin families

Describe the bug
Adjunst admin families so it works with the last changes of the backend and it is responsive
To Reproduce
Expected behavior
The screen should be resposinve showing the corresponding information in a clear way

Story Points: 3
See the discussion in Frontend S2 W8
Powered by Parabol


Update how warnings are handled

Store warning settings and then restore them rather than setting them back to default.  The error message settings may not be at default and thus it is better to set them back to their previous values.

Thanks, I agree. The patch looks good 👍
Will proceed to merge the PR soonish, probably this weekend.


Data passing and processing via CUE templating

There have been offline discussion about supporting data passing and processing (aka. Patch Trait) via CUE templating.
In this issue, I'm gonna summarize the discussion and converge us onto final solution here.
Background
Currently, some Traits are designed to decompose a monolithic resource definition. For example, a Deployment has too many fields and we only want to expose fields like 'image', 'env' to developers as Workload, and other fields like 'replica', 'tolerations' are exposed as separate Traits. We want to pass data from such Traits directly onto Workload CR.
Data Passing (Patching)
A data passing is an action to get data from an object and do a json-patch to specific field of another object.
In our case we only have scenarios of Trait -> Workload.
A typical example is that, patch spec.replicaCount of ManualScalerTrait to spec.replicas of Deployment workload. In this example, We want to render trait data into Deployment resource at compile time before anything is applied to APIServer. To do so, we add a new field called patch into CUE template:
apiVersion: core.oam.dev/v1alpha2
kind: TraitDefinition
metadata:
  name: manualscaler
spec:
  template: |
    patch: {
        spec: replicas: parameter.replicas
    }
    parameter: {
        replicas: int & >0
    }

The result is, when an appfile like below is deployed:
services:
  express-server:
    type: webservice
    image: bitnami/nodejs
    manualscaler:
      replicas: 1

It would NOT create a new manualscaler resource, but patches the replicas data into spec.replicas field of Workload resource which is Deployment resource containing spec.replicas field.
This is the general idea. More details will be considered in final design doc.
Data Processing
There are use cases where input data needs to be further processed. The processing logic could be done in simple scripting. This is known as scripting layer or code automation. See:

https://cuelang.org/docs/usecases/scripting/
https://github.com/cuelang/cue/discussions/431

An example is that an auth Trait calls an external URL to retrieve TOKEN, and the patches the TOKEN into Workload resource.
Auth Trait definition:
apiVersion: core.oam.dev/v1alpha1
kind: Trait
metadata:
  name: auth-service
spec:
  template: |
    import "cuelang.org/go/pkg/tool/http"

    parameter: {
        serviceURL: string
    }

    processing: {
      output: {
        token: string
      }
      # task shall output a json result and output will correlate fields by name.
      task: http.Get & {
        url: parameter.serviceURL
      }
    }

    patch: {
      data: token: processing.output.token
    }

In above example, instead of using parameter, patch uses processed results from processing logic.
In this example, I have used a CUE scripting example only to demonstrate the idea. But this is quite general design and open to discuss. For example, shell/python scripting could also be supported.

It's implemented now, closing

https://github.com/oam-dev/kubevela/pull/1087


Investigate using Vulkan api version 1.1+

Currently the Vulkan backend is hardcoded to use version 1.0.0. Changing it to use the newest available version is easy:
        let api_version_default = vk::make_version(1, 0, 0);
        let api_version = entry
            .try_enumerate_instance_version()
            .unwrap_or(Some(api_version_default))
            .unwrap_or(api_version_default);
        trace!(
            "Using Vulkan api version {}.{}.{}",
            vk::version_major(api_version),
            vk::version_minor(api_version),
            vk::version_patch(api_version)
        );

(and pass this to vk::ApplicationInfo)
However, it is currently unknown if this would break any existing API: Many inputs to the gfx-hal api are just passed on to Vulkan as-is. Need to map out changes to Vulkan core in 1.1/1.2/.. and figure out if anything could behave differently in newer versions.

Possibly relevant (from LunarG):

Vulkan-SDK-Version-Compatibility_4_20.pdf: Says that that minor versions of Vulkan are backwards compatible and that there are some extra steps required in 1.1 for context creation.
1.1-Compatibility-Statement_05_18.pdf: Basically says the same thing, but specific for a 1.0 to 1.1 migration.

It seems like upgrading to 1.1+ will be pretty straightforward. When we implement features like descriptor indexing or ray tracing, we may need to be careful to conditionally light them up in the Vulkan backends based on the SDK version as well as the feature availability (although my driver will happily report ray tracing is available on a 1.0 device...).

Possibly relevant (from LunarG):

Vulkan-SDK-Version-Compatibility_4_20.pdf: Says that that minor versions of Vulkan are backwards compatible and that there are some extra steps required in 1.1 for context creation.
1.1-Compatibility-Statement_05_18.pdf: Basically says the same thing, but specific for a 1.0 to 1.1 migration.

It seems like upgrading to 1.1+ will be pretty straightforward. When we implement features like descriptor indexing or ray tracing, we may need to be careful to conditionally light them up in the Vulkan backends based on the SDK version as well as the feature availability (although my driver will happily report ray tracing is available on a 1.0 device...).


Print test results on connected serial/terminal

Implement final print of results as plaintext and/or CSV output
sample, packaging as mere values, Group, Test, RepNo ecc.
A;1;1;-3;1;3.245;44,233;11,100;

done ee51c78 for both modes


nf-core module: pysam

Write a pysam nf-core module.

Latest pysam version: 0.19.1-0, Bioconda Package Index.

Because pysam is a dependency for blobtools, a pysam nf-core module is no longer required.


BadStatusLine:  Requesting returnLoanOrders

Could just have been a time out, I'm not sure. I've not used used the market analysis stuff much. Thought I'd raise it anyway, maybe others are seeing it.
Running from lending-rewrite @ a2f14e451866ea7b70f1cfa46fbc0201b87ecf12
Exception in thread Thread-1:
Traceback (most recent call last):
  File "/usr/lib64/python2.7/threading.py", line 811, in __bootstrap_inner
    self.run()
  File "/usr/lib64/python2.7/threading.py", line 764, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/home/dog/poloniexlendingbot/modules/MarketAnalysis.py", line 57, in update_market_loop
    update_markets()
  File "/home/dog/poloniexlendingbot/modules/MarketAnalysis.py", line 66, in update_markets
    raw_data = api.return_loan_orders(cur, 5)['offers'][0]
  File "/home/dog/poloniexlendingbot/modules/Poloniex.py", line 226, in return_loan_orders
    return self.api_query('returnLoanOrders', {"currency": currency, "limit": limit})
  File "/home/dog/poloniexlendingbot/modules/Poloniex.py", line 91, in api_query
    ret = urllib2.urlopen(urllib2.Request(req_url))
  File "/usr/lib64/python2.7/urllib2.py", line 154, in urlopen
    return opener.open(url, data, timeout)
  File "/usr/lib64/python2.7/urllib2.py", line 431, in open
    response = self._open(req, data)
  File "/usr/lib64/python2.7/urllib2.py", line 449, in _open
    '_open', req)
  File "/usr/lib64/python2.7/urllib2.py", line 409, in _call_chain
    result = func(*args)
  File "/usr/lib64/python2.7/urllib2.py", line 1258, in https_open
    context=self._context, check_hostname=self._check_hostname)
  File "/usr/lib64/python2.7/urllib2.py", line 1217, in do_open
    r = h.getresponse(buffering=True)
  File "/usr/lib64/python2.7/httplib.py", line 1089, in getresponse
    response.begin()
  File "/usr/lib64/python2.7/httplib.py", line 444, in begin
    version, status, reason = self._read_status()
  File "/usr/lib64/python2.7/httplib.py", line 408, in _read_status
    raise BadStatusLine(line)
BadStatusLine:  Requesting returnLoanOrders

exception httplib.BadStatusLine
A subclass of HTTPException. Raised if a server responds with a HTTP status code that we don’t understand.
No idea.
(btw, please update lending-rewrite has been merged.) ;)


python310Packages.brother: remove postPatch section

Description of changes
Pinning of pysnmplib was removed by upstream and project migrated to tox.

Things done

Built on platform(s)

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

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

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

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
22.05 Release Notes (or backporting 21.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 175307 run on x86_64-linux 1

3 packages built:

home-assistant-component-tests.brother
python310Packages.brother
python39Packages.brother


Could not start the project

When I install this package on a create-react-native-app clean new project, it fails

hey I haven't really updated this package in a while. I'm currently looking to rewrite it because it had some problems before. I'm curious what kind of error you get when you npm install it. Let me know

I had a bunch of errors: all where related to the fact that it couldn't resolve packages anymore in the
react-native-implementation.js file. It's really linked to this issue.
But Is it really possible to run JS in the background in expo? Because it is still an open feature (not finished) in Expo...
https://expo.canny.io/feature-requests/p/audio-playback-in-background

yeah they have been changing  alot in the expo platform making it hard to make these modules new errors pop up all the time. Well if you are looking to play audio in the background while the app is open then expo has some code for that in their docs.  What functionality are you trying to achieve?

Running music in the background, when your not in the app

That cant be done using expo not yet at least. That has to be done in native objective c for now I think.

Hi there,
Any demo available to check how it works?


Fix user guide formatting for v1.1

Remove the unnecessary escape character on pipe characters
Also moved add student above add group to keep a better flow of content

Codecov Report

Merging #59 (8ef6741) into master (c9794a6) will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master      #59   +/-   ##
=========================================
  Coverage     72.15%   72.15%
  Complexity      399      399
=========================================
  Files            70       70
  Lines          1232     1232
  Branches        125      125
=========================================
  Hits            889      889
  Misses          311      311
  Partials         32       32

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 c9794a6...8ef6741. Read the comment docs.


Add ClumpSource creation methods to Clump object

As discussed in https://github.com/fwbrasil/clump/pull/35, I think it make things nice and simple to have one single entry point for using Clump.
I don't think the interface is too polluted like this
@fwbrasil let's discuss

Remember to move the source creation tests back to the ClumpApiSpec. LGTM

Fixed the merge/compilation issues

Remember to move the source creation tests back to the ClumpApiSpec. LGTM

okay

Actually @fwbrasil even though we're technically going through the Clump convenience methods, I think these tests makes sense to stay here because this is the class they are about

We need at least coverage to the Clump object methods.

Coverage remained the same when pulling 7edd6bca9a0ab96e94a4c312891811ff8242ca69 on clump-source-convenience-methods-in-clump-object into 3db1baf46a8ebd1ceada595651fefbee1f6ef46c on master.

Okay, there is coverage. :)


Create toggleable Night Mode

This is a fix for #21.
There is probably a much better way to do this, but I'm new to making apps with Electron.
There's a new CSS file and we're toggling a class on the html element. For CSS, we have tons of flexibility, so any design choices I made that people have an issue with can be adjusted.
This preserves the selection across sessions, and the menu item shows the selection. I couldn't think of a good keyboard shortcut, but we can add that.
Screenshot:

See #30


fix typos

there arent any other instances of "quest_" in the script so i think we'll be ok

since this is a game-breaking bug, note to self: iterate the version and make a new release once this gets pushed through


chore: Swift readme

add swift readme
update main readme
add release scripts for swift and c#

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

Project coverage is 85.48%. Comparing base (581dab6) to head (03afbef).

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #496   +/-   ##
=======================================
  Coverage   85.48%   85.48%
=======================================
  Files           8        8
  Lines        3933     3933
=======================================
  Hits         3362     3362
  Misses        571      571

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


Wire operatingSystem into Swift binary types

Context

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.
[ ] 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 locally: ./gradlew <changed-subproject>:check

Gradle Core Team Checklist

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

The tests should now be fixed, I kicked off another CI run.


Update results.ipynb

Added difference between stochastic and deterministic Deep Sea environments. This was pulled directly from comments in the source code, so if there's a more appropriate blurb feel free to edit.

@googlebot I signed it!

Thanks, I'll import this into our version control system and push a change that will link back to this PR and your name.

Thanks, merged in a817b2b.


mach-nix gen: flake.lock issues - error: opening file '/nix/store/python3.7-mach-nix-3.1.1/lib/python3.7/site-packages/flake.lock': No such file or directory

# clone mach-nix
nix-env -if . -A mach-nix
mach-nix gen -r "/home/requirements.txt"

unpacking...
[19.6 MiB DL]
path is '/nix/store/8c57r1znw2847p2f27g0nlh57dmqfv46-2247d824fe07f16325596acc7faa286502faffd1'
warning: unknown setting 'experimental-features'
error: opening file '/nix/store/g6y7j6gz1ih7j27lz8hhnz1is4brivlw-python3.7-mach-nix-3.1.1/lib/python3.7/site-packages/flake.lock': No such file or directory
(use '--show-trace' to show detailed location information)

works with 3.0.2

Same issue. I guess the workaround is to revert mach-nix to 3.0.2 ?

I get this in 3.3.0. Is there any way to fix this on my side or is it a bug?


Disable files highlight in explorer

Didn't find any way to disable ESLint highlighting in explorer. Did I miss it, or it is just alway on?

You can reconfigure rules using the eslint.rules.customizations setting which will support off soon as well

How can I do that exactly?

The readme in ESLint extension has an example how to use it.


Add remote versions option to list command

This PR introduces:

A WebRequestGetAsync method that simply wraps HttpClient.GetAsync().
A new -remote /  -r option for the list command to get remote versions available, following a convention others might be familiar with from nvm.
Automated tests added for this new option

Usage: godotenv godot list -r
Closes #12
Screenshots

Thanks for taking this on!
In the long term, I think sorting latest versions first would be most useful.  Could also consider some filter options like --stable-only.
I think this also provides a good foundation for a future command like godotenv godot upgrade that will try to get you a newer version if one is available.  That command could also benefit from a filter like --stable-only.

Maybe I’m wrong and oldest to newest is best since you’ll see the newest version at the end of the list, just above your new command prompt.  Good to take inspiration from nvm here.


MAUI Support

What is the plan, if any, for MAUI support?

It's a communication library. Maui is UI. So the library is not dependent on Maui or Forms or Native UI


Better JavaScript beautification

The Javascript beautifier is currently very slow, and is a major performance/usability issue in the console app.  What the user sees when switching to a JavaScript flow is a long - sometimes seconds-long - hang before responsiveness returns.
We have a plan to fix this - our contentviews should be lazy, and only prettify lines as requested. HTML has been fixed to work this way, and the implementation can be viewed here.

For the record, the same also applies to CSS, which is insanely slow currently. Here's the output from an exemplary mitmweb static viewer conversion, printing all contentviews that took >0.1s to render:
Slow content view: [decoded gzip] CSS took 0.2s
Slow content view: [decoded gzip] JavaScript took 0.1s
Slow content view: [decoded gzip] CSS took 2.0s
Slow content view: [decoded gzip] JavaScript took 0.2s
Slow content view: [decoded gzip] JavaScript took 2.2s
Slow content view: [decoded gzip] JavaScript took 0.9s
Slow content view: [decoded gzip] JavaScript took 2.4s
Slow content view: [decoded gzip] JavaScript took 1.4s
Slow content view: [decoded gzip] JavaScript took 0.5s
Slow content view: [decoded gzip] JavaScript took 1.8s
Slow content view: [decoded gzip] JavaScript took 0.1s
Slow content view: [decoded gzip] JavaScript took 2.6s
Slow content view: [decoded gzip] CSS took 1.9s
Slow content view: [decoded gzip] JavaScript took 2.8s
Slow content view: [decoded gzip] JavaScript took 4.3s
Slow content view: [decoded gzip] JavaScript took 0.9s
Slow content view: [decoded gzip] JavaScript took 0.5s
Slow content view: [decoded gzip] JavaScript took 3.0s
Slow content view: [decoded gzip] JavaScript took 1.3s
Slow content view: [decoded gzip] JavaScript took 0.4s
Slow content view: [decoded gzip] JavaScript took 1.0s
Slow content view: [decoded gzip] CSS took 0.8s
Slow content view: [decoded gzip] JavaScript took 2.0s


nx_websocket_client_data_process: Return true opcode with fin bit

Hello,
maybe this needs even better solution, but according to my knowledge of netxduo websocket client implementation, currently there is no way to properly discriminate:

first text/binary frame packet, which can further be split into multiple tcp packets
continuation packets, where each can be split into multiple tcp packets
last continuation packet, again split into multiple tcp packets

This small patch is about giving the caller at least the same information as nx_websocket_client_data_process() function has.
But caller still needs to take nx_websocket_client_frame_data_received and nx_websocket_client_frame_data_length into account to detect the last tcp packet of last continuation frame.
If someone can proprose better solution, I'm willing to look into it.

Hi elrafoon,
The application layer which utilizes the WebSocket module could apply own mechanism in application data to determine how to handle possible small split tcp packets after calling the API function nx_websocket_client_receive. Since WebSocket does not restrict the number of application layer frames inside one complete WebSocket frame, providing the FIN bit information to the application is not equivalent to delivering the information to the application that an application layer frame is completely received or not. You may reference the MQTT client https://github.com/eclipse-threadx/netxduo/blob/master/addons/mqtt/nxd_mqtt_client.c to see how MQTT utilizes the WebSocket module.

Of course, if application protocol provides its own headers to delimit invididual messages, then the FIN bit information and distinguishing TEXT/BINARY from CONTINUATION frames is not needed.
But in my case application protocol doesn't do any framing on its own, it doesn't provide any headers to allow application-layer packet delimiting. It's an OCPP 1.6 protocol, see here.
Without applying this patch, how should I proceed in such case?

Hello elrafoon, do you think it is feasible to use the curly braces as the judgement conditions for the application layer to catch the beginning and end of a JSON frame?

It's a heuristic, not exact method. JSON payload can be malformed. It's not generally applicable. Next time there would be different application protocol and similar solution won't work.
Since netxduo can't assemble whole websocket frame (due to RAM limitations in embedded systems) and only then pass it to the caller, caller must have some way to reliably identify the NX_PACKET it is dealing with. Why would you hide information available from the caller?

Hello elrafoon, the initial purpose of NetxDuo WebSocket module is for NetxDuo MQTT client to utilize, and the design targets to simplify the caller's work through caring about the received data only without caring about any WebSocket specific details. So far, the WebSocket design cannot satisfy the caller without frame boundary defining ability. Your recommendation will be taken into consideration for the future design; so far, there is no plan on improving this.