What is the use of StatefulWidget? Just to call createState()?

In the documentation I see that State does almost everything, stores variables, defines methods, builds widgets .
If StatefulWidget is only used to call createState(), why not just let State be a factory class, perhaps renamed WidgetFactory?
class MyWidget extends WidgetFactory {
...
}
StatefulWidget = MyWidget(key?);

I'm not the expert but looking at lifecycle method and the way stateful widgets work. State needs to persist across rebuilds of the current widget tree. Eg:
class OuterWidget extends StatelessWidget {
  const OuterWidget({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return TextFormField(initialValue: 'Initial Value');
  }
}

If the outer widget rebuilds due to some change somewhere. The TextFormField still needs to hold the state that the user has typed out. It does not reset back to initial value. This would not be possible if state objects were directly created. The state object will get attached to the new Widget as long as the keys match.

I'm not the expert but looking at lifecycle method and the way stateful widgets work. State needs to persist across rebuilds of the current widget tree. Eg:
class OuterWidget extends StatelessWidget {
  const OuterWidget({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return TextFormField(initialValue: 'Initial Value');
  }
}

If the outer widget rebuilds due to some change somewhere. The TextFormField still needs to hold the state that the user has typed out. It does not reset back to initial value. This would not be possible if state objects were directly created. The state object will get attached to the new Widget as long as the keys match.

Thank you for your reply !
I don't know much about flutter either.
The link to the document I'm looking at is :  https://flutter.dev/docs/development/ui/interactive
Step 2: Subclass StatefulWidget
class FavoriteWidget extends StatefulWidget {
@override
_FavoriteWidgetState createState() => _FavoriteWidgetState();
}
Step 3: Subclass State
class _FavoriteWidgetState extends State {
bool _isFavorited = true;
int _favoriteCount = 41;
···
}
I know State needs to persist across rebuilds of the current widget tree .
I don't see what FavoriteWidget uses to save the state, because all the variables are in _FavoriteWidgetState .
If this works, then so does creating it directly.
After all, _FavoriteWidgetState has done everything , FavoriteWidget only calls createState() .
My understanding is this.
StatefulWidget = StatelessWidget + State or StatefulWidget = Widget + State
This separates the view and state data.
For example:
class FavoriteWidget extends StatefulWidget {
Widget build(BuildContext context) {
...
}
}
class _FavoriteWidgetState extends State {
bool _isFavorited = true;
int _favoriteCount = 41;
void _toggleFavorite() {
setState(() {
if (_isFavorited) {
...
}
}
But the current situation is that everything is in the State .

The Stateful Widget only creates state if there isn't one. Using the direct state will always create a new object.

https://dart.dev/guides/language/language-tour
"
Factory constructors
Use the factory keyword when implementing a constructor that doesn’t always create a new instance of its class. For example, a factory constructor might return an instance from a cache, or it might return an instance of a subtype
...
"
I think there is a way to avoid always re-creating objects.
But that doesn't seem to be the same thing I'm talking about.

Factory constructor is just a notation. It doesn't return reusable ones. It's upto the programmer to do that.
In addition to that, the question is when to create a new one and when not. If the entire widget tree was removed and then created then it will create. If it was just rebuilt with different parameters it will just attach.

Thank you for discussing this issue with me.  : )

@willvsimple
This issue doesn't seem to describe a bug or a feature request. Please see https://flutter.dev/community for resources.
You may also get some help if you post it on Stack Overflow and if you need help with your code, please see https://www.reddit.com/r/flutterhelp/
Closing, as this isn't an issue with Flutter itself. If you disagree, please write in the comments and I will reopen it.
Thank you


[Feature] Adding Login/sign up page

Description
@CSEdgeOff currently the page is lacking a login/sign up page .I can create a good login/sign up page for this.
Screenshots
No response
Checklist

[X] I have checked the existing issues.
[X] I follow Contributing Guidelines of this project.
[X] I am a GSSoC'24 contributor.
[X] I want to work on this issue.

Code of Conduct

[X] I agree to follow this project's "Code of Conduct".

@vedanshipathak Not needed for our website


add Nl translations to time_of_hour and time_of_day

need to check 'half past {hour}'
because in Dutch we add to the next hour and say
'half 9' in stead of 'half past 8'

There are some more differences between Dutch and English.
minute between { and }refers to the number of minutes after the whole hour eg 45hourrefers to the current hour eg 9 the result of the calculation between the{and}` needs to be converted to text
like in English, we use a 12 hour clock in spoken word

Minutes past
EN
NL
Fitting current setup?

0
{hour} o'clock
{hour} uur
Yes

1
a minute past {hour}
één minuut over {hour}
Yes

2-14
{minute} past {hour}
{minute} over {hour}
Yes

15
quarter past {hour}
kwart over {hour}
Yes

16-29
{minute} past {hour}
{30 - minute} voor half {hour +1)
No

30
half past {hour}
half {hour + 1}
No

31-44
{60 - minute} to {hour + 1}
{minute - 30} over half {hour+1}
No

45
quarter to {hour +1}
kwart voor {hour +1}
Yes

46-58
{60 - minute} to {hour +1}
{60 - minute} voor {hour + 1}
Yes

59
a minute to {hour +1}
één minuut voor {hour +1}
Yes

I will create a new PR where the not supported options can be addressed easy.

Closing in favor of https://github.com/Petro31/easy-time-jinja/commit/125a8a8274485373d7790f1aab76439444744824


Why is <IP_ADDRESS>.1 (5 octets) considered a valid IP address?

UPDATE
😆 It appears that it only checks for the presence of a string.  Apparently donut is a valid IP address.
The only things I can get to fail validation are non-String types, like 5, and false.
I'm finding these in the gem json-fuzz-generator, which I am working on rewriting to use json_schemer instead of json-schema.
Overall the conversion of the test suite was simple, and the specs, post-transition from json-schema to json_schemer, were initially 96% passing!  And for at least three of those tests the test in json-schema was incorrect, while json_schemer validated correctly.
I'm just skipping the things that are not validating properly in json_schemer for now.
NOTE: This tool for time formats is amazing: https://ijmacd.github.io/rfc3339-iso8601/
DETAILS
ip-address
(byebug) schema
{"$schema"=>"http://json-schema.org/draft-04/schema#", "type"=>"object", "properties"=>{"a"=>{"type"=>"string", "format"=>"ip-address"}}}
(byebug) actual
{"a"=>"<IP_ADDRESS>.1"}
(byebug) JSONSchemer.schema(schema).valid?(actual)
true

I have the same question about 1, 2, 3, and 5+ octets, as these all are considered valid, but should not be according to the relevant spec which says it must be 4 octets:

ipv4:
An IPv4 address according to the "dotted-quad" ABNF syntax as defined in RFC 2673, section 3.2

1
1.1
1.1.1
<IP_ADDRESS>.1
<IP_ADDRESS>.<IP_ADDRESS>.<IP_ADDRESS>.1

Additionally, out of range strings are considered valid, e.g.:

<IP_ADDRESS>0

I don't understand this last one as I can see a spec fixture for a similar out of range condition in this repo, and it is marked as invalid.
Also worth noting since I just read about potential for collab with json-schema - this is how they solve the IP Address format issue:
https://github.com/voxpupuli/json-schema/blob/master/lib/json-schema/attributes/formats/ip.rb
Still finding more invalid IPv4 addresses that are considered valid:

<IP_ADDRESS>b
b<IP_ADDRESS>

date-time
... Most of the failures here were errors on the json-schema side, and json_schemer was validating correctly. Exceptions follow:

2010-01-01T12:00:00,1Z is a valid ISO-8601, but not RFC-3339, which is what JSONSchema claims to require.

Hey @pboling—cool to hear about your refactor and things mostly working. Thanks for opening issues for problems you're running into.
Any chance the IP address issue is that you're using ip-address format instead of ipv4?
I've only got my phone until next week so I won't be able to look into anything too deeply. I'll check out the date-time issue when I'm back.

It is definitely using ip-address format, but it is using Draft 4 for all specs.  Perhaps that was a change between Draft 4 and later Drafts/versions.

I think ip-address was removed in draft 4, with ipv4 as a replacement:
Draft 4: https://json-schema.org/draft-04/draft-fge-json-schema-validation-00#rfc.section.7.3.4
Draft 3: https://datatracker.ietf.org/doc/html/draft-zyp-json-schema-03#anchor27
Draft 3 isn't supported by jsonschemer

Yep, you're right.  This is a long dead hold-over that was doing way too much work.  Thanks!  I just found the same here: https://datatracker.ietf.org/doc/html/draft-zyp-json-schema-03

Did you still have concerns about date-time?

I'll make a new issue for that.


Add Feature Search Box to Tree Tag Functionality

It is rather tedious to click every + or - if I have to explore the tree looking for something.

Someone did mention potentially having a search text box to look for tags, but I'm assuming that those that are unfamiliar with the features would like to go through all the options.
And the more experienced familiar users will eventually know which branches they need to go to for their specific tags. I suggest we leave this as it is, as there are currently more pressing matters to iron out before the live release?

Will rename this issue to 'Add search box for to tree tag features', as a request for a future enhancement. This will probably become necessary as the tags are reviewed and more are added.

#158 Tag Tree-esque UI for editing YAML-flavored filtering criteria

This has been implemented, including alternate search terms, e.g. searching for "river" will display the "Bodies of Water" result


Add intellisence for syntax files

Motivation
Instead of referring to documentation when new syntax file should be created intellisence can be used to write new syntax files. Suggestions are standardized, to make it easier to remember what term types to use and when.
ToDo

[x] Suggest top-level keys
[x] Suggest commonly used term types
[x] Some new term types are introduced (they are just suggested, but not enforced to be used):

[x] comment.line
[x] comment.block
[x] constant.number.integer
[x] constant.number.float
[x] constant.number.complex
[x] identifier.callable: for functions and procedures
[x] identifier.type: for classes, interfaces and traits (instead of identifier.class which can be confusing)
[x] identifier.null: for None, nil, null
[x] constant.string.escape: for string escape sequences (instead of constant.specialChar)
[x] constant.string.format: for string format specifiers (instead of constant.specialChar)

Notes
To make completion work in VS Code install this Red Hat extension.
limit-group appearing in ats.yaml is undocumented here. What is it? It's used in the following files:

runtime/syntax/ats.yaml
runtime/syntax/git-commit.yaml
runtime/syntax/html.yaml
runtime/syntax/html.yaml
runtime/syntax/jinja2.yaml
runtime/syntax/vue.yaml
runtime/syntax/vue.yaml
runtime/syntax/vue.yaml

@zyedidia, I guess in the future somebody should bake similar functionality in Micro editor to be able write syntax files with intellisence directly inside Micro.

@zehkira, can u review this PR? ;)

I've put my JSON schema to SchemaStore, so users will be able to benefit of having completions when PR is merged.

@zyedidia, please review this PR.

Closing due to lack of response.


Deferred plugin resolution

Fixes #64

The Coverage strikes back!

:+1:

@lukasniemeier-zalando Can you review the last commit?

:+1:


[FEATURE] add option to rename the key

usually the key is used to acquire the id. for dataExtension fields we added a hack with a secondary field a"new"-suffix (https://github.com/Accenture/sfmc-devtools/wiki/08.-Metadata-specific-settings-&-options#renaming-fields-of-a-data-extensions).
Maybe we can re-use that across the board to allow changing the key based on this.definition.keyField + "_new" inside of the upsert or createOrUpdate method?

Duplicate of #90


Failed method in jobs is not triggered when model is not found

Laravel Version: 6.12.0
PHP Version: 7.4.1
Database Driver & Version: MySQL 5.6

Description:
It seems that whenever you dispatch a delayed job with an eloquent model as argument, and that model gets deleted in between the delayed job & firing, the failed() method is not being triggered.
Steps To Reproduce:
Create TestJob, that accepts argument model User and failed method:
public $user;

/**
 * Create a new job instance.
 *
 * @return void
 */
public function __construct(User $user)
{
    $this->user = $user;
}

/**
 * Execute the job.
 *
 * @return void
 */
public function handle()
{
    dump($this->user->name);
}

public function failed(\Exception $exception)
{
    dump('Did it fail?');
}

dispatch(new TestJob(User::find(1))->delay(now()->addSeconds(15));

After dispatching to the queue, make sure to move the user's ID in database from 1 to 2 (or any other number) within 15 seconds.
The job will fail & recorded in failed_jobs table with:
Illuminate\Database\Eloquent\ModelNotFoundException: No query results for model [App\User]

I'd expected that the failed() method gets triggered and the dump would get outputted, but for some reason it is not.
However, I am not sure if this is intentional behaviour. Let me know if additional info is needed.

I found that setting $deleteWhenMissingModels = true; in my job worked for me. It didn't call failed() as far as I know but it did prevent there from being an exception thrown when the model was missing. https://laravel.com/docs/7.x/queues#ignoring-missing-models


resolve conflict between proxy format: HTTPX and Requests

Fixes #498 and #475, possibly #493 as well.
Description
resolve conflict between proxy format: HTTPX and Requests
The check_proxy use requests, but the proxy is in HTTPX format.
Checklist

[x] Check that the base branch is set to develop and not main.
[x] Ensure that the documentation will be consistent with the code upon merging.
[x] Add a line or a few lines that check the new features added.
[x] Ensure that unit tests pass.
If you don't have a premium proxy, some of the tests will be skipped.
The tests that are run should pass without raising
MaxTriesExceededException or other exceptions.

Thank you for this PR! I don't think this will robustly fix #498 once for all and definitely not #493 . Regardless, this seems like a patch that should go in.


Issue 466: Added min date validation to pickup datepicker in stores page.

Thanks! You have two unrelated commits in there, I'll do a squash merge to get rid of them.

Codecov Report

Merging #517 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #517   +/-   ##
=======================================
  Coverage   98.52%   98.52%
=======================================
  Files         223      223
  Lines        3383     3383
=======================================
  Hits         3333     3333
  Misses         50       50

Impacted Files
Coverage Δ

...p/_pickupEditCreate/pickupEditCreate.controller.js
97.56% <ø> (ø)
:arrow_up:

Continue to review full report at Codecov.

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

Thanks @tiltec, I think you can close the respective issue- 466.


Additional Aggro/Normal Features

Would be good to have the option to flag additional options for each notification window individually.
For example, i would like to use the --blurscreen dialog flag only on the Aggro dialog!
Thanks and keep up the great work!

AdditionalAggressiveOptions is already a feature (Just missing in the documentation),  but specific options for Normal mode is not.
This is easy to implement in my next version, thank you.

This was implemented with v.0.1.10


add two more tests

add tests for:

crowdsecurity/geoip-enrich
crowdsecurity/telnet-bf

please delete empty files

done


Is J2534 the same for all cars?

What kind of cable is needed to read J2534? I'm aware of OBD-II to DB9, OBD-II to DB25, OBD-II to USB, OBD-II to Ethernet.
Also, are there protection methods at play that prevent J2534 over CAN access in the wild?

J2534 is just a communication standard that all vehicle manufactures must follow. J2534 cables provide a DLL that provide an interface to a range of protocols such as CAN, ISO-TP.  This library is an interface to those DLLs.
These cables are typically used for reflashing PCMs or other modules because there are much cheaper alternatives if you just want diagnostics or datalogging.
You can read more about it here http://www.drewtech.com/customers/diagaftmkt.html
The cables are overpriced though. Drewtech sells one for close to $400 and the cheapest one AFAIK is the Tactrix Openport 2.0 at $180.

How does a cable provide a DLL? Can you elaborate on that? I don't fully understand.
https://www.newegg.com/Product/Product.aspx?Item=9SIADTU6650607
Why wouldn't a cable like that be all you need?
On Tactrix's OpenPort 2.0 listing, the say:

Combined with our EcuFlash software, the OpenPort 2.0 is capable of reflashing a large number of newer Subaru and Mitsubishi vehicles, and support for other cars is in progress.

If "J2534 is just a communication standard that all vehicle manufactures must follow", why are there differences per manufacturer? At what layer do you start to see manufacturer protection?

The driver for the PassThru (J2534) device installs a DLL that is used to interface with the device. The SAE J2534 standard specifies the API that the DLL exposes. The functions it exposes can be found here: http://www.drewtech.com/support/passthru.html.
It provides a standard way to reprogram ECUs regardless of the underlying communication protocol. Manufacturers are required to comply with J2534 in their reprogramming software. This is so third parties like independent repair shops only need to have one PassThru device (like the OpenPort 2.0) to reprogram any vehicle.
This page explains it much better than I can: http://www.automotive-technology.co.uk/?p=2547
Unless you're creating tuning software, this probably is not what you are looking for. If you just want a way to communicate with the canbus, there are better cheaper ways. Unfortunately, it doesn't look like there are many rust libraries to communicate with any of those devices (like the bluetooth OBDII scanners). There is a socketcan library for socketcan devices but it only works with Linux.

This is SAE J2534-1, do you have any plans to support SAE J2534-2?

It looks like J2534-2 just adds extra features to J2534-1 for non-emission vehicles. It probably adds a few flags so this library would "support" it. In the future, helper functions might be added.

I'm trying to understand if it is possible to speak directly to a car over J2534 without a passthru device.

J2534 is not a protocol itself, it just specified the standard that PassThru devices must follow. Vehicles do not have any J2534-related code, because J2534 just provides a way to communicate with the vehicle using existing protocols like CAN.

You can not reprogram ECUs just by communicating the the CANBus, correct?

Most ECUs made in the past two decades are programmed through the CAN bus only.

http://shop.dimsport.us/my-genius-handheld-device/
This is a J2534 PassThru device from what I can tell. I guess I had the (very not smart) idea of getting Linux going with a connection from OBD-II to DB25 and reading traffic from there, bypassing the PassThry device. It sounds like I'd be in a world of hurt trying to follow J2534 myself without a PassThru device. Is that correct? It seems the general approach is to just buy a PassThru device and play with it from there.

This is so third parties like independent repair shops only need to have one PassThru device (like the OpenPort 2.0) to reprogram any vehicle.

I don't think this is true though, is it? I don't like OpenPort 2.0 supports BMW/Mercedes/etc?

Can you comment on whether or not this is true to your knowledge?
Thank you for being so knowledgable and friendly.

If the OpenPort does not support those manufacturers, then it is probably because they use their own connector separate from the OBD-II port for reflashing and there are probably other PassThru devices that do support them. It can probably still read/write to the CAN bus, though.
Since you are using Linux, I would recommend using a socketcan device if you want to monitor the can bus. I can personally recommend https://canable.io/ as it is what I use (and I have used it to reprogram my ECU). It does not come with an OBD-II connector though so you have to either connect the CAN high and low to the pins on the OBD-II connector on the car (I connected the wires with tape but it was a pita to keep it from falling out) or you can get an OBD-II like this: https://www.sparkfun.com/products/9911 and solder wires to the can high/low.

Let me get this last detail clear. I apologize for my lack of detailed knowledge on the subject.
J2534 is a standard passthru devices (not vehicles) must follow. It specifies an interface on how a computer can speak to a passthru device.
From there, on a manufacturer specific level, the passthru device then speaks one of these protocols:

SAE J1850 PWM (Pulse Width Modulation)
SAE J1850 VPW (Variable Pulse Width)
ISO 9141-2
ISO 14230 KWP2000 (Keyword Protocol 2000)
ISO 15765 CAN (In either 250 or 500 kbit/s)

over the OBD-II port.
So, if I got a passthru device, I could theoretically sniff the CAN traffic it sends + receives to/from the vehicle to see how it reads/writes an ECU, yeah?
So, I don't need the J2534 standard at all. I need a passthru device and the accompanying software it comes with to interface with the device (which uses J2534), but I need the CAN commands sent.
Does this sound right?

I have used it to reprogram my ECU

Can you give some insight/details on how you used your CANable to reprogram your ECU? Any thoughts on how it compares to this: https://www.tindie.com/products/Muted/canalyze/ ?

J2534 is a standard passthru devices (not vehicles) must follow. It specifies an interface on how a computer can speak to a passthru device.
From there, on a manufacturer specific level, the passthru device then speaks one of these protocols:
...
over the OBD-II port.

Yes

So, if I got a passthru device, I could theoretically sniff the CAN traffic it sends + receives to/from the vehicle to see how it reads/writes an ECU, yeah?
Yes, but it would be easier to use something else (like the canable). Also, J2534 is Windows-only.
So, I don't need the J2534 standard at all. I need a passthru device and the accompanying software it comes with to interface with the device (which uses J2534), but I need the CAN commands sent.
Does this sound right?
Yes.

I have used it to reprogram my ECU

Can you give some insight/details on how you used your CANable to reprogram your ECU? Any thoughts on how it compares to this: https://www.tindie.com/products/Muted/canalyze/ ?

They have the same functionality and both use socketcan. The CANalyze would be easier to connect to the OBD-II port since you can use an OBD-II <-> DB9 cable.
As for reprogramming it, I used a python library like this (I don't remember which one exactly) to send/receive CAN frames. Reprogramming is different for every ECU but in my case it used UDS + some Mazda-specific stuff.

The CANalyze would be easier to connect to the OBD-II port since you can use an OBD-II <-> DB9 cable.

My only fear is not capturing traffic from the OBD-II port on non-CAN pins using an OBD-II <-> DB9 cable. If you check the OBD-II pins (https://en.wikipedia.org/wiki/On-board_diagnostics), do you agree there is a chance some manufacturers could flash over pins that are not captured by a OBD-II <-> DB9 cable, or am I wrong?
Say I have to use the CANable instead, what do I have to do to run pins from the OBD-II ports into the CANable?

Yes, some manufacturers will use protocols other than CAN for reprogramming, but it is uncommon afaik. ECUs use a seed and key algorithm to secure certain services such as reprogramming, so you will not be able to reprogram it just by sniffing the session. You would need to find the algorithm which would require reverse engineering the firmware on the ECU.
This book is a decent intro to car/ECU hacking: http://opengarages.org/handbook/.
For using the CANable, you need to connect the CAN high & low pins on the CANable to the high and low pins on the OBD-II port (which you can see from the pin diagram) with a lead. I used a copper wire and held it onto the port with tape.

What information can you share about the seed/key algorithm process from the perspective of what you went through when flashing your ECU?

Often times there is a timer or a set amount of tries before the seed is reset so brute forcing isn't really an option.
I think the seed is around 8 bytes: https://github.com/LibreTuner/LibreTuner/blob/master/src/udsauthenticator.cpp

Awesome. I was just going to ask if UDS was involved.
How did you figure that out? Did you have the ARM instructions of CPU and you read the assembly? Has anybody ever done like a ECU virtual machine?

Yes, I disassembled the firmware to find the security access subroutines. It uses the SuperH architecture, though. The microcontroller manufacturer (Renesas) has a simulator but I have not had luck using it. You would have to simulate each engine sensor.

How did you acquire the firmware?

Mazda used to have it publicly available.

I see your LibreTuner project (which looks awesome by the way) plans to support RX-8s. Could you give a high level overview on some of the challenges you face in trying to use your current codebase to support RX-8s? What is different?

I built it to be modular so supporting more platforms will be easy. It uses the same download protocol and adding maps is as easy as adding an entry in the definition files. The biggest difference is that the RX-8 uses a wildly different protocol to flash, so the new flash protocol will need to be added. But no changes will need to be made to the codebase, only additions.

The biggest difference is that the RX-8 uses a wildly different protocol to flash

What protocol does it use? Is it CAN or K2000?

Sorry to keep pestering you with questions. Please feel free to not answer. I am just beyond fascinated with your wealth of information.
Can you go a bit more into detail on where that secondary bootloader comes into play?
Ignition is on, OBD-II -> CAN device is connected, start UDS diagnostics session, pass seed/key security mode, go to read/write memory regions and what happens?

Following up on the wealth of information that you are. :)

There is a special UDS service for uploading the secondary bootloader. It is used to upload the bootloader and then boot into it. It contains the routines for receiving the actual program from the CAN bus and flashing it. "Secondary bootloader" is kind of a misnomer because it's just a new program that's uploaded and exeucted instead of the main one stored on flash.

does this support bluetooth yet


Glyph parameter overrides not working

The Override mechanism seems to not be working at all for parameters. Examples:

open PendotL, choose tab with abcdef... and select f
run Pendot Designer
choose Dot Light instance
click Override glyph /f? next to Flex Percent and type 100

Create Preview Master

Nothing changes (even though changing the non-override to 100 results in a change to f - the crossbar is dotted better).
Trying to change other parameters such as Dot Size doesn't work either.

I can't reproduce this; there was a problem where the dot size was not changing (because it simply used the font-wide component, instead of transforming its scale to match the override), but the others seem to work for me.

This exact glyph override seems to work only if you check the override box while editing the Regular master layer. If you follow my exact instructions (which involves only viewing the Pendot Preview master in a tab) then the overide does not get applied. Then if at that point you switch to editing the Regular master, the override is not applied in the live preview:

If you toggle the override box off and on the live preview will properly respect the setting, and the next time you run Create preview master it will update the Pendot Preview master - but only if you've gone back to the Regular layer and toggled the setting.
A further problem is that if you've set overrides (dot size and spacing) while editing the Regular master, then switched to Pendot Preview and Create preview master, the overrides get applied. However if you then (while still looking at the Preview master) remove the override values, untick those two boxes, then run Create preview master again the Preview master is not updated:


Quicksilver is writing excessive amount of data

In the last 8 day Quicksilver has writen 74GB of data, roughly 10 GB of data/day. As a comparison, Safari, my primary web broswer, has writen a total 1.74 GB in that same time period. That's a near 40x difference.
Is there a reason Quicksilver is writing, on average, nearly 10 GB of data of day? Is there some kind of event logging going on? Even with that, nearly 10GB/day seems excessive.

I can’t find where, but another user reported something similar. No obvious cause comes to mind. I have about every plug-in there is enabled and don’t see anywhere near that sort of activity.
Do you have any idea what it’s writing? Are there any clues in Activity Monitor if you “Get Info” for the process and look at Open Files and Ports?

Rob,
Below is a list of my open files. Quicksilver has about 10 MB of files open, not including stuff in the Application directory, Frameworks, Fonts and Graphics. None of the files seem especially big. A couple were around 3-4 mb. I counted decimal points, just to make sure.
I use to be a developer and would be willing to run a debug version if you can think of some sort of trap or bottleneck and if that would help you.
BTW, Quicksilver Bytes Written has gone up by 14 GB in about the last three hours, now at 88 GB bytes written the last 8 days.
Here’s the files currently opened by Quicksilver (*** represents my user directory):
cwd
/
txt
/Applications/Quicksilver.app/Contents/MacOS/Quicksilver
txt
/Applications/Quicksilver.app/Contents/Frameworks/QSFoundation.framework/Versions/A/QSFoundation
txt
/Applications/Quicksilver.app/Contents/Frameworks/QSEffects.framework/Versions/A/QSEffects
txt
/Applications/Quicksilver.app/Contents/Frameworks/QSCore.framework/Versions/A/QSCore
txt
/Applications/Quicksilver.app/Contents/Frameworks/QSInterface.framework/Versions/A/QSInterface
txt
/usr/share/icu/icudt57l.dat
txt
/System/Library/CoreServices/SystemAppearance.bundle/Contents/Resources/AccessibilityAppearance.car
txt
/System/Library/Keyboard Layouts/AppleKeyboardLayouts.bundle/Contents/Resources/AppleKeyboardLayouts-L.dat
txt
/System/Library/CoreServices/Dock.app/Contents/Resources/trashempty.png
txt
/Users//Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSTerminalPlugIn.139.qsplugin/Contents/MacOS/Terminal Plugin
txt
/Applications/Quicksilver.app/Contents/Resources/defaultAction.icns
txt
/Users//Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.Cyberduck.39.qsplugin/Contents/MacOS/Cyberduck Plugin
txt
/System/Library/CoreServices/SystemAppearance.bundle/Contents/Resources/SystemAppearance.car
txt
/System/Library/CoreServices/SystemAppearance.bundle/Contents/Resources/Assets.car
txt
/Users//Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSSafariPlugIn.137.qsplugin/Contents/MacOS/Safari Plugin
txt
/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Resources/HIToolbox.rsrc
txt
/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Resources/English.lproj/Localized.rsrc
txt
/Users//Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSAppleMailPlugIn.11D.qsplugin/Contents/MacOS/Apple Mail Plugin
txt
/Users//Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSClipboardPlugIn.110.qsplugin/Contents/MacOS/Clipboard Plugin
txt
/Users//Library/Application Support/Quicksilver/PlugIns/com.robertson.Quicksilver.OnePassword.347.qsplugin/Contents/MacOS/OnePassword
txt
/Users//Library/Application Support/Quicksilver/PlugIns/com.robertson.Quicksilver.OnePassword.347.qsplugin/Contents/Frameworks/YAJL.framework/Versions/A/YAJL
txt
/Users//Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSServicesMenuPlugIn.DE.qsplugin/Contents/MacOS/Services Menu Plugin
txt
/Applications/Quicksilver.app/Contents/PlugIns/Core Support.qsplugin/Contents/MacOS/Core Support
txt
/Applications/Quicksilver.app/Contents/Resources/QSLigature.png
txt
/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/Libraries/libCGInterfaces.dylib
txt
/System/Library/Components/AppleScript.component/Contents/MacOS/AppleScript
txt
/Applications/Quicksilver.app/Contents/PlugIns/Keyboard Triggers.qsplugin/Contents/MacOS/Keyboard Triggers
txt
/Applications/Quicksilver.app/Contents/PlugIns/Primer Interface.qsplugin/Contents/MacOS/Primer Interface
txt
/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Resources/Extras2.rsrc
txt
/Applications/Quicksilver.app/Contents/Resources/Button-GearMenu.tiff
txt
/System/Library/Fonts/Helvetica.dfont
txt
/Applications/Quicksilver.app/Contents/Resources/Action.png
txt
/System/Library/Fonts/SFNSText.ttf
txt
/private/var/folders/2p/s8t6_zfx4ml1knzxcsn2zhmh0000gr/0/com.apple.LaunchServices-175-v2.csstore
txt
/System/Library/PrivateFrameworks/AppleScript.framework/Versions/A/AppleScript
txt
/usr/lib/dyld
0
/dev/null
1
/dev/null
2
/dev/null
3
count=0, state=0xa
4
/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Resources/HIToolbox.rsrc
5
/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Resources/English.lproj/Localized.rsrc
6
/Applications
7
/Applications/Utilities
8
/Users//Library/Safari/Bookmarks.plist
9
/Users//Library/Safari/History.plist
10
/Users/***
11
/Users//Downloads
12
/Users//Documents
13
/Users/***/Desktop
14
/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Resources/Extras2.rsrc

On Nov 4, 2016, at 9:48 AM, Rob McBroom<EMAIL_ADDRESS>wrote:
I can’t find where, but another user reported something similar. No obvious cause comes to mind. I have about every plug-in there is enabled and don’t see anywhere near that sort of activity.
Do you have any idea what it’s writing? Are there any clues in Activity Monitor if you “Get Info” for the process and look at Open Files and Ports?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub https://github.com/quicksilver/Quicksilver/issues/2286#issuecomment-258485110, or mute the thread https://github.com/notifications/unsubscribe-auth/AC2xY1s3G_sIZqpfwS81tQWfx5XHBOayks5q62HCgaJpZM4KpueS.

Here’s a long shot. There was a bug for a while that led to ~/Library/Application Support/Quicksilver/Triggers.plist getting really bloated. For example, mine is 55kB now that it’s fixed, but was closer to 10MB before. This file shouldn’t get re-written unless you’re in the preferences, but it’s all I can think of.
How big is that file on your system?

Additional info from a recent mailing list post…
Off the top of my head, these are the things Quicksilver would potentially write:

Its own preference files in ~/Library/Application Support/Quicksilver
Clipboard history (if you’ve enabled “Keep history when restarting”)
Catalog indexes in ~/Library/Caches/Quicksilver/Indexes

There are some catalog entries that update frequently, but I think most of those are flagged as “can’t be indexed” so they shouldn’t be writing anything.
Maybe try keeping a Finder window open on one or more of those locations, sorted by date modified, and see if you notice anything odd?

Rob,
Mine what 9k and hadn’t been touched since Jan. 25 2016. Strange. I must be happy with my setup.
Kindest Regards,
Stephen Magladry
• • • • • • • • • • • • • • • • • •
Stephen Magladry
iTechieGuy.com
206 369 3606
Twitter: iTecheGuy http://twitter.com/iTechieGuy
Email<EMAIL_ADDRESS>LinkedIn: Profile http://www.linkedin.com/pub/stephen-magladry/29/401/71b

On Nov 23, 2016, at 6:02 AM, Rob McBroom<EMAIL_ADDRESS>wrote:
Here’s a long shot. There was a bug for a while that led to ~/Library/Application Support/Quicksilver/Triggers.plist getting really bloated. For example, mine is 55kB now that it’s fixed, but was closer to 10MB before. This file shouldn’t get re-written unless you’re in the preferences, but it’s all I can think of.
How big is that file on your system?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub https://github.com/quicksilver/Quicksilver/issues/2286#issuecomment-262520011, or mute the thread https://github.com/notifications/unsubscribe-auth/AC2xYxQEqd53HdZ0BzH5X0aAxW8yrv-dks5rBEdzgaJpZM4KpueS.

Rob,
My ~/Library/Application Support/Quicksilver folder is 7.1 MB in size and was last touched on Nov. 7.
My QuickSilver Indexes folder is about 7 MB with the largest file being QSPresetRunningProcesses.qsindex weighing in at 2.7 MB.
Shooting in the dark…could it be a case of write/delete write/delete write/delete write/delete… That could allow for the write sizes to get huge but file sizes stay at normal sizes.
• • • • • • • • • • • • • • • • • •
Stephen Magladry
iTechieGuy.com
206 369 3606
Twitter: iTecheGuy http://twitter.com/iTechieGuy
Email<EMAIL_ADDRESS>LinkedIn: Profile http://www.linkedin.com/pub/stephen-magladry/29/401/71b

On Nov 23, 2016, at 6:13 AM, Rob McBroom<EMAIL_ADDRESS>wrote:
Additional info from a recent mailing list post…
Off the top of my head, these are the things Quicksilver would potentially write:
Its own preference files in ~/Library/Application Support/Quicksilver
Clipboard history (if you’ve enabled “Keep history when restarting”)
Catalog indexes in ~/Library/Caches/Quicksilver/Indexes
There are some catalog entries that update frequently, but I think most of those are flagged as “can’t be indexed” so they shouldn’t be writing anything.
Maybe try keeping a Finder window open on one or more of those locations, sorted by date modified, and see if you notice anything odd?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub https://github.com/quicksilver/Quicksilver/issues/2286#issuecomment-262522629, or mute the thread https://github.com/notifications/unsubscribe-auth/AC2xY0HTcGuklfWjyk-tJmcW2jThe6aZks5rBEnygaJpZM4KpueS.

Maybe you could try to monitor disk use using Instruments. I don't know if that would give you any useful infromation, but it might be worth a try.

I’d be more that willing to help you to hopefully find this craziness. It is the Thanksgiving weekend, so I don’t know how much time in the real near future. I’ll also have to reinstall xCode. I had to delete that awhile back to regain some disk space. Knowing this the be a short term project (hopefully ;:^) ), will lessen the blow.
• • • • • • • • • • • • • • • • • •
Stephen Magladry
iTechieGuy.com
206 369 3606
Twitter: iTecheGuy http://twitter.com/iTechieGuy
Email<EMAIL_ADDRESS>LinkedIn: Profile http://www.linkedin.com/pub/stephen-magladry/29/401/71b

On Nov 23, 2016, at 6:56 AM, Henning Jungkurth<EMAIL_ADDRESS>wrote:
Maybe you could try to monitor disk use using Instruments https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/MeasuringIO.html#//apple_ref/doc/uid/TP40004652-CH83-SW6. I don't know if that would give you any useful infromation, but it might be worth a try.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub https://github.com/quicksilver/Quicksilver/issues/2286#issuecomment-262535805, or mute the thread https://github.com/notifications/unsubscribe-auth/AC2xY_fq6mpqqQ696UgSywM5qQaiZcGNks5rBFQTgaJpZM4KpueS.

Okay, it didn’t take as much time as I expected.
I bet matching Instrumented app to the code might be important. If it does, I'm running 1.4.1 (1419).
My hope is there some leaks along the way as opposed to periodic blowouts. Here is about a minute of file instrumentation on Quicksilver with Quicksilver running in the background. Here’s a link to the file, https://www.dropbox.com/sh/pqpurncu0xtl8ne/AABChwdKRZsn_PqY1FpAFgRba?dl=0 https://www.dropbox.com/sh/pqpurncu0xtl8ne/AABChwdKRZsn_PqY1FpAFgRba?dl=0.
Let me know if I can help in any other way in tracking this problem down.
• • • • • • • • • • • • • • • • • •
Stephen Magladry
iTechieGuy.com
206 369 3606
Twitter: iTecheGuy http://twitter.com/iTechieGuy
Email<EMAIL_ADDRESS>LinkedIn: Profile http://www.linkedin.com/pub/stephen-magladry/29/401/71b

On Nov 23, 2016, at 6:56 AM, Henning Jungkurth<EMAIL_ADDRESS>wrote:
Maybe you could try to monitor disk use using Instruments https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/MeasuringIO.html#//apple_ref/doc/uid/TP40004652-CH83-SW6. I don't know if that would give you any useful infromation, but it might be worth a try.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub https://github.com/quicksilver/Quicksilver/issues/2286#issuecomment-262535805, or mute the thread https://github.com/notifications/unsubscribe-auth/AC2xY_fq6mpqqQ696UgSywM5qQaiZcGNks5rBFQTgaJpZM4KpueS.

I’m not sure if you follow the mailing list, but a user there reports that the Chrome plug-in was to blame in his case. It doesn’t look like you’re using that, though.
I looked at the Instruments file and there weren’t many writes, but every one of them was nearly 3MB to files like ~/Library/Caches/Quicksilver/Indexes/.dat.nosync0303.Ex8ZZI. I’m not sure what that could be from yet. (I have no such files.)

I’m currently only running 11 plugins. Hopefully, a little later on today, I turnoff a plugin at a time to see If I  can narrow exactly which one of my plugins are misbehaving.
I currently have:
1Password	V. 2.6.5
Apple Mail	V. 3.0.0
Automator	V. 1.2.1
Calendar		V. 1.1.2
Clipboard		V. 1.2.1
Contact		V. 2.1.0
Cyberduck	V. 2.1.0
Email		V. 2.0.0
Safari		V.2.1.5
Service Menu	V .1.3.0
Terminal		V. 2.2.2
[mostly in jest] Sure would be nice to automaticly check to see in plugins were up to date. Perhaps that could be a feature for QuickSilver 4.0. [/mostly in jest]
• • • • • • • • • • • • • • • • • •
Stephen Magladry
iTechieGuy.com
206 369 3606
Twitter: iTecheGuy http://twitter.com/iTechieGuy
Email<EMAIL_ADDRESS>LinkedIn: Profile http://www.linkedin.com/pub/stephen-magladry/29/401/71b

On Dec 5, 2016, at 5:15 AM, Rob McBroom<EMAIL_ADDRESS>wrote:
I’m not sure if you follow the mailing list, but a user there reports that the Chrome plug-in was to blame in his case. It doesn’t look like you’re using that, though.
I looked at the Instruments file and there weren’t many writes, but every one of them was nearly 3MB to files like ~/Library/Caches/Quicksilver/Indexes/.dat.nosync0303.Ex8ZZI. I’m not sure what that could be from yet. (I have no such files.)
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub https://github.com/quicksilver/Quicksilver/issues/2286#issuecomment-264851032, or mute the thread https://github.com/notifications/unsubscribe-auth/AC2xY3FFizujpOrG-fY799FSrVt5S1vVks5rFA5_gaJpZM4KpueS.

It seems to come from the history. I'm poking at it using opensnoop/iosnoop (which requires SIP to be disabled) and from time to time, iosnoop prints a bunch of lines about a History file somewhere. More snooping (pun intended), here is one (likely differs by machine though) :
-rw-r--r--@ 1 tiennou  staff   109M  5 déc 20:10 /var/folders/f4/b3wl780s12gfc25kpvl1rhk40000gn/T/History

Relevant iosnoop output, for one "occurrence" (creating a Chrome tab, searching for "test"):
2016 Dec  5 20:17:41 ??        1   4   501  1395 W 142438816  65536 ??/Indexes/.dat.nosync0573.16AFPm Quicksilver\0
2016 Dec  5 20:17:41 ??        1   4   501  1395 W 142438944  40960 ??/Indexes/.dat.nosync0573.4atugO Quicksilver\0
2016 Dec  5 20:17:42 ??        1   4   501  1395 W 142439496  65536 ??/Indexes/.dat.nosync0573.0DTTI3 Quicksilver\0
2016 Dec  5 20:17:42 ??        1   4   501  1395 W 142440304  40960 ??/Indexes/.dat.nosync0573.XESlpt Quicksilver\0
2016 Dec  5 20:17:42 ??        1   4   501  1395 W 142443464  65536 ??/Indexes/.dat.nosync0573.jYk0ru Quicksilver\0
2016 Dec  5 20:17:43 ??        1   4   501  1395 W 161896488  65536 ??/Indexes/.dat.nosync0573.XjHy7U Quicksilver\0
2016 Dec  5 20:17:44 ??        1   4   501  1395 W 161896784  40960 ??/Indexes/.dat.nosync0573.2uK0WJ Quicksilver\0
2016 Dec  5 20:17:52 ??        1   4   501  1395 R 488223488  98304           ??/Default/History Quicksilver\0
2016 Dec  5 20:17:52 ??        1   4   501  1395 R 488223680 1048576           ??/Default/History Quicksilver\0
2016 Dec  5 20:17:52 ??        1   4   501  1395 R 488225728 1048576           ??/Default/History Quicksilver\0
2016 Dec  5 20:17:52 ??        1   4   501  1395 R 488227776  49152           ??/Default/History Quicksilver\0
2016 Dec  5 20:17:52 ??        1   4   501  1395 R 488227888 991232           ??/Default/History Quicksilver\0
2016 Dec  5 20:17:52 ??        1   4   501  1395 R 488229824 1048576           ??/Default/History Quicksilver\0
[snip about 500 lines]
2016 Dec  5 20:17:53 ??        1   4   501  1395 W 924226832 1048576                 ??/T/History Quicksilver\0
2016 Dec  5 20:17:53 ??        1   4   501  1395 W 924228880 1048576                 ??/T/History Quicksilver\0
2016 Dec  5 20:17:53 ??        1   4   501  1395 W 924230928 1048576                 ??/T/History Quicksilver\0
2016 Dec  5 20:17:53 ??        1   4   501  1395 W 924232976 1048576                 ??/T/History Quicksilver\0
2016 Dec  5 20:17:53 ??        1   4   501  1395 W 924235024 1048576                 ??/T/History Quicksilver\0
2016 Dec  5 20:17:53 ??        1   4   501  1395 W 924237072 1048576                 ??/T/History Quicksilver\0

I have not been able to pinpoint the Default/History file. Oh wait, that's a Read, and I'm pretty sure that's from the Chrome App Support dir.
The T/History one is a mystery though. Are we in some way copying that file in our temporary directory ??

The .dat.nosync* files are caused by the atomically: flag of some write methods. I can seem them in the opensnoop output, but they're "alone" — I can't see the actual rename step, even while snooping every process and grepping on ~/Library/Caches/Quicksilver, so I don't know which catalog entry does this...

As for which catalog entry does this, I think the answer is “all of them”. (Individual entries aren’t responsible for managing the indexes on disk.)
https://github.com/quicksilver/Quicksilver/blob/master/Quicksilver/Code-QuickStepCore/QSCatalogEntry.m#L558
I wonder which one has a 3MB index and is getting frequently rewritten, though. @iTechieGuy, could you run this in Terminal?
du -sk ~/Library/Caches/Quicksilver/Indexes/* | sort -n

The larger files will be at the bottom.

Sure would be nice to automaticly check to see in plugins were up to date.

When it checks for application updates, it also checks for new plug-ins. You won’t necessarily see the latest plug-ins, but you’ll see the latest for your version of QS and macOS. You can also manually check by looking at the “Installed Version” and “Latest Version” in the info drawer for a plug-in.
(Also, 1.4.2 is the latest official release of the main application, though I don’t think there are any plug-ins that require a newer version than 1.4.1.)

Sorry for the modest delay, It looks like I forgot to hit send.
Most, no, I take that back. All were behaving imho. Here’s all the indexes larger than 1/2 meg.
512	/Users//Library/Caches/Quicksilver/Indexes/QSPresetAddressBook.qsindex
548	/Users//Library/Caches/Quicksilver/Indexes/QSPresetAllApplications.qsindex
616	/Users//Library/Caches/Quicksilver/Indexes/QSPresetSafariHistory.qsindex
952	/Users//Library/Caches/Quicksilver/Indexes/QSPresetRunningProcesses.qsindex
2140	/Users/***/Library/Caches/Quicksilver/Indexes/QSPresetSafariBookmarks.qsindex
• • • • • • • • • • • • • • • • • •
Stephen Magladry
iTechieGuy.com
206 369 3606
Twitter: iTecheGuy http://twitter.com/iTechieGuy
Email<EMAIL_ADDRESS>LinkedIn: Profile http://www.linkedin.com/pub/stephen-magladry/29/401/71b

On Dec 5, 2016, at 1:12 PM, Rob McBroom<EMAIL_ADDRESS>wrote:
As for which catalog entry does this, I think the answer is “all of them”. (Individual entries aren’t responsible for managing the indexes on disk.)
https://github.com/quicksilver/Quicksilver/blob/master/Quicksilver/Code-QuickStepCore/QSCatalogEntry.m#L558 https://github.com/quicksilver/Quicksilver/blob/master/Quicksilver/Code-QuickStepCore/QSCatalogEntry.m#L558
I wonder which one has a 3MB index and is getting frequently rewritten, though. @iTechieGuy https://github.com/iTechieGuy, could you run this in Terminal?
du -sk ~/Library/Caches/Quicksilver/Indexes/* | sort -n
The larger files will be at the bottom.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub https://github.com/quicksilver/Quicksilver/issues/2286#issuecomment-264978830, or mute the thread https://github.com/notifications/unsubscribe-auth/AC2xY7fNsWhb0aCL3W1jYChpV64p-dV3ks5rFH5OgaJpZM4KpueS.

By no action on my parts, since I have made no changes to Quicksilver or plugins the leak that I had experienced has been plugged.  Disk writes have returned to usual and expected ranges.
BTW, I was just poking around Activity Monitor and noticed that it has sampling capabilities build it. All one has to do is select the process, click on the Gear Menu and choose Sample Process. If the results of this are similar enough to what xCode produces, someone would not have to install xCode in order to preform a sample.
Thanks for all your help, both on this problem and the project as a whole,
Stephen Magladry
• • • • • • • • • • • • • • • • • •
Stephen Magladry
iTechieGuy.com
206 369 3606
Twitter: iTecheGuy http://twitter.com/iTechieGuy
Email<EMAIL_ADDRESS>LinkedIn: Profile http://www.linkedin.com/pub/stephen-magladry/29/401/71b

On Dec 5, 2016, at 1:20 PM, Rob McBroom<EMAIL_ADDRESS>wrote:
Sure would be nice to automaticly check to see in plugins were up to date.
When it checks for application updates, it also checks for new plug-ins. You won’t necessarily see the latest plug-ins, but you’ll see the latest for your version of QS and macOS. You can also manually check by looking at the “Installed Version” and “Latest Version” in the info drawer for a plug-in.
(Also, 1.4.2 is the latest official release of the main application, though I don’t think there are any plug-ins that require a newer version than 1.4.1.)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub https://github.com/quicksilver/Quicksilver/issues/2286#issuecomment-264980802, or mute the thread https://github.com/notifications/unsubscribe-auth/AC2xY2i5pSro4t3R8-CQrRVYc1a1yCB7ks5rFIA7gaJpZM4KpueS.

I see this behavior for several days now:


As an admin, I want the Works title field measured in text limit not character limit and subtitles in a separate field so that I can include full title and subtitle of Works

Pause on this until JK approves


Prevent database generated columns from being inserted.

[IgnoreAttribute] is great at preventing database generated columns from being added to the insert list but it prevents the column from populated during a Get and irt appears [DatabaseGenerated(DatabaseGeneratedOption.Identity)] is not recognised.
How can I work around this?

I was looking for a solution like this as well. +1

Not sure whether this can help you, but you can use Dapper.Contrib, which has an Insert method and you can use attributes ([Key], [Computed]...) that will prevent properties to be added to the insert query (it also works for update queries).
I've realized that the query builder lacks some of the features I need, but with the QueryFactory  you can get the IDbConnection and then use any of the Dapper methods.

@abravodev Yes Dapper.Contrib has a Key attribute to decorate your POCOs properties as a column whose value is generated by the database, however I noticed that SqlKata too has a [Key] attribute. I thought it would work the same as Dapper's but it didn't. Do you know what is SqlKata [Key] attribute for?

@grounzero  and @abravodev, I decorated my POCO with the [Ignore] SqlKata key attribute and it worked for insertions, SqlKata no longer includes the decorated column in the INSERT statement, but it includes it in SELECT statements, so it works for me.

The [Key] and the [Ignore] attributes prevent the columns from being inserted/updated in the insert/update query, and they don't do anything more than that.
The select query is not affected at all.


misc/docker/release: improve tools for named/numbered release

misc/docker/release was primarily designed to make monthly releases. I need to modify it so it can work as well for numbered releases (among other things).

https://camlistore-review.googlesource.com/#/c/camlistore/+/16246


nuxtServerInit or something without vuex?

Hi what is the best way to make something similiar to nuxtServerInit but without vuex?
i have this scenario
on the first hit i want to build as example Footer / Header menu etc.. is there a way without vuex and nuxtServerInit something like fetch data in the layout and fill the component around or something??
i searched but cant find any or just dont know how to search xD

asyncData I suppose

@bovas85  sure but they are page based  i dont want to add footer stuff menu what ever on every request

Sorry I didn't get what you said there, can you explain?

i just want something like nuxtServerInit without vuex
https://nuxtjs.org/guide/vuex-store#the-nuxtserverinit-action
because my project is too small for vuex i just want to load some dynamic stuff in my footer which is in a layout file

then inside your footer component just add asyncData and return that data

thx
no this is not an option asyncData is called every time before loading the component (only for page components).
and anyway i have Header and Footer and i dont want make 2 Request for this... i want something like nuxtServerInit just without vuex

Well then you need Vuex :)
Otherwise you need a single component that you only load once (ideally navbar or similar) that will take care of fetching the data in asyncData.
It's true asyncData runs on every routeChanged, but you can always check if you filled that data first before running the API call again

You could make your layout a page and have the contents be Nested Pages. :v

is there a way without vuex and nuxtServerInit something like fetch data in the layout and fill the component around or something??

You could work directly with localStorage.

yea i switched to nuxtServerInit :P


CUPS queues emulate IPP Everywhere printers: Not all details of the PPD file made available as IPP attributes

The PPD API of CUPS is deprecated, in favor of the fact that CUPS queues emulate IPP Everywhere printers and all printer capabilities and options could be polled via IPP. This was recently discussed on the CUPS mailing list, thread "PPD API: Status, future and alternatives to handle printer-specific options". So I have done some tests and found some problems, not only the one described here but also Issue #4951 and Issue #4950.
I have a CUPS queue for my HP Deskjet Ink Advantage 2645 All-in-one set up with HPLIP with the attached PPD file.
When I treat this CUPS queue as an IPP Everywhere printer and poll its capabilities via IPP with this command (output file attached)
ipptool -tv ipp://till-x1carbon.local:631/printers/printer get-printer-attributes.test > ../cups-queue-hp-clj-cm3530.txt
I get some discrepancies between the options in the PPD file (which the current print dialogs would use) and the options in the IPP record (which a future print dialog would use).
For example the PPD allows setting several print quality levels with different resolutions and the IPP record only tells about a resolution of 300 dpi.

IPP get-printer-attributes record of the print queue:
cups-queue-hp-dj-ia-2645-aio.txt
Original PPD file of the queue:
printer1.ppd.txt

Understand there is a difference between printer drivers, document formats, and what a printer will support.
Drivers generate printer raster data at various resolutions, however printers consume PWG raster documents at (typically) lower resolutions that are then dithered internally at a higher resolution. So for example a printer that does 1200x600dpi might only accept 300dpi PWG Raster data and internally will dither the 300dpi at 1200x600dpi.
The resolution the printer uses can be controlled by the printer-resolution attribute and/or by the print-quality attribute - the latter is the approach we have chosen to support for CUPS since a) we have no way to convey the printer and document resolution separately and b) exposing 3 print qualities is more user-friendly than exposing 3 print qualities AND N print resolutions.
So while we definitely want to ensure that we expose all of the print qualities supported by the printer, we have no interest in separately exposing all of the printer resolutions that are supported.


Website size

Hi, Your site page does not fit the size of a phone

Hey thanks for reporting this bug, It has been corrected


Update gem versions, rubocop configuration plus minor changes

Summary

Ruby is updated to version 2.6.4
Rubocop is upgraded and more rubocop extensions are added
therubyracer is replaced with replaced with mini_racer as therubyracer no longer seems to work.
rails-erd is added (used to generate ER diagrams)
test-prof is added
rails_helper.rb is modified so when the PRINT_SQL environment variable is defined, database operations will be logged to stdout when testing.

Most of these changes have been included in other PRs or merged already.


fix: Prevent StackOverFlowException in SHARED subscription

(If this PR fixes a github issue, please add Fixes #<xyz>.)
Fixes #16074
(or if this PR is one task of a github issue, please add Master Issue: #<xyz> to link to the master issue.)
Master Issue: #
Motivation
Explain here the context, and why you're making that change. What is the problem you're trying to solve.
Modifications
Describe the modifications you've done.
Verifying this change

[ ] Make sure that the change passes the CI checks.

(Please pick either of the following options)
This change is a trivial rework / code cleanup without any test coverage.
(or)
This change is already covered by existing tests, such as (please describe tests).
(or)
This change added tests and can be verified as follows:
(example:)

Added integration tests for end-to-end deployment with large payloads (10MB)
Extended integration test for recovery after broker failure

Does this pull request potentially affect one of the following parts:
If yes was chosen, please highlight the changes

Dependencies (does it add or upgrade a dependency): (yes / no)
The public API: (yes / no)
The schema: (yes / no / don't know)
The default values of configurations: (yes / no)
The wire protocol: (yes / no)
The rest endpoints: (yes / no)
The admin cli options: (yes / no)
Anything that affects deployment: (yes / no / don't know)

Documentation
Check the box below or label this PR directly.
Need to update docs?

[ ] doc-required
(Your PR needs to update docs and you will update later)

[ ] doc-not-needed
(Please explain why)

[ ] doc
(Your PR contains doc changes)

[ ] doc-complete
(Docs have been already added)

Could you provide more analysis about how does it happen?

#16074

if depth is exceeded,  we dispatch it to another thread,maybe it will fail again in another thread.
maybe we should abort the invoke when reaching up to the max depth?

Could you provide more analysis about how does it happen?

we found this in our production env. when all consumers disconnected, and then connect again, it may occur.

I found a similar fix just now, see https://github.com/apache/pulsar/pull/14121. Could you also share your point on this PR? @eolivelli
Actually I'm a little confused in which case should readMoreEntries be called in BrokerService's executor. /cc @lhotari

Since it takes a long time and the code differences are too large, I will close this PR.


Add a file extension based on Content-Type header for files that have it

Issue: CAP-1204
What Changed
This does three things:

Adds playwright tests for complete "E2E" testing of the test-archiver.
Refactors the mapping of source files to destination files into a class called the SourceMapper, which follows a builder pattern.
Fixes an issue where directories and files can have the same name by making files that are sent with a Content-Type header have a file extension.

How to test
There are two ways:

Run yarn test:playwright and verify everything passes.
Reproduce the steps in https://linear.app/chromaui/issue/CAP-1204/eisdir-illegal-operation-on-a-directory and verify that they pass.

Change Type

[ ] maintenance
[ ] documentation
[x] patch
[ ] minor
[ ] major

📦 Published PR as canary version: 0.0.31--canary.27.3c12abd.0

:sparkles: Test out this PR locally via:
npm install<EMAIL_ADDRESS># or
yarn add<EMAIL_ADDRESS>

:rocket: PR was released in v0.0.31 :rocket:


Intermittent test failure

thread 'thread 'tokio-runtime-worker' panicked at 'assertion failed: (left == right)
left: Ok(()),
right: Err((1309, 1309))', src/tests/correctness.rs:196:21
test tests::correctness::hashmap_test::hashmap_retain_for_each ... FAILED

Regression: from 0.8.0


Added empty GraphController class file.

Testing pull request from local machine with new branch and file. )))

Checks have passed closing.


fix the anchor tag without href is not detected

This fix the problem that Flexible mink can't detect anchor tag <a> when there is no href in the attribute.

:force code review

!force code review

Paging @RedEnchilada to review the testing work in this pull request!
Paging @goodevilgenius to review the back-end work in this pull request!
Paging @TaysirTayyab to review the front-end work in this pull request!

@RedEnchilada it is already added in this test
https://github.com/johnnie502/FlexibleMink/blob/453322e037604c7fe174c8133e25e8252b4b425a/features/FlexibleContext/assertLinkVisible.feature#L10

@johnnie502 I was referring to a test to click the link, since it seems like that was why you made this change to begin with.

@RedEnchilada I see, I was assuming that the clicking is guaranteed if it is visible. My bad, adding it now.

@RedEnchilada your concern is valid, I've added the click test to the branch.

front-end review passed 368011d 👍


[Bug]: Issue with evaluation of pageSize with list v1 on reload

Is there an existing issue for this?

[X] I have searched the existing issues

Description
https://www.loom.com/share/bf95456e9b064835895eaede04daa4cf
Steps To Reproduce

Dnd a List widget
Dnd a text widget and bind it with List page size to check the exact page size.
Move to another page say Postgres Query and add binding {{List1.pageSize}}
refresh the page and check the results in the query (You will see pageSize is coming as 2 instead of 3) but in the main canvas the pageSize is coming as 3 only
For more details check LOOM

Public Sample App
No response
Issue video log
No response
Version
Production

@ashit-rath @Tooluloope please triage this in the current sprint and let me know if it's happening in v2

@dilippitchika This is a v1 issue and we created this for tracking regression for v2. This does not happen in v2

@ashit-rath got it, then can you link this in v2 bugs which will close once it goes live?


windows: fix WAL lock

@chai2010 said there is a windows file locker (not include TryLock):
https://code.google.com/p/leveldb-go/source/browse/leveldb/db/file_lock_windows.go
We need someone to write, test and maintain the lock code for Windows. Right now it is a no-op in pkg/fileutil/lock_windows.go.
/cc @AndyPook @rwindelz @chai2010 @fceller

The code in
https://code.google.com/p/leveldb-go/source/browse/leveldb/db/file_lock_windows.go
indeed works. The default "share" mode for CreateFile is "share nothing". Therefore the file is locked by default when created.

@fceller Kindly ping. Are you still interested in working on this one?

Unfortunately we are focused on Linux at the moment. Therefore I'm afraid I cannot at work on this in the next months - as much as I would like to do it.

@xiang90 @fceller I did some simple test, it indeed works.

I think related Windows code is not open, so it seems hard to implement the fileutil.Lock interface correctly:

LockFile is open, and there are many Go implementation of this.
UnlockFile source code is not open. And there's no implementation of this in other languages either.

@gyuho we could probably roll our own UnlockFile; it's just a system call...

@heyitsanthony Ok, I will research more about syscall flags. Thanks!

https://github.com/coreos/etcd/pull/4719 has flock implementation in Windows. I believe the implementation is correct, but because of the way we use flock in other OSes, it won't work when it's used with other packages:

Opening a file in Windows locks the file exclusively to the file descriptor that it opened with. Even with the syscall.FILE_SHARE_READ|syscall.FILE_SHARE_WRITE flags, the file access cannot be shared with other functions. Please see the second answer http://stackoverflow.com/questions/3560651/whats-the-least-invasive-way-to-read-a-locked-file-in-c-sharp-perhaps-in-unsaf.
fileutil.NewLock acquires the lock, but it can only be deleted by outside functions. Any function trying to read or write without fileutil.NewLock will fail. Which means wal package is not going to work.

So I think, without changing the whole interface of pkg/fileutil and wal, flock won't work in windows.
And there are other disadvantages in running Windows, like boltdb options https://github.com/coreos/etcd/blob/master/storage/backend/boltoption_windows.go. Both are important features but missing in windows platform.
We should explain this in README or print out warning messages when building.
Any thoughts? /cc @xiang90 @heyitsanthony
Thanks.

It looks like the Lock stuff needs to be refactored anyway (e.g., the same interface is copied across the per-platform files-- yuck). Only WAL seems to use it, so I don't think it'd be too disruptive to change the way flocks are exposed. I was thinking something like:
type Lock interface {
// Name gives the name of the file for locking
Name() string
// TryLock attempts to open a file with exclusive access; fails if already locked.
TryLock() (*os.File, error)
// Lock opens a file with exclusive access
Lock() (*os.File, error)
// Unlock releases the lock and closes the associated file
Unlock() error
}

@heyitsanthony Thanks! I will try that.

Closing via https://github.com/coreos/etcd/pull/4871.


[flake8-pyi] Allow overloaded __exit__ and __aexit__ definitions (PYI036)

Summary
Fixes #11044
We should definitely allow overloaded definitions for __exit__ and __aexit__. Nonetheless, validating overloads is pretty tricky without the full machinery of a type checker, so this PR deliberately takes a pretty conservative approach. If there are exactly two overloads, both overloads have exactly three annotated non-self non-keyword-only arguments each, and both overloads have no keyword-only arguments or variadic arguments -- then, for both overloads, we check to see if the overload matches one of two recognised overload variants (permitting small variations such as if one parameter is hinted with object or _typeshed.Unused). If there's an unexpected number of arguments, however, we just don't check the overload.
Test plan
cargo test.

Oh, good to see it! I've been having an issue with this recently. 👍👍👍

I think if it were me making this decision on a desert island, I'd probably just skip overloads since I wouldn't find the complexity-to-value tradeoff to be good enough

Yeah I know what you mean. My initial thought when I saw the issue was "well, that's going to add extra complexity to the check, and it's a less common case, so we may as well skip it". But (although we rarely bother with it in typeshed, it seems like extra complexity for little gain), Adam's recent blog post is strictly-speaking correct that it's more accurate to use overloads for this case, and that blog seems to be making the rounds at the moment. And if you are going to use overloads, then I think it's really easy to get it subtly wrong by e.g. using Exception instead of BaseException, the same as if you don't use overloads. So I do think there is value to checking overloads.
This may be partly sunk-cost fallacy on my part though, given that I've gone ahead an implemented it now...
I think I'll add a few more test cases to make sure that every conceivable scenario is covered, then go ahead with this.


Can't connect to RSK

I'm trying to connect to RSK using my Ledger, but it neveer asks for the Ledger connection. I need this tool to swipe addresses with m/44'/0'/0'/0 derivation path and recover rBTC from the RSK Bridge.

It seems like Ledger only supports m/44'/00'/... (note the extra 0) for RSK, not m/44'/0'. It shouldn't make any difference for deriving addresses though, but it's possible that it doesn't work without the extra 0. I'm not sure if I added support for RSK to FindETH in the first place. Note that FindETH cannot transfer any funds, only help you find your (lost) funds.


Allow implicit interpolate import

Fixes issue https://github.com/SciTools/iris/issues/2116
The fix is pretty messy. Perhaps @pp-mo or someone else can suggest a better way?

Wrong branch, sorry


Creating question displays time as ID

Currently the creation of questions displays the current time as ID. The ID should follow the order in the list.

@Edfernape does #95 resolve this issue?

@huizhuansam Yes, it's removed, but creates another small issue. I'll make a new one for that


how to send params with query while sending query to the database

How to send params with query while sending query to the database. as in all the examples, i have seen that are fetching some thing and not sending any params with it. Could you guys please post and example explaining how i can do that?

Hi @neelanshugoyal ,
As mentioned in the documentation (true there is no example) you need to pass an array of parameters.
So for example, retrieving a user by id :
$query = 'MATCH (user:User) WHERE id(user) = {user_id} RETURN user';
$parameters = array('user_id' => 123);
$result = $client->sendCypherQuery($query, $parameters)->getResult();

You can also use arrays as parameters values, for e.g. retrieving a user who's id is in a collection of ids :
$query = 'MATCH (user:User) WHERE id(user) IN {ids} RETURN user';
$parameters = array('user_id' => array(123, 234, 456));
$result = $client->sendCypherQuery($query, $parameters)->getResult();

Hope it helps.

@ikwattro thanks, for the examples, i ll implement them. And i am closing this issue as well.

also could you please update the documentation so that other can benefit from it. Thanks


ProfileCard: Apply card screen design roughly

current

ideal

https://www.figma.com/design/XUk8WMbKCeIdWD5cz9P9JC/DroidKaigi-2024-App-UI?node-id=54953-64732&t=RETzg5ZvPOOUBJBF-4

i'll try it :raised_back_of_hand:

FYI
We are currently having difficulty exporting the card background image, so we have asked the designer to make it easier to export.

I have a question 🙏
How should I implement if the user doesn't set a profile image?
Is there any image for default? (Or no need to display?)

The specification has been changed to require a image to always be set.
link
https://github.com/DroidKaigi/conference-app-2024/issues/418

Got it! Thank you! 🙏

@ked4ma
The designer made it easier to export. Here you go!

https://www.figma.com/design/XUk8WMbKCeIdWD5cz9P9JC/DroidKaigi-2024-App-UI?node-id=57517-34333&t=aFwblG3l6MDmAuFL-4


[Bug] ApiError NotFound ("componentschematics.core.oam.dev "helloworld-python-v1" not found") }

Ⅰ. Issue Description
This issue happened during I built rudr according to https://github.com/oam-dev/rudr/blob/master/CONTRIBUTING.md
Ⅱ. Describe what happened
I built rudr step by step. When I performed the command as below:
kubectl apply -f examples/first-app-config.yaml

The rudr-server throw the error:
ApiError NotFound ("componentschematics.core.oam.dev \"helloworld-python-v1\" not found") }
[2019-10-27T04:42:32Z DEBUG rudr] loop
[2019-10-27T04:42:38Z ERROR rudr] Error sync status: Error { inner: stack backtrace:
   0: failure::backtrace::internal::InternalBacktrace::new::hceda8198515a01a3 (0x55a78b0be0be)
             at /root/.cargo/registry/src/github.com-1ecc6299db9ec823/failure-0.1.5/src/backtrace/internal.rs:44
   1: failure::backtrace::Backtrace::new::h872c68a3f43c1004 (0x55a78b0bd9cd)
             at /root/.cargo/registry/src/github.com-1ecc6299db9ec823/failure-0.1.5/src/backtrace/mod.rs:111
   2: failure::context::Context<D>::new::h9801f15dc158ed35 (0x55a78a652fc9)
             at /root/.cargo/registry/src/github.com-1ecc6299db9ec823/failure-0.1.5/src/context.rs:84
   3: <kube::Error as core::convert::From<kube::ErrorKind>>::from::hee89f13a4b46d0fc (0x55a78a66aae0)
             at /root/.cargo/registry/src/github.com-1ecc6299db9ec823/kube-0.15.1/src/lib.rs:87
   4: kube::client::APIClient::request::ha981d4acca5b8786 (0x55a78a5de641)
             at /root/.cargo/registry/src/github.com-1ecc6299db9ec823/kube-0.15.1/src/client/mod.rs:97
   5: rudr::instigator::get_component_def::h61c308080a603168 (0x55a78a3b0331)
             at src/instigator.rs:681
   6: rudr::instigator::Instigator::sync_status::h58bf9bec581f7669 (0x55a78a39eaf5)
             at src/instigator.rs:100
   7: rudr::sync_status::h3772b6910576a91f (0x55a78a1e6a22)
             at src/main.rs:201
   8: rudr::main::{{closure}}::hd619ec99c7e8b23a (0x55a78a146b1e)
             at src/main.rs:127
   9: std::sys_common::backtrace::__rust_begin_short_backtrace::h994df12331a680d6 (0x55a78a13aca8)
             at /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/sys_common/backtrace.rs:77
  10: std::thread::Builder::spawn_unchecked::{{closure}}::{{closure}}::hdc27e9242f1d9487 (0x55a78a139085)
             at /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/thread/mod.rs:470
  11: <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h8c2da331ec991af2 (0x55a78a038688)
             at /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/panic.rs:315
  12: std::panicking::try::do_call::hf3951e3d7182bb67 (0x55a78a0e525d)
             at /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/panicking.rs:296
  13: __rust_maybe_catch_panic (0x55a78b5616d9)
             at src/libpanic_unwind/lib.rs:80
  14: std::panicking::try::hea5b262da913f075 (0x55a78a0e4f94)
             at /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/panicking.rs:275
  15: std::panic::catch_unwind::hbed83a993567e1ee (0x55a78a0387b8)
             at /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/panic.rs:394
  16: std::thread::Builder::spawn_unchecked::{{closure}}::h3c000f475b96c699 (0x55a78a138453)
             at /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libstd/thread/mod.rs:469
  17: core::ops::function::FnOnce::call_once{{vtable.shim}}::hcda506459eb01489 (0x55a78a096fd9)
             at /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/libcore/ops/function.rs:235
  18: <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once::h2877b2aefb0fd627 (0x55a78b549bde)
             at /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/liballoc/boxed.rs:787
  19: <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once::h13f473dbcdaa0fef (0x55a78b560a5f)
             at /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/liballoc/boxed.rs:787
      std::sys_common::thread::start_thread::h562a7c4953cb1d31
             at src/libstd/sys_common/thread.rs:13
      std::sys::unix::thread::Thread::new::thread_start::h382c6ae14181d163
             at src/libstd/sys/unix/thread.rs:79
  20: start_thread (0x7f0b88c82e64)
  21: clone (0x7f0b8879588c)
  22: <unknown> (0x0)

Ⅲ. Describe what you expected to happen
Ⅳ. How to reproduce it (as minimally and precisely as possible)
Just build source code according to the doc as I have mentioned before
Ⅴ. Anything else we need to know?

After I check the yaml file of first-config-app

I found that it used a component called helloworld-python-component
But when I create the CRD of components according to the doc https://github.com/oam-dev/rudr/blob/master/CONTRIBUTING.md.
There is no component called helloworld-python-component in the component file
kubectl apply -f examples/components.yaml

I think that we need to fix this problem to prevent our developers from confusion about the contribution doc.

/assign fengzixu


Support DSR with IPIP in CNI mode

PR https://github.com/cilium/cilium/pull/18449 proposes to add support for DSR by encapsulating packets in IP. The motivation here is that the current DSR approach which uses IP options can lead to a situation where packets get dropped in the core of the network, because the routers don't support the IP options. In this case, the router sends this to the slow path which cannot handle the rate of traffic.
Tasks:

[ ] Rebase
[ ] Review changes to ipv4_policy handling with nodeport

https://github.com/cilium/cilium/pull/18449#discussion_r891577527

[ ] See if we can avoid the DSR_ENCAP_MODE #ifdefs

https://github.com/cilium/cilium/pull/18449#discussion_r891587259

TBD

cc @julianwiedmann

@ysksuzuki and I were discussing this today and took notes on some initial steps, he will reopen a fresh issue and update with the latest status from the PR and what remains to get this feature into the tree.

As far as I looked at the PR, the remaining tasks are as follows.

Rebase
Fix some unresolved comments
Add pure IPIP option which doesn't rely on IP options

As for 3, we need to mention the limitation in docs and ensure that a backend port matches a service port as well. In the pure IPIP mode, the backend port matches a service port, because with the IP-in-IP encapsulation without IP option, we cannot have L4 different ports.
@brb suggested it so that users can avoid the risk of SYN packets being dropped by routers that do not support IP options and can parse the inner IP header.
Please correct me if I'm wrong.

Add pure IPIP mode which doesn't rely on IP options

I think Generic UDP Encapsulation (GUE) may be used to encapsulate
IPIP packets. GUE allows adding arbitrary security/private data
in the header so that we can avoid IP options.
GUE is also preferable to IPIP regarding network performance since
many network peripherals have optimizations for UDP packets.
https://datatracker.ietf.org/doc/html/draft-herbert-gue-01

@borkmann and I were talking about this. He said that we should avoid using IP option because of the GRO perspective as well as the risk that Syn packets with IP option are dropped.  However, the limitation that service port and backend port have to be the same is critical in our use case. So I will create a CFP that suggests using tunneling technologies such as GENEVE,  GUE for DSR to lift the limitation.


Add Sanity Test To Darwin And Win

Description of the issue
No sanity test for darwin and windows
Description of changes
Add sanity check to darwin and windows run
License
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.
Tests
https://github.com/aws/amazon-cloudwatch-agent/actions/runs/7426148498
Darwin is missing ami it has nothing to do with this change. The command for darwin is the same as linux so this should be fine. The failing windows tests are for missing ami reasons.

https://github.com/aws/amazon-cloudwatch-agent/actions/runs/7426148498/job/20211483842#step:7:3696 Windows sanity check is failing, but it's not actually failing the test. I think that's part of what we wanted to fix.


UTC Offset Adjust Bug

What's New?

Fix a bug where FarmEvents would disappear under specific time zone / creation time conditions.

Coverage remained the same at 89.959% when pulling 71fa3a1d029e43e09575294d8cd4941f6ef985af on RickCarlino:utc_offset_adjust into ae91b94e06e5ba9bfd366044ae39275c6ce95057 on FarmBot:staging.


ListView should have a constructor that builds a SliverPrototypeExtentList

ListView should have a constructor that builds a SliverPrototypeExtentList.

I can take care of that

@aminedakhlii Are you still doing this?

@Hixie As it seems @aminedakhlii is not working on this, I can take this if you like.
I have a question regarding the API.
Currently, ListView uses SliverList or SliverFixedExtentList depending on if itemExtent is null. However, if we add another parameter Widget? prototypeItem to be checked against and used in SliverPrototypeExtentList, we will have two excluding parameters, such that providing both will result in only one of them being really applied. There are some ways to handle this:

We could provide both parameters and document the priority over one or another;
We could deprecate itemExtent in favor of one sum-type parameter that would not allow for both to coexist. This change can be made non-breaking by simply setting this new parameter in the initializer if itemExtent is provided.
Maybe we are thinking of providing it only through a specific constructor, as the issue title seems to suggest? If this is the case, what we do with the default ListView constructor? Do we provide only itemExtent in it and set prototypeItem in the initializer list as null?

These three are the first ones that came to my mind, but maybe there's an even better solution? What do you think?

[...] what we do with the default ListView constructor? Do we provide only itemExtent in it and set prototypeItem in the initializer list as null?

Yeah that's a reasonable thing to do. We do that in many places.
Another option is to have both parameters on the same constructor but assert that (at least) one of them is null. We do that in various places also.

I think that ReordableListView (and ReorderableList maybe) should also have such constructor

@Hixie Is this closed by #79752?

upd: it was added to ReordableList in https://github.com/flutter/flutter/issues/81603, I think can be closed

Closing per my previous comment


[Animated] Question: Triggering a separate animation after a threshold

I posted a few times in the IRC, and I can't seem to find an answer. I've watched @sahrens Fluid UX video a bunch of times, poured over the new Animation API, looked through @brentvatne 's tinder demo and I can't figure out how to do this particular animation.
I want to create something very similar to this: http://cl.ly/c0H3
Basically, as you slide the row past a certain threshold, it triggers a new timed animation that isn't based off of x in ValueXY.
At first I tried I tried interpolating the colors, but that's based off the X value, so the transition can be too fast or slow based on how quickly the user slides the row. I also tried adding a listener to the panning gesture, and then trying to trigger an animation after it passes the threshold, but I can't animate colors, I can only interpolate colors.
Any help or ideas?

Should be doable I think, and it sounds like you're going in the right direction.
Adding a listener to the pan x is the right starting point. Then in that listener, if the value crosses your threshold, start the color animation.
The trick is actually animating the colors. You'll want a dedicated Animated.Value just for color, and it will be kind of like an enum. Then interpolate it like so:
var BLACK = 0;
var RED = 1;
var BLUE = 2;
backgroundColor: this.state.color.interpolate({
inputRange: [BLACK, RED, BLUE],
outputRange: ['rgb(0, 0, 0)', 'rgb(255, 0, 0)', 'rgb(0, 0, 255)']
})
Then you can do
Animated.timing(this.state.color, {toValue: RED}).start();
This has its limitations of course - if you want to be able to go straight from RED to BLUE and BLACK to BLUE without going through RED, it's going to get more complicated, but I think you can get it to work by changing the outputRange of the interpolation function via setState in your listener.  If you need that and can't figure it out, let me know.

Apologies for formatting and any bugs - I'm on my phone.

Very cool example! I think @sahrens' suggestion will work well! I cleaned up the formatting for him on the code because I'm on my computer :)

Wow, didn't realize you could edit other people comments. Thanks, Brent!

Oh, and please post what you come up with - it is a cool interaction indeed.

@dubert - any luck with this? :smile:

Hmm, I figured I'd attempt it (I don't quite fully grasp Animated and PanRespnder so take it easy on me), except PanResponderMove wasn't firing and causing the color interpolation to happen consistently.
Code: https://rnplay.org/apps/32dWag/

I dunno

Woohoo! I've got it working using @sahrens suggestion! Thank you very much.

At the top:
var GREY = 0
var GREEN = 1
var RED = 2

var Triggered = {
  GREY: false,
  GREEN: false,
  RED: false,
}

The listener function:
_animateRow(value) {

  var threshold = deviceScreen.width / 2

  if (value.x < 0) {

    if (value.x > -50 && !Triggered.GREY) {
      Triggered.GREY = true
      Triggered.GREEN = false
      Triggered.RED = false

      Animated.timing(this.state.color, {
        toValue: GREY,
        duration: 180,
      }).start()
    }
    if (value.x < -50 && value.x > -threshold && !Triggered.GREEN) {
      Triggered.GREY = false
      Triggered.GREEN = true
      Triggered.RED = false

      Animated.timing(this.state.color, {
        toValue: GREEN,
        duration: 180,
      }).start()
    }
    if (value.x < -threshold && !Triggered.RED) {
      Triggered.GREY = false
      Triggered.GREEN = false
      Triggered.RED = true

      Animated.timing(this.state.color, {
        toValue: RED,
        duration: 180,
      }).start()
    }
  }
}

In render:
var bgColor = this.state.color.interpolate({
  inputRange: [
    GREY,
    BLUE,
    PURPLE,
  ],
  outputRange: [
    'rgb(180, 180, 180)',
    'rgb(63, 236, 35)',
    'rgb(233, 19, 19)',
  ],
})

I'm using Triggered to limit the animation to only executing once. (Because it was on the listener, it was being repeatedly called.) Please let me know if there is a better way to do this.

@dubert that's hot! Nice work, I am definitely stealing this concept.

That's great!  It's mostly taste, but the only change I would make personally would be to have a single target value and set that to GREY, GREEN, or RED, rather than the Triggered Object, and just have a single line of code to run the animation, something like this:
var target = null;
if (value.x > -50 && this._target != GREY) {
  target = GREY;
} else if (value.x < -50 && value.x > -threshold && this._target != GREEN) {
  target = GREEN;
} else if (value.x < -threshold && this._target != RED) {
  target = RED;
}
if (target !== null) {
  Animated.timing(this.state.color, {
    toValue: target,
    duration: 180,
  }).start();
}

If also pick prettier colors ;)
Closing since you got it working :)

One other thought - you might want to do this with a horizontal scroll view rather than a pan responder on a translated view of you're not already. That way I think the nested scroll views will negotiate their responder locks correctly. Let me know if you have issues with that.

That's really smart @sahrens , thanks. I will definitely use the object to reduce the code.
And you anticipated my next issue! I was already thinking about a directional measurement on the Pan Responder to disabled vertical scrolling but that's much much better.
And the colors were placeholders :) I'll pick good ones

@dubert when you get that figured out can you post the code snippet? I'd be interested in seeing how that all works together.

Will do

For anyone that stumbles upon this I finally got this all figured out.
Demo/Code here : https://rnplay.org/apps/LDI42g
My only issue, is that the

With the horizontal ScrollView you have to define the height (at least from what I could figure out).
The View in the horizontal ScrollView does not stretch completely regardless of what flex properties you add on it.
The PanResponder vs ContentOffset X values are opposites, so you have to multiply by -1.
The content offset is not as large as the PanResponder so I had to lower the RED threshold.

I know this is more suited for StackOverflow however do you happen to have any insight on the matter of the size, I know I have the dimensions of the device, just want to confirm that I'm not running into a layout bug that needs to be fixed

@sahrens You say if you want to be able to go straight from RED to BLUE and BLACK to BLUE without going through RED, it's going to get more complicated. That's exactly what I need, complicated or not. Any chance you can point me in the right direction? Thanks.

@nicholasstephan do you need to do that on the row swipe? What Animated value are you tracking? You might need to set up separate animations.

@dubert I know this is a an old thread but any chance you can share how you made it look like you're pulling in the colors from the side as opposed to @browniefed's way that changes the actual row background color?

@jorelllinsangan  You would need to have the View that has your content with a solid background color and translateX the content view, then the animation of the color is on a separate wrapping View. That's likely your best option.

I ended up doing it where I have 3 views wrapped in another view with {flexDirection: "row"}. I did a translateX on the parent view to render the center first. Then made it spring back onPanResponderRelease.
My next issue now is what @dubert was saying above. I need to figure out how to lock the ScrollView when dragging my view.

@jorelllinsangan this is why using a Horizontal scrollview per row will help w/ auto locking.
If you don't feel like doing that you can store something like scrollable on state, and when you have a PanResponder trigger in for a row swipe you can change the ScrollView scrollable prop to false and it should work.

I actually originally followed your old blogpost to get a feel for Animations. That's why I ended up asking above how to do it like how dubert did his.
I've tried doing the setting it to false but I'm not sure how to distinguish between a horizontal row swipe and a vertical swipe to scroll. I'm not sure how onPanResponderMove works. Currently, I just have Animated.event([null, {dx: this.pan.x}])  assigned to it. I was thinking of trying to detect using gesture properties in onPanResponderMove by assigning it a function, doing swipe categorizing, then doing the Animated.event(...) but that makes it so that I can't drag my view anymore.
I've used jemise111's library but it just doesn't handle row swipes the way I need it to work. I need it to work similarly to what dubert originally posted when he opened this thread.
I also noticed that when Im dragging horizontally then I accidentally scroll vertically, my animation stops calling panResponderHandlers and it just freezes. I saw your blog post about setting scrollable to false in panResponderGrant. The problem with that is that as soon as I touch the row, it will prevent me from scrolling vertically. Apparently its a known issue: https://github.com/facebook/react-native/issues/1046


Small Adjustments to Python CodeQL

FYI @kurtzeborn who did the original heavy lift to add this to all the repos.
This PR will:

Move the CodeQL scan to the Compliance job only
Update the codeQL job to run in python mode
Extend the timeout of codeql job to 360 minutes per the codeql team's guidance
Aim codeql at the specific subdirectory for the service being released.

Manually queued core test

Failures are not related to this PR. Overriding

/check-enforcer override


CES-9805 - Set boot_mode in ironic node's capabilities

Set boot_mode in capabilities parameter within properties field of ironic node to bios or uefi

Resolved all the comments


Adding unit tests and fixing issues in Assistants API

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

Comparison is base (e2e995d) 65.35% compared to head (e4e5ba6) 88.49%.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@              Coverage Diff              @@
##               main      #24       +/-   ##
=============================================
+ Coverage     65.35%   88.49%   +23.14%
- Complexity      436      604      +168
=============================================
  Files           105      105
  Lines           941      939        -2
  Branches         27       27
=============================================
+ Hits            615      831      +216
+ Misses          294       65      -229
- Partials         32       43       +11

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


multitime: init at 1.4

Motivation for this change
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[ ] NixOS
[x] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nix-review --run "nix-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

Notify maintainers

Ugh, the latest release tag is messed up in the repository (ltratt/multitime#25), so I’ll take master for now.

Oh, ok, there is no segfault in 1.4, so there is no need to take master.