Allow PubSub to opt-out from competing consumer pattern to send events to every instance

In what area(s)?

/area runtime

Describe the feature
The existing functionality with concurrent consumer pattern that one instance of a group receives the event is great for 95% of our use cases. We have additional requirements where we need to publish an event to all instances which means also all instances of a subscriber group. This is mainly for publish configuration changes where each instance needs to update their pipelines or internal caches etc.
In the issue #843 it is described that different behavior of Pub/Sub should be defined / controlled by using specific consumer group ids. The subscriber group name is taken from the AppId and is currently fixed. I'd like to propose a feature request to be able to overwrite this behavior for one or more specific topic subscriptions that all instances are going to be notified. The consumer needs a way to specify this since the consumer needs to be aware that this message is sent to one instance of the group or possibly to many. The publisher does not and should not know about that.
Changes needed:

Allow the topic attribute to have an additional optional property to opt-out from CCP.
i.e. [Topic("MyTopic", NotifyAllIntances = true)]

So, despite of the attribute, technically this would mean that the json array sent by the /dapr/subscribe endpoint would send this setting on a per subscription basis and therefore we could easily opt-out from CCP for a specific topic subscriber.
[
  {
      "topic": "a",
      "route": "handlera",
      "pubsubName": "pubsub"
  },
  {
      "topic": "b",
      "route": "handlerb",
      "pubsubName": "pubsub"
  },
  {
      "topic": "c",
      "route": "handlerc",
      "NotifyAllInstances": "true",
      "pubsubName": "pubsub"
  }
]

Sample:
With the above subscribe payload, dapr runtime would configure the consumer group ids as follows:

Topic
Consumer Group Id
Expected behavior
Notes

A
MyApp
Competing consumer pattern, at least once delivery to a single instance of a consumer group

B
MyApp
Competing consumer pattern, at least once delivery to a single instance of a consumer group

C
MyApp-8a4e0567d251
Every intance is notified since every instance has it's unique consumer group id.
"8a4e0567d251" represents the instance id (hostname / container id)

Links:

discord discusson

Release Note

RELEASE NOTE:

Yes! This would also probably clean up some tracing related things since tracing is showing appId.

We have added support to '{uuid}' in the group to randomly generate a consumer id. This feature is per component and the uuid solution works well with a shared topic in mqtt.
Which component are you using?

We are currently using the redis pubsub component.

We are currently using the redis pubsub component. But does this matter? As far as I have understood, the instance is always registered the same way, right?

The Redis configuration has a consumerID field. Set it to {uuid} and see if Redis behaves the same way as MQTT. https://docs.dapr.io/reference/components-reference/supported-pubsub/setup-redis-pubsub/

Hi Artur,
thanks for your feedback! I'm not sure if I understand this correctly. If I set the consumerID to {uuid} then all of the topics would be distributed to every instance, right? As I wrote, we have the requirement that i.e. Topic A and B do follow the competing consumer pattern but Topic C would be published to every instance. This is currently not possible within the same component, right?
I'm still quite new to dapr, so please let me clarify the following. If I can overwrite the consumerID in the component, then it would be possible to achieve the requested behavior if I register two pubsub components pointing to the same redistHost but one would be the one with the {uuid}. So I would publish the events which need to be sent to every instance through the second one.
Doing it with a single component is currently not possible, right?

Hi Artur,
thanks for your feedback! I'm not sure if I understand this correctly. If I set the consumerID to {uuid} then all of the topics would be distributed to every instance, right? As I wrote, we have the requirement that i.e. Topic A and B do follow the competing consumer pattern but Topic C would be published to every instance. This is currently not possible within the same component, right?
I'm still quite new to dapr, so please let me clarify the following. If I can overwrite the consumerID in the component, then it would be possible to achieve the requested behavior if I register two pubsub components pointing to the same redistHost but one would be the one with the {uuid}. So I would publish the events which need to be sent to every instance through the second one.
Doing it with a single component is currently not possible, right?

With a single component, no. If you need different behavior, they need to be separate components in Dapr. Please, let me know if that works since this feature was validated with mqtt and would be good to see it working with Redis too.

Sorry for my long answer, I had to prioritize other work and then the summer holidays came. I tested you suggested approach and setting {uuid} as the consumer id of the redis pubsub component works as expected. I can confirm this approach.
Thanks for your help!


First commit of STM32H5 SPI Hardware file.

This file is heavily based on the STM32H7 implementation. CFG1_BPASS and UDRCFG were the main differences.
Summary
This file is essentially a copy of stm32h7x3xx_spi.h. Other changes include changing the STM32_SPI_CLK_MAX to 120 MHz, removed CR2_TSER definition, modified CFG1_UDRCFG bits, added CFG1_BPASS, added CFG2 RDIOM and RDIOP bits, removed TSERF bits, added I2S definitions.
Impact
This will only impact STM32H5 boards.
Testing
No testing yet. The STM32H563 and STM32H743 reference manuals were compared. Differences noted above and implemented in the H5 SPI Hardware file.

[Experimental Bot, please feedback here]
No, this PR does not fully meet the NuttX requirements based on the provided description.  Here's why and how to fix it:
Missing/Insufficient Information:

Summary: While it mentions the changes, it lacks clarity on why these changes are necessary.  Is this a bug fix, a new feature to enable SPI on STM32H5, or an optimization? What functional part of the code is being changed (SPI driver)?  Be explicit.
Impact:  While it mentions impacting STM32H5 boards, it doesn't specify how. Will existing applications using SPI on STM32H5 need modification?  Address all the impact points specifically, even if the answer is "NO".  For example:

Impact on user: YES (Applications using SPI on STM32H5 may need minor adjustments due to the clock speed change and new register bits).  Be specific about what adjustments might be needed.
Impact on build:  Likely YES (New driver file being added).  Specify the changes to Kconfig or other build system files.
Impact on documentation: YES (Documentation needs to be updated to describe the STM32H5 SPI driver). Explain what documentation needs to be added/changed.
Impact on hardware: YES (Enables SPI functionality on STM32H5).  Be specific about the STM32H5 chips supported.
All other impact points should be addressed, even if they are "NO".  Provide a brief justification (e.g., Impact on security: NO (This change only affects SPI peripheral configuration and does not introduce any new security vulnerabilities)).

Testing: "No testing yet" is unacceptable.  A PR should be thoroughly tested before submission.  Provide test results demonstrating that the SPI driver works correctly on the STM32H5.  Include specific test cases (e.g., different SPI modes, data transfer lengths, etc.). You may need a temporary workaround to enable testing even if the board support isn't complete.

How to Improve the PR:

Explain the "Why":  Clearly state the reason for this change.  If there's no related issue, explain the motivation (e.g., "Enable SPI support for STM32H5 family of microcontrollers").
Detailed Impact Assessment: Go through each impact point and provide specific answers, even if it's "NO."  Justify your answers.
Testing is Crucial: Perform thorough testing on real hardware or a simulator.  Include test cases that cover different SPI configurations and data transfer scenarios.  Provide logs or other evidence of successful testing.
Code Comments: Add comments to your code explaining the changes made, particularly in areas where it differs from the STM32H7 implementation. This helps reviewers understand your code and its purpose.
Kconfig Changes:  Document any required changes to the NuttX configuration system (Kconfig) to enable the new driver.

By addressing these points, you'll significantly improve the quality of your PR and increase its chances of being accepted.


Add relevant comments to training_mode.ipynb

Add relevent comments in between the codes in training_model.ipynb

i would love to work on this issue as it would enhance my own knowledge on ML. Please assign me this task @Sandeep-1507

@Preetraj2002 yaa surely


Not really a bug: EnergyConsumptionSensor

Describe the bug
7 of the 8 power meters discovered by the integration are reporting a measurement in Watt per hour. However, I can't match any of those with the ones in the Tahoma app/website. The measurements are all different.
I don't have any idea what period of time those are supposed to be.
Tahoma displays  Daily, Weekly, Monthly, Yearly in kWh.
Device:
Here are the sensors I have.
io:ElectricityMeterComponent
io:DHWElectricalEnergyConsumptionSensor
io:OtherElectricalEnergyConsumptionSensor
io:TotalElectricalEnergyConsumptionIOSystemSensor
io:HeatingElectricalEnergyConsumptionSensor
io:PlugsElectricalEnergyConsumptionSensor
io:EnergyConsumptionSensorsConfigurationComponent
-> this one doesn't report anything and could be disregarded

Thanks for reporting @lseufer! We are getting close to a pull request to core, thus it would be great to solve some of the latest bugs.
io:DHWElectricalEnergyConsumptionSensor
We read the core:ElectricEnergyConsumptionState from the Energy Consumption Sensors. This is probably the realtime value of your energy usage. Is the value that you are looking for present in the other states? (/developer-tools/state). Otherwise, you would need to calculate the total values in Home Assistant based on the realtime state.
{
	"commands": [{
		"commandName": "getSensorName",
		"nparams": 0
	}, {
		"commandName": "putSensorName",
		"nparams": 1
	}],
	"states": [{
		"type": "ContinuousState",
		"qualifiedName": "core:ConsumptionTariff0State"
	}, {
		"type": "ContinuousState",
		"qualifiedName": "core:ConsumptionTariff1State"
	}, {
		"type": "ContinuousState",
		"qualifiedName": "core:ConsumptionTariff2State"
	}, {
		"type": "ContinuousState",
		"qualifiedName": "core:ConsumptionTariff3State"
	}, {
		"type": "ContinuousState",
		"qualifiedName": "core:ConsumptionTariff4State"
	}, {
		"type": "ContinuousState",
		"qualifiedName": "core:ConsumptionTariff5State"
	}, {
		"values": ["good", "low", "normal", "verylow"],
		"type": "DiscreteState",
		"qualifiedName": "core:DiscreteRSSILevelState"
	}, {
		"type": "ContinuousState",
		"qualifiedName": "core:ElectricEnergyConsumptionState"
	}, {
		"type": "DataState",
		"qualifiedName": "core:NameState"
	}, {
		"type": "ContinuousState",
		"qualifiedName": "core:RSSILevelState"
	}, {
		"values": ["dead", "lowBattery", "maintenanceRequired", "noDefect"],
		"type": "DiscreteState",
		"qualifiedName": "core:SensorDefectState"
	}, {
		"values": ["available", "unavailable"],
		"type": "DiscreteState",
		"qualifiedName": "core:StatusState"
	}],
	"dataProperties": [],
	"widgetName": "CumulativeElectricPowerConsumptionSensor",
	"uiClass": "ElectricitySensor",
	"qualifiedName": "io:DHWElectricalEnergyConsumptionSensor",
	"type": "SENSOR"
}

io:ElectricityMeterComponent
Does this show any value currently? I believe this one is not properly mapped yet, since we don't have any of the qualifiedName's below in our repository. Could you have a look at the states in Home Assistant? (/developer-tools/state). I wonder which value makes most sense to show in HA front-end.
We currently do not support multiple entities per device, however this is something we would like for the future. (#223)
{
	"commands": [{
		"commandName": "setElectricalContractIntensity",
		"nparams": 1
	}],
	"states": [{
		"type": "DataState",
		"qualifiedName": "core:CurrentTariffNumberState"
	}, {
		"type": "ContinuousState",
		"qualifiedName": "core:ElectricalContractIntensityState"
	}, {
		"type": "DataState",
		"qualifiedName": "core:ElectricalContractNameState"
	}, {
		"values": ["French blue electronic meter", "French linky meter", "Mechanical meter"],
		"type": "DiscreteState",
		"qualifiedName": "core:ElectricalMeterTypeState"
	}, {
		"values": ["available", "unavailable"],
		"type": "DiscreteState",
		"qualifiedName": "core:StatusState"
	}],
	"dataProperties": [],
	"widgetName": "AtlanticMultiMeterElectricSensor",
	"uiClass": "ElectricitySensor",
	"qualifiedName": "io:ElectricityMeterComponent",
	"type": "ACTUATOR"
}

io:EnergyConsumptionSensorsConfigurationComponent
Could you have a look at the states in Home Assistant again? (/developer-tools/state). I wonder what the value of io:HeatPumpActiveState is.
It looks like there is a command available as well (activateHeatPumpMode). Would that not be useful?
{
	"commands": [{
		"commandName": "activateHeatPumpMode",
		"nparams": 0
	}],
	"states": [{
		"values": ["available", "unavailable"],
		"type": "DiscreteState",
		"qualifiedName": "core:StatusState"
	}, {
		"type": "DataState",
		"qualifiedName": "io:HeatPumpActiveState"
	}],
	"dataProperties": [],
	"widgetName": "AtlanticMultiMeterElectricConfiguration",
	"uiClass": "ElectricitySensor",
	"qualifiedName": "io:EnergyConsumptionSensorsConfigurationComponent",
	"type": "ACTUATOR"
}

The figures displayed in HA match the ones I get if I export the values from the Tahoma web interface but they don't match those displayed in the Tahoma graphs... Somfy at its best.. again...
Some of the values appear to be cumulative consumptions over a monthly period, others are weekly ones. I don't think I'll be able to make any use of those sensors.
In case it helps, here are the values I have in the dev tools tab of HA.
ui_class: ElectricitySensor
widget: CumulativeElectricPowerConsumptionSensor
controllable_name: 'io:HeatingElectricalEnergyConsumptionSensor'
rssi_level: 100
'core:MeasurementCategory': electric/heatingSystem
'core:PowerSourceType': mainSupply
'core:MeasuredValueType': 'core:ElectricalEnergyInWh'
'core:StatusState': available
'core:DiscreteRSSILevelState': good
'core:RSSILevelState': 100
'core:ElectricEnergyConsumptionState': 4161409
'core:ConsumptionTariff0State': 3900163   -> heating system
'core:ConsumptionTariff1State': 119560603 -> electric applian
unit_of_measurement: Wh
ui_class: ElectricitySensor
widget: CumulativeElectricPowerConsumptionSensor
controllable_name: 'io:DHWElectricalEnergyConsumptionSensor'
rssi_level: 100
'core:MeasurementCategory': electric/dhw
'core:PowerSourceType': mainSupply
'core:MeasuredValueType': 'core:ElectricalEnergyInWh'
'core:StatusState': available
'core:DiscreteRSSILevelState': good
'core:RSSILevelState': 100
'core:ElectricEnergyConsumptionState': 1336665
'core:ConsumptionTariff0State': 1395706
'core:ConsumptionTariff1State': 94291616
unit_of_measurement: Wh
ui_class: ElectricitySensor
widget: CumulativeElectricPowerConsumptionSensor
controllable_name: 'io:OtherElectricalEnergyConsumptionSensor'
rssi_level: 100
'core:MeasurementCategory': electric/unknown
'core:PowerSourceType': mainSupply
'core:MeasuredValueType': 'core:ElectricalEnergyInWh'
'core:StatusState': available
'core:DiscreteRSSILevelState': good
'core:RSSILevelState': 100
'core:ElectricEnergyConsumptionState': 18687582
'core:ConsumptionTariff0State': 15628944
'core:ConsumptionTariff1State': 112466143
unit_of_measurement: Wh
ui_class: ElectricitySensor
widget: CumulativeElectricPowerConsumptionSensor
controllable_name: 'io:TotalElectricalEnergyConsumptionIOSystemSensor'
rssi_level: 100
'core:MeasurementCategory': electric/overall
'core:PowerSourceType': mainSupply
'core:MeasuredValueType': 'core:ElectricalEnergyInWh'
'core:StatusState': available
'core:DiscreteRSSILevelState': good
'core:RSSILevelState': 100
'core:ElectricEnergyConsumptionState': 24375408
unit_of_measurement: Wh
ui_class: ElectricitySensor
widget: CumulativeElectricPowerConsumptionSensor
controllable_name: 'io:PlugsElectricalEnergyConsumptionSensor'
rssi_level: 100
'core:MeasurementCategory': electric/outlet
'core:PowerSourceType': mainSupply
'core:MeasuredValueType': 'core:ElectricalEnergyInWh'
'core:StatusState': available
'core:DiscreteRSSILevelState': good
'core:RSSILevelState': 100
'core:ElectricEnergyConsumptionState': 189835
'core:ConsumptionTariff0State': 667262
'core:ConsumptionTariff1State': 28695908
unit_of_measurement: Wh

The figures displayed in HA match the ones I get if I export the values from the Tahoma web interface but they don't match those displayed in the Tahoma graphs... Somfy at its best.. again...

Unfortunately this is not something we can fix in our integration... So I guess for now the sensors are a bit useless, until Somfy changes the states of the devices. They have a lot of logic in their front-end most of the time, so we can not work around everything.


Add dynamic_config test for new function

Added two simple test for creating DynamicConfig with valid and invalid file.

@dingelish Could you take a look?

I am back! PTAL, seems now we have two more audit errors. @w93163red

Update actix-web can fix that, but I am currently stuck...
since:
on actix web 4.0.0-beta9, it has dev::body type and has been removed in the official version.
This lead to the following change:
https://github.com/bytedance/keyhouse/blob/main/src/control/mod.rs#L96
https://github.com/bytedance/keyhouse/blob/main/src/control/mod.rs#L100
need a new type to get the compilation pass. @dingelish Any suggestions?

@w93163red you wanna upgrade to 4.0.0-beta9 ?

Upgrade to 4•1•0
On Wed, Apr 20, 2022 at 19:14 Yu Ding @.***> wrote:

@w93163red https://github.com/w93163red you wanna upgrade to
4.0.0-beta9 ?
—
Reply to this email directly, view it on GitHub
https://github.com/bytedance/keyhouse/pull/20#issuecomment-1104540615,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABXYLOFPHOZ5X4GJU56N3A3VGCFT5ANCNFSM5LSGWULA
.
You are receiving this because you were mentioned.Message ID:
@.***>

@w93163red i guess you mean "4.0.1". how about this: you create a branch and upgrade spire-workload and rustls, and then i'll help with actix. how do you think

you can start from this branch:
fix-cargo-audit

I push a change on spire-workload @Ruide has released a new version, 1.2.0,  which is with the latest rustls

Can I merge this PR first? the audit error exited without my change, we can fix them in a separate PR.

Fixed actix-router and spire-workload version, since they had breaking changes.

:-) All checks passed. Could you help merge it? (I don't have write access) @w93163red

Spire-workload is done. Ruide has released a new version already
On Wed, Apr 20, 2022 at 19:26 Yu Ding @.***> wrote:

@w93163red https://github.com/w93163red i guess you mean "4.0.1". how
about this: you create a branch and upgrade spire-workload and rustls, and
then i'll help with actix. how do you think
—
Reply to this email directly, view it on GitHub
https://github.com/bytedance/keyhouse/pull/20#issuecomment-1104548952,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABXYLOHQZUYKHBKEMJXQLMLVGCHCFANCNFSM5LSGWULA
.
You are receiving this because you were mentioned.Message ID:
@.***>


Why is Layout::new() and Layout::with_offset not exposed publicly

I am trying to implement a container type (which will allow different styles of layouts), but it is not possible to do this in an external crate, because Layout::new() is not exposed.  Is there a reason for this?

Layout::new is only used internally in UserInterface.
Currently, if you are implementing a custom widget, you should return the appropriate layout::Node in Widget::layout. You will get back the according Layout in on_event and draw.


errorMessage 'Cannot read property 'launch' of undefined

Hello, I'm running the example code using Netlify functions and receiving the following error  -
{ "errorType": "TypeError", "errorMessage": "Cannot read property 'launch' of undefined", "trace": [ "TypeError: Cannot read property 'launch' of undefined", "    at Object.launchChromium (/var/task/src/node_modules/playwright-aws-lambda/dist/src/chromium.js:90:47)", "    at processTicksAndRejections (internal/process/task_queues.js:97:5)", "    at async Runtime.exports.handler (/var/task/src/makescreengrab.js:8:25)" ] }

Hello again. the code im running is
`const playwright = require('playwright-aws-lambda');
exports.handler = async (event, ctx) => {
let result = null;
let browser = null;
try {
    const browser = await playwright.launchChromium();
    const context = await browser.defaultContext();

    const page = await context.newPage();
    await page.goto('https://google.com');

    console.log('Page title: ', await page.title());
} catch (error) {
    throw error;
} finally {
    if (browser !== null) {
        await browser.close();
    }
}

};`
and the error is
{ "errorType": "TypeError", "errorMessage": "browser.defaultContext is not a function", "trace": [ "TypeError: browser.defaultContext is not a function", "    at Runtime.exports.handler (/var/task/src/makescreengrab.js:9:39)" ] }

Are you using 1.0.2 version?

Hey @jamesgrubb. Try using const context = await browser.newContext(); instead. .defaultContext() is no longer supported in playwright-core.

I'm going to go ahead and close this out, but please feel free to re-open or open another issue if you have questions or believe that there is a bug. Thanks!

Hi,
I am getting the same error:
my Code:
const playwright = require('playwright-aws-lambda');

exports.handler = async (event, context) => {
  let result = null;
  let browser = null;

  try {
    const browser = await playwright.launchChromium();
    const context = await browser.newContext();

    const page = await context.newPage();
    await page.goto(event.url || 'https://google.com');

    console.log('Page title: ', await page.title());
  } catch (error) {
    throw error;
  } finally {
    if (browser !== null) {
      await browser.close();
    }
  }
};

I am using:
"playwright-aws-lambda": "^0.5.2",
"playwright-core": "^1.2.1",
Error Message:
{
  "errorType": "TypeError",
  "errorMessage": "Cannot read property 'launch' of undefined",
  "trace": [
    "TypeError: Cannot read property 'launch' of undefined",
    "    at Object.launchChromium (/opt/node_modules/playwright-aws-lambda/dist/src/chromium.js:90:47)",
    "    at async Runtime.exports.handler (/var/task/api/poc1/handler.js:8:21)"
  ]
}

what could be a problem?
tnx a lot

I resolve the issue by change nodejs16 to nodejs14

what could be a problem?

use
import * as playwright from 'playwright-aws-lambda';


add a getCurrentTranslation method (that aliases translate)

This way, we can use it directly in forms.

@docteurklein Not sure I get it. Why it would be useful to have it apart from ->translate(), and how would it help about forms?

I'm going through the old issues/PRs and closing most of them so we can focus on now.
This one is missing any feedback or reasoning so I cannot deduce anything from it.
Thanks for you though, but closing for reasons above.
If the bug still remains, please send failing test case to verify it. Only with test we'll be albe to help.


Update code coverage script

Coverage remained the same at 44.36% when pulling 0f197197c850fc69b4f818d0e98552f24debf5ca on leonwanghui:update_coverage into b848b9d61118a5cebeb785de6d21c01a3635d925 on opensds:development.

Coverage increased (+3.7%) to 48.079% when pulling d2123e6df8aeaa08e9b323a2b13f1a711f59847c on leonwanghui:update_coverage into b848b9d61118a5cebeb785de6d21c01a3635d925 on opensds:development.


Add font collection (ttc) support

Initial support for reading ttc files. Also adds an index command line flag to otexplorer.
The API probably needs some adjustments. FontRef::new should likely take an index parameter to make this consistent.

So I looked at making table_directory_offsets [BigEndian<Offset32<TableDirectory>>]. This requires removing the #[skip_from_obj] attributes on TableDirectory and TableRecord which leads to a chain of compile errors in the writing code.
Accounting for those is beyond the scope of this PR so I'm going to leave this as is for now and we can revisit it in the future.


Pulsar support for Apache Avro library as published by Apache

Is your enhancement request related to a problem? Please describe.
We have a requirement to use both Kafka and Pulsar with Apache Avro Schemas. This is not possible currently as Pulsar uses it's own shaded (masked) version of apache avro implementation, which looks identical to Apache Avro.
Describe the solution you'd like
The enhancement is for Pulsar to work directly with Apache's Avro implementation.
Describe alternatives you've considered
Currently we are defining Schema's using Apache Avro Generic Record and then writing conversions to work with Pulsar's shaded version.
Additional context
Add any other context or screenshots about the feature request here.
We have written converters to allow schemas which serialize to org.apache.avro.generic.GenericRecord to allow serialization to
org.apache.pulsar.shade.org.apache.avro.generic.GenericRecord.

@adityaIndexlabs if you use pulsar-client-original library, you will not use the shaded library.

@sijie does pulsar-client-original have a org.apache.pulsar.client.api.Schema<org.apache.avro.generic.GenericRecord>? That's what's needed to support native Avro types.


Feature Request: Column Guides

I'm a long-time iOS developer, using VSCode to write React Native. I really enjoy Xcode's "page guide at column" feature, which (in my searching the web to see if I could solve this myself) seems to be called "column guides" in Visual Studio.
Here's what it looks like in Xcode:

If there's an existing setting for this, then I'd love to know so I can update the VSCode settings documentation to be more clear about it!

VSCode Version: Code 1.14.2 (cb82febafda0c8c199b9201ad274e25d9a76874e, 2017-07-19T23:22:50.650Z)
OS Version: Darwin x64 16.6.0
Extensions:

Extension
Author (truncated)
Version

vscode-eslint
dba
1.2.11

python
don
0.6.9

flow-for-vscode
flo
0.7.1

python
tht
0.2.3

vscode-react-native
vsm
0.3.2

Steps to Reproduce:

Look for a column guide setting in VSCode.
Can't find one; search the web & StackOverflow.
Still can't find one; file a ticket on GitHub for the issue and cross your fingers! ❤

Reproduces without extensions: Yes

We call it editor.rulers

Thank you!

"editor.rulers": [], how can i set this setting? i also like this feature.


Added support for metadata in address

Added support for metadata in address, my use case was because I wanted to name addresses
for instance: home address
Or should I add a name for it? metadata seems more generic

The problem is
TypeError: __init__() got an unexpected keyword argument 'private_metadata'

Because Address.as_data() returns a copy that gets passed private_metadata
1 solution is to exclude Metadata from being on the copy address (done), but I'm not sure if this is the right one

not sure why it's failing now

@LeOndaz
The changes committed by you, extend DB models but what about API? How do you want to change metadata for address when you don't have any access to it?
Some thoughts in case if we want to update address's metadata from API

Enabling metadata in the Address object requires assigning proper permissions - to protect private metadata. This can be problematic as an Address is shared between many different objects. (like Checkout.shipping_address, User.addresses, Order.shipping_address etc).
The second issue is defining how we want to protect public metadata from unauthorized access. Currently Address ID is base64("Address:1") where 1 is a DB ID. This means that we need to figure out how to protect it, update metadata mutation can return an updated object, which means, that we could have unauthorized access to Address object.

@korycins yes I should have converted this to draft as I'm partially working on it, please have a look

@korycins can you review now?

@korycins @patrys @maarcingebala
Could I have a review here?


non-nullable field Item.depth is null

Description
Hello, I am working on a python library for stacker.news.
When executing the get items query, the Error "Cannot return null for non-nullable field Item.depth." occurs.:
from main_client import StackerNewsGraphQL
client = StackerNewsGraphQL(endpoint="https://stacker.news/api/graphql")
output = client.get_items(limit=2, sort="TOP")
print(output)

def get_items(self, limit=10, cursor=None, sort="NEW", type=None, sub=None, name=None, when=None, by=None):
    variables = {
        "limit": limit,
        "cursor": cursor,
        "sort": sort,
        "type": type,
        "sub": sub,
        "name": name,
        "when": when,
        "by": by
    }
    response = self.execute(get_items_query, variables)
    return {
        "items": response["items"],
        "cursor": cursor,
        "limit": limit
    }

get_items_query = """
    query ($limit: Int, $cursor: String, $sort: String, $type: String, $sub: String, $name: String, $when: String, $by: String) {
        items(limit: $limit, cursor: $cursor, sort: $sort, type: $type, sub: $sub, name: $name, when: $when, by: $by) {
            items {
                id
                createdAt
                updatedAt
                title
                url
                text
                user {
                    id
                }
                depth
                boost
                upvotes
                wvotes
                ncomments
            }
        }
    }
"""

Steps to Reproduce

You can clone my repo: https://github.com/Leon-Sander/stacker.news_python_library
In the queries.py file under get_items_query add depth.
run test.py

Expected behavior
There should be someting in the field.
Logs
ERROR:logger:Error executing query: {'message': 'Cannot return null for non-nullable field Item.depth.', 'locations': [{'line': 22, 'column': 7}], 'path': ['items', 'items', 0, 'depth'], 'extensions': {'code': 'INTERNAL_SERVER_ERROR'}}

Nice catch. That's a vestigal part of the API that we don't use but it should be made to work


Update acs.md

Added documentation to call out that the masterProfile must also be declared or 128 addresses will be assigned to the master nodes as well if not declared.

@evillgenius75,
Thanks for your contribution as a Microsoft full-time employee or intern. You do not need to sign a CLA.
Thanks,
Microsoft Pull Request Bot


Implement API Not Transferable rule functionality

Based on #68

The best way to test this one is to create an Account through Sawbuck Manager, accept the 1000 free sawbucks offer, accept the Bronze Status offer, and then using Postman (post your email and password to /authorization to get the Bearer Token) get /accounts to get the Bronze Status holding id, and then try to create an offer with that Holding. You will get back an error that Bronze Statuses are not transferable.


Add series marker shortcut

Allows a marker type to get passed in with the data series. If it isn't
present, the default of a circle is used.

Hey @thepacketgeek, thanks for the PR 👍 and sorry for not responding earlier (big miss on my part). The current policy is for features to be implemented in Chart.js at the very least, so going to close for now, but feel free to open a new PR if you're still interested.


refactor: clean up console warnings [WEB-415]

once y'all get this to a place where it's ready to be QA'd, let me know and I can take a look


[SR-1417] Add non-optional overloads of XCTAssertEqual and XCTAssertN…

…otEqual
Previously, the only version of the functions that accepted values was the one that implicitly wraps them into Optionals. This generated a confusing error message when the assert failed. Having a separate overload that accepts non-optional types ensures that the correct description is printed when the assert fails.
Example:
XCTAssertEqual(1, 2, "message", file: "test.swift")
Previous error:
XCTAssertEqual failed: ("Optional(1)") is not equal to ("Optional(2)") - message
New error:
XCTAssertEqual failed: ("1") is not equal to ("2") - message

Awesome, thanks for trying your hand at SR-1417, @nsalmoria! 💯
It looks like Apple XCTest's SDK overlay doesn't have overloads of XCTAssertEqual for optionals. To add these overloads to swift-corelibs-xctest, we'd need to add them to Apple XCTest as well. In fact, Apple XCTest has exactly the problem you describe in SR-1417:
// Using Apple XCTest (Xcode 7.3.1), this produces the output:
// "XCTAssertEqual failed: ("Optional(1)") is not equal to ("Optional(2)") - "
XCTAssertEqual(1, 2)

Could you try adding these overloads, as well as tests for them, to the Apple XCTest SDK overlay in the apple/swift repository? You can add a test to the existing tests here.
Sorry for the additional work. The good news is that you can improve this output for all users of XCTest, even users of Apple XCTest on OS X! 😍

(Oh, and let me know if you'd rather not deal with building/testing the Swift project. If you'd like, I can take care of adding these overloads to Apple XCTest.)

As it happens, I am a user of XCTest on OS X :-) I'll take a stab at it.

Excellent! Please tag @modocache when you send a pull request. :)

This is blocked by https://github.com/apple/swift/pull/2788. @mike-ferris-apple, you're probably busy with WWDC, but could you take a look at that pull request?
Once https://github.com/apple/swift/pull/2788 is merged we can ask @nsalmoria to rebase these changes, then I'll review and merge them.

@nsalmoria Sorry for the delay! Now that https://github.com/apple/swift/pull/2788 is merged, can you rebase these changes? The conflict is probably due to #122, which moved these files around. Sorry!
Let me know if you're not sure how to rebase or would like some help.

@modocache I think I have rebased? Not sure if I was supposed to do things differently to avoid pulling in all the history from master :-/

@modocache I created a new pull request #123 from a new branch to attempt fixing this mess. Closing this one.


the Admin Router is causing circular import issues due to it importing database functions

Bug Description
from fides.api.db.database import migrate_db will throw an error, due to a circular import caused by the admin.py defined endpoint
This is annoying but doesn't currently break fides directly, however it did require some workarounds in plus

@Kelsey-Ethyca FYI I found this bug while working on updating fidesplus. I've worked my way around it over there for this release but we should still fix it 🙂 can be in the next release

We've already had quite a few PRs that are working to solve this, so this might not be necessary after all

@ThomasLaPiana  can we close this?

moving to done


[Bug]: Mute button not working

Give a brief about the bug ✍
Description
when the mute button is turned off it only mutes the background music but the sound which comes on clicking and when the color being filled remains unmuted
What is the expected behavior? 🤔
Description
All sounds should be muted when the mute button is clicked.
Provide step by step information reproduce the bug 📄
Description
By making the suitable changes in the javascript that the event of mute button should be properly handled.
Select program in which you are contributing
GSSoC24
Code of Conduct

[X] I follow CONTRIBUTING GUIDELINE of this project.

hello, please assign this issue to me under GSSOC'24.


Cannot find where you divide ngram count from language file by n_words

Hello,
i was reading your sources because i am working on language detection for a small projet i have.
I came to your project after the shuyo/language-detection one.
I cannot find in your sources where you convert the integer values associed with each ngrams from the languages files by the total number of analyzed words for this size of ngram.
In shuyo/language-detection project this is done in DetectorFactory.java line 135.
If you don't do this division all result will be biased toward the languages with most words.
Did i miss something in your sources ?

The stats are recalculated every time a language profile is built.
The division happens here:
https://github.com/optimaize/language-detector/blob/0dcc68e4fb4e840490195e3473ce0243f678d656/src/main/java/com/optimaize/langdetect/NgramFrequencyData.java#L84

Thank you for pointing it out for me.


1.23.0 release caused breaking change in bundle output option when APIs are not specified

Describe the bug
Release 1.23.0 introduced #1715. Fix #1717 resolved the issue when API names are provided as arguments but did not correct the problem when no API names are provided.
To Reproduce
We have the following make command to bundle some spec files:
npx @redocly/cli bundle -o ./generated/

As of 1.23.0, it outputs a single file named generated.yaml in the ./ folder:
.
└── generated.yaml

Expected behavior
Before, it would output one file per spec file to the ./generated/ folder.
.
├── generated
    ├── some_spec_file.yaml
    ├── another_spec_file.yaml
    └── ...

OpenAPI description
OAS 3.0.0
Redocly Version(s)
I've tried the following versions but expect it applies to all versions since 1.23.0

1.25.7
1.23.1
1.23.0

Node.js Version(s)
v20.10.0
OS, environment
Ubuntu 22.04.5 LTS in WSL on Windows 11
Additional context
Changing redocly-cli/packages/cli/src/commands/bundle.ts line 78 to the below might solve the problem.
        entries: apis.length,

Before, it would output one file per spec file in API_FILES to the ./generated/ folder.

Hi @imdex-brett-debeer, could you clarify what you mean by API_FILES?
Are you using redocly.yaml file with the apis section specified? If yes, you can specify the output filenames for each entry as in this example from the docs:
apis:
  orders@v1:
    root: orders/openapi.yaml
    output: dist/orders.json
  accounts@v1:
    root: accounts/openapi.yaml
    output: dist/accounts.json

Hi @tatomyr,
Apologies API_FILES was copied from #1715 by mistake.
I've created redocly-bundle-repro as a minimal reproduction.

Thanks! I’d still recommend defining the output paths explicitly in your config file though. The issue with the previous behaviour is that some might refer to the same API description file multiple times in the apis section with different decorators so they'll be stored under the same name, making it unclear which exact bundle gets stored in the output.

Hi @tatomyr,
Setting the output path in the config file is not equivalent to the behaviour previously provided, unfortunately.
Prior to 1.23.0, --output allowed specification of an output path or an output directory, while the config file only allows specification of a path.

while the config file only allows specification of a path.

Yes, that was a deliberate decision to avoid any ambiguity about which file represents each of the apis entries. We should probably clarify this in the documentation.
In your example, you can achieve the same behaviour as before just by specifying your original apis (e.g. using the glob pattern):
npx @redocly/cli bundle openapi/* -o ./generated/

npx @redocly/cli bundle openapi/* -o ./generated/ doesn't bundle APIs with different names but the same root file.
I've updated my reproduction repository to demonstrate.
The test below should also demonstrate what occurs if added to packages/cli/src/tests/commands/bundle.test.ts
    it('should store bundled API descriptions in the directory specified in argv IF multiple positional api names provided AND --output specified', async () => {
      const apis = {
        foo: {
          root: 'foo.yaml',
          output: 'output/foo.yaml',
        },
        fooJson: {
          root: 'foo.yaml',
          output: 'output/foo.json',
        },
        bar: {
          root: 'bar.yaml',
          output: 'output/bar.json',
        },
      };
      const config = {
        apis,
        styleguide: {
          skipPreprocessors: jest.fn(),
          skipDecorators: jest.fn(),
        },
      } as unknown as Config;
      // @ts-ignore
      getFallbackApisOrExit = jest
        .fn()
        .mockResolvedValueOnce(
          Object.entries(apis).map(([alias, { root, ...api }]) => ({ ...api, path: root, alias }))
        );
      (getTotals as jest.Mock).mockReturnValue({
        errors: 0,
        warnings: 0,
        ignored: 0,
      });

      await handleBundle({
        argv: { apis: ['foo', 'fooJson', 'bar'], output: 'dist' }, // cli options
        version: 'test',
        config,
      });

      expect(saveBundle).toBeCalledTimes(3);
      expect(saveBundle).toHaveBeenNthCalledWith(1, 'dist/foo.yaml', expect.any(String));
      expect(saveBundle).toHaveBeenNthCalledWith(2, 'dist/foo.json', expect.any(String));
      expect(saveBundle).toHaveBeenNthCalledWith(3, 'dist/bar.yaml', expect.any(String));
    });

doesn't bundle APIs with different names but the same root file.

Yes, and that's one of the reasons the output option was added to redocly.yaml. It allows for much more flexible configuration and granular control over the output destinations. The inline --output option is mostly intended for simple cases when you don't have any sophisticated transformations (especially involving different transformations of the same source file).
The case in your latest example wouldn't work with a version prior to v1.23.0 (unless I'm missing something) because:

the output field in the apis section was not supported
both museum@json and museum would anyway be stored under the same name

And I still don't get why using the output in apis doesn't work for you 😅.


SSD_mobile.py is not included

Hi,
Thanks for your code.
I can't find the script of SSD_mobile, could you please update it?
Regards,

It is easy to define the network for SSD mobile while taking the FSSD_mobile as the reference, I am afraid that I do not have enough GPU to test it recently.


Gruvbox-factory can't convert certain files

It gives me the "we had a problem in the pipeline! Make sure you're in the same path of the image you want to convert! " Even though I am in the same directory. Below is an example of a file that doesn't work, I also have another image that is 2.11 megabytes (the one below is 7.91 MiB) that wont open either, but I cant find a link to it.
I also been having a separate issue (I'm being lazy and including 2 issues in one sorry) that it changes some lighter beige tones into bright pink, instead of perhaps a more palatable warm white color, and some white-ish colors into light blues. The second link, (first image on the page of the guy with a knife) is a perfect example of that.
Thank you.
https://unsplash.com/photos/aL7SA1ASVdQ
https://www.google.com/url?sa=i&url=https%3A%2F%2Fwallpaperaccess.com%2Fminimalist-anime&psig=AOvVaw2blQ-GSzgyzqp29nl6C-OR&ust=1617472547003000&source=images&cd=vfe&ved=0CAIQjRxqFwoTCJCzn4KR4O8CFQAAAAAdAAAAABAD

Hey @stnm12brX2 👋🏻  I also noticed this issues you have said during the development. This cli is just a wrapper around ImageGoNord, so the images that are not working and the colors that are not rendered right is probably a issue with that library, sorry 😕
I could investigate more of these problems but I'm currently busy at the moment 😞 I'll try solve this in the future, but feel free to open a PR in case you find a solution 💎


backup download server

can you add a fall back server if/when archive.org is down

there already is one pre-configured(check the settings). and you can add your own if you want too, in the settings file

do you know any good backup servers? sorry I just don't know of any? :(

its already set up just turn the setting on to use the custom archive


Implemented poisson distribution and added in the code files

Implemented poisson distribution as discussed in the issue (#264).
@psesh @ascillitoe it would be helpful if you can look at the implementation of the files and guide me for any further changes to be committed to this file repository.
Changes made in source files :

equadratures.distributions.__init__.py
equadratures.distributions.poisson.py
equadratures.parameters.py
equadratures.tests.test_distributions.py/code>

Thank you for your time.

This pull request has been mentioned on Discourse — equadratures. There might be relevant details there:
https://discourse.equadratures.org/t/google-summer-of-code-2021-projects/108/25

Hi @Simardeep27 . Thanks for contributing to the code.
Currently, our code features continuous distributions, mostly based on importing from scipy.stats, as you have done in your PR. For continuous distributions, the method get_pdf(), which returns evaluations of the parameter's probability density functions at specific points, is well defined and is inherited from the distribution's scipy implementation. However, for discrete distributions, this is not the case: one can only get the probability mass function instead.
To accommodate this, we need to open up another method in distributions.py and parameter.py. However, to generate the recurrence coefficients for computing quadrature rules for integration---another important feature of the EQ code---we would most likely need a method that is different from that used for continuous distributions.
With this said, at the current stage, we cannot merge this PR. However, this is an excellent opportunity for further development. Literature pertaining to "discrete orthogonal polynomials" is sparse, especially with regards to its potential applications. If the case for polynomials orthogonal to discrete measures (such as the Poisson measure) and their applications can be made, it would be a great addition to our code, on top of a contribution to the literature, potentially in the form of a paper. Supposing that you join us for GSoC for the project on universal quadrature rules, I see this as a great potential topic for exploration.
Please do let us know about any thoughts and ideas on this. Thanks again for your contribution!

Hello @ncywong ,
Firstly thanks a lot for the clarification. I will learn more about discrete orthogonal polynomials and try to create a separate method for the same. I had just one query , the new methods have to be created taking develop branch or the main branch as the base?
Thanks again for the guidance

Hi @Simardeep27, we generally try to follow a workflow like the one described here:
https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
Essentially this means all new features should be implemented and PR'd into develop. We only merge urgent fixes into master. Periodically we then merge develop into master and update the version number. If the new features are more complex, you can create a new feature branch so the community can test and contribute to the feature, and then we can merge into develop once we're happy with it. For example, if the work on distributions gets more involved we can create a new feature_distributions branch (based on develop) for you to PR too.

P.s. another thought... since the implementation of discrete distributions is likely to require a bit more thought, it might be an idea to implement more continuous distributions first. For example, see the scipy ones below:
https://docs.scipy.org/doc/scipy/reference/stats.html
Implementing all of the less common ones would be quite tedious and messy. Perhaps a better approach is to add a generic distribution class, where you pass in a user defined scipy distribution object? For example, something that allows us to do:
import equadratures as eq
from scipy.stats import truncnorm
mydist = truncnorm.stats(0.1, 2, moments='mvsk')
myparam = eq.Parameter(order=1, distribution=mydist)

This would allow the user to use continuous distributions we haven't added, without requiring us to hard code every single distribution into the code. @ncywong can you foresee any complications with something like this?

@ascillitoe Not many complications I'd imagine. One thing that came to mind was the need to define the bounds, useful for quadrature rules with endpoints. scipy does not seem to be able to give us that information automatically.

Hello @ncywong ,
Firstly thanks a lot for the clarification. I will learn more about discrete orthogonal polynomials and try to create a separate method for the same. I had just one query , the new methods have to be created taking develop branch or the main branch as the base?
Thanks again for the guidance

@Simardeep27 I would recommend starting from the develop branch, and since I think this could be a rather large endeavour, opening up a feature branch would be appropriate. Cheers.

@Simardeep27 I would recommend starting from the develop branch, and since I think this could be a rather large endeavour, opening up a feature branch would be appropriate. That being said, I'd recommend starting with some continuous distributions as @ascillitoe mentioned, and trying to add the "user-defined" scipy object definition capability. Cheers.

Sure , I will try to implement this and make a PR.
Thanks.

Hey @ascillitoe @ncywong,
I had a doubt, I was creating a new class for the user defined scipy distributions ,  When we pass a scipy function to a variable
For example:
import equadratures as eq
from scipy.stats import truncnorm
mydist = truncnorm(0.1, 2)

the variable becomes a 'rv_frozen' and from scipy documentation we could directly call functions for it like , pdf(),cdf(),stats() etc, So would it be feasible to create separate functions for them to call them by our defined class rather than calling them by direct methods defined by scipy.

Hi @Simardeep27, if I understand you correctly you're saying should we create "wrappers" around the scipy methods .pdf() etc? If so, yes! I think that's exactly what I had in mind. Essentially, all the functionality that is required of the other equadratures distributions classes e.g. get_cdf() get_pdf(), get_samples() etc, will need to be implemented in this new custom distribution class. This is so the other equadratures classes such as Poly() etc can use this new distribution class. For lots of the methods, such as get_pdf() I think this will be quite easy as it'll simply be a wrapper around the scipy .pdf(), and get_samples() can use use the scipy .rvs() etc.
The only one that might need a bit more thought is the .get_recurrence_coefficients(). @ncywong any thoughts on this one? I assume this would just be inherited from the base Distribution() class in template.py, and it would just be a case of ensuring we have self.x_range_for_pdf defined?

Actually I have created the wrapper functions for .pdf(),.cdf(),.stats() and they are working fine , I still need to work on the jacobi coefficients and the recurrence coefficients.
I want to ask whether we need  just the upper bound and lower bound of the distribution to find  x_range_for_pdf(), scipy provides a function for finding the endpoints of a distribution interval(alpha). So , can we use this to find the x_range_for_pdf and then the recurrence-coefficients?

Hi both, sorry for the late response.

The only one that might need a bit more thought is the .get_recurrence_coefficients(). @ncywong any thoughts on this one? I assume this would just be inherited from the base Distribution() class in template.py, and it would just be a case of ensuring we have self.x_range_for_pdf defined?

That's what I think too. And as @Simardeep27 correctly mentioned, we can use interval from scipy to get the range using a "probability 1 confidence interval". However, I would be a bit careful about its behaviour for infinite (e.g. Gaussian)/semi-infinite (e.g. Exponential) distributions. It's worth playing around a bit to see what suits best. Other than that, custom_recurrence_coefficients should be able to sort the recurrence coefficients out.
A further step would be to ensure that the custom recurrence coefficients are doing their job, by verifying that the orthogonal polynomials generated are indeed orthogonal. Basically, for different distributions, try to evaluate the inner product of the polynomial basis functions with respect to the orthogonal probability distribution. Do let me know if you need help on this.

Hi both, I looked into it a bit more and I think we can get everything we need from rv.support() and rv.mean()? Or even just rv.a and rv.b to get the lower and upper bounds directly?
@ncywong re the recurrence coefficients, would we just need a bit of logic to decide which method in recurrence_utils.py to call depending on the type of distribution? I'm guessing we would need to check if rv.support() or rv.a and rv.b are np.inf or not? Or as you said are we can always use custom_recurrence_coefficients but then we need a bit of logic to set x_range_for_pdf to something sensible?

would we just need a bit of logic to decide which method in recurrence_utils.py to call depending on the type of distribution?

Yes, from what I gathered, we just need to use the custom_recurrence_coefficients method. For infinite distributions, it seems that covering most of the mass/domain of the pdf is sufficient. Again, would be informative to have some verification on this!

Hi both, sorry for the late reply
I tried using the custom_recurrence_coefficients method, I had a doubt that for this method we require the x_range_for_pdf for example. cauchy distribution uses scale for the x_range_for_pdf.  Applying custom_reccurence_coefficients provides just nan values. So, how to move forward with this?
P.s. Are there any  research papers you could refer for recurrence coefficients, it would help me to get a better understanding of the issue.
Thanks

Great thanks!
Re validating the distributions, we need to think a bit more about this. If you'd like to have a go at some other stuff in the meantime, there are plenty more plotting utilities that would be useful to implement (e.g. see here), and happy to discuss other ones not yet mentioned on the discourse post!

Sure, I would keep this on sidelines for the moment.


collect docker events with heapster events

As now we can collect Kubernetes events using heapster events, it may be good to also collect Docker events also. As we do in heapster core, calling Kubernetes apiserver to collect the minon nodes running Kubelet with the assumption that Kubelet running on the same port 10255, we can assume that all Docker are also running on the same port and so we can use the Docker remote api to collect all docker events. :)

ping @thockin @piosz @DirectXMan12

I will work on this in the next few days.

Sorry, this is out of the scope of Heapster. There is an effort in Kubernetes to support not only Docker as container runtime (see https://github.com/kubernetes/kubernetes/blob/master/docs/proposals/container-runtime-interface-v1.md). I think we should rather add a functionality to CRI to proxy container runtime events to Kubernetes. You can reuse some Heapster code to create your own solution if you need it.


Attachments?

Hi,
I can't get the attachments of an email with his library.
message.Attachments.Count is 0 even if there is an attachment.
Can you provide an example please?
Best regards
-bio

Hi bio,
Sorry, currently the attachments parsing is not implemented.
The workaround is get the Raw Body and parse the MINE types by hand.
Regards//


Custom Command for Reveal Next Button (IO-one-by-one)

Is it possible to add a custom command for the Reveal Next button on Anking's IO-one-by-one cards?
Here's the link to the Note type:
https://github.com/AnKing-Memberships/AnKing-Note-Types/releases/tag/IO-one_by_one-3ff1197
This is what I could find about the button on the card template:
button id="button-reveal-next" class="button-general">Reveal Next. /button>
I don't know much about coding but is it possible?

Hi @VelmontBlack, I had this issue a few days ago and recently resolved it for the cloze deletion one-by-one cards. In the Ankimote add-on's configuration page, you can change one of your five custom command slots to run JavaScript. I added the following text to my configuration page as my first slot:
"cmd1": "mw.web.eval( "document.getElementById('button-reveal-next').onclick();" )",
"cmd1-label": "Reveal",
This lets you use the reveal next button on the cloze deletion one-by-one cards. I pulled the card's code using the AnkiWebView Inspector add-on to find the code and test its JavaScript command, as recommended by the instructions given by @TheDabblingDuck on the add-on's configuration page.
Hope this helps you find a way to add a reveal button for your image occlusion one-by-one cards!

hey thanks for replying! It took me a while, but I found it!
"cmd2": "mw.web.eval( "toggleNext()" )",
"cmd2-label": "Reveal IO One-by-One",
this one finally did the trick! Can't believe it was this simple tho😆


Code review + Improvement

Add ; at the end of the line.
Change ' into " for strings.
Check the settings in the html file.
Set the default priority to 16.

@Ekristoffe I cannot accept this PR because it violates the CONTRIBUTION rules and makes format changes that are undesirable.

It uses standard.js - please use the npm scripts to test and lint the code! ;)

see CONTRIBUTING.md

funny that you use standard.js (single quote and other) but the automatic code review give error on it.
Maybe configure the automatic code review ?
I will roll it back to the standard.js system

I will make a cleaner one, in the mean time I close this one.


feat(annotations): Delete annotation per mouse click

People in our lab mentioned that the old way of removing an annotation (Ctrl+RMB) now only selects the annotation, and an additional click on the paper bin symbol in the annotation panel is required to delete the annotation.
This PR adds Alt+RMB to restore the old functionality for quickly removing single annotations. Alt+RMB was chosen because the other combinations are currently taken... Not sure if we can make this prettier / more symmetric / intuitiv.
Ctrl+LMB: Add Annotation
Ctrl+RMB: Select Annotation
Alt+LMB: Move Annotation
Alt+RMB: Delete Annotation [NEW]
Closes https://github.com/seung-lab/neuroglancer/issues/218

Oh, hm... looks like Alt+RMB is already taken by some setups to force show the context menu. Have to investigate a bit more.


Update style-guide.md

When and why we should use the self->_iVar format to reference instance.

(:+1: :+1: :+1: :+1: :+1: :+1: )^1024


services/horizon: remove out-of-date .env.template

PR Checklist
PR Structure

[x] This PR has reasonably narrow scope (if not, break it down into smaller PRs).
[x] This PR avoids mixing refactoring changes with feature changes (split into two PRs
otherwise).
[x] This PR's title starts with name of package that is most changed in the PR, ex.
services/friendbot

Thoroughness

[ ] ~This PR adds tests for the most critical parts of the new functionality or fixes.~
[ ] ~I've updated any docs (developer docs, .md
files, etc... affected by this change). Take a look in the docs folder for a given service,
like this one.~

Release planning

[ ] ~I've updated the relevant CHANGELOG (here for Horizon) if
needed with deprecations, added features, breaking changes, and DB schema changes.~
[x] I've decided if this PR requires a new major/minor version according to
semver, or if it's mainly a patch change. The PR is targeted at the next
release branch if it's not a patch change.

Summary
Remove the .env.template file that contains an example for options to configure for horizon.
Goal and scope
The template file looked like the fastest way to get started but when I ran horizon using the file I
had to add values for a couple keys (RATE_LIMIT_REDIS_KEY, NETWORK_PASSPHRASE) and there is at least one key there (RUBY_HORIZON_URL) that are also no longer valid. Feedback from @ire-and-curses in #1620 indicates that this file hasn't been updated over time, and given it's out-of-date, nobody is likely using it. Instead of keeping this updated, we should rely on the developer guide to provide direction on what options and values to use.
Summary of changes

Remove .env.template file

Known limitations & issues
N/A
What shouldn't be reviewed
N/A

@lechengfan @ire-and-curses I've seen multiple times this kind of files (.env.sample - .env.tempalte) failing for similar reasons, people forget to use them or they forget to update them.
Something I started doing a while back was to promote the use of https://direnv.net/ instead of custom .env files and check the .envrc file as part of the git repo, that way people don't forget to update it and if you add something which is for dev purposes only, you can still keep it as part of the repo.

There are currently no .env* files in this repo. This file was the only one we had currently and it was out-of-date, so it seemed like we were forgetting to update it even with it checked in.


Unable to resize cluster after creation

In the latest acs-engine pull that I did yesterday, I have a fully functional cluster. But when I resize the master from a Standard_D2_v2 to a Standard_D1_v2, Kubelet will not start with the following message all over the place:
dial tcp <IP_ADDRESS>:443: getsockopt: connection refused
Container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: Kubenet does not have netConfig.  This is most likely due to lack of PodCIDR
I noticed, that now for some reason the VM size is being pushed as a label and coded in in /opt/azure/containers/kubelet.sh. Even changing the label in the kubelet.sh doesnt fix this (although it does change the flag on kubelet to the right size.
The code change looks like its from this commit - https://github.com/Azure/acs-engine/pull/581
Is there somewhere else that's hardcoding the VM size causing the master to be functional only with the size the vm was when initially created?

If you revert #581 in a fork it might work.  And I would be curious as to what it would take to get this working, but today resizing the master vm is a none goal for acs engine clusters.
A little background #581 was about mitigating throttling from ARM that was happening in large clusters/subscriptions with lots of clusters in the subscription.

#626 has fixed this


Write a C++ program to find volume of a cylinder

Description
Write a C++ program to find volume of a cylinder
Volume of cylinder = π × Radius^2 × Height
Radius : 2
Height : 3

Volume : 37.69911184307752

How to contribute

Save the solution in FindVolumeOfACylinder.cpp file
Add FindVolumeOfACylinder.cpp file in program/find-volume-of-a-cylinder folder

!assign


Macaws Roofs & Roofs BOP Addon invalid for additional placements

These two Mods have roofs labeled as stairs, so your mod try to do its stuff.
But when placing it will become very hard when nothing is below the Roof Block & Vertical roofs are complety destroyed texturewise!
Also the Roofs are only half of a block so your placing grid is very hard to handle asspecially on flat roofs.
So maybe have a modblacklist will help?

Implemented as of b5135923d3dd541c9aa754cf4c6891d1b8b88748 and 79a70aaf43174b620fd08676283075b544bce685


JSPM install issue

Hey @andreypopp.  Great project.  Can you look at this issue with jspm?
https://github.com/jspm/jspm-cli/issues/963
I see that you work on both react-forms and reactify.  I am wondering if you can just bump the version of reactify used by react-forms to the latest one to avoid this problem where jspm doesn't parse the react-tools version right.

Cancel that.  Handled on the JSPM side.


Support Tailwind prefixed classes

Support prefix defined in the Tailwind config.
See discussion

This might be improved once settings() is implemented.


feat(v2): theme default translations Bengali

Motivation
Adding Bengali(BN) translations for docusaurus.
Have you read the Contributing Guidelines on pull requests?
Yes
Test Plan
(Write your test plan here. If you changed any code, please provide us with clear instructions on how you verified your changes work. Bonus points for screenshots and videos!)
Related PRs
(If this PR adds or changes functionality, please take some time to update the docs at https://github.com/facebook/docusaurus, and link to your PR here.)

👍  thanks


Should return a handle to inspect/await opened subprocess

Some callers might need a way to wait for the opened process to close, or inspect/manipulate its state. Might be nice for open to return some kind of handle to support such operations.
Example:
returncode = shopen.open('somefile.txt').wait()

This might be tricky for the Windows case in particular (which delegates to os.startfile) because:

startfile() returns as soon as the associated application is launched. There is no option to wait for the application to close, and no way to retrieve the application’s exit status.


[C++] PartitionedConsumerImpl send redeliverMessages repeatedly

Describe the bug
Both PartitionedConsumerImpl and ConsumerImpl have member variable unAckedMessageTrackerPtr_ (class UnAckedMessageTrackerEnabled), and PartitionedConsumerImpl is composed of ConsumerImpl. If the acknowledgement times out, they will send redeliverMessages repeatedly, MultiTopicsConsumerImpl has same problem.
see https://github.com/apache/pulsar/pull/8606#issuecomment-735593147
To Reproduce

subscribe a partitioned topic and set UnAckedMessagesTimeoutMs

Consumer consumer;
ConsumerConfiguration consumerConf;
consumerConf.setUnAckedMessagesTimeoutMs(11000);  // must >= 10000
consumerConf.setTickDurationInMs(11000);
Result result = client.subscribe("my-topic", "consumer-1", consumerConf, consumer);

recevie a msg from partitioned topic and not do acknowledge

Message msg;
consumer.recevie(msg)
sleep(20000);

sleep 20000ms to trigger redeliverMessages repeatedly

sleep(20000);

Expected behavior
Only one redeliverUnacknowledgedMessages should be sent in PartitionedConsumerImpl

Is the member variable unAckedMessageTrackerPtr_ in PartitionedConsumerImpl and MultiTopicsConsumerImpl redundant?

@BewareMyPower Please help take a look at this issue.

@codelipenghui I agree with @saosir , the point is that should Java client's implementation also have the problem? See
https://github.com/apache/pulsar/blob/c17253b3b43c36250ba106dd7a17f35f64f546e5/pulsar-client/src/main/java/org/apache/pulsar/client/impl/MultiTopicsConsumerImpl.java#L101
https://github.com/apache/pulsar/blob/c17253b3b43c36250ba106dd7a17f35f64f546e5/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ConsumerImpl.java#L134
Both ConsumerImpl and MultiTopicsConsumerImpl hold an UnAckedMessageTracker, when the tracker's timeout exceeds, it will trigger the redelivery.
IMO, the unAckedMessageTracker of MultiTopicsConsumerImpl is redundant. And this feature of C++ client is ported from Java client. So I think if C++ client needs changes, Java client also needs changes.

@BewareMyPower ConsumerImpl will check if there is a parent when track message in Java client's implementation
https://github.com/apache/pulsar/blob/c17253b3b43c36250ba106dd7a17f35f64f546e5/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ConsumerImpl.java#L1541-L1547

In addition, UnAckedMessageTrackerEnable did not clean up the batchIndex of MessageId when tracking the message. That will cause only the last message in the batch to be cleared from UnAckedMessageTrackerEnabled when doAcknowledgeIndividual and send redeliverMessages repeatedly

Got it. It looks like we should also check if there's a parent in C++ client.

Since the reason is clear, could you contribute a PR to fix it?

OK, I will submit a PR later


Auth Example question - why use peek()?

In this example, why is auth.currentUser.peek() being called when it isn't inside an effect?
final router = GoRouter(
  refreshListenable: auth.isLoggedIn.toValueListenable(),
  routes: [
    GoRoute(
      path: '/',
      redirect: (context, state) {
        if (auth.currentUser.peek() == null) return '/login'; // <--------- Why peek() here?
        return null;
      },
      builder: (context, state) => const HomeScreen(),
      routes: [
        GoRoute(
          path: 'profile',
          builder: (context, state) => const ProfileScreen(),
        ),
      ],
    ),
    GoRoute(
      path: '/login',
      builder: (context, state) => const LoginScreen(),
    ),
    GoRoute(
      path: '/register',
      builder: (context, state) => const RegisterScreen(),
    ),
  ],
);

Is it because the redirect function might get called from an effect that changes the route? Thank you

No reason! Could be .value

It's also a tad more efficient as it doesn't check if an effect is running.
https://github.com/rodydavis/signals.dart/blob/cfcfb9a6e31482cc9d19203155b01ae8b366eb09/packages/signals_core/lib/src/core/signal.dart#L275-L281
VS
https://github.com/rodydavis/signals.dart/blob/cfcfb9a6e31482cc9d19203155b01ae8b366eb09/packages/signals_core/lib/src/core/signal.dart#L264


💭 [GHERKIN REQUEST] - Refactor out Gen-Gherkin

Reference Issues
https://github.com/DevOps-MBSE/AaC/pull/714
#2 #3 #4 #5 #6 #7 #8 #9
Summary
As we migrate to the new 4.0 baseline, there are tasks on the flip side that need to be completed. 4.0 includes refactoring out certain portions of the code base to new repositories. We need to be sure that those portions do get migrated to their new homes making use of the new 4.0 system. So, once we have rebaselined we will need to sort the work to re-implement the refactored out functionality.
Basic Example
All pertinent Gen-Gherkin pieces need refactored out to their new repository and updated to use the 4.0 API.
What are the drawbacks/impacts of your feature request?
Loss of the Gen-Gherkin functionality until the supporting pieces of Gen-Gherkin and capability have been migrated over to their new home.

Have completed all associated work with this feature.


After displaying the polygon, a canvas is created that overlaps all elements on the map

Checklist

[X] I've looked at the documentation to make sure the behavior isn't documented and expected.
[ ] I'm sure this is an issue with Leaflet, not with my app or other dependencies (Angular, Cordova, React, etc.).
[X] I've searched through the current issues to make sure this hasn't been reported yet.
[X] I agree to follow the Code of Conduct that this project adheres to.

Steps to reproduce
Thank you everyone, thank you in advance for your help. I want to track mouseover of some elements on the map (vector tiles), I'm facing a problem, I have a polygon being created when the map is initialized.
this.$L.activePolygon = this.$L.polygon(
        [[0, 0]],
        ACTIVE_POLYGON('OPTIONS'),
      );

Here is the activePolygon config
{
    OPTIONS: {
      stroke: true,
      color: '#36E700',
      fill: true,
      fillColor: '#00DE2D',
      fillOpacity: 0.75,
      zIndex: 10,
    },
    VIEW_ZOOM: 14,
  },

Then at some point I get a call
this.$L.activePolygon
      .setLatLngs(cadNumFromIDB.polygon)
      .addTo(this.$L.mapInstance);

Following this, a canvas element appears that overlaps the entire map, and makes it impossible to track the mouseover event of the elements below it

Moreover, when I execute this.$L.activePolygon.remove(); then the canvas still remains, still covering the entire screen size
Expected behavior
I would like that when a polygon is deleted, the canvas is also deleted
Current behavior
Canvas .leaflet-zoom-animated stays the entire screen size, and covers everything, making it impossible to track events
Minimal example reproducing the issue
No response
Environment

Leaflet version: 1.9.3
Browser (with version): Chrome 123.0.6312.58
OS/Platform (with version): MacOS Sonoma 14.2.1

Perhaps someone will have a similar problem. In general, the problem was solved, we added the following styles.
.leaflet-overlay-pane canvas.leaflet-zoom-animated {
  pointer-events: none;
}


Updating Guide Structure

Updated Home first time link
Reordered guide quick links
Updated guide pages next up links

Fixed from #9 :
OpenStack Setup Guide:
Step 2: Install OpenVPN Client:
"File" is "UPLOAD FILE" on windows openvpn client gui. probably fine
Step 5: Horizon.hackucf.cloud Configuration:
"Import Key Pair" should be "Import Public Key"


'ñ' causes a capitalization bug

Hi,
I noticed this while using this module today:
title('diseño') // 'DiseñO'
Using 'ñ' results in the next letter being capitalized. I haven't dug to figure out what's causing this, but I just wanted to surface the problem. Thanks for all the hard work.

Same for “FernáNdez.”

Hi, are there any ongoing work to fix this issue? Otherwise, would you accept a PR to fix this?

Fixed with https://github.com/vercel/title/pull/62 - thank you!


Error: Cross-package move statement with v4.10.0

Description
We believe this change breaks existing setups. The issue is reproducible consistently. Pinning the version to 4.9.0 avoids the issue.
Versions

Terraform: 1.1.3

Provider(s): ~> 4.7

Module: ~> 4.7

Reproduction

Steps to reproduce the behavior:

Are you using workspaces?

YES

Have you cleared the local cache (see Notice section above)?

No. The CI CD setups are recreated

List steps in order that led up to the issue you encountered

terraform init -reconfigure
terraform plan -lock=false

Code Snippet to Reproduce
The impacted module configuration (./iam_sa.tf) looks like the following:
module "iam_iam-assumable-role" {
  source  = "terraform-aws-modules/iam/aws//modules/iam-assumable-role"
  version = "~> 4.7"

  trusted_role_arns = [
    "arn:aws:iam::xxxx:xxxx",
  ]

  role_requires_mfa       = false
  custom_role_policy_arns = [aws_iam_policy.backstage.arn]

  create_role = true

  role_name        = local.backstage-role-name
}

Expected behavior
terraform plan -lock=false should work without issues
Actual behavior
While above configuration was working fine for the last 20 days, It started to break on 20th Jan 2022 in our CI CD pipelines.
The pipelines reported a bunch of below error(s):
╷
│ Error: Cross-package move statement
│
│   on .terraform/modules/iam_iam-assumable-role/modules/iam-assumable-role/main.tf line 6, in data "aws_iam_policy_document" "assume_role":
│    6:   count = var.custom_role_trust_policy == "" && var.role_requires_mfa ? 0 : 1
│
│ This statement declares a move from an object declared in external module
│ package
│ "registry.terraform.io/terraform-aws-modules/iam/aws//modules/iam-assumable-role".
│ Move statements can be only within a single module package.
╵

Terminal Output Screenshot(s)
terraform init -reconfigure
/home/runner/work/_temp/e980b45d-6fb2-49c5-afd9-a12d2809c9d1/terraform-bin init -reconfigure
Initializing modules...
- bastion in modules/bastion
- cloudtrail in modules/cloudtrail
- eks in modules/eks
Downloading registry.terraform.io/terraform-aws-modules/iam/aws 4.9.0 for iam...
- iam in .terraform/modules/iam
Downloading registry.terraform.io/terraform-aws-modules/iam/aws 4.10.0 for iam_iam-assumable-role...
- iam_iam-assumable-role in .terraform/modules/iam_iam-assumable-role/modules/iam-assumable-role
- network in modules/network

Initializing the backend...

Successfully configured the backend "s3"! Terraform will automatically
use this backend unless the backend configuration changes.

Terraform has made some changes to the provider dependency selections recorded
in the .terraform.lock.hcl file. Review those changes and commit them to your
version control system if they represent changes you intended to make.

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

╷
│ Error: Cross-package move statement
│
│   on .terraform/modules/iam_iam-assumable-role/modules/iam-assumable-role/main.tf line 6, in data "aws_iam_policy_document" "assume_role":
│    6:   count = var.custom_role_trust_policy == "" && var.role_requires_mfa ? 0 : 1
│
│ This statement declares a move from an object declared in external module
│ package
│ "registry.terraform.io/terraform-aws-modules/iam/aws//modules/iam-assumable-role".
│ Move statements can be only within a single module package.
╵
╷
│ Error: Cross-package move statement
│
│   on .terraform/modules/iam_iam-assumable-role/modules/iam-assumable-role/main.tf line 6, in data "aws_iam_policy_document" "assume_role":
│    6:   count = var.custom_role_trust_policy == "" && var.role_requires_mfa ? 0 : 1
│
│ This statement declares a move to an object declared in external module
│ package
│ "registry.terraform.io/terraform-aws-modules/iam/aws//modules/iam-assumable-role".
│ Move statements can be only within a single module package.
╵
╷
│ Error: Cross-package move statement
│
│   on .terraform/modules/iam_iam-assumable-role/modules/iam-assumable-role/main.tf line 35, in data "aws_iam_policy_document" "assume_role_with_mfa":
│   35:   count = var.custom_role_trust_policy == "" && var.role_requires_mfa ? 1 : 0
│
│ This statement declares a move from an object declared in external module
│ package
│ "registry.terraform.io/terraform-aws-modules/iam/aws//modules/iam-assumable-role".
│ Move statements can be only within a single module package.
╵
╷
│ Error: Cross-package move statement
│
│   on .terraform/modules/iam_iam-assumable-role/modules/iam-assumable-role/main.tf line 35, in data "aws_iam_policy_document" "assume_role_with_mfa":
│   35:   count = var.custom_role_trust_policy == "" && var.role_requires_mfa ? 1 : 0
│
│ This statement declares a move to an object declared in external module
│ package
│ "registry.terraform.io/terraform-aws-modules/iam/aws//modules/iam-assumable-role".
│ Move statements can be only within a single module package.
╵

Additional context
Our terraform folder structure looks something like below:
$ tree
.
├── Makefile
├── constants.tf
├── iam_policies
│   ├── alb-ingress-controller.json
│   ├── cluster-autoscaler.json
│   ├── ebs-csi-driver.json
│   ├── external-dns.json
│   └── prometheus-aws-limits-exporter.json
├── iam_sa.tf
├── main.tf
├── modules
│   ├── bastion
│   │   ├── bastion_templates.tf
│   │   ├── host.tf
│   │   ├── output.tf
│   │   ├── sync-users.sh
│   │   └── variables.tf
│   ├── cloudtrail
│   │   └── cloudtrail.tf
│   ├── eks
│   │   ├── eks.tf
│   │   ├── iam.tf
│   │   ├── iam_sa.tf
│   │   ├── output.tf
│   │   ├── templates
│   │   │   └── oidc_assume_role_policy.json
│   │   └── variables.tf
│   └── network
│       ├── constants.tf
│       ├── gateways.tf
│       ├── output.tf
│       ├── peerings.tf
│       ├── route_tables.tf
│       ├── subnets.tf
│       ├── variables.tf
│       ├── vpc.tf
│       └── vpn.tf
└── system-test.tf

Please upgrade Terraform to 1.1.4 where this core issue was fixed. I am pretty sure it is not related to the module itself.
https://github.com/hashicorp/terraform/blob/v1.1/CHANGELOG.md#114-january-19-2022


Use assert_equal not assert_equals

Fix warnings I introduced into some tests.

Pull Request Test Coverage Report for Build 49

12 of 12 (100.0%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 92.634%

Totals

Change from base Build 48:
0.0%

Covered Lines:
1899

Relevant Lines:
2050

💛  - Coveralls


Upgrade deps, fix typescript issues

upgrade ember-changeset deps to fix version conflicts
fix TypeScript errors in compiled output
remove gh-pages publish step, as this addon doesn't have a docs website, yet.

@bakerac4 this particular addon never had a worthwhile demo/docs site, the dummy app is pretty bare bones and ugly. I think we should eventually make a nice demo/doc page for it, but left it out for now to keep spent time down. The gh-pages deploy step was also failing on publish anyway, so just disabled it completely for now.


Invalid object scoping strategy

I found quite tricky behaviour of the DSL regarding scoping of objects. So I made two objects named similarly on different levels.
One object was of person type on system level. Another one was made on component level with the same name.
Once I made a connection between these two objects on container level (the component has the name similar to one on system level) such as:
service = container "Service" "A test container" {
    profile = component "Profile"
    user = component "User"

    profile -> user "Do some stuff"
}

Expected behaviour
I expected that the connection would be rendered between the components within the bounds of the container
Actual behaviour
I saw that the component profile references to user object of person type which was outside of the container's scope
I attached the full snippet which can reproduce the problem:
workspace "HTR" {

    !identifiers hierarchical

    model {
       user = person "User" "A user of the system"
       email = softwareSystem "Email" "An email notification system" {
             service = container "Adapter" "A connector to an external email provider" {
                 profile = component "Profile"
                 user = component "User"

                 profile -> user "Does some stuff"
           }
       }
    }
}

Thanks ... you can now try this on the DSL demo page, where it should be working as expected.


Chunks Stop Loading After a While

after exploring a world with this mod the chunks stop loading and mobs don't move anymore and when I type something in the chat it does nothing and when I exit a world the game stops responding
log:
https://paste.dimdev.org/zutoheroge.md
Other Mods:
https://paste.dimdev.org/ayifozibop.mccrash

I've also had this issue with Dynamic Trees mod in my modpack. It fixed itself only when I removed that mod.

I uninstalled the mod and the server still freezes after a while (takes longer tho)
do you have an idea on what mod or mods that are causing this


Use git+http protocol instead of git+ssh protocol

This avoid the need for requiring ssh authentication required
by github

withdrawn because of inactivity

Is it still valid, if yes maybe should force someone to merge it? (Steven?)
On Tue, 23 Aug 2016 at 5:05 PM Kwok-kuen Cheung<EMAIL_ADDRESS>wrote:

Closed #1 https://github.com/oursky/Redux-Project-Template/pull/1.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/oursky/Redux-Project-Template/pull/1#event-764174811,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AH9k_IhFWRI4zYb4k6xWcflJrSJ8qt1pks5qire9gaJpZM4JJAUB
.


FIX: PIs become contributors when they cease serving

Okay, I think it would be best to have this integrated asap, so people read the most complete possible draft next time around. Merging...