How to easily obtain vehicle speed?

I want to obtain speed, gear and other information through the car headunit instead of obd2 hardware. Is there an easy way?

Hey! Thanks for the question.
I'm not sure. I know I was able to determine whether the car was in reverse or not by looking at the status of a specific GPIO pin. You can read the status of GPIO pins by reading "files" at /sys/class/gpio.
I always intended to do more reverse engineering to see if I could write a small native library for getting vehicle speed/gear/etc (broadly called telematics) from the CAN bus.
If I had access to a list of CAN IDs for the 2021 Civic, I could probably look through the native libraries using a tool like Ghidra to see what native libraries reference which CAN IDs, and from there figure out how to write new software to read from the CAN bus. But I never got that far. Feel free to take a crack at it though! Thanks for your interest in the repo.

Also, this chip is on board somewhere https://github.com/librick/ic1101/blob/main/datasheets/a3g4250d-MEMS-motion-sensor-3-axis-digital-output-gyroscope.pdf
I'm not sure exactly if/how it interfaces with Android, but if it's just I2C and you're familiar with Android I2C programming you might be able to talk to it

Hey! Thanks for the question.
I'm not sure. I know I was able to determine whether the car was in reverse or not by looking at the status of a specific GPIO pin. You can read the status of GPIO pins by reading "files" at /sys/class/gpio.
I always intended to do more reverse engineering to see if I could write a small native library for getting vehicle speed/gear/etc (broadly called telematics) from the CAN bus.
If I had access to a list of CAN IDs for the 2021 Civic, I could probably look through the native libraries using a tool like Ghidra to see what native libraries reference which CAN IDs, and from there figure out how to write new software to read from the CAN bus. But I never got that far. Feel free to take a crack at it though! Thanks for your interest in the repo.

My original goal was to use an ESP32 round screen with an OBD2 device to create a speedometer and information display. By chance, I discovered that the 'Honda Hack' app can unlock the Honda head unit and retrieve data such as speed, gear position, voltage, and coolant temperature, projecting it onto the dashboard. This made me wonder if it’s possible to obtain this data directly from the head unit without needing OBD2 hardware. Using JADX, I reverse-engineered the HondaHack-7.0.1-release.apk ('http://www.autohack.cn/app/HondaHack-7.0.1-release.apk') and found that it uses Android bound services to retrieve this data.
bind service   a("com.mitsubishielectric.ada.appservice.avapservice.IAvApService"); a("com.mitsubishielectric.ada.appservice.vehicleinfomanager.IVehicleInfoManagerApService"); a("com.mitsubishielectric.ada.appservice.camera.ICameraAPService"); a("com.mitsubishielectric.ada.appservice.videomanager.IVideoManagerApService");
However, I don’t have Android development experience, so I can't delve further into the research.

Ah, very cool. And thanks for the link! Feel free to make a PR to link to the app from this repo, it'd probably be useful for others.
Yea, there are several Android services that start with that prefix, com.mitsubishielectric.ada.appservice.
Those are defined in APKs that are on the headunit within the Android filesystem. I forget exactly where; I think by convention they're in /vendor/app/.
I have a list of those APKs here: https://github.com/librick/ic1101/blob/main/docs/apk-hashes.md. I have the original files too but I haven't uploaded them for copyright reasons. Maybe they'll end up as a torrent sometime but I'm not condoning piracy in any way blah blah blah
Take com.mitsubishielectric.ada.appservice.vehicleinfomanager.IVehicleInfoManagerApService as an example. I think this is defined by the VehicleInfoManager.apk. By using apktool to extract it, I see this manifest:
<?xml version="1.0" encoding="utf-8" standalone="no"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.mitsubishielectric.ada.appservice.vehicleinfomanager">
    <uses-permission android:name="com.mitsubishielectric.ada.permission.VEHICLE_RW"/>
    <application android:label="@string/app_name" android:persistent="true">
        <uses-library android:name="com.mitsubishielectric.ada.appservice.powermanager.lib"/>
        <uses-library android:name="com.mitsubishielectric.ada.appservice.vehicleinfomanager.lib"/>
        <uses-library android:name="com.mitsubishielectric.ada.appservice.unitinfomanager.lib"/>
        <uses-library android:name="com.mitsubishielectric.ada.framework.cpucomservice.lib"/>
        <uses-library android:name="com.mitsubishielectric.ada.framework.vehicledbmanager.lib"/>
        <uses-library android:name="com.mitsubishielectric.ada.util.explog.lib"/>
        <uses-library android:name="com.mitsubishielectric.ada.util.constext.lib"/>
        <service android:name="com.mitsubishielectric.ada.appservice.vehicleinfomanager.VehicleInfoManagerApService">
            <intent-filter>
                <action android:name="com.mitsubishielectric.ada.appservice.vehicleinfomanager.IVehicleInfoManagerApService"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </service>
    </application>
</manifest>

There aren't any views or UI elements here, it's just a persistent service.
Also note all of the uses-library calls. These are native libraries (i.e., written in C, C++ and compiled for the ARM7 architecture of the Tegra 3 SoC). I think by convention they're in /vendor/lib/.
So basically, most of the telematics code is written in C or C++ as native libraries, then Android services act as thin wrappers on top of those native libraries, and then Android apps can use those services to get information about the car.
It would definitely be cool to map out what public methods those services expose so developers could write apps on top of them.

I should probably add a doc at some point with tips on reverse engineering the Mitsubishi-developed native libraries using a tool like Ghidra. I've found the following:

A lot of methods in the code includes calls to logger functions which sometimes include the original method name and arguments
You can cross-reference a lot with the Android kernel source code for Android 4.2.2 to get an idea of which syscalls a given library makes

I think it'd be great to have something like a decompilation project for Honda cars at some point, similar to what we've seen with video games. In my mind it'd really open up headunit hacking

Check out https://raw.githubusercontent.com/librick/ic1101/refs/heads/main/docs/native-libs.md

libcpu_com_service_jni.so is probably the most interesting.
It's exposed  via an Android service com.mitsubishielectric.ada.framework.cpucomservice, which has this manifest:
<?xml version="1.0" encoding="utf-8" standalone="no"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.mitsubishielectric.ada.framework.cpucomservice">
    <application android:label="@string/app_name" android:persistent="true">
        <uses-library android:name="com.mitsubishielectric.ada.util.explog.lib"/>
        <uses-library android:name="com.mitsubishielectric.ada.util.constext.lib"/>
        <uses-library android:name="com.mitsubishielectric.ada.framework.cpucomservice.lib"/>
        <service android:exported="true" android:label="@string/app_name" android:name="com.mitsubishielectric.ada.framework.cpucomservice.CpuComService" android:permission="com.mitsubishielectric.ada.permission.VEHICLE_RW">
            <intent-filter>
                <action android:name="com.mitsubishielectric.ada.framework.cpucomservice.ICpuComService"/>
            </intent-filter>
        </service>
    </application>
    <uses-permission android:name="com.mitsubishielectric.ada.permission.VEHICLE_RW"/>
</manifest>

And the underlying library com.mitsubishielectric.ada.framework.cpucomservice exposes a few methods that look very useful:

Java_com_mitsubishielectric_ada_framework_cpucomservice_CpuComService_doRequestBcanReceiveData
Java_com_mitsubishielectric_ada_framework_cpucomservice_CpuComService_doRequestFcanReceiveData
Java_com_mitsubishielectric_ada_framework_cpucomservice_CpuComService_doRequestVehicleSpeedInfo


index.js: use app argument instead of this.app

fixes https://github.com/davewasmer/ember-cli-rollbar/issues/103

@jonathanong would you mind linking to the docs that describe app.app here? I'd love to understand a bit more about why this change is necessary.

I don't know if this is well documented, but I'm pretty sure the issue here is related to nesting add-ons. Since add-ons can be nested n levels deep, the reference to app could mean the user's application, or it could mean a parent add-on.
The fix in this PR has been used in several add-ons to ensure that the correct configuration is being referenced. Here is another example: https://github.com/rwjblue/ember-cli-pretender/commit/dda9bf88597e5f127cfbe0cf863f2b03c4e24246
It should be safe to merge this once the tests are fixed. 😄


Tabs do not navigate correctly!

First of all, I'm sorry if the title is unclear. I had no idea how to call it...
But here is the problem: My tabnavigator gets confused(?) and starts going back to other tabs automatically for some reason. I'll try to explain it more, but first...
The layout of my router looks a bit like this:
`
RootStack

    HomeStack

        HomeTabs

        OtherScreensStack...`

First I noticed that my tabnavigator was slow in updating titles but that wasn't a huge issue for me. But now, the randomly jumping back to previous tabs is something that simply can't happen. Here is a gif that shows the problem:

Like you can see, the titles don't update instantly as expected and in the end the title shows "Find users" while the page showing is actually the "Home" page.

I figures some code would be useful so here it is:
The stack with the tabnavigator in:
`
export const HomeStack = StackNavigator(
{

    HomeTabs: {

        screen: HomeTabs,

        navigationOptions: {

            headerStyle: {

                shadowOpacity: 0,

                shadowColor: 'rgba(0,0,0,0)',

                backgroundColor: "white",

                shadowOffset: { width: 0, height: 0 },

                elevation: 0

            },

            cardStack: {

                gesturesEnabled: false,

            }

        }

    },

}`
The actual tabnavigator:
`export const HomeTabs = TabNavigator(
{
    OnlineAdventuresFeed: {

        screen: Home,

        navigationOptions: {

            title: "Home",

            tabBarIcon: <Icon name="home" size={21} color="#4F8EF7" />

        },

    },

    SavedAdventuresFeed: {

        screen: SavedAdventures,

        navigationOptions: {

            title: "My Adventures",

            tabBarIcon: <Icon name="favorite" size={21} color="#4F8EF7" />

        },

    },

    UserFinder: {

        screen: UserFinder,

        navigationOptions: {

            title: "Find users",

            tabBarIcon: <Icon name="person-add" size={21} color="#4F8EF7" />

        }

    },

    Profile: {

        screen: Profile,

        navigationOptions: {

            title: "Profile",

            tabBarIcon: <Icon name="person" size={21} color="#4F8EF7" />

        },

    }

},

{

    tabBarComponent: TabView.TabBarBottom,

    tabBarPosition: "top",

    swipeEnabled: false,

    tabBarOptions: {

        style: {

            backgroundColor: "white",

            borderTopColor: "rgba(0,0,0,0)",

            borderBottomWidth: 0.5,

            borderBottomColor: "rgba(0.5, 0.5, 0.5, 0.5)",

            height: 45

        },

        showLabel: false

    }

}

);`
I'm sorry, it's really a hard thing to explain. But hopefully it's clear.
Anyone with some help?

Update
I think the reason because of this unwanted behavior is because the page changes instantly when I press the tab, but the navigate action only gets fired +- 10 seconds later.  Navigating to other pages out of the tabnavigator result in instant navigate actions on my devices.
<EMAIL_ADDRESS>react-native-cli: 2.0.1
react-native: 0.42.0

Does this still occur when you clear the focus on the input before navigating?

@matthamil It does always happen when the focus isn't cleared yet, but it also happens on random other occasions.
I think this is the reason why:
This unwanted behavior is probably caused because the page changes instantly when I press the tab, but the navigate action only gets fired +- 10 seconds later.

Does this still occur if you disable the animation that happens when you navigate between tab screens? The animation could be locking the JS thread while you attempt to navigate to other screens, which causes the delay.

@matthamil That does not fix it. Still the late trigger of the action.

CC: @satya164

This btw only appears to happen on Android, IOS seems smooth.

What is your React Navigation version?

Can you use master branch instead?

@satya164 That did make it work, but the tabs aren't visible anymore for some reason.

hi
i have the same issue since the update , when i swipe fast between the two tabs, it's begin to swipe automatically.

@MatthieuPeyrot Looks like the same problem, did your tabbar also dissapear with the latest update?

@bramvbilsen it didn't dissapear , but when i desable the swipe , it's not doing the swipe loop. but i need the swipe.

Any update on this?

Any new ?

@MatthieuPeyrot I haven't found a solution so far...

i run into the same issue a few days ago. I think i maybe fixed it by flattening my nav structure.
@bramvbilsen have you tried placing HomeTabs and OtherScreensStack... into your root navigator?
This works for me:
Root
    Home
    SignIn
    TabNavigator
    Others

Had this problem but now it is not reproducing. Not sure if I'm doing things in a bit kinky way. My stack
StackNavigator
  |-- Screen A
  |         |- TabNavigator (yes, Screen A renders a tab navigator)
  |                       |-- Tab A
  |                       |-- Tab B
  |                       |-- Tab C
  |                       |-- Tab D
  |
  |-- Screen B

I added react https://github.com/satya164/react-navigation-addons and enhanced tabnavigator. Now I get focus/blur states on tabs via listeners.
On each tab I have
  componentDidMount() {
    this.props.navigation.addListener('focus', this._onFocus);
    this.props.navigation.addListener('blur', this._onBlur);
  }

  componentWillUnmount() {
    this.props.navigation.removeListener('blur', this._onBlur);
    this.props.navigation.removeListener('focus', this._onFocus);
  }

  shouldComponentUpdate(nextProps, nextState) {
    if (this.state.isFocused && nextState.isFocused) {
      return true;
    }
    return false;
  }

  _onFocus = () => {
    // Update focus state. Latter state update is to refresh the content once
    // focus state is updated. Temp fix for react navigation tab swiping issues.
    // See https://github.com/react-community/react-navigation/issues/1257
    this.setState({isFocused: true}, () => { this.setState(this.state)});
  };

  _onBlur = () => {
    this.setState({isFocused: false});
  };

Bad and dirty? Probably. Worked for me for now :)

Pinging OP @bramvbilsen since this issue is quite old and related to an old version of the lib. If no answer I'll close in 7 days.
It may have been fixed via react-native-tab-view; if not and this still happen it would be really helpful to have the bug reproduced in a Snack Expo.

Hi there @bramvbilsen ,
In an effort to cleanup this project and prioritize a bit, since this issue had no follow up since my last comment I'm going to close it.
If you are still having the issue (especially if it's a bug report) please open a new issue that uses the new Issue Template to provide some more details to help us solve it.


Add support for JSON formatted Config files

Overview
This pull request is intended to resolve #13.
Users will be able to pass in a JSON formatted configuration file as an option. This config file can contain any number of the options that this tool supports. Therefore, the user would not need to specify all options individually as command line arguments
Features

Added ability to read from a config JSON file containing all required options.

Code Changes

Added additional option in main.js line: 10 to accept -c/--config arguments.
Created a new function (readConfigFile)  in main.js line: 45  to read and parse JSON files.
Added a conditional statement that will call readConfigFile if a config file is specified in the command line. Each option in the file will be passed into generateHTML

Looks good!


Fix for macOS in index.adoc

The download path for macOS was incorrect and has been corrected.

Thanks for this! This was rolled into #21


Unexpected behavior on synchronous call

Hi, Guseyn!
I tried your framework and got unexpected behavior with synchronous call.
For example, i want to create two classes with sync and async behavior, for read and write files.
WrittenFile
const AsyncObject = require('@cuties/cutie').AsyncObject
const fs = require('fs')

class WrittenFile extends AsyncObject {
    constructor(path, content) {
        super(path, content);
    }

    asyncCall() {
        return (path, content, callback) => {
            this.path = path;
            fs.writeFile(path, content, callback)
            console.log("asyncCall writtenFile");
        }
    }

    syncCall() {
        return (path, content, callback) => {
            this.path = path;
            fs.writeFileSync(path, content, callback)
            console.log("syncCall writtenFile");
        }
    }

    onResult() {
        console.log("writtenFile has done!");
    }
}

module.exports = WrittenFile;

ReadDataByPath
const AsyncObject = require('@cuties/cutie').AsyncObject
const fs = require('fs')

class ReadDataByPath extends AsyncObject {
  constructor (path, encoding) {
    super(path, encoding);
  }

  asyncCall () {
    return fs.readFile
  }

  syncCall() {
      return fs.readFileSync
  }
}

module.exports = ReadDataByPath

And if i want to run as sync operation, i do
new WrittenFile(
    'package2.json',
    new ReadDataByPath('package.json', 'utf-8')
).syncCall();

but nothing happens.
How can i create one class with two behaviors (async and sync)?

@WrinkleJ Hi, thanks for posting the issue and sorry for late response
You cannot use asyncCall() and syncCall() together, I mean you can, but only asyncCall() will be invoked. You need to create separate classes for sync and async versions of calls, look at http://github.com/guseyn/cutie-fs. You'll find examples there.

@WrinkleJ And nothing happens because you need to use call() method instead of syncCall()
new WrittenFile(
    'package2.json',
    new ReadDataByPath('package.json', 'utf-8')
).call()

@WrinkleJ I am closing the ticket if you don't mind. I think I answered it.

Hi, Guseyn! I don't mind. Thank u for answer :)


Errors

You forgot to add
$settings['iframe_protection'] = false; in the settings
Also skin for new username isnt working http://gyazo.com/f78ceaad6a740e6a64c7f2bd46a97ad3
You cant seem to edit/delete any of the log through the web or unban/unmute them through the web

I'd like to add that simply changing your skin the image will not update.
http://unchainedmc.net/bans2/index.php?action=viewplayer&player=UnchainedMC&server=0
That image is of a skin that's weeks old. (old man)

@Theepwner Please create a separate issue

@thu2468 Please try to open an issue per problem in future.

iframe protecten is restored, since 5e33aa3c4cdeafd2e8d9f1a25cd0919c1a4d8b04
the skins are rendered on the client side, via jQuery (code) and work fine for my in my dev environment. Check your developer console for a YQL request, to "http://query.yahooapis.com/v1/public". Perhaps also try in private mode or disabled cache.
the admin functions doesn't work at the moment, as stated in the readme. It's still on my todo list, just not that high, since my server never used it.

I'll close this "multi issue" for now but don't hesitate to open a new (specific) one in case you still have further issues.


[Requirements] IM needs JS 1.2.0 SPI in Maven Snapshots to work

Is your feature request related to a problem? Please describe
Per @dbbaughe,
We have changes going into job scheduler 1.2 and they are in the main branch, and we have a PR in index management that relies on those changes so it needs to be able to pull down the 1.2 snapshot if we bump them both to 1.2

We need to deploy 1.2 jars to maven as majority of the plugin owners are working on it in main branch of their repos.
Describe the solution you'd like
Create 1.2.0 manifest and deploy to maven snapshots.
Describe alternatives you've considered
No response
Additional context
No response

As mentioned by Peter, we have already cut 1.1 branches for Job Scheduler and Index Management, and now we have a new feature going into the main branches of each w/ IM depending on the code changes in Job Scheduler. If we want to rely on using the snapshots for the dependencies in CI then we need to be able to bump the Job Scheduler/Index Management/other plugins to 1.2 and have the equivalent 1.2 SNAPSHOT jars/etc. created for the ones that publish something.
Otherwise we would have to revert back to checking out and building everything locally.

Make sure common-utils and job-scheduler have incremented their versions to 1.2.
Add them to the 1.2 manifest.
Start building 1.2 in https://github.com/opensearch-project/opensearch-build/blob/main/bundle-workflow/Jenkinsfile#L8.

@dbbaughe You should be able to PR all those changes, too!


Error attempting to encryptFile

Im attempting to to encrypt an mp3 file that is stored on firebase storage. I know I am targeting the correct file as I can upload it to IPFS unencrypted. However when I attempt to encrypt I am hit with this error:
"Uncaught (in promise) {message: 'Expecting Blob or File type for parameter named fi…ceived "Undefined" type instead. value: undefined', name: 'invalidParamType', errorCode: 'invalid_param_type'}"
What am I doing wrong?
import lit from './lit.ts';

const songUrl = await fetch(mp3URL)
  const songData = await songUrl.blob()
  const song = new File(
    [songData],
    'Blue_Faces.mp3',
    {type: 'audio/mpeg'}
  );

  const { encryptedFile, encryptedSymmetricKey } = await lit.encrypt(song)

import LitJsSdk from 'lit-js-sdk';

const client = new LitJsSdk.LitNodeClient()
const chain = 'mumbai'

class Lit {
  private litNodeClient

  async connect() {
    await client.connect()
    this.litNodeClient = client
  }

  async encrypt(song: File) {
    if (!this.litNodeClient) {
      await this.connect()
    }

    const authSig = await LitJsSdk.checkAndSignAuthMessage({ chain })

    const { encryptedFile, symmetricKey } = await LitJsSdk.encryptFile(song);

is this in the browser?  or node js?

Hey, can you try v1.1.226 of the SDK?  I think this was a bug.  Apologies.

Hey, can you try v1.1.226 of the SDK? I think this was a bug. Apologies.

I managed to get it working with the help of a member of discord. The solution was putting file: songMp3 in curly brackets
const { encryptedFile, symmetricKey } = await LitJsSdk.encryptFile({file: songMp3});

Oh neat, glad you figured it out!


Make Haddock work for sublibraries

Currently nix build .#combined-plutus-haddock does not build Haddock for sublibraries, such as plutus-core:plutus-ir. As a result, we do not have Haddock for plutus-core:plutus-ir at https://input-output-hk.github.io/plutus/master/.

Michael Peyton Jones
September 5, 2023 at 3:57 PM
I have a fix for sublibraries not being included, but that has thrown up issues with the haddock-merging script. I think to be honest it needs a rewrite, perhaps following Better support for multiple packages by coot · Pull Request #1277 · haskell/haddock , but I’m not sure I have the time for that right now.


FileBasedDirectory can contain stale cached information

See original issue on GitLab
In GitLab by [Gitlab user @jmacarthur] on Sep 25, 2018, 11:33
Background
FileBasedDirectory contains an index calculated from the file system which can become stale if the underlying directory is altered outside of the virtual directory API. Additionally, Sandbox objects cache FileBasedDirectory objects, returning the same instance for multiple calls to get_virtual_directory. This means the FileBasedDirectory may be out of step with modifications done to the file system. This was the cause of issue #664.
Currently we address this by:

Making the underlying directory name a secret unless Sandbox.get_directory is called
Invalidating the cached copies of FileBasedDirectory objects in the sandbox if get_directory is called, and stopping caching any further instances.
Making it clear in the API what happens if you modify the underlying directory and keep a FileBasedDirectory object live.

This still allows for some bugs which may be difficult to track down in the future.
Task description
This is a suggested course of action; other ideas are welcome.

[ ] Construct a prototype version of FileBasedDirectory which has no local state
[ ] Run some benchmarks on FileBasedDirectory and see whether the no-local-state version is slower
[ ] If it is, find other options. If it's not, just use the no-local-state version.

Daniel Silverstone also suggested this mitigation:

Should the virtual directory objects contain a reference to their parent sandbox, and have that sandbox maintain a monotonic counter which can be checked against to assert() if the counter has the wrong value.  Said counter being incremented by .get_directory() ?

Acceptance Criteria
Equivalent functionality after the change and no drop in performance.

In GitLab by [Gitlab user @jmacarthur] on Sep 25, 2018, 11:35
changed the description

In GitLab by [Gitlab user @jmacarthur] on Sep 25, 2018, 11:35
mentioned in merge request !818

In GitLab by [Gitlab user @toscalix] on Oct 1, 2018, 08:53
assigned to [Gitlab user @jmacarthur]

In GitLab by [Gitlab user @jmacarthur] on Oct 3, 2018, 09:34
MR is merged but I'd like to test performance before closing this.

In GitLab by [Gitlab user @jmacarthur] on Oct 10, 2018, 13:44
MR  !818 mitigated this somewhat but doesn't do the tasks listed in the description, which are still outstanding.

In GitLab by [Gitlab user @juergbi] on Feb 12, 2020, 15:46
The index was dropped in !1181. Closing.

In GitLab by [Gitlab user @juergbi] on Feb 12, 2020, 15:46
closed


tl.which on Windows should attempt to find the files in this order .exe .bat .cmd

Apache ANT task has 3 scripts to run ANT: ant.bat for Windows, ant shell script for nix, and ant.cmd for OS/2 apparently. Unfortunately, the ant.cmd is in a format that Windows cannot run (it has a / */ style comment at the top). And this is exactly the one that gets picked by tl.which on Windows. Changing the order to check for .bat first should fix the problem.

Similar problem with gradle.

Addressed here: https://github.com/Microsoft/vsts-task-lib/pull/104

rewrote which: PR https://github.com/Microsoft/vsts-task-lib/pull/231


Error: roomRawPayload() no cacheManager

Important：Please file the issue follow the template, or we won't help you to solve the problem.

0. Report Issue Guide

Please run the following command and check whether the problem has been fixed：

npm install wechaty-puppet-macpro

Please search in the issue first, and make sure your problem had not been reported before

1. Versions

What is your wechaty version?
Answer: 0.32.4

What is your wechaty-puppet-macpro version?
Answer: 0.4.0

What is your node version? (run node --version)
Answer: 13.10.1

What os are you using
Answer: macOS

2. Describe the bug
Give a clear and concise description of what the bug is.
When I started the bot script, sometimes the errror 'Error: roomRawPayload() no cacheManager' shows, sometimes not. About 30% possibility.
3. To Reproduce
This part is very important: if you can not provide any reproduce steps, then the problem will be very hard to be recognized.
Steps to reproduce the behavior:

run 'node bot.js'

.env:
WECHATY_TOKEN=puppet_macpro_xxx
WECHATY_NAME=test

bot.js:
const { parsed: config } = require('dotenv').config();

const { Wechaty, MiniProgram } = require('wechaty');
const { PuppetMacpro: Puppet } = require('wechaty-puppet-macpro');

const puppet = new Puppet({ token: config.WECHATY_TOKEN });
const bot = new Wechaty({ puppet, name: config.WECHATY_NAME });

bot
  .on('scan', (qrcode, status) => {
    console.log(`微信扫码登录: ${status}`);
    console.log(`https://api.qrserver.com/v1/create-qr-code/?data=${encodeURIComponent(qrcode)}`);
  })
  .on('login', async (user) => {
    // console.log(`登录用户: ${user}`);
  })
  .start();

Sometimes the error shows.

4. Expected behavior
Give a clear and concise description of what you expected to happen.
Should not show errors.
5. Actual behavior
If applicable, add screenshots to help explain your problem. But do not paste log screenshots here.
6. Full Output Logs
Set env WECHATY_LOG=silly in order to set log level to silly, then we can get the full log (If you dosen't set log env, log level is info as default, we cannot get the full log)
We need full log instead of log screenshot or log fragments!

 Additional context
Add any other context about the problem here.
[bug]

Sorry, I can not reproduce this bug. More detail reproduce steps are wanted.


ProjectId override question

After following the procedures outlined in the README (here) for creating a service account for machine integration the projectId is correctly set in the json key file however the usage of it is not.
I have two questions that I hope I can get help with:

When changing the project_id in code some project which is wrong it still works. Can someone explain if the gcloud-java or the Google Cloud service stores or parses the service account to extract the correct project_id?

Storage storage = StorageOptions.builder()
  .authCredentials(AuthCredentials.createForJson(new FileInputStream("/path/to/my/key.json"))
  .projectId("projectDoesNotExist") // <---- HERE
  .build()
  .service();
// It is possible to use the Storage.writer and upload correctly to the service accounts project_id!!!

Reading Specifying a Project ID there are various ways to set the project id, however none using the following flow from code. Question is if it would be good if the StorageOptions.builder() could take a file String as argument?

//Todays API
Storage storage = StorageOptions.builder()
  .authCredentials(AuthCredentials.createForJson(new FileInputStream("/path/to/my/key.json"))
  .build()
  .service();
//here the project_id of StorageOptions is never set if no environment variable is set as the json project_id is never parsed

//Proposed API change which automatically uses AuthCredentials is the json file is supplied
Storage storage = StorageOptions.builder("/path/to/my/key.json")
  .build()
  .service();

Hi @fonzy2013, thanks for the report!

When changing the project_id in code some project which is wrong it still works. Can someone explain if the gcloud-java or the Google Cloud service stores or parses the service account to extract the correct project_id?

As written in the README the projectId provided with projectId("...") has priority over any other possible projectId. So, in your snippet, we are actually using the wrong projectDoesNotExist id. What is happening here is that in Storage a bucket name must be unique across the entire Cloud Storage namespace (not only in your project). So all operations inside a bucket (creating, getting, listing blobs) do not require (nor allow) us to pass the projectId (since the bucket is already enough to uniquely define where to apply the operation). Hence no checks are made by the service on the projectId for that operation, but clearly the service account you provided to StorageOptions is checked to see if you have rights to access the bucket.
On the other hand, as you probably already noticed, project id is used to create and list buckets (to define the project that owns the bucket - an that should be billed for it). So if you provide a wrong project id to StorageOptions the operations create(BucketInfo) and list() will fail.

Question is if it would be good if the StorageOptions.builder() could take a file String as argument?

We considered having AuthCredentials.createForJson("/path/to/my/key.json") but that would not be supported in all platforms (i.e. AppEngine). So we decided to stick to the stream version as creating a stream from a file path should be easy enough.
Hope this answers your doubts.

I have now read the code and tested further.
My result is the following:

ProjectId MUST be set when building the service with .projectId("my-project"), otherwise it fails. This can however be solved easily with providing the project when building the service BUT we still feel it would be better to have the API use the one from the json file
After a successful login there are NO way to change the project for the service account. This we do consider as a bug but is probably not something that can be fixed in this API, correct?

Are these reflections correct?

ProjectId MUST be set when building the service with .projectId("my-project"), otherwise it fails. This can however be solved easily with providing the project when building the service BUT we still feel it would be better to have the API use the one from the json file

Did you consider using the GOOGLE_APPLICATION_CREDENTIALS env variable and make it point to your JSON key? This way the project id will be read from the json file

After a successful login there are NO way to change the project for the service account. This we do consider as a bug but is probably not something that can be fixed in this API, correct?

This is unclear to me. What do you mean with "login" and "service account"?

I am closing this as it has remained open for 2 months without answers. Feel free to reopen it with more details if need be.


G6

Change Description
Description of change / link to associated issue.
Steps to Test
Steps for reviewers to follow to test the change.
Pull Request Checklist
Testing

[ ] Your PR passes all CI checks.
[ ] Tests covering the positive and negative (error paths) are included.
[ ] Bug fixes contain tests triggering the bug to prevent regressions.

Code Style and Documentation

[ ] The change obeys the Code Documentation and Commenting guidelines, and lines wrap at 80.
[ ] Commits follow the Ideal Git Commit Structure.
[ ] Any new logging statements use an appropriate subsystem and logging level.
[ ] Any new lncli commands have appropriate tags in the comments for the rpc in the proto file.
[ ] There is a change description in the release notes, or [skip ci] in the commit message for small changes.

📝 Please see our Contribution Guidelines for further guidance.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>6
Details

2675 of 4535 (58.99%)  changed or added relevant lines in 62 files are covered.
18497 unchanged lines in 236 files lost coverage.
Overall coverage decreased (-1.1%) to 57.413%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

funding/manager.go
7
8
87.5%

channeldb/graph_cache.go
41
43
95.35%

htlcswitch/link.go
11
13
84.62%

htlcswitch/switch.go
8
10
80.0%

lnwire/features.go
15
17
88.24%

lnwire/lnwire.go
9
11
81.82%

netann/chan_status_manager.go
6
8
75.0%

graph/validation_barrier.go
33
36
91.67%

routing/router.go
4
7
57.14%

lnwire/gossip_timestamp_range.go
36
40
90.0%

Files with Coverage Reduction
New Missed Lines
%

chanbackup/recover.go
1
97.73%

labels/labels.go
1
73.33%

channeldb/invoices.go
2
84.03%

queue/gc_queue.go
2
96.51%

channeldb/witness_cache.go
2
77.78%

funding/batch.go
2
81.48%

invoices/invoice_expiry_watcher.go
2
86.26%

chanacceptor/chainedacceptor.go
2
81.48%

brontide/listener.go
2
66.67%

watchtower/wtclient/candidate_iterator.go
2
96.0%

Totals

Change from base Build<PHONE_NUMBER>8:
-1.1%

Covered Lines:
96386

Relevant Lines:
167883

💛  - Coveralls


Popup needed if transaction unsuccessful and replace icon

Needs transaction message API call

@alwyn-ixo @demondayza
Let me get the icon for popup modal please?


1580: add a student summary e.g. "Showing 1 to 100 of 155 students"

Delivers #1580.
Added to both top and bottom* of the table.  *only add to bottom when pagination visible.
To change the wording of the NavigationToolbar I had to pull a tricksy and override the newNavigatorLabel method.

Sorry for the delay, I've been a bit crook.


Validate button on new ESX Host results in undefined method `verify_credentials_with_ws' for #Host:0x007ffa82131cb0

See: https://github.com/jrafanie/manageiq/blob/57a17697440bba03a087ab57d619a290932555bf/vmdb/app/controllers/host_controller.rb#L286-290
      verify_host = Host.new
      set_record_vars(verify_host, :validate)
      @in_a_form = true
      begin
        verify_host.verify_credentials(params[:type])

Note, that the UI creates a generic Host instance and calls verify_credentials on it.
verify_credentials_with_ws ends up being called from Host#verify_credentials when only HostVmwareEsx implements it:
https://github.com/jrafanie/manageiq/blob/57a17697440bba03a087ab57d619a290932555bf/vmdb/app/models/host.rb#L1112-1123
@blomquisg @Fryguy @h-kataria Thoughts/ideas?
Should the UI be creating a generic Host instance?  Even if so, why is Host#verify_credentials calling methods not in all subclasses?
A screenshot:

Subclassing probably didn't take this into account properly when other subclasses were added.  What really should happen is that each subclass should implement their own credential validation, much like is done on the EMS side.

Bugzilla link - https://bugzilla.redhat.com/show_bug.cgi?id=1233188

First, I'm not sure how to solve this unless the controller creates a specific subclass for credential validation.
And, two, this must be an existing bug?  How is anyone able to validate Host credentials today?

@agrare this isn't specifically a VMWare issue, but can you take a look at this?  And, check with QE to see if this is flat-out broken.

This only seem to be an issue when manually adding hosts, if you validate credentials of a host that was discovered by an EmsRefresh it looks the host up here instead of creating a generic Host instance.
If you follow @jrafanie's steps now you hit this error, https://github.com/ManageIQ/manageiq/blob/acb8c764c6a27ba53984ea4165624096a7aac19a/app/models/host.rb#L796 which could be seen as incorrect if you are adding an ESXi host.
What exactly is the use-case for manually adding ESX hosts?

@jrafanie  Can this be closed or is this still an issue?


LEDs don't show as expected

I'm seeing an issue on my unicorn pHAT on my pizero running the latest raspbian jessie where the LEDs aren't triggering correctly...
using the set_pixel function doesn't work consistently and doesn't seem to line up properly even when the layout is set correctly.
The rainbow.py in the example/phat directory doesn't run correctly either. It flashes in random order as if something is wrong.

please run https://get.pimoroni.com/audio | bash
...alternatively uncomment hdmi_force_hotplug=1 in /boot/config.txt

That fixed the issue. Thanks!


Heatit Z-TRM3 contantly becomes unavailable and available a few seconds later

Checklist

[ ]  I am not using Home Assistant. Or: a developer has told me to come here.
[ ] I have checked the troubleshooting section and my problem is not described there.
[ ] I have read the changelog and my problem is not mentioned there.

Deploy method
Docker
Z-Wave JS UI version
zwave-js-ui: 9.3.1.f26b79e
ZwaveJS version
zwave-js: 12.2.3
Describe the bug
Heatit Z-TRM3 contantly reports as "dead" but comes back online  just a few seconds later.
zwavejs_current.log
heatit-ztrm3.json
To Reproduce
Unknown, I have re-included but same issue.
Expected behavior
To be available all the time.
Additional context
No response

Sorry, this slipped through the cracks. If this is still an issue, please follow https://zwave-js.github.io/node-zwave-js/#/troubleshooting/first-steps and if that doesn't help, open a new discussion here.

For completeness, I upgraded the firmware from 4.0.33 to 4.0.34 and haven't seen the issue since. OTA file https://media.heatit.com/2562?type=ota


Regression: dioxus-cli fails to create multiple processed copies of a same image with different options

If you use two asset! macros, like:
use manganis::*;
pub struct BlogEntry {
    pub image_file_thumbnail: Asset,
    pub image_file_blog: Asset,
}

const BLOG: BlogEntry = BlogEntry {
    image_file_thumbnail: manganis::asset!(
        "./top.jpg",
        ImageAssetOptions::new()
            .with_size(ImageSize::Manual {
                width: 384,
                height: 384
            })
            .with_avif()
    ),
    image_file_blog: manganis::asset!(
        "./top.jpg",
        ImageAssetOptions::new().with_avif()
    ),
};

dioxus cli will generate, inconsistently, either one of the two images.
Steps To Reproduce
Create a trivial project with the code above with a jpg
compile by dx build --trace --verbose
Observe that a single image appears in target/dx//debug/web/public/<assets_folder>
Expected behavior
One file for each configuration, instead of a single one.
My guess as to why this is happening is that the AssetManifest at packages/cli-opt/src/lib.rs is mistakenly a hashmap over the absolute path of the original source of asset. This is wrong as this will mistakenly merge these resources. I think this would be easily fixed by changing this to a vector, or, alternatively, hash over the output directories as those are already made unique by mangaris.
Please do also note that in the past this used to work
Environment:

Dioxus version:  0.6.1
Rust version:    1.82.0
OS info:         Arch Linux
App platform:   web

Questionnaire
I would like to fix and I think I have a solution

While I can take a look at fixing this, I'd like some input on what/why this behavior was changed and overall whether my initial guess of the issue is in the right direction.

Proposed fix in #3469


isReactComponent() returns false for components without render()

I have few components which render() method encapsulated into mixin.
Like so:
var Mixin = {
  render() {
    return (

{ this.prop.header }

{ this._renderBody() }

    );
  }
};

var Comp1 = React.createClass({
  mixins: [ Mixin ],
  _renderBody() {
    return 'comp 1';
  }
});

var Comp2 = React.createClass({
  mixins: [ Mixin ],
  _renderBody() {
    return 'comp 2';
  }
});

And because of that some rules are ignored (e.g. sort-comp rule).
So I propose to check when there is no render() method inside component if the mixins prop is declared or not.

For ES5 classes we can simplify the detection and just rely on the React.createClass presence, it would solve your problem.
But for ES6 classes it is more difficult since there is no real difference between a standard ES6 class and a React component, that why currently we just search for a class with a render method that return some JSX (or null).

Just ran into this same problem, we have a render method declared but it doesn't return a JSXElement directly so it gets ignored;
something along the lines of;
render() {
   const method = this.state.loading ? 'renderLoading' : 'renderList';

   return this[ method ]();
}

So I'm running into this issue in a slightly different variant. I'm actually looking at running sort-comp on the output from CJSX, which gives me a render which looks like
return React.createClass({
  render: function() {
    return React.createElement("div", null, this.props.test);
  },
  displayName : 'Table'
});

Because the render contains compiled JSX rather than actual JSX, it gets skipped.

It might be useful to check out react-codemod's ReactUtils to see the methods they use for this kind of thing.


Create MOM-2023-12-12.md

What type of PR is this?

documentation

What this PR does / why we need it:

MoM of KnowYourCustomer SP 2023-12-12 Meeting

Thank you.


Close #2093 : better ClusteredDedicated representation

also tweak the test to test ClusteredShared

@ljacomet @henri-tremblay this can wait next release cycle, post 3.4

@ljacomet please reconsider


java.lang.NullPointerException 	at com.crawljax.core.state.InMemoryStateFlowGraph.getShortestPath(InMemoryStateFlowGraph.java:267) in version 4.1.

Describe the bug
A clear and concise description of what the bug is.
To Reproduce
Steps to reproduce the behavior:

Go to '...'
Click on '....'
Scroll down to '....'
See error

Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):

OS: [e.g. iOS]
Browser [e.g. chrome, safari]
Version [e.g. 22]

Smartphone (please complete the following information):

Device: [e.g. iPhone6]
OS: [e.g. iOS8.1]
Browser [e.g. stock browser, safari]
Version [e.g. 22]

Additional context
Add any other context about the problem here.

Is it an uncaught exception? Does Crawljax continue after error or does it stop?

The browser window popped up and then the crawljax stopped with this
exception.
On Mon, Sep 13, 2021 at 4:20 PM yrahulkr @.***> wrote:

Is it an uncaught exception? Does Crawljax continue after error or does it
stop?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/crawljax/crawljax/issues/526#issuecomment-918094350,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AIGAG47HV23F243YQIY7K5DUBXNAHANCNFSM5DO7VEBA
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

Cannot reproduce. Closing for now.


normalize key format in order to support keys passed by metadata per …

Per documentation on the README.md and https://docs.aws.amazon.com/solutions/latest/video-on-demand/appendix-e.html metadata overrides in input-validate's index.js with cloudFront: process.env.CloudFront,
{
    "srcVideo": "string",
    "ArchiveSource": true,
    "FrameCapture": false,
    "Source":"string",
    "destination":"string",
    "CloudFront":"string",
    "MediaConvert_Template_2160p":"string",
    "MediaConvert_Template_1080p":"string",
    "MediaConvert_Template_720p":"string",
    "JobTemplate":"custom-job-template"
}

These keys are properly normalized for environment vars provided by process.env but not for metadata overrides. It looks like it was sort of discovered with the random camel case for srcVideo in the documentation. Passing JobTemplate and others, currently adds new keys and are missed  later on, for example, when event.jobTemplate is called with in encode. It doesn't fail, it just uses the default. You can get around this by passing jobTemplate, but is going to make things confusing across all the documentation.

Thanks for opening a pull-request ticket. We will review the requests to be implemented in our next release.

Hi @rromanchuk,
We just released a new version of the solution (v5.0.0 - https://aws.amazon.com/solutions/video-on-demand-on-aws/), and your fix for handling the key casing has been included.
Thanks!


Order of AfterTargets/BeforeTargets is incorrect

The order of AfterTargets and BeforeTargets is incorrect in in the last section "Determine the target build order".
However it is correct in the example above (about Compile, Optimize, Link).
To be more specific AfterTargets means after which targets the current target will be executed, BeforeTargets means before which targets the current target will be executed.
So the order is: AfterTargets -> the current target -> BeforeTargets.
It seems to be it is just a mistype in the documentation.

@igor-uzhviev Thanks for working to improve the docs.
You are right about the definitions, it's the phrasing that can be confusing. To use the good example (Optimize, Link) that you cited, step 5 could be restated this way:
Before a target (e.g., "Link") is executed or skipped, any target ("Optimize") that lists it ("Link") in a BeforeTargets attribute is run.
I will try to think of a better phrasing that might avoid confusion. But the existing text is, I believe, technically correct.

@igor-uzhviev : Thanks for your contribution! The author, @mikejo5000, has been notified to review your proposed change.

@igor-uzhviev Thanks for working to improve the docs.
You are right about the definitions, it's the phrasing that can be confusing. To use the good example (Optimize, Link) that you cited, step 5 could be restated this way:
Before a target (e.g., "Link") is executed or skipped, any target ("Optimize") that lists it ("Link") in a BeforeTargets attribute is run.
I will try to think of a better phrasing that might avoid confusion. But the existing text is, I believe, technically correct.

Thanks for looking into this. Yes, I agree that the wording is really confusing, especially considering the difference between DependsOnTargets and AfterTargets.
However it would be great if the order in this list would be according to the execution order (e.g. #1 is executed first, then #2, etc.)
Also if you are planning to do some updates in this document it would be nice if you can add some more explanations what the difference between DependsOnTargets and AfterTargets is (something like it is explained here: https://stackoverflow.com/a/2856018/3681541).
Thanks again!


Login Screen

Make a PR to this repo, adding the files to design folder
You should create the login screen with oAuth, but you can use only mock data. We don't have a server task yet.
You don't need to dedicate so much time in design thinking too, since we not decided anything about the layout.
You have 4 days (due date 4/03/2016)
Make a PR to this repo, adding the files to main tree of files

@henriquesosa React Native or React Web ?

Sorry, React Native. I forgot to mention that we discuss it before, and it's better to start working the mobile app first.

@ylaguna @varnion ping us on gitter if you have any problems or doubts

Roger that ;)
@varnion how can we make contact?

@ylaguna how about gitter?
PS: what is a PR?

@varnion it is a Pull Request

@sibeliusseraphini thanks =)

#8


[Functions] Remove weak from user.

Fixes #6959

Why is still in draft? Has it been tested that the removal of weak user won't result in a memory leak?

Why is still in draft? Has it been tested that the removal of weak user won't result in a memory leak?

@leemaguire I had it in draft because I was still talking with @jsflax about the failing checks that I was not sure about. Problem solved, hence the assign. I did forget I had it still in draft though. Thanks for pointing out.
It's all tested and works fine on my side.

@leemaguire I had it in draft because I was still talking with @jsflax about the failing checks that I was not sure about. Problem solved, hence the assign. I did forget I had it still in draft though. Thanks for pointing out.
It's all tested and works fine on my side.

I would also change the name of this PR to "Remove weak declaration from user property of Functions struct"

I would also change the name of this PR to "Remove weak declaration from user property of Functions struct"

I would also change the name of this PR to "Remove weak declaration from user property of Functions struct"

@jsflax  Done.
@leemaguire I profiled and tested for leaks with an example app. Looks good on my side.

I would also change the name of this PR to "Remove weak declaration from user property of Functions struct"

@jsflax  Done.
@leemaguire I profiled and tested for leaks with an example app. Looks good on my side.

A changelog entry with details of the fix is needed.

Done.

A changelog entry with details of the fix is needed.

Done.


Override play pause for Windows

The play key doesn't work on Windows, instead we want play_pause.

I am also unable to find the function user.media_set_volume which is used for set volume <number>, but I'm not really sure how this hooks up. It doesn't work on windows, but I can't tell from the code if it works on the platforms.

I realised this puts an extra item ("media windows") in the help pane, which we almost certainly don't want. Consider this PR a draft I guess? Looking for guidance on how to do this correctly (I'm guessing it involves writing Python to do some indirection or something).

Hm, does anyone know whether key(play_pause) works on Mac & Linux? If it does we should just use that. If not, yeah, overriding commands in talon files isn't a great solution, we should probably have an action, maybe user.media_play_pause, and implement it appropriately per-platform.

Hm, does anyone know whether key(play_pause) works on Mac & Linux?

I tested this, and my keyboard's play/pause button works on Windows, MacOS over barrier, and Linux (Ubuntu 20.04) via a VM under Windows.
Interestingly my keyboard is an ErgoDox EZ, which is remappable, and in their configuration tool they only provide one option for play/pause, which they call "play" in the tool, but in their source code is mapped to KC_MEDIA_PLAY_PAUSE.
I've updated the PR to reflect this. To fire the play key on MacOS and Linux to see what it does I'd have to install Talon on each (or work out another way to fire it) which is a step I have not taken.

I think the best approach is probably an action for this one. I get this error on my Macbook:
 in script at /Users/jeffknaus/.talon/user/knausj_talon/misc/media.talon:7:
 > key(play_pause)
InvalidKeyErr: play_pause

It appears that the play_pause key exists on linux (it doesn't produce an error when pressed) but it doesn't appear to do anything, while key(play) has the expected behavior.

Apologies it took me so long to get to this. I've moved it into an action. If people who use mac and linux could test this that would be greatly appreciated.

looks great, thanks


nix-daemon: fix collision warning of bash completions

Motivation for this change
Bash completions installed by nix-bash-completions and nixos-container try to install "/share/bash-completion/completions/nixos-container".
Log messages like
collision between `/nix/store/xzp8yxv1m4i3n5ghiddvgv38q2aivbn6-nixos-container/share/bash-completion/completions/nixos-container' and `/nix/store/ii06nl46nlpzar1zwrywhfwr4yzaj7av-nix-bash-completions-0.6.8/share/bash-completion/completions/nixos-container'

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 via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
21.11 Release Notes (or backporting 21.05 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

[x] Fits CONTRIBUTING.md.

Fixed by: https://github.com/NixOS/nixpkgs/pull/147459


Tracking of musicians by A&R

Vishal can you check and merge

@gshivani  can you check and do the merge, should not interfere with the existing code.


Bad facilities data on Bango wind farm

BANGOWF02:

has no size / 0kW
is marked as Committed when it has been operating

hotfix on prod:
https://opennem.org.au/facility/au/NEM/BANGOWF/?range=3d&interval=30m


Improve the rendering performance of Tilemap

Improve the rendering performance of Tilemap to avoid reconstructing VertexBufferData per frame from unmodified Tilemap objects.

200 tilemaps with no change:

200 tilemaps with change:

can you resolve the conflicts and pr to 9.5?

Yes, But it seems a bit incompatible with multiple textures, I need time to take a look again.


CQ building exceeds confirmOffset when node restarts to recover in ha mode

The issue tracker is used for bug reporting purposes ONLY whereas feature request needs to follow the RIP process. To avoid unnecessary duplication, please check whether there is a previous issue before filing a new one.
It is recommended to start a discussion thread in the mailing lists or github discussions in cases of discussing your deployment plan, API clarification, and other non-bug-reporting issues.
We welcome any friendly suggestions, bug fixes, collaboration, and other improvements.
Please ensure that your bug report is clear and self-contained. Otherwise, it would take additional rounds of communication, thus more time, to understand the problem itself.
Generally, fixing an issue goes through the following steps:

Understand the issue reported;
Reproduce the unexpected behavior locally;
Perform root cause analysis to identify the underlying problem;
Create test cases to cover the identified problem;
Work out a solution to rectify the behavior and make the newly created test cases pass;
Make a pull request and go through peer review;

As a result, it would be very helpful yet challenging if you could provide an isolated project reproducing your reported issue. Anyway, please ensure your issue report is informative enough for the community to pick up. At a minimum, include the following hints:
BUG REPORT

Please describe the issue you observed:
we found this phenomenon in the following case :
[1] first, node1 as master, node2 as slave
[2] 2023-04-17 15:24:22, node1 is down, node2 will be elected as master
[3] 2023-04-17 15:24:23, node2 is down right after being elected as master
[4] 2023-04-17 15:26:03, node1 restarts
[5] 2023-04-17 15:46:05, node2 restarts
[6] 2023-04-17 15:46:20, node2 is elected as master and node1 is elected as slave.

we found that 4 messages was lost, those  4 messages was stored to node2's commitlog at 2023-04-17 15:46:42

By checking the recovery log of node1, it is found that node1 builds cq with 4 dirty messages which will be truncate in the future.

Also, broker has enabled reading messages from the slave. Client subscribes node1 at  2023-04-17 15:26:24 and consumes those
4 dirty messages, then commit the offset of these queue.
After node2 is elected as master and node1 is elected to slave, those 4 dirty messages is truncate by node1, and another 4 new messages is appended to commitlog. However, the offset of these messages has already being commited.
This also explains why messages are lost.

Please tell us about your environment:

Other information (e.g. detailed explanation, logs, related issues, suggestions on how to fix, etc):

FEATURE REQUEST

Please describe the feature you are requesting.

Provide any additional detail on your proposed use case for this feature.

Indicate the importance of this issue to you (blocker, must-have, should-have, nice-to-have). Are you currently using any workarounds to address this issue?

If there are some sub-tasks involved, use -[] for each sub-task and create a corresponding issue to map to the sub-task:

sub-task1-issue-number: sub-task1 description here,
sub-task2-issue-number: sub-task2 description here,
...

@fujian-zfj Yes, we should persist confirmOffset and ensure that the message of dispatch does not exceed the confirmOffset when recovering.


Update getResolverStrategy for rootRequirements

When root requirement, us the resolver strategy for direct dependencies.
Even if it also has other requirements
Attempted fix for #3669
And meaning that the statement that all direct dependencies will still get their latest matching versions, no matter the value of the strategy option. If you want to influence the resolution of direct dependencies then read about the lowest_matching option. in the docs is actually correct

@forki this change does update tests...but i think that the tests contradict the documented behaviour.
In these tests, the dependencies are specified in the paket.dependencies file
However, we do not expect to get the latest version

Is there anything more needed from me to get this merged?
Looks like the build went green 🙂

thank you