Mangle __arg when passed to methods

Follows CPython behaviour
Issue https://github.com/cython/cython/issues/1382
I think this is fairly straightforward. The only small question is whether to make an exception for __pyx_ names. I don't think so, but it merits a little thought.

I've found some small corner-cases where this doesn't quite do the right thing (to do with nested functions). I think it's a fairly easy fix but don't merge this yet...

I've updated this so it now covers pretty much every corner case I can think of. The exceptions are metaclasses defined Python2 style with __metaclass__ which are ignored (because I can't distinguish them from Python3 style metaclasses, which are should be ignored) and any name starting with __pyx (because enough are injected that it was causing problems). I haven't applied this to cdef class, on the basis that this was the existing behaviour.
I've adopted a different approach, using a ParseTreeTransform to mangle all the names. This is because it had to work in enough different types of scope that adding the logic to declare_* and lookup was getting prohibitive.
I do wonder if it would be better applied at the parser stage instead. Based on the description in the documentation this seems to be where Python does it: https://docs.python.org/3/reference/expressions.html#index-5 . The advantage of doing it in the parser is that the few exceptions would probably be solved.

I agree that it would be better done earlier. After the AnalyseDeclarationsTransform, names are already used and referred to in other places, so changing them after this point might result in subtle inconsistencies.
I don't think it should be done inside of the parser, but I don't see why scopes are needed for this. A transform can simply remember the last (py/cdef) class node that it went through, so that a name could know directly the class name it needs for mangling. I suggest to move the mangling into PostParse, and let the ScopeTrackingTransform remember the outer class node (if any) in a readonly attribute (note that it's a cdef class itself, see Visitor.pxd).

I think it has to be done (just?) after InterpretCompilerDirectives - if it isn't applied to cdef class (which seems to be the existing rule) then this is the first place you it's possible to know if something is a cdef class in pure Python mode. Also matching up the @cython.locals with mangled names is going to be tricky otherwise.
The rest of your comment makes sense - should be done as early as possible, and ScopeTrackingTransform seems reasonable.

I've updated this to address your comments. It now includes cdef classes as well. I had to exclude names that started with __pyx again otherwise it broke everything that uses memoryviews (https://github.com/cython/cython/blob/8168063752f0050ee53fda80c4d679c0d0f5389b/Cython/Utility/MemoryView.pyx).

Would be nice to put this in, since is fixes #1382 which is marked as a 3.0 blocker

I've updated this so it doesn't use a transform but does everything in Symtab (as it was before). This feels less robust to me, and I'm expecting it to fail when run through the full test-suite. I'm sure most of it can be fixed relatively simply though.

Thanks @da-woods !

This seems to have introduced a regression:
https://mail.python.org/pipermail/cython-devel/2020-April/005340.html
## crash.pxd:

cpdef __foo()

cdef class Bar:
  cpdef run(Bar self)

## crash.pyx:

cpdef __foo():
  print("foo")

cdef class Bar:
  cpdef run(Bar self):
    __foo()

    print("bar")

Errors:
Error compiling Cython file:
------------------------------------------------------------
cpdef __foo():
  print("foo")

cdef class Bar:
  cpdef run(Bar self):
    __foo()
   ^
------------------------------------------------------------
crash.pyx:6:4: undeclared name not builtin: __foo

Error compiling Cython file:
------------------------------------------------------------
cpdef __foo():
  print("foo")

cdef class Bar:
  cpdef run(Bar self):
    __foo()
   ^
------------------------------------------------------------
crash.pyx:6:4: '__foo' redeclared

Error compiling Cython file:
------------------------------------------------------------
cpdef __foo()
           ^
------------------------------------------------------------
crash.pxd:1:12: Previous declaration is here

This change shouldn't apply to global (module) names.

OK - seen this. I can probably fix this fairly quickly (within the next day or so). It certainly wasn't deliberately applied to global names.

Right - I had a look at this. I think I've replied to cython-devel but cython-users doesn't seem to want to accept my reply:

On closer inspection I believe both are following Python behaviour (and thus behaving correctly). In Python any __name_preceded_by_double_underscores used within a class ends up looking up _Classname__name_preceded_by_double_underscores. Therefore in case 1 it's looking up _Bar__foo and not finding it.

Therefore, I think it is the "correct" thing to do.

This proved a pain with the __pyx_unpickle functions that Cython generates. In the end I just disabled it for __pyx_ names, which I guess could be called hypocrisy .

The error messages it gives do look a bit unhelpful though, so that could definitely be fixed


Dotnet framework deleted from repository

[ ] Have you signed the Contributor License Agreement?
[ ] Have you checked that there aren't other open pull requests for the same manifest update/change?
[ ] This PR only modifies one (1) manifest
[ ] Have you validated your manifest locally with winget validate --manifest <path>?
[ ] Have you tested your manifest locally with winget install --manifest <path>?
[ ] Does your manifest conform to the 1.4 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Microsoft Reviewers: codeflow:open?pullrequest=https://github.com/microsoft/winget-pkgs/pull/112711&drop=dogfoodAlpha

@wingetbot waivers Add Validation-Installation-Error

/azp run


ActiveRecordInterface improvements

Q
A

Is bugfix?
no

New feature?
no

Breaks BC?
no

Tests pass?
yes/no

Related issues
#9745

Small improvements to ActiveRecordInterface to make it more complete.
The following functions have been added. For each I have listed 1 "proof", one instance where it is called based on the assumption that the class is an active record class.

populateRecord ActiveQueryTrait#134
instantiateActiveQueryTrait#134
afterFind ActiveQuery#223

The failing tests seem to not be originating in any code but in the test environment.

Thank you for the proposal.

populateRecord ActiveQueryTrait#134
instantiateActiveQueryTrait#134

while they are called within the trait, adding them to the interface it would limit the possibilities of implementing ARInterface in different ways that use different ways of instantiating records.
I do not think there is a good practical reason to add these to the interface, even if it would be theoretically more correct solution.

afterFind ActiveQuery#223

This is the implementation bound to a concrete relalisation of ActiveRecordInterface for DB, its fine to expect a db\ActiveRecord here.

I feel the querying should be separate from the models. If the query related classes do something it should be part of the AR interface otherwise I cannot implement my own AR models that work with the query part.

I feel the querying should be separate from the models. If the query related classes do something it should be part of the AR interface otherwise I cannot implement my own AR models that work with the query part.

There are ActiveRecordInterface and ActiveQueryInterface thier method lists are consistent. If you create your own implementation you need to satisfy those interfaces.
ActiveQueryTrait is a particular implementation, to be precise - a shared part of particular implementation, which is bound to BaseActiveRecord class, which is a shared part of particular implementation.
If you wish to use ActiveQueryTrait you should either extend your ActiveRecord from BaseActiveRecord or implement it compatible way.
if you wish to create pure ActiveRecord/ActiveQuery implementation you should use nothing but ActiveRecordInterface and ActiveQueryInterface.

They are not consistent separately. If I implement ActiveRecordInterface in my model class. And try to retrieve instances of it via Yii's ActiveQuery concrete implementation, it will break because the ActiveRecordInterface is incomplete.

They are not consistent separately. If I implement ActiveRecordInterface in my model class. And try to retrieve instances of it via Yii's ActiveQuery concrete implementation, it will break because the ActiveRecordInterface is incomplete.

???
What are you actually trying to do? Are you attempt to use yii\db\ActiveQuery for yii\mongodb\ActiveRecord or something?
Particular ActiveRecord and ActiveQuery is always a pair. If while creating such a pair you can reuse code from BaseActiveRecord or ActiveQueryTrait it is fine, but if it does not fit - you should avoid them and craete implementation from scratch.

Particular ActiveRecord and ActiveQuery is always a pair. If while creating such a pair you can reuse code from BaseActiveRecord or ActiveQueryTrait it is fine, but if it does not fit - you should avoid them and craete implementation from scratch.

Why? There is no argument for this, just the fact that your interface is incomplete forces them to be a pair...
If the interface is complete, then by definition concrete implementations are exchangeable.

Why? There is no argument for this, just the fact that your interface is incomplete forces them to be a pair...
If the interface is complete, then by definition concrete implementations are exchangeable.

Very well, lets start from beginning then: can you please open a famous book by Martin Fowler named " Patterns of Enterprise Application Architecture" and draw a class diagram for 'ActiveRecord' pattern? How does it look like?

That's a non-argument. You've split the query logic away from the ActiveRecord class. There is no argument to then couple the interface when there's no need to.
Anyway, I don't feel like there is a point to try and change your mind, it hasn't ever happened before. Instead I'll try to convince the team members who take the time to think for themselves instead of blindly quoting Martin Fowler like he wrote the bible.

That's a non-argument.

I can say just the same for yours: as I have already said here at the present state you are talking that yii\mongodb\ActiveRecord should be actually able to use yii\db\ActiveQuery for the models search. This can not happen anyhow

You've split the query logic away from the ActiveRecord class. There is no argument to then couple the interface when there's no need to.

This is a common practice and used in other places too. For example, see:
https://github.com/yiisoft/yii2/blob/master/framework/db/mssql/TableSchema.php#L22
https://github.com/yiisoft/yii2/blob/master/framework/db/mssql/Schema.php#L160
Here we can also tell, that $catalogName should belong to \yii\db\TableSchema to produce consistent TableSchema class interface, even if it not used anywhere besides MSSQL.
Here we can say your argument: why I can not take plain yii/db/TableSchema an use it with yii/db/mssql/Schema?
Should we change this and other places as well to make you feel better?

Anyway, I don't feel like there is a point to try and change your mind, it hasn't ever happened before. Instead I'll try to convince the team members who take the time to think for themselves instead of blindly quoting Martin Fowler like he wrote the bible.

It is a pity you do not want to re-think the issue from beginning with me.
The point is an ActiveRecord is a monolith: it incapsulates BOTH finding and saving the data. It can not function otherwise - that is why it is called ACTIVE record actually. Creating a separated ActiveQuery was a design choice, which simplifies and structures the implementation. And even still ActiveRecord actually hides ActiveQuery behind the scenes: developer uses ActiveRecord::find() to instatiate an ActiveQuery instead of new ActiveQuery().
Here you wish to extend ActiveQueryInterface with extra methods, which puts a restriction on the possible particular implementation. You enforce afterFind method, which according to its specification should trigger a Yii event, while particular ActiveRecord library may be built on non-Yii classes an use its own event managenemt or do not use events at all. You are converting a necessity into a requirement/restriction here.
Your argument is there should not be any such method does not exist error during using any combination of ActiveRecord and ActiveQuery, while random combnation of thoses will definetely produce other fatal errors.

@SamMousa I agree with @klimov-paul in the point that there is not reason in separating ActiveRecord and ActiveQuery implementations. AR and AQ are a set of classes that play together, i.e. highly depend on each other. There is a balance to take between perfect interface completeness (formal correctness) and practical usage. Yii is mostly following the practical path. Unless you have a concrete implementation that would show up a problem with the current interface I would prefer to not make any changes to the interface.

I agree with @cebe and @klimov-paul. In this particular case initial proof seem to be incorrect.


Add uperf throughput-delta-pct stats to detect UDP drops

Problem description:
In UPERF stream, the primary metric is the Gbps , the time-series of Tx byte counts.  When UDP, viewing Gbps alone we do not see packet loss, and therefore may miss the picture.
timestamp_ms:1701713174720.9150 name:Txn3 nr_bytes:0 nr_ops:110
-------------------------------------------------------------------------------
timestamp_ms:1701713174720.9255 name:Total nr_bytes:919244111872 nr_ops:1795398830
Netstat statistics for this run
-------------------------------------------------------------------------------
Nic       opkts/s     ipkts/s      obits/s      ibits/s
eth0     13951267           0    60.27Gb/s     28.25b/s
-------------------------------------------------------------------------------
Run Statistics
Hostname            Time       Data   Throughput   Operations      Errors
-------------------------------------------------------------------------------
<IP_ADDRESS>     122.32s    92.84GB     6.52Gb/s    194709184        0.00
master           122.32s   856.11GB    60.12Gb/s<PHONE_NUMBER>        0.00
-------------------------------------------------------------------------------
Difference(%)     -0.00%     89.16%       89.16%      89.16%       0.00%

Solution:
Collect the Throughput difference metric, and index them.

Re-open the PR from the upstream repo branch instead of my fork.


Total Cookie Protection of Firefox Breaks Automatic Login of Client Examples

Describe the bug
With the newest privacy protections from Firefox (https://blog.mozilla.org/en/products/firefox/firefox-rolls-out-total-cookie-protection-by-default-to-all-users-worldwide/), logging in to DRES in one Tab does not automatically ensure you have access from a system in another tab (e.g. vitrivr-ng). Disabling the feature makes the login work again.
I'm not particularly sure something can be done about this, but I'm filing this here anyway for reference.
To Reproduce
Steps to reproduce the behavior:

Use the newest Firefox with Total Cookie Protection enabled
Log in to a DRES Instance
Refresh your system instance / client example / vitrivr-ng in another tab
Get 401 errors

Environment

OS: MacOS
Browser: Firefox
DRES Version: v1.2.1 (or whatever is deployed at vbs.videobrowsing.org on 21/June)

By my understanding, that's very much intended behavior from Mozilla's point of view, see https://support.mozilla.org/en-US/kb/total-cookie-protection-and-website-breakage-faq#w_why-does-total-cookie-protection-cause-site-breakage. To circumvent this, the API access token needs to be provided explicitly, as illustrated in https://github.com/dres-dev/Client-Examples/blob/main/angular-ts/src/app/app.component.ts. Did you observe this issue in the client example or in an independent implementation?


Week 3: Backend Development

Boolean Expressions and If Statements: If Else Lesson
Deployment: Link
Focus and Habits: Link

Score: 2.7/3

Great if statement setup and progress with hacks, showed learning and interest
Ran through all the of the steps and assignments this week

Improvements:

Make sure to work through docker deployment
Know what step of the process you're at


Add support for typescript, jsx, and tsx

It should be as simple as modifying the check here: https://github.com/FractalBrew/vscode-backticks/blob/master/extension.js#L6
If you feel like trying your hand at doing that I'd be happy to answer questions otherwise I'll take a look in a day or two.

I tested it locally and it worked. #2 I am not sure if there is anything else should be tested.

Fixed by a0430776aa2854ca4f395357d42a5bce3b6dbaa2


[Package Issue]: FACEITLTD.FACEITClient package not updating correctly

Please confirm these before moving forward

[X] I have searched for my issue and not found a work-in-progress/duplicate/resolved issue.
[X] I have not been informed if the issue is resolved in a preview version of the winget client.

Category of the issue
Installation issue.
Brief description of your issue
When I get an update for this package, and I update it using winget, it should update normally, but iin fact in never actually updates and stays saying that it needs to be updated.
Steps to reproduce
Install a version which is not the latest of FaceIT Client, and try to update it
Actual behavior
Says it updated successfully, but it did not actually update
Expected behavior
Should update successfully.
Environment
Windows Package Manager v1.7.10661
Copyright (c) Microsoft Corporation. All rights reserved.

Windows: Windows.Desktop v10.0.22631.3296
System Architecture: X64
Package: Microsoft.DesktopAppInstaller v1.22.10661.0

Winget Directories
--------------------------------------------------------------------------------
Logs                               %LOCALAPPDATA%\Packages\Microsoft.DesktopApp…
User Settings                      %LOCALAPPDATA%\Packages\Microsoft.DesktopApp…
Portable Links Directory (User)    %LOCALAPPDATA%\Microsoft\WinGet\Links
Portable Links Directory (Machine) C:\Program Files\WinGet\Links
Portable Package Root (User)       %LOCALAPPDATA%\Microsoft\WinGet\Packages
Portable Package Root              C:\Program Files\WinGet\Packages
Portable Package Root (x86)        C:\Program Files (x86)\WinGet\Packages
Installer Downloads                %USERPROFILE%\Downloads

Links
---------------------------------------------------------------------------
Privacy Statement   https://aka.ms/winget-privacy
License Agreement   https://aka.ms/winget-license
Third Party Notices https://aka.ms/winget-3rdPartyNotice
Homepage            https://aka.ms/winget
Windows Store Terms https://www.microsoft.com/en-us/storedocs/terms-of-sale

Admin Setting                             State
--------------------------------------------------
LocalManifestFiles                        Enabled
BypassCertificatePinningForMicrosoftStore Disabled
InstallerHashOverride                     Disabled
LocalArchiveMalwareScanOverride           Disabled

Screenshots and Logs
No response

This is most likely an issue with the FaceIT Client itself, as WinGet simply downloads and runs the installer. If the installer cannot be used for upgrade, or the upgrade fails, the installer is responsible for providing a non-zero exit code indicating the software could not be upgraded. Or, in the case that the software is actually being upgraded, it's possible that the registry entries aren't being updated on an install. In either case, the fix for this resides with the FaceIT publishers, as there really isn't anything that WinGet can do about it


Rules to enforce template syntax

Would it be possible/relevant to add rules that check the syntax of angular templates?
Ideas:

ensure whitespaces in interpolation {{ value }}
ensure whitespaces around pipe operator {{ value | pipe }}
ensure whitespaces after semicolon in structural dir*ngIf="condition; else"
check banana-box syntax [()] vs ([])
check for unused template-ref <div #unusedRef></div>

Hey @QuentinFchx good ideas!

ensure whitespaces in interpolation {{ value }}
ensure whitespaces around pipe operator {{ value | pipe }}
ensure whitespaces after semicolon in structural dir*ngIf="condition; else"

Doable with the TemplateVisitor.

check banana-box syntax [()] vs ([])

Sounds like a good fit for the TemplateVisitor as well. It also feels like a good candidate for a compile-time error.

check for unused template-ref <div #unusedRef>

The current shallow linting doesn't deal well with template references but that's another good candidate.

Started whitespace in interpolation here https://github.com/mgechev/codelyzer/commit/d9d7da425b0e92178914d5bde142ace43cbd95d5

Three of the rules are already implemented. I will open two issues to track the remaining two.


CLOUDSTACK-10260 : Introducing a new API to collect and list CPU Sockets Metrics information for all Hypervisors.

Description

Introduce a new API to collect and list CPU Sockets Metrics information for each hypervisor. Currently, listHosts API is fired for each hypervisor seprately to retrieve the count of CPU sockets. So, with this fix instead of multiple API execution, single API query will be executed to reterieve information for all the hypervisors.

Types of changes

[ ] Breaking change (fix or feature that would cause existing functionality to change)
[x] New feature (non-breaking change which adds functionality)
[ ] Bug fix (non-breaking change which fixes an issue)
[ ] Enhancement (improves an existing feature and functionality)
[ ] Cleanup (Code refactoring and cleanup, that may add test cases)

Screenshots (if appropriate):
How Has This Been Tested?

Implementation :

Introduced a new API namely "listCpuSocketsMetrics", which will fetch details of CPU Sockets for all the hypervisors in a single run.
In this API, a query will be fired on a host table to fetch details based on grouping of Hypervisor type and Hypervisor version.
This API will prevent multiple calls of listHosts API and thus will improve performance of the infrastructure tab.

Api Response Screenshot :

@niteshsarda is this still relevant? If so, can you please resolve the conflicts? Thanks!

Hi, the PR got auto-closed due to no known source repository or some other Github-specific issue during the recent renaming of the default branch to main. If you wish kindly submit a new PR.


Option to change camera icon color

Would like to reopen #144.
I would like to be able to change color of the Camera icon in the toolbar menu.
The change in the code is trivial, specifically, add one line to the menu item in
https://github.com/esafirm/android-image-picker/blob/main/imagepicker/src/main/res/menu/ef_image_picker_menu_main.xml
<item
        android:id="@+id/menu_camera"
        android:icon="@drawable/ef_ic_camera_white"
        android:title="@string/ef_camera"
        app:showAsAction="always"
        app:iconTint="?cameraIconTint" <<<< add this line
        tools:ignore="AlwaysShowAction" />

Then define the color cameraIconTint in your style.xml. That's it.
Alternatively, you can use vector icons with android:tint color defined in style. Like this:
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:tint="?android:textColorPrimary" <<<<< ------ this line
    android:viewportWidth="24.0"
    android:viewportHeight="24.0">
    <path
        android:fillColor="#FFFFFFFF"
        android:pathData="...." />
</vector>

It's a highly unusual design decision to require custom component just to change color of a UI element. That's usually done with style.xml.
In the #144 you suggest to use custom components, but unfortunately there are no examples on how to do it. Would it be possible to provide some guidance on how to use it beyond what you have in custom_components.md?
I don't see anything related to toolbar styling in interface ImagePickerComponents:
    val imageLoader: ImageLoader
    val imageFileLoader: ImageFileLoader
    val cameraModule: CameraModule

BTW, it would be nice to replace the PNG icon with an SVG icon.

Just checked: it's not possible to subclass ImagePickerActivity and override onOptionsMenuCreated because ImagePickerLauncher.resultLauncher is private.
The only way to change color of a menu icon is to fork the project and edit the code which is a shame.


A second approach to storing non-serializable data in Redux

[don't merge] redux: Store parsed ZulipVersion in Redux state, instead of string.
This commit should be read for its contrast with its counterpart,
with the same title, at #3952.
I've tried to make this PR minimally different from that one, so a
git diff or git range-diff might be informative.
Here, we use the "inside-out" approach described there:

(i.e., locating the value by its being instanceof ZulipVersion),
which doesn't depend on knowing the value's location in the Redux
state

As expected, it requires writing a (straightforward) migration.
Unfortunately, I haven't gotten far enough to actually see this
working, but I expect that our code in a working version won't need
to be drastically different, so I'm submitting this for comparison
anyhow. There appear to be some inaccuracies in the Flow libdef I
cobbled together from the TypeScript with flowgen and flow-typed create-stub, but these shouldn't be difficult to fix.
The current blocker, which blocks any use of ImmutableJS with Redux
(an integration this PR depends on, as I noted at the bottom of
https://github.com/zulip/zulip-mobile/issues/3951#issuecomment-594790134),
is that we're stuck with an old version of redux-persist.
Not until rt2zz/redux-persist@a94f29139, released in v6.0.0 (we're
on ^4.10.2), do we get the ability to supply our own
serialize/deserialize functions in the config passed to
persistStore.
The only other customization for replace/revive transforms that
redux-persist allows is via a Transform created by
createTransform, as we use in #3952. But its contract requires
that you supply functions that translate between serializable and
non-serializable objects, without allowing us to take responsibility
for the actual serialization. It would be a silly exercise, but it
might be possible, to make it work with createTransform with an
extra round-trip into JSAN [sic]. JSAN is what remotedev-serialize
serializes into, and it claims to be more flexible than JSON.
I believe #2915 is our latest written knowledge about the drawbacks
of redux-persist and why it ceases to be useful for us at version
5 and above, and it looks like we have a plan to vendor it.

Not until rt2zz/redux-persist@a94f291, released in v6.0.0 (we're
on ^4.10.2), do we get the ability to supply our own
serialize/deserialize functions in the config passed to
persistStore.

Note that this is a really straightforward change to make (I wish it had been there from the beginning!), so that's not the challenge, once we commit to and finish doing some version of #2915.

@gnprice, I've just been attempting to do the work of #2915. I think there are enough merge conflicts that it'll be easiest just to do it from scratch, rather than just using that PR as-is, if we're going to do it. But there's a lot of useful context in that PR's commit messages.
I just found additional useful context at https://github.com/zulip/zulip-mobile/pull/2762 and in this discussion.
Without manually tweaking any lines of code, I've managed to reduce the problems flagged by tools/test down to 49 errors and 15 warnings from ESLint. Here's what I did this time around, in order:

make sure<EMAIL_ADDRESS>is in node_modules
mv node_modules/redux-persist/src src/redux-persist
mv node_modules/redux-persist/es/index.js.flow src/redux-persist/index.js.flow
commit:

No flow errors (🎉)
Prettier finds 12 messy files
ESLint finds 482 errors, 16 warnings; says "431 errors and 0 warnings potentially fixable with the --fix option."
All Jest tests pass (🎉)

run tools/test lint --fix (a nice shortcut to passing --fix to the ESLint command, thanks for that 🙂)
commit:

ESLint finds 49 errors, 15 warnings
Prettier finds 10 messy files

Do cmd+s on all files in src/redux-persist to trigger auto-saving, to fix Prettier errors
commit:

ESLint finds 49 errors, 15 warnings

Here is that output from ESLint:
Running lint...

/Users/chrisbobbe/dev/zulip-mobile/src/redux-persist/autoRehydrate.js
   5:53  error    'defaultStateReconciler' was used before it was defined                       no-use-before-define
   8:24  error    'liftReducer' was used before it was defined                                  no-use-before-define
  11:23  error    'reducer' is already declared in the upper scope                              no-shadow
  11:55  error    'liftReducer' was used before it was defined                                  no-use-before-define
  26:11  error    'logPreRehydrate' was used before it was defined                              no-use-before-define
  42:5   warning  Unexpected console statement                                                  no-console
  59:16  error    Do not access Object.prototype method 'hasOwnProperty' from target object     no-prototype-builtins
  66:9   warning  Unexpected console statement                                                  no-console
  77:9   warning  Unexpected console statement                                                  no-console
  89:5   error    Closing curly brace does not appear on the same line as the subsequent block  brace-style
  95:7   warning  Unexpected console statement                                                  no-console

/Users/chrisbobbe/dev/zulip-mobile/src/redux-persist/createPersistor.js
    1:1   error    'json-stringify-safe' should be listed in the project's dependencies. Run 'npm i -S json-stringify-safe' to add it  import/no-extraneous-dependencies
    8:66  error    'defaultSerializer' was used before it was defined                                                                  no-use-before-define
    9:68  error    'defaultDeserializer' was used before it was defined                                                                no-use-before-define
   17:21  error    Unexpected dangling '_' in '_stateInit'                                                                             no-underscore-dangle
   18:25  error    Unexpected dangling '_' in '_stateIterator'                                                                         no-underscore-dangle
   18:50  error    'defaultStateIterator' was used before it was defined                                                               no-use-before-define
   19:23  error    Unexpected dangling '_' in '_stateGetter'                                                                           no-underscore-dangle
   19:46  error    'defaultStateGetter' was used before it was defined                                                                 no-use-before-define
   20:23  error    Unexpected dangling '_' in '_stateSetter'                                                                           no-underscore-dangle
   20:46  error    'defaultStateSetter' was used before it was defined                                                                 no-use-before-define
   42:12  error    'passWhitelistBlacklist' was used before it was defined                                                             no-use-before-define
   66:28  error    'createStorageKey' was used before it was defined                                                                   no-use-before-define
   72:61  error    'warnIfSetError' was used before it was defined                                                                     no-use-before-define
  103:13  warning  Unexpected console statement                                                                                no-console
  111:20  error    'rehydrateAction' was used before it was defined                                                                    no-use-before-define
  135:7   warning  Unexpected console statement                                                                                no-console

/Users/chrisbobbe/dev/zulip-mobile/src/redux-persist/defaults/asyncLocalStorage.js
    6:5   warning  Unexpected console statement                                           no-console
   13:1   error    Unexpected dangling '_' in '_hasStorage'                               no-underscore-dangle
   26:7   warning  Unexpected console statement                                           no-console
   41:10  error    Expected to return a value at the end of function 'getStorage'         consistent-return
   65:13  error    Expected an assignment or function call and instead saw an expression  no-unused-expressions
   69:11  error    Expected an assignment or function call and instead saw an expression  no-unused-expressions
   79:13  error    Expected an assignment or function call and instead saw an expression  no-unused-expressions
   83:11  error    Expected an assignment or function call and instead saw an expression  no-unused-expressions
   93:13  error    Expected an assignment or function call and instead saw an expression  no-unused-expressions
   97:11  error    Expected an assignment or function call and instead saw an expression  no-unused-expressions
  107:13  error    Expected an assignment or function call and instead saw an expression  no-unused-expressions
  111:11  error    Expected an assignment or function call and instead saw an expression  no-unused-expressions

/Users/chrisbobbe/dev/zulip-mobile/src/redux-persist/getStoredState.js
   4:25  error    Expected to return a value at the end of function 'getStoredState'  consistent-return
   6:68  error    'defaultDeserializer' was used before it was defined                no-use-before-define
  23:9   warning  Unexpected console statement                                        no-console
  25:7   error    'complete' was used before it was defined                           no-use-before-define
  31:46  error    'passWhitelistBlacklist' was used before it was defined             no-use-before-define
  35:7   error    'complete' was used before it was defined                           no-use-before-define
  38:23  error    'createStorageKey' was used before it was defined                   no-use-before-define
  38:47  error    'err' is already declared in the upper scope                        no-shadow
  40:11  warning  Unexpected console statement                                        no-console
  42:32  error    'rehydrate' was used before it was defined                          no-use-before-define
  46:11  error    'complete' was used before it was defined                           no-use-before-define
  63:9   warning  Unexpected console statement                                        no-console
  70:26  error    'restoredState' is already declared in the upper scope              no-shadow
  90:26  error    'restoredState' is already declared in the upper scope              no-shadow

/Users/chrisbobbe/dev/zulip-mobile/src/redux-persist/index.js
  10:3  warning  Unexpected console statement  no-console

/Users/chrisbobbe/dev/zulip-mobile/src/redux-persist/persistStore.js
  11:5   warning  Unexpected console statement                                           no-console
  27:11  error    'complete' was used before it was defined                              no-use-before-define
  39:26  error    'rehydrateAction' was used before it was defined                       no-use-before-define
  41:11  error    'complete' was used before it was defined                              no-use-before-define
  46:18  error    'complete' was used before it was defined                              no-use-before-define
  51:5   error    Expected an assignment or function call and instead saw an expression  no-unused-expressions

/Users/chrisbobbe/dev/zulip-mobile/src/redux-persist/purgeStoredState.js
  23:13  warning  Unexpected console statement                        no-console
  41:64  error    'warnIfRemoveError' was used before it was defined  no-use-before-define
  49:7   warning  Unexpected console statement                        no-console

/Users/chrisbobbe/dev/zulip-mobile/src/redux-persist/utils/isStatePlainEnough.js
  1:1  error  'lodash' should be listed in the project's dependencies. Run 'npm i -S lodash' to add it  import/no-extraneous-dependencies

✖ 64 problems (49 errors, 15 warnings)

Would you suggest manually fixing those remaining problems? I can try to keep a careful record of exactly what I did to fix them, so it's less necessary to just assume I've done it all correctly. Alternatively, we could have ESLint ignore these errors, to avoid the possibility that a person (such as myself) accidentally introduced bugs by trying to make this output go away.

For the part that's in the PR now: I think I quite like this approach! It feels like a lot less code than the "outside-in" approach in #3952. Thanks for prototyping both :smile:
In particular, when I imagine going and converting things to Map or Immutable.Map and so on, this approach looks like it will mean a lot less code to maintain -- and the code in question is (a) boilerplate that (b) is hard to get fully type-checked, which is a bad combination.

For vendoring redux-persist so we can apply that patch to it:
I think let's start by leaving that code in its current style, and just telling ESLint and Prettier not to operate on it.
 And I think all of these are not direct signs of problems -- they're either stylistic choices, or asking the code to use helpful features of modern JS. But it'd be useful for you to go through them to check that for yourself, too (and perhaps organize and/or comment better than my rough example above.)
Then we can always follow up to modernize and assimilate the code. But that lets us move forward so we can do that at our leisure. (Even if the code is old-fashioned or sometimes messy, it's the same code we were relying on before anyway!)

For Prettier, it looks like adding to .prettierignore is the way:
https://prettier.io/docs/en/ignore.html#ignoring-files
Like this, since it's apparently gitignore syntax:
/src/redux-persist/

Hi @gnprice, I just pushed my changes, getting our fork of redux-persist working. At the tip, there's a commit that (as far as I've seen) has state.narrows working as an Immutable.Map, with this approach.
I agree that it's much nicer to see that pretty much all of the changes in that commit are there strictly to adapt to Immutable.Map's API; there's none of the boilerplate we saw in https://github.com/zulip/zulip-mobile/pull/3952.
I figured it would be nice to show you this in the context of the ZulipVersion changes, then we'll probably put it in its own PR with type-checking for those tests. I mentioned one kind of question I had, about tests, in the commit message, but there are others.

For the part that's in the PR now: I think I quite like this approach! It feels like a lot less code than the "outside-in" approach in #3952. Thanks for prototyping both

It's less code, but it's less code in the way that eval is less code than a parser. It's a security hole. (Or it opens the way for them, at least.)
From #3952 (comment):

For this to work, naturally it's important that you don't have any objects that accidentally have __serializedType__ as a key. I think that's actually true for us: the keys in our objects-as-maps all live in well-defined namespaces, namely numbers, emails, comma-separated numbers or emails, and JSON-serialized narrows. This is one of the good reasons not to expand our use of objects-as-maps and instead to work to reduce it.

The problem is that this is a terrifyingly fragile global property. It's true today – by chance, rather than by design! – but it's totally plausible that a year from now no one will remember that this is something we need to worry about, and that a new object-as-map will be added which can have arbitrary keys.
With the types we have at hand, I don't believe this could do more than cause a denial-of-service (e.g., after connecting to a Zulip server with a poorly- or maliciously-chosen emoji name, the app crashes on startup until it's uninstalled); but as more types are added to the deserializer, the chances that someone will be able to inject a construct that has more subtle security implications increases combinatorically.
This is unfortunately true of every deserialization mechanism which, like remotedev-serialize, takes advantage of JSON.{stringify,parse}'s replacer and reviver functions. (The worst part is that this could have been easily mitigated if only those functions received the full path to a (de)serialized element.)

Hmm, OK.
Take a look at UserPresence:
/**
 * A user's presence status, including all information from all their clients.
 *
 * The `aggregated` property equals one of the others.  For details, see:
 *   https://zulipchat.com/api/get-presence
 *
 * See also the app's `getAggregatedPresence`, which reimplements a version
 * of the logic to compute `aggregated`.
 */
export type UserPresence = {|
  aggregated: ClientPresence,
  [client: string]: ClientPresence,
|};

I haven't gone through to verify whether and how an arbitrary client string could end up there, but the effort it would take to do so supports the idea that this opens us up to some hard-to-plug security holes. Assuming that's possible, it sounds like the denial of service would go something like this, if we're at the commit at the tip of this branch:

A client maliciously causes a client to be __serializedType__ in the app of a victim, like so, and it gets persisted verbatim:

In state.presence:
{
<EMAIL_ADDRESS>{
    aggregated: { ... },
    __serializedType__: { ... }
  }
}

where { ... } is, e.g., { status: 'idle', timestamp: 123456, client: '__serializedType'__ } (a legal value).

Then (regardless of whether 'data' exists as another client, which is possible and would allow for further manipulation) the entire value at<EMAIL_ADDRESS>is revived as an Immutable.Map.

All the places we expect to consume that value as an object-as-map break because it's an Immutable.Map.

Does this sound like a valid example of a simple denial-of-service you're thinking of? I don't mean it to distract from your larger concern that

as more types are added to the deserializer, the chances that someone will be able to inject a construct that has more subtle security implications increases combinatorically.

And would it be an acceptable defense against all such attacks to make the replacer drop all user-supplied keys that are 'serializedType'? I suppose we can't assume that, in all cases, it's OK to just drop data on the floor, without causing weird bugs or another denial-of-service. Can we?

Then (regardless of whether 'data' exists as another client, which is possible and would allow for further manipulation) the entire value at<EMAIL_ADDRESS>is revived as an Immutable.Map.
All the places the victim's app expects to consume that value as an object-as-map break because it's an Immutable.Map.

Does this sound like a valid example of a simple denial-of-service you're thinking of?

Yes, although I think there's a shorter path to it: the rehydrator attempts to revive the entire value at<EMAIL_ADDRESS>as an Immutable.List – but the constructor of Immutable.List complains of an invalid value, so an unhandled exception is thrown during rehydration, so the app never starts. (Or possibly handles the exception by throwing away all the rehydrated data and starting with a fresh app-state – which is arguably not denial-of-service, but is still a concerning bug.)

And would it be an acceptable defense against all such attacks to make the replacer drop all user-supplied keys that are __serializedType__? I suppose we can't assume that, in all cases, it's OK to just drop data on the floor, without causing weird bugs or another denial-of-service. Can we?

We can't. Although I'm pretty sure it won't be true in the ClientPresence case, for arbitrary other objects-as-map, there may be references to the dropped data in the values of some other subtree of the state – going back to my hypothetical emoji example, perhaps lists of reactions on messages.
(Also, Christopher Null has a few opinions on the subject.)

Or to use some kind of secret to prove that a key was persisted as __serializedType__ because my own replacer asked it to be?

Now we're getting into something feasible, I think. I can't see any way to make a secret work, but one might be able to escape any key matching /^(!)*__serializedType__$/ as /^!\1__serializedType__$/, and invert that transformation during rehydration.

I just found a small flaw in my example above; glad I spelled out the steps.
I assumed it would be revived as an Immutable.Map, but actually, that wouldn't happen unless the value at __serializedType__ were 'ImmutableMap', which { ... } isn't. Following through the default case, it checks the data property, which is missing, so the value at<EMAIL_ADDRESS>would be undefined, I think. Still damaging, and all the rest is still possible elsewhere, including errors at rehydrate time, as you've pointed out.
I agree it would be problematic to drop data. Even in the presence case, it would violate the UserPresence JSDoc (above:
 * The `aggregated` property equals one of the others.  For details, see:
 *   https://zulipchat.com/api/get-presence

(It's already violated, but in a minor way that doesn't violate our types — still, I should probably fix that JSDoc.)

one might be able to escape any key matching /^(!*)__serializedType__$/ as /^!\1__serializedType__$/, and invert that transformation during rehydration.

I think this is a straightforward solution to all the problems discussed in the last day's messages on this thread.

OK, I've pushed my next revision. I'm hoping
235458ed4 deps: Add immutable and remotedev-serialize.
answers all your questions about the workflow for libdefs.

One inserts redux-persist into things, plus our fix for proper round-tripping, but doesn't yet do anything about ZulipVersion.

I think you might have meant remotedev-serialize, rather than redux-persist? The round-tripping fix is tied in with remotedev-serialize; the vendoring of redux-persist isn't related to the security hole that the escaping addresses.
From "insert remotedev-serialize into things", through the proper round-tripping fix, but without doing anything about ZulipVersion, is this series:
235458ed4 deps: Add immutable and remotedev-serialize.
724a3befa redux [security]: Add remotedev-serialize wrapper with proper escaping.
df8659422 libdefs: Tweak immutable export from remotedev-serialize.
0b592a41a redux: Scaffolding for custom replace/revive logic.
I think it makes sense that these are four separate commits; what do you think? (Arguably, I could split "Add immutable and remotedev-serialize" into two commits, one for each dependency. Immutable is kind of a peer dependency of remotedev-serialize, in that it functions as a plugin, though they've listed it as a dev dependency.)

Then the next starts replacing/reviving ZulipVersion objects. ... hmm and maybe even stops there, touching only the replacer and reviver, so splitting into three commits?

Done; that's
caed41d5c redux: Replace/revive ZulipVersion instances.

And then the last commit is the one that actually changes the reducer to maintain a ZulipVersion object instead of a string, and adds the migration to match.

Done as
2fa582efa redux: Store parsed ZulipVersion in Redux state, instead of string.

In fact if we wanted we could even split out as a fourth commit the changes to the action types, and so the changes at the various places we dispatch those actions. But that would add a bit of churn at the reducers, and the reducer + action changes aren't a particularly complex diff combined, so I think it's just as good to keep these together as one commit.

Makes sense. If you change your mind, I'm happy to split this out.

As always, I'm happy to be convinced that my approach, or explicit or implicit assumptions, are wrong. 🙂
I do have some questions. As I mentioned here, it's harder to test that escape() and unescape() are called in the correct places, than to test those functions themselves. So, those tests are left out. (In retrospect, this should mean
724a3befa redux [security]: Add remotedev-serialize wrapper with proper escaping.
gets a [DO NOT MERGE] tag — I'll go and add that right now.)

Another thing is that the types for renamedEntries and untouchedEntries, in the function returned by the makeObjectKeyRenamer factory, are very verbose, though I think they're correct:

    const renamedEntries: $ElementType<$Call<typeof objectEntries, InexactObject>, number>[] = [];
    const untouchedEntries: $ElementType<$Call<typeof objectEntries, InexactObject>, number>[] = [];

I can't use the return type of objectEntries directly because it's a $ReadOnlyArray, and I need to push to renamedEntries and untouchedEntries. So, that weird circumlocution.

(Added @ray-kraesig as a reviewer because he prompted the preventive measures about the security hole and may like to request/follow revisions to the implementation.)

I'm hoping
235458e deps: Add immutable and remotedev-serialize.
answers all your questions about the workflow for libdefs.

Indeed, very helpful!
In fact: would you move all those details out of the commit message, and into a file like docs/howto/libdef.md? It's fine to put it there with basically no further editing beyond adapting to Markdown -- just label it at the top as being notes from doing this once, and mention that edits based on future experience are welcome.
That way it's in a form where we can easily tweak the details of the workflow and maintain one updated version of them. And if it's added in the same commit, it still serves the purpose of documenting that commit's changes just as well.
(Probably some previous occasions where I've written steps in a commit message for how I made the commit would also have been good times to do this, too.)

I'm halfway through reading the "wrapper with proper escaping commit", and have to go AFK for dinner. One comment so far on that commit and some related bits in the commits before it: I don't love the "security!" branding of it. The upstream problem is a bug, for sure, and an important one. It's not dependent on there being any malicious user, and it's not necessary to try to classify it as a DoS or otherwise.

I'm halfway through reading the "wrapper with proper escaping commit", and have to go AFK for dinner. One comment so far on that commit and some related bits in the commits before it: I don't love the "security!" branding of it. The upstream problem is a bug, for sure, and an important one. It's not dependent on there being any malicious user, and it's not necessary to try to classify it as a DoS or otherwise.

Ah, OK, I'll tone that down as you describe. I was trying to match the tone Ray used in https://github.com/zulip/zulip-mobile/pull/4047#issuecomment-616916627.

On reading the SerializeEscaped commit in more detail, the main thought I have is that it feels like kind of a lot of code for what it's doing. The task this needs to do is a tricky one -- but it's one that feels like it shouldn't need to be more than a few lines of code.
Basically the issue is that this code in remotedev-serialize:
  function replacer(key, value) {
    if (value instanceof Immutable.Record) return refer(value, 'ImmutableRecord', 'toObject', refs);
    if (value instanceof Immutable.Range) return extract(value, 'ImmutableRange');
    if (value instanceof Immutable.Repeat) return extract(value, 'ImmutableRepeat');
    if (Immutable.OrderedMap.isOrderedMap(value)) return mark(value, 'ImmutableOrderedMap', 'toObject');
    if (Immutable.Map.isMap(value)) return mark(value, 'ImmutableMap', 'toObject');
    if (Immutable.List.isList(value)) return mark(value, 'ImmutableList', 'toArray');
    if (Immutable.OrderedSet.isOrderedSet(value)) return mark(value, 'ImmutableOrderedSet', 'toArray');
    if (Immutable.Set.isSet(value)) return mark(value, 'ImmutableSet', 'toArray');
    if (Immutable.Seq.isSeq(value)) return mark(value, 'ImmutableSeq', 'toArray');
    if (Immutable.Stack.isStack(value)) return mark(value, 'ImmutableStack', 'toArray');
    return value;
  }

needs the values returned in each of its cases to be mutually exclusive, so that the corresponding reviver logic can tell which case it was and reverse the transformation. And to do that it needs to be more careful when it gets to the final, default case -- all the other cases are distinguished by the __serializedType__ property, and this one just needs to avoid colliding with them.
I spent part of the morning working up a way to do that, to check my thinking, and I think it works. I'll post that in a bit.

I spent part of the morning working up a way to do that, to check my thinking, and I think it works. I'll post that in a bit.

https://github.com/zulip/remotedev-serialize/pull/1 -- please take a look!

I spent part of the morning working up a way to do that, to check my thinking, and I think it works. I'll post that in a bit.

zulip/remotedev-serialize#1 -- please take a look!

Great, thanks, looking now! Let's have a video chat sometime soon, when convenient.

OK, I've pushed my branch, using zulip/remotedev-serialize@5f9f759a4, as Greg put together yesterday (thanks again!). I'll go edit my comments that look like they're still waiting for a reply, but are now moot.

Oh, and this is still a draft because of
f7ccec358 [DO NOT MERGE] Proof-of-concept for state.narrows being Immutable.Map.
at the tip, as noted at https://github.com/zulip/zulip-mobile/pull/4047#issuecomment-616877699.

OK! Just pushed those changes.

Merged! Thanks again.
For the workflow: I think after seeing this experiment, what I'd like to do in a similar situation in the future is:

Have the main PR stop at a version that's mergeable.
For any non-mergeable demos, debugging, perf-testing, etc., have another branch on top of the main one. That branch could be a second, draft PR; or perhaps just mention the branch name and people can fetch it.

This way the usual PR workflows can behave as normal for the main branch.
Does that make sense? We can talk more in #mobile-team, too.

Merged! Thanks again.

Thank you! Glad to see a clearer way to replacing our objects-as-map, etc.

Does that make sense? We can talk more in #mobile-team, too.

Sure, that makes sense!


Fix and add test for go vet errors.

This would be a good test to add as a first with travis.
first suggested in: https://github.com/prometheus/prombench/pull/150

I wish to work on this. Can someone give me a few pointers?

I would like to work on this issue.


Better default file name and configurable file names.

Having a more sensible file name like version.properties, also allow the user to have configure their own file name.

Fixed with v2.0.1


Mouseover seems a bit inaccurate

I wanted to implement a function that highlights a mesh when hovering over it.
I used the onmouseover event of the mesh for that and then used a shader uniform in a custom shader that colors the hovered mesh.
When I tested it, is is a bit inaccurate, especially when using camera transformation.
Here is the testfile in a gist:
https://gist.github.com/judithhartmann/ae7746e5867fc64dd419
or when you want to download it directly
https://www.dropbox.com/s/2t6p06r1llaun46/bundleview (20).xhtml?dl=0
Why is this so inaccurate?

The mouseover implementation works as expected. The reason it seems to be inaccurate is that you're changing the mesh position (pos.z *= height) in your custom vertex shader. For picking, and thus for the mouseover implementation, the original unchanged mesh is used. If you remove the mentioned line from the vertex shader you will notice that mouseover works correctly.
The solution to the problem would be to use an Xflow operator (see below) on the mesh data to change the z-coordinate of the mesh's original position according to the height. This ensures that picking and mouseover work on the correct data.
Xflow.registerOperator("xflow.displace", {
    outputs: [{type: "float3", name: "position"}],
    params:  [
    	{type: "float3", source: "position"},
    	{type: "float", source: "height"},
    ],
    evaluate: function(displacedPosition, originalPosition, height, info) {
    	var count = originalPosition.length / 3;
        for (var i = 0; i < count; ++i) {
        	var idx = i * 3;
        	displacedPosition[idx] = originalPosition[idx];
        	displacedPosition[idx + 1] = originalPosition[idx + 1];
            displacedPosition[idx + 2] = originalPosition[idx + 2] * height[0];
        }
    }
});

The operator has to be used in the markup like this:
<mesh onmouseover="onIcicleHover(this)" id="2">
<data compute="position = xflow.displace(oposition, height)">
<!-- mesh data like position, normal, height and color goes here -->
</data>
</mesh>


camlp4: add new versions

Motivation for this change
This hasn't been updated in a while, and when using nixpkgs-provided ocaml, opam insists on having a system-provided camlp4 as well.
Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[X] aarch64-darwin

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

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

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

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

[X] Fits CONTRIBUTING.md.

I’m not sure I understand the motivation…
Please also fix the assertion in the lablgtk-extras package to disable it for OCaml ≥ 4.13 (before adding camlp4 for OCaml 4.13), thanks.

I’m not sure I understand the motivation…

context for the output below: nixpkgs-provided ocaml and opam in the system environment, opam set to use the system compiler
$ opam install camlp4
[...]
#=== ERROR while compiling camlp4.4.12+system =================================#
[...]
# output-file ~/.opam/log/camlp4-35546-fdcc53.out
[...]
$ sed 3q ~/.opam/log/camlp4-35546-fdcc53.out
Please install a system-wide version of camlp4.  This is necessary since you
are using OCaml 4.02.0 and the system compiler switch (which uses your
preexisting installation rather than compile one from scratch).

Please also fix the assertion in the lablgtk-extras package to disable it for OCaml ≥ 4.13 (before adding camlp4 for OCaml 4.13), thanks.

OK, I've walked this PR back to 4.12 for the time being; once it gets merged, I'll put in another PR to fix the assertion in lablgtk-extras, then another to expose camlp4 for 4.13. Does that seem sensible?

What I don’t get is why you want to install camlp4.
Nonetheless, this still depends on #147924 and #147996.

Once #148053 be merged, you’ll be able to drop the second commit.

Please remove the second patch. Then this will be ready to merge.

✓


[Bug]: date.getTime() is not a function (originating in oslo) -> but the core problem is that nodejs-adapter from Lucia doesn't convert expiresAt as a date

Package
@lucia-auth/adapter-postgresql
Describe the bug
So my first time deep delving into the codebase of Lucia so bear with me:

I first verified that expires_at is timestamp in the database with timezone.
When Lucia tries to validate the session it uses this.adapter.getSessionAndUser(sessionId); -> which will in turn go the database, fetch the session, convert the fields_with_underscores to fieldsWithUnderscores (ie. expires_at -> expiresAt).
Next it will use oslo to check if the session isWithinExpirationDate -> but the expiresAt has been loaded as a string even though it is defined as a timestamp with zone.

I am using the following adapter for Postgres
const adapter = new NodePostgresAdapter(pool, {
	user: 'auth_user',
	session: 'session'
});

Here is how the database session looks like when loaded from the db by lucia.
{
  userId: 'scp1x8lzy270qh5',
  id: 'rqcui4nih4o6lix32xmxp1zzbukr6jp5qozm7m0q',
  expiresAt: '2024-03-06 19:29:17.726+00',
  attributes: {}
}

Here is the stack trace where it fails ultimately:
TypeError: date.getTime is not a function
    at isWithinExpirationDate (file:///E:/Projects/my-project/node_modules/.pnpm/oslo@1.0.1/node_modules/oslo/dist/index.js:34:30)

This is a severe issue I can't circumvent since upgrading (still in progress obviously) to v3. Any insight into this issue is more than welcomed. 🙏

What version of node-postgres are you using?

Hmmm I don't have any such dependency installed (only pg) -> I don't know how it is working now...
I've tried running pnpm why node-postgres but it's definitely not present.

Can you share your Drizzle/db schema? There's also a new Drizzle adapter https://lucia-auth.com/database/drizzle

I don't think the drizzle schema matter since the table is instantied with the sql scripts provided in the v3 upgrade documentation. Here is the relevant bit from the upgrade:
ALTER TABLE session ADD COLUMN expires_at TIMESTAMPTZ;

UPDATE session SET expires_at = to_timestamp(idle_expires / 1000);

ALTER TABLE session
DROP COLUMN active_expires,
DROP COLUMN idle_expires,
ALTER COLUMN expires_at SET NOT NULL;
COMMIT;

Here is the SQL to verify that the column is defined as expected.
SELECT column_name, data_type FROM information_schema.columns where table_schema = 'public'
and table_name = 'session';

"column_name","data_type"
"id","character varying"
"user_id","character varying"
"expires_at","timestamp with time zone"

None the less here is the drizzle db schema definition on top of it (which at the moment Lucia should have no awareness off, but will try using the drizzle adapter so that I can start the app properly).
export const session = pgTable('session', {
	id: varchar('id', {
		length: 128
	}).primaryKey(),
	userId: varchar('user_id', {
		length: 15
	}).notNull()
	  .references(() => authUser.id),
	expiresAt: timestamp('expires_at', { mode: 'date' }).notNull()
});

I can confirm that using DrizzlePostgreSQLAdapter solves the issue and the expiresAt is deserialized as a Date succeessfully.
  userId: 'scp1x8lzy270qh5',
  id: 'rqcui4nih4o6lix32xmxp1zzbukr6jp5qozm7m0q',
  expiresAt: 2024-03-06T19:29:17.726Z,
  attributes: {}
}

The NodePostgresAdapter still has the issue I describe above which I managed to trace down to the getSession and to the transformIntoDatabaseSession. At no point there is a conversion from the raw select query values (which are apparently strings) into a Date.

Hm, that's weird since everything is tested

False positive test - has to be from what I've been observing. None the less I will check out the repository today or tomorrow and try to replicate the test (or explain why is it falsely positive).

Hm yeah the tests are fine. Can you try setting withTimezone to true in timestamp?

Hm yeah the tests are fine. Can you try setting withTimezone to true in timestamp?

Do you mean in the drizzle configuration or?

Yes

As I said, the problem can't be with drizzle since that is only used for descriptive purposes since:

The SQL table definition is the one as described in the Lucia v3 migration docs (you have a sample up top).
NodePostgresAdapter doesn't use or care about drizzle schema.

I just checked here -> and I see no getSession() test in question. Am I seeing this correct @pilcrowOnPaper ? (trying to create/replicate it now)

Just a small update, I managed to checkout the Lucia repo -> and I can verify that the test works. Trying to find now what is the discrepancy between my project and the setup - or potentially some other function is being used in the production code that is not used by the test -> that forces the expiresAt to be marshalled as string.

After a lot of digging I found the source of my issue -> and I think the docs should warn of this.
If you use drizzle ORM in your project you must use the DrizzlePostgreSQLAdapter as well, since the drizzle PostgreSQL driver will override the default handling for several database types.
See source code for drizzle-orm here:
https://github.com/drizzle-team/drizzle-orm/blob/0da1cba84da08bc0407821c9ab55b3e780ff5e3f/drizzle-orm/src/node-postgres/driver.ts#L41
Mystery solved.
@pilcrowOnPaper shout if you agree on the docs and if you would accept

Oh wow, that's sneaky. Yeah it should be probably mentioned in the docs - I guess at the top of the PostgreSQL database page.

I've encountered this as well and thank you for your contribution to the docs!

Literally just hit this one as well 😅 Thanks @callmeberzerker

For me, this is the solution: change the timestamp options.mode from "string" to "date".
From this:
expiresAt: timestamp("expires_at", {
    withTimezone: true,
    mode: "string",
  }).notNull(),

To this:
expiresAt: timestamp("expires_at", {
    withTimezone: true,
    mode: "date",
  }).notNull(),

So the session table schema will look something like this:
export const sessionsTable = pgTable("sessions", {
  id: text("id").primaryKey().notNull(),
  userId: text("user_id")
    .notNull()
    .references(() => usersTable.id),
  expiresAt: timestamp("expires_at", {
    withTimezone: true,
    mode: "date",
  }).notNull(),
});

I was also only able to fix this by using DrizzlePostgreSQLAdapter instead of the Neon or the NodeJS PostgreSQL adapters.

Yeah it's an issue with Drizzle since they override your driver's default date behavior

Getting the same error using Neon + NodePostgresAdapter with Prisma.
Fixed using:
class CustomNodePostgresAdapter extends NodePostgresAdapter {
  override async getSessionAndUser(
    sessionId: string
  ): ReturnType<
    (typeof NodePostgresAdapter)['prototype']['getSessionAndUser']
  > {
    const [session, user] = await super.getSessionAndUser(sessionId);

    if (session) {
      session.expiresAt = new Date(session.expiresAt);
    }

    return [session, user];
  }
}


tour: code (left side) talks about "c" but explaination (right side) talks about "ch"

Context: /concurrency/3
Describe your feedback here, including code if necessary
code (left side) talks about "c" but explaination (right side) talks about "ch"

CC @adg @campoy

Proposed change: https://go-review.googlesource.com/#/c/12200/

Change merged and deployed (will need to reset slide to see changes in code)


COPY failed: stat /var/lib/docker/tmp/docker-builder106972153/source: no such file or directory

COPY failed: stat /var/lib/docker/tmp/docker-builder106972153/source: no such file or directory
we are getting this error when try to build docker image, please suggest

Thanks for catching this; I just pushed up a fix. Creating a directory named source (empty) should be enough. If you have a file named TTS.tar.gz in that directory, it's used for the MozillaTTS source code instead of doing git clone.

Thanks for catching this; I just pushed up a fix. Creating a directory named source (empty) should be enough. If you have a file named TTS.tar.gz in that directory, it's used for the MozillaTTS source code instead of doing git clone.

Thanks for quick reply. I tried latest code but still getting below error
Step 23/28 : COPY model/${LANGUAGE}/ /app/model/
COPY failed: stat /var/lib/docker/tmp/docker-builder002504544/model/en: no such file or directory

Thanks for quick reply. I tried latest code but still getting below error
Step 23/28 : COPY model/${LANGUAGE}/ /app/model/
COPY failed: stat /var/lib/docker/tmp/docker-builder002504544/model/en: no such file or directory

This needs to be clearer in the README. I don't include any models in the repo, so you'll need to download one.
You need to put config.json, checkpoint_<number>.pth.tar, and scale_stats.npy into the model/en directory (assuming you're doing English).
If you want to add a vocoder too, create the directory model/en/vocoder and copy the corresponding vocoder files into it (config.json, checkpoint_<number>.pth.tar, and (optionally) scale_stats.npy).

This needs to be clearer in the README. I don't include any models in the repo, so you'll need to download one.
You need to put config.json, checkpoint_<number>.pth.tar, and scale_stats.npy into the model/en directory (assuming you're doing English).
If you want to add a vocoder too, create the directory model/en/vocoder and copy the corresponding vocoder files into it (config.json, checkpoint_<number>.pth.tar, and (optionally) scale_stats.npy).

sorry i missed that part
thankyou for help, it worked.

sorry i missed that part
thankyou for help, it worked.

thanks

thanks


Implement auto-completion for zsh, bash, and PowerShell for the flutter tool

Rather than attempt to look up args at runtime (which cause artifacts to be downloaded or compiled), the SDK could generate a script/data format for different shells to consume and check this in during development (since the args/commands do not change frequently). This should allow completion to work provided the SDK is present, without requiring any bounces through the Dart SDK.
TBD: more details
ZSH completions: https://github.com/zsh-users/zsh-completions/blob/master/src/_flutter
Some PowerShell docs: https://docs.microsoft.com/en-us/dotnet/core/tools/enable-tab-autocomplete

I vote +1 for fish

This would close https://github.com/flutter/flutter/issues/39161 and https://github.com/flutter/flutter/issues/31293.

Please, don't forget 🐟 fish shell

Got a completer here if it's any help.
Not using flutter myself at the moment though so there are likely some issues.


Splay-Tree.py

Assigned Issue Number ?
#Issue_Number
Language(s) Opted ?
C/C++/Python/Java ...
Number of file(s) added or updated ?
1/2/3/4/...
Name and location of the file(s) ?
Folder => Sub_Folder => ... => File.extension
Checklist

[x] I've followed the contributing guidelines
[x] The content added isn't directly copied from any sources like gfg, tutorialpoint, etc.
[x] Input has been taken dynamically.
[x] I've referred the correct issue number.
[x] Comments have been added
[x] I've  synced-up my forked repo.
[x] Ain't pushing from the main branch.

Hello, I just added a Splay Tree solution in python. I am new to Hacktoberfest, so will that contribution count? Thank you !


drop python2 support

@susebot run deploy

@susebot run deploy

@susebot run deploy

@susebot run deploy

@kshtsk mind taking another look?

Looks great, the tests passed too.
About to ask suse bot to another run.

@susebot run deploy

@susebot run deploy

https://ceph-ci.suse.de/job/teuthology-deploy-ovh/255/testReport/junit/(root)/teuthology/smoke_basic__clusters__fixed_3_cephfs_openstack__objectstore_bluestore_bitmap_supported_random_distro$__centos_8__tasks_rados_python_/attachments/teuthology-smoke-3.log
Interesting failure.

@tchaikov it's green now,
thanks for the PR.


Wannna Static compilation

Hi，great job for this，just asking that how can i static compilate slowhttptest

Interested about this too, I'm trying to download a simple binary to be able to use it in user-land (so no package manager install) but I can't find any easy way to do this.


mupx reconfig failing

Everything perfect with mupx deploy. But after mupx reconfig I get this:
Started TaskList: Updating configurations (linux)
[<IP_ADDRESS>] - Sending environment variables
[<IP_ADDRESS>] - Sending environment variables: SUCCESS
[<IP_ADDRESS>] - Starting app
[<IP_ADDRESS>] x Starting app: FAILED

	-----------------------------------STDERR-----------------------------------
	dial unix /var/run/docker.sock: permission denied. Are you trying to connect to a TLS-enabled daemon without TLS?
	time="2015-05-12T09:22:47Z" level=fatal msg="Error: failed to remove one or more containers"
	dial unix /var/run/docker.sock: permission denied. Are you trying to connect to a TLS-enabled daemon without TLS?
	time="2015-05-12T09:22:47Z" level=fatal msg="Error: failed to remove one or more containers"
	time="2015-05-12T09:22:47Z" level=fatal msg="Post http:///var/run/docker.sock/v1.18/images/create?fromImage=meteorhacks%2Fmeteord%3Alatest: dial unix /var/run/docker.sock: permission denied. Are you trying to connect to a TLS-enabled daemon without TLS?"
	-----------------------------------STDOUT-----------------------------------
	----------------------------------------------------------------------------
Completed TaskList: Updating configurations (linux)

I use ssl option if that matters.

What's the OS you use? and what's the cloud?
On Tue, May 12, 2015 at 5:36 PM Artem Polikarpov<EMAIL_ADDRESS>wrote:

I use ssl option if that matters.
—
Reply to this email directly or view it on GitHub
https://github.com/arunoda/meteor-up/issues/425#issuecomment-101253026.

Ubuntu. Amazon EC2.

On 12 May 2015, at 15:10 , Arunoda Susiripala<EMAIL_ADDRESS>wrote:
What's the OS you use? and what's the cloud?

Okay. I got it. We need to add the current user to the docker user group.
We need to automate that as well.
Will do it.
On Tue, May 12, 2015 at 5:41 PM Artem Polikarpov<EMAIL_ADDRESS>wrote:

Ubuntu. Amazon EC2.

On 12 May 2015, at 15:10 , Arunoda Susiripala<EMAIL_ADDRESS>wrote:
What's the OS you use? and what's the cloud?

—
Reply to this email directly or view it on GitHub
https://github.com/arunoda/meteor-up/issues/425#issuecomment-101253662.


Thank you so much for this project !

Thank you so much for this project and for doing it in swift.
however, I'm unable to use it and I don't understand what's wrong my code.
I've declared the outlet as
@IBOutlet var label: LTMorphingLabel!
then setting the text as
label.morphingEffect = .Scale
label.center = CGPointMake(160, 284)
label.text = "I'am a test label"
self.view.addSubview(label)
but for some reason the text doesn't change, plus I can't seem to run your project on simulator. it's successfully finish to load it, but nothing appear on simulator. thank you very much for any help .

It's unnecessary to addSubview(label) while you are using IBOutlet to connect to the existing label in your Xib or storyboard.

Thank you for the quick answer, Matter of fact I trying to add it without and IBOutlet, cause i'm writing everything programatically.
var label = LTMorphingLabel(frame: CGRectMake(0, 0, 200, 21))
label.morphingEffect = .Scale
label.text = "I'am a test label"
self.view.addSubview(label)
this code not working either.

The label must be insert into the view hierarchy before animating any properties. So you'd better move the addSubview method up.
let label = LTMorphingLabel()
label.frame = CGRectMake(50, 100, 300, 20)
view.addSubview(label)
label.text = "I'am a test label"

Yup it’s working now, I didn’t figure out I need to set the Label to different value before the effect occur.

On Jan 26, 2015, at 3:47 AM, Lex Tang<EMAIL_ADDRESS>wrote:

The label must be insert into the view hierarchy before animating any properties. So you'd better move the addSubview method up.
let label = LTMorphingLabel()
label.frame = CGRectMake(50, 100, 300, 20)
view.addSubview(label)
label.text = "I'am a test label"
—
Reply to this email directly or view it on GitHub.


Question: Can I customize prompt like denite's option call denite#custom#option('default', 'prompt', '>')

the option call denite#custom#option('default', 'prompt', '>') in denite can define the look of the prompt
leaderf uses >>> as the default prompt, it will change to >F> if using full path mode.
But there's already a message like  LeaderF  File  FullPath on the popup, can i just remove the >>> thing or replace to one static character

ok,
any chance to add in something like that?


[api-minor] Move the canvasFactory option into getDocument

Rather than repeatedly initializing a canvasFactory-instance for every page, move it to the document-level instead.
Please note: This patch is written using the GitHub UI, since I'm currently without a dev machine, so hopefully it works correctly.

/botio test


[3689] Hook up HESA background job with import service

Context
https://trello.com/c/pEaVj82M/3689-hook-up-the-hesaretrievecollectionjob-to-create-update-trainees
Changes proposed in this pull request

Map HESA codes for degree subjects
Finish off Hesa::RetrieveCollectionJob, hooking it up to Trainees::CreateFromHesa
Add data migration to backfill provider UKPRN's
Minor tweaks and fixes after testing import on real HESA data

Guidance to review

Download SQL dump from DTTP import environment and load it locally
Run rake data:migrate VERSION=20220224150322
Add the following to your development.local.yml

hesa:
  current_collection_reference: C21053
  current_collection_start_date: 2022-01-15
  username: <hesa_username>
  password: <hesa_password>

features:
  sync_from_hesa: true

Run Hesa::RetrieveCollectionJob.perform_now in console or change cron schedule in config/sidekiq_cron_schedule.yml to run every minute and load Sidekiq locally with bundle exec sidekiq. This allow you to run the job in the background.

If you to see some stats, you could also run the following script:
collection_reference = Settings.hesa.current_collection_reference
base_url = Settings.hesa.collection_base_url
updates_since = HesaCollectionRequest.next_from_date
xml_response = Hesa::Client.get(url: "#{base_url}#{collection_reference}/#{updates_since}")
xml_doc = Nokogiri::XML(xml_response)
total_nodes = xml_doc.root.children.size

new_trainees_count = 0
trainee_persisted_count = 0
trainees_unpersisted = []

puts "Total student nodes: #{total_nodes}"
bar = ProgressBar.create(total: total_nodes)

xml_doc.root.children.each do |student_node|
  trainee, ukprn = Trainees::CreateFromHesa.call(student_node: student_node)

  if trainee.persisted?
    trainee_persisted_count += 1
    new_trainees_count += 1 if trainee.id_previously_changed?
  else
    trainees_unpersisted << "#{trainee.errors.full_messages} (ukprn: #{ukprn})"
  end

  bar.increment
end

puts "Trainees created: #{new_trainees_count}"
puts "Trainees updated: #{trainee_persisted_count}"
puts "Trainees not updated: #{trainees_unpersisted.size}"

Important business

Does this PR introduce any PII fields that need to be overwritten or deleted in db/scripts/sanitise.sql?
Does this PR change the database schema? If so, have you updated the config/analytics.yml file and considered whether you need to send 'import_entity' events?

 Hook up the Hesa::RetrieveCollectionJob to create/update trainees


Start using stylelint

I'm not using styles in the CMINTS so that's might be something related to actually websties instead.


update the README

The current README is from our PoC, now we added several loaders and other features.
A brush up would be super nice!

will be done in #99


VAI Audit Fixes

Description
Update global index and repay amount formulas to prevent compounding:
globalMintIndex = globalMintIndex + (ratePerBlock * (currentBlock - lastUpdatedBlock))
repayAmount = ((mintedVAIOfUser - pastInterestOfUser) * (globalMintIndex - userMintIndex)) + mintedVAIOfUser

Resolves #
Checklist

[ ] I have updated the documentation to account for the changes in the code.
[ ] If I added new functionality, I added tests covering it.
[ ] If I fixed a bug, I added a test preventing this bug from silently reappearing again.
[ ] My contribution follows Venus contribution guidelines.

can you add a positive and a negative test case for each fix?

@defcon022 I have added the tests


postal.preserve: Still taking a ConduitJS dependency

Hi Jim,
I hope all is well.
If you recall, I was the one who requested [what became] postal.preserve and postal.request-response.  I am starting a new project and, of course, set out to bring down postal.
I noticed that you have removed the ConduitJS dependency from postal, but it still exists in postal.preserve, which I really need.  Will this be a problem and, if so, when do you think you might remove the ConduitJS dependency?
Thank you.
Eric

bump!

@ifandelse is the preserve thing abandoned?


[DO NOT MERGE] PURCHASE-1492, PURCHASE-1489: "Save" should be "Watch" on all lots, Remove "from artsy specialist" in description for auction artworks

PURCHASE-1492
Instead of the heart icon and "Save" text, for auction works we want a bell icon and "Watch lot" text.
Note: This depends on a Palette PR currently in review
When not saved:

When saved:

PURCHASE-1489
The text beneath "From Artsy Specialist" is not usually written by Artsy staff and provided by partner for auction works. We are removing this label for auction works.
This PR removes the label seen in the screenshot below:

Fails

:no_entry_sign:
No CHANGELOG added.

Warnings

:warning:
This PR comes from a fork, and won't get JS generated for QA testing this PR inside the Emission Example app.

  Generated by :no_entry_sign: dangerJS

@lilyfromseattle you've submitted this pull request from your fork (https://github.com/lilyfromseattle/emission/) instead of Artsy's repo (https://github.com/artsy/emission/). Can you push to Artsy's repo and re-open this pull request? Thanks!

@ashfurrow Yup my bad!


Accessibility: fixes for keyboard and screen reader users

:wave:
This pull request tries to fix most of the accessibility issues I stumbled upon.
I know it's a somewhat scary big pull request but if it's any kind of reassuring, it's all split in detailed commits. I recommend reviewing the PR commit by commit, starting with the oldest.
A few parts are a bit more sensitive than others, mainly the very last commit that refactors a bit of code. I guess I could take out this commit of this PR. But lots of things are pretty straightforward HTML changes, I figured it didn't warrant for 20+ pull requests.
I'd love your input on all this, I'm also available to talk about it live.
I didn't touch any of the tests as I wanted to show you first what I did before.
Besides the tests, there will be a few other things to complete afterwards so that we can say we have a full accessible app. And it will certainly be useful to add some tooling to prevent future issues. But this is already a good start!

@manuhabitela any idea why the tests are failling ? I am eager to see this merged


REPLY_MARKUP_TOO_LONG

I'm trying to pass a list of cities through keyboard, but i'm receiving:
Unhandled rejection Error: 400 {"ok":false,"error_code":400,"description":"REPLY_MARKUP_TOO_LONG"}
Any ideas?

Telegram has a buttons limit of 100 (or 150 can't remember with precision), over this limit return error!

Thanks!


Decode error in postprocess

I'm applying your theme to our Sphinx documentation I get the following error
Extension error (sphinxawesome_theme.postprocess):
Handler <function post_process_html at 0x00000157905FE790> for event 'build-finished' threw an exception (exception: 'charmap' codec can't decode byte 0x9d in position 24797: character maps to <undefined>)

Sphinx version: 3.5.2
Python: 3.8.8 (64 bit)
Awesome-theme:  1.19.2
Platform: Window 10
The html seems to be rendered, but the end of the page shows the following:

It doesn't seem to be related to any specific file. Even with only a toc the error persists.

Appears related to double quotes. Removing all double quotes from the text solves the problem. I've tried escaping the double quotes in multiple ways, nothing helps.

Hi, thank you for filing this issue and testing a few conditions. I have an idea, but I'm not sure if it will address the problem, as I don't test on Windows at the moment. It looks similar to this StackOverflow issue, so I'll try to include the encoding as well.

@plinnie could you try using version 1.19.3 (I just released a bugfix that might fix this issue, but I haven't tested this on Windows yet)?

This seems to have fixed things, thanks!


refactor(protocol): simplify protocol for single prover/proof

This is an attempt to simply the protocol design by:

[X] Allowing only one zk-proof per block fork-choice (besides the oracle proof, if enabled). This is also a preparation for a future release that enables proof-auction.
[X] Removing halt because of above
[X] Oracle prover is enabled if "oracle_prover" is not address(0), no flag needed.
[X]  Inlining a few small functions
[X] Do not mint TKO reward to provers when blocks are verified, instead, we keep their outstanding balances and provers can withdraw later.
[x] Fixing tests (@cyberhorsey If you search for TODO(Jeff): it fails here occasionally. you will notice I commented out one line to make the test pass. Otherwise, that line will occasionally fail. It will be great if you can fix it.)

I would even suggest that we should get this version tested and merged ASAP, maybe it can make into the alpha-2 testnet release.
Please review carefully
This branch
·-------------------------------------------|---------------------------|---------------|----------------------------·
|           Solc version: 0.8.18            ·  Optimizer enabled: true  ·  Runs: 10000  ·  Block limit: 6718946 gas  │
············································|···························|···············|·····························
|  Methods                                                                                │
··························|·················|·············|·············|···············|··············|··············
|  Contract               ·  Method         ·  Min        ·  Max        ·  Avg          ·  # calls     ·  usd (avg)  │
··························|·················|·············|·············|···············|··············|··············
|  TestTaikoL1            ·  proposeBlock   ·      89859  ·     124071  ·       117964  ·          23  ·          -  │
··························|·················|·············|·············|···············|··············|··············
|  TestTaikoL1            ·  proveBlock     ·     425690  ·     425762  ·       425741  ·          11  ·          -  │
··························|·················|·············|·············|···············|··············|··············
|  TestTaikoL1            ·  verifyBlocks   ·      54302  ·      88172  ·        65094  ·          11  ·          -  │
··························|·················|·············|·············|···············|··············|··············

main
·-------------------------------------------|---------------------------|---------------|----------------------------·
|           Solc version: 0.8.18            ·  Optimizer enabled: true  ·  Runs: 10000  ·  Block limit: 6718946 gas  │
············································|···························|···············|·····························
|  Methods                                                                                │
··························|·················|·············|·············|···············|··············|··············
|  Contract               ·  Method         ·  Min        ·  Max        ·  Avg          ·  # calls     ·  usd (avg)  │
··························|·················|·············|·············|···············|··············|··············
|  TestTaikoL1            ·  proposeBlock   ·      93401  ·     127637  ·       122756  ·          29  ·          -  │
··························|·················|·············|·············|···············|··············|··············
|  TestTaikoL1            ·  proveBlock     ·     468502  ·     468766  ·       468565  ·          11  ·          -  │
··························|·················|·············|·············|···············|··············|··············
|  TestTaikoL1            ·  verifyBlocks   ·      65026  ·      93158  ·        73942  ·          11  ·          -  │

I haven't had time to review this but I think a lot of it is duplicated from my other PR? But I guess this one can be merged for alpha-2.

@dantaik fixed the test you were talking about, we also can remove the multiple provers test as well now from proofReward.test.ts so I did that. However you have a failing test now in tokenomics with regards to your withdrawBalance function.


Nuxt 2 support

Hi! Thanks for this module
Do you think providing compatibility for Nuxt 2 could be possible? That would make this module incredible.
Check out the code for tailwindcss module for how it provides compatibility for both Nuxt 2 and 3 from a single codebase. 🙂

I will take a look and see how much effort it will be but right now I'll say it's doubtful


Adaptive card & task module interaction from meeting apps

As per the documentation , it is mentioned that
For Anonymous user:

Bot is not available
Interactions in the meeting chat are allowed for adaptive card
Interactions in the meeting chat from Adaptive Card are allowed for task modules

For Guest user

Bot is not available

But we see ambiguity how user can interact in meeting chat for adaptive card & task module if bot is not available.
We verified with custom bot and observed that

For anonymous users meeting app is not accessible in teams(Desktop/ web/ Android) and user is not able to interact with adaptive card as well.
For guest users, user is able to find the app and interact with adaptive card from Desktop & web but not from Android.
For external users, user is able to find the app and interact with adaptive card from Desktop & web but not from Android.

Could you please update the documentation to clarify this.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 33fae5e3-2d98-381c-1b16-82c0acc6f716
Version Independent ID: 6124f090-bdb7-c575-2614-60ec85a947b9
Content: Unified meetings apps - Teams
Content Source: msteams-platform/apps-in-teams-meetings/meeting-app-extensibility.md
Product: msteams
GitHub Login: @surbhigupta
Microsoft Alias: lajanuar

We will check on it and get back to you.

@SubbaReddi - Apologies for delay. Could you please share which sample you are using for this so that we can check at our end?

@SubbaReddi - We checked it from our end. For anonymous users meeting app is not accessible in teams(Desktop/ web/ Android) and user is not able to interact with adaptive card as well as mentioned .
For guest users, user is able to find the app and interact with adaptive card from Desktop & web but not from Android. Noticed that in this doc its mentioned  "The app won't appear in meetings for the mobile clients".
@surbhigupta12 - Need to update the documentation here

@SubbaReddi - Could you please confirm is your issue resolved?


Documentation creator

Hi all,
You still didn't do the documentation part, and so did we.
I need some clarification regarding the documentation. In your project, who is going to do the documentation part?
Can you please respond?

Pooja is doing.


[4pt]  - Create feature: add new comment - Student B

Implement the "add new comment" form on the Comments pop up according to the wireframe:

When the user clicks on the "Comment" button, the data is recorded in the Involvement API and the screen is updated.

https://github.com/Kashif-Saleem-Ghuman/JavaScript-Capstone-Project/pull/30


Bug 2244052: [release-4.12] upgrade go version to 1.20

upgraded go version to 1.20

Closing this PR as we deemed this fix irrelevant


jerryscript.net links all give 404 errors

The web site jerryscript.net has bad links giving 404 errors. For example the Internals link send you to http://jerryscript.net/jerryscript/internals/ instead of  http://jerryscript.net/internals/ ditto for all other links on the home page.

How can I help you guys to fix the gh-pages branch? It somehow seems to miss many contents, like the API examples. Is the gh-pages branch the real server that hosts the jerryscript.net domain?
Would love to help you guys with the website, so you can focus more on the runtime.

I created a pull request (already linked) that fixes the base url messup. The links afterwards should work, the new domain jerryscript.net is used (as already present in the CNAME file).

#1340 Brings the web site into a working state again.
Now tools/update-webpage.sh needs to be updated accordingly (to emit site.github.url) because otherwise the next manual sync of the web site will lead to a broken page again.

Fixed.


fix audio interface name in setup

closes #2274

read out audio interface names with sudo to get the correct entries
use the first entry as default iface name
fallback to PCM if no entries are present (e.g. Pi Zero)
Wiki has been updated for usage of sudo amixer scontrols

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 76.82%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
633

Relevant Lines:
824

💛  - Coveralls


Make target sorting optional

Sorting targets could potentially mess up linker order.

Same for making targets unique.


Bump docs theme and align React version w/ other docsets

Thank you !!! (Also, awesome voice over 👀 💜 👏 !)


feat: adds OriginRequest field to UnvalidatedIngressRule struct.

Description
Add OriginRequest field to UnvalidatedIngressRule struct documented here.
Fixes: #1098
I'm aware #1099 but it seems like not active so I created this.
Has your change been tested?
Yes
Types of changes
What sort of change does your code introduce/modify?

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[x] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[x] I have added tests to cover my changes.
[x] All new and existing tests passed.
[x] This change is using publicly documented (api.cloudflare.com or developers.cloudflare.com) and stable APIs.

@jacobbednarz If not satisfied any requirements, let me know.

@jacobbednarz any chances to get this one rolling? i think a lot of people were waiting for this issue https://github.com/cloudflare/terraform-provider-cloudflare/issues/1756 to be resolved, but apparently, the solution to this feature in Terraform provider is still not usable because of the inability to configure the origin requests for ingress rules...

@jacobbednarz I thought it is publicly documented here. Is it not sufficient or beta feature?
https://api.cloudflare.com/#cloudflare-tunnel-configuration-put-configuration
It would be helpful if you could tell me what exactly is needed so that next time I don't send a pull request that doesn't meet your requirements :)

I thought it is publicly documented here. Is it not sufficient or beta feature?
https://api.cloudflare.com/#cloudflare-tunnel-configuration-put-configuration

The example is not public documentation that implies a stable API contract. The attributes, their types and what their description are missing.

It would be helpful if you could tell me what exactly is needed so that next time I don't send a pull request that doesn't meet your requirements :)

This is the same issue that has was mentioned in #1099 and why it hasn't been merged or picked up again. We don't yet have public documentation so it won't land in our SDKs that rely on a stable interface.

config parameter is JSON in JSON and its schema is documented here.
I understood it might be changed to attributes and strict types when it is stable though.
Do you know when it will be stable, by the way?

@jacobbednarz sorry, but who is responsible for the documentation and how to push them while being an enterprise CF customer? the amount of bureaucracy is just ridiculous, the feature is there, it's blocking other long awaited tunnel config feature in Terraform provider, but since for some reason some other party who is not even here and not in context can't update the docs for X months, we can't get it implemented to finally be able to properly/fully cover CF ZT tunnels with IaC

@hatemosphere you can speak with your account team who can track the priority of the documentation changes against the teams' backlog.

This is really important, how we can move this forward?

@jacobbednarz I'm also an enterprise customer, and this is also blocking us. Do you have any news on when this can be merged and used?

Codecov Report

Merging #1138 (b58dc47) into master (a5dc232) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master    #1138   +/-   ##
=======================================
  Coverage   49.07%   49.07%
=======================================
  Files         134      134
  Lines       13091    13091
=======================================
  Hits         6425     6425
  Misses       5162     5162
  Partials     1504     1504

Impacted Files
Coverage Δ

dns.go
45.05% <ø> (ø)

tunnel.go
41.39% <ø> (ø)

Docs: https://developers.cloudflare.com/api/operations/cloudflare-tunnel-configuration-put-configuration

Wow, merged! Thank you @jacobbednarz
Now we can move forward with https://github.com/cloudflare/terraform-provider-cloudflare/issues/2072


Add support for D3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS in RTAS build

Add support for D3D12_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_DESC::Inputs::DescsLayout with value D3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS. This may require multiple passes when mapping resource values for build RTAS calls.
Dx12ResourceValueMapper::ProcessResourceMappings supports multiple passes to map indirectly referenced resource values. For example see how ResourceValueType::kIndirectArgumentDispatchRays is handled in ProcessResourceMappings->MapResources->MapValue. The solution for D3D12_ELEMENTS_LAYOUT_ARRAY_OF_POINTERS may be similar: add a new ResourceValueType and handle the indirectly referenced values in a second pass.

Completed by #1547