Add the ability to create/update the child of a relationship from the parents Add/Edit view.

Laravel Version: 5.4.0
Voyager Version: 1.0.4
PHP Version: 5.6
Database Driver & Version: MySql

Description:
I think it would be good if you could have the ability to add or edit a child of a relationship from the parents add/edit screen. For example:
Say we have a Company model that has a OneToOne relationship with an Address Model. We create the relationship in Voyager and it shows us a dropdown list of the current addresses in the system. The problem is that this is a new company with a new address. Its not great that we first have to go and create a address before we can create the company.
Here are my suggestions on how it could be implemented (in order of preference):

The one to one relationship has an option "inline", this would show the edit view of the address model within the company add/edit view. (The problem here is there is currently no known easy way to implement this).

The company add/edit view has the dropdown list of addresses as it currently does but also has a "Add/Create" button next to the dropdown list. When this is clicked a popup/modal is opened that allows the user to create a address within the popup, when the save button is pressed (from within the add address popup) it creates the address in the system (saving it to the database) and updates the dropdown list within the company add/edit view to have the new address and have that address set as the selected address, therefore when you save the company it will have a relationship to the new address. (The problem with this is how do you handle multiple nested models, for example what if the Address model also had a one to one relationship with a Country model, this would result in nested popup/modals).

The final way I can think of doing it would be to simply have a "Add/Create" button and a "Refresh/Update" button next to the dropdown. The "Add/Create" opens up a new tab with the edit view of the Address model. The user could then create and save the new address and go back to the Company tab and click the "Refresh/Update" button that would update the list of Addresses in the dropdown to show the newly created address. (The problem with this is that the user has to open multiple tabs).

There may be other ways that this could be done and I would love to hear other suggestions. I would also appreciate it if people could give this issue a thumbs up if its something that you think you would need/like.
Thanks,
Glen

It's cool and futher more we can add such multi-form function in both has-one and has-many relations, but I think it pretty hard for voyager.
If the voyogar is purely built on vuejs and APIs, it will be pretty easy to implement.

In my first Laravel / Voyager project, for hasMany relationships I added a list of child entities in main entity view page, and a "add" button passing from_table / from_id vars in GET. The add page uses these vars to set correct value in dropdown select. But I implemented it in a very ugly way, so I didn't request for pull :D. It could be a start point.

I am going to be building functionality similar to this on a project in the very near future. I'll see if I can make my solution nice & universal, and submit it as a PR. If anyone else out there has done this or has a good starting point for the views/controllers for this I'd love to take a look at your code before getting started.

@mattrabe I am working on this. Take a look at https://github.com/vblinden/voyager/tree/child_modules
It needs some finishing touches, but it can be used for every 1.0 Voyager installation

@vblinden Wonderful - I'll check it out.

@vblinden I'm afraid I'm having trouble seeing this in action. After switching over to your repository and running composer update I see that I do have your files (such as resources/views/formfields/child_module.php), but I don't see any visible changes on my BREAD. I looked in the BREAD editor and I don't see an option to set a field or relationship to "child module". I tried changing a column of type relationship to child_module directly in my db, but that resulted in a PHP error.
The relationship I am trying to demo this on is a one-to-many relationship, where parent Product has multiple ProductSizes children and is related via product_sizes.product_id. The Product model has ->sizes specified via hasMany(), and the ProductSize model has ->product specified via belongsTo().
Does your solution work for hasMany()? Is there a step I am missing in order to get this into my BREAD?

@mattrabe You need to make a relationship and when the relationship is created, you can change the relationship field to a child module (thus adding child when in a parent). Voyager at the moment doesn't look at the relationships defined in your models. The new BREAD @emptynick is making does, and I think also includes a kind of child module. But that is for version 1.x or 2.0 of Voyager.

@vblinden how can I do this?. I can't change the field of the relationship.

The link is broken...
does anybody solved this inline missing feature?

Hello!
@vblinden the link seems to be broken. Do we know if @emptynick still working on this?
Thanks!

Related pull request that might be of interest: #3967

For those interested, here's a link to the BREAD by @emptynick but apparently it's still a work in progress:
https://github.com/emptynick/voyager-bread

@acicovic This doesn't work with the latest version it throws: voyager/storage/bread/" directory does not exist., I will check why and comment below.

Its currently heavy work in progress and absolultely unusable.

Ok, good to know.

@acicovic This doesn't work with the latest version it throws: voyager/storage/bread/" directory does not exist., I will check why and comment below.

I just had to create bread directory under storage but still as @emptynick says it still has a lot to work on.

+1 - Anyone had any luck with this?

+1 - Anyone had luck with this?! This would be a make or break for me.

I have started doing some codes (but i think thats not the best solution right now for me)... but maybe it can help some one, Product hasMany Texts

Create a TextController to override some methods >
php artisan make:controller TextController
On BREAD Texts change controller name as img >

TextController index return on ajax only the content render view
if ($request->ajax()) { 	        $view = View::make($view, compact( 	            'actions', 	            'dataType', 	            'dataTypeContent', 	            'isModelTranslatable', 	            'search', 	            'orderBy', 	            'orderColumn', 	            'sortOrder', 	            'searchNames', 	            'isServerSide', 	            'defaultSearchKey', 	            'usesSoftDeletes', 	            'showSoftDeleted' 	        )); 	        $sections = $view->renderSections(); 	        return $sections['content']; 	    } else { 	        return Voyager::view($view, compact( 	            'actions', 	            'dataType', 	            'dataTypeContent', 	            'isModelTranslatable', 	            'search', 	            'orderBy', 	            'orderColumn', 	            'sortOrder', 	            'searchNames', 	            'isServerSide', 	            'defaultSearchKey', 	            'usesSoftDeletes', 	            'showSoftDeleted' 	        )); 	    }
On method create add the return
if ($request->ajax()) {         	$view = View::make($view, compact('dataType', 'dataTypeContent', 'isModelTranslatable')); 	        $sections = $view->renderSections(); 	        return $sections['content'];         } else {         	return Voyager::view($view, compact('dataType', 'dataTypeContent', 'isModelTranslatable'));         }
Override edit-add.blade.php to /resources/view/vendor/voyager/products/ and add at end of section('content')
@if ($edit)         @foreach ($dataTypeRows as $row)             @if ($row->type == 'relationship')                   @if ($row->details->type == 'hasMany')

                  @endif             @endif         @endforeach     @endif
On the same file at javascript after jQuery ready statment add the folow code
@if ($edit)                 $.get( "/admin/texts", function( data ) {                     $( ".relationshipContent" ).html( data );                 });                 $.get( "/admin/texts/create", function( data ) {                     $( ".relationshipContentAdd" ).html( data );                     var str = window.location.href;                     var numbers = str.match(/\d+/g).map(Number);                     var id = numbers[numbers.length -1];                     var o = new Option($("[name='name']").val(), id, true, true); // change text_belongsto_product_relationship                      $('[name="text_belongsto_product_relationship"]').append(o);                     $('[name="text_belongsto_product_relationship"]').prop('disabled', true);                 });             @endif
Hope it help you guys to gives some insight how to do it

1 - Any update with this?

+1
need this
following this

+1

+1

+1
This is essential for me, thank you

Guys, posting "+1" does nothing.  If you want to follow it, click the "subscribe" button on the right:
We have no plans to spend time on this feature anytime soon.  This is an open-source project, so we're certainly open to pull requests.

@fletch3555 any recommendations about how to approach this? If we would do it one way or another, ex. server-side looping through related records vs. ajax-based related-record form submission, etc. which way would you think works best with the current codebase way of doing things?

I don't personally see a good way to do this in the current iteration of Voyager, which is partly why we're not spending the time to build it ourselves.  We left the request open since we know quite a few people want it.

Are there any known upcoming iterations of Voyager that changes this? Or sets up the code-base in different/better circumstances for implementing this kind of feature?

Voyager 2 should be able to do it.
If you are interested on implementing it now I would do it like this:

Custom view for field so that you can add a button to add/edit elements
Dinamically load in a modal/sidepanel an extended edit-add template

Template should be stripped of navbar, sidebar and footer
Template should catch form submit and send it as ajax request

Controller that extends VoyagerBaseController and wraps parent methods for ajax response

I am looking for this feature as well.
+1

Four years later, the developer continue thinking that's not important feature.  But I think is fundamental feature. :(

In an opensource project, "the developer" is everyone.
We are open for pull requests.
Nonetheless, this will definitely be possible in v2


Cant connect to FTP

Do you read the FAQ?

[V] Yes.

Describe the bug
I want to connect to server with FTPES to FTP. In Filezilla everything works fine. Here is my config:
{
    "name": "name",
    "host": "host.com",
    "protocol": "ftp",
    "port": 21,
    "passive": true,
    "username": "name",
    "password": "***",
    "remotePath": "/",
    "uploadOnSave": true
}

In this case I see an error:
Sorry, cleartext sessions and weak ciphers are not accepted on this server. Please reconnect using TLS security mechanisms.
If I set ftpes://host.com I see another error:
getaddrinfo ENOTFOUND ftpes://host.com
Expected behavior
I want to connect to the FTP
Desktop (please complete the following information):

OS: Ubuntu 18.04
VSCode Version 1.69.2
Extension Version v1.15.14

Extension Logs from Startup - required
[09-05 17:04:19] [debug] register command "Config" from "./commandConfig.ts"
[09-05 17:04:19] [debug] register command "List Active Folder" from "./commandListActiveFolder.ts"
[09-05 17:04:19] [debug] register command "Open Ssh Connection" from "./commandOpenSshConnection.ts"
[09-05 17:04:19] [debug] register command "Set Profile" from "./commandSetProfile.ts"
[09-05 17:04:19] [debug] register command "Toggle Output Panel" from "./commandToggleOutputPanel.ts"
[09-05 17:04:19] [debug] register command "Upload Changed Files" from "./commandUploadChangedFiles.ts"
[09-05 17:04:19] [debug] register command "Create File" from "./fileCommandCreateFile.ts"
[09-05 17:04:19] [debug] register command "Create Folder" from "./fileCommandCreateFolder.ts"
[09-05 17:04:19] [debug] register command "Delete Remote" from "./fileCommandDeleteRemote.ts"
[09-05 17:04:19] [debug] register command "Diff" from "./fileCommandDiff.ts"
[09-05 17:04:19] [debug] register command "Diff Active File" from "./fileCommandDiffActiveFile.ts"
[09-05 17:04:19] [debug] register command "Download" from "./fileCommandDownload.ts"
[09-05 17:04:19] [debug] register command "Download Active File" from "./fileCommandDownloadActiveFile.ts"
[09-05 17:04:19] [debug] register command "Download Active Folder" from "./fileCommandDownloadActiveFolder.ts"
[09-05 17:04:19] [debug] register command "Download File" from "./fileCommandDownloadFile.ts"
[09-05 17:04:19] [debug] register command "Download Folder" from "./fileCommandDownloadFolder.ts"
[09-05 17:04:19] [debug] register command "Download Force" from "./fileCommandDownloadForce.ts"
[09-05 17:04:19] [debug] register command "Download Project" from "./fileCommandDownloadProject.ts"
[09-05 17:04:19] [debug] register command "Edit In Local" from "./fileCommandEditInLocal.ts"
[09-05 17:04:19] [debug] register command "List" from "./fileCommandList.ts"
[09-05 17:04:19] [debug] register command "List All" from "./fileCommandListAll.ts"
[09-05 17:04:19] [debug] register command "Reveal In Explorer" from "./fileCommandRevealInExplorer.ts"
[09-05 17:04:19] [debug] register command "Reveal In Remote Explorer" from "./fileCommandRevealInRemoteExplorer.ts"
[09-05 17:04:19] [debug] register command "Sync Both Directions" from "./fileCommandSyncBothDirections.ts"
[09-05 17:04:19] [debug] register command "Sync Local To Remote" from "./fileCommandSyncLocalToRemote.ts"
[09-05 17:04:19] [debug] register command "Sync Remote To Local" from "./fileCommandSyncRemoteToLocal.ts"
[09-05 17:04:19] [debug] register command "Upload" from "./fileCommandUpload.ts"
[09-05 17:04:19] [debug] register command "Upload Active File" from "./fileCommandUploadActiveFile.ts"
[09-05 17:04:19] [debug] register command "Upload Active Folder" from "./fileCommandUploadActiveFolder.ts"
[09-05 17:04:19] [debug] register command "Upload File" from "./fileCommandUploadFile.ts"
[09-05 17:04:19] [debug] register command "Upload Folder" from "./fileCommandUploadFolder.ts"
[09-05 17:04:19] [debug] register command "Upload Force" from "./fileCommandUploadForce.ts"
[09-05 17:04:19] [debug] register command "Upload Project" from "./fileCommandUploadProject.ts"
[09-05 17:04:20] [info] config at /home/user/site.loc {"remotePath":"/","uploadOnSave":true,"useTempFile":false,"openSsh":false,"downloadOnOpen":false,"ignore":[],"concurrency":4,"protocol":"ftp","connectTimeout":10000,"interactiveAuth":false,"secure":"true","remoteTimeOffsetInHours":0,"name":"name","host":"host.com","port":21,"passive":true,"username":"******","password":"******"}```

I'm having this issue as well.

I'm having this issue as well.

Add "secure": "control",
`{
"name": "name",
"host": "host",
"protocol": "ftp",
"port": port,
"secure": "control",

"username": "username",
"remotePath": "remotePath",
"password": "password",
"uploadOnSave": true,
"ignore": []

}`

You can try my version, I have fixed bugs and added new features, maybe this will fix the problem you are having.
https://marketplace.visualstudio.com/items?itemName=satiromarra.code-sftp

You can try my version, I have fixed bugs and added new features, maybe this will fix the problem you are having. https://marketplace.visualstudio.com/items?itemName=satiromarra.code-sftp

same error :(


Help: Bottom action sheet to support scrolling

From the gesture example of the action sheet, how can I expand it to support content that scrolls/overflow.

I want drag to stop while scrolling the content.
codesandbox demo

I'll have to think about this. I understand the use case. Possibly interacting with scroll would be simpler than try to do it with drag...

Hey @elitenoire I was sort of waiting for the use case that would make me regret moving to PointerEvents and here it is (I'm half serious tho, PointerEvents make 90% of use cases easier to manage).
Since PointerEvents get canceled as soon as the scroll is detected (that's a browser "feature"), the general recommendation is to use touch-event: none. But then you can't scroll at all which misses the point completely. So we're stuck and there's at the moment 2 solutions.

The easiest: use v7.x of 'react-use-gesture'.
The hardest: fake the scroll: you rely on drag bounds and rubberbanding options and try to implement an inertia with react-spring. Would be easier if react-spring had an inertia setting tbh. Possibly not ideal anyway, and there's no way to reach the same level of "nativeness" that you would get using a scrolling div.

Anyway, I realise this is a common gesture people want to implement I'll see what I can do to add an option to revert to TouchEvents that don't get canceled when scrolling.

Thank you for looking into this. I'm still using v7 in the actual implementation and still get results as the codesandbox in the sense that drag occurs before scroll gesture (I also tried the delay option for drag). If possible to show an example using the easiest means, I would appreciate your efforts.

Hi @elitenoire unfortunately I can't support v7, v8 is giving me enough headaches like this. But I've added a feature in v8.1.0-beta.6 to help you achieve what you need with { useTouch: true }. This will use PointerEvents on desktop but touch on touch-enabled devices.
It's far from perfect but have a look at this. It seems to be working fine on my iPad, but there's a bug on my iPhone that I can't locate at this point.
https://codesandbox.io/s/action-sheet-forked-sg6de


lightOrange backwards compatibility is poor

lightOrange should alias as lightYellow for improved backwards compatibility with DS v1

Resolved by #483


Can seem to change data on getProps

const columns = [
    { header: 'ID', accessor: 'id', getProps: props.decorateIdCol },
    { header: 'Name', accessor: 'name' },
    { header: 'Rating', accessor: 'yelp_rating' },
    { header: 'Address', accessor: 'address' },
    { header: 'Phone', accessor: 'phone' },
    { header: 'Category', accessor: 'category' },
    { header: 'Flag', accessor: 'flag' },
    { header: 'Pickup', accessor: 'pickup' },
    { header: 'Delivery', accessor: 'delivery' },
    { header: 'Sources', accessor: 'sources' },
    { header: 'Updated', accessor: 'modify_time' },
  ];

  decorateIdCol(state, rowInfo, column) {
    let data = {};

    if(!_.isEmpty(_.get(state, 'data'))) {
      data = List(state.data)
      .update(_.get(rowInfo, 'index'), record => {
        record.id = `R${record.id}`;
        return record;
      })
      .toJS();
    } else {
      data = state.data;
    }

    return { data };
  }

Updating the state does not seem to work.

Data can only be set on the react table element. Not a column. Your code above is sending a data prop to the column element.

What about onChange on the ReactTable element. Can we rest data there?
On Feb 16, 2017 6:56 PM, "Tanner Linsley"<EMAIL_ADDRESS>wrote:

Data can only be set on the react table element. Not a column. Your code
above is sending a data prop to the column element.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/tannerlinsley/react-table/issues/86#issuecomment-280535502,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAT1lm9-BZNFWIlqdBDL2yJwsVnNKXE9ks5rdQxLgaJpZM4MDyRu
.

Not rest sorry, I ment set.
On Feb 16, 2017 6:59 PM, "Steven Shaginyan"<EMAIL_ADDRESS>wrote:

What about onChange on the ReactTable element. Can we rest data there?
On Feb 16, 2017 6:56 PM, "Tanner Linsley"<EMAIL_ADDRESS>wrote:

Data can only be set on the react table element. Not a column. Your code
above is sending a data prop to the column element.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/tannerlinsley/react-table/issues/86#issuecomment-280535502,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAT1lm9-BZNFWIlqdBDL2yJwsVnNKXE9ks5rdQxLgaJpZM4MDyRu
.

The data must always be set using the data prop. Here is an example: https://react-table.js.org/?selectedKind=2. Demos&selectedStory=Simple Table&full=0&down=1&left=1&panelRight=0&downPanel=kadirahq%2Fstorybook-addon-actions%2Factions-panel

To dynamically set data, keep your data in this.state.data, pass data={this.state.data} as a prop, then you can use this.setState({data: newData}) to update the table data

THanks


CI for Node

npm test
shell: /usr/bin/bash -e {0}

<EMAIL_ADDRESS>test /home/runner/work/github-actions-for-ci/github-actions-for-ci
npx standard && npx jest

npx: installed 520 in 17.071s
No tests found, exiting with code 1
Run with --passWithNoTests to exit with code 0
In /home/runner/work/github-actions-for-ci/github-actions-for-ci
7 files checked.
testMatch: /tests//.[jt]s?(x), **/?(.)+(spec|test).[tj]s?(x) - 0 matches
testPathIgnorePatterns: /node_modules/ - 7 matches
testRegex:  - 0 matches
Pattern:  - 0 matches
npm ERR! Test failed.  See above for more details.
Error: The operation was canceled.


Adapt image of Weibull distribution to 3-parameter and new variable names

I'm submitting a ...

[x] bug report
[ ] feature request
[ ] code improvement request

Expected behavior
How should it work (with the bug fixed or the feature implemented)?
The image of the Weibull distribution should correspond to the equation of the probability density function.
Screenshot
Actual behavior
How does it currently work (with the bug causing problems or without the feature)?
Currently it shows only two parameters and these parameters are named differently.
Screenshot

Steps to reproduce the problem (how to see the actual behavior)

Go to enter a probabilistic model directly.
See what is shown on the screenshot.

Done:


feat: enhance report form

Hello 🍝
In this PR I propose a tiny redesign of the form
Changes:

Added Skeleton loading,
Created a re-usable Label component,
Rescaled Label and devices list for better UI
Fixed padding textarea,
Display character counts only above 0 char.

Preview:

😉

Very nice changes, love the skeleton loading! 😍


Running time?

Hi, and thank you for making this code available.
What is the frame time on a 512x512 image?
Could this approach reach 50Hz?
Thanks!

I test 640x480 image at roughly 12ms, which includes getting keypoints and their descriptors; line segment features and their descriptors.
Thank you for your attention.😊


AVRO-3823: [Rust] Show helpful error messages

AVRO-3823
What is the purpose of the change
This PR fixes an issue that the current Rust binding doesn't show helpful error messages.
Actually, error types are implemented with helpful error messages.
This is an example.
#[error("No `name` field")]
GetNameField,

But those error messages are not shown.
Given we try to a invalid schema which contains no name field, we expect to get No `name` field but the actual is GetNameFIeld, which makes it difficult for users to resolve the problem.
The cause is that when an error is return from main, the error message is made by Debug::fmt instead of Display::fmt.
So, the solution is implemented Debug trait for errors manually.
Verifying this change
Tested manually with the following schemas.
{
  "type": "record",
  "fields": []
}

Error: No `name` field

{
  "name": "my_schema",
  "type": "record",
  "fields": [
}

Error: Failed to parse schema from JSON: expected value at line 5 column 1

Documentation
No new feature added.

Thank you, @sarutak !


Wasm: Efficient calls from Javascript to Dotnet

Mono has these methods
https://github.com/vargaz/mono/blob/be4037c2a3e70fdc6517e6aa0adb41981323639d/sdks/wasm/src/driver.c#L414-L426
Which allow the javascript to query via strings for classes and methods and then use those references to invoke dotnet methods (static and instance) from javascript.  I'm not sure how exactly it's allowing that lookup at runtime, through reflection is the obvious way from user land, but I imagine Mono is doing something better.  Could the same be done for CoreRT without reflection?  Mono is returning mono specific types, e.g. MonoMethod* but might be better to make those just opaque IntPtrs as in java script land they are just number type anyway.  I presume to start the methods would be implemented in CoreRT as somethinglike
        [UnmanagedCallersOnly(EntryPoint = "corert_wasm_invoke_method", CallingConvention = CallingConvention.Cdecl)]
        public static int InvokeMethod(IntPtr method, IntPtr this_arg, IntPtr methodParams, IntPtr out_exc)
        {
            throw new Exception("NYI");
        }

Frameworks like Uno and Blazor do a lot of interop right now, especially as interface-types is still to be specified in Wasm, but even when interface-types make it to the browser I would think there would still be a need for this.

If its not possible, then I guess the user could just create a bunch of UnmanagedCallersOnly methods for all the known entry points.  Wouldn't be dynamic, but might be enough.  I don't know the whole set of use cases for Blazor/Uno to answer that.

We would need to use reflection for this, at least as the first approximation. My first thought would be to simply represent the IntPtr method as a GCHandle to a normal reflection MethodInfo.
Reflection invoke is relatively fast in CoreRT (once you have the MethodInfo - last time I measured it, it was 4x faster than CoreCLR).
Depending on how the semantics of InvokeMethod are defined, we could eventually replace MethodInfo.Invoke with something more customized if needed. (E.g. if InvokeMethod doesn't do the implicit widenings and type conversions that reflection does for you - where you can pass a boxed sbyte to a method that takes an int and Invoke will widen that for you - that's one of the places that could be stripped to make things faster).


State is always Busy

Version
1.7.0
Development Environment
Chrome Browser, Hosted on cloud(Digital Ocean)
Current Behavior
In ScheduleList object state that I'm receiving is "Free" But on calendar it's always "Busy"
[
{
bgColor: "#9e5fff"
borderColor: "#9e5fff"
calendarId: "1"
category: "time"
color: "#ffffff"
end: null
id: "1"
isAllDay: true
isReadOnly: true
location: ""
start: "2018-10-02 09Z"
state: "Free" // This is displayed always Busy
title: "Mahatma Gandhi Jayanti"
}
]

Expected Behavior
If I'm receiving state: "Free" then "Free" should be displayed in popup description.

I'm interested as well. The state of every newly created schedule won't change from "busy" to "free"
Here is where the problem lies:
    'popupDetailState-tmpl': function(schedule) {         return schedule.state || 'Busy';     }
You can find these lines in tui-calendar.js.
Basically schedule.state is not defined, and the program assigns "Busy" as default state.


Responsive Web Design

We need to make the app responsive.
I think the best way will be to do it with the help of bootstrap.

hello, may i take this issue?

@yohgenius sure thing. Can you please describe in few words how are you going to work on this issue? You're welcome to ask any questions.

I think i will apply bootstrap for it. I don't know how to explain it in details though.
What i need is the screen resolutions to be responsive, what is the project made of, and then what should i choose in the "select scope" for my personal access token.
Thanks

What do you think if we choose screen, tablet and phone resolutions?
I don't think that I got you about "token" and "what is the project made of" questions. Can you please explain it more clear?

Ya, i mean phone right now usually around 5" or 5,5" and for tablet it's 7-10.1". So we need to choose some base for the screen.
What i mean about token is from this BGSM main screen, on "How to use" point 3,
and the "what is the project made of", is this made using php, reactjs, or any other sources used in this project.

Ok, I see. And still I don't know how to choose for better. Suppose it could be good if we choose the lower border of each. If you have any ideas about this you're welcome to share.
As for token you don't need to choose any options. Just type the name and then hit the 'Generate Token' button at the bottom of the page.
As for the sources they are open and you can browse the repository for details. Let me know if something isn't not clear or you can't understand what tech is used here or there.

Okay then, i will start to work on it now.. :)
I will return to ask if there is a problem...

Cool! Good luck to you @yohgenius . I'm here to answer any questions and to help with what could be done from my part. Let's make this project great again :)

hello, i'm sorry it will take a bit longer, because i haven't seen a .pug file before haha...

@yohgenius no problem. Take your time. Pug templates have a very straightforward structure though. It shouldn't make a big problem I hope.

@yohgenius if you don't mind you can just make a totally new markup based on what you see when you use the app. If you do so I could transform that stuff into pug syntax. Just in case if you're stuck with the problem of understanding pug.

Hello, sorry for my absence..
I'm having no problem with pugjs as it is as you say easy to understand.
a few days before i was looking to make a better view for mobile version like collapsible sidebar where you didn't have to scroll down to check the 'working on' and 'PR-ed' projects.
If you think i was taking too long, i'm sorry and you could pass it to someone else..
But before that i will keep trying it :D
And if you have a reference on how to apply properties like this "data-toggle="collapse"", i would be glad to try it

Hey @yohgenius . I'm not trying to make you hurry. Just wanted to give you a hand if you were stuck with the problem.
As for applying properties you can check the sources and find something like  button(class='btn btn-success btn-sm' onclick='prIssue()') for example. I guess that should help you.

I'm sorry if i sound like being rushed... but i actually happy working on this.
i have tried the () to enclose the classing etc, and the property is applied as i see it in the developer tool's inspect element. but i don't know why the effect is not applied.

Hmm, obviously the problem is not about using pug. There should be something else. Maybe you should try to play with that stuff using html markup and then translate it into pug if everything works ok. Actually that was the way I did it while working on this project :)

ah, i see... it does brighten my mind.. haha
i will try your suggestion. thanks for sharing and wait again.. :D

Hello, i'm back again... and sorry again for my absence.
This is my current work (i just found out how to apply those bootstrap thingy haha)
I hope you still accept it and give some inputs about the issue (and btw it's not done yet)...
:D

Looks pretty nice! The same with correcting my grammar mistakes :) I guess that should be mobile view? Maybe it is better to make a collapse navigation for this kind? I'm interested in how have you implemented search issue in context of responsive stuff.

Yes, this is the mobile view. I make this collapse navigation because i don't want people to scroll down too far to see their marked issues :)
And i'm glad that you liked it, but if you have another suggestions, i am very open about it. Now i will continue to experiment with the view to make it prettier.

I mean that if mobile view we don't want that navigation in row but rather a small button which shows nav links on click and appears in a kind of dropdown.

Hi, @yohgenius . As I said it could be nice to deal in some way with search in mobile view. Here's an example of how it could be done. What do you think about implementing this feature?

yep, i think it could b done.. what do we search here? the projects title? and what about the default page? still an empty page?


Version version check the right way

Description
Please add an informative description that covers that changes made by the pull request and link all relevant issues.
If an SDK is being regenerated based on a new swagger spec, a link to the pull request containing these swagger spec changes has been included above.
All SDK Contribution checklist:

[ ] The pull request does not introduce [breaking changes]
[ ] CHANGELOG is updated for new features, bug fixes or other significant changes.
[ ] I have read the contribution guidelines.

General Guidelines and Best Practices

[ ] Title of the pull request is clear and informative.
[ ] There are a small number of commits, each of which have an informative message. This means that previously merged commits do not appear in the history of the PR. For more information on cleaning up the commits in your PR, see this page.

Testing Guidelines

[ ] Pull request includes test coverage for the included changes.

We have the same file in azure.ai.resources, maybe we should either remove the other ones, or fix both in this PR?


Centralised mode

The entire centralised mode needs adding for v2.
This should include:

creation of a centalised database
registration of OQS monitored databases
sql agent jobs for collection of data from each DB
uninstaller

This is too big for one issue, but is being documented so we don't forget :)

v2.0 just shipped. we're done here :)


Impossible to control TB4 with my PC

Robot Model
Turtlebot4 Standard
ROS distro
Humble
Networking Configuration
Discovery Server
OS
Ubuntu 22.04
Built from source or installed?
Installed
Package version
Package: ros-humble-turtlebot4-desktop
Status: install ok installed
Priority: optional
Section: misc
Installed-Size: 41
Maintainer: rkreinin<EMAIL_ADDRESS>Architecture: amd64
Version: 1.0.0-1jammy.20240730.174637
Depends: ros-humble-turtlebot4-viz, ros-humble-ros-workspace
Description: Turtlebot4 Desktop Metapackage
Type of issue
Networking
Expected behaviour
Follow the setup guide: https://turtlebot.github.io/turtlebot4-user-manual/setup/basic.html.
Try any network configuration (Simple discovery or discovery Server)
Try to control the robot using a shell on my PC, and not SSH inside the Raspeberry. Trying to use the command: ros2 topic pub /cmd_vel geometry_msgs/msg/Twist
‘linear:
x: 0.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 1.0’
Actual behaviour
I followed the installation guide several times to be able to control my TB4 with my PC via Wifi, not by SSH inside the Rb Pi. Each time, i reflashed the SD card and factory reset the Create3.
I've tried both network configurations (Simple discovery or Discovery Server). I'm currently using Discovery Server and I can control the robot using SSH. However, in a shell on my PC, after sourcing, I can see all the topics after making ros2 topic list:
vleglise@pc-front:~$ ros2 topic list
/battery_state
/cliff_intensity
/cmd_audio
/cmd_lightring
/cmd_vel
/color/preview/image
/diagnostics
/diagnostics_agg
/diagnostics_toplevel_state
/dock_status
/function_calls
/hazard_detection
/hmi/buttons
/hmi/display
/hmi/display/message
/hmi/led
/imu
/interface_buttons
/ip
/ir_intensity
/ir_opcode
/joint_states
/joy
/joy/set_feedback
/kidnap_status
/mobility_monitor/transition_event
/mouse
/odom
/parameter_events
/robot_description
/robot_state/transition_event
/rosout
/scan
/slip_status
/static_transform/transition_event
/stereo/depth
/stop_status
/tf
/tf_static
/wheel_status
/wheel_ticks
/wheel_vels
This proves that i can publish  messages on these topics, but when i try this command, nothing happen:
ros2 topic pub /cmd_vel geometry_msgs/msg/Twist
"linear:
x: 0.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 1.0"
The command loop in the shell but the robot doesn't move. I verified all wired connection and remove the battery during few minutes before reinstalling it.
What can i do ?
Error messages
No response
To Reproduce

Follow guide
Choose Discovery Server
See all topics in User PC's shell
Run ros2 topic pub /cmd_vel geometry_msgs/msg/Twist
"linear:
x: 0.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 1.0"

Other notes
No response

Hello @ValentinLeglise ,
Thank you for reaching out on the Turtlebot 4 github page. I am very sorry to hear that you are having issues with one of our products.
A couple of questions we have regarding the current issues you are facing:

The cmd_vel command you have sent appears to be missing an extra \ character which typically appears following the geometry_msg/msg/Twist argument (see https://turtlebot.github.io/turtlebot4-user-manual/tutorials/driving.html#command-velocity):

ros2 topic pub /cmd_vel geometry_msgs/msg/Twist \
"linear:
  x: 0.0
  y: 0.0
  z: 0.0
angular:
  x: 0.0
  y: 0.0
  z: 1.0"

When viewing the repeated messages after sending a cmd_vel command, do the velocity vectors for angular and linear velocity match the command that has been input? An excerpt from the terminal output when a cmd_vel command is published whilst SSH'ed accompanied with an excerpt from a cmd_vel command from the remote computer would be greatly appreciated.

Looking forward to hearing from you soon.
Best Regards,
Saif M.

@ValentinLeglise I have the same problem. @smatarCPR your solution does not work from the PC.

I've tried the same motion (once front and then back) on both RPi and PC. The outputs in both cases on both devices with ros2 topic echo /cmd_vel are the same!
Case 1: teleop_twist_keyboard on rpi
Echo from rpi:
linear:
  x: 0.5
  y: 0.0
  z: 0.0
angular:
  x: 0.0
  y: 0.0
  z: 0.0
---
linear:
  x: -0.5
  y: 0.0
  z: 0.0
angular:
  x: 0.0
  y: 0.0
  z: 0.0
---

Echo from pc:
linear:
  x: 0.5
  y: 0.0
  z: 0.0
angular:
  x: 0.0
  y: 0.0
  z: 0.0
---
linear:
  x: -0.5
  y: 0.0
  z: 0.0
angular:
  x: 0.0
  y: 0.0
  z: 0.0
---

Case 2: teleop_twist_keyboard on PC
Echo from rpi:
linear:
  x: 0.5
  y: 0.0
  z: 0.0
angular:
  x: 0.0
  y: 0.0
  z: 0.0
---
linear:
  x: -0.5
  y: 0.0
  z: 0.0
angular:
  x: 0.0
  y: 0.0
  z: 0.0
---

Echo from pc:
linear:
  x: 0.5
  y: 0.0
  z: 0.0
angular:
  x: 0.0
  y: 0.0
  z: 0.0
---
linear:
  x: -0.5
  y: 0.0
  z: 0.0
angular:
  x: 0.0
  y: 0.0
  z: 0.0
---

@smatarCPR Here's the response of ros2 topic info -v /cmd_vel from Rpi and PC in both cases:
Case 1: teleop_twist_keyboard on rpi
Echo from rpi:
Type: geometry_msgs/msg/Twist

Publisher count: 2

Node name: teleop_twist_keyboard
Node namespace: /
Topic type: geometry_msgs/msg/Twist
Endpoint type: PUBLISHER
GID: 01.0f.bf.dd.5e.<IP_ADDRESS>.<IP_ADDRESS>.<IP_ADDRESS>.<IP_ADDRESS>.00.00.00
QoS profile:
  Reliability: RELIABLE
  History (Depth): UNKNOWN
  Durability: VOLATILE
  Lifespan: Infinite
  Deadline: Infinite
  Liveliness: AUTOMATIC
  Liveliness lease duration: Infinite

Node name: teleop_twist_joy_node
Node namespace: /
Topic type: geometry_msgs/msg/Twist
Endpoint type: PUBLISHER
GID: 01.0f.bf.dd.d0.04.9e.<IP_ADDRESS>.<IP_ADDRESS>.<IP_ADDRESS>.<IP_ADDRESS>.00
QoS profile:
  Reliability: RELIABLE
  History (Depth): UNKNOWN
  Durability: VOLATILE
  Lifespan: Infinite
  Deadline: Infinite
  Liveliness: AUTOMATIC
  Liveliness lease duration: Infinite

Subscription count: 1

Node name: motion_control
Node namespace: /
Topic type: geometry_msgs/msg/Twist
Endpoint type: SUBSCRIPTION
GID: 01.0f.40.4d.fb.05.ec.c<IP_ADDRESS>.<IP_ADDRESS>d.<IP_ADDRESS>.<IP_ADDRESS>.00
QoS profile:
  Reliability: BEST_EFFORT
  History (Depth): UNKNOWN
  Durability: VOLATILE
  Lifespan: Infinite
  Deadline: Infinite
  Liveliness: AUTOMATIC
  Liveliness lease duration: Infinite

Echo from pc:
Type: geometry_msgs/msg/Twist

Publisher count: 2

Node name: teleop_twist_keyboard
Node namespace: /
Topic type: geometry_msgs/msg/Twist
Endpoint type: PUBLISHER
GID: 01.0f.bf.dd.5e.<IP_ADDRESS>.<IP_ADDRESS>.<IP_ADDRESS>.<IP_ADDRESS>.00.00.00
QoS profile:
  Reliability: RELIABLE
  History (Depth): UNKNOWN
  Durability: VOLATILE
  Lifespan: Infinite
  Deadline: Infinite
  Liveliness: AUTOMATIC
  Liveliness lease duration: Infinite

Node name: teleop_twist_joy_node
Node namespace: /
Topic type: geometry_msgs/msg/Twist
Endpoint type: PUBLISHER
GID: 01.0f.bf.dd.d0.04.9e.<IP_ADDRESS>.<IP_ADDRESS>.<IP_ADDRESS>.<IP_ADDRESS>.00
QoS profile:
  Reliability: RELIABLE
  History (Depth): UNKNOWN
  Durability: VOLATILE
  Lifespan: Infinite
  Deadline: Infinite
  Liveliness: AUTOMATIC
  Liveliness lease duration: Infinite

Subscription count: 1

Node name: _NODE_NAME_UNKNOWN_
Node namespace: _NODE_NAMESPACE_UNKNOWN_
Topic type: geometry_msgs/msg/Twist
Endpoint type: SUBSCRIPTION
GID: 01.0f.40.4d.fb.05.ec.c<IP_ADDRESS>.<IP_ADDRESS>d.<IP_ADDRESS>.<IP_ADDRESS>.00
QoS profile:
  Reliability: BEST_EFFORT
  History (Depth): UNKNOWN
  Durability: VOLATILE
  Lifespan: Infinite
  Deadline: Infinite
  Liveliness: AUTOMATIC
  Liveliness lease duration: Infinite

Case 2: teleop_twist_keyboard on PC
Echo from rpi:
Type: geometry_msgs/msg/Twist

Publisher count: 2

Node name: teleop_twist_keyboard
Node namespace: /
Topic type: geometry_msgs/msg/Twist
Endpoint type: PUBLISHER
GID: 01.0f.6f.f6.1f.ee.f<IP_ADDRESS>.<IP_ADDRESS>.<IP_ADDRESS>.<IP_ADDRESS>.00.00
QoS profile:
  Reliability: RELIABLE
  History (Depth): UNKNOWN
  Durability: VOLATILE
  Lifespan: Infinite
  Deadline: Infinite
  Liveliness: AUTOMATIC
  Liveliness lease duration: Infinite

Node name: teleop_twist_joy_node
Node namespace: /
Topic type: geometry_msgs/msg/Twist
Endpoint type: PUBLISHER
GID: 01.0f.bf.dd.d0.04.9e.<IP_ADDRESS>.<IP_ADDRESS>.<IP_ADDRESS>.<IP_ADDRESS>.00
QoS profile:
  Reliability: RELIABLE
  History (Depth): UNKNOWN
  Durability: VOLATILE
  Lifespan: Infinite
  Deadline: Infinite
  Liveliness: AUTOMATIC
  Liveliness lease duration: Infinite

Subscription count: 1

Node name: motion_control
Node namespace: /
Topic type: geometry_msgs/msg/Twist
Endpoint type: SUBSCRIPTION
GID: 01.0f.40.4d.fb.05.ec.c<IP_ADDRESS>.<IP_ADDRESS>d.<IP_ADDRESS>.<IP_ADDRESS>.00
QoS profile:
  Reliability: BEST_EFFORT
  History (Depth): UNKNOWN
  Durability: VOLATILE
  Lifespan: Infinite
  Deadline: Infinite
  Liveliness: AUTOMATIC
  Liveliness lease duration: Infinite

Echo from pc:
Type: geometry_msgs/msg/Twist

Publisher count: 2

Node name: teleop_twist_keyboard
Node namespace: /
Topic type: geometry_msgs/msg/Twist
Endpoint type: PUBLISHER
GID: 01.0f.6f.f6.1f.ee.f<IP_ADDRESS>.<IP_ADDRESS>.<IP_ADDRESS>.<IP_ADDRESS>.00.00
QoS profile:
  Reliability: RELIABLE
  History (Depth): UNKNOWN
  Durability: VOLATILE
  Lifespan: Infinite
  Deadline: Infinite
  Liveliness: AUTOMATIC
  Liveliness lease duration: Infinite

Node name: teleop_twist_joy_node
Node namespace: /
Topic type: geometry_msgs/msg/Twist
Endpoint type: PUBLISHER
GID: 01.0f.bf.dd.d0.04.9e.<IP_ADDRESS>.<IP_ADDRESS>.<IP_ADDRESS>.<IP_ADDRESS>.00
QoS profile:
  Reliability: RELIABLE
  History (Depth): UNKNOWN
  Durability: VOLATILE
  Lifespan: Infinite
  Deadline: Infinite
  Liveliness: AUTOMATIC
  Liveliness lease duration: Infinite

Subscription count: 1

Node name: _NODE_NAME_UNKNOWN_
Node namespace: _NODE_NAMESPACE_UNKNOWN_
Topic type: geometry_msgs/msg/Twist
Endpoint type: SUBSCRIPTION
GID: 01.0f.40.4d.fb.05.ec.c<IP_ADDRESS>.<IP_ADDRESS>d.<IP_ADDRESS>.<IP_ADDRESS>.00
QoS profile:
  Reliability: BEST_EFFORT
  History (Depth): UNKNOWN
  Durability: VOLATILE
  Lifespan: Infinite
  Deadline: Infinite
  Liveliness: AUTOMATIC
  Liveliness lease duration: Infinite

Hi @aharshac
Sorry for the issues you are experiencing. Could you please open a new ticket a new ticket to address your issue.
If you are trying to drive backwards you set the safety override to backup_only or full in the create3 webserver to drive backwards.
I'll close this ticket because @ValentinLeglise has not provided a update in some time.
Thanks,
Rusty

@RustyCPR I solved my problem by following https://github.com/turtlebot/turtlebot4/issues/425#issuecomment-2283428277


cargo upgrade should honour how specific a dependency is

If my Cargo.toml contains:
[dependencies]
nom = "3"

then cargo upgrade will make the version very explicit, changing it to "3.2.1".
$ cargo upgrade
Upgrading nom v3 -> v3.2.1

This (as I understand it) has changed the dependency specification from (>=3.0.0, <4.0.0) to (>=3.2.1, <3.3.0). This means that cargo will have a harder time resolving dependencies in future, i.e. if another library ran cargo upgrade at a different time and randomly selected 3.3.7 (>=3.3.7, <3.4.0) as its specification.
I would expect cargo upgrade to increase only visible version numbers, so nom = "2" -> nom = "3" would be okay, but to leave nom = "3" alone.
Currently, 0.5 will be changed to 0.5.1 (which I feel is wrong), and it should be left at 0.5, or changed to 0.6 (if available).
What if 9.2.6 is available for this library which is currently at 7.5? I feel that it could be changed to 9.
Thoughts?

cargo upgrade never modifies Cargo.toml. It just recorded in Cargo.lock the latest available nom version (3.2.1) according to your specificaiton (3).

Oh dear. I thought cargo upgrade (not cargo update which @sinkuu is thinking of) was a built-in. It's not, it's part of https://github.com/killercup/cargo-edit . My bad!


Reusable Numba extension for CUDA target?

Greetings, awkward devs!
Over at cudf, we are introducing a ListDtype and an associated ListColumn that is similar to awkard's jagged array - just for use with DataFrames and related operations. We're also looking to introduce other "awkward" column types in the future, such as a StructColumn analogous to Arrow's StructArray.
Something we'd like to be able to do is leverage Numba/CUDA to run user-defined functions (UDFs) on ListColumns -- pretty much exactly what is discussed here.
It seems like some redundancy between cuDF and awkward could be avoided here, by building out the required Numba extensions in a way that's easily reusable by both libraries. More importantly, it would lead to a better experience for users, as the same UDFs would run identically on both awkward arrays and cuDF.
Opening this issue to hear your thoughts about this, and as a place to collect ideas on how this might be achieved. Thanks!
cc: @kkraus14 @gmarkall

That's awesome! Composable list and struct types within a DataFrame-like context would really help out physicists (among other data analysts, I'm sure), especially if cuDF can also run without GPUs. (The ability to access data types in this way is useful in itself, even if users don't have access to compatible GPUs on their Macs or in CERN's computing farm.)
This could also help the deprecation I'm considering in #350. Just getting nested data types into Pandas hasn't been useful in itself, since the Pandas API doesn't have operations that know how to make use of them. Presumably, if you're adding these types to the DataFrame in a non-opaque way, then you'll also be adding operations that use them—for example, performing Cartesian products of nested lists or turning struct fields into columns and vice-versa.
Will the buffer backing these new data types simply be an Arrow view? If so, then we can share more than Numba code; it would be possible to apply Awkward's array-at-a-time functions to columns of a cuDF in a similar way that NumPy's can be applied to a Pandas DataFrame. Awkward's own internal representation is more general than Arrow (e.g. ListArray vs ListOffsetArray, a useful distinction when manipulating list structures), and it is zero-copy convertible when equivalent constructs are available (ak.to_arrow and ak.from_arrow).
As for the Numba code, here is where it is located: src/awkward1/_connect/_numba. The data model is based on Awkward's node types, not Arrow, and its primary focus is on lightweight iteration. For that reason, we don't have Numba models for each node type (e.g. ListArray, ListOffsetArray) because these things may be created and destroyed frequently during an iterative loop and Numba's models are by default pass-by-value (and it's not easy to make something pass-by-reference). Copying deep tree structures in every step of iteration would scale poorly.
Instead, our Numba model is an ArrayView that walks over a Lookup data structure. The Lookup is a set of pointers to all the buffers in the original Awkward Array and the ArrayView represents a slice at some level of depth. The way to properly walk over the Lookup is enforced at compile-time, since each node type generates the appropriate code for __getitem__, but that type gets erased at runtime: there's only one type of ArrayView model.
My goal for Awkward-Numba-CUDA would be to reuse most of the infrastructure for Awkward-Numba (because it works) and replace the first level of iteration over a large array with the ability of users to write kernels on a single element of that large array. Walking over lists and structs deeper than the first level would be the same, even though it encourages users to write imperative code that might not be optimal on GPUs (e.g. users might write code with a lot of if-branches, but that would be their mistake to make).
Separating the Awkward-Numba part into a library of its own (whether CUDA-enabled or not) would be a little tricky, given how the ArrayView model was custom-written for Awkward Array types and not Arrow Arrays.

One possibility would be to take the Awkward-Numba implementation as "inspiration" for cuDF.
Another would be to view cuDF's data as Awkward Arrays so that it can use the same Numba models (I think Arrow-to-Awkward is always zero-copy, but I'd have to check).
Yet another would be to refactor the ArrayViews out into a library that only walks over Arrow types, though I wouldn't prefer this option because some of the Awkward types that are not Arrow types, such as our ListArray, would have to be non-zero-copy converted before being passed as an argument to a Numba-compiled function, adding a performance penalty where there currently isn't one.

That's awesome! Composable list and struct types within a DataFrame-like context would really help out physicists (among other data analysts, I'm sure), especially if cuDF can also run without GPUs. (The ability to access data types in this way is useful in itself, even if users don't have access to compatible GPUs on their Macs or in CERN's computing farm.)

cuDF only runs on GPUs as of now and there's no plan / roadmap for running on CPUs at this time, but what @shwina proposed here is to make the Numba pieces GPU/CPU agnostic so everyone benefits. Ideally we could live in a world where Arrow, Awkward, cuDF, etc. can all reuse the same Numba extensions.

Will the buffer backing these new data types simply be an Arrow view? If so, then we can share more than Numba code; it would be possible to apply Awkward's array-at-a-time functions to columns of a cuDF in a similar way that NumPy's can be applied to a Pandas DataFrame. Awkward's own internal representation is more general than Arrow (e.g. ListArray vs ListOffsetArray, a useful distinction when manipulating list structures), and it is zero-copy convertible when equivalent constructs are available (ak.to_arrow and ak.from_arrow).

The buffer backing cuDF columns are not Arrow views, but are our own rmm::device_buffer object (http://github.com/rapidsai/rmm). From my perspective though, we'd need to build some type of either abstract base class and/or data / API protocols that someone must implement / conform to in order to be able to utilize the Numba extension. I.E. something similar to Numpy's __array_interface__ (https://numpy.org/doc/stable/reference/arrays.interface.html) or __array_function__ (https://numpy.org/neps/nep-0018-array-function-protocol.html). Then anyone who exposes the necessary interface / layout can take advantage of the extension.

As for the Numba code, here is where it is located: src/awkward1/_connect/_numba. The data model is based on Awkward's node types, not Arrow, and its primary focus is on lightweight iteration. For that reason, we don't have Numba models for each node type (e.g. ListArray, ListOffsetArray) because these things may be created and destroyed frequently during an iterative loop and Numba's models are by default pass-by-value (and it's not easy to make something pass-by-reference). Copying deep tree structures in every step of iteration would scale poorly.
Instead, our Numba model is an ArrayView that walks over a Lookup data structure. The Lookup is a set of pointers to all the buffers in the original Awkward Array and the ArrayView represents a slice at some level of depth. The way to properly walk over the Lookup is enforced at compile-time, since each node type generates the appropriate code for __getitem__, but that type gets erased at runtime: there's only one type of ArrayView model.
My goal for Awkward-Numba-CUDA would be to reuse most of the infrastructure for Awkward-Numba (because it works) and replace the first level of iteration over a large array with the ability of users to write kernels on a single element of that large array. Walking over lists and structs deeper than the first level would be the same, even though it encourages users to write imperative code that might not be optimal on GPUs (e.g. users might write code with a lot of if-branches, but that would be their mistake to make).

The goal of reusing the Numba extension for GPU/CPU is shared among us. I think the new goal we're proposing here is figuring out how to reuse the Numba extension across different projects so we can all contribute to a single place and benefit from each others work.

Separating the Awkward-Numba part into a library of its own (whether CUDA-enabled or not) would be a little tricky, given how the ArrayView model was custom-written for Awkward Array types and not Arrow Arrays.

One possibility would be to take the Awkward-Numba implementation as "inspiration" for cuDF.
Another would be to view cuDF's data as Awkward Arrays so that it can use the same Numba models (I think Arrow-to-Awkward is always zero-copy, but I'd have to check).

Rolling our own implementation for cuDF is the fallback plan, but we have a vested interested in improving the GPU ecosystem 😄. Unfortunately UDFs are pretty important for us to support in cuDF and Awkward is a bit too heavy of a dependency for us to depend on for UDFs.

Yet another would be to refactor the ArrayViews out into a library that only walks over Arrow types, though I wouldn't prefer this option because some of the Awkward types that are not Arrow types, such as our ListArray, would have to be non-zero-copy converted before being passed as an argument to a Numba-compiled function, adding a performance penalty where there currently isn't one.

I think this goes back into not locking us into specific containers to allow for ease of adoption, and instead using protocols and/or abstract classes to handle the Numba extensions.


Don't autocomplete variables

Using OSX here. How do I disable autocompletion for environment variables?
For instance, if I type zsh to get to zshconfig this is the result:
[~]$ zsh
ZSH                            ZSH_THEME_GIT_PROMPT_SUFFIX
ZSH_CACHE_DIR                  ZSH_THEME_RVM_PROMPT_PREFIX
ZSH_COMPDUMP                   ZSH_THEME_RVM_PROMPT_SUFFIX
ZSH_CUSTOM                     ZSH_THEME_TERM_TAB_TITLE_IDLE
ZSH_NAME                       ZSH_THEME_TERM_TITLE_IDLE
ZSH_PATCHLEVEL                 ZSH_VERSION
ZSH_SPECTRUM_TEXT              zsh
ZSH_THEME                      zsh_scheduled_events
ZSH_THEME_GIT_PROMPT_CLEAN     zsh_stats
ZSH_THEME_GIT_PROMPT_DIRTY     zshconfig
ZSH_THEME_GIT_PROMPT_PREFIX

It's especially bad with the awesome case-insensitive option.
Another example: If I type wo to get to virtualenv's workon command, I instead get this:
[~]$ wor
WORDCHARS         WORKON_HOME       work_in_progress  workon

:+1:

Someones work around this by disabling case-insensitive matching http://serverfault.com/a/438119/111608
Yet, I'm looking for opposite — how to make zsh completion suggest me exactly env var names..

Yet, I'm looking for opposite — how to make zsh completion suggest me exactly env var names..

You can put a dollar sign and it will suggest variables.
As per the original request, I don't think there is a method available to disable completion of variable names. Try asking in zsh's mailing list.


Mbst 14272 add reviews ratings

Extended model
Modified serialisation code
Import from Owl Legacy transformer

TODO:

make protocol buffers uses optional fields rather required

Some code style nitpicks, one genuine comment and the use of optional vs required in protobufs. Otherwise LGTM


build error

So I cloned the repo, installed dependencies with npm install, and built with gulp.

Error: Cannot find module 'jshint/src/cli'

I solved it with:

npm install --save-dev jshint gulp-jshint

I thought I should be opening an issue nevertheless.

Looks like we are missing a jshint dep. but gulp-jshint is there. Feel free to put in a PR.

Well, instead of building from master I built from dev and it worked. No need for a PR, it will get fixed on the next merge.

Ha, OK :)

still not fixed?


Adding headers with Swagger

After adding the Header param nothing changed. The ServiceRequest didn't showed my header. Do I have to do something on actix_web side?
#[utoipa::path(
    context_path = "/tools",
    tag = "tools",
    params(
        ("url",
            description = "URL that should be scanned for fingerprints.",
            example = "https://example.com"
        ),
        ("Authorization" = String, Header, description = "JWT")
    ),
    responses(
        (status = 200, description = "JSON output of the blacklight collector.", body = String),
        (status = 400, description = "Wrong URL.", body = String)
    )
)]
#[get("/blacklight/{url}")]
pub async fn blacklight(
    path: web::Path<String>,
    claims: Option<web::ReqData<Claims>>
) -> impl Responder {
    let url: String = path.into_inner();

    match url_check::is_url(url.as_str()) {
        true => {
            if let Some(claims) = claims {
                publish_service::publisher(claims.sub.clone(), &url);
            }

            HttpResponse::Ok().json("Ok")
        },
        false => HttpResponse::BadRequest().body("ProtocolError: Cannot navigate to invalid URL")
    }
}

The Swagger UI itself does not allow Authorization and some other headers to be manually added to the schema. Instead you need to use security schema for that. You can browse through the acitx-web todo example for a reference.

But what is this Header in params() for?

But how can I enforce this? I want this token as a requirement for all endpoints with the security argument.

But how can I enforce this? I want this token as a requirement for all endpoints with the security argument.

You can define same security attributes for OpenApi trait as for utoipa::path attribute macro. By defining it on OpenApi will enforce the attributes for all the endpoints of the API. https://docs.rs/utoipa/latest/utoipa/derive.OpenApi.html#openapi-openapi-attributes
Here is the example on path of how to define security attributes. The same syntax works for OpenApi as well. https://docs.rs/utoipa/latest/utoipa/attr.path.html#examples
Excerpt of the docs:
security(
       (), // .. <--- this makes the authentication optional
       ("my_auth" = ["read:items", "edit:items"]),
       ("token_jwt" = [])
   )

I found the documentation and examples lacking here.
You will need to implement
#[derive(OpenApi)]
#[openapi(
	....,
    modifiers(&SecurityAddon)
)]
pub struct ApiDoc;

struct SecurityAddon;

impl Modify for SecurityAddon {
  fn modify(&self, openapi: &mut utoipa::openapi::OpenApi) {
    if openapi.components.is_none() {
      openapi.components = Some(Components::new());
    }

    openapi.components.as_mut().unwrap().add_security_scheme(
      "bearerAuth",
      SecurityScheme::Http(
        HttpBuilder::new()
          .scheme(HttpAuthScheme::Bearer)
          .bearer_format("JWT")
          .build(),
      ),
    );
  }
}

Then add  security to every path handler:
#[utoipa::path(
	...,
    security(
      ("bearerAuth" = [])
    ),
)]

This article explains it all:
https://codevoweb.com/add-swagger-ui-redoc-and-rapidoc-to-a-rust-api


Fix warnings in CI

Noticed in #151.
=============================== warnings summary ===============================
tests/test_core.py: 22 warnings
  /home/runner/work/flox/flox/flox/aggregate_flox.py:110: RuntimeWarning: divide by zero encountered in divide
    out /= nanlen(group_idx, array, size=size, axis=axis, fill_value=0)

tests/test_core.py: 207 warnings
  /home/runner/work/flox/flox/flox/aggregations.py:250: RuntimeWarning: invalid value encountered in divide
    finalize=lambda sum_, count: sum_ / count,

tests/test_core.py: 22 warnings
  /home/runner/work/flox/flox/flox/aggregate_flox.py:118: RuntimeWarning: divide by zero encountered in divide
    out /= nanlen(group_idx, array, size=size, axis=axis, fill_value=0)

tests/test_core.py: 531 warnings
tests/test_xarray.py: 88 warnings
  /home/runner/work/flox/flox/flox/aggregations.py:259: RuntimeWarning: invalid value encountered in divide
    finalize=lambda sum_, count: sum_ / count,

tests/test_core.py: 2772 warnings
  /home/runner/work/flox/flox/flox/aggregations.py:268: RuntimeWarning: invalid value encountered in divide
    result = (sumsq - (sum_**2 / count)) / (count - ddof)

tests/test_core.py: 1068 warnings
  /home/runner/work/flox/flox/flox/core.py:877: RuntimeWarning: All-NaN slice encountered
    result = getattr(np, combine)(array, axis=axis_, keepdims=True)

tests/test_core.py: 18 warnings
  /home/runner/work/flox/flox/tests/test_core.py:209: RuntimeWarning: Mean of empty slice
    expected = getattr(np, func)(array[..., ~nanmask], axis=-1, **kwargs)

tests/test_core.py: 8 warnings
tests/test_xarray.py: 12 warnings
  /home/runner/work/flox/flox/flox/aggregate_flox.py:118: RuntimeWarning: invalid value encountered in divide
    out /= nanlen(group_idx, array, size=size, axis=axis, fill_value=0)

tests/test_core.py: 18 warnings
  /home/runner/work/flox/flox/tests/test_core.py:209: RuntimeWarning: Degrees of freedom <= 0 for slice.
    expected = getattr(np, func)(array[..., ~nanmask], axis=-1, **kwargs)

tests/test_core.py: 1944 warnings
  /home/runner/micromamba-root/envs/flox-tests/lib/python3.8/site-packages/dask/array/numpy_compat.py:41: RuntimeWarning: invalid value encountered in divide
    x = np.divide(x1, x2, out)

tests/test_core.py: 200 warnings
  /home/runner/micromamba-root/envs/flox-tests/lib/python3.8/site-packages/dask/array/reductions.py:1062: RuntimeWarning: All-NaN slice encountered
    vals = func(x, axis=arg_axis, keepdims=True)

tests/test_core.py: 18 warnings
  /home/runner/micromamba-root/envs/flox-tests/lib/python3.8/site-packages/numpy/lib/nanfunctions.py:1878: RuntimeWarning: Degrees of freedom <= 0 for slice.
    var = nanvar(a, axis=axis, dtype=dtype, out=out, ddof=ddof,

tests/test_core.py: 342 warnings
  /home/runner/micromamba-root/envs/flox-tests/lib/python3.8/site-packages/dask/array/reductions.py:640: RuntimeWarning: All-NaN slice encountered
    return np.nanmax(x_chunk, axis=axis, keepdims=keepdims)

tests/test_core.py: 36 warnings
  /home/runner/work/flox/flox/tests/test_core.py:209: RuntimeWarning: All-NaN slice encountered
    expected = getattr(np, func)(array[..., ~nanmask], axis=-1, **kwargs)

tests/test_core.py: 342 warnings
  /home/runner/micromamba-root/envs/flox-tests/lib/python3.8/site-packages/dask/array/reductions.py:611: RuntimeWarning: All-NaN slice encountered
    return np.nanmin(x_chunk, axis=axis, keepdims=keepdims)

tests/test_xarray.py: 15 warnings
  /home/runner/work/flox/flox/flox/xarray.py:571: DeprecationWarning: flox.xarray.resample_reduce is now deprecated. Please use Xarray's resample method directly.
    warnings.warn(

tests/test_xarray.py::test_multi_index_groupby_sum[flox]
tests/test_xarray.py::test_multi_index_groupby_sum[flox]
tests/test_xarray.py::test_multi_index_groupby_sum[numpy]
tests/test_xarray.py::test_multi_index_groupby_sum[numpy]
tests/test_xarray.py::test_multi_index_groupby_sum[numba]
tests/test_xarray.py::test_multi_index_groupby_sum[numba]
  /home/runner/work/flox/flox/flox/xarray.py:252: DeprecationWarning: Deleting a single level of a MultiIndex is deprecated. Previously, this deleted all levels of a MultiIndex. Please also drop the following variables: {'y', 'x'} to avoid an error in the future.
    ds = ds.drop_vars([var for var in maybe_drop if var in ds.variables])

tests/test_xarray.py::test_multi_index_groupby_sum[flox]
tests/test_xarray.py::test_multi_index_groupby_sum[numpy]
tests/test_xarray.py::test_multi_index_groupby_sum[numba]
  /home/runner/work/flox/flox/flox/xarray.py:252: DeprecationWarning: Deleting a single level of a MultiIndex is deprecated. Previously, this deleted all levels of a MultiIndex. Please also drop the following variables: {'b', 'c'} to avoid an error in the future.
    ds = ds.drop_vars([var for var in maybe_drop if var in ds.variables])

tests/test_xarray.py::test_datetime_array_reduce[flox-count-False]
tests/test_xarray.py::test_datetime_array_reduce[flox-mean-False]
tests/test_xarray.py::test_datetime_array_reduce[numpy-count-False]
tests/test_xarray.py::test_datetime_array_reduce[numpy-mean-False]
tests/test_xarray.py::test_datetime_array_reduce[numba-count-False]
tests/test_xarray.py::test_datetime_array_reduce[numba-mean-False]
  /home/runner/micromamba-root/envs/flox-tests/lib/python3.8/site-packages/xarray/coding/cftime_offsets.py:1130: FutureWarning: Argument `closed` is deprecated in favor of `inclusive`.
    return pd.date_range(

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html

I will comment here as I think my issue is related. Please let me know if you prefer a separate issue.
I have noticed that a recent upgrade to use flox in connection with xarray and dask has caused an inability for me to silence associated numpy warnings even via a blanket approach  warnings.simplefilter("ignore").
The Xarray and dask combination have always been noisy wrt to warnings but this used to work to avoid messy jupyter notebook outputs.  Since moving to flox I can't seem to achieve the same result

@tlogan2000 I don't know how flox would affect that.
However I have now silenced every numpy warning from inside flox. So maybe that helps.

@tlogan2000 I don't know how flox would affect that.
However I have now silenced every numpy warning from inside flox. So maybe that helps.

Excellent, thanks it definitely seems to help but I am still getting a recurring :
aggregations.py:259: RuntimeWarning: invalid value encountered in divide
  chunk=("sum", "nanlen"),

Are you using the flox engine?

I can't really say TBH, my experience with flox to date has been to simply install and let xarray defaults handle how and when it is employed.    I am one of the xclim library https://xclim.readthedocs.io/en/stable/ developers and am basically using xarray either directly or via associated xclim calculations in my data processing.    In general, performance for resampling (a core procedure for a large number of xclim climate indicator calculations)  and use of dask.distributed clients has seen a large boost with flox installed ... my only difficulty has been with the warnings

Hmm ok in that case I'll need a reproducible example to track it down.


merge from template-arlac77-github

.github/workflows/ci.yml

chore(deps): add 22.3.0 (jobs.test-node.strategy.matrix.node-version)

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Warning: This coverage report may be inaccurate.
This pull request's base commit is no longer the HEAD commit of its target branch. This means it includes changes from outside the original pull request, including, potentially, unrelated coverage changes.

For more information on this, see Tracking coverage changes with pull request builds.
To avoid this issue with future PRs, see these Recommended CI Configurations.
For a quick fix, rebase this PR at GitHub. Your next report should be accurate.

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 95.918%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
85

Relevant Lines:
88

💛  - Coveralls


Add color print checkbox

Moved all the black-and-white printing styles to a .bw class.  Defaults to black-and-white.
What do I do for translations?  Google translate?

Google translate works for now; the translations are all contributed, so the contributors can add appropriate translations.


node: start moving the resource management docs to concepts

Description
Move the cpu management policies and options docs from tasks to concepts
xref: https://github.com/kubernetes/website/pull/48340#pullrequestreview-2443697490
In the 1.32 cycle I don't have capacity to move except for CPU manager, which is the worst offender anyway. Other managers should follow suite, hopefully in the 1.33 cycle already.
Issue
Closes: https://github.com/kubernetes/website/issues/38121 (albeit in a different and IMO better way)

Totally agree to this refactoring, however, I'd suggest we postpone this because 1.32 is about to be released soon. Propagating this change to localization teams takes some time.

Totally agree to this refactoring, however, I'd suggest we postpone this because 1.32 is about to be released soon. Propagating this change to localization teams takes some time.

cc @sftim so we go ahead with https://github.com/kubernetes/website/pull/48340 as-is?

also note this change will impact PRs https://github.com/kubernetes/website/pull/48469 and https://github.com/kubernetes/website/pull/48356 other than https://github.com/kubernetes/website/pull/48340

Totally agree to this refactoring, however, I'd suggest we postpone this because 1.32 is about to be released soon. Propagating this change to localization teams takes some time.

If this helps, what I want to do here is 90% content movement (which I honestly believe helps anyway). @sftim could you please provide your take here about @tengqm 's concern, also considering https://github.com/kubernetes/website/pull/48797#issuecomment-2491315692 ?

If we can get the refactoring done within a few days of now, I'd prefer to land it and redo the feature PRs.

If we can get the refactoring done within a few days of now, I'd prefer to land it and redo the feature PRs.

ok, fair point. Let's timebox this attempt. I'll need some sig-node reviews and I asked for them: https://kubernetes.slack.com/archives/C0BP8PW9G/p1732284959539839
If i can get them and get #48797 in good shape we can see how we can serialize the merges here. Otherwise I'll push to make it ready for early 1.33 merge (or when the floodgates open anyway)

thanks @sftim ! I'm adopting all your suggestions

/label refactor

/lgtm


Typeahead should allow users to provide their own matching function

It would be a nice feature addition to let typeahead users specify their own matching filter (where they provide you with a function).  This would facilitate:

Searching on more than one property of the object (e.g. object has a 'name' and a 'description')
Other custom matching, such as case-insensitivity or "startsWith"

I can KIND of work around this by using the asynchronous loader interface and do the filtering there:
  Future<List<String>>  fetchData(String query) async {
    String search = query.toLowerCase();
    List<Tag> allTags = await tagCache.getAll();

    return allTags.where( (Tag item) =>
        item.name?.toLowerCase()?.contains(search) ||
            item.description?.toLowerCase()?.contains(search)
    ).map((Tag t) => t.name);
  }

this combines the concept of a user-configurable item filter with the asynchronous loading, and the pattern works even if you don't need asynchronous loading at all (you just pretend you do but return the filtered list).
So maybe the developers will decide this isn't that adding the ability to specify a filter is not that important.


Add system requirements more prominently

Is your feature request related to a problem? Please describe.
I needed some time to find the information on how much disk space I actually need to get a running installation of the CKG.
Describe the solution you'd like
Could be added to the main page under Cloning and installing.

Installation requires >= 80 GB of disk space. See details here

Additional context
I can create a pull-request, if you like.

Good point @enryH! You can submit it as PR! Thank you!


our de/ser code is confusing and overcomplicated

Pairing with @jdjaustin it was clear that the way we use terms like JSON is wrong.
Also, https://github.com/ChainSafe/forest/blob/6110b7cc0e13562dbb2a4af8828f546ef6a6a479/src/json/cid.rs#L51-L59 is wrong, it (and other places in the codebase) should be using Cow

Ok so I think what's kneecapping us here is the fact that we're trying to use one approach (serde) for two incompatible serialization methods: cbor and json

#3391 for progress


Tracking issues for bootstrap phase tests

Overview
This is the tracking issue for testing. At the same time records the bugs and required features found during testing.
Tests should be added as code, as long as the following conditions are met:

Stable and reproducible results
Easy to write and maintain
Short execution time.

Tasks

[x] functions

[x] boostrap cluster
[x] restart an shutdown cluster
[x] promote root group to cluster
[x] create and apply snapshot
[x] recover from snapshot
[x] send and receives snapshot
[x] shard migration
[x] change configuration
[x] #874
[x] #869

[x] cluster

[x] admin operations

[x] create collection
[x] create database
[x] add(x remove) node

[x] mutation/fetching operations

[x] basic operation
[x] #875
[x] #876
[x] #877

[x] shard migration

[x] #882
[x] #886

[x] schedule/balance

[x] group add(x remove)
[x] leader balance
[x] replica balance
[x] shard balance

[x] client router

[x] error response handling (node + root) #890，#900
[x] #884
[x] update cached router info (retry count) #857

[ ] stability and fault tolerance

[ ] restart/die node
[ ] restart/die root leader
[ ] disk full
[ ] out of memory
[ ] disk backpress
[ ] network backpress
[ ] huge num of nodes(i.e. cpu/group)
[ ] huge num of shards(i.e. collection)
[ ] different group replica_num config

Bugs and Missing features
Urgent

[x] bugs

[x] #848
[ ] create a collection with 200 slots take 2-3 min
[x] #853
[x] #856
[x] #860
[x] #861
[x] #873
[x] #891
[x] #893
[x] #895
[x] #896
[x] #905
[x] #906
[x] #915
[x] #936
[x] #938
[x] #939
[x] #943
[x] #954
[x] #972
[x] #990
[x] #999
[x] #1007
[x] #1009
[x] #1016
[x] #1017
[x] #1019
[x] #1020
[x] #1023
[x] #1061

[x] features

[x] #847
[x] #841
[x] #844
[x] #864
[x] #865
[x] #868
[x] #967
[x] #976
[x] #977
[x] #992

Normal

[ ] bugs

[x] #855
[x] #889
[x] #894
[x] #1002
[x] #903
[x] #920
[x] #923
[ ] #935
[x] #948
[x] #949
[x] #950
[x] #952
[x] #956
[ ] #958
[ ] #965
[ ] #995

[ ] features

[ ] #803
[ ] root loop support graceful shutdown
[ ] #851
[x] #1002
[ ] remove group
[ ] some missing features (maybe in next iterator)

[ ] persist balance step to survive between failures
[ ] take care of disk capacity in balance
[ ] take care of QPS / latency in balance
[ ] fine-grained handle replica role(e.g. non-voter)
[ ] healing duplicate balance operation caused by in-progressing & un-reported operation
[ ] balance speed control
[ ] handle create shard failure (rollback orphan shards)

[ ] replica commands

[ ] support inc (merge)
[ ] support condition_put(e.g. put_if_not_exist)

[x] #790
[x] #837
[x] #834
[x] #934
[x] #918
[x] #922

Most of the features and bugs have been completed and fixed, now close this issue and move on to the next phase of tasks. The remaining unclosed issues are moved to the next stage.


Simplify turso db create to only work with groups

This simplifies turso db create, removing support for databases that do not use groups.
It was kept simple by choice, we'll add other features (e.g. first-time hint) as we go.
We need to implement:

Support for canary images
Support for extensions

This is the first of a series of PRs targeted at athos/groups-as-default which will make all CLI commands work only with database groups.
The plan is to use the target branch as a feature one, merge all PRs to it, and then merge it to main.

This severely changes the behavior of the --group flag.

If the flag is set, the specified group must exist (matches current behavior).
If the flag is not set:

If there are no groups, the default group is created.
If there is a single group, the database is created in that group.
If there are two or more groups, the command errors out.

The rationale here is not to require users to understand how groups work unless they have more than one.
A valid alternative is to always default --group to default, but that would be annoying if you have a single group with another name.
As a principle, groups should be explicitly created - to prevent mistakes. The only exception is automatically creating the default group, ONLY when there are no groups, to make starting with turso easier.

The rationale here is not to require users to understand how groups work unless they have more than one.

we do mention that we are creating the db in a group. Won't be confusing for a new user who is trying to create a db  and the cmd says 'created a database in default group'?

It was kept simple by choice, we'll add other features (e.g. first-time hint) as we go.

I would suggest adding the hint too. More people are going to use it next week and so hint will be helpful


Fix document link for manage-cache

The link for the cache-system here is broken.

Read the cache-system guide for a detailed presentation of caching at at HF.

All good! Merging this PR right now. Thanks again :hugs:


Package does not install due to the file name exceeding the maximum amount of characters

Brief description of your issue

Logs from the DiagOutputDir folder with --verbose-logs:

winget validate = https://pastebin.com/raw/NxWVKnvg
winget install = https://pastebin.com/raw/QdchskSe

Steps to reproduce
Install the WinGet package from https://github.com/microsoft/winget-pkgs/pull/37971
^ https://github.com/Dragon1573/winget-pkgs/tree/bf22a2a5a907bef7cf7c4d00595ede8745b7e84d/manifests/h/Huawei/HiSuite/<IP_ADDRESS>0
Expected behavior
For the WinGet package to install successfully on my PC.
Actual behavior
Due to how weird the file name is for the installer, it has seemingly exceeded the maximum amount of characters you can write in a file name.
Perhaps if WinGet spots a file name that is too long, it should possibly truncate it to avoid this issue?
Environment
Windows Package Manager (Preview) v1.2.3411-preview
Copyright (c) Microsoft Corporation. All rights reserved.

Windows: Windows.Desktop v10.0.22523.1000
Package: Microsoft.DesktopAppInstaller v1.17.3411.0

Logs: %LOCALAPPDATA%\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\DiagOutputDir

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

That's interesting. I haven't seen one that long before. We should take a look at both the URL length and the installer name length. It would also make for a strange UAC where we try to use the installer name to help provide more clarity.

That looks like a password generated using some program 😂


French gettext translation does not work in 3.0.9 and 3.0.8

Hey there,
I generated a new site with the awesome djangocms-installer tool and realised after a while that django-cms is not being translated to the user's language.
Steps to reproduce:
$ pip install --upgrade virtualenv
$ virtualenv env
$ source env/bin/activate
(env) $ pip install djangocms-installer
(env) $ djangocms -p . omg
Database configuration (in URL format) [default sqlite://localhost/project.db]:
django CMS version (choices: 2.4, 3.0, stable, develop) [default stable]:
Django version (choices: 1.4, 1.5, 1.6, 1.7, stable) [default stable]:
Activate Django I18N / L10N setting (choices: yes, no) [default yes]:
Install and configure reversion support (choices: yes, no) [default yes]:
Languages to enable. Option can be provided multiple times, or as a comma separated list. Only language codes supported by Django can be used here: fr, en
Optional default time zone [default America/Chicago]:
Activate Django timezone support (choices: yes, no) [default yes]:
Activate CMS permission management (choices: yes, no) [default yes]:
Use Twitter Bootstrap Theme (choices: yes, no) [default no]:
Use custom template set [default no]:
Load a starting page with examples after installation. Choose "no" if you use a custom template set. (choices: yes, no) [default no]: yes

As you can see, I've used most of the defaults and djangocms is not using french, but everything else does. Note the order of the languages; fr, en. Tell me if I'm wrong, but I think this sets the main language to french and gives user's the ability to translate content in english too.
Generated settings.py:
note that SECRET_KEY you see here is not being used anywhere ;)
import os
gettext = lambda s: s
DATA_DIR = os.path.dirname(os.path.dirname(__file__))
"""
Django settings for omg project.

For more information on this file, see
https://docs.djangoproject.com/en/1.6/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/1.6/ref/settings/
"""

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))

# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/1.6/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = '@j#r%*#u&2v!yxih1n11e)4gg%k+)1bm&=mdhdcpzn9#ptn597'

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

TEMPLATE_DEBUG = True

ALLOWED_HOSTS = []

# Application definition

ROOT_URLCONF = 'omg.urls'

WSGI_APPLICATION = 'omg.wsgi.application'

# Database
# https://docs.djangoproject.com/en/1.6/ref/settings/#databases

# Internationalization
# https://docs.djangoproject.com/en/1.6/topics/i18n/

LANGUAGE_CODE = 'fr'

TIME_ZONE = 'America/Chicago'

USE_I18N = True

USE_L10N = True

USE_TZ = True

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.6/howto/static-files/

STATIC_URL = '/static/'
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(DATA_DIR, 'media')
STATIC_ROOT = os.path.join(DATA_DIR, 'static')

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'omg', 'static'),
)
SITE_ID = 1

TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader',
    'django.template.loaders.eggs.Loader'
)

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.doc.XViewMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'cms.middleware.user.CurrentUserMiddleware',
    'cms.middleware.page.CurrentPageMiddleware',
    'cms.middleware.toolbar.ToolbarMiddleware',
    'cms.middleware.language.LanguageCookieMiddleware'
)

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.contrib.auth.context_processors.auth',
    'django.contrib.messages.context_processors.messages',
    'django.core.context_processors.i18n',
    'django.core.context_processors.debug',
    'django.core.context_processors.request',
    'django.core.context_processors.media',
    'django.core.context_processors.csrf',
    'django.core.context_processors.tz',
    'sekizai.context_processors.sekizai',
    'django.core.context_processors.static',
    'cms.context_processors.cms_settings'
)

TEMPLATE_DIRS = (
    os.path.join(BASE_DIR, 'omg', 'templates'),
)

INSTALLED_APPS = (
    'djangocms_admin_style',
    'djangocms_text_ckeditor',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.admin',
    'django.contrib.sites',
    'django.contrib.sitemaps',
    'django.contrib.staticfiles',
    'django.contrib.messages',
    'cms',
    'menus',
    'sekizai',
    'mptt',
    'djangocms_style',
    'djangocms_column',
    'djangocms_file',
    'djangocms_flash',
    'djangocms_googlemap',
    'djangocms_inherit',
    'djangocms_link',
    'djangocms_picture',
    'djangocms_teaser',
    'djangocms_video',
    'south',
    'reversion',
    'omg'
)

LANGUAGES = (
    ## Customize this
    ('fr', gettext('fr')),
    ('en', gettext('en')),
)

CMS_LANGUAGES = {
    ## Customize this
    'default': {
        'public': True,
        'hide_untranslated': False,
        'redirect_on_fallback': True,
    },
    1: [
        {
            'public': True,
            'code': 'fr',
            'hide_untranslated': False,
            'name': gettext('fr'),
            'redirect_on_fallback': True,
        },
        {
            'public': True,
            'code': 'en',
            'hide_untranslated': False,
            'name': gettext('en'),
            'redirect_on_fallback': True,
        },
    ],
}

CMS_TEMPLATES = (
    ## Customize this
    ('fullwidth.html', 'Fullwidth'),
    ('sidebar_left.html', 'Sidebar Left'),
    ('sidebar_right.html', 'Sidebar Right')
)

CMS_PERMISSION = True

CMS_PLACEHOLDER_CONF = {}

DATABASES = {
    'default':
        {'ENGINE': 'django.db.backends.sqlite3', 'NAME': 'project.db', 'HOST': 'localhost', 'USER': '', 'PASSWORD': '', 'PORT': ''}
}

Maybe this has something to do with djangocms-installer directly. I first asked a question on stackoverflow about this, it contains a bit more infos and screenshots.

Could you please open this on djangocms-installer repository?

Apparently there is something wrong with the french translations in django CMS
Any other language combination looks fine
Could you try downgrading to django CMS 3.0.7? (pip install django-cms==3.0.7)

You are right, this works fine with django-cms==3.0.7, it is broken in django-cms==3.0.8 and django-cms==3.0.9.

Thanks for checking. Will change the title for this issue

I would like some clarity here. I've taken the steps above to produce an django-cms installation with the primary language as 'fr'. The provided sample content appears in EN, but the CMS believes this is FR ('cause it was configured as such). Also, the CMS UI (toolbar, etc.) is appropriately all in FR.
It seems to me this is simply a matter of the djangocms-installer installing the same sample content (which happens to be in EN) regardless of the selected language.
I've also replaced the CMS with 3.0.7 and saw the same, exact behaviour. Unless I am missing something, this is not a blocker, but is a simple matter of the djangocms-installer not providing sample content in arbitrary languages. I would say that is reasonable and if anything, this is an issue for djangocms-installer, not the CMS itself.
Soliciting further comments here.

OK. This appears to be some sort of caching issue. I notice that it does change the admin UI to the selected language, eventually, but it seems to take a couple of attempts. I'm trying to produce a concise and repeatable sequence as this should help pinpoint the issue.
I see exactly the same behaviour in 3.0.7 as well.

@GabLeRoux Can you see if this patch fixes it for you? Its based off latest Support/3.0.x branch.
pip uninstall django-cms && pip install https://github.com/mkoistinen/django-cms/archive/mkoistinen-feature/better_handle_user_language_change.zip

Please let me know!

I tried what you just mentioned, but django-cms is still being displayed in english.
I opened web inspector with setting Disable cache (while DevTools is open) enabled so I don't have any cache issue here and did exactly this:

Clicked on User settings... http://<IP_ADDRESS>:8000/fr/admin/cms/usersettings/ (opens in the left sidebar)
From fr to en, hit save.
Refresh the hole page.

a. Everything is in english (including settings left sidebar)

From en to fr, hit save.
Refresh the hole page.

a. Left sidebar in french, django-cms's toolbar still in english.

From fr to fr, hit save.
Refresh the hole page.

a. Nothing changed
I tried repeating a couple of times but it did not change. Tested on django-cms==3.0.9
@mkoistinen Did you use djangocms-installer?
It's not a blocker for me (but maybe a liitle for the client :v:, not quite sure about that yet). I took a look at the release notes and Ill stick with django-cms==3.0.7 for the moment as french is working fine there.
To downgrade from django-cms==3.0.9 to django-cms==3.0.7, I had to run this:
$ pip install django-cms==3.0.7 django-mptt==0.6.1

Everything is in french this way. I tried going back to django-cms==3.0.9 again but goes back to english.

@mkoistinen Oh, sent this at the same time you did :P  I ran
pip uninstall django-cms && pip install https://github.com/mkoistinen/django-cms/archive/mkoistinen-feature/better_handle_user_language_change.zip

installed fine, pip freeze | grep django-cms
django-cms==3.0.10.dev1

Still in english, tried to save settings and still in english.

OK. Hmmm, I wonder now if I've "fixed" the wrong problem. During my testing, I was looking at the menu names across the toolbar to be sure they were shown in FR or EN. They seem correct. However, now that you mention it, the menus below these are always in EN.

I had no difference with 3.0.10.dev1:

This is how it looks like on 3.0.7

When you say menu names, are you talking about Page, Language and Live?

Same issue here, the toolbar stays in English while the rest of the project is correctly translated.  It was working with 3.0.7.

Could you check if https://github.com/yakky/django-cms/archive/feature/remove_fr_fr.zip solves the issue?

Ping @GabLeRoux @BertrandBordage could you check PR #3841 ?

@yakky I tested, it works :)
@GabLeRoux you can easily test using pip install https://github.com/yakky/django-cms/archive/feature/remove_fr_fr.zip

Great!

It seems like it is partially working, see screenshot

@GabLeRoux I don’t have the same problem. Did you fully restart your dev server? New locales are not taken into account if you don’t stop then restart it. Is your locale fr or fr_FR?

Oh indeed, did not restart server. I'll do that tonight ;)

I confirm that after restarting the server, this works just fine, thanks alot, you guys are the best :)


404 on every script during page load

I launched this and then tried to navigate to http://localhost:19081/Voting/VotingWeb, something looked wrong so when inspecting the console all the scripts are trying to load from http://localhost:19081/... which isn't correct.

Wrong project...


Not able to keep the DOT in my signature

I have used this plugin in my app, everything is working fine but I am not able to put DOT in my signature, any suggestion?

I may be misunderstanding, but I can save/load/draw a dot in my signature. Can you provide a bit more information or example of what you are trying to do?


Missing menu hover and visual connection to dropdown menus

In the default theme, there's no visual indicator when moving mouse over selectable items. Also when opening a dropdown menu, the menu name remains as is. This can be confusing... For example, which menu was actually selected here, Branch or Tag?

Dark theme uses different color and underline on hover, but has the same issue with dropdown menus:

Proposed solution:

Conceptually - good feature, but a couple of concerns:

I'd better not do it with box shadow - this is kind of 3d button look from 200x :)) Background highlight would be better
There is an idea to remove favorites bar at all (don't remember the issue number). Though this does not cancel the idea for the menus

The box shadow was already there for the dropdown. I just applied it to the menu to get the same look. Agree, both should be just background highlight.
https://github.com/larshp/abapGit/issues/3269 I'm in favor of it.

Closed by #4768