cargo install not working correctly when using git repo

Problem
when using cargo install to install a different commit from a git repo, the executable doesn't gets replaced to target version
Steps

cargo install --git https://github.com/BillGoldenWater/Tools-rs --rev b6c330a video_in_waveform
get the hash of .cargo/bin/video_in_waveform
cargo install --git https://github.com/BillGoldenWater/Tools-rs --rev e25e95d video_in_waveform
compare the hash of .cargo/bin/video_in_waveform to previously, it's the same

Possible Solution(s)
No response
Notes
maybe related to workspace
tried --force, +nightly and uninstall then install
after run cargo clean, it will install the proper version
the nightly version:
cargo 1.77.0-nightly (2ce45605d 2024-01-04)
release: 1.77.0-nightly
commit-hash: 2ce45605d9db521b5fd6c1211ce8de6055fdb24e
commit-date: 2024-01-04
host: aarch64-apple-darwin
libgit2: 1.7.1 (sys:0.18.1 vendored)
libcurl: 8.4.0 (sys:0.4.70+curl-8.5.0 system ssl:(SecureTransport) LibreSSL/3.3.6)
ssl: OpenSSL 1.1.1w  11 Sep 2023
os: Mac OS 14.2.1 [64-bit]

Version
cargo 1.75.0 (1d8b05cdd 2023-11-20)
release: 1.75.0
commit-hash: 1d8b05cdd1287c64467306cf3ca2c8ac60c11eb0
commit-date: 2023-11-20
host: aarch64-apple-darwin
libgit2: 1.7.1 (sys:0.18.1 vendored)
libcurl: 8.4.0 (sys:0.4.68+curl-8.4.0 system ssl:(SecureTransport) LibreSSL/3.3.6)
ssl: OpenSSL 1.1.1u  30 May 2023
os: Mac OS 14.2.1 [64-bit]

It doesn't seem to be reproducible to me. What was the console output you've got in the beginning and the end? It is supposed to have
    Updating git repository `https://github.com/BillGoldenWater/Tools-rs`
  Installing video_in_waveform v0.1.0 (https://github.com/BillGoldenWater/Tools-rs?rev=b6c330a#b6c330a8)
...
...
   Replacing /Users/rust/.cargo/bin/video_in_waveform
    Replaced package `video_in_waveform v0.1.0 (https://github.com/BillGoldenWater/Tools-rs?rev=e25e95d#e25e95df)` with `video_in_waveform v0.1.0 (https://github.com/BillGoldenWater/Tools-rs?rev=b6c330a#b6c330a8)` (executable `video_in_waveform`)

And you shall see the git revision.
Also, how did you verify the binaries are the same? Could you provide the exact step you build and verify it?

So the build cache was shared, as cargo clean somehow invalidated those cache….
Could you check if any of the CARGO_TARGET_DIR related settings is set? You can get the information by echoing those environment variables or running cargo +nightly -Zunstable-options config get build.target-dir.
It does look like a bug if the target-dir is shared across builds.

it's indeed shared,
build.target-dir = "/Users/golden_water/.cargo/shared-target"

Dug into it a bit.
It seems that cargo install creates a non-ephemeral workspace for git sources, that would try finding all member packages in that git repo, and add them as path dependencies.
https://github.com/rust-lang/cargo/blob/ddec30889aff0c38118bcbeb59597d0bd85eddcd/src/cargo/ops/cargo_install.rs#L826-L827
This doesn't seem wrong. However, when computing fingerprints to determine if a rebuild is needed, Cargo doesn't hash git revision into fingerprint directly. Instead, it checks if source file path has changed. For git source, it is an absolute path to ~/.cargo/git/checkouts/<pkg-hash>/<short-commit-sha>, so commit SHA is always there. For path dependency, it is relative to workspace root, so nothing change and Cargo doesn't rebuild even it is from a different git revision.
https://github.com/rust-lang/cargo/blob/9574120bf03343f4cc4f5b37d09e0700e454b339/src/cargo/core/compiler/fingerprint/mod.rs#L587-L589
The possible fix might be cargo install creating ephemeral workspaces for git sources. Haven't yet checked other consequences of that, but it is something worthy of exploration.

@rustbot claim
I will take a look.

Tested locally, I can only reproduce it. Working on it.


change orature download type

This change is

Let's hold off on deploying this until Orature can support it officially


Suggestion: Migrate to APK for Android

First of all, i would like to offer my deepest gratitude to the devs for creating this magnificent tools to help us fellow weebs in the 3rd world country. I have a suggestion as stated in the title above since i really like using the crunchyroll apk more rather than in the browser, i think that it would be a great idea to release the standalone apk version of this extension. Thank you!

Such a thing is technologically very hard to implement (a whole different project entirely) and/or legally questionable.
This is an add-on for browsers; it can't really be ported to other environments.

As Atemu already said, this is not possible. Patching and distributing the original APK would be illegal and the only alternative is to run some kind of local VPN service that intercepts the call to the token endpoint just like this extension does. That however would be an insane amount of work compared to this browser extension.


Day Planner Panel and Weekly Planner Blank or Unresponsive

Seems to have occurred just some time since the last update.
This happens just after opening obsidian.
Expected behavior
The day planner panel is empty..... or sometimes after reload an empty timeline shows but none of my tasks from daily notes are visible. And I cannot click on the timeline to add anything either. The right top corner settings are also unresponsive. And the week planner has the same issue. Sometimes its blank and other times after reload I see the 'grid' boxes but I still cannot add/edit anything.

### This plugin can be soooooo useful - I really wanted to use it.... please help.
Can anyone comment if they've had the same issues????!!**

When you see this, please open the developer console and show me the error you see there: ctrl + shift + i on Windows.

Closing this as stale.


Write a GO program to convert weeks to hours

Description
Write a GO program to convert weeks to hours
1 week = 7 days = 168 hours
Input  : 5
Output : 840

How to contribute

Save the solution in convert_weeks_to_hours.go file
Add convert_weeks_to_hours.go file in convert-weeks-to-hours folder

!assign


Handling TERM=dumb in zsh

For TERM=dumb shell should be as simple as possible (no line-editing, no fancy prompts, no completion).
In my non-home-manager zsh config I have this code (taken from https://www.emacswiki.org/emacs/TrampMode#toc9) at the top of .zshrc:
if [[ "$TERM" == "dumb" ]]
then
  unsetopt zle
  unsetopt prompt_cr
  unsetopt prompt_subst
  if whence -w precmd >/dev/null; then
      unfunction precmd
  fi
  if whence -w preexec >/dev/null; then
      unfunction preexec
  fi
  PS1='$ '
  return
fi

I'm not sure how to incorporate it in zsh configured by home-manager.
I can make a PR with this code behind a configuration option (off by default) if it seems like a reasonable thing to add.

You should use programs.zsh.initExtra for that.
programs.zsh.initExtra = ''
	if [[ "$TERM" == "dumb" ]]
	then
		unsetopt zle
		unsetopt prompt_cr
		unsetopt prompt_subst
		if whence -w precmd >/dev/null; then
				unfunction precmd
		fi
		if whence -w preexec >/dev/null; then
				unfunction preexec
		fi
		PS1='$ '
		return
	fi
'';

If this is something standard and will not break anything, it might make sense to add this lines unconditionally to zsh module. Alternatively, it seems like it might be just easier to use bash (or even /bin/sh) for this, from the wiki you linked:

None of the above worked for me so I decided to just change the SHELL environment variable. There is no added benefit from running zsh inside tramp anyway.
(eval-after-load 'tramp '(setenv "SHELL" "/bin/bash"))
--EzeBirman

I also have something like this:
[ $TERM = "dumb" ] && unsetopt zle && PS1='$ '

Looks like I probably copied from the TRAMP wiki, but others programs seem to use it:
https://stackoverflow.com/questions/39001517/features-obligatory-for-term-dumb-terminal
Does it make sense to revert variables or just call exec sh? Either way, maybe controlled via a configuration variable? programs.zsh.execShWhenDumb = true;, programs.zsh.skipConfigWhenDumb = true;, or dumbShell = "sh";?

Seems like currently "dumbifying" code with early exit can be added to initExtraBeforeCompInit.


ICMP Destination Unreachable sent in reply to broadcast message

... which it should not.
Wireshark:

26	08:58:33.746878	<IP_ADDRESS>	<IP_ADDRESS>	UDP	86	57621 → 57621  Len=44
29	08:58:33.750149	<IP_ADDRESS>	<IP_ADDRESS>	ICMP	70	Destination unreachable (Port unreachable)

Network configuration:
      [ Inet4 ] Network configured
                IP: 		<IP_ADDRESS>
                Netmask: 	<IP_ADDRESS>
                Gateway: 	<IP_ADDRESS>
                DNS Server: 	<IP_ADDRESS>

Is it correct that this packet is destined for this stack?
  bool IP4::is_for_me(ip4::Addr dst) const
  {
    return stack_.is_valid_source(dst)
      or (dst | stack_.netmask()) == ADDR_BCAST
      or local_ip() == ADDR_ANY;
  }

This do result in true.

Another issue I'm having when acting as a router:
    [ Network ] Creating stack for vmxnet3 on eth1
      [ Inet4 ] Bringing up eth1 on CPU 0
      [ Inet4 ] Network configured (00:0c:29:d4:1b:6c)
                IP: 		<IP_ADDRESS>
                Netmask: 	<IP_ADDRESS>
                Gateway: 	<IP_ADDRESS>
                DNS Server: 	<IP_ADDRESS>
    [ Network ] Creating stack for vmxnet3 on eth2
      [ Inet4 ] Bringing up eth2 on CPU 0
      [ Inet4 ] Network configured (00:0c:29:d4:1b:76)
                IP: 		<IP_ADDRESS>
                Netmask: 	<IP_ADDRESS>
                Gateway: 	<IP_ADDRESS>
                DNS Server: 	<IP_ADDRESS>
     [ Router ] Router created with 2 routes
                <IP_ADDRESS> <IP_ADDRESS> <IP_ADDRESS> eth2 1
                <IP_ADDRESS> <IP_ADDRESS> <IP_ADDRESS> eth1 1

When I from net 10.0.1.x try to ping <IP_ADDRESS> through the IncludeOS router, eth2 with address <IP_ADDRESS> replies to the broadcast.
$ ping <IP_ADDRESS>
PING <IP_ADDRESS> (<IP_ADDRESS>) 56(84) bytes of data.
64 bytes from <IP_ADDRESS>: icmp_seq=1 ttl=63 time=0.096 ms

Again, is this correct behavior that is_for_me returns true in this case?
Is it correct that (dst | stack_.netmask()) == ADDR_BCAST only checks if it's a broadcast, not if it's a broadcast on my net?

This is also happening even when the interface isn't yet configured.

270	09:42:04.195197	<IP_ADDRESS>	<IP_ADDRESS>	UDP	86	57621 → 57621  Len=44
271	09:42:04.195581	<IP_ADDRESS>	<IP_ADDRESS>	ICMP	70	Destination unreachable (Port unreachable)

Seems like 196e7be fixed this 👍


Export class Viz

Can you provide an explanation of this change? What does adding the export keyword accomplish?
Also, does this change the results of the type tests? https://github.com/mdaines/viz-js/blob/3ef0b7f41d315d52048e6c6246d054b62b8d3017/packages/viz/test/types/top-level.ts
The Viz class is not exported in JavaScript, so the desired effect of the declaration file is to provide the type information but not declare that the class itself is available directly.

Hi I was passing around the Viz instance eg
function visualize(viz: Viz) {
  // ...
}

Since it wasn't exported I couldn't reference the type. I think it's obvious enough to the user they can't construct the Viz class themselves. You could make it even clearer by adding the following:
class Viz {
  /** `Viz` class is not directly available from JS use `instance()` to get an instance */
  constructor(doNotUse: never) {
    throw new Error("Cannot construct `Viz` class directly use `instance()` instead");
  }
}

I'm closing this in favor of #225. Thank you for pointing this out.


When I upgrade to Powershell 7.0.0 I'm unable to load powershellget and get errors pointing to importing Microsoft.Powershell.utility

[x] Make sure you are able to repro it on the [latest released version]: 7.0.0
[x] Search the existing issues.
[x]  Refer to the FAQ.
[x]  Refer to the known issues.

Steps to reproduce
Upgraded powershell from powershell.exe prompt to avoid conflicts to 7.0.0. Rebooted to avoid this issue being environment scoped.
choco upgrade powershell-core

Get-InstalledModule powershellget
# OR
Import-Module PowershellGet

Expected behavior
Return the module without error.
Actual behavior
InvalidOperation: C:\Users\USERNAME\Documents\WindowsPowerShell\Modules\PowerShellGet\2.2.1\PSModule.psm1:327
Line |  327 |      $NoMatchFound = $LocalizedData.NoMatchFound
~~~~~~~~~~~~~~
| The variable '$LocalizedData' cannot be retrieved because it has not been set.

When trying to import powershellget i've also found the error a little more specific:
Import-LocalizedData: C:\Users\USERNAME\Documents\WindowsPowerShell\Modules\Powershellget\2.2.1\PSModule.psm1:1
Line |
   1 |  Import-LocalizedData LocalizedData -filename PSGet.Resource.psd1
     |  ~~~~~~~~~~~~~~~~~~~~
     | The 'Import-LocalizedData' command was found in the module
     | 'Microsoft.PowerShell.Utility', but the module could not be loaded. For more
     | information, run ....

Trying to run the suggested command Import-Module Microsoft.Powershell.utility and I get the following:
Import-Module: Failed to generate proxies for remote module 'Microsoft.PowerShell.Utility'. The 'Export-PSSession' command was found in the module 'Microsoft.PowerShell.Utility', but the module could not be loaded. For more information, run 'Import-Module Microsoft.PowerShell.Utility'.

Environment data

Name                           Value
----                           -----
PSVersion                      7.0.0
PSEdition                      Core
GitCommitId                    7.0.0
OS                             Microsoft Windows 10.0.18363
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           <IP_ADDRESS>
WSManStackVersion              3.0

Looks like version 2.2.1 of PowerShellGet is not the latest one and installed in WindowsPowerShell module path; So I would first try to install the latest one from pwsh by
Install-Module -Name PowerShellGet -MinimumVersion 2.2.3 -Repository PSGallery
then start a fresh pwsh 7.0.0 from desktop (as opposed to 'from other pwsh' or 'from powershell.exe') and do the Import-Module PowershellGet.

This helped point me in the right direction. I figured it might be a conflict with versions. Here's what failed
$PSModulePath = @(
"$ENV:USERPROFILE\Documents\WindowsPowerShell\Modules"
,'C:\ProgramData\Boxstarter'
,'C:\Program Files\WindowsPowerShell\Modules'
,'C:\Windows\System32\WindowsPowerShell\v1.0\Modules'
,'C:\Program Files (x86)\Red Gate\SQL Change Automation PowerShell\Modules'
,"$ENV:USERPROFILE\Documents\WindowsPowerShell\modules"
,'C:\Program Files\PowerShell\Modules'
,'c:\Program Files\powershell\7\Modules'
,"$ENV:USERPROFILE\Documents\PowerShell\Modules"
)
$ENV:PSModulePath = $PSModulePath -join ';'

Import-Module PowerShellGet

Then I moved to powershell/7/Modules above the other path and it correctly ran like below:
$PSModulePath = @(
"$ENV:USERPROFILE\Documents\WindowsPowerShell\Modules"
,'C:\ProgramData\Boxstarter'
,'C:\Program Files\WindowsPowerShell\Modules'
,'C:\Windows\System32\WindowsPowerShell\v1.0\Modules'
,'C:\Program Files (x86)\Red Gate\SQL Change Automation PowerShell\Modules'
,"$ENV:USERPROFILE\Documents\WindowsPowerShell\modules"
,'c:\Program Files\powershell\7\Modules'
,'C:\Program Files\PowerShell\Modules'
,"$ENV:USERPROFILE\Documents\PowerShell\Modules"
)
$ENV:PSModulePath = $PSModulePath -join ';'

Import-Module PowerShellGet

This leads me to two main questions for those of us who have been using windows + core and not upgraded to 7.

Are both of these folders used in 7? Is it something to do with compatibility?
'c:\Program Files\powershell\7\Modules'
'C:\Program Files\PowerShell\Modules'

Do I need to distribute now some ranked psmodule path hierarchy to force certain ordering of psmodule path to avoid this type of error in the future?

@sheldonhull What looks suspicious to me is that WindowsPS paths precede CorePS paths.
Is the order of paths in those arrays exactly like $ENV:PSModulePath value when a fresh pwsh is started?
c:\Program Files\powershell\7\Modules - is probably the install location of PS Core,

PS7 puts the PS7 User path for modules ahead of the Windows PowerShell User path.  @sheldonhull are you explicitly setting PSModulePath in your Profile or somewhere else?

@SteveL-MSFT  I don't remember doing that, but I just edited to help solve that issue. Should I remove any entries or any type of prevention/fix I can apply in the future?

@sheldonhull hard to say without understanding what your specific use case is, but for most users, I would expect they don't mess with PSModulePath directly and so this shouldn't be a problem.


Update fields once in multiple templates/images/vms.

Author Name: kvaps kvaps (kvaps kvaps)
Original Redmine Issue: 4787, https://dev.opennebula.org/issues/4787
Original Date: 2016-09-17

Hi!
I have often the problem when need to update the one field once in multiple templates. For example: change image to new image, or change value of custom field in conextulisation.
Doing this manually for each template is very tedious, I would like to be able to select all needed templates by tick, then press the UPDATE button, then change field and save the image.
Now this action returns:

Please select one (and just one) resource to update.

Original Redmine Comment
Author Name: kvaps kvaps (kvaps kvaps)
Original Date: 2016-09-17T23:08:56Z

Ouch! Sorry, wrong title, please change it to "Update fields once in multiple templates/images/vms." :-[

Original Redmine Comment
Author Name: Carlos Martín (Carlos Martín)
Original Date: 2016-09-19T08:59:59Z

Hi,
I don't think this is a reasonable thing to do in sunstone, it looks more like something to be scripted using the API.
Let's say you select 2 templates to update with these disks:
Template 1
DISK = [ IMAGE = ubuntu ]
DISK = [ IMAGE = data ]

Template 2
DISK = [ IMAGE_ID = 17 ]

How would the wizard disks section look?

Hi @carlosms, I think we can return an error in this case


DSE 6.8 support

Add tests for DSE 6.8 tarballs
add support for new statuslogger format with steal and shared columns

I got short circuited on this with tickets this week. Will have to revisit later and validate more of the scenarios. atm we have support for statuslogger, slowquery, diag and the default command tested fixed and working.


DSP-920 Renaming default github branch to "main" ;  Move to the same base branch

resolves DSP-920

[x] add main branch by creating a branch from develop
[x] Change Github-CI
[x] Change all open PRs

We are still having this intermittent problem with Sipi:
KnoraSipiScriptsV1ITSpec:
Faked Knora API Server started at http://<IP_ADDRESS>:3333.
Calling Knora Sipi Scripts
- should successfully call C++ functions from Lua scripts *** FAILED *** (381 milliseconds)
  akka.http.impl.engine.client.OutgoingConnectionBlueprint$UnexpectedConnectionClosureException:
The http server closed the connection unexpectedly before delivering responses for 1 outstanding requests

We are still having this intermittent problem with Sipi:
KnoraSipiScriptsV1ITSpec:
Faked Knora API Server started at http://<IP_ADDRESS>:3333.


Stack overflow when using model

Running this application with EF 7.0.0-rc1-final (i.e. after running Install-Package EntityFramework.Commands –Pre and Install-Package EntityFramework.MicrosoftSqlServer –Pre)
using Microsoft.Data.Entity;
using Microsoft.Data.Entity.Infrastructure;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
class Program
{
    private static void Main(string[] args)
    {
        var options = new DbContextOptionsBuilder();
        options.UseSqlServer(@"Server=.;Database=Test;Integrated Security=True;");
        using (var dc = new DatabaseContext(options.Options))
            dc.Foos.Where(u => u.Id == 1).SingleOrDefault();
    }
}
public partial class DatabaseContext : DbContext
{
    public DatabaseContext(DbContextOptions options) : base(options) { }
    public virtual DbSet<Foo> Foos { get; set; }
}
public partial class Foo
{
    [NotMapped]
    public string[] List { get { return null; } }
    [Key]
    public virtual int Id { get; set; }

    public virtual Bar1 Bar1 { get; set; }
    public virtual Bar2 Bar2 { get; set; }
    public virtual Bar3 Bar3 { get; set; }
}
public partial class Bar1
{
    [Key]
    public virtual int FooId { get; set; }
    [ForeignKey("FooId")]
    [InverseProperty("Bar1")]
    public virtual Foo Foo { get; set; }
}
public partial class Bar2
{
    [Key]
    public virtual int FooId { get; set; }
    [ForeignKey("FooId")]
    [InverseProperty("Bar2")]
    public virtual Foo Foo { get; set; }
}
public partial class Bar3
{
    [Key]
    public virtual int FooId { get; set; }
    [ForeignKey("FooId")]
    [InverseProperty("Bar3")]
    public virtual Foo Foo { get; set; }
}

Results in this exception in the call to "Where(...)":

An unhandled exception of type 'System.StackOverflowException' occurred in mscorlib.dll

I tried using the "aspnetcidev" package source, but using that currently results in a "missing method" error related to logging.

Try this:
Remove [NotMapped] attribute from_ List_ property in Foo class.
Add modelBuilder.Entity().Ignore(f => f.List) in OnModelCreating method after base call.

Thanks for the suggestion. It was a good hit to look for the NotMapped-attributes. I think it can work as a workaround for me.
But EF shouldn't overflow the stack. If attributes have been used incorrectly (or in an incompatible way), it should throw an error, ideally with a useful error message.

Verified that this is fixed in the working code base and the fix will ship in RC2.


New Github Actions (fix #199)

New GitHub Actions, like last time in #132 it is heavily inspired by my dynamic_bitset Github Actions.
Fix #199
Local actions
The new workflows are better organized using "local" actions:

Setup ccache in .github/actions/setup_ccache
Setup CMake in .github/actions/setup_cmake/action.yml
Install SFML in .github/actions/install_sfml/action.yml

New workflows
The workflow are now separated depending on the build environment:

Ubuntu: build on ubuntu-20.04 using gcc-9 / gcc-10 / clang-10 / clang-11 / clang-12 in Debug / Release
(ubuntu-18.04 disabled because SFML seems to have dependencies problems with it)
Windows MinGW: build on windows-2019 / windows-2022 using the available gcc / clang in Debug / Release
(currently mingw-w64-x86_64-gcc-11.2.0-10 and mingw-w64-x86_64-clang-13.0.1-3)
Windows Visual Studio: build on windows-2019 / windows-2022 using Visual Studio 16 / Visual Studio 17 in Debug / Release targeting Win32 / x64
(using the default toolsets as SFML doesn't compile using ClangCL on the 2.5.1 tag but the issue is fixed on branch 2.6.x)
MacOS: build on macos-10.15 / macos-11 using Xcode 10.3 / Xcode 11.7 / Xcode 12.4 / Xcode 12.5.1 / Xcode 13.2.1  in Debug / Release
(I only kept the majors versions of Xcode otherwise the workflow the veeeeeery long)

I also created a workflow dedicated to clang-format:

clang-format-lint-action using https://github.com/DoozyX/clang-format-lint-action
(as it was already used before)

Badges
I added the badges to the README, at the moment it might look like this:

But when the workflow will be run on master it will look like this:

C++11
The old Github Action where invoking CMake with -D CMAKE_CXX_STANDARD=11 as some old compilers still use C++98 as default standard and the project was requiring C++03.
But according to #7 C++11 is now the minimum required standard so I made it a requirement on the ImGui-SFML target in the CMakeLists.txt
Note
The Windows MinGW workflow might need to be re-run the first time to let the gcc jobs bootstrap the SFML installation cache as the CMake configuration of SFML fails when using MinGW with clang stating that it doesn't find OpenAL, quite strange but we are here to build imgui-sfml, not SFML, so until it is fixed I think using the gcc built version from the cache is good enough.
To re-run the jobs:

Well, as expected the Windows MinGW workflow needs a re-run.

Thanks a lot for this PR!
I have some concerns about the number of builds that you have here... I think that x86/Win32 build should be dropped - this will already cut a lot computation. It's very rarely used these days...
I also think that  "windows-2022 - VS2022" etc. should be named "Windows - VS2022" and so on, because seeing "Windows 2022" is confusing
As for Ubuntu... I'd leave gcc-9 and clang-10 only - I really doubt that there will be any differences there because we're not using a lot of fancy C++14/17 etc. code.
As for MacOS... I'm not really sure how quickly XCode evolves? I think we should use 13.2, because that's the version that SFML's CI uses and MacOS seems to be moving forward quickly, so SFML's MacOS implementation is not guaranteed to work on older versions.

Thanks a lot! Merged

Nice

For some reason if fails in master now. Any ideas why it’s happening?

Sorry I missed the notification, this is the issue I mentioned in the "Note" of the first message, you need to re-run the workflow.

Still failing for Clang on MinGW

Is it possible to group all these runs into one "run", btw?

Yes, just put them all into one file -- which is how I'd do it anyway in the first place. These really aren't different workflows, it's the same workflow on several systems.


HEDA Administrative account creation for new contact is broken

After installing the package, the HEDA automatic creation of the administrative account for new contacts doesn't occur.  I had to manually create the administrative account and assign it to the contact.  After that it all works well.  Maybe there is something I missed in the setup steps?  HEDA version is 1.35.  Thank you.

Hi Bill,
I think this may be an unrelated issue. I just installed the package in a developer edition org and the administrative account got automatically created without issue. I'd recommend checking three things:

Go to HEDA Settings>System and ensure that the default account model is set to Administrative
Go to Trigger Handlers and ensure that the record associated with the ACCT_IndividualAccounts_TDTM class is Active
Query the hed__Error__c object to see if the TDTM framework caught any unhandled exceptions

Let me know what you find.
Thanks,
Kyle

Argh... I had created a sandbox so no head trigger handler records.  I'll re-install heda into the sandbox.  Thank You!

FYI, you can also run the following line of code in execute anonymous to insert all the default trigger handlers (any non-default handlers would be deleted after doing this).
hed.TDTM_Global_API.setTdtmConfig(hed.TDTM_Global_API.getDefaultTdtmConfig());


Empty web page with docker-compose

Setting:
Windows:
Edition	Windows 10 Pro
Version	21H2
Installed on	9/3/2022
OS build	19044.2251
Experience	Windows Feature Experience Pack 120.2212.4180.0

Docker:
v4.15.0

Command:
docker-compose -f docker-compose-full.yaml up

Result

White page when access business service

Capture

Look like problem with Postres?
2022-12-03 08:53:51 The files belonging to this database system will be owned by user "postgres".
2022-12-03 08:53:51 This user must also own the server process.
2022-12-03 08:53:51
2022-12-03 08:53:51 The database cluster will be initialized with locale "en_US.utf8".
2022-12-03 08:53:51 The default database encoding has accordingly been set to "UTF8".
2022-12-03 08:53:51 The default text search configuration will be set to "english".
2022-12-03 08:53:51
2022-12-03 08:53:51 Data page checksums are disabled.
2022-12-03 08:53:51
2022-12-03 08:53:51 fixing permissions on existing directory /var/lib/postgresql/data ... ok
2022-12-03 08:53:51 creating subdirectories ... ok
2022-12-03 08:53:51 selecting dynamic shared memory implementation ... posix
2022-12-03 08:53:51 selecting default max_connections ... 100
2022-12-03 08:53:51 selecting default shared_buffers ... 128MB
2022-12-03 08:53:51 selecting default time zone ... UTC
2022-12-03 08:53:51 creating configuration files ... ok
2022-12-03 08:53:51 running bootstrap script ... ok
2022-12-03 08:53:51 performing post-bootstrap initialization ... ok
2022-12-03 08:53:53 syncing data to disk ... ok
2022-12-03 08:53:53
2022-12-03 08:53:53
2022-12-03 08:53:53 Success. You can now start the database server using:
2022-12-03 08:53:53
2022-12-03 08:53:53     pg_ctl -D /var/lib/postgresql/data -l logfile start
2022-12-03 08:53:53
2022-12-03 08:53:53 waiting for server to start....2022-12-03 01:53:53.255 UTC [36] LOG:  starting PostgreSQL 14.6 on x86_64-pc-linux-musl, compiled by gcc (Alpine 12.2.1_git20220924-r4) 12.2.1 20220924, 64-bit
2022-12-03 08:53:53 2022-12-03 01:53:53.260 UTC [36] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2022-12-03 08:53:53 2022-12-03 01:53:53.273 UTC [37] LOG:  database system was shut down at 2022-12-03 01:53:51 UTC
2022-12-03 08:53:53 2022-12-03 01:53:53.278 UTC [36] LOG:  database system is ready to accept connections
2022-12-03 08:53:53  done
2022-12-03 08:53:53 server started
2022-12-03 08:53:53
2022-12-03 08:53:53 /usr/local/bin/docker-entrypoint.sh: ignoring /docker-entrypoint-initdb.d/*
2022-12-03 08:53:53
2022-12-03 08:53:53 waiting for server to shut down...2022-12-03 01:53:53.352 UTC [36] LOG:  received fast shutdown request
2022-12-03 08:53:53 .2022-12-03 01:53:53.356 UTC [36] LOG:  aborting any active transactions
2022-12-03 08:53:53 2022-12-03 01:53:53.357 UTC [36] LOG:  background worker "logical replication launcher" (PID 43) exited with exit code 1
2022-12-03 08:53:53 2022-12-03 01:53:53.357 UTC [38] LOG:  shutting down
2022-12-03 08:53:53 2022-12-03 01:53:53.393 UTC [36] LOG:  database system is shut down
2022-12-03 08:53:53  done
2022-12-03 08:53:53 server stopped
2022-12-03 08:53:53
2022-12-03 08:53:53 PostgreSQL init process complete; ready for start up.
2022-12-03 08:53:53
2022-12-03 08:53:51 sh: locale: not found
2022-12-03 08:53:51 2022-12-03 01:53:51.628 UTC [30] WARNING:  no usable system locales were found
2022-12-03 08:53:53 initdb: warning: enabling "trust" authentication for local connections
2022-12-03 08:53:53 You can change this by editing pg_hba.conf or using the option -A, or
2022-12-03 08:53:53 --auth-local and --auth-host, the next time you run initdb.
2022-12-03 08:53:53 2022-12-03 01:53:53.469 UTC [1] LOG:  starting PostgreSQL 14.6 on x86_64-pc-linux-musl, compiled by gcc (Alpine 12.2.1_git20220924-r4) 12.2.1 20220924, 64-bit
2022-12-03 08:53:53 2022-12-03 01:53:53.469 UTC [1] LOG:  listening on IPv4 address "<IP_ADDRESS>", port 5432
2022-12-03 08:53:53 2022-12-03 01:53:53.469 UTC [1] LOG:  listening on IPv6 address "::", port 5432
2022-12-03 08:53:53 2022-12-03 01:53:53.477 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2022-12-03 08:53:53 2022-12-03 01:53:53.485 UTC [48] LOG:  database system was shut down at 2022-12-03 01:53:53 UTC
2022-12-03 08:53:53 2022-12-03 01:53:53.490 UTC [1] LOG:  database system is ready to accept connections
2022-12-03 08:54:21 2022-12-03 01:54:21.186 UTC [62] FATAL:  role "root" does not exist
2022-12-03 08:54:51 2022-12-03 01:54:51.253 UTC [102] FATAL:  role "root" does not exist
2022-12-03 08:55:21 2022-12-03 01:55:21.334 UTC [110] FATAL:  role "root" does not exist
2022-12-03 08:55:51 2022-12-03 01:55:51.423 UTC [117] FATAL:  role "root" does not exist
2022-12-03 08:56:21 2022-12-03 01:56:21.514 UTC [125] FATAL:  role "root" does not exist
2022-12-03 08:56:51 2022-12-03 01:56:51.593 UTC [132] FATAL:  role "root" does not exist
2022-12-03 08:57:21 2022-12-03 01:57:21.714 UTC [140] FATAL:  role "root" does not exist
2022-12-03 08:57:51 2022-12-03 01:57:51.796 UTC [147] FATAL:  role "root" does not exist

I got same issue. Reproducible on MacOS.

same issue, macos.

specifying the user seems to avoid this error.
 test: ["CMD-SHELL", "pg_isready -U postgres"]

By modifying docker-compose-full.yaml line11 to  test: ["CMD-SHELL", "pg_isready -U postgres"] line128 to  WEB_PORT: 8080 the project can be run.

It work. Many thanks

shouldn't this fix merged into master?


Retention policy clarification

I think I understand "maximum number of versions per package".  This is to prevent Azure DevOps hosting old packages versions back to the dawn of time (save on space etc).
But I'm less clear on "Days to keep recently downloaded packages".  Is this a "caching" setting for the client?  I note the next section is titled "Recover a deleted package from the recycle bin" and also uses the same value of 20....just wanted to check that "downloaded" wasn't a typo (should have been "deleted")?
Many thanks

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

ID: 31a8d31b-229b-7383-1cc0-f3d7c65eca84
Version Independent ID: 70ba7acf-adae-e1b7-a42d-3f1344c5293c
Content: Delete and recover packages - Azure Artifacts
Content Source: docs/artifacts/how-to/delete-and-recover-packages.md
Product: devops
Technology: devops-artifacts
GitHub Login: @chasewilson
Microsoft Alias: phwilson

@msebolt , is it possible to recover in a single action all deleted packages from Recycle Bin ? Doing it one by one cane take time if you are deleted several packages

@DrGriff Thank you for your feedback. days to keep recently downloaded packages allow you to effectively manage your packages and artifacts storage. Example: if you set days to keep recently downloaded packages to 10, this means that any package that hasn't been downloaded in 10 days will be deleted automatically.
For recovering deleted packages section: the recycle bin will show you any packages that have been deleted from your feed in the past 30 days.

I ask again :  is it possible to recover in a single action all deleted packages from Recycle Bin ? Doing it one by one cane take time if by mistake  you are deleted several packages @ramiMSFT .


Stop deleting criticism and jokes

Stop deleting criticism and jokes
A description of the issue:
after a message is deleted, sometimes a user comments on the deletion, possibly criticising it, joking about it, or asking for a reason. i have noticed several jokes and comments about a certain moderator deleting messages getting deleted. I dont know who deletes, them, but they are deleted, and they violate no rules.
In addition, there have been several occasions when asking why a message was deleted has been ignored or removed, and no reason given, even when linking or screenshotting the following message from ana on the topic:

Otherwise, perfectly happy to explain anytime needed if asked for in specific cases

https://github.com/CyberDiscovery/meta/issues/301#issuecomment-554000382
Proposed Solution:
stop doing it. give reasons when asked.
Additional Comments:
none

Deleting comments related to deletion is something I understand people are opposed to and I see no problem with us changing this. In terms of deleted messages themselves, those are often for a reason and hence we cannot compromise on that. Otherwise, I completely understand your point of view and there is scope for improvement.
As for jokes, those are fine to remain but obviously, if they're offensive we retain the right to delete them.
I hope this helps! 😄

yeah, often i am fine with the actual messages that are deleted, sometimes i send something knowing it will be deleted shortly. when im not fine with it i generally make that clear, and i am not fine with these cases where messages asking for reasons or commenting/joking about messages being deleted are deleted.

That's entirely understandable - this is something that we'll work on as a team and hopefully we can resolve this issue - if not, I'll reopen it down the line. Sorry for the inconvenience :)


how ragoo  to set max_variant_size?

When only running Assemblytics, there is a  parameter to set the max_variant_size from 10kb to 10Mb, but RaGoo default max_variant_size 10kb, how to adjust it? Thanks~

Hi there,
You can change the min and max SV size with -a and -f respectively. These are currently hidden parameters, but they will do the trick.
By the way, though integrated assemblytics is not supported, I highly encourage you to switch your scaffolding analysis to RagTag if possible. RaGOO will soon be archived.
Thanks,
Mike


Fix mistake in README.md

Thanks! I missed the @synthesize shouldRotate in the readme, but this is way cleaner.


Docs: Documentation on NuGet PM UI should have information about the tabs and filters

@mishra14 commented on Mon Jun 12 2017
Original Customer request: https://github.com/NuGet/Home/issues/5340
Currently our documentation on NuGet PM UI for VS does not contain any information about the the 4 tabs (purpose and default behavior) and more importantly the effects of the filters (pre-release checkbox and the Package Source drop down) on each of the tabs. More details in the original bug.
We should have some documentation to make it easier for users to understand the default behavior.

@mishra14 commented on Mon Jun 12 2017
tagging PM team for visibity: @anangaur @karann-msft @kraigb

Added details for the Installed and Updates tabs in relevant sections.


/for/communities.json should return something more explicit than an empty list

When accessed as an unauthenticated user https://www.gittip.com/for/communities.json
return an empty list. Is this intentional?
BTW this json end-point is not mentioned at all in the documentation of the API

---
Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/2181450-for-communities-json-should-return-something-more-explicit-than-an-empty-list?utm_campaign=plugin&utm_content=tracker%2F85909&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F85909&utm_medium=issues&utm_source=github).

Closed until communities (or tags) return.


Remove background_task_spoiler_season

It no longer works.

Travis tests have failed
Hey @bakert,
Please read the following log in order to understand the failure reason.
It'll be awesome if you fix what's wrong and commit the changes.
TravisBuddy Request Identifier: ea777380-bfee-11ea-8f0c-c508e01afe59


Integrate policy expressions code

This is still a work-in-progress, and nothing is actually used yet, but this at least moves over the draft implementation of policy expressions from the external experimental repo I'd made to enable integration with Hipcheck.
The other thing I did was organize the Cargo.toml file for the hipcheck crate, particularly to put all dependencies in alphabetical order, as they had been at one point previously.
Resolves #260

Looks like I'll need to rebase to get this working.


enable vite and upgrade hilla, vaadin, spring version

Description
Please list all relevant dependencies in this section and provide summary of the change, motivation and context.
Fixes # (issue)
Type of change

[ ] Bugfix
[x] Feature

Checklist

[ ] I have read the contribution guide: https://vaadin.com/docs/latest/guide/contributing/overview/
[ ] I have added a description following the guideline.
[ ] The issue is created in the corresponding repository and I have referenced it.
[ ] I have added tests to ensure my change is effective and works as intended.
[x] New and existing tests are passing locally with my change.
[ ] I have performed self-review and corrected misspellings.

Additional for Feature type of change

[ ] Enhancement / new feature was discussed in a corresponding GitHub issue and Acceptance Criteria were created.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Closing this since main has now latest vaadin and hilla versions, as well as using vite by default


[UI-REACT]: Send USDT follow official docs not work

Describe the bug
Follow the official docs to prepare jetton transfer transaction: https://docs.ton.org/develop/dapps/ton-connect/message-builders#jetton-transfer
// get user USDT wallet address from USDT Jetton Master
const userUSDTAddress = await getUserJettonWalletAddress(walletAddress, USDTJettonMasterAddress)

const body = beginCell()
            .storeUint(0xf8a7ea5, 32)                 // jetton transfer op code
            .storeUint(0, 64)                         // query_id:uint64
            .storeCoins(1000000)                      // amount:(VarUInteger 16) -  Jetton amount for transfer (decimals = 6 - jUSDT, 9 - default)
            .storeAddress(Address.parse(to))  // destination:MsgAddress
            .storeAddress(Address.parse(walletAddress))  // response_destination:MsgAddress
            .storeUint(0, 1)                          // custom_payload:(Maybe ^Cell)
            .storeCoins(toNano(0.05))                 // forward_ton_amount:(VarUInteger 16) - if >0, will send notification message
            .storeUint(0,1)                           // forward_payload:(Either Cell ^Cell)
            .endCell();

        const transaction = {
            validUntil: Math.floor(Date.now() / 1000) + 360,
            messages: [
                {
                    address: userUSDTAddress.toRawString(), // sender jetton wallet
                    amount: toNano(0.05).toString(), // for commission fees, excess will be returned
                    payload: body.toBoc().toString("base64") // payload with jetton transfer and comment body
                }
            ]
        }

      const txRes = await tonConnectUI.sendTransaction(transaction as SendTransactionRequest)

Expected behavior
Launch Ton Wallet miniapp and confirm to send transaction
Current behavior
Launch Ton Wallet miniapp but it's keep loading, and then toast a message: Unable to verify transaction
Here is console log:

Steps to Reproduce
see describe code
Environment
MacOS
Additional context
No response

Hi @thekiba
Is there any update on the issue?

Any solution ?


TypeError: vrfCoordinatorV2Mock.addSubscription is not a function

This error is caused by the following line. await vrfCoordinatorV2Mock.addSubscription(subscriptionId, raffle.address) . Please change it to  await vrfCoordinatorV2Mock.addConsumer(subscriptionId, raffle.address)

What is the issue here? VRFCoordinatorV2Interface is implemented by VRFCoordinatorV2Mock, look at the interface do you see addSubscription as a function, I don't, but what I do see is createSubscription and addConsumer.
Now if we take a look at the VRFCoordinatorV2Mock contract I can see an implementation of where we override the following methods:

createSubscription
addConsumer

There is no addSubscription method, when you add your consumer (addConsumer) there is an additional parameter to specify your subscriptionId, that is what you would use if you want to add your Raffle as a consumer to the result generated by the VRFCoordinatorV2 /

I apologize for not specifying the problem more explicitly. When I run the deploy script from the 01-deploy-raffle.js file after cloning the repository, this error appears, and when I run the test script, I get InvalidConsumer(). Upon researching the discussion group, I discovered that I should use addConsumer() instead of addSubscription(), which I thought might have been a mistake. Therefore, I created an issue ticket for this.

I believe addConsumer is correct, in my code I have used that method.

Thanks! Can you make a pull request to fix?

Thanks, i was having the same issue.


AMP ads show twice

This is really strange, but two users have reported this

https://wordpress.org/support/topic/what-this-future-error-means/#post-8431770
https://wordpress.org/support/topic/error-version-0-8-7-mandatory_amp_tag_missing_or_incorrect/#post-8431766

this is not our fault http://take.ms/AsXYz
if we have that installed we get a warning that we have 2  Scripts pointing to the same thing


How to calculate gradients for the intermediate outputs using symbol?

Is it possible to compute gradients of intermediate values of a computation?
For example:-
a = mx.sym.var(name = 'a', shape = (1, 1), dtype = 'float64')
b = mx.sym.var(name = 'b', shape = (1, 1), dtype = 'float64')

c = mx.sym.broadcast_add(a, b, name = 'c')
d = mx.sym.make_loss(mx.sym.broadcast_add(c, b, name = 'd'))

bind = d.simple_bind(ctx = mx.cpu(1))
bind.forward(a = mx.nd.ones((1, 1)), b = mx.nd.ones((1, 1)), grad_req = {'a': 'write', 'b':'write', 'c':'write'})
outputs = bind.outputs[0]
# print(outputs)
bind.backward()
print(bind.grad_dict)
#prints
  # {'a':
  # [[1.]]
  # <NDArray 1x1 @cpu(1)>,
  # 'b':
  # [[2.]]
  # <NDArray 1x1 @cpu(1)>}

Here bind.grad_dict doesn’t provide gradients of c even though I’ve written 'c':'write' in grad_req .
For now gradient api of symbol is not implemented yet.
So how can I get the gradients of “d with respect to c”?

Maybe try using BlockGrad like in https://github.com/apache/incubator-mxnet/issues/1538?

I’ve seen this issue but can’t figure out what do I need to do. It confuses me further because GradBlock is supposed to block any gradient computation of that layer, so how am I supposed to get intermediate gradients from that??
Can you please make an example using the code I've provided in the issue?
Thanks for your time.


LOG4J2-1341 Add support for period in ISO8601 format

Add support for period in ISO8601 format as per the documentation: "millisecond separator may be either a comma ',' or a period '.'"
Also Java's java.time.Instant.toString() and JavaScript's new Date().toISOString() use '.' as well.

How about a unit tests? ;-)

PR looks good at first glance. Unit test would be nice.
Can you link this pull request to another Jira?
LOG4J2-1341 is the ticket for GC-free pattern converters which is not related to FixedDateFormat. Feel free to create a new Jira ticket if no matching one exists.

This change is related to GC-free patterns as it allows DatePatternConverter to support a period in the ISO8601 format. Without this change the DatePatterConverter successfully formats using "yyyy-MM-dd'T'HH:mm:ss.SSS" but it doesn't do it using the GC-free FixedDateFormat.
If you wish though I can create a more specific Jira.

Opps didn't mean to "Comment and close"

If you don't mind, more specific Jira tickets would be good: in our release notes we always include a detailed breakdown of what was changed and separate Jiras help with that.

I've created a Jira, added a unit test and updated the pull request.


Editable installs break due to setuptools

As reported here, there is a bug in newer versions of setuptools that can caused editable installs to break due to changes that setuptools made to support PEP 600.
There are two ways to address this. In the short term, users can add --config-settings editable_mode=strict to their pip install -e command. This forces setuptools to use the older style of editable installs. Longer term, the best way to fix this for Hatchet and Thicket is to move away from setuptools.

Regarding editable_mode, this page from setuptools explains what it does: https://setuptools.pypa.io/en/latest/userguide/development_mode.html#strict-editable-installs

See #135 and https://github.com/LLNL/hatchet/pull/128


numpydoc should not be in the install_requires

Hi,
Currently when I pip install smt, it pulls in a lot of unnecessary dependencies via numpydoc. Please consider moving numpydoc out of install_requires (I'm guessing it is only used when you build docs).
Matplotlib and packaging should also not bet there, but they are less offensive, so lower priority :)
If you are willing but short on time, I might be able to contribute a PR. Let me know.

Hi, thanks for the heads up.
Indeednumpydoc, matplotlib should not be in install_requires (rather in requirement.txt I suppose). It seems, it was made to make readthedocs work at the time, I have to check on that. packaging dependency is a leftover, after removing scikit-learn version checks it could be removed.


Remove redundant 'are' in the list of claims.

Please excuse the slightly low-effort PR, but since I've now seen it, this is bugging me more than I want to admit. :)

Thanks!


[#3808] flag ppport.h files created by Devel::PPPort perl module as generated

Marking ppport.h files which are generated by Devel::PPPort as generated.
Checklist:

[x] I am adding new or changing current functionality

[x] I have added or updated the tests for the new or changed functionality.

This is looking good from my perspective, except for the heeeaaawwg ppport.h file. As this is only being used for testing, I think we can safely truncate it to about 30 lines with a comment at the point of truncation along the lines of "linguist: deliberately truncated for test purposes" or something along those lines.
Thoughts?

Done


[Question] Can I use your datapack as a base

Can I use your datapack as a base to make my own? I will credit yours for inspiration / borrowed commands! I have a cool idea that i think will be awesome
(Also sorry for making a github issue, i wasnt sure where else to contact you)

Yes! It's all right with me. You can do as you wrote. I am glad that it inspired you!


Can't Select property from a Table() without ToList()ing it first

db.Table<Foo>().ToList().Select(x => x.id).ToArray(); // returns [1, 2, 3, 4]
db.Table<Foo>().Select(x => x.id).ToArray(); // returns [0, 0, 0, 0]

Is this intended behaviour?

This has been fixed and will appear in the 1.5 series. Sorry for the trouble!


Show newly added Logout() method in example.

Show usage of Logout method as introduced in #36.
It would be nice if this could warrant a new release so there is a well defined version where you can use the session support.

@chinmayb: Thanks for the merge, but does this mean you will also create a release as I requested above?

@jkraj Do we need to create a release since the sessoin support is merged ?

@chinmayb: My reason for wanting a release is that doing "dep init" (https://github.com/golang/dep) in my project fetches the latest release (in this case 0.2.0) when creating the vendor directory:
$ dep init
  Using ^0.2.0 as constraint for direct dep github.com/infobloxopen/infoblox-go-client
  Locking in v0.2.0 (768f9c4) for direct dep github.com/infobloxopen/infoblox-go-client
[...]

This means I do not get access to cookie support automatically which would be nice.

@eest new release is available now. you can refer 'master' in Gopkg.toml against this repo to get latest code


added password support

See https://github.com/DirectoryLister/DirectoryLister/pull/132#issuecomment-252449499


Error after running jmeter test on Jenkins with multiple parameters passed via "-J" flag

Expected behavior
No issues, test should be run successfully with multiple parameters pased via "-J" flag.
Actual behavior
errorlevel=255
Steps to reproduce the problem
I'm running jmeter test on windows based Jenkins node using next command (Windows batch command):
jmeter ^
-Jjmeter.save.saveservice.output_format=xml ^
-Jjmeter.save.saveservice.response_data=false ^
-Jjmeter.save.saveservice.samplerData=true ^
-Jjmeter.save.saveservice.requestHeaders=true ^
-Jjmeter.save.saveservice.url=true ^
-Jjmeter.save.saveservice.responseHeaders=true ^
-Jparam1=%param1% ^
…
-JparamN=%paramN% ^
-n -t "file.jmx" -l "%WORKSPACE%\Test%BUILD_NUMBER%.xml"
When number of params passed via flag "-J" exceeds 13, I'm getting "errorlevel=255" on Jenkins.
I was able to fix the issue by using "-D" flag instead of "-J" flag but it looks like there is a bug using "-J" flag.
JMeter Version
5.5
Java Version
1.8.0_362
OS Version
Windows Server 2012 R2

https://gist.github.com/polarnik/68b55f64f0a76c26150ffe2ac5405433
An other example of the error for the environment:

windows 10
jmeter 5.2.1 (GUI Mode only)
java 8


Refresh inventory when deleting an instance

Description
closes #3133
Self Check:
Strike through any lines that are not applicable (~~line~~) then check the box

[x] Attached issue to pull request
[x] Changelog entry
[x] Code is clear and sufficiently documented
[x] Sufficient test cases (reproduces the bug/tests the requested feature)
[x] Correct, in line with design
[x] ~End user documentation is included or an issue is created for end-user documentation (add ref to issue here: )~

Reviewer Checklist:

[ ] Sufficient test cases (reproduces the bug/tests the requested feature)
[ ] Code is clear and sufficiently documented
[ ] Correct, in line with design

Processing this pull request

Merged into branches iso5, master in 4a2a8b0601d1ec76140df75f35c6ad75cb19428e

Processing #3155.

Processing #3155.


Auth

I would like to require authentication to pub/sub to topics at least on private servers.
I think Google Identity would be a good provider here since authenticating to it is a familiar part of the types of workflows I would like to incorporate this into.

I'm not against adding optional authentication, but using Google seems a little against the selfhosting spirit, no?
I'll think about this a little and do some research. I think there are a lot of difficulties implementing any auth. Maybe auth shouldn't be done by ntfy but rather by nginx or some other proxy...

:+1:
Interim step could be to support basic auth. Haven't tried if that would work?
Curl should support it, but would the android app?

I think I'll look at something with basic auth to begin with. Especially since that's incredibly easy to do with curl too.

It would maybe be enough to just make sure the App supports Basic Auth - which your http library, if you use one, might already support.
Then it would be up to the maintainer of the selfhosted instance to put http basic auth in the config of the reverse proxy.
I guess most people will run ntfy behind nginx or Traefik, etc.
They all support basic auth.
So that would be the "cheapest" way of achieving some kind of protection - it would protect everything in one go.

What implementing authentication via api tokens? For example, the creator of a topic can optionally include a token, and then whoever tries to subscribe to that topic afterwards has to provide the same token (this is effectively a password-protected topic). The content of said token is completely arbitrary (though perhaps should be limited to, say 64-128 characters/bytes).
This could be done for example via the "Authorization" header, or by simply including a "token" field along with the message/subscription request. Note that the server would not include the token when relaying a message. For public topics this field could be omitted, or assumed/left empty by default.
More complex but more flexible variant: topic creator includes an "admin" token and a list of allowed "client" tokens. Anyone providing a valid client token can publish subscribe to the topic, and the list of allowed tokens can me changed only by providing the admin token as authentication. The list of client tokens could even be split into two, separating the clients that can publish to the topic and clients that can subscribe (the same token can be on both lists, and the two capabilities are separate - that way, we have clients that are publish-only, subscribe-only, and both).
This way:

A publisher cannot send a message without providing the appropriate token.
A subscriber cannot subscribe to a topic without providing the appropriate token.
An admin can request a list of the current tokens, add a token to a specific list, remove a token from a specific list.

The server administrator can decide via the config if the auth tokens expire with the topic or if they are persistent (can be easily saved in a dedicated json/yaml file).
Example auth.json:
{
    "mytopic": {
        "admin": ["LhaC8heEBOu9YPVc", "XqyNlCyqUDq6g7oM"],
        "pub": ["NSgG47rbMLdDxl0L", "rppJwLr8HaEs2WtF", "1RoqplTLvIKvIAMM", "iqp5qgmKenWjd1I6"],
        "sub": ["NSgG47rbMLdDxl0L", "rppJwLr8HaEs2WtF", "1RoqplTLvIKvIAMM", "ahPaEtqoY0i8MWwN"]
    },
    "topic2": {
        "admin": [],
        "pub": ["IyWmTqwmZuLNFPxZ", "WTliVPeTp602x51L"],
        "sub": ["IyWmTqwmZuLNFPxZ", "WTliVPeTp602x51L"]
    }
}

Note how mytopic has two admin tokens, iqp5qgmKenWjd1I6 can only publish, ahPaEtqoY0i8MWwN can only subscribe, and the other three can do both.
As for topic2, there are no admin tokens - so only those two client tokens would be able to pub/sub, and nobody would be able to change that list except the server administrator.

Thank you very much for the incredibly detailed suggestion. That's awesome!

the creator of a topic can optionally include a token, and then whoever tries to subscribe to that topic afterwards has to provide the same token (this is effectively a password-protected topic).

So technically a topic is never created actively:

If caching is enabled, it just exists when there are cached messages until they expire (12h)
If caching is turned off, a topic never really exists for longer than a split second. A message is forwarded to all of its subscribers and then the topic is destroyed immediately.

I think this is solvable though.

This could be done for example via the "Authorization" header, or by simply including a "token" field along with the message/subscription request. Note that the server would not include the token when relaying a message. For public topics this field could be omitted, or assumed/left empty by default.

.. admin token ..

As you may have noticed from the rest of ntfy, I like simple things, so I am not a big fan of the admin + client token idea (for now at least). I can totally imagine this being useful eventually, but for now I think your first idea can be adapted to work with the ephemeral topics.
How about this:
Topic-specfic auth
When you publish or subscribe to a topic, you can additionally send a Authorization: token ... header as you suggested, e.g.
Authorization: token xDsdAkksdjdfFBalADA

my message

or
Authorization: token xDsdAkksdjdfFBalADA

If an Authorization header is present and the topic is not known, the topic is reserved for topic-auth-reservation: 24h (configurable), during which time the topic will not be reaped and only requests with a valid auth can publish/subscribe
The topic expiration time is automatically extended as long as you are actively connected. So effectively a topic never expires as long as you are connected. And when you are disconnected, you have topic-auth-reservation to reconnect before the topic expires.

Server-wide auth
Instead of doing a topic specific  Authorization, you configure a server-auth: mysecrettoken or something which applies to all topics. This would be the simplest way to make a private server.
All configs:
auth-mode: (none|server-wide|per-topic)     # defaults to none
server-auth: <token>
topic-auth-reservation: 24h

Thoughts?

Lol, I guess I got a little carried away. I like your idea very much - both the topic-specific auth, as well as the server-wide auth (and it doesn't preclude the implementation of some kind of authorization logic on top of it in the future ;) )
How would you handle the case of topic-auth-reservation < cache-duration? I see the following options:

configuration error that prevents the server from starting (easiest to implement, but perhaps a bit limiting?)
topic becomes public, any previous cached message is kept but only accessible if the correct auth token is provided (too messy imo)
topic becomes public, any previous cached message becomes publically available (bad idea/potential security risk, defeats the purpose of authorization)
topic becomes public, any previous cached messages are deleted - effectively, the topic is unregistered and the server knows nothing about it anymore (this seems the best option to me)

What about making the per-topic auth duration dynamically configurable? Eg. by providing an additional (possibly optional) Reservation-period header (or maybe something with a better name). If the header is provided, use that when setting the grace period and renewing the topic; otherwise, the server-configured value is used by default. Server-side, this second parameter would be stored along with the auth token inside your reservation list.

Haven't fully understood the last comments about tokens.
But please consider: adding API Tokens that I have to setup first for a topic will void the key selling point of ntfy for me and basically I could stick to use gotify.

@aslmx it would be an optional feature. If you want, you can create a topic that requires a custom api key to publish/subscribe. If you don't want, you can keep using ntfy the same way you can do now, without any api key.

Maybe there could also be a auth-mode: publish: everybody can subscribe (if you know the topic), but you need the server-auth token to publish?
And I guess it would be nice if server-auth could be a list, so you can hand out different tokens to different publishers.

@aslmx Yeah don't worry, I'll leave the "no auth" a default. Every auth option I'll add will be opt-in, just like @shadow00 said
@rigrig If you read this comment from @shadow00, he had very similar ideas. I desperately want to keep things as simple as possible, and I also don't want to re-invent the wheel. I think I may need to read up on how others do auth, and how to do this properly. I don't really want to necessarily roll my own here.
That said, I think I can iterate on this. I can implement the server-wide one pretty easily and push that out, but I think I'll need a little bit of time for the others to get it right. Please keep suggestions coming!!

I understand wanting to keep it simple, I just figured it would be nice to restrict what gets published to my server without clients needing to bother with tokens. (i.e. publish would be the same as server-wide, except you don't need a token to subscribe.)

You could use NATS or just copy the very simple patterns of NATS.
i embed nats inside my golang server btw normally .
nats has topics ( called streams in nats )and in each topic a subject like “a.b.c”.
You can subscribe to the stream and only part of the subject such as “a.b.*” and so get everything “b” and below.
Auth with NATS is based on an account and a user but you don’t have to use it . You can just have all the streams open and enforce your auth how you want on top.
nats has http and web sockets network transports too.
its insanely fast and pure golang .
https://github.com/nats-io/nats-server

Thank you for your comment. Fascinating! NATS sounds great. Didn't know it existed. It looks like a classic pubsub implementation. I'll look at it further, but I think it's probably a little too much for this little project, don't you think?
I would have to replace the guts of ntfy with NATS and for what? I am a strong believer in KISS, and this seems like the opposite of KISS. I'll mull it over a little though.
Also: This ticket is about Auth, so maybe we should move this convo somewhere else. Feel free to open a NATS ticket :-D

Just an update on the general status of this ticket: After the unified push ticket (#9), I'll work on this.

work

Thank you for your comment. Fascinating! NATS sounds great. Didn't know it existed. It looks like a classic pubsub implementation. I'll look at it further, but I think it's probably a little too much for this little project, don't you think?

NATS is light !! Its fast 8 million pub subs per senc on a old mac laptop if no durability.
You can embed it like here: https://github.com/simpleiot/simpleiot/blob/master/natsserver/nats-server.go so you dont have to run it as a seperate server too.
If you want durability just add a flag to use NATS jetstream if you need it too.

I would have to replace the guts of ntfy with NATS and for what? I am a strong believer in KISS, and this seems like the opposite of KISS. I'll mull it over a little though.

I hear you totally.  Yes maybe it's a little too much.  Have a look at siot at least because its using nats and its pretty light.
It also has auth and authz if you want it, but you don't have to use it.
There also will be a slight learning curve but there are tons of example and he nats CLI is excellent !!
Here is a little golang program by the architect of NATS that sort of does what ntfy does.

Also: This ticket is about Auth, so maybe we should move this convo somewhere else. Feel free to open a NATS ticket :-D

@binwiederhier
THis might interest you. Matrix is switching over to NATS btw. Been going on for a while.
https://github.com/matrix-org/dendrite/tree/nats
See the imprts https://github.com/matrix-org/dendrite/blob/nats/go.mod
NATS has decentralised AUTH, since this issue is about Auth and Authz.

On the topic of NATS (yes! Definitely use it!) I have had great experience with an OSS layer on top of NATS: LiftBridge/NATS
https://github.com/liftbridge-io/liftbridge
Tyler and his team is fantastic and has OSS the very product he is building his company on.
LiftBridge is a great product that makes use of NATS.

hey @gc-ss
I also used LIftBridge a little. Mostly just to try it out.
When there was only NATS Streaming then LIftbridge had the advantage of multi server scaling and redundancy.
Then NATS Jetstream solved the issues and made LiftBridge less attractive to some.
I have not kept up with LiftBridge so much.
The pure GRPC basis is definitely a nice option.
Does LIftbridge has the ability for the client to automatically connect to nearest server and then fail over to nearest etc ?

hey @gc-ss
I also used LIftBridge a little. Mostly just to try it out.
When there was only NATS Streaming then LIftbridge had the advantage of multi server scaling and redundancy.
Then NATS Jetstream solved the issues and made LiftBridge less attractive to some.
I have not kept up with LiftBridge so much.
The pure GRPC basis is definitely a nice option.
Does LIftbridge has the ability for the client to automatically connect to nearest server and then fail over to nearest etc ?

I kindly ask to move NATS discussions here: #78 :-)

I kindly ask to move NATS discussions here: #78 :-)

The only thing I need would be to have basic auth support in the client.  I'm going to be running it behind a proxy like nginx anyways to enforce https-only and I can use that to set auth.
I have made the mistake of running things 'open' on the internet before and they just up ripe for abuse.  Somebody will figure out how to abuse it.  I won't do that for anything that allows people to use a service to send data.

The only thing I need would be to have basic auth support in the client

I have read a lot about auth these last few days and the more I read, the less I want to do anything fancy. I will likely try to iterate on this, starting with basic auth with a static key for everything. The Android app has to support it obviously, so you can't just put configs in nginx.

Somebody will figure out how to abuse it.

I don't disagree. People on the Internet are evil and auth is definitely better than no auth if it's a service just for you. That said, I have jumped through endless hoops to limit everything to the extreme: Subscription rate limits, requests per second, attachment size limits, cache size limits, topic limits, ... (see https://ntfy.sh/docs/config/#rate-limiting). And then there's also fail2ban to lock out the abusers (https://ntfy.sh/docs/config/#banning-bad-actors-fail2ban).
The problem is typically though as a self-hoster, you want NO LIMITS, you want to upload a 500 MB file to your phone whenever you want, and that's obviously only possible with auth.
Long story short. I get it. I'll do auth, soon :-D

This WIP PR (https://github.com/binwiederhier/ntfy/pull/114) implements this approach:
sqlite> SELECT * FROM user;
user        pass                                                          role
----------  ------------------------------------------------------------  ----------
phil        $2a$06$.4W0LI5mcxzxhpjUvpTaNeu0MhRO0T7B.CYnmAkRnlztIy7PrSODu  admin
ben         $2a$06$skJK/AecWCUmiCjr69ke.Ow/hFA616RdvJJPxnI221zyohsRlyXL.  user
marian      $2a$06$N/BcXR0g6XUlmWttMqciWugR6xQKm2lVj31HLid6Mc4cnzpeOMgnq  user

sqlite> SELECT * FROM topic;
topic          anon_read   anon_write
-------------  ----------  ----------
announcements  1           0

sqlite> SELECT * FROM topic_user;
topic       user        read        write
----------  ----------  ----------  ----------
alerts      ben         1           1
alerts      marian      1           0

In this example, phil can do everything, ben can read and write only to alerts and marian can read from alerts. Anonymous users can read from announcements.
There will be the following config params:
auth-file: /var/lib/ntfy/user.db

# Defines the fallback if no entry in the database is found
auth-default-read: false
auth-default-write: false

About the PR and if you combine the DB or keep them separate
i would combine them but allow a user to via the cmd to pick via a flag if the system runs as a single service or as a archetype of each service .
so the deployment is always a single binary but you can run in either fashion.
If you boot each service individually you can scale out .
hope I explained my self well ?
here is an example of running all the services as one binary and hence one db :
https://github.com/matrix-org/dendrite/tree/master/cmd/dendrite-monolith-server
But as you can see you can also run a cmd as individual services and hence individual databases for each service

i would combine them but allow a user to via the cmd to pick via a flag if the system runs as a single service or as a archetype of each service .

Thank you for your response. I think you must have misunderstood my comment. I was merely talking about one sqlite database vs. two, not about two services/binaries. For now I opted to a different database for user+access management.
Here's an excerpt from the user/access management as I have implemented it currently:
# Create admin user phil
$  ntfy user add --role admin phil
Password:
Confirm:
User phil added with role admin

# Create normal user ben
$ ntfy user add ben
Password:
Confirm:
User ben added with role user

# Grant read-write access for ben to topic mytopic
$ ntfy access ben mytopic rw
Granted read-write access to topic mytopic

User ben (user)
- read-write access to topic mytopic

# Grant read-only access for ben to topic readme
$ ntfy access ben readme read-only
Granted read-only access to topic readme

User ben (user)
- read-write access to topic mytopic
- read-only access to topic readme

# Grant access to anonymous users to announcements topic
$ ntfy access everyone announcements read-only
Granted read-only access to topic announcements

User * (anonymous)
- read-only access to topic announcements
- read-write access to all (other) topics (server config)

# Show entire access control list
$ ntfy access
User phil (admin)
- read-write access to all topics (admin role)
User ben (user)
- read-write access to topic mytopic
- read-only access to topic readme
User * (anonymous)
- read-only access to topic announcements
- read-write access to all (other) topics (server config)

# Not allowed because anonymous user does not have any permissions to any topics
$ curl -d hi localhost/mytopic
{"code":40301,"http":403,"error":"forbidden"}

# Allowed because phil is admin
$ curl -d hi -u phil:phil localhost/readme
{"id":"zdf7mRUXWD","time":1643038509,"event":"message","topic":"readme","message":"hi"}

$ curl -d "important announcement" -u phil:phil localhost/announcements
{"id":"5AgEgeBGTU","time":1643038727,"event":"message","topic":"announcements","message":"important announcement"}

# Allowed because ben has read-write permission to topic mytopic
$ curl -d hi -u ben:ben localhost/mytopic
{"id":"sxz1Wky3zW","time":1643038381,"event":"message","topic":"mytopic","message":"hi"}

# Not allowed because ben only has read permissions to topic readme
$ curl -d hi -u ben:ben localhost/readme
{"code":40301,"http":403,"error":"forbidden

# Allowed because ben has read permissions to topic readme
$ curl -u ben:ben "localhost/readme/json?poll=1"
{"id":"zdf7mRUXWD","time":1643038509,"event":"message","topic":"readme","message":"hi"}

# Allowed because the "everyone" user has read access to announcements
$ curl "localhost/announcements/json?poll=1"
{"id":"5AgEgeBGTU","time":1643038727,"event":"message","topic":"announcements","message":"important announcement"}

@binwiederhier, a different and dedicated sqlite database per usecase makes a lot of sense and is really appreciated.
For example, I can now apply (https://litestream.io/) to the user+access management sqlite database and have a fairly reliable user+access serdes for ntfy on less reliable commodity servers.
Still not as reliable as LiftBridge/NATS but way simpler and practically close for very low user velocity!

Still working on this. The server side is solid and working, and I've written tests for pretty much everything. I've also started wireframing the Android changes. It's gonna be a lot of work unfortunately.

Even though you've gone down this road, I still want to record what I mentioned in the chat a few weeks ago, about how I'm disillusioned with trying to self-host services that take the Do-It-Yourself Auth approach with their own user-password database, their own rules for valid usernames, their own system of roles and permissions, their own security model, and expect me to directly expose their own security implementation to the internet while running on my home server. Mainly my concern is not about security against hackers but about my ability to manage consistent logins, usernames, password updates (and preferably single-sign-on too) across several small self-hosted services.
The best way to support self-hosting (and I mean to say this to all self-hostable projects) is to provide the simple ability to connect to standard auth mechanisms.
I wish you could even now reconsider instead to make the client compatible with external (reverse-proxy based) auth standards such as http-basic (the simplest) and (the next step up) the session-cookie based "forward auth" flow which is described well in Authelia's architecture doc page. Authelia is just one such auth front-end, not a special case.
With those kinds of auth schemes, adding awareness of "users" to the server is completely optional. You can start with a system where just "successful authentication" according to the external auth front-end is enough and once past that then whoever authenticated will have full access to the server (the old existing ntfy server before you started adding auth awareness). Then if you want to add "user accounts" to the server you don't need to add authentication code but merely look at the "Remote-User" HTTP header on every request, which is added for you by the reverse proxy in combination with the auth front-end -- explained in Authelia - How can the backend be aware of the authenticated users?

I have also found this path for my own projects .
but I did not want to rely on any third party and wanted it to be decoupled.
So I can recommend this.
https://github.com/authzed
it’s decoupled from your project and you can stand it up and it works with your golang ( or any language ) project
it’s self hosted authz basically but decoupled !
there is also the same thing for auth if your interested.

Actually the "forward auth" flow is documented perhaps more generically in Traefik docs.
Example, snippets from my Authelia configuration.yml:
access_control:
  rules:
    # Unauthenticated public resources
    - domain: ['blog.example.org']
      policy: bypass
    # Authentication required for my ntfy service (any user I've configured)
    - domain: ['ntfy.example.org']
      policy: one_factor
    # Stronger auth, restricted to admins, for admin services
    - domain: ['admin.example.org']
      subject: "group:admins"
      policy: two_factor

and users_database.yml:
users:
  me: { groups: ['admins'], password: '$argon2id$v=19$m=1048576,t=1,p=8$xxxxxxxx' }
  other_user: { groups: ['users'], password: '...' }

and my Traefik-2 middleware rule, which reference from the routing rule of each service that I want protected:
http:
  middlewares:
    middlewares-authelia:
      forwardAuth:
        address: "http://authelia:9091/api/verify?rd=https://{{ authelia_login_domain }}"
        trustForwardHeader: true
        authResponseHeaders:
          - "Remote-User"
          - "Remote-Groups"

Here is the auth
https://github.com/caos/zitadel
been using it and it’s great

I appreciate all the input. I will review all of this later. I did do a whole lot of research and asked coworkers about what to do here. My conclusion was that there is no standard way of doing this, at least not for the use case o want.
That said, the implementation I made is very easy to replace or even augment. For example, the authentication can likely be delegated entirely to another system (i e. username and password), while the authorization is kept in ntfy. I am more than happy to integrate other systems, i just didn't know which since they all didn't seem to fit.
Like, for instance: oauth2 had a web based flow. If I want to support curl with user/pass, then do I return "unauthorized" with a web link in curl..?! You get the problem.
I'd really appreciate detailed help on how to integrate one of these solutions. I am happy to accommodate them, as long as they can stand next to the no-dependency-integrated one.

I gotta say Authelia and Traefik look very interesting, though this is what I found with most of these solutions:

Authelia is an open source authentication and authorization server protecting modern web applications

Neither the curl use case nor the Android app are "web applications". If there is an easy way to accommodate these two, then I'd be game. I'll look some more. @julianfoad I'm also more than happy to discuss on Discord/Matrix.
As for Zitadel, @gedw99, it says

ZITADEL only needs Kubernetes for orchestration and CockroachDB as storage.

The "only" here for me is almost ironic. :-)

Pretty sure you can run Zitadelle without k8 or even docker.
It’s just cockroach and golang !
They are saying k8 because their target audience is big enterprise .

Progress

Progress:

Alright folks this is "it".
I am soliciting feedback now that it's feature complete. I find it a little awkward and complicated. It's definitely not the "just works" kinda thing you'd expect.
Notes:
a) The "subscription settings" are a little weird, because they only contain the login stuff right now. There will be topic-specific settings (notification sound, paused notifications, min priority, ...) too later.
b) I was thinking about visual indicators for which user a topic is using, e.g. little person indicators with a number or color. What do you think?
c) I think I definitely have to indicate in the main view when the auth fails. Right now it just says "reconnecting ..." forever.
Here's a full video of the entire flow:
https://phil.nopaste.net/7xfchbUB31?a=0zi01nlZsJ

b) I was thinking about visual indicators for which user a topic is using, e.g. little person indicators with a number or color. What do you think?

I prefer things that are accessible to majority of people - so number over color (colorblindness)

Progress:

I would remove "You can also add a user when adding a topic"

b) I was thinking about visual indicators for which user a topic is using, e.g. little person indicators with a number or color. What do you think?

I prefer things that are accessible to majority of people - so number over color (colorblindness)

What does the Material Design guidelines say about that?

Here's a full video of the entire flow:
https://phil.nopaste.net/7xfchbUB31?a=0zi01nlZsJ

When anonymous has no access to any topics, does that include write access?
If so, shouldn't all topics that are UnifiedPush have write access for anonymous (so app servers can POST messages)? Maybe giving topics /up.* anonymous write by default could solve that.

I prefer things that are accessible to majority of people - so number over color (colorblindness)

I agree. I'll do that.

When anonymous has no access to any topics, does that include write access?

There's a setting auth-default-access = [deny-all|read-only|read-write] that defines the anonymous access behavior. I could obviously also make a write-only for anonymous access, I didn't think there was a use case. Now there is one :-)

If so, shouldn't all topics that are UnifiedPush have write access for anonymous (so app servers can POST messages)? Maybe giving topics /up.* anonymous write by default could solve that.

A UnifiedPush topic is just a topic, so if you make it /up*, then you effectively let people use the server as if it was fully open (with a small name restriction). Right now, pattern based ACL rules are not supported, though it has been asked for by @cmeis before, and since you're effectively the second person to ask, I may just implement that.
For UP, I'd say the best we can do if you want a "private server" is what you described:

Set auth-default-access = deny-all in server.yml
Run ntfy access everyone "up*" write-only
Run ntfy user add --role admin myuser and assign that in the Android app (not done yet).

The more I think about it, the more I think I should disallow multiple users per server (in the app), i.e. you can only have one user per server and that is used for all topics. What do you think about that? It feels quite unnatural to allow multiple users for the same servers from within one app.

The more I think about it, the more I think I should disallow multiple users per server (in the app), i.e. you can only have one user per server and that is used for all topics. What do you think about that? It feels quite unnatural to allow multiple users for the same servers from within one app.

Yeah, that would make sense. Thought about it a new times, and I don't come up with a situation where one might need different users to the same server (testing scenarios aside).

great work @binwiederhier .
I skimmed over the golang PR and it looks nice and standard stuff.

Maybe you like this...
https://github.com/mikestefanello/pagoda

ENT DB with atlas migration.
simple way of managing users.

the point with Ent os developer velocity.

Video:
https://phil.nopaste.net/YhbTac9AoL?a=YgMgHVdXRv
Alright I am much happier with this. Now the app only supports one user per host, meaning there is no more awkward dropdown and the "login required" screen is only shown once when the user does not exist.
I also removed the "Subscription settings" entirely (for now) and added the mechanism that PeterCxy suggested to avoid exposing messages for non-public Firebase topics via a "poll_request" message (not shown in the video).
I think this is what i'll stick with. Now "all I need to do" is polish it a little more and add lots of docs.

For those who want to test, here are binaries:
ntfy binary: https://phil.nopaste.net/ntfy-auth-1?a=BA0OLM8HiE
ntfy Android app: https://phil.nopaste.net/ntfy-auth-app-1.apk?a=AuUjHSlgpk
# in the server.yml
auth-file: /home/pheckel/Code/ntfy/playground/user.db
auth-default-access: deny-all

Server side auth code is released in https://github.com/binwiederhier/ntfy/releases/tag/v1.14.0

The Android app will be released soon, so I'd consider this done for now. Thanks everyone for the fantastic discussion and the input. :+1: :+1: :+1:
If you have any other desires regarding auth, please open another ticket. One that I would see would be "allow integrating X" to use as external auth backend, an I'll likely do it if it's reasonable.

well done @binwiederhier this is really coming together !!

Hey, is it possible to authenticate via my own OpenID Connect Identity Provider?


WHAM failing after passing with half the data.

If I run network.rate_matrix(steps) with 10000 RETIS steps, everything works.
But if I run it on 20000 (the original 10000 + 10000 more), I suddenly get the error:
  File "retis_analysis.py", line 109, in <module>
    print(network.rate_matrix(steps))
  File "/home/user/openpathsampling/openpathsampling/high_level/network.py", line 699, in rate_matrix
    force=force)
  File "/home/user/openpathsampling/openpathsampling/high_level/transition.py", line 378, in total_crossing_probability
    tcp = wham.wham_bam_histogram(df).to_dict()
  File "/home/user/openpathsampling/openpathsampling/numerics/wham.py", line 501, in wham_bam_histogram
    self.check_cleaned_overlaps(cleaned)
  File "/home/user/openpathsampling/openpathsampling/numerics/wham.py", line 475, in check_cleaned_overlaps
    raise e
  File "/home/user/openpathsampling/openpathsampling/numerics/wham.py", line 468, in check_cleaned_overlaps
    first_nonzero = col_data[col_data != 0.0].index[0]
  File "/home/user/miniconda3/envs/new_storage/lib/python3.6/site-packages/pandas/core/indexes/base.py", line 3930, in __getitem__
    return getitem(key)
IndexError: index 0 is out of bounds for axis 0 with size 0

Which looks like it can happen if a column of the cleaned_df is all 0.0s.
It is not due to pandas (I tried it with 0.25.0, 1.0.3 (original), and 1.0.4)
I am a bit at a loss on how to debug this further, as the creating of the cleaned histogram uses a lot off lamda functions and some logic on wether or not an interface is found.
Any pointers on how to debug this? (It takes about 20 min to load the 20000 steps to run this analysis, so it is not too bad to debug next to some other work)

@sroet : I think this can be closed? Solution is to use the new analysis, where you can directly change the default cutoff in WHAM.

@sroet : I think this can be closed? Solution is to use the new analysis, where you can directly change the default cutoff in WHAM.

I haven't tried that option (changing the default cutoff without hard-coding) yet, but I will reopen if that does not work.


Django 1.10 Deprecation Warning: field.related

env/lib/python3.5/site-packages/aldjemy/orm.py:44: RemovedInDjango110Warning: Usage of field.related has been deprecated. Use field.remote_field instead.
  parent_model = fk.related.model._meta

env/lib/python3.5/site-packages/aldjemy/orm.py:60: RemovedInDjango110Warning: Usage of field.related has been deprecated. Use field.remote_field instead.
  sec_table = tables[fk.related.field.m2m_db_table()]

0.6.0

Awesome, thanks for the quick resolution @Deepwalker!


Fatal Exception: java.lang.RuntimeException

One of my users got this error. Can you add a try..catch to avoid exception when doing non-essential tasks? For example getting the size.
Fatal Exception: java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:299)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
at java.util.concurrent.FutureTask.run(FutureTask.java:239)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
at java.lang.Thread.run(Thread.java:856)
Caused by java.lang.NullPointerException
at com.devpaul.filepickerlibrary.adapter.FileListAdapter$GetFileSizeTask.a(SourceFile:386)
at com.devpaul.filepickerlibrary.adapter.FileListAdapter$GetFileSizeTask.a(SourceFile:372)
at com.devpaul.filepickerlibrary.adapter.FileListAdapter$GetFileSizeTask.doInBackground(SourceFile:358)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask.run(FutureTask.java:234)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
at java.lang.Thread.run(Thread.java:856)

I will def fix this!

I think I fixed it in version 2.0.0, can you confirm?

Thx Paul. I will tell you something as far I know it.

Sure,
When I updated to 2.0.0 I got this error:
Error:(60, 13) Failed to resolve: com.github.DeveloperPaul123:FilePickerLibrary:2.0.0

Hello, ok there was an error in the gradle build script that was causing jitpack to fail. I believe I fixed it as I do not get any errors on jitpack anymore. Please use:
com.github.DeveloperPaul123:FilePickerLibrary:2.0.1 as the dependency now.

Did this fix the issue?

Yes Paul. It seems to be fixed. I haven't got this error again so far. Thanks

Great sounds good. Please let me know if it happens again.


Remaining charging/discharging time?

Hello!
Is it possible to display the remaining time until full or empty like in the XiaoXiang app?

This value isn't provided by the BMS. It's calculated by the Android app and could be replicated/approximated using a template sensor.


Migrate to 3.6

LGTM, will merge once build passes

@prakashpp failure is not related to migration. I was there earlier also. its because tests are not mocked for added feature. you can merge this. that could be fixed in separate commit.

@priyankarani then why not send that commit in same pull request? I will cherry pick to 3.4 for you


Thanks!

Yeah my issue is also that this is funny.  We should stop settling for spinners.  Nice work.

Thank you!

@dasdom An idea is just wandering around my mind, haha. What if you could integrate accelerometer and gyroscope to control the movement of the Bar in the small mini game that appears ? I've had written a very nice wrapper for CoreMotion here, https://github.com/MHaroonBaig/MotionKit
I'd love to send a pull request to your awesome project ;)

@MHaroonBaig I had the same idea but didn't go further in that direction because BreakOutToRefresh is already using a lot CPU and memory.
Another problem is, at the moment the user of the app can continue to play when the loading finishes by keeping the finger on the display. In case of motion control this feature would be lost.
Maybe you can fork the project and implement it. I'll link to you implementation in the Readme. The people can chose what fits best their needs.

Sure. I'll give it a try.

This is so funny.Nice work.

@Haoxiqiang Thank you!

my god！what a creative genius！

@TellH Thank you!

It's is so impressive!

@baby03201 Thank you!

I Like this Project that is inspired me

Thank you!


Add Zach's photo

Hey @zipper3030 , can you send me your photo by the end of this week?

Ah yes, sure thing, will try to get the photo to you by Friday.

Thanks, Zach!


Is this still Maintained?

Wanted to check in and see if this is still actively being developed?

Hey, thanks for your interest! I haven't done much work on this for quite a while now, I've been mostly working on other projects. I wouldn't say it's actively maintained, it mostly served as a proof of concept about a dual serverful/serverless architecture.
That said, other than the lack of support for WebSocket authentication (which I might add at some point in the future), this is perfectly usable, and I'll still fix bugs and the like.
If you want to submit some PRs to improve the project, you're more than welcome to!


Upgrade to psycopg2

[ ] Modify simple_deploy to install psycopg3.
[ ] Find out if this supported by Django, heroku, or other dependencies of this project.

Support for psycopg3 hasn't made it into Django yet. A backend driver has been built, but  it hasn't been incorporated into Django at this point.


Add OSX docker build to Azure CI

Not as useful as I had hoped - apparently the Microsoft-hosted Macs in Azure CI are all 2nd generation MacPros with IvyBridge Xeons, so AVX only.


refactor: use emulated.FieldParams as type parameter to generic Curve and Pairing

Description
For the PLONK and KZG verifiers we need to work on the scalar fields. However, in the existing parametrization we didn't have access to the field parameters and the 2-chain scalars weren't compatible.
This PR makes the generic Curve and Pairing interfaces parametric with emulated.FieldParams which defines the scalar field. Accordingly, we update all the implementations to follow the convention. As now the scalars are emulated elements, then we also defined 2-chain scalars to be emulated elements which is more conventional.
NB! This PR depends on #900 so that should be merged before.
Type of change

[x] New feature (non-breaking change which adds functionality)
[x] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[x] This change requires a documentation update

How has this been tested?
All existing tests pass as is.
How has this been benchmarked?
Not benchmarked.
Checklist:

[x] I have performed a self-review of my code
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have made corresponding changes to the documentation
[x] I have added tests that prove my fix is effective or that my feature works
[x] I did not modify files generated from templates
[x] golangci-lint does not output errors locally
[x] New and existing unit tests pass locally with my changes
[x] Any dependent changes have been merged and published in downstream modules

Also @yelhousni - this also impact KZG verifier.


space and enter do not work in gui editor

It seems that the space and enter keys are not accepted when typing texts for a GuiMLTextCtrl or a GuiButtonCtrl in the inspector of the gui editor.

Sorry no issue. Had an actionmap activated through the onwake method. Closing.


The Document about dubbo consumer  setting   not updated

[ ] I have searched the issues of this repository and believe that this is not a duplicate.
[ ] I have checked the FAQ of this repository and believe that this is not a duplicate.

Environment

Dubbo version: 2.6.3
Operating System version: xxx
Java version: xxx

Steps to reproduce this issue
When I browse this issue Dubbo-2013 ,I found 「dubbo:consume」 more attributes。But in the official documentation dubbo-consume, it is not updated
Expected Result
What do you expected from the above steps？
Actual Result
What actually happens?
If there is an exception, please attach the exception trace:
Just put your stack trace here!

Hi, @9526xu
Would u like send a pull request to fix them?

Yes，I will fix it and send it。 @carryxyh

The address has expired, please refer to the latest address：https://dubbo.apache.org/zh/docs/


Apps manifest now uses mediaTypeV3

Apps manifest are now out of preview and uses mediaTypeV3:
https://docs.github.com/en/rest/reference/apps#create-a-github-app-from-a-manifest

For future PRs, please do not use force push in this repo. See CONTRIBUTING.md for details. Thanks.

@gmlewis thanks for checking, I think this is probably fine. The GitHub docs for the supported enterprise versions don't reference this header (not that it's a great guarantee the header is unused) and I've personally never used this endpoint with the instances I maintain.


Dynamic holidays?

The documentation clearly states how to set holidays in the locale, but these are particular days of particular years.  Is there a recommended way to specify holidays dynamically by a function?   This would permit saying things for example like "Thanksgiving is the Second Thursday in November".   It's not going to work to specify the individual day for every year, past and future.

Am I correct in assuming that this code here: https://github.com/kalmecak/moment-business-days/blob/master/index.js#L8  means that this is not possible?

I'll be working on it, if you want to contribute your PR will be welcome!

@kalmecak Any updates on this?

@fishcharlie it should be implemented… check the test called "Moment Business Days" > ".isBusinessDay" > "When today is a holiday determined by a function".
If you consider it solved, can you let me know so I close this issue? Thanks!

Was this resolved?  If so, what's the solution?  I tried reading through the index.js file to see if I could see code that might account for a dynamic holiday, but I don't see it.

Hello ,any updates on this, i need to add two format holiday
momentbusiness.updateLocale('fr', {
holidays: ['01-01', '05-01', '05-08', '05-30', '07-14', '08-15',
'11-01', '11-11', '12-25', '04-22-2019' , '06-10-2019'],
holidayFormat: 'MM-DD-YYYY', 'MM-DD'
});

@sgarcia30 @nawressissa It is not exactly documented, but when you update your locale like shown on the README, you can specify a holiday property which is a function that returns a boolean, returning true makes it an holiday:
var moment = require('moment-business-days');

var july4th = '07-04-2015';
var laborDay = '09-07-2015';

moment.updateLocale('us', {
    holidays: [july4th, laborDay],
    holidayFormat: 'MM-DD-YYYY',
    holiday: function (thisMoment) {
        // Months indexed starting at 0, so December is 11.
        // Every Christmas is a holiday, no matter the year
        return thisMoment.month() === 11 && thisMoment.date() === 25;
     }
});

I am aware that this means coding all dynamic holidays, which is a bit tedious and not really declarative. The closest approximation would be more like the following:
holiday: function (m) {
    if (m.month() === 11 && m.date() === 25) return true; // christmas
    if (m.month() === 6 && m.date() === 4) return true; // july 4th
    return false
}

The code that make this work is here: https://github.com/kalmecak/moment-business-days/blob/6d2f1f502f4528912fd09caf895dc5f2a22588af/index.js#L15-L20
See also the existing test here: https://github.com/kalmecak/moment-business-days/blob/6d2f1f502f4528912fd09caf895dc5f2a22588af/tests/test.js#L43-L70
Sorry for taking some time to respond, I hope this helps!


Added ICMP Packet ID to distinguish ICMP replies in multithreading environment

When using the library to ping different hosts simultaneously the previous implementation, not setting/checking ICMP packet ID, will mix replies.

Isn't this a duplicate of #3?

Our ping package also solves this issue.


invalid iOS development version

This could be a theos issue (sucuessfulling installed theos). But I was install simject on a new laptop and got the following error when running make setup

Making all for tool respring_simulator…
make[3]: Nothing to be done for 'internal-tool-compile'.
Copying binaries...
Making all for tweak simject…
==> Preprocessing simject.xm…
==> Compiling simject.xm (i386)…
clang: error: invalid iOS deployment version '-mios-simulator-version-min=11.2', iOS 10 is the maximum deployment target for 32-bit targets [-Winvalid-ios-deployment-target]
make[4]: *** [/Users/USERNAME/simject/simject/.theos/obj/iphone_simulator/i386/simject.xm.b3a58ea8.o] Error 1
make[3]: *** [/Users/USERNAME/simject/simject/.theos/obj/iphone_simulator/i386/simject.dylib] Error 2
make[2]: *** [internal-library-all_] Error 2
make[1]: *** [simject.all.tweak.variables] Error 2
make: *** [all] Error 2

I am trying to get simject working with iOS 11.

simject tweak is meant to be compiled in 64-bit only if you target iOS 11. By default, this line should have addressed your issue (https://github.com/angelXwind/simject/blob/master/simject/Makefile#L1) by targeting iOS 5.0. So in this case, you may want to remove i386 from the ARCH flags of the global Makefile manually.

Removing i386 from the simject/MakeFile worked