Issues with ngclient for 2.1.0.115

Yes and I see it’s getting checkboxes set as it goes. Maybe I’ll look through those as well.

ngax defaults to a working setting, although it’s a hazard for infinite version buildup:

image

If the change is intentional, then new plan will be nicer when error message is fixed.

Continuing …

ngax Source Data screen tree has Source data tree of selections. Difficult otherwise.
Scratch that. I see Show selected paths in Source like ngax #158

ngax Source Data screen gives User data and Computer trees, sometimes confusing.
ngclient even more confusingly seems to jump the whole tree between different views.

Example:

Start with tree with Computer at top, which actually has my special folders then drives.
Expand into C:\Users\Public without surprise. Test my own profile, and view collapses:

and C: drive has gone away, even though I might want to pick some more files from it.

It looks like the Source Filters still interact with the tree, but it’s less clearly visible than previous scheme of red x compared to various green boxes for full or partial selection. Actually that last part has vanished, even in 2.0.8.1 – now it’s just a green checkmark.

Frustration might also ensue when someone tries to click something and it won’t react.
A subtle point is that if it’s filtered out, clicked, then filter removed, it’s still not selected.
Possibly this is the right behavior. ngclient is also instantly responsive to filter changes.
ngax filter (e.g. on extension of txt) may need reopening folder, or might never show.

Presumably ngax issue of exotic RE differences between JavaScript and C# still holds.

This might be the same issue I (and few others…) notice on ngax – the flaky status bar.
Sometimes nothing changes and I have to check logs. Sometimes “Loading” gets stuck.
As with ngax, the way out of a long-term lack of information is to try the browser refresh.

Source Data Filters delete button is lost or cut on a narrow window. Here’s half a button:

image

Source Data Filters delete (e.g. exclude extension tmp) adds empty source, Submit fails.

Before delete, Submit sends in

[
  "C:\\backup source\\short.txt"
]

after delete, there is an empty second path added, which I would guess is why it gets

{"Error":"Invalid source list","Code":400}

to

[
  "C:\\backup source\\short.txt",
  ""
]

Commandline shows far fewer of actually configured job options than ngax. Intended?

Commandline does not seem to provide the delete button for option that it does show.
Test for this was Source Data filter for extension tmp, to do a list-broken-files run.

list-broken-files in ngclient seems to get confused even without any special help.
Under ngax, one keeps target URL and deletes Commandline arguments box content.
Under ngclient, this gets

 Found 2 commands but expected 1, commands: 
"file://C:\Duplicati\duplicati-2.1.0.115_canary_2025-04-14-win-x64-gui\RUN\test 1\"
"" 
 Return code: 200 

I can’t see the empty path even in ngax three dot menu. Maybe it sent my empty value?

image

Similar issue with ngclient list command. In ngax, no arguments should show filesets:

Listing filesets:
0	: 4/15/2025 10:01:17 AM (2 files, 2.21 KiB)
Return code: 0

In ngclient, this is not possible. Interestingly, whatever is sent in seems to show all files.

Export As command line in ngclient does nothing

Export To file in ngclient doesn’t add -duplicati-config after job name, just name.zip.

Export To file in ngclient with Export passwords set doesn’t, e.g. no Name: Passphrase:

Export To file in ngclient with Export passwords and no Encrypt passwords doesn’t warn.
Probably doesn’t matter now since it doesn’t add them, but should it give ngax-like warn?

Export to file in ngclient with Encrypt passwords exports anyway if Password and Repeat password are blank (one or both) or inconsistent, however in some cases the name.aes exported file is not actually encrypted – it’s clear text. I’m not certain which setups do that.

EDIT 1:

Commandline in ngclient can’t seem to get any help by specific name, e.g. help backup.
What returns is the front-page summary from the help command. The request asked this:

[
  "help",
  "",
  "backup",
...

If I switch blank TargetUrl and backup in Commandline arguments to the opposite, I see

[
  "help",
  "backup",
  "",
...

which supports the theory that it sends both boxes. I haven’t looked at ngax, but it works.
If I run backup which actually wants both boxes, then it works. Some commands differ…

For Commandline enhancement, button to copy output would be nice. Not in ngax either (unless I missed it), which is surprising because outputs can be long and Ctrl-A too wide.

During pause, ngclient (e.g. Start backup, or same in Commandline) just sits there, while ngax gives either a popup or a Commandline message saying what’s up and your option.

image

In ngax, About → System information has hard-to-decipher Server State Properties area including schedulerQueueIds which might have shown pause queue. Is that in ngclient?

Attempting to decipher lastPgEvent when work seemed hung was another hard option.

proposedSchedule has gotten feature requests even in ngax for a better UI plus editing.

The ngclient job edit isn’t showing the schedule that I set up, ran, and is in the status bar:

Interestingly, switching to ngax edit doesn’t show it either, but proposedSchedule does.
Export to file in ngax shows "Schedule": null,. Something’s out of line. Unsure what.

Job 4 is test 1, but in trying to see if I can influence status bar (I can), how to remove?

  • proposedSchedule : [{“Item1”:“4”,“Item2”:“2025-04-15T17:30:00Z”},{“Item1”:“4”,“Item2”:“2025-04-15T18:10:00Z”},{“Item1”:“4”,“Item2”:“2025-04-16T17:00:00Z”},{“Item1”:“4”,“Item2”:“2025-04-16T17:00:00Z”},{“Item1”:“4”,“Item2”:“2025-04-22T17:30:00Z”}]

Schedule screen in ngax for test 1:

image

Failed ngclient backup doesn’t give the dreaded red popup error, or much of any signal.
“Server errors are not visible to users #161” might be different, as that got an http error.
I don’t know the usual flow here, but the ngclient start got a 200 OK. Job’s log shows
failure from the missing file I referenced in Source, but I have to check the logs to see it.

Settings in ngclient is (if you look in developer tools) looping on settings and backups (alternating) probably as fast as it can go. Is this doing something, or is it wasted action?
Returning to Home stops the querying, going back into Settings starts it back up again.

Home screen in ngclient and ngax have forgotten it has two backups. Thinks it has none.
Restore shows the correct data, and the destination has two dlist. Is server DB confused?

Since I’m going in anyway, let’s look at the schedule for GUI-unschduled job 4 (test 1).

Comparing to job 5 (test 2), looks like something wiped out the stats for job 4 (test 1):

EDIT 2:

I let the scheduled-backup-I-don’t-want run at 2:10, and it filled out the metadata again.
Before that, I deleted the missing file reference because I wanted a successful backup.
Surprisingly, going to Source Data screen to Add Path of C:\missingfile and Submit

Duplicati-server.sqlite metadata for backup 4 is entirely gone now, without even a job run.

EDIT 3:

Seems like many changes (but not none) wipe metadata, e.g. set Remote volume size 51.

I thought maybe I could deschdule jobs by deleting them. It sort of works, but winds up:

image

and

image

In the database, the Schedule table references nonexistent Backups, but at the run time, profiling log shows nothing happens, which is better than if it got confused and fouled up.

It’s looking like I’ll have to delete the server database to get rid of these bogus schedules.

Some schedule weirdness is in ngax too, and seems new in 2.1.0.115 compared to 112.

Steps in ngax:

Add a job scheduled in 5 minutes. Edit, and note that Schedule in the GUI is now empty,
which it shouldn’t be. Right schedule is in status bar, proposedSchedule, and database.

Job runs at its invisible-in-GUI-job-edit schedule time, but GUI has no way to unschedule.

EDIT 1:

I might not debug this much, but if I refresh Edge, it asks for backups and gets schedule:

"Schedule": {
            "ID": 1,
            "Tags": [
                "ID=1"
            ],
            "Time": "2025-04-17T15:17:00Z",
            "Repeat": "1D",
            "LastRun": "2025-04-16T15:17:00Z",
            "Rule": "AllowedWeekDays=Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday",
            "AllowedDays": [
                "mon",
                "Monday",
                "tue",
                "Tuesday",
                "wed",
                "Wednesday",
                "thu",
                "Thursday",
                "fri",
                "Friday",
                "sat",
                "Saturday",
                "sun",
                "Sunday"
            ]
        }

however I’m not sure if there’s something else expected to actually show that schedule.

EDIT 2:

If I Edit and Save the backup where GUI has no schedule, it sends in Schedule: null,
however that doesn’t unschedule, so I stop Duplicati, edit server DB, and start Duplicati.

Moving to 2.1.0.116 now, which has no documented ngclient changes from 2.1.0.115.

Backblaze B2 ngclient import from ngax export at least fixed the Path percent-encode
discovered as broken, with April 4 test case here. Extra leading / problem still remains:

image

Attempting to import my actual Backblaze B2 ngax config export shows a similar result:

image

I think it failed to import the credentials. They’re not seen, and Test destination says:

Test connection failed

error-id:B2MissingUserID, user-information:No B2 Cloud Storage Account ID given

FTP has path trouble all in ngclient. I set Path ftp 1, and Test destination claims:

Create folder

The remote destination folder does not exist, do you want to create it?

even though the folder exists. The suspicious part is Filezilla Server shows it saying

MLSD /:/ftp 1 and such, whereas ngax would not have the extra /: on the front.

Regardless, if I say Create folder, it does:

<Date/Time> Info [Type] Message
<4/17/2025 9:48:07 PM> FTP Session 44 ::1 duplicati [Command] MKD /:
<4/17/2025 9:48:07 PM> FTP Session 44 ::1 duplicati [Response] 550 Invalid file name or path
<4/17/2025 9:48:07 PM> FTP Session 44 ::1 duplicati [Command] MKD /:/ftp 1
<4/17/2025 9:48:07 PM> FTP Session 44 ::1 duplicati [Response] 550 Invalid file name or path
<4/17/2025 9:48:07 PM> FTP Session 44 ::1 duplicati [Command] QUIT
<4/17/2025 9:48:07 PM> FTP Session 44 ::1 duplicati [Response] 221 Goodbye.

Folder created

The remote destination folder was created successfully.

OK

and when I click OK, it complains again, so basically loops.

Trying OneDrive all in ngclient, I make a job to Path ngclient that it made, and run it.
Export to file, Import, and Destination has a trailing extra slash in Path, and no AuthId:

(P.S. I later found that at least trailing slash part appeared without import, just do Edit)

I can’t Submit it, and the HTTP error is {"Error":"Missing passphrase","Code":400}, although looking at the HTTP more, this is actually a bug where it decided to enable AES encryption (which I never configured), and is upset at the blank password it’s sending in.

I figured that out after typing the Authorization code again, and Submit still refusing to go.

I can get the same sort of error without the export + import, trying to resubmit original job:

[
  {
    "Name": "encryption-module",
    "Value": "aes"
  },
  {
    "Name": "passphrase",
    "Value": ""
  },
  {
    "Name": "dblock-size",
    "Value": "50MB"
  },
  {
    "Name": "encryption-module",
    "Value": "aes"
  },
  {
    "Name": "compression-module",
    "Value": "zip"
  }
]

There’s no place visible on General screen 1 to fix encryption, so I guess this is the end.

Import backup has wrong encoding #151 was on the percent encode plus slash Path.

Improvement suggestions #129 has a section on encryption in General. Claimed fixed.

Both areas are still having trouble. Who’s going to test all of the uncommon destinations?

I have reverted to the ngax way.

We are revisiting this with a way to show included paths, similar to ngax. The “…” menu for editing as text is also on the way to ngclient.

Added issue.

That is a bit in the design way. I chose strong colors for ngax, but with ngclient it is a bit more subtle. More work is being done in this area.

I don’t quite follow the selected/versus filtered commen here. Is it that somehow filtering out things will cause them to not be selectable?

Yes, that requires some reworking to evaluate filters in C# and not in JavaScript.

I think this is somehow the websocket that does it. I think there already is an issue for this.

I have added an issue for this.

I have added an issue for this.

I have added an issue for this

I have added an issue for that.

I have added an issue.

This the issue that got fixed with 2.1.0.116.

That will be addressed with 161

I have added an issue.

Sounds like it. Can you reproduce this?

Is this fixed with 2.1.0.116? It sounds like a similar issue to the schedule problem.

I have added an issue for that.

That’s at least part of it (in first line talking about frustration over a non-react).
Although filters frequently confuse me, ngax lets me click a red x to include it:

The Exclude was by me and the dropdown. The Include was added by clicking red x.
I’m pleased that it put it first, as otherwise I think the Exclude would take precedence.

In ngclient, this case shows signs of trying, but doesn’t get it right, at least in highlight.

Expand walk and its subfolder, click walk, everything gets marked. Seems reasonable.

Exclude txt extension and txt files unhighlight. Seems reasonable.

Click sub2file.txt to try to force an Include, before the Exclude. This gets strange.
It doesn’t react by highlighting, but a filter for it actually got added. Two problems:

An Exclude rather than an Include, and it’s below the txt exclude rather than above.
I haven’t actually run this to check results, but saving it for ngax Edit as text shows:

-*.txt
-C:\backup source\walk\sub2\sub2file.txt

There’s also the general (no GUI needed) question of whether a filter applies to files specifically specified on the source list, as opposed to found by doing folder walking.

My recollection (supported by an ngax run) is the specifically named files get backup.
Problem in ngclient is that one doesn’t see it, as it doesn’t highlight, but seems there.
I had to switch to ngax to see it. This will get easier when ngclient lists the source list.

Contrary to what I wrote, I now see that removing the exclude in ngclient highlights a previously unhighlighted-by-exclude file. Example is a .txt file in unselected folder.

It reproduced itself just now on 2.1.0.116, while I testing the GUI and actual backing up.

IIRC the metadata was saying N/A. I looked at it after an earlier backup, but now I see activity that I don’t think I intended to do right after it. What are all the List operations?

Regardless, another backup got the metadata back, and I’m not seeing more List - yet.

EDIT 1:

I can erase the job metadata by ngclient job edit, change nothing, and Submit it. Result:

EDIT 2:

ngax Save doesn’t erase metadata like ngclient Submit (but how does it manage that?).

I think this is the ngclient Submit by PUT /api/v1/backup/1 HTTP/1.1

{"Backup":{"Name":"test 1","Description":"","TargetURL":"file://C:\\Duplicati\\duplicati-2.1.0.116_canary_2025-04-17-win-x64-gui\\RUN\\test 1\\","Sources":["C:\\backup source\\short.txt"],"Settings":[{"Name":"--no-encryption","Value":"True"},{"Name":"dblock-size","Value":"50MB"},{"Name":"encryption-module","Value":""},{"Name":"compression-module","Value":"zip"}],"Filters":[]},"Schedule":null}

It then does GET /api/v1/backups?orderBy=id HTTP/1.1 three times (why three times?):

{"ID":"1","Name":"test 1","Description":"","Tags":[],"TargetURL":"file://C:\\Duplicati\\duplicati-2.1.0.116_canary_2025-04-17-win-x64-gui\\RUN\\test 1\\","DBPath":"C:\\Duplicati\\duplicati-2.1.0.116_canary_2025-04-17-win-x64-gui\\RUN\\ETGWZICGRC.sqlite","Sources":null,"Settings":null,"Filters":null,"Metadata":{},"IsTemporary":false,"IsUnencryptedOrPassphraseStored":true}

and the Metadata table rows that used to exist for ID 1 now no longer exist (other IDs do).

The sources are exempt from filtering. Anything that is included as a source will be included, despite anything that may filter it. The only exception to the rule are special “files”, like hardware devices etc, that are common on Linux in /proc/.

Next release has quite a few fixes to the source, I hope is enough to address this issue.

Usually some kind of searching. It happens during the restore flow, when it lists folder contents.

It is because ngax actually sends in the existing metadata, ensuring it is “updated” to the same. ngclient sends no metadata, so it is cleared. I have a fix for next release.