How to consistently specify 1D/2D slices from higher-dimensional data

I'd like to ask for your opinion once more...
in #559 we (mainly @FelipeSantillan :wink:) are implementing the ability to plot 1D lines from 2D data (which will eventually be extended to 1D lines from 3D data as well; we already have 3D data to 2D slice).
From a usability point of view, I'd like a useful naming system to indicate where and how the reduced dimension data is extracted. Right now, we have for 3D -> 2D:

slice_axis can be :x, :y, or :z, and gives the slice normal orientation
slice_axis_intercept is a scalar value, indicating the position on the slice_axis where the slice is to be created

However, these concepts do not translate well to 2D -> 1D or 3D -> 1D, since slice_axis would have to be the normal direction of the line one would like to extract to be consistent, but should be the parallel direction to be intuitive (who would specify a line plot by giving its normal, right?).
Thus, I think we should come up with a better naming scheme that naturally extends to other dimensions as well. The only one I was able to come up with is the combination of slice and position, where

3D -> 2D: slice can be :xy, :yz, :xz; position denotes the 1-dimensional intercept on the slice normal
3D -> 1D: slice can be :x, :y:, :z;  position is a 2-dimensional point on the plane orthogonal to the line axis
2D -> 1D: slice can be :x, :y;  position is a 1-dimensional point on the axis orthogonal to the line axis

Although this seems to be a fairly consistent approach for all three possibilities, to me it feels like there is room for improvement to make it also intuitive, but I am at a loss here. Any ideas?

I like the choice of :x, :y, :z, :xy, :yz, :xz in your suggestion. However, I find it a bit hard to remember what ind of input position should accept. Why don't we just specify any point on the requested linear submanifold? That is the most basic approach most people learn in school, I guess:

3D → 2D: Give me a point of the plane (point = (x, y, z)) and two (linearly independent) directions (:xy, :yz, :xz)
3D → 1D: Give me a point of the line (point = (x, y, z)) and a (non-vanishing) direction (:x, :y, :z)
2D → 1D: Give me a point of the line (point = (x, y)) and a (non-vanishing) direction (:x, :y)

This seems to be consistent and intuitive for me. Then, you can extract the position you described above given the knowledge of the directions.

@ranocha Thanks for the feedback! I had briefly thought about your suggestion before, but I thought it might be confusing for users to specify a point of which 1 or 2 components are irrelevant and will be discarded. OTOH, this might make it amenable to a future feature extension where the slices do not have to be axis-parallel anymore...
What about the names for the keywords. Does sound slice and point sound good to you for all three cases, or do you have another suggestion?

point is fine for me. slice sounds somewhat two-dimensional for me, so it doesn't really fit for the 1D cases. What about direction or something like that?

I agree with your objection against slice, I just thought that it fits nicely to the slicing of arrays (extracting a sub dimension) and also it is unambiguous (if somewhat unusual for a 1D extraction).
direction is already used for the signed spatial directions x, y, z and, IIRC, even described in conventions, which is why I would prefer something else. Also, it is not very self-descriptive (direction of what?).
But, I have to admit, I don't have a better name either.

Hmm, than slice is probably just okay.


Removed setup-node in the release Workflow

Current dependencies on/for this PR:

main

PR #277   👈

This comment was auto-generated by Graphite.


✨ Add linting to UI

Is there an existing issue for this?

[X] I have searched the existing issues

Suggestion
Jetbrains CLI linter tool does not currently support net7.0. Update when support has been added by the vendort
Possible Implementation
No response
Anything else?
No response

This is complete


Make fork button clickable

Why not making the Stars button work too? It should go to https://github.com/Mojang/brigadier/stargazers.

@theel0ja sent Stars clickable as PR to your patch-1 branch

@JarvisCraft merged.
https://github.com/theel0ja/brigadier/pull/1

The PR title should be changed.


Documentation may not address the handling of new Django version releases.

Hi new user here. I want to make my own cookiecutter. I've taken the tutorials on @audreyr's page and I think I see how this works. I am however confused as to how I would handle new releases of Django. Would I have to manually update files if their module import locations change? Sorry in advance if I've missed anything in the docs.

How to update the django version is outside the scope of this project.
Probably the documentation you are looking for is this: https://docs.djangoproject.com/en/1.10/howto/upgrade-version/
Additionally, here are some good tips:
https://torchbox.com/blog/django-guide-upgrading-your-application/

I was referring to the cookiecutter, not the Django application. For example in the users app there is a preexisting urls.py, models.py, etc., before Django is installed by the requirements files. If a module import location on any of these files changes under a new version of Django would I need to modify these files manually? Thanks.

If I understand the question, modifications will be only be necessary if these modifications are described in the Django release notes of the version of Django that you updated.

cookiecutter-django was planned only to start a project, and not upgrade an existing project.


Blosc extension use bytes

Currently the blosc extension uses array.array for memory allocation and to minimize buffer copies. This is also possible using bytes, via PyBytes_FromStringAndSize(NULL, nbytes), PyBytes_AS_STRING and Py_SIZE, an example is the python-zstd extension.
Returning bytes would be marginally better for compatibility, e.g., the HDFS mapping implementation can only handle bytes, and so needs to copy array to bytes if given array.

Source code for python-lz4 extension is also useful, shows that Py_SIZE just sets the size of a bytes object without actually resizing memory. LZ4 extension uses _PyBytes_Resize unless there is only a small difference in compressed size, in which case it doesn't resize and just uses Py_SIZE.


Add Create Feature to UI

Made the following changes:

Added Create a scenario for BDD test in recommendations.feature
Enables a function to make "I enter "{value}" in the "{field_name}" field" work

Hi Yihong,
I noticed that you added a new function to enter values in the input box. I wonder if that is because the set function that already existed in the code doesn't work for inputting values. Because when I implemented the Query feature, I found that the set function is used to input values and the select function is used to select value from dropdown (as the example I copied below).

And I set the "Name" to "Happy"
And I set the "Category" to "Hippo"
And I select "False" in the "Available" dropdown
And I select "Male" in the "Gender" dropdown

Yes! Because I am not sure will the old function work well when enter
integers. They use set as you wrote but all of them are string. I don’t
mind change to the old one if they work!
On Thu, Nov 14, 2024 at 18:06 Muyun Li @.***> wrote:

Hi Yihong,
I noticed that you added a new function to enter values in the input box.
I wonder if that is because the set function that already existed in the
code doesn't work for inputting values. Because when I implemented the
Query feature, I found that the set function is used to input values and
the select function is used to select value from dropdown (as the example I
copied below).
And I set the "Name" to "Happy"
And I set the "Category" to "Hippo"
And I select "False" in the "Available" dropdown
And I select "Male" in the "Gender" dropdown
—
Reply to this email directly, view it on GitHub
https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_CSCI-2DGA-2D2820-2DFA24-2D003_recommendations_pull_72-23issuecomment-2D2477587495&d=DwMFaQ&c=slrrB7dE8n7gBJbeO0g-IQ&r=8gynJW5BsFD_0D6-aDBH1A&m=UewLSF8a-Oyf2TlriGi1C_J5VTBI4ITVioL2pWhetHYzUDotcE_mIS2j9CtHrhQY&s=LSTuXUgx0tAUlNCD4-1_dFtC0LBe--_hQqy_8lVYZj8&e=,
or unsubscribe
https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_notifications_unsubscribe-2Dauth_BDZJDMTG3KT2OCQH2XUZCND2AUUI3AVCNFSM6AAAAABRZU74K6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDINZXGU4DONBZGU&d=DwMFaQ&c=slrrB7dE8n7gBJbeO0g-IQ&r=8gynJW5BsFD_0D6-aDBH1A&m=UewLSF8a-Oyf2TlriGi1C_J5VTBI4ITVioL2pWhetHYzUDotcE_mIS2j9CtHrhQY&s=hHfiEJTPlIzmmO8kd6i4gD_Dr4Tv9-ndp2oICh3T1GA&e=
.
You are receiving this because you authored the thread.Message ID:
@.***>

Yes! Because I am not sure will the old function work well when enter integers. They use set as you wrote but all of them are string. I don’t mind change to the old one if they work!
…
On Thu, Nov 14, 2024 at 18:06 Muyun Li @.> wrote: Hi Yihong, I noticed that you added a new function to enter values in the input box. I wonder if that is because the set function that already existed in the code doesn't work for inputting values. Because when I implemented the Query feature, I found that the set function is used to input values and the select function is used to select value from dropdown (as the example I copied below). And I set the "Name" to "Happy" And I set the "Category" to "Hippo" And I select "False" in the "Available" dropdown And I select "Male" in the "Gender" dropdown — Reply to this email directly, view it on GitHub https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_CSCI-2DGA-2D2820-2DFA24-2D003_recommendations_pull_72-23issuecomment-2D2477587495&d=DwMFaQ&c=slrrB7dE8n7gBJbeO0g-IQ&r=8gynJW5BsFD_0D6-aDBH1A&m=UewLSF8a-Oyf2TlriGi1C_J5VTBI4ITVioL2pWhetHYzUDotcE_mIS2j9CtHrhQY&s=LSTuXUgx0tAUlNCD4-1_dFtC0LBe--_hQqy_8lVYZj8&e=, or unsubscribe https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_notifications_unsubscribe-2Dauth_BDZJDMTG3KT2OCQH2XUZCND2AUUI3AVCNFSM6AAAAABRZU74K6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDINZXGU4DONBZGU&d=DwMFaQ&c=slrrB7dE8n7gBJbeO0g-IQ&r=8gynJW5BsFD_0D6-aDBH1A&m=UewLSF8a-Oyf2TlriGi1C_J5VTBI4ITVioL2pWhetHYzUDotcE_mIS2j9CtHrhQY&s=hHfiEJTPlIzmmO8kd6i4gD_Dr4Tv9-ndp2oICh3T1GA&e= . You are receiving this because you authored the thread.Message ID: @.>

I think it should work for integers but you can check that. Product id and recommended id (and like & dislike as well) parsed from the query string are transformed into integers as in line 55 of recommendation_steps.py.

And also, since the recommendation type and status are set to be selections instead of input box on the UI, the corresponding features should be like below otherwise the behave would fail:
And I select "False" in the "Available" dropdown
And I select "Male" in the "Gender" dropdown

Ok I see. I‘ll change it together when I add delete to feature. Thank you
so much for your help!
On Thu, Nov 14, 2024 at 22:52 Muyun Li @.***> wrote:

Yes! Because I am not sure will the old function work well when enter
integers. They use set as you wrote but all of them are string. I don’t
mind change to the old one if they work!
… <#m_6548792688485410549_m_2419869057336449914_>
On Thu, Nov 14, 2024 at 18:06 Muyun Li @.> wrote: Hi Yihong, I noticed
that you added a new function to enter values in the input box. I wonder if
that is because the set function that already existed in the code doesn't
work for inputting values. Because when I implemented the Query feature, I
found that the set function is used to input values and the select function
is used to select value from dropdown (as the example I copied below). And
I set the "Name" to "Happy" And I set the "Category" to "Hippo" And I
select "False" in the "Available" dropdown And I select "Male" in the
"Gender" dropdown — Reply to this email directly, view it on GitHub
https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_CSCI-2DGA-2D2820-2DFA24-2D003_recommendations_pull_72-23issuecomment-2D2477587495&d=DwMFaQ&c=slrrB7dE8n7gBJbeO0g-IQ&r=8gynJW5BsFD_0D6-aDBH1A&m=UewLSF8a-Oyf2TlriGi1C_J5VTBI4ITVioL2pWhetHYzUDotcE_mIS2j9CtHrhQY&s=LSTuXUgx0tAUlNCD4-1_dFtC0LBe--_hQqy_8lVYZj8&e=
https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_CSCI-2DGA-2D2820-2DFA24-2D003_recommendations_pull_72-23issuecomment-2D2477587495&d=DwMFaQ&c=slrrB7dE8n7gBJbeO0g-IQ&r=8gynJW5BsFD_0D6-aDBH1A&m=UewLSF8a-Oyf2TlriGi1C_J5VTBI4ITVioL2pWhetHYzUDotcE_mIS2j9CtHrhQY&s=LSTuXUgx0tAUlNCD4-1_dFtC0LBe--_hQqy_8lVYZj8&e=,
or unsubscribe
https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_notifications_unsubscribe-2Dauth_BDZJDMTG3KT2OCQH2XUZCND2AUUI3AVCNFSM6AAAAABRZU74K6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDINZXGU4DONBZGU&d=DwMFaQ&c=slrrB7dE8n7gBJbeO0g-IQ&r=8gynJW5BsFD_0D6-aDBH1A&m=UewLSF8a-Oyf2TlriGi1C_J5VTBI4ITVioL2pWhetHYzUDotcE_mIS2j9CtHrhQY&s=hHfiEJTPlIzmmO8kd6i4gD_Dr4Tv9-ndp2oICh3T1GA&e=
https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_notifications_unsubscribe-2Dauth_BDZJDMTG3KT2OCQH2XUZCND2AUUI3AVCNFSM6AAAAABRZU74K6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDINZXGU4DONBZGU&d=DwMFaQ&c=slrrB7dE8n7gBJbeO0g-IQ&r=8gynJW5BsFD_0D6-aDBH1A&m=UewLSF8a-Oyf2TlriGi1C_J5VTBI4ITVioL2pWhetHYzUDotcE_mIS2j9CtHrhQY&s=hHfiEJTPlIzmmO8kd6i4gD_Dr4Tv9-ndp2oICh3T1GA&e=
. You are receiving this because you authored the thread.Message ID: @.>
I think it should work for integers but you can check that. Product id and
recommended id (and like & dislike as well) parsed from the query string
are transformed into integers as in line 55 of recommendation_steps.py.
—
Reply to this email directly, view it on GitHub
https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_CSCI-2DGA-2D2820-2DFA24-2D003_recommendations_pull_72-23issuecomment-2D2477899088&d=DwMFaQ&c=slrrB7dE8n7gBJbeO0g-IQ&r=8gynJW5BsFD_0D6-aDBH1A&m=NIRj1pLy_MxCTwNHoKWHsnKpD10M4dSqF-IYKi-YEPJ9XdEMQn_TdpKyKI0vEmZG&s=KiS8h9s1EFsW3ZM_3I36zKWflofHNTi059A6poxc7Fs&e=,
or unsubscribe
https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_notifications_unsubscribe-2Dauth_BDZJDMR7ZHXR4VSCHAD4TVD2AVVWLAVCNFSM6AAAAABRZU74K6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDINZXHA4TSMBYHA&d=DwMFaQ&c=slrrB7dE8n7gBJbeO0g-IQ&r=8gynJW5BsFD_0D6-aDBH1A&m=NIRj1pLy_MxCTwNHoKWHsnKpD10M4dSqF-IYKi-YEPJ9XdEMQn_TdpKyKI0vEmZG&s=iZuNbyXuv5QnucgJUecM1QY3xzPWWyJTacLs18yjFlY&e=
.
You are receiving this because you authored the thread.Message ID:
@.***>

Ok I see. I‘ll change it together when I add delete to feature. Thank you so much for your help!
…
On Thu, Nov 14, 2024 at 22:52 Muyun Li @.> wrote: Yes! Because I am not sure will the old function work well when enter integers. They use set as you wrote but all of them are string. I don’t mind change to the old one if they work! … <#m_6548792688485410549_m_2419869057336449914_> On Thu, Nov 14, 2024 at 18:06 Muyun Li @.> wrote: Hi Yihong, I noticed that you added a new function to enter values in the input box. I wonder if that is because the set function that already existed in the code doesn't work for inputting values. Because when I implemented the Query feature, I found that the set function is used to input values and the select function is used to select value from dropdown (as the example I copied below). And I set the "Name" to "Happy" And I set the "Category" to "Hippo" And I select "False" in the "Available" dropdown And I select "Male" in the "Gender" dropdown — Reply to this email directly, view it on GitHub https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_CSCI-2DGA-2D2820-2DFA24-2D003_recommendations_pull_72-23issuecomment-2D2477587495&d=DwMFaQ&c=slrrB7dE8n7gBJbeO0g-IQ&r=8gynJW5BsFD_0D6-aDBH1A&m=UewLSF8a-Oyf2TlriGi1C_J5VTBI4ITVioL2pWhetHYzUDotcE_mIS2j9CtHrhQY&s=LSTuXUgx0tAUlNCD4-1_dFtC0LBe--_hQqy_8lVYZj8&e= https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_CSCI-2DGA-2D2820-2DFA24-2D003_recommendations_pull_72-23issuecomment-2D2477587495&d=DwMFaQ&c=slrrB7dE8n7gBJbeO0g-IQ&r=8gynJW5BsFD_0D6-aDBH1A&m=UewLSF8a-Oyf2TlriGi1C_J5VTBI4ITVioL2pWhetHYzUDotcE_mIS2j9CtHrhQY&s=LSTuXUgx0tAUlNCD4-1_dFtC0LBe--_hQqy_8lVYZj8&e=, or unsubscribe https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_notifications_unsubscribe-2Dauth_BDZJDMTG3KT2OCQH2XUZCND2AUUI3AVCNFSM6AAAAABRZU74K6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDINZXGU4DONBZGU&d=DwMFaQ&c=slrrB7dE8n7gBJbeO0g-IQ&r=8gynJW5BsFD_0D6-aDBH1A&m=UewLSF8a-Oyf2TlriGi1C_J5VTBI4ITVioL2pWhetHYzUDotcE_mIS2j9CtHrhQY&s=hHfiEJTPlIzmmO8kd6i4gD_Dr4Tv9-ndp2oICh3T1GA&e= https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_notifications_unsubscribe-2Dauth_BDZJDMTG3KT2OCQH2XUZCND2AUUI3AVCNFSM6AAAAABRZU74K6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDINZXGU4DONBZGU&d=DwMFaQ&c=slrrB7dE8n7gBJbeO0g-IQ&r=8gynJW5BsFD_0D6-aDBH1A&m=UewLSF8a-Oyf2TlriGi1C_J5VTBI4ITVioL2pWhetHYzUDotcE_mIS2j9CtHrhQY&s=hHfiEJTPlIzmmO8kd6i4gD_Dr4Tv9-ndp2oICh3T1GA&e= . You are receiving this because you authored the thread.Message ID: @.> I think it should work for integers but you can check that. Product id and recommended id (and like & dislike as well) parsed from the query string are transformed into integers as in line 55 of recommendation_steps.py. — Reply to this email directly, view it on GitHub https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_CSCI-2DGA-2D2820-2DFA24-2D003_recommendations_pull_72-23issuecomment-2D2477899088&d=DwMFaQ&c=slrrB7dE8n7gBJbeO0g-IQ&r=8gynJW5BsFD_0D6-aDBH1A&m=NIRj1pLy_MxCTwNHoKWHsnKpD10M4dSqF-IYKi-YEPJ9XdEMQn_TdpKyKI0vEmZG&s=KiS8h9s1EFsW3ZM_3I36zKWflofHNTi059A6poxc7Fs&e=, or unsubscribe https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_notifications_unsubscribe-2Dauth_BDZJDMR7ZHXR4VSCHAD4TVD2AVVWLAVCNFSM6AAAAABRZU74K6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDINZXHA4TSMBYHA&d=DwMFaQ&c=slrrB7dE8n7gBJbeO0g-IQ&r=8gynJW5BsFD_0D6-aDBH1A&m=NIRj1pLy_MxCTwNHoKWHsnKpD10M4dSqF-IYKi-YEPJ9XdEMQn_TdpKyKI0vEmZG&s=iZuNbyXuv5QnucgJUecM1QY3xzPWWyJTacLs18yjFlY&e= . You are receiving this because you authored the thread.Message ID: @.**>

could you change the Create related part within this PR? so that we can close this issue and won't make your next PR connected to 2 issues

I see that you changed the steps back to "set". Did you check if the behave had passed? If yes then we are good to merge this PR.

I see that you changed the steps back to "set". Did you check if the behave had passed? If yes then we are good to merge this PR.


[bug] Warning when adding button to page on web

Describe the bug
On the latest version of tamagui adding a button shows an error in the console
To Reproduce

Create a new starter repo
Add a button to the home page

Welcome to Tamagui.

        <Button>submit</Button>
        <Paragraph ta="center">
          Here's a basic starter to show navigating from one screen to another. This screen uses the
          same code on Next.js and React Native.
        </Paragraph>

See warning in console

Warning: Unknown event handler property `onPress`. It will be ignored.
    at a
    at span
    at eval (webpack-internal:///../../node_modules/@tamagui/web/dist/esm/createComponent.js:108:41)
    at Button (webpack-internal:///../../node_modules/@tamagui/button/dist/esm/Button.js:95:7)
    at span
    at Theme (webpack-internal:///../../node_modules/@tamagui/web/dist/esm/views/Theme.js:23:13)
    at WithTheme (webpack-internal:///../../node_modules/@tamagui/web/dist/esm/helpers/themeable.js:15:13)
    at div
    at eval (webpack-internal:///../../node_modules/@tamagui/web/dist/esm/createComponent.js:108:41)
    at div
    at eval (webpack-internal:///../../node_modules/@tamagui/web/dist/esm/createComponent.js:108:41)
    at HomeScreen (webpack-internal:///../../packages/app/features/home/screen.tsx:25:75)
    at NavigationProvider (webpack-internal:///../../packages/app/provider/navigation/index.web.tsx:12:11)
    at PortalProviderComponent (webpack-internal:///../../node_modules/@tamagui/portal/dist/esm/GorhomPortal.js:141:3)

Fix is in next release.


Determination page shows Uncaught TypeError in console

Describe the bug
On the determination page, when looking in the JavaScript console (web developer tools) an error occurs when looking for a page element.
To Reproduce

Using the sandbox db
Visit determination page for submission, e.g. apply/submissions/2/determination/2/edit/
Open developer tools, view JS console
See the error:

Uncaught TypeError: proposal_form_field is null
    <anonymous> https://hypha.test/static/js/determination-template.js:53
    EventListener.handleEvent* https://hypha.test/static/js/determination-template.js:51
    <anonymous> https://hypha.test/static/js/determination-template.js:57

Expected behavior
No such error.
Priority

Low priority (annoying, would be nice to not see)

Affected roles

Developers

Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):

OS: Trisquel 11.0
Browser: Abrowser (Firefox-ish) 128.0.3

Additional context
See #4142 (context in which issue was found) and #3425 (probable origin of issue).
I can't find an element with id id_proposal_form in current main at a5d3a4f5e8257af713683cfcbe3e37719d4fa152 or in the commit in #3425 that created the related JavaScript.

We need to add a check to the js so see if the proposal field exists or not.
Thanks for noticing this bug and creating an issue for it.


Xethron/migrations-generator could not be found

"require-dev": {
"fzaninotto/faker": "~1.4",
"mockery/mockery": "0.9.",
"phpunit/phpunit": "~4.0",
"symfony/css-selector": "2.8.|3.0.",
"symfony/dom-crawler": "2.8.|3.0.*",
"xethron/migrations-generator": "dev-15",
"way/generators": "dev-feature/laravel-five-stable"
},
"repositories": {
"repo-name": {
"type": "git",
"url": "git@github.com:jamisonvalenta/Laravel-4-generators.git"
}
}
in my composer.json, I receive the error
"Xethron/migrations-generator could not be found or there is a  typo"
I have followed the instructions to the letter on the library home page.

It seems that you have a typo inside the package definition.
You are using "dev-15" (in words ONE) but it should be L ("dev-l5").
Try this:
"xethron/migrations-generator": "dev-l5",

Thanks @disperun :) Closing issue


Update<EMAIL_ADDRESS>

This update could reduce the flakiness of instrumented tests (mostly emulator boot timeout)

I'm a bit confused, does android-emulator-runner@v2 automatically points to the latest v2 release?


arch: Remove calls to arch command

The arch(1) command is not available on some systems so use the
uname(1) command for the equivalent functionality.
Fixes #150.
Signed-off-by: James O. D. Hunt<EMAIL_ADDRESS>

/test

CI failing due to ENOSPC again:
java.nio.file.FileSystemException: /home/jenkins/.jenkins/cache/jars/8E: No space left on device

The jenkins-ci-fedora job so far.

A rebuild shows that the fedora CI is still doa:
[Errno 16] [Errno 28] No space left on device

@GabyCT, @chavafg - please could you clear some space on that system?

It is a brand new VM each time the test is executed, but seems like we need a bigger partition on the fedora image, it has 10G by default on azure, would need to upload a new image with more space.
In the meantime I changed the job configuration to use a vexxhost Fedora VM, which I think has a bigger partition. Lets see how it goes. I have restarted the job.

@jodh-intel please rebase this PR. Nice that arch command is removed :)

Branch updated.
/retest

Manually re-triggered ubuntu, fedora and centos builds, let's see how this goes.

Cranked the CI handle again for the failers. This should have been landable... 21 days ago...

/retest

Ping @kata-containers/builder.


signetfaucet.com not working

Hi @kallewoof!
The original faucet does not work for some days now.
In the meantime while it is being fixed feel free to set the DNS of signetfaucet.com as follows:
signetfaucet.com IN CNAME a.bublina.eu.org

… with Cloudflare turned off.
My web server is set already to keep trying setting up a certificate for signetfaucet.com. So as soon as the domain points to it, it should catch up quickly. But only with CloudFlare proxy disabled. From former (maybe outdated now) experience. It can be re-enabled once the certificate is caught up and everything is running without CF proxy.

Thanks for the offer. I'll point it that way temporarily, though the intention was to turn the faucet back on after awhile, once the scammer-heads have toned down. Right now, it gets hit with ipv6 bots immediately as soon as I turn it on.
Anyway, pointing your way for now. Thanks, again. I may point it back again at some point in the future, but I'll ping you.

Pointed. The DNS swap back to namecheap means this may take a bit.

This is what I see now:
# host signetfaucet.com
signetfaucet.com mail is handled by 15 eforward4.registrar-servers.com.
signetfaucet.com mail is handled by 10 eforward3.registrar-servers.com.
signetfaucet.com mail is handled by 20 eforward5.registrar-servers.com.
signetfaucet.com mail is handled by 10 eforward1.registrar-servers.com.
signetfaucet.com mail is handled by 10 eforward2.registrar-servers.com.
# host signetfaucet.com <IP_ADDRESS>
Using domain server:
Name: <IP_ADDRESS>
Address: <IP_ADDRESS>#53
Aliases:

signetfaucet.com mail is handled by 20 eforward5.registrar-servers.com.
signetfaucet.com mail is handled by 15 eforward4.registrar-servers.com.
signetfaucet.com mail is handled by 10 eforward1.registrar-servers.com.
signetfaucet.com mail is handled by 10 eforward2.registrar-servers.com.
signetfaucet.com mail is handled by 10 eforward3.registrar-servers.com.

BTW, CloudFlare is very good for DNS hosting, just without the proxy…

Thank you @kallewoof! It does not work yet as there are no A or AAAA records for signetfaucet.com now.
Just for clarification: I wrote IN CNAME in CloudFlare meaning as they have a "hack" for CNAME on the apex (naked domain) which normally can not have a CNAME record at this level as it would destroy the NS records for that domain. So in fact such CNAME on the apex is translated into (often regularly checked-updated, low TTL) A and AAAA records (for example he.net calls it ALIAS but there is no such real DNS record, it is just their way of calling the same hack that CloudFlare calls CNAME Flattening).
And I forgot to mention that once signetfaucet.com points to a.bublina.eu.org (or just its current A and AAAA records) it will serve the same faucet which is available at https://signetfaucet.bublina.eu.org.

@jsarenik I reverted the DNS change just now. I'm going to just re-enable the faucet on my end for now. I can add a CNAME for e.g. alt.signetfaucet.com pointing to your domain for now, though. It's definitely valuable to have more than one faucet (though expect the s{p|c}ammers...

@kallewoof Wonderful. Back up and running! Yes, feel free to set a alt.signetfaucet.com IN CNAME a.bublina.eu.org and ping me when you do.

Done!


Add workflow to approve dependabot PRs

Changelog
None
Docs
None
Description
Auto-approve dependabot PRs.

@jtbandes @achim-k the linear issue asks for auto-merge as well. I can add that if we think it would be safe and appropriate?

Auto-merge would be useful. I believe that we have enough tests in place to make it safe enough

Will point out that we don't seem to have any tests for FoxgloveClient right now.

Perfect 👏


config schema was not configured correctly.  resolving.

thanks @kensipe. Can we add a test for this please?

bump

ping @kensipe ?

@jimenez lost in priorities... on it today

Looks like you need a rebase.

@klueska rebased

rebased

rebased

rebased

rebased

run linux integration tests

@kensipe : looking at the original issue, I am already able to reproduce the error with the current master :
> dcos job --config-schema
{
  "$schema": "http://json-schema.org/schema#",
  "additionalProperties": false,
  "properties": {
    "service_name": {
      "description": "The name of the metronome cluster.",
      "title": "Name of the metronome cluster",
      "type": "string"
    },
    "url": {
      "description": "Api URL for talking to the Metronome scheduler.",
      "pattern": "^(?:(?:https?)://)(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.?)+(?:[a-zA-Z]{2,6}\\.?|[a-zA-Z0-9-]{2,}\\.?)?|\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})(?::\\d+)?(?:/?|[/?]\\S+)$",
      "title": "Metronome service URL",
      "type": "string"
    }
  },
  "type": "object"
}

So this change is mainly about moving the config schema to the right place I suppose?

@bamarni that is correct


#133 Support hold down actions on buttons

This PR updates the Button class to support actions that are fired when a button is held down. I will update HitArea as well once we're satisfied with the implementation.
@davesmith00000 Button.update appears to be called once per frame tick, in the sandbox game at least: https://github.com/PurpleKingdomGames/indigo/blob/2674fc306070e98372af428642bbded3f68a845a/indigo/sandbox/src/main/scala/com/example/sandbox/scenes/UiScene.scala#L39-L52
Close #133

Yes you're quite right about it being called on FrameTick, I'm shocked to discover that even the docs say to do the same thing! (Or at least the examples do the same thing.)

Thanks for offering to update HitArea too. Would you like to do the HitArea work in this review or shall I go ahead and merge this one?

Feel free to merge it now :-) I'll try to get to HitArea later today but might not have time.

Out of curiosity, have you considered setting up a CI/CD pipeline and requiring that the PR branch be up to date with master? Otherwise you have to verify manually that I'm not breaking anything.

I have thought about leaving the stone age and setting up CI, yes.
Currently though, I do 99% of the work personally. When I do get an occasional (and very appreciated!) PR, they tend to either be simple enough that I can eyeball them and know they are going to be basically fine, or so complicated that I need to manually verify them anyway.
In the end though it's all just time and effort. If I was getting a lot of PRs it would be worth setting up CI. Equally if I had more free time I wouldn't mind burning some of it to make things nicer.
I should do it really I know. :-)

That's fair. And don't be so modest, you do 99.9999% of the work :-)

@sylvansson Merged, checked, works perfectly. 👍
If you don't get to HitArea let me know, I'm happy to replicate your good work.


Use proper base in links

Append ${import.meta.env.BASE_URL} to URLs to make it behave correctly on base change (such as in production)
Use import.meta.env instead of process.env
Remove <link rel="sitemap" href="/sitemap.xml" /> since there is no sitemap generator

PS: I have tried to specify base in many ways such as '', 'lol', '/lol', 'lol/', '/lol/'. Apparently, all will be transformed into a proper URL, '/' and '/lol/'. So there is no need in using / between import.meta.env.BASE_URL and the path.

Thank you Astro god

*facepalm* I'll look into it rn.


Update README.md

Hi,
This small PR adds a button to get your app on F-Droid 👍

@nikolajakshic Sorry, I did a copy past too quickly apparently... Thanks for merging.


There was a problem training the model

thank you for your great work.But when I trained, I got the AttributeError: 'tuple' object has no attribute 'size', and I didn't change any code. Hope to get your reply

i'm sorry.i have already found the probelm.


DotmeshRPC.Commit fails on requests where "Branch" is set to "master"

https://docs.dotmesh.com/references/api/#dotmeshrpc-commit specifies that we do "Branch": "" to commit to master.
This should also succeed when users explicitly specify "Branch" : "master"
$ node index.js
{"action":"rpcRequest","rpcOptions":{"method":"post","url":"http://<IP_ADDRESS>:32607/rpc","qs":{"disableBasicAuthWindow":"y"},"headers":{"Authorization":"Basic YWRtaW46M0lCNEhSSkpYQlNTT1lST1hMTUJSWUxHQ1JOSEJYMkc="},"json":{"jsonrpc":"2.0","id":0,"method":"DotmeshRPC.Commit","params":{"Namespace":"admin","Name":"apples4","Branch":"master","Message":"Auto-commit for etcd backup:<PHONE_NUMBER>183"}}}}
{"action":"commitDotError","error":{"code":-32000,"message":"No clones at all, let alone named 'master' for filesystem id 'eeaccd08-8a79-4df1-70ba-722a305fb3ef'","data":null}}
finish

Issue was also reported by a user.

Let's also make it impossible to create another branch called 'master' from 'master' with the RPC API


chore: release main

:robot: I have created a release beep boop
webrtc: 4.1.7
4.1.7 (2024-08-17)
Dependencies

The following workspace dependencies were updated

devDependencies

libp2p bumped from ^1.9.1 to ^1.9.2

webtransport: 4.1.7
4.1.7 (2024-08-17)
Dependencies

The following workspace dependencies were updated

devDependencies

libp2p bumped from ^1.9.1 to ^1.9.2

libp2p: 1.9.2
1.9.2 (2024-08-17)
Bug Fixes

accept custom ping protocol prefix in connection monitor (#2667) (3c8dd5b)

This PR was generated with Release Please. See documentation.

:robot: Created releases:

libp2p-v1.9.2
webrtc-v4.1.7
webtransport-v4.1.7
:sunflower:


Feature/handle path parameters

Taking over PR #40 , wanna do another try. Reviews welcome.

[ ] Mixed methods for same path might lead to wrong spec chosen. Still fixing.
[ ] Implement test, that partial matches lead to the correct spec.

Sorry for delay, was a bit busy

LGTM 👍 Great work @m8nky, thanks for picking and making this done!

Thanks @m8nky for picking this up!


Unable to deal with custom babelrc.

Describe the bug
A custom babelrc with a custom presets which referenced through relative path will cause storybook server hangs forever.  The cmd start-storybook even will not show any errors. The cmd build-storybook shows the errors, this is why I can report this bug.
To Reproduce
Steps to reproduce the behavior:
use this custom babelrc
{
  "presets": ["../tools/babel-preset"]
}

And this is the file struct

project root

.storybook

.babelrc

tools

babel-preset.js

Then add the cmd to the package.json
start-storybook -p 6006
And execute it.
Then the console will show the compile infomations and stop at
webpack built xxxxxx in xxxxms.
And no browser will show.
Expected behavior
build success and show the browser.
Screenshots
If applicable, add screenshots to help explain your problem.
Code snippets
If applicable, add code samples to help explain your problem.
System:

OS: MacOS
Device: Macbook Pro
Browser: chrome
Framework: react
Addons: [if relevant]
Version: 4.1.13

Additional context
Add any other context about the problem here.

any news? still not work in 5.0.0


Add .gitattributes and normalize line endings

Several files are store with wrong line endings, and it would result in false merge conflicts when developers use different operating systems.
.gitattributes would prevent adding wrong line endings in the future

I think you missed to push the .gitattributes file ;) https://github.com/vlsi/testng/tree/gitattributes
Duplicate of #720

Wrong line endings result in hard-to-understand merge conflicts.
So if all the files are resolved at once, then developers won't have surprising results in the future.


Fix typo which causes TypeError

Summary of changes

Closes #3320
Pull Request Checklist

[N] Changes have tests
[N] News fragment added in changelog.d/.
(See documentation for details)

Thank you very much!


Fix for RSpec, there is some method's name duplication between gems

I was enabling tts to use it with the RSpec gem and found that something inside rspec or it's dependencies overrides tts to_url.
Code that I've used is here https://akovtunov.github.io/blog/2017/11/01/teaching-rspec-to-speak/

@c2h2 is it still actual?

Hi, thanks for the request and post, I didn't merge, because this could affect some existing "String".to_url. Can you point me which exact function/method to_url is conflicting with?

I had an issue with rails 5.0, ruby 2.3.1 and latest rspec for them.
Now I have ruby 2.5.1 and rails 5.2.0 and can't reproduce that issue anymore, so I think you can just close this PR :)

thanks for the report! closing...


Links on README

Give them names for usability.
(Suggested by Sina.)

I've got some more inquiries regarding the demonstrators.
I would like to fix these links first: How do we want to name the websites?

I don't have any suggestions. The bigger question is how we actually names our products.

True, because people confuse this extension with the assistive mml.

True, because people confuse this extension with the assistive mml.

imo, not really. AssistiveMML is established and can't change until 3.0, so we need a new name.

I did not suggest to rename AssistiveMML. (It's a bit of a of a misnomer in my opinion, as it only exposes MML.)
We could call it ATE  (Assistive Technology Extension).
Or ASE (Accessibility Support Extension).

I did not suggest to rename AssistiveMML.

Thanks for clarifying. I had misunderstood you.

We could call it ATE (Assistive Technology Extension).
Or ASE (Accessibility Support Extension).

How many extensions will we provide? Should they have different names or, if they are one extension, how should we name the individual features (enrichment, responsive rendering, speech-text, exploration, anything else?).

Good point. I believe that a single extension is sufficient, with separated into the three modules corresponding to the code modules (I guess Semantic-Complexity alone does not make sense).
And then a bunch of config options, pretty much as we have it now in the Accessibility submenu.
Default should be no speech as it is expensive.

@dpvc any thoughts?

I've dressed the raw links now.

These look good.  Sorry for letting the RFC slip past me.


Entry widget and secure conversations v2

What was solved?
Release notes:

[ ] Feature
[ ] Ignore
[ ] Release notes (Is it clear from the description here?)
[ ] Migration guide (If changes are needed for integrator already using the SDK - what needs to be communicated? Add underneath please)

Additional info:

[ ] Is the feature sufficiently tested? All tests fixed? Necessary unit, acceptance, snapshots added? Check that at least new public classes & methods are covered with unit tests
[ ] Did you add logging beneficial for troubleshooting of customer issues?
[ ] Did you add new logging? We would like the logging between platforms to be similar. Refer to Logging from iOS SDKs → Things to consider for newly added logs in Confluence for more information.

Screenshots:

@rasmustautsglia I think the target branch should be changed to 'development', shouldn't it?


map to on object key

Hello,
Is there any way I can do binding to an object's property that I get dynamically ?
{ { myObject [myKey] } } --> prints the literal  '{ { myObject [myKey] } }'
I tried escaping brackets but still doesn't work

You should use computed function for that, and pass both properties as parameters.

Right, eg...
<paper-input value="{{_getPropDynamically(myObj, myKey)}}"></paper-input>

...
_getPropDynamically(obj, key) {
    return obj[prop]
}
...

Hi, I already tried that, but how to get the binding to work in two ways ?
I want the the object property to be changed when the user enters a value in the input

This is not possible and generally can be avoided.
I'd suggest keeping your structured data as much simple as posiible.


🐛 [BUG] When the experiment Finish, the status of OverView/Experiment List remains unchanged.

🐛 Bug description [Please make everyone to understand it]
When a experiment is completed, the status of the experiment in the Experiment List in Project OverView does not change until the Browser is refreshed, and then it will be normal.

👾 Expected result
Maybe refresh automatically when entering the Oview page?
🚑 Any additional [like screenshots]

SwanLab Version: v0.1.1

Platform: macOS-14.1.2-arm64-arm-64bit

fixed by #94


Update HAINTEGRATION.md

Made a change to BirdNET-Go Events Sensor. The sensor will now work if you have other triggers defined for other sensors not related to Birdnet

Thanks very much!


attempt to convert an image asset prior to render

right now I'm attempt to perform a custom action to convert a heic file to a png file and updating to asset source to be the png image. My thought is todo this before the assets are  before the assets are downloaded (which I assume is downloaded, copied to the working directory)
I've created a predownload action and when I attempt to run this it fails with the following error message "Could not require module", i've tried pointing to it locally and also via an npm install but no joy
any thoughts on why this might be.

Hey @JamesBotterill
I think it is more related to errors in code here with async/await: https://github.com/JamesBotterill/nexrender-action-heic-convert/blob/main/index.js#L21-L31
The execution is never actually happens. Try changing your code to something like this:
const fs = require('fs');
const convert = require('heic-convert')
const uri2path = require('file-uri-to-path')
const path = require('path')

module.exports = (job, settings, options, type) => {
    const promises = job.asset.map(asset => {
        // get the file path, file name and extension
        const imageFile = asset.src
        const filepath = uri2path(imageFile)
        const fileExt = path.extname(filepath)
        const filename = path.basename(filepath, fileExt)

        // get the directory of the file
        const dir = options.dir || path.dirname(filepath)

        // create a new file path for the PNG file
        const newFile = dir + filename + '.png'

        // if the file is not a HEIC file, return the asset
        if (fileExt.toLowerCase() != '.heic') {
            return Promise.resolve(asset)
        }

        // convert the HEIC file to PNG
        return new Promise((resolve, reject) => {
            convert({
                buffer: fs.readFileSync(filepath), // the HEIC file buffer
                format: 'PNG'                       // output format
            }).then(outputBuffer => {
                // write the PNG file
                fs.writeFileSync(newFile, outputBuffer)

                // set the new file path to the asset
                asset.src = newFile

                resolve(asset)
            }).catch(err => {
                reject(err)
            })
        })
    })

    return new Promise((resolve, reject) => {
        Promise.all(promises).then(assets => {
            // set the new assets to the job
            job.assets = assets
            resolve(job)
        }).catch(err => {
            reject(err)
        })
    })
};

Thanks for taking a look I was confident it was my code after walking away last night.

yes it was an issue with a library not being installed properly, doh!
Plus side is that AE is the module is redundant as it doesn't matter about heic files (on mac anyway)


Topic of Discussion

Motivation

Proposed changes

Test

Code:
Result:

test 10/11/2021 3:47

test 10/13/2021 11:57

Sema Reaction: :ok_hand: This code looks good | Sema Tags: Readable, Secure, Efficient, Elegant, Reusable, Fault-tolerant, Maintainable

test 10/13/2021 11:59

Sema Reaction: :hammer_and_wrench: This code needs a fix | Sema Tags: Readable, Secure, Efficient


Andy/migrate push pull

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.Andy Arthur seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


Notification dot in primary color (instead red)

will just need to make sure the correct colour is displayed in both light and dark mode


new overall robout build for week 4

day 1
we changed the control hub then also ziptied the wire and stable it, not allow them to lossing or moving out.

Day 3

we change our mind, so we put the expension hub on the control hub.
we put on the web camera in the frount of the drivetrain.

Day 4

Because we found out the core hex mother of the intake will hit the ecscrewsion, so i put a gear and change the position of the mother to stright and the gear that allow to move the intake.

Day5-7

not much change, i am doing the preparing of the compation.
re-ziptied the wire, because we found out some of the wire is broken or not working.

Day 8

We found today that the motor is unstable due to too much pressure, so we used a Studica clamping motor to fix it.


Too wide highlights on the block-level elements using canvas

Issue
When testing the selection I noticed a weird selection quirk that makes the highlighter light up the whole row of the block-level element

Such an issue happens only when you select something before the block-level element and then go over it. When the selection starts on the element - the highlights work fine 👌🏻
Expected selection behavior:
https://github.com/recogito/text-annotator-js/assets/68850090/b38be69f-7827-43f0-9f26-77b776043932
Too wide selection on the block-level elements
https://github.com/recogito/text-annotator-js/assets/68850090/1b330554-3d24-4e6e-a394-b44c0977c538
https://github.com/recogito/text-annotator-js/assets/68850090/fc2596fd-81bc-4c1e-9dbe-e1a9aa4c357d
Exceptions
For unknown reasons, such an issue doesn't happen for the following block elements:

p
h1, although h2-h6 are also susceptible to the issue
fieldset
table

Reproduction
The issue is reproducible on the attached plain HTML example for the text-annotator. I also made a branch with a list of all the block-level elements in that HTML example - https://github.com/recogito/text-annotator-js/pull/73.
It's worth mentioning that the issue happens only when you're using the canvas.

I suppose that this issue might be related to the reason why the getClientRectsPonyfill was introduced - https://github.com/recogito/text-annotator-js/pull/33#issuecomment-1951018591
Because Firefox has the same issue overhighlighting issue, but there are no exceptions for the block elements!

Revisiting this (since I finally have a bit more time now). Yes, the ponyfill was originally intended to remedy this issue. Although it's currently buggy (and may in fact never work with good performance - at least not on large and/or deeply nested markup).
Can you elaborate what you mean by:

the issue happens only when you're using the canvas.

Do you mean the issue does not happen when using the CSS Custom Highlight renderer? Or that the native browser selection looks ok, while the Canvas rendering has problems?
As for a solution: TBH I'm currently out of ideas. It seems to be a more serious problem on FF rather than Chrome. I'd definitely like to get rid of it. But right now... not quite sure how to address it.

P.S.: as you have probably seen, my initial approach to getting "clean" highlights (in the ponyfill) was to create a copy of the annotated text nodes, temporarily wrap each text node in a SPAN, then get the bounding boxes from the SPANs instead. In theory, this should give you correct highlight bounds. However, it's crazy inefficient, and breaks all sorts of stuff.
Perhaps an alternative & at least slightly less disruptive solution would be to query the text nodes in the range, and then split the range, into one range per text node. Again, in theory, this might give us better highlight bounds (and might work on Chrome as well as FF.)

Do you mean the issue does not happen when using the CSS Custom Highlight renderer?

I meant that one. The issue happens for the canvas renderer

Perhaps an alternative & at least slightly less disruptive solution would be to query the text nodes in the range, and then split the range, into one range per text node

Yeah, that also might be an option [^1]
[^1]: In that case, the creation of the annotations definitely should be moved to the pointerup event to prevent a significant decrease in the selection performance

The issue happens for the canvas renderer

Ok, this actually confirms my impression. As weird as it is, here's my observation:

Ranges themselves usually work as you'd expect (= no weird block artefacts - although I've seen "blocky" selections in FF, too).
Where FF and Chrome seem to differ is when you call range.getClientRects(). The rect coordinates do differ from what the range actually looks like! The CSS Custom Highlight API styles the range itself. The Canvas renderer has to rely on the results of .getClientRects() to render the highlights. Which is why the former produces better results than the latter in this case.

P.S.: You may have seen that I added yet another renderer implementation, based on absolutely positioned SPANs. This solves a bunch of issues for us (and perhaps should have been the default solution all along). But since that's also based on querying .getClientRects() it suffers the same problem.

So about this issue...
I'm in the process of revising the mergeClientRects code, which is supposed to generate a "clean" set of highlight rectangles from the mess that range.getClientRects() returns. I've now tried a different approach.

Group all client rects into "lines", i.e. groups where each rect has about the same top and bottom coordinates. (Allow for a few px of tolerance).
Merge each line into a single DOMRect.
Remove the block level boxes: these would fully contain at least one other line, and would generally be wider.

My initial gut feeling is that this would be sufficient - and significantly easier (and probably more performant) than splitting the range as discussed above.
I might think different after I slept over it, and there are surely a few situations where these simple rules might break. (Rotated text?) But here's an initial result:
Before (=broken behavior)
https://github.com/user-attachments/assets/95e60ad4-1e1d-4aa3-b00c-e04ba25f15d7
After this change (Chrome)
https://github.com/user-attachments/assets/2cf5e1f4-ed38-4cc4-90c9-9ef582133825
And on Firefox
https://github.com/user-attachments/assets/d564d873-8baa-479d-9ac8-1f258f1ce082

So about this issue...
I'm in the process of revising the mergeClientRects code, which is supposed to generate a "clean" set of highlight rectangles from the mess that range.getClientRects() might return. I've now tried a different approach.

Group all client rects into "lines", i.e. groups where each rect has about the same top and bottom coordinates. (Allow for a few px of tolerance).
Merge each line into a single DOMRect. (The bounding box of all rects inside this line.)
Remove the block level boxes: these would fully contain at least one other line, and would generally be wider.

My initial gut feeling is that this would be sufficient - and significantly easier (and probably more performant) than splitting the range as discussed above.
I might think different after I slept over it, and there are surely a few situations where these simple rules might break. (Rotated text?) But I'll give that a try...

This doesn't look so bad.
Before (broken)
https://github.com/user-attachments/assets/68972f25-87a6-4bdc-8b01-9d3f582630bf
After (Chrome)
https://github.com/user-attachments/assets/b684ca3d-13c2-44d0-aecb-b3fb99627657
Firefox drops almost all of the "good" lines, too. Still need to investigate that. But might simply be down to things like rounding errors in the coordinates.

Now also with Firefox! (I forgot that FF, as opposed to Chrome, has the habit of generating client rects with a height of 0px. That filtered out lines which would "contain" a zero-rect. After removing zero-size rects, all looks fine.)
https://github.com/user-attachments/assets/61369dca-5a9f-45d2-aa8d-f7bc213f7175

🤦 Of course there are always edge cases. This is a CSS text-indent rule which breaks my approach by shifting the text element outside of its containing block element. So, in the long run, the approach of splitting the range into start rect, end rect, and all text nodes in between my be necessary after all. But I'm inclined to add the simple filtering approach as a temporary fix nonetheless.


[Feat] Possibility to apply input masks

Is your feature request related to a problem? Please describe.
It's a good practice to sanitze input fields on any type of input. So for example, when the bot asks a name, the user can't type numbers or when the bot asks a phone number, the user can't type letters and have a limited characters to type (we can use regexe for this and apply input maks).
Describe the solution you'd like
For phone example, something like this:

Describe alternatives you've considered
I think the easiest way to implement this would be to allow the developer to implement custom regex in the bot's input. However, the ideal way would be to allow the user to use their own input component instead of the bot's current input.

Hey @nellysbr! Supporting custom components directly to replace portions of the chatbot is a little tricky, as the chatbot has quite a fair bit of logic spanning across components. In v2.0.0, we try to improve the situation a little by allowing custom buttons and its re-arrangement in headers, footers and chat input - but that's not very helpful for your issue at hand 😥
At present, the input area functions much like your typical messaging apps (Whatsapp, Telegram) or LLMs (ChatGPT, Gemini) where there isn't a built-in validation feature while users are typing. That said, input validation for the chatbot is currently done only after the user submits the message.
I can see how doing validation within the text area can make things simpler, perhaps by providing users with an inputValidator prop in each block. However, that also means I need to re-look at how to design the chat input area (where should error messages go, how should this be provided as options to users etc). It'll take some time before I can see how best to approach this but I'll try. In the meantime, feel free to suggest ideas!

<3


Remove kv:namespace rename subcommand

Following our discussion on how confusing bindings vs titles can be for Workers KV, we decided to minimize the amount of title logic present in Wrangler. The principal step for removing title-related logic is to get rid of the kv:namespace rename subcommand, which only affects titles and therefore provides no utility to wrangler uses (who only work with bindings)

Closed by #555