Permissions not applying to new books

When applying custom permissions to a shelf, using the "copy to books" options works for any existing books in that shelf but those same permissions don't seem to get applied to new books create within that shelf from then on unless you go back and use the button again.
Is this the intended result?
I'm on the latest installation (used the Ubuntu 20.04 script) not 100% on version number but will double check.

After looking at a couple other threads (https://github.com/BookStackApp/BookStack/issues/2144#issuecomment-841674016 specifically) I see that permissions applied to shelves don't cascade automatically. So I guess I'm that case I'd like to ask is that possible to add? Or a limitation?

I'd like to comment on @tyler351.
This would be a really nice addition and also resolve a big security loophole.

The lack of cascading permissions is due to the more complex shelf to book relationship, since books can be on multiple shelves. I have not been able to think of an auto-cascade option that wouldn't end up more confusing, or have more side-affects.

@ssddanbrown
Ooohhhh gotcha. Yeah. That could get interesting haha. Makes total sense and understand the complexity now. Lol

A way to do this simply could be :
When a book is created -> cascade permissions from it's current shelf (at this moment the book have 0 or 1 shelf).
When addind the book to a shelf -> if the permissions are different then add a warning and either blook the addition of take the least permissive permission (but that can be a bit hard to define so the first option can be easier to implement).

@ssddanbrown I personnaly think that if someone use the permission at a Shelf level (instead of account level)  it shows a need of "security" around the data so having a simple message explaining that the book is currently inhériting different permission from an other shelf woud not cause confusion.
What do you think ?

Maybe a solution would be to provide a flag to enable this in the admin panel, defaulting to the current configuration.
Have a button to enable inherited permissions with a warning saying this breaks having books on multiple shelves
Would be more overhead to maintain though

The current situation is IMHO the most confusing. When I enable public access for some shelves, but restrict others to logged in user, and create a new book in a restricted shelf, I certainly do not expect this new book to be public (this is what happens now, and represent a huge risk). Books being created in a shelf with restricted permissions should inherit those permissions. If I want to include it later in another shelf, I can update the permissions later

Based on these conversations I think we need to do two things:

Implement an advisory notice on the shelf permissions page regarding the lack of cascade.
As a nice-to-have, have an option to copy permissions on book create via a shelf, which is already open under #1596.

I don't really want to go down the route of adding different, optional, behaviour which would bring its own scenarios and maintenance burdens.
If there's no major reasonable objections I'll update the title of this issue to focus on (1) above.

Sounds pretty dang reasonable to me. As nice as it would be to make that a default thing in some situations, knowing upfront that it doesn't happen and getting the option to apply the permissions when it's created seems like a great place to be.
Thanks for your work @ssddanbrown!

Notice added, To be part of the next feature release. Thanks all for your input.


graphite: fix graphite plugins

The conf refactor patch broke the plugins without breaking the
unit tests. Add more unit tests. We should also mock less when
testing the plugins (to be done later).

This change is

Reviewed 4 of 4 files at r1.
Review status: all files reviewed at latest revision, all discussions resolved.

Comments from Reviewable


[RFC] support wxwork tag group concept in Wechaty

Is your feature request related to a problem? Please describe.
I would like to get tag information in Wechaty with a wxwork account, but the structure of wxwork tag is different from wechat.
Wechat:
['tag1', 'tag2', 'tag3']

Wxwork:
[{
  groupName: 'tag group 1',
  tags: ['tag1', 'tag2'],
}, {
  groupName: 'tag group 2',
  tags: ['tag1', 'tag2'],
}]

And the problem is that in wxwork, different tags are allowed to have same name, as long as they are not in the same tag group.
Describe the solution you'd like
Seems like we need to adjust the current tag structure to support tag group concept, so we can align wxwork's tags with Wechaty.
I would design the class like below
class Tag {
  id: string,
  name: string,
  groupId?: string,

  // ... some other functions, same as the current design
}

class TagGroup {
  id: string,
  name: string,

  // ... some other functions, like add, update etc
}

Changes are:

We need to add a name field into Tag, since tags are possible to have same name, so we can not use name as the id anymore.
We need to add a new class called TagGroup with proper values and functions
For wxwork, creating a tag needs to specify which group does this tag belong, we the Tag API needs some modification

Describe alternatives you've considered
Maybe we can just store the groupName as a property inside Tag, but in this way, if some tag group changes the name, we don't know whether this is a new tagGroup or an old one, we can not check by the name. If the Tag is using name as a relation to the TagGroup, the connection will be lost, and it will be hard to recover the relation.
Additional context
Add any other context or screenshots about the feature request here.
[enhancement]
Data structure of underlying layer wxwork tag
export enum LabelDataType {
  LABEL = 1,
  LABEL_GROUP = 2,
}

export enum LabelType {
  CORP_LABEL = 1,
  PERSONAL_LABEL = 2,
}

export interface LabelModel {
  id: number,
  name: string,
  data_type: LabelDataType,
  label_groupid: number,
  create_time: number,
  label_type: LabelType,
  sort_order: number,
}

@huan Any thoughts on this issue?

Let us think about it more this week and I hope we can have a discussion on its design next week

When shall we start a discussion on this issue?

When shall we start a discussion on this issue?

Let's resume this discussion this week.
I always think the tag design from the WeCom is not right, however it seems we have to find a way to compatible with them because they are so HUGE!

Let's resume this discussion this week.
I always think the tag design from the WeCom is not right, however it seems we have to find a way to compatible with them because they are so HUGE!


Improve code

Several small parts of the code are removed, this in order to make code reuse, also organizing a little what is the Manager of the storyboards.

Thanks for the Pull request!


About Page Timeline Styling

Looks good so far, let me know when it's ready (ie change from draft to final). I think we recommended that the timeline autoscrolls slowly like a ticker and, for ease of navigation, can be manually scrolled by the mouse wheel (add Event Listener wheel). Lmk if you need any clarification.

Changes should be done at start of next week in addition to another task

Changes should be done at start of next week in addition to another task

Sure thing


Issue #11: allow verification by annotated method

This is the minimum change necessary to allow verification of Message pacts.

Cool. Seems like a good first step until we can figure out if we can do it without annotations. Happy to merge this if you need it soon, but would be good to get some test classes for verifying message pacts.

Good call, I will add some test cases.

@jbwheatley I have added some tests using a local file -- not sure how the test broker integration works

Thanks @solarmosaic-kflorence @kflorence , awesome stuff. Tests really help demonstrate how it all fits together 👍
As for testing the integration with the broker, There is a bash script in /scripts that I used to publish the RequestResponse pacts to the Pact Foundation's test broker. If you wanted to add something like that for message pacts too, that would be fab.
I'm going to merge this PR. I think there are definitely some ergonomics that could be improved, as a next step. Hopefully I can find time to look into that soonish

Thanks @jbwheatley -- if I have time I will try to add some tests for that as well. Can we do a release for these changes? I'd like to start pulling them into our builds

@solarmosaic-kflorence Yep, I'll deploy those changes now. Just be wary that the API will probably be subject to breaking changes in subsequent versions while we work on the ergonomics 😁


Fail to build the framework

Hi I follow the steps but I cannot get the framework for iOS but OS X version works fine. (There is nothing inside the framework after building)

Could you provide us with your solution maybe? I just cloned NMSSH and I can't get it to build as well, as in there's no file n he output folder. Others seem to have the same problem as well:
http://stackoverflow.com/questions/27151611/building-nmssh-for-ios
Thanks in advance!

@coernel You should open an other issue. Btw the framework builds correctly on my Mac (Yosemite and Xcode 6.1)


Feat/staking data pool detailed capacity

Context
add new endpoints:

/capacity/pools/:poolId - Returns the current capacity for all products in a specific pool
/capacity/pools/:poolId/products/:productId - Returns the current capacity for a specific product in a specific pool

Changes proposed in this pull request

modified capacityEngine to take in filtering 3 params (poolId, productId, period). the behaviour is below:

no poolId / productId - returns capacity for ALL products across ALL pools
only productId - returns capacity for the specified product across ALL pools
only poolId - returns capacity for ALL products in the specified pool
poolId and productId - return capacity for the specified product in the specified pool

clean up openapi docs by reusing CapacityResult component schema

Test plan

added unit tests

Checklist

[x] Rebased the base branch
[x] Attached corresponding Github issue
[x] Prefixed the name with the type of change (i.e. feat, chore, test)
[x] Performed a self-review of my own code
[x] Followed the style guidelines of this project
[x] Made corresponding changes to the documentation
[x] Didn't generate new warnings
[x] Didn't generate failures on existing tests
[x] Added tests that prove my fix is effective or that my feature works

Review
When reviewing a PR, please indicate intention in comments using the following emojis:

:cake: = Nice to have but not essential.
:bulb: = Suggestion or a comment based on personal opinion
:hammer: = I believe this should be changed.
:thinking: = I don’t understand something, do you mind giving me more context?
:rocket: = Feedback

closing in favour of https://github.com/NexusMutual/cover-router/pull/130


proposal: cmd/go: add go workspace exclude directories

Step 1: https://github.com/golang/proposal#the-proposal-process
The proposal author creates a brief issue describing the proposal.
Note: There is no need for a design document at this point.
Note: A non-proposal issue can be turned into a proposal by simply adding the proposal label.
Note: Language changes should follow a separate template

First, I want to shout out @matloob for being a baller and solving https://github.com/golang/go/issues/56697. He singlehandedly saved Google engineers millions of hours in error debugging time cause of this change. THANKS MATLOOB!
Context
https://go.dev/ref/mod#workspaces
Go workspace is used to ensure a module in the workspace uses the import of the other module in the workspace.
Usecase
In Disgo, I want to be able to exclude ./wrapper and _gen from Go Workspace defined:
go 1.18

use (
	./
	./_examples
	./cache
	./shard
)

Can't do it or am missing something cause of the ./ which is necessary for the main package.
Exclude Directories
Most build tools allow the exclusion of directories. Even GNU Make that was made in 1977. I'm not sure what else to say to start this proposal. If there is a reason to not allow the exclusion of files, it's not clear. Perhaps, I am doing something incorrect. I'm just lost...

_gen is already its own module, without being listed in go.work, it is not part of the workspace.
wrapper is a package of the root module, it doesn't make sense to break up a module through a workspace.
In general, the exclusions are the same as for modules: carve out a nested module if necessary.
As there are no implicit includes in workspaces, it doesn't make sense to need an exclude directive.

@seankhliao Why do I have to specify GOWORK=off in https://github.com/golang/go/issues/56697#issuecomment-1311140649 for that folder?


Onboard all SDK projects to PublicApi Analyzer

All of our shipping projects need to be onboard to the PublicApiAnalyzer.
This ensures that we don't check in any breaking changes that would affect customers.
I propose that we do one project at a time, at least every other week.
To quickly onboard a project;

Add the PublicApiAnalyzer package to the project

Current version is 2.9.8: https://www.nuget.org/packages/Microsoft.CodeAnalysis.PublicApiAnalyzers/2.9.8

First remove all but one TargetFramework. (Note that tests temporarily will not compile.)

When onboarding, this analyzer doesn't cooperate with multi-target projects.

Then compile just this project and note the failures and warnings.

Follow the guide here to bulk apply recommended fixes: https://github.com/dotnet/roslyn-analyzers/issues/3322

After this framework successfully compiles, it's safe to switch to the next framework.
A project is successfully onboarded after all frameworks compile successfully.

Projects

Application Insights Done
TelemetryChannel Done
DependencyCollector
EventCounterCollector
HostingStartup
PerfCounterCollector
Web
WindowsServer
AspNetCore Done
WorkerService
DiagnosticSourceListener
EtwCollector
EventSourceListener
ILogger
Log4NetAppender
NLogTarget
TraceListener

Estimate
It takes 2-4 hours to onboard a single project.
Example Project

AspNetCore

package: https://github.com/microsoft/ApplicationInsights-dotnet/blob/66b38d506b3bfde0ca65a39e8159cd2cb1b3f922/NETCORE/src/Microsoft.ApplicationInsights.AspNetCore/Microsoft.ApplicationInsights.AspNetCore.csproj#L49
public API files: https://github.com/microsoft/ApplicationInsights-dotnet/blob/66b38d506b3bfde0ca65a39e8159cd2cb1b3f922/NETCORE/src/Microsoft.ApplicationInsights.AspNetCore/Microsoft.ApplicationInsights.AspNetCore.csproj#L96-L99

directory

https://github.com/microsoft/ApplicationInsights-dotnet/tree/develop/.publicApi

Example PR
See this PR for a complete example of onboarding: https://github.com/microsoft/ApplicationInsights-dotnet/pull/1713

@rajkumar-rangaraj @eddynaka This task can be worked at any time.
This is medium important, but low urgency.
Please only work on one project at a time and leave a comment here on which project you intend to start so we can avoid conflicts. :)


disable download of zos-s390x packages

disable download of zos-s390x packages not present upstream; those that are required (clang, ninja, gn) are already available on z/OS; others such as reclient and luci-go, are currently not required on z/OS
force download of the z/OS-supported depot_tools commit so gclient sync works on the current (fce38915 from Nov 22 2023) v8port patches, until those patches are updated with a more recent V8 head commit.
bypass check of clang_revision since llvm-clang for zos-s390x is not in the upstream Google storage, and so is not downloaded

Run the following to update v8/DEPS (after fetch v8 or git pull), before running gclient sync from under the v8 directory:
$ sed -i -f<path-to>/v8port/patches/DEPS.sed DEPS

See https://issues.chromium.org/issues/323790693#comment12 - the last item "update the fetched v8/DEPS".
Example of the and host_os != "zos" changes to DEPS made by the above sed:
  'buildtools/linux64': {
    'packages': [
      {
        'package': 'gn/gn/linux-${{arch}}',
        'version': Var('gn_version'),
      }
    ],
    'dep_type': 'cipd',
    'condition': 'host_os == "linux" and host_cpu != "s390" and host_os != "zos" and host_cpu != "ppc"',
  },
...
  {
    # Note: On Win, this should run after win_toolchain, as it may use it.
    'name': 'clang',
    'pattern': '.',
    # clang not supported on aix
    'condition': 'host_os != "aix" and host_os != "zos"',
    'action': ['python3', 'tools/clang/scripts/update.py'],
  },
...
   'third_party/depot_tools':
-    Var('chromium_url') + '/chromium/tools/depot_tools.git' + '@' + '38b8de056ebb9d0aa138f09907fa83c5b6107bb5',
+    Var('chromium_url') + '/chromium/tools/depot_tools.git' + '@' + '9d64acedead8bf69b1eee2645a18f8fd47a1100d',
...

/run tests

Many of the z/OS CI instances are down, looking into it.


Fix Consul initial join

Use metadata instead of script parameter
Use metadata to inject server and client / agent token
Adjust bash scripts to support metadata and remove depricated lines from heat template

Resolved conflicts with #58


load import @polymer/iron-demo-helpers/demo-snippet.js in storybook

this is the element we're wiring in automatically w/ our build chain for demo purposes. It would be great if we could take this element and resolve it correctly at the storybook level so that it can present all the elements. This may involve extending the storybook-polymer plugin some how.
import<EMAIL_ADDRESS>

https://storybook.js.org/configurations/add-custom-head-tags/

https://unpkg.com/<EMAIL_ADDRESS>i wonder if unbundled this would work bc of the scoping that webpack would use. worth a try at least

finally,


Type 'core::zeroable::NonZero' is not defined

What happened
Took abi from argent wallet to intitialize Contract instance and received exception.
Stack trace
starknet_py.cairo.v2.type_parser.UnknownCairoTypeError: Type 'core::zeroable::NonZero' is not defined. Please report this issue at https://github.com/software-mansion/starknet.py/issues
Steps to reproduce
abi = from  here https://sepolia.starkscan.co/contract/0x051d992db2a0b33c0a39cc821823f672b9c981cdba429be91380de9b84a85d4d#class-code-history

Contract(0, account_abi, self._client, cairo_version=1)

SDK Version
0.22.0
Python version
3.9.19
What operating system are you using?
Mac
Is there an existing issue for this?

[X] I have searched the existing issues and verified no issue exits for this problem.

await Contract.from_address(0x051d992db2a0b33c0a39cc821823f672b9c981cdba429be91380de9b84a85d4d) also not working

Hello @NikitaMishin
This will be review by the support team. Visit the live support page to initiate a chat with an agent for further assistance via live agent.
Regards

Hi @NikitaMishin , thanks for reporting this. Will take a look at it 🙏

@NikitaMishin PR with fix is on the way 🫡
https://github.com/software-mansion/starknet.py/pull/1527


Detect existing package.json

It would be great if our generators could detect an already existing package.json file and grab default values from it, and then merge the scaffold changes into the existing file.
We don't want to replace a package.json if it already exists -- users may lose things they want in there.

I'd be happy to take a crack at this.

:+1:


Adding --verbose changes the paths of the installed projects

I'm assuming this is a re-name script feature, that ideally should strip --verbose from an array of args

Yeah we should totally fix this 👍

I created a pull request for this: https://github.com/JohnSundell/Marathon/pull/131


Update scene-management.md

spelling & grammer

This pull request is included in version 11.11.0
The release is available to download on GitHub release or in the MLAPI Installer.


NC | NSFS | Creating an Account with an Existing Access Key Doesn’t Return Accountaccesskeyalreadyexists Error

Environment info

NooBaa Version: master
Platform: NSFS NC

Actual behavior

Creating an account with an existing access key returns InternalError:

{
  "error": {
    "code": "InternalError",
    "message": "The server encountered an internal error. Please retry the request",
    "detail": "Error: Too many levels of symbolic links"
  }
}

Expected behavior

Creating an account with an existing access key should return Accountaccesskeyalreadyexists.

Steps to reproduce

Create an account using access_key and secret_key flags: sudo node src/cmd/manage_nsfs account add --name <account-name> --new_buckets_path <path> --access_key <access_key> --secret_key <secret_key> --uid <uid> --gid <gid>.
Create another account and use the same values for access_key and secret_key flags: sudo node src/cmd/manage_nsfs account add --name <account-name> --new_buckets_path <path> --access_key <same_access_key> --secret_key <same_secret_key> --uid <uid> --gid <gid>.

More information - Screenshots / Logs / Other output
According to the code we would expect this:
https://github.com/noobaa/noobaa-core/blob/8363cf721afdc2968a324b85751bf9f4717c11ce/src/cmd/manage_nsfs.js#L465-L471
I think the root cause is here:
https://github.com/noobaa/noobaa-core/blob/8363cf721afdc2968a324b85751bf9f4717c11ce/src/util/native_fs_utils.js#L477-L491
We can add if (err.code === 'ELOOP') return true; in the catch clause.

@shirady Have you tried it on linux?
As far as I know it happens only on mac

@romayalon I tested it on my Mac, but I haven't tried it on Linux yet.
Would we solve it for Mac? (it seems link a minor change) so we can enjoy all passing tests in sudo node ./node_modules/.bin/_mocha src/test/unit_tests/test_nc_nsfs_cli.js in local run.

@shirady Yes, just wanted to mention the Mac vs Linux because if it happens on Linux it's a blocker, else it's a lower priority bug.
I saw it also when running it,  and I thought that we will handle it on the id/email replacement, but if it's a small fix, so it'll be great to fix it before that!


hello, i do not have phone!

What is your username and discriminator?
jdp_#0213
Why did you join Discord Linux?
to discuss and receive/give help regarding linux and distros
Where did you hear about Discord Linux?
invite via the Programming discord
What is the passphrase that was assigned to you by the bot?
ttz1t17vd1to4

From simonizor#0420 :
The passphrase you have entered is not correct.  Please check the message that mentions you in the welcome channel to find your passphrase.

Closing as it's been more than 24 hours.


Skill Calc - ComboBox skill list

UI components provided by @TheStonedTurtle.

This UI element was originally included in @TheStonedTurtle's skill calc revamp PR, I have wanted this UI improvement in the client for a while now so I asked him to PR it seperately and he asked if I could do it myself.
However there was an annoying dotted "focus paint" effect with it that I resolved by disallowing focusing on the combobox.
Also, more importantly, a bug in the original skill calc code was causing some of the skill's calcs to over estimate their panel size, as shown above before and after this correction:

This was quickly fixed by limiting the individual list items' heights to 45px.

You may want to reorder the CalculatorType enum file so the drop down is in alphabetical order
	AGILITY(Skill.AGILITY, "skill_agility.json"),
	CONSTRUCTION(Skill.CONSTRUCTION, "skill_construction.json"),
	COOKING(Skill.COOKING, "skill_cooking.json"),
	CRAFTING(Skill.CRAFTING, "skill_crafting.json"),
	FARMING(Skill.FARMING, "skill_farming.json"),
	FIREMAKING(Skill.FIREMAKING, "skill_firemaking.json"),
	FLETCHING(Skill.FLETCHING, "skill_fletching.json"),
	FISHING(Skill.FISHING, "skill_fishing.json"),
	HERBLORE(Skill.HERBLORE, "skill_herblore.json"),
	HUNTER(Skill.HUNTER, "skill_hunter.json"),
	MAGIC(Skill.MAGIC, "skill_magic.json"),
	MINING(Skill.MINING, "skill_mining.json"),
	PRAYER(Skill.PRAYER, "skill_prayer.json"),
	RUNECRAFT(Skill.RUNECRAFT, "skill_runecraft.json"),
	SMITHING(Skill.SMITHING, "skill_smithing.json"),
	THIEVING(Skill.THIEVING, "skill_thieving.json"),
	WOODCUTTING(Skill.WOODCUTTING, "skill_woodcutting.json");

Makes sense

Why is this better than "tabs" we currently have now?

Occupies like a fourth of the UI room

But it looks worse

It guess it's goodbye


add default presets

Will think about it. I think we need some sort of a FTUE welcome screen, that would allow setting up sample presets...


[Compile error]：the trait prost::Message is not implemented for tendermint_proto::abci::Request

Hello，
When I compile the project with main branch, I get 5 errors:
src/server.rs:203:39
    |
203 |                 FramedRead::new(read, Decode::<pb::Request>::default()),
    |                 ---------------       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `prost::Message` is not implemented for `tendermint_proto::abci::Request`
    |                 |
    |                 required by a bound introduced by this call
    |
    = help: the following other types implement trait `prost::Message`:
              ()
              Box<M>
              Vec<u8>
              bool
              bytes::Bytes
              f32
              f64
              i32
            and 4 others
note: required for `Decode<tendermint_proto::abci::Request>` to implement `Decoder`

src/server.rs:212:38
    |
212 |                   req = request_stream.next() => {
    |                                        ^^^^ method cannot be called on `FramedRead<tokio::net::tcp::ReadHalf<'_>, Decode<tendermint_proto::abci::Request>>` due to unsatisfied trait bounds
    |
   ::: /home/lshoo/.cargo/registry/src/rsproxy.cn-8f6827c7555bfaf8/tokio-util-0.6.10/src/codec/framed_read.rs:14:1
    |
14  | / pin_project! {
15  | |     /// A [`Stream`] of messages decoded from an [`AsyncRead`].
16  | |     ///
17  | |     /// [`Stream`]: futures_core::Stream
...   |
22  | |     }
23  | | }
    | | -
    | | |
    | |_doesn't satisfy `_: Stream`
    |   doesn't satisfy `_: futures::StreamExt`
    |
    = note: the following trait bounds were not satisfied:
            `FramedRead<tokio::net::tcp::ReadHalf<'_>, Decode<tendermint_proto::abci::Request>>: Stream`
            which is required by `FramedRead<tokio::net::tcp::ReadHalf<'_>, Decode<tendermint_proto::abci::Request>>: futures::StreamExt`

....
I use the ubuntu22.04 and rust 1.65.0

@lshoo thanks for the report, this is because main relies on a yanked  tendermint-rs version, I will fix up main next week. In the meantime, you can compile the branch penumbra-034 which uses a fork of tendermint-rs.

Thanks


NOTICE: Syncplay has discontinued support for AppImage and Snap

We have made the difficult decisions to drop support for AppImage and Snap on the basis that maintaining support for these packaging options proved unworkable. As such, we ask that Linux users use Deb packages or install Syncplay directly in line with the instructions at https://syncplay.pl/guide/install/
Context:
Syncplay is complex software that both relies on various packages (including PySide) and interfaces with media players. This makes it inherently difficult to make a package that will work on all systems, especially as we have no AppImage/Snap specialists as part of the core dev team. We managed to get a set-up that worked for most people, but it didn't work for everyone (somewhat defeating the point of Snaps and AppImages) and when we tried to update our dependencies the packages stopped working on all systems.
Given that Syncplay is a small project, we came to the conclusion that we just don't have the resources to maintain AppImage and Snap support.
If you don't care about new features you can still try the AppImage for Syncplay 1.6.9 which is available from https://github.com/Syncplay/syncplay/releases/download/v1.6.9/Syncplay-1.6.9-x86_64.AppImage but be aware that we do not officially support this AppImage.

I wonder whether it would be possible to support pipx for installation or if that is perhaps already unofficially supported and would just be a matter of documenting it?

@Mikaela I'm a Windows user so have never used pipx, and I've not heard any reports from anyone trying to get it to work with Syncplay.
From the pipx documentation it looks like if you wanted to make it work with Syncplay you might need to use the inject command to add VLC and/or mpv media players to the Syncplay environment. You might also need to inject ytdl if you are using mpv for streaming functionality.
If anyone does mange to get it work to get it to work then it would be helpful if they provided us with instructions for others who want to go down this path.

Hello @Et0h,  thanks for all hard work,  and also for all the contributors.
For those looking for an AppImage version...
I create one, however with no guarantee that it will work on all distributions.
https://github.com/ryuuzaki42/Syncplay_AppImage
All code used to create the AppImage can be viewed in the build.yml file.
https://github.com/ryuuzaki42/Syncplay_AppImage/blob/main/.github/workflows/build.yml

@ryuuzaki42 Thanks for the work on trying to make something out of the AppImage. I tried and it sadly didn't start on my Debian Unstable system with the key part of error message being:
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vkkhrdisplay, vnc, wayland-egl, wayland, xcb.

I have grown quite sick of that message (and ones like it) when I was trying to make the AppImage work :)
As a side note - I noticed your build settings to use ubuntu-latest. Per best practices for AppImages and to ensure wider compatibility they recommend using oldest supported base system (ubuntu-20.04 in case of current Github Actions). Not that it actually helped me when I tried all of the available versions...

Hello @daniel-123, thanks for the feedback.
I have tested the AppImage in some "Debian like", Ubuntu e Kubuntu last version, and its work.
In the Ubuntu, my Calibre 7.1.0 AppImage give this same error, xcb plugin not found when I try run it as root, as normal user its runs OK.
Witch version of Debian are you using? With the version I may can see the error and may see what is wrong.
Try install libxcb-*, may resolve the problem
apt install libxcb-xinerama0
or
apt install libxkbcommon-x11-0
https://stackoverflow.com/questions/68036484/qt6-qt-qpa-plugin-could-not-load-the-qt-platform-plugin-xcb-in-even-thou
https://discuss.pixls.us/t/solved-could-not-load-the-qt-platform-plugin-xcb-in-even-though-it-was-found/17677
Thanks about the note of Ubuntu version in Github Actions, I will take look.
Keep me posted.

@ryuuzaki42 The specific version is Debian 13 Trixe (current testing branch).
I already have all of the libxcb libraries present on my system - I installed them a few times when I was playing with trying to make the appimage work myself.
I'm always running the appimage as standard user. I've now tried it as root as well, but the final message is identical.

Hello @daniel-123
I tested the AppImage in VM with Debian Testing Live and seems to work fine.
https://cdimage.debian.org/cdimage/weekly-live-builds/amd64/iso-hybrid/
[ISO]	debian-live-testing-amd64-kde.iso	2023-12-04 03:17 	3.0G

I only installed VLC to a "full" test.
Try extract the AppImage and run.
Or try install Syncplay in our machine and check if have others libs besides the one in the .yml file.


JDK`17 pipeline publish jobs failing

What are you trying to do? Run successful openjdk17-pipeline jobs overnight
Expected behaviour: Green blob against each job
Observed behaviour: Red blob against each job starting from September 24th run dur to "publish" step failing
Any other comments: Possibly related to https://github.com/adoptium/temurin-build/pull/2692

So I rebuilt a failing release job and it passed (https://ci.adoptopenjdk.net/job/build-scripts/job/release/job/refactor_openjdk_release_tool/4224/console).
Not sure what the issue is here (the errors suggest duplicate files but I don't see any).
I'll monitor this one for a few days and see if it happens again

Since we've agreed to monitor it, I don't believe it's appropriate to close this until we've verified that it works through a full pipeline instead of just a re-run. Perhaps we should initiate an monitor a full JDK17 run during the day to do a full check?

The last few builds have succedded. Closing


Add support for recording mode

This is similar to stanford-oval/almond-server#120 plus stanford-oval/almond-server#123

Yeah this all looks sensible. I assume you tested it?
Eventually, we'll want automated tests too, with selenium.

I manually tested it. Yeah, eventually I should add automated tests

Pull Request Test Coverage Report for Build 3059

35 of 95 (36.84%)  changed or added relevant lines in 4 files are covered.
1 unchanged line in 1 file lost coverage.
Overall coverage decreased (-0.3%) to 66.017%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

almond/engine.js
7
13
53.85%

routes/my_recording.js
26
80
32.5%

Files with Coverage Reduction
New Missed Lines
%

routes/my_conversation.js
1
65.45%

Totals

Change from base Build 3054:
-0.3%

Covered Lines:
6879

Relevant Lines:
9768

💛  - Coveralls


不能配置https,配置后老是跳到http

请问haproxy怎么配置https
环境上是只允许443访问。

There is a sample for nginx, you may follow the idea to see how it could be done for haproxy.


[A10 exploit bug - probably no offsets] iPhone 7 is not compatible with Taurine

Tested version: latest from jailbreaks.app
Tested iOS version: iOS 14.8
Behavior: Crashing while clicking jailbreak button no matter what choice I made about kfd exploit method
Can we get some support for this iOS version and our device? - the app is not yet finished as you can see about incompatibility with devices due to the fact how kfd exploit works
It’s more optimized and worked for newer devices rather than older ones so we need also an support just like newer devices is getting it by jailbreak community

Maybe download from github, reputable source...

Working fine on my iPhone 7 on 14.8. Both exploits. Previously installed Oddesseyra1n. Only sudo seems to be broken (with unique password)

So... for you both exploit works? And no bugs except sudo? You're so lucky bro..

No, not lucky. I just downloaded latest version from here and not from third party. Jb.app is sus.

No, not lucky. I just downloaded latest version from here and not from third party. Jb.app is sus.

Did you know can CoreTrust bug be applied to xpc launchd.plist to generate the same type of signature for .plist file (launchd.plist.sig) to accept modified configurations and not to bootloop
If we can do that only using jailbroken device, we can basically run jailbreak on boot and never gets unjailbroken again 👍
(Just write full paths to the /taurine plist services - write their configuration in launchd.plist too and of course sign all binaries with coretrust bug and amfid too - the one of taurine plist services is executing)
Signing that modified version of launchd.plist in correct way can lead to converted semi-untethered to untethered jailbreak for arm64 devices on all iOS 14.x devices
Or we just need to replace one of binaries that launchd.plist is running as root on boot and instead of running that binary, we can run exploit and that binary we replaced after exploit finish it's job.
Anyway the second option requires an power user or developer to have and use MacOS somehow (no matter is it via VM or Hackintosh or real MacBook) but MacOS needs to be used for this task if we don't want to brick our devices.


bulk insert using thread

I am inserting multiple records using Batch Interactions
code is --
public void saveExpenses(List<Expense> expenses) {
       final DatabaseWrapper database= FlowManager.getDatabase(MyDatabase.NAME).getWritableDatabase();
        new Thread(new Runnable() {
            @Override
            public void run() {
                database.beginTransaction();
                try {
                    for (BaseModel b : myRecordsList) {
                                   b.save();
                    }
                    database.setTransactionSuccessful();
                }
          catch (Exception e){
                    e.printStackTrace();
                    mListener.onOperationFailed();
                }finally {
                    database.endTransaction();
                }
            }
        }).start();

           mListener.onSaveOperationComplete();
    }

I am implementing callback So that only after saving all records I wan to do some task ,
But the problem is my callback ( "mListener.onSaveOperationComplete();" ) gets called before saving starts and after this saving in executed.
Not able to find solution .
please help.

This is not a DBFlow question. More of an implementation question and your mListener.onSaveOperationComplete(); is happening outside the thread. so of course its possible that this happens out of order. you need to put it inside the runnable.


Processing issues in r20200826 release

I found following processing issues in r20200826 release.
GM to correct:
sub-juntendoAchieva_T2star_rms.nii.gz

sub-perform_T2star_rms.nii.gz

sub-glen_T2star_rms.nii.gz

sub-tokyoSkyra_T2star_rms.nii.gz

sub-unf_T2star_rms.nii.gz

Fixed


feat: deployment actuall works

:tada: This PR is included in version 1.0.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


SvelteFlow: Attach an edge to an edge

Please describe the feature that you want to propose
This is a long shot but I just wanted to know whether there is built-in functionality to attach a node to an edge, or if not  if there is an easy way to simulate this functionality.
As you know the user can drag an edge by clicking on a node's Handle and if the user moves up the left click while hovering over another node's Handle that edge is considered to be formed between one node and another where the new object has the individual node's id's in its source and target attributes.
What I need is that after a user starts dragging an edge around with his mouse down, this edge being dragged should be formed if he moves the left click up near an edge. In this case the node that this is dragged from is the source and the edge on which the dragged edge is dropped is the target. And what is also important is that this newly created edge between another edge and a node gets correctly rendered as the nodes and edges are moved around? Is this possible?
I thought of a way of listening for left click up and if the user was indeed dragging an edge when the left click was up that an invisible node is created to create this new edge, but of course if the user starts dragging around the components this would be rather hard to maintain.
Looking forward to any help in the right direction!

I am not sure if I get your question right. Do you want to create a new node when you drop an edge?

This is something we do not support right now, but you can solve this by creating an invisible node with overlapping handles at the desired point along the edge, you'd like to connect to.

This is something we do not support right now, but you can solve this by creating an invisible node with overlapping handles at the desired point along the edge, you'd like to connect to. You have access to onEdgeMouseEnter events which would tell you when the user is hovering over an edge when creating a connection.

Thanks for the suggestion. I think this would indeed work, but consider this three state scenario:

1- Initial state
2- User drops the edge being dropped from n3 to the n1-n2´ edge, invisible node n4gets created, everything looks nice 3- User decides to moven2to the right, then1-n2edge naturally moves.i4` is left in the wrong place.
Wouldn't this scenario occur, or am I missing something? If so, is there a possible fix? Thanks!

You can just update the position of the node when the edge is changed due to the source/target nodes being moved.
There's an old example for this here.

Thank you, it seems that this should work!

This is something we do not support right now, but you can solve this by creating an invisible node with overlapping handles at the desired point along the edge, you'd like to connect to. You have access to onEdgeMouseEnter events which would tell you when the user is hovering over an edge when creating a connection.

I am not sure if I am missing it, but is it possible that onEdgeMouseEnter exists for ReactFlow but not for SvelteFlow? I could not find it in the IntelliSense or in the API Reference. I see another issue referencing it, but again for ReactFlow.

<SvelteFlow on:edgemouseenter={..} /> should work.

can we close this issue @kerem0comert =

So this issue is connected to the other issue I opened here, where I am trying to drag a node from an external Palette and if it is dropped on an edge, the edge to node connection that I talk in this issue needs to be formed.
As such, the problem I have at the moment is while on:edgemousenter indeed works when no mouse button is down, it does not fire when the mouse actually does the exact same movement while still a dragover from the Palette into the Flow is taking place. In other words, I cannot get this event to fire whenever the user is dragging a node from the Palette and crosses an edge before dropping it.
My approximate solution would be that in the on:drop event of a node, I can iterate over the edges and based on the positions of the source and target nodes of a given edge, approximate the distance between where the new node is dropped and any given edge, to try to find out whether an edge is close enough to be considered that this node is indeed dropped on an edge, and then finally form the node to edge connection that I talk about in this issue.
Do you think there is an easier way, or nothing in this direction is supported at the moment?

@kerem0comert I would highly suggest you use a custom edge in this case. In hindsight, the whole idea that there are built-in nodes and edges that can be controlled by global event listeners like on:edgemouseenter was a mistake for reasons like this.
If you just create a custom edge by copy and pasting the code of the bezier edge for instance, you are in full control about what events you attach to your edge. Then you can simply add an on:dragenter handler on your edge.

Alright, thanks for the suggestion @peterkogo . I will be trying that out and updating my progress on this issue but not within this week potentially, so up to you if you want to keep this issue open or close it. In the latter case I can just reopen it I guess.

I achieved roughly the desired result. Since my edges are straight, I did not use the Bezier curve methodology but rather a more straight-forward position calculation. Maybe because of this the ÈdgeNode is not exactly on the edge that it is "tied to", but I believe I can make this better with further adjustments later on.
For reference, I achieved it in the following way:
In my Flow.svelte I have the following callbacks on my SvelteFlow component:

  <Palette />
  <SvelteFlow
    initialViewport={INITIAL_VIEWPORT}
    nodes={nodesWritable}
    edges={edgesWritable}
    nodeTypes={STATE_TYPE_TO_SVELTE_NODE_COMPONENT}
    edgeTypes={EDGE_TYPE_TO_SVELTE_EDGE_COMPONENT}
    on:nodecontextmenu={handleContextMenu}
    on:paneclick={handlePaneClick}
    on:dragstart={(e) => console.log('Drag start', e)}
    on:dragover={onDragOver}
    on:drop={onDrop}
    on:nodeclick={handleNodeClick}
    on:nodedragstop={handleNodeDragStop}
    on:nodedrag={handleNodeDrag}
    on:edgemouseenter={handleEdgeMouseEnter}
    on:edgeclick={handleEdgeClick}
    onconnectend={handleEdgeConnectEnd}
    onconnectstart={handleEdgeConnectStart}
    autoPanOnNodeDrag
  >

      <Controls orientation="horizontal">
        <ControlButton on:click={() => console.log('⚡')}>⚡</ControlButton>
      </Controls>

    <Background variant={BackgroundVariant.Lines} />
    <MiniMap />
  </SvelteFlow>
  {#if contextMenuProps}
    <NodeContextMenu
      onClick={handlePaneClick}
      on:nodeDeleted={(e) => handleNodeDeleted(e.detail.id)}
      on:nodeDuplicated={handleNodeDuplicated}
      id={contextMenuProps.id}
      top={contextMenuProps.top}
      left={contextMenuProps.left}
      right={contextMenuProps.right}
      bottom={contextMenuProps.bottom}
    />
  {/if}

where in the handleOnDrop function, I create the invisible EdgeNode and form the initial edge between it and the node being dropped:
// ...some more logic...
const edgeCenter = getEdgeCenter({
        sourceX: sourceNode.position.x,
        sourceY: sourceNode.position.y,
        targetX: targetNode.position.x,
        targetY: targetNode.position.y
      })
  newEdgeNode = {
    id: generateId(),
    position: { x: edgeCenter[0], y: edgeCenter[1] } as XYPosition,
    type: 'EDGE_NODE',
    data: {
      source: edgesDroppedInto[0].source,
      target: edgesDroppedInto[0].target
    }
  } as Node

  nodesWritable.update((nodes) => [...nodes, newEdgeNode])
}
}

const newNode: Node = {
  id: newNodeId,
  position,
  type: nodeType,
  data: {}
}
if (newEdgeNode) {
  const edgeBetweenEdgeNodeAndReportingNode: Edge = {
    id: generateId(),
    source: newEdgeNode.id,
    target: newNode.id,
    type: EdgeType.STRAIGHT,
    data: { highlightDisabled: true }
  } as Edge
  edgesWritable.update((edges) => [...edges, edgeBetweenEdgeNodeAndReportingNode])
}

Later on at handleNodeDrag I check whether any EdgeNodes need to be updated if any of its source or target are being dragged:
const handleNodeDrag = (event: CustomEvent) => {
    console.log('Node drag event', event.detail)
    const nodesBeingDragged: Node[] = event.detail.nodes
    const nodes: Node[] = getNodes()
    nodes.forEach((node) => {
      if (node.type === 'EDGE_NODE') {
        const edgeNode = node
        const sourceNode = nodes.find((n) => n.id === edgeNode.data.source)
        const targetNode = nodes.find((n) => n.id === edgeNode.data.target)
        if (
          sourceNode &&
          targetNode &&
          (nodesBeingDragged.some((n) => n.id === sourceNode.id) ||
            nodesBeingDragged.some((n) => n.id === targetNode.id))
        ) {
          const edgeCenter = getEdgeCenter({
            sourceX: sourceNode.position.x,
            sourceY: sourceNode.position.y,
            targetX: targetNode.position.x,
            targetY: targetNode.position.y
          })
          edgeNode.position = { x: edgeCenter[0], y: edgeCenter[1] } as XYPosition
          nodesWritable.update((currentNodes) =>
            currentNodes.map((n) => (n.id === edgeNode.id ? edgeNode : n))
          )
        }
      }
    })
    updateNodesAndEdges($nodesWritable, null)
  }

In this case, I do not need any further logic on the `EdgeNode´ itself:

<Handle type="source" position={Position.Top} id="a" class="handle top-handle" />
<Handle type="source" position={Position.Right} id="b" class="handle right-handle" />
<Handle type="source" position={Position.Bottom} id="c" class="handle bottom-handle" />
<Handle type="source" position={Position.Left} id="d" class="handle left-handle" />

One problem I have though is that I use the :global(.svelte-flow__node .svelte-flow__handle) selector to style the Handles of the EdgeNode to make it invisible. However, in my Flow.svelte I also style the Handles using the same global selector, since for any other handle I need them to be visible and have a certain style. How to ensure that the EdgeNode handles have a specific style that is different than the global Handle style? Probably I am missing something very obvious, but so far removing the global keyword in EdgeNode.svelte did not help either.
Thanks!
I am not sure if this is really the

When working in a custom node you can simply add another level of css specificity by adding the class .svelte-flow__node-CUSTOM_NODE_NAME to your selectors.
I will close this issue for now. We are happy to answer any of your questions on Discord.


Documentation not loading

Hi @fwilliams ,
It seems like the documentation (and your website) are not loading properly.

Thanks!

Thanks for reporting this. I triggered a rebuild of the website and it works now. Very weird!


Diesel doesn't recognise primary key

Setup
Versions

Rust: 1.80.0
Diesel: 2.2.4 (CLI + crate)
Database: PostgreSQL 16.0 on x86_64-pc-linux-gnu, compiled by gcc (Debian 10.2.1-6) 10.2.1 20210110, 64-bit
Operating System WSL2 ubuntu

Feature Flags

diesel:

Problem Description
What are you trying to accomplish?
I have created the following table by issuing this exact command:
CREATE TABLE IF NOT EXISTS public.reindex_checkpoints_1
(
    id bigserial NOT NULL,
    clustering_id bigint NOT NULL,
    interval_identifier text COLLATE pg_catalog."default" NOT NULL,
    state text COLLATE pg_catalog."default" NOT NULL,
    inserted_at timestamp with time zone NOT NULL,
    updated_at timestamp with time zone NOT NULL,
    CONSTRAINT reindex_checkpoints_1_pkey PRIMARY KEY (id)
)

But then when I run diesel print-schema I get the following error:
Diesel only supports tables with primary keys. Table `reindex_checkpoints_1` has no primary key

Which is incorrect.
I have tried completely dropping the table and recreating it, even under a different name. I've also tried creating the table in a few different ways with slightly different syntax, and through the UI, and I get the same error from diesel.

That's strange. I tested this with the provided SQL and my local setup and it seems to work there with postgres 16.3 (although on fedora and not in WSL).
Could you execute the following query manually and provide the result:
SELECT "information_schema"."key_column_usage"."column_name" FROM "information_schema"."key_column_usage" WHERE ((("information_schema"."key_column_usage"."constraint_name" = ANY(SELECT "information_schema"."table_constraints"."constraint_name" FROM "information_schema"."table_constraints" WHERE ("information_schema"."table_constraints"."constraint_type" = 'PRIMARY KEY'))) AND ("information_schema"."key_column_usage"."table_name" = 'reindex_checkpoints_1')) AND ("information_schema"."key_column_usage"."table_schema" = 'public')) ORDER BY "information_schema"."key_column_usage"."ordinal_position";

(That's what diesel-cli executes internally)

Okay it was a permissions issue,
GRANT ALL ON TABLE public.reindex_checkpoints_1 TO <user> fixed it.

Thank you for looking into it though. Perhaps the error response is quite misleading right now in that failure case.

@whyando Thanks for this fast response and good to hear that this is sorted out now.
As for the error response: I agree with you there, but I do not see any simple solution to make it easily better. The only thing that comes to my mind is querying permissions, which sounds kind of complicated. That written: I'm certainly open to suggestions and even more implementations there.


Release 2.6.1: Elasticsearch client is 5.1.1 - not compatible with Elasticsearch 6.x

Hi there,
I installed Geoportal 2.6.1, which in the release notes states it is compatible with Elasticsearch 6.x - however, the client in the 2.6.1 release (and still in the master branch of this repo) is still 5.1.1 - which is not compatible with Elasticsearch 6.x
Was this an oversight? I am not sure how Geoportal can be compatible with 6.x when it uses 5.1.1 client?
Or perhaps I am missing something - did I do something wrong?
Setup:

Geoportal 2.6.1
Seperate Elasticsearch 6.4.0 cluster

cheers,
Str3tch

I can see in Elastic that the 9300 transport calls are being rejected from Geoportal because it's an incompatible version.
I expanded the WAR file on my mac, just for ease to show what's in it:
https://www.screencast.com/t/HDe9rChO93

@str3tch
The v5 transport client provides backward compatibility for v5 Elasticsearch instances. By default, Geoportal 2.6.1 will use HTTP to communicate with Elasticsearch 6*.  Not sure why you are seeing traffic on 9300, maybe you are re-using an earlier copy of app-context.xml?
https://github.com/Esri/geoportal-server-catalog/blob/master/geoportal/src/main/resources/config/app-context.xml
This line is important:
<beans:bean id="elasticContext" class="com.esri.geoportal.lib.elastic.ElasticContextHttp">

Ah! Thank you! It was an upgrade from an earlier version, maybe I copy pasted the old app context. I’ll try it out and report back today

yep, that was it. thanks!


InputField widget not working on Fuchsia

A regular InputField does not get the onChanged callback when typing on the hardware keyboard.
Sysui is using the RawKeyboardListener widget and it seems to work, but it'd be nice if we could use normal text input widgets as well.
cc/ @abarth

cc/ @apwilson

Yes, we're waiting on Fuchsia to grow an IME for us to interface with.

I think this can be closed now. The InputField / TextField widgets are working with IME service.
There are still some issues with the IME but those are tracked in other issues.


Readme pom instructions

The plugin doesn't work with the xml format described in the readme, namely:
<plugin>
...
<executions>
...
<configuration>...</configuration>
</executions>
</plugin>

But I find that this works:
<plugin>
...
<configuration>...</configuration>
<executions>...</executions>
</plugin>

This applies the configuration to a specific execution:
...
<configuration>...</configuration>
</executions>```

Whereas this applies a single configuration to all executions:

...
...
...

```
Please can you provide a test case/sample project demonstrating the failure and expected behaviour.


Conversion fails if wrong type

I have a field in my .json which contains (usually) a string.
"Location": "28",
If this field contains an Int the conversion fails:
"Location": 28,
How can I modify the generated swift code to  change the int to string?
Thanks
Rolf

Your sample should include a case where this field is an int, and quicktype will prepare for both.

Thank you for your fast answer. I see your point.
My issue is, that I need a sting in any case. So my idea was to convert the Int to String, by modifying your code.
Thanks
Rolf


[WIP] replace sprintf to string.format for FSharp.Core.UnitTests

Remove the use of sprintf for FSharp.Core.UnitTests
#4954

Just out of curiosity, why?

@KevinRansom This will allow adjusted tests to run under CoreRT and .Net Native.
Requested by @dsyme : "If you like you can submit a PR to remove the use of sprintf throughout FSHarp.Core.UnitTests except where that's the thing explicitly being tested.  It's useful anyway to reduce the complexity of what's being executed for different tests."

I'm ok with this as a general engineering improvement, since the dependency basis of the individual tests is then much slimmer. This is useful any time anyone wants to take F# to a different .NET implementation or for Fable/JS, WebSharper, Fez and so on.

@zpodlovics some earlier test cases was carefully designed and intentionally avoided this issue by factoring out the printing functionality to the beginning of the test code

Agreed that this would be nicer, and your first code block (report_failure etc.) shows a good structure, but I do not think we need #if definitions as you suggest lower down, because we do not need to maintain sprintf. As @dsyme said, moving away from sprintf (except where sprintf is specifically being tested) would 1. be an improvement all round, simplifying and reducing dependencies, and 2. may apply to more compilation toolchains than we know about at the time of writing the tests.

@charlesroddie  Also, in several cases conditional compilation will and still required, because corert does not support (or will not) support some features eg.: non-zero indexed arrays, deeply nested generics

Well, I think all occurrences of sprintf which could easily and safely replacing to String.Format were removed.
There are two sprintf:
(sqs = arr) |@ (sprintf  "Seq.%s = '%A', Array.%s = '%A'" name sqs name arr) .&.
(ls  = arr) |@ (sprintf "List.%s = '%A', Array.%s = '%A'" name ls name arr)

Is it better to replace it with String.Format + custom function for formatting or leave unchanged?
What should to do with printf/bprintf also?

bprintf sb f = sprintf f >>sb.Append. That is straightforward.
printf sb = sprintf sb >> Console.Write, although should probably be sprintf sb >> print so print can be defined more appropriately if needed.

To me this as a basically harmless engineering improvement but I don't really care that much either way. I've often thought about doing it myself, especially when I've just inserted some bug deep into F# that affects "sprintf" and I want it caught early and obviously.
The way I see it is this: the FSharp.Core unittests are especially useful during the process of trialling F# on different runtime substrates. Historical examples where we've done this include WebSharper, Fez, Silverlight, PCL, Fable, testing various F# interpreters and dynamic compilers (Unquote etc.), bringing up F# on .NET Core 1.x etc. Just last week I was writing an F# interpreter to run F# code in a LivePlayer on mobile devices and minimized unit tests would have been useful.
So if it gets done, sure, it's useful, I approve, but I don't care much either way.
@charlesroddie  Since @KevinRansom doesn't like this, perhaps just make a fork of the tests instead?

We would support an effort to reduce, or better yet eliminate the requirement for reflection during printfn/printf/sprintf. Obviously this is going to be a lot of effort but would yield significant benefits to any future Ahead of Time Compilation or Transpiler strategies that F# might follow.

This makes sense.  If it helps the history is this:

Once upon a time (approx F# 0.6) we used compiler-generated code to avoid any reflection, so a printf string would become compiler-generated code.  That can work but was at the time buggy, complex, created large numbers of closures and was not particularly fast.

In F# 1.x we moved to runtime interpretation, which needs reflection (dynamic instantiations via MakeGenericMethod and MakeGenericType) but no explicit code generation.  This means it works on Xamarin iOS (where a last-resort imlpementation of generic code is always available, but codegen is not permitted) but not on .NET Native and CoreRT (where no last-resort implementation of generic code is available, sadly)

In F# 3.x we moved to "fast" runtime interpretation, the current implementation (done by @v2m), with the same dependency base.

This all means I basically put the current F# "printf" implementation in the same category as LINQ: unlikely to work on implementations of .NET that don't support arbitrary MakeGenericType/MakeGenericMethod.    (For this reason  I'd also recommend avoiding the use of LINQ when testing primitives - as a habit but not a rule :) )
cheers
don

@dsyme Since @KevinRansom doesn't like this, perhaps just make a fork of the tests instead?
Yes we'll keep working on this fork for use in manual testing of .Net Native, since changes to printfn/printf/sprintf sound like they won't be done in the short term. We'll preserve this WIP PR for visibility. @FoggyFinder

It sounds like you have a plan.  I would really prefer, if there was someone to champion looking at how we need to react to platforms without reflection, although that may I suppose have to wait until we fund it, here which will certainly not be any time soon.
You should also submit any tests you care about to the coreRT repo.  I would hope that they would probably take IL assemblies that you generate.  At least that way, anything you determine works would stay working.


The publisher should close the Ably connection when it has no trackables

When there are no trackables in the publisher then the Ably connection should be closed.
┆Issue is synchronized with this Jira Task by Unito

Closing and reopening the connection isn't a big problem itself. The real issue is that due to the fact that the Ably wrapper isn't very safe in terms of multithreading, with current implementation we might end up in a state where the connection is closed and it won't be reopened. Therefore, we should wait for https://github.com/ably/ably-asset-tracking-android/issues/440 to be resolved before working on this issue.


createMutation (onMutate) context is of type 'unknown'

Doing the following on my Svelte page (Optimistic Updating):
const api = trpc($page);
const utils = api.createUtils();

const todos = utils.authed.todos;

const addTodo = api.authed.todos.add.createMutation({
  onMutate: async (newTodo) => {
    await todos.list.cancel();
    const previousTodos = todos.list.getData();
    todos.list.setData(undefined, (old) => [
      ...(old ?? []),
      {
        id: '0',
        data: newTodo.data
      }
    ]);
    return { previousTodos };
  },
  onError: (err, newTodo, context) => {
    console.log(err);
    console.log(context);
    todos.list.setData(undefined, context.previousTodos);
  },
  onSuccess: () => {
    newTodo = '';
    todos.list.refetch();
  }
});

However i'm getting an error:
'context' is of type 'unknown'.ts(18046)

Not sure if it's a bug, or if i'm doing something wrong. Followed the guide here https://tanstack.com/query/v4/docs/framework/react/guides/optimistic-updates

Hey, I'm new here, just looking around, so I haven't tried this package yet. But I have a few questions.
Is the return type of onMutate inferred correctly by TS? What do you see when you hover your mouse cursor on onMutate? What happens if you explicitly type the return type of onMutate, by for example writing onMutate: async (newTodo): string => {, does that change the type of context in the next function?


Null value in forecast

I am getting null/empty values for some fields in one of the forecast elements that is causing issues with my weather card (it is highly customized for my particular needs, but based one of the popular custom cards).  Have not seen this before so it is probably pretty rare, but suspect it is incoming from the WeatherFlow forecast data.
I am going to trap for this in my weather-card but thought I would share in case it is something you want to address.  I only use my own weather-card, so don't know if this would impact others, and it is probably unlikely to occur very often from the upstream forecast anyway.
As always,  Thank you.

datetime: '2021-12-03T19:00:00+00:00'
conditions: ''
condition: null
temperature: 73.4
pressure: 30.002
humidity: 69
precipitation: 0
precipitation_probability: 40
precip_icon: chance-rain
precip_type: ''
wind_speed: 6.71
wind_gust: 6.71
wind_bearing: 186
wind_direction_cardinal: S
uv: 3
feels_like: 75.2

Sorry, I cannot replicate this. Below is a resent pick from my sensor.wf_weather and the Hourly Forecast. I have all data filled. Try and activate the Debug function, and see if something shows in the log.
- datetime: '2021-12-04T13:00:00+00:00'
  conditions: Cloudy
  condition: cloudy
  temperature: 4
  pressure: 998.16
  humidity: 93
  precipitation: 0
  precipitation_probability: 5
  precip_icon: chance-sleet
  precip_type: sleet
  wind_speed: 3.6
  wind_gust: 3.6
  wind_bearing: 60
  wind_direction_cardinal: ØNØ
  uv: 0

Not surprised, I haven't seen anything like this and have been running pretty much from the beginning.  It must have been something on the Weatherflow forecast end.  I am now trapping for the null value on my end now, but the forecast element with the null is now gone, and probably never to return.
But as I thought about it, even if you did receive a Null for condition from the WF forecast api, the appropriate action would be to pass it along.  So, this is just a curiosity with no action warranted.
Thanks again for maintaining this (and other) wonderful projects


Search capability

As a customer I would like the ability to search for keywords within the content.

Feature added


Settings

Before starting a new chat, I'd like to be able to access the settings in order to enter my API key for instance.
You can keep a chat specific settings page for each new chat, but I would like a "default" setting, that could be accessed from a button on the top right of the app looking like this:

There is a new update in the 'dev' branch that streamline the process to add your API key.

Try the latest release. We just merged dev into main and cut a new release (v2.0.0).


Update to search-index v.0.9.x

A lot of stuff has changed between search-index v.0.8.x and v.0.9.x. Need a full makeover.

Want this :)

Cool @oliversauter ! What would you think is most important? What should I fix first?


Formmatting and folding code issues

Bicep version
Bicep CLI version 0.26.54 (5e20b29b58)
Describe the bug
There are two bugs/issues that I see with latest version. Most likely applicable for previous versions as well.
Issue 1
even that I have following formatting configuration:
"formatting": {
        "indentKind": "Space",
        "indentSize": 2,
        "insertFinalNewline": true,
        "newlineKind": "CRLF",
        "width": 160
    },

The width is not honored by if statements on resources. Those are always moved on the next line no matter what is the width defined. For me this is an issue as when possible I want to use the maximum width available and only multiline when that width threshold is reached. It should apply to any part of the code so if if statements do not exceed that threshold they should not be moved to new line.
Issue 2
When you have if statement on the resource and that if statement is moved to next line the whole indent is moved one space further. That causes the last closing bracket '}' to be indented and when you fold code it folds it to the next resource instead of folding it to the last bracket.
To Reproduce
test.bicep
param foo object

resource storageAccount 'Microsoft.Storage/storageAccounts@2023-01-01' =
  if (foo.deploy) {
    name: 'storageaccount1'
    kind: 'StorageV2'
    location: resourceGroup().location
    sku: {
      name: 'Standard_LRS'
    }
    properties: {
      accessTier: 'Hot'
    }
  }

resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' =
  if (foo.deploy) {
    name: 'roleAssignment1'
    properties: {
      principalId: ''
      roleDefinitionId: ''
    }
  }

Issue 1:

After document format:

Issue 2:

Additional context
Add any other context about the problem here.

It seems also issue 1 applies for  functions like map().

Issue 1 stems from a deliberate choice made by the team, but I agree that wrapping if expressions can lead to indentation that is not aesthetically pleasing. Additionally, it appears that most customers prefer a longer width setting, diminishing the rationale for maintaining such wrapping. I'm going to modify the layout rule to exempt if expressions from being wrapped.

Would you mind sharing an example for map()? I don't there is a special case added for it.

@shenglol This issue started a few weeks ago for me as well, the bicep module ignores the formatting rules set in VS Codes and enforces a specific bicep code formatting... A format that I don't agree with at all. In addition to @slavizh examples this also true on other circumstances as well like e.g.:
var cosmosDbContributor = '00000000-0000-0000-0000-000000000002'
var cosmosRoleId = resourceId('Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions', cosmosDbName, cosmosDbContributor)

Which will be formatted as
var cosmosRoleId = resourceId(
  'Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions',
  cosmosDbName,
  cosmosDbContributor
)

A format I don't fancy at all.
Please revert the change, or at least configure it so that it honors VS Code formatting options. It would be nice that if you want to do something like this that you implement .editorconfig where WE can specify the rules for the formatting.
I have inactivated Format on Save for now to avoid having the bicep extension formatting my bicep files..

map() example
param foo object

resource storageAccount 'Microsoft.Storage/storageAccounts@2023-01-01' =
  if (foo.deploy) {
    name: 'storageaccount1'
    kind: 'StorageV2'
    location: resourceGroup().location
    sku: {
      name: 'Standard_LRS'
    }
    properties: {
      accessTier: 'Hot'
    }
  }

resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' =
  if (foo.deploy) {
    name: 'roleAssignment1'
    properties: {
      principalId: ''
      roleDefinitionId: ''
    }
  }

resource appGw 'Microsoft.Network/applicationGateways@2023-09-01' = {
  name: 'tes1'
  properties: {
    backendHttpSettingsCollection: map(foo.array, array => {
      name: array.name
      id: array.id
    })
  }
}

on format

Basically we need strict formatting. Only when width is reached than format on new line. And if you have multiple statements do not put them all in new line just make them in a way that the new line honor the width.

I also don't like that formatter always moves arguments into new lines. Sometimes I by purpose split or join arguments into one line to add some comments. the new formatter breaks it all. it also treats a comment as an argument and moves it to a new line also.
It also moves trailing closing bracket of for-loops into 2 lines:
before
}]

now:
}
]

I'd like to keep it compact. At some point we decided that we allow objects and arrays to be defined in one line to not stretch bicep templates vertically. Now the formatter brings it back.
In my opinion, the new formatter is too aggressive.

I also don't like that formatter always moves arguments into new lines.

The formatter respects the newline before the first array / object item. If you don't wrap the item then it will format it as single-line array / object, unless it exceeds the width limit. If long single-line array / object is preferred, you may simply increase the width value in bicepconfig.json.

Sometimes I by purpose split or join arguments into one line to add some comments.

Can you share an example? I think it only does so if joining them one line results in parsing error. For instance, it is illegal to flatten
var myArray = [
   true // comment
   false ]

into
var myArray = [true // comment,  false ]

It also moves trailing closing bracket of for-loops into 2 lines

This decision is intentional to ensure uniform indentation levels, aligning with scenarios where an array of objects isn't produced by a for-loop expression.
var myArray  = [
  {
    foobar: 1
  }
  {
    foobar: 2
  }
]

var myArray = [
  for i in range(2): {
    foobar: i
  }
]

I understand that some might think the formatter is too strict in some cases. But it's tough to make a tool that everyone agrees with because people have different tastes. A formatter that is somewhat opinionated could be more useful, especially in team projects, because it makes things predictable and consistent and stops people from nagging about how the code looks during code review.

@shenglol This issue started a few weeks ago for me as well, the bicep module ignores the formatting rules set in VS Codes and enforces a specific bicep code formatting... A format that I don't agree with at all. In addition to @slavizh examples this also true on other circumstances as well like e.g.:
var cosmosDbContributor = '00000000-0000-0000-0000-000000000002'
var cosmosRoleId = resourceId('Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions', cosmosDbName, cosmosDbContributor)

Which will be formatted as
var cosmosRoleId = resourceId(
  'Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions',
  cosmosDbName,
  cosmosDbContributor
)

A format I don't fancy at all.
Please revert the change, or at least configure it so that it honors VS Code formatting options. It would be nice that if you want to do something like this that you implement .editorconfig where WE can specify the rules for the formatting.
I have inactivated Format on Save for now to avoid having the bicep extension formatting my bicep files..

You may increase formatting.width in bicepconfig.json to a big number like 200 to fix it.

Basically we need strict formatting. Only when width is reached than format on new line. And if you have multiple statements do not put them all in new line just make them in a way that the new line honor the width.

Makes sense. The warpping of the map function is basically due to a rule where a multi-line child forces it's parent to be multi-line as well. For example,
var myArray = [
  [
    1
    2
  ], 3, 4]

will be formatted as
var myArray = [
  [
    1
    2
  ]
  3
  4
]

to improve readability, even if it doesn't exceed the width limit. However, the map function case is interesting because
backendHttpSettingsCollection: map(foo.array, array => {
  name: array.name
  id: array.id
})

is more compact and does look cleaner than
backendHttpSettingsCollection: map(
  foo.array,
  array => {
    name: array.name
    id: array.id

)

I'll add a heuristic to avoid breaking function argument list if the last element is an object.

Just to clarify, there is a bicepconfig.json setting to control the behavior, but it's not through VS Code settings or .editorconfig, because we want to support Bicep CLI as well. You may increase formatting.width in bicepconfig.json to a big number like 240 to restore the old behavior.

Ok, I'll take a look at the bicepconfig.json file, however are there any documentation of this file for formatting? The one in here doesn't mention the formatting.width file as far as I can see? The default configuration file has an empty formatting section as well here.

@dozer75
I found no doc either, but found that intellisense in VSCode will suggest available settings.

@mumian Do you mind helping add documentation for the new formatting settings in bicepconfig.json?
{
  "formatting": {
    "insertFinalNewline": boolean, // Default value is true
    "indentKind": "Space" | "Tab", // Default value is "Space"
    "indentSize": integer,         // Applicable when "indentKind" is set to "Space". Default value is 2.
    "width": integer,              // The maximum number of characters that should appear on a line. Default is 120. The formatter will try to wrap the line if the width limit is reached.
  }
}

The if expression is something that we are going to fix for the next release (please see my response above here: https://github.com/Azure/bicep/issues/13676#issuecomment-2023795329). The width setting would work for the resourceId call you shared originally.

The if expression is something that we are going to fix for the next release (please see my response above here: #13676 (comment)). The width setting would work for the resourceId call you shared originally.

Ok, I misunderstood then.. This is an overall problem that it messes with the code then and until it's fixed we'll have to disable format on save then so it doesn't mess with our code 👎

Refer to how it work in almost every other languages and tools, it is how it is for a reason...

I'd like to assure you that this was indeed what we've done.
JavaScript / TypeScript -> Prettier, Biome
Python -> Black, PEP8
Rust -> Rustfmt
Go -> Gofmt
C++ -> Clang-format
The formatters list above all implemented the same or similar pretty-printing algorithm to enforce opinionated formatting rules with length / width limits. The offical C# formatter (dotnet format) does has the capability yet, but the issue Prettier-style line breaking has over 100 upvotes now, and there is a community formatter CSharpier that implements it today.
I understand having strong opinions about the "right" code style, but I think the general consensus of many people is that it doesn't matter what the specifics are, as long as they're being applied consistently. As pointed out by Prettier's Option Philosophy, the idea of having consistent formatting rules is to stop all the ongoing debates over styles like this.
With that in mind, one potential solution to accommodate varying preferences could be implementing a feature like #format disable. This directive would allow teams to opt out of automated formatting on specific code blocks where manual formatting is preferred. Would this approach meet your needs?
Discussing the .editorconfig, it seems there might be some confusion about how it works. Essentially, .editorconfig sets basic coding styles for text editor plugins (e.g., for VS Code, you would have to install the EditorConfig extension). Its rules come into effect when the text editor applies them after the code has been formatted by the language server. It's not designed as a code formatting standard for language servers. AFAIK, C# is the only language that uses it to configure custom coding styles and linter rules. While it's technically feasible for the Bicep CLI and Bicep language server to do the same, but since we already utilize bicepconfig.json to define linter rules, to maintain consistency, there are no plans to integrate .editorconfig support.

I will not continue to try reasoning to have a more flexible solution now it isn't worth the time. If you just fix so we can use width in all scenarios to avoid having the formatter to automatic line breaks so I can get back the old functionality and I will be ok with that.

@shenglol Is there a plan to change the formatting of for loops as well?
The if block was changed to stay in the same line in v0.27.1, but for is still moved to the new line.
It was just annoying before - now it's annoying and inconsistent :D

@mumian Do you mind helping add documentation for the new formatting settings in bicepconfig.json?
{
"formatting": {
"insertFinalNewline": boolean,       // Default value is true
"newlineKind": "LF" | "CRLF" | "CR", // Default value is "LF"
"indentKind": "Space" | "Tab",       // Default value is "Space"
"indentSize": integer,               // Applicable when "indentKind" is set to "Space". Default value is 2.
"width": integer,                    // The maximum number of characters that should appear on a line. Default is 120. The formatter will try to wrap the line if the width limit is reached.
}
}

For anyone else frustrated and madly Googling like me - this worked
In my git project folder at the root level I have bicepconfig.json with the following contents
{
    "formatting": {
        "insertFinalNewline": true, // Default value is true
        "newlineKind": "LF", // Default value is "LF"
        "indentKind": "Space", // Default value is "Space"
        "indentSize": 2, // Applicable when "indentKind" is set to "Space". Default value is 2.
        "width": 500 // The maximum number of characters that should appear on a line. Default is 120. The formatter will try to wrap the line if the width limit is reached.
    }
}

This now works as expected
For example, this was before
appGatewayBackendAddressPoolId: resourceId(
  'Microsoft.Network/applicationGateways/backendAddressPools',
  appGatewayName,
  'Swarm'
)

But now when I save it fixes it and formats as
appGatewayBackendAddressPoolId: resourceId('Microsoft.Network/applicationGateways/backendAddressPools', appGatewayName, 'Swarm')

This is what I wanted - the 500 length line solved it
Cheers, hope this helps someone else


⚠ Bofrost.be has degraded performance

In 1e098f0, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 1890 ms

Resolved: Bofrost.be performance has improved in c37f030 after 8 minutes.


Add search functionality has been added

In this i have added the search funtionality that you have mention in the issue


Runtime modifiable configuration

Description
Currently the configuration is less flex-able as it is only loaded at server startup, the current configuration is also hard for docker users to modify. In order to create new features that can be toggled from the dashboard this proposal is to create a "runtime modifiable" configuration. This would allow the configuration to be modified by the dashboard
Checklist

[ ] Configuration is implementation is altered so that its safely modifiable at runtime (RwLocks)
[ ] Endpoints are created for setting the values of config variables
[ ] Modified config variables are persisted to the config file

After looking into this it seems impractical to implement and hence wont be added


CASE auth fail after ESP32 crash

Problem
connectedhomeip commit id: b0af6ba42b6ce494748f18ecf3e054a400b8f45b  (TE7.5)
TC-MF-1.17 commission device with 3 TH.
When step 13 (TH_CR2 starts a commissioning process with DUT_CE) is executed, DUT is crashed. (due to LoadProhibited in chip::Ble::BLEEndPoint::ReleaseBleConnection).
And when ESP32 reboot automatically, TH1 is unable to authenticate with DUT.
Proposed Solution
<suggested fix, suggested enhancement>
dut.log
th1.log
th2.log
th3.log

See #17568 and #17298


Question: Multiple-view Classification

I am trying to set up a classification model where each input data has multiple 'views'. i.e. where the inputs might take the form:
X_train = np.vstack(( np.hstack(( class1_view1 , class1_view2 )),
np.hstack(( class2_view1 , class2_view2 ))
))
Y_train = np.hstack((np.zeros(class1),np.ones(class2)))
I know I can apply different kernels to the two views using active_dims, but is there any way of applying different likelihoods in the same way? Each view will have different (internally consistent) noise properties, as well as different dimension.
Alternatively, is there a better way to set up such a model? I looked at the Coregionalization example but couldn't see how to apply it to a classification problem. Putting different views as different rows in X would allow using SwitchedLikelihood but makes it difficult to use both views simultaneously to predict unclassified examples, unless I've misunderstood. Thanks for any help you can give.

Your question is a good one, but the solution requires further research and is beyond the scope of gpflow. The difficulty here is that you have a covariate that is partially observed (i.e. present in the training but not the test inputs). What makes this more tricky is that the gplvm-style (see e.g. this paper) approach for this won't work straightforwardly as you have a discrete variable.

I'm not sure I understand - both views would be available for training and testing inputs, so I can always create an 'X' of the same form to pass to the trained GP.

Dear @DJArmstrong, this seems more of a "how-to" question and as such would be more appropriate to stackoverflow - so that other people who may have similar questions in the future can more easily benefit from the discussion - it'd be great if you could post it there, tagged "gpflow" (https://stackoverflow.com/questions/tagged/gpflow), and add any further comments/insights you may have gained in the meantime - if you've managed to find an answer by now, it'd be great if you could post that on stackoverflow, too! I hope this makes sense :-)


Fix AzureOpenAiStreamingChatModel constructor get or default new Tokenizer

Issue

no issue
I found during unit testing
Change

AzureOpenAiStreamingChatModel constructor get or default new Tokenizer
Referenced OpenAiStreamingChatModel
General checklist

[x] There are no breaking changes
[ ] I have added unit and integration tests for my change
[ ] I have manually run all the unit and integration tests in the module I have added/changed, and they are all green
[ ] I have manually run all the unit and integration tests in the core and main modules, and they are all green

[ ] I have added/updated the documentation
[ ] I have added an example in the examples repo (only for "big" features)
[ ] I have added/updated Spring Boot starter(s) (if applicable)

Checklist for adding new model integration

[ ] I have added my new module in the BOM

Checklist for adding new embedding store integration

[ ] I have added a {NameOfIntegration}EmbeddingStoreIT that extends from either EmbeddingStoreIT or EmbeddingStoreWithFilteringIT
[ ] I have added my new module in the BOM

Checklist for changing existing embedding store integration

[ ] I have manually verified that the {NameOfIntegration}EmbeddingStore works correctly with the data persisted using the latest released version of LangChain4j

Found this too. Waiting for it to get merged

Thanks a lot!


Deadlock while analysing firmware

Describe the bug
Deadlock while analysing ARM firmware
To Reproduce
I can't provide the firmware I'm analysing due to copyright reasons unfortunately.
Expected behavior
The analysis to complete successfully.
Screenshots
The stacktrace below shows the deadlock
Environment (please complete the following information):

OS: Windows 10 Pro
Version: Ghidra 9

Additional context
[thread dump moved to an attachment]

Please provide the log as an attachment; it's hard to read as formatted text.

Here you are:
thread-dump.txt

Closing due to inability to recreate.


Make Wash ls more symmetric with the built-in ls

The commits contain all the details.

Here's what the new ls looks like:
wash . ❯ ls docker/containers/wash_tutorial_redis_1
fs/
log
metadata.json
wash . ❯ ls -l docker/containers/wash_tutorial_redis_1
NAME            MODIFIED    ACTIONS
fs/             <unknown>   list
log             <unknown>   read, stream
metadata.json   <unknown>   read
wash . ❯ ls docker/containers/wash_tutorial_redis_1/metadata.json
metadata.json

I'm not yet sure how to handle "hidden" entries. I considered defining them as entries whose cname begins with a ., but a definition like that's a bit too early so I left it out for now.

Does that mean "hidden" files will always be shown?

For now, yeah. Hidden files will also be included.

And ah yeah, I forgot about the website. Will do.


 It sets deltas for the head movement to prevent unnecessary small movements of the head to track the ball.
This is NOT tested. The parameters (currently set to 4) are NOT evaluated and just guessed.

I don't agree. I think that the expected behavior when calling look_at without additional parameters is to look exactly at the given position. In my opinion, it would be confusing/unexpected to have no head movement in this case.

I see your point but don't agree.
In my oppinion this setting affects when a look_at call is relevant enough to force a movement. It's not a setting which must be respected in every call but instead a client who wishes not to respect it should pass 0 as parameter.
I also don't think it is unexpected behavior because it is clearly documented in both the yaml parameter file and the method docstring.

I would also be OK with keeping it in track_ball if we rename the setting parameters (not method parameters) to reflect that they only apply to track_ball

Doesn't the 'ball_tracking'-part in  the 'ball_tracking_min_[pan/tilt]delta' reflect that properly? Or should we rename it to 'track_ball_min[pan/tilt]_delta'?

Yeah it does -.-. Then I'm fine with it

I was confused when I wrote that, so I kept it unspecified 🙈. I hope, the last commit solves the issue.

Nice work, very smooth.


Check IDEs Quarkus tooling support for this

Make sure the Quarkus tooling support this and the tooling team is aware of this.

or at least check that there aren't parts of it that is inherently difficult to tool :)

Having the node_modules dir as part of the root of the project allow to have IDE support:
https://docs.quarkiverse.io/quarkus-web-bundler/dev/advanced-guides.html#node_modules


pin smol to 0.1.10

Signed-off-by: Ankur Srivastava<EMAIL_ADDRESS>

Codecov Report

Merging #9 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master       #9   +/-   ##
=======================================
  Coverage   92.30%   92.30%
=======================================
  Files          17       17
  Lines        2130     2130
=======================================
  Hits         1966     1966
  Misses        164      164

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 4b7b22e...9564436. Read the comment docs.


Flaky Cypress test faq_link_attr.cy.js

Cypress test cypress/e2e/faq_link_attr.cy.js is sometimes failing when running on GitHub using the workflows:

.github/workflows/build-and-test.yml or
.github/workflows/cypress-test-prod.yml

  1) Check attributes of FAQ links
       Check links are using _blank to open in new frame
         Test links for _blank presence:
     CypressError: Timed out after waiting `100000ms` for your remote page to load.

Your page did not fire its `load` event within `100000ms`.

You can try increasing the `pageLoadTimeout` value in `cypress.config.js` to wait longer.

Browsers will not fire the `load` event until all stylesheets and scripts are done downloading.

When this `load` event occurs, Cypress will continue running commands.
      at timedOutWaitingForPageLoad (http://localhost:8000/__cypress/runner/cypress_runner.js:137295:72)
      at <unknown> (http://localhost:8000/__cypress/runner/cypress_runner.js:138269:16)
      at tryCatcher (http://localhost:8000/__cypress/runner/cypress_runner.js:8914:23)
      at <unknown> (http://localhost:8000/__cypress/runner/cypress_runner.js:4036:41)
      at tryCatcher (http://localhost:8000/__cypress/runner/cypress_runner.js:8914:23)
      at Promise._settlePromiseFromHandler (http://localhost:8000/__cypress/runner/cypress_runner.js:6849:31)
      at Promise._settlePromise (http://localhost:8000/__cypress/runner/cypress_runner.js:6906:18)
      at Promise._settlePromise0 (http://localhost:8000/__cypress/runner/cypress_runner.js:6951:10)
      at Promise._settlePromises (http://localhost:8000/__cypress/runner/cypress_runner.js:7027:18)
      at _drainQueueStep (http://localhost:8000/__cypress/runner/cypress_runner.js:3621:12)
      at _drainQueue (http://localhost:8000/__cypress/runner/cypress_runner.js:3614:9)
      at ../../node_modules/bluebird/js/release/async.js.Async._drainQueues (http://localhost:8000/__cypress/runner/cypress_runner.js:3630:5)
      at Async.drainQueues (http://localhost:8000/__cypress/runner/cypress_runner.js:3500:14)
  From Your Spec Code:
      at eval (webpack:///./cypress/e2e/faq_link_attr.cy.js:20:19)
  at Array.forEach (<anonymous>)
      at eval (webpack:///./cypress/e2e/faq_link_attr.cy.js:18:22)
      at itCallback (webpack:///./cypress/support/e2e.js:74:4)
      at Context.eval (webpack:///./cypress/support/e2e.js:95:31)

The test is attempting to visit

baseUrl: http://localhost:8000 +
/ +
lang: en +
faqResultsUrl: /faq/results

= http://localhost:8000/en/faq/results
and failing.
Manual reproduction
npm ci
npm run build
npx start-server-and-test start-server http://localhost:8000 "cypress run -s 'cypress/e2e/faq_link_attr.cy.js' --e2e --headless --browser chrome"

The first time this is run, the duration is 01:27 (min:sec).
Now run again:
npx start-server-and-test start-server http://localhost:8000 "cypress run -s 'cypress/e2e/faq_link_attr.cy.js' --e2e --headless --browser chrome"

This time it only takes 00:06 (min:sec).
The issue can occur locally with browser-sync or in production.
Suggestion
Similar issues have been seen with the website previously and the root cause of the issues was not resolved (see for instance https://github.com/corona-warn-app/cwa-website/issues/3071 and https://github.com/corona-warn-app/cwa-website/issues/3070). This is not an error in the test itself, however a workaround can be to visit the root of the website / before each test. This seems to reset whatever it is that is causing the web not to respond in the complex FAQ section.

Internal Tracking ID: EXPOSUREAPP-15135

@larswmh / @dsarkar

Unfortunately, the workaround https://github.com/corona-warn-app/cwa-website/pull/3480 has failed 🙁 See https://github.com/corona-warn-app/cwa-website/actions/runs/4858683797.

I don't have a solution for this problem, as when I tested it, it was working on GitHub and I don't exactly know the reason for the failure.

https://github.com/corona-warn-app/cwa-website/actions/runs/4859232685/jobs/8661692312 from the blog update worked.
So the test is just flaky, not failing always.
Would you like to re-open this issue?

The test seems to hang up waiting for /en/faq/results/faq_duplicate.json to load and process. I could not see any obvious way so far to solve this issue. 🙁

To fix this issue it probably needs src/assets/js/app.js debugging and fixing.
It may be simplest to just disable the test cypress/e2e/faq_link_attr.cy.js.

PR https://github.com/corona-warn-app/cwa-website/pull/3487 is a workaround, which disables the test.

@MikeMcC399 Ok, thanks for the extensive analysis. I think your suggestion to disable the flaky test in CI makes sense.

FYI PR https://github.com/corona-warn-app/cwa-website/pull/3490

@dsarkar
Thank you keeping me in the loop. I decided not to spend more time on this after disabling the test in CI, since the test is still available for local manual testing and I would not expect any new FAQ articles to be published. I did however take a brief look at the new PR and the changes make it more difficult to see where the error came from if there is an error. It's up to you if you want to implement these new changes. I can't really say if the analysis of the root cause is correct.

Hi @mtb77
Thanks for looking at this issue. It seems that I was misled by the error message Timed out after waiting 100000ms for your remote page to load.
If softExpect is changed to expect I found that it works. softExpect is actually an unsupported extension to Cypress which was implemented through a "monkey patch" in cypress/support/e2e.js. Using it means that each result is stored and the test continues even if there is an error, so that at the end it can report multiple errors. It does mean that it consumes memory and the latest changes increased the number of links to check by 40% which was apparently enough to kill it! 🙁
At this stage of the game I suggest to go with whatever works best for you. I originally wrote the test, so I have just learned that it was not scalable. Sorry for that!

Thanks for the feedback @MikeMcC399 - and I learned something again!
The timeouts were also really mysterious. I would then suggest merging and then we at least know that we can open another feature request at Cypress to include softExpect in the core without "monkey patch" 😎

Since https://github.com/corona-warn-app/cwa-website/pull/3490 stops this issue occurring, it can be closed.


feat: update to tailwind-merge v1

@dcastil after upgrading to tailwind-merge@1 getting following error:
roperty 'isCustomLength' does not exist on type 'typeof import("/Users/vl.tansky/Projects/tailwind-merge-rtl-plugin/node_modules/tailwind-merge/dist/types/validators")'.

    19             validators.isCustomLength,

isCustomLength was renamed to isArbitraryLength (I wrote about that in the release notes). You should be fine after renaming the validator in your codebase.

Thanks!


->must()->term('name','kimchy')  not working at all

Trying to match something and it doesn't give any results. Is this an issue someone else is experiencing ?

This is not a package issue you can use toDSL instead of get to debug your query.

Thanks for your response.  My toDSL looks like this http://i.imgur.com/a4LcmGn.png , the data is in there, double checked, yet the response is non existent.


Custom namespace separator character.

Greetings. I've recently tried using next-intl for a migrated project with some pre-existing locale files and had issues with a lot of messages not being resolved. After some research, it turned out that the period (".") characted is hardcoded as the namespace separator, and, since we had a lot of those in the message ids in our existing locale files, the resolver must have been looking for nested objects instead of trying to translate the string itself.
Would it be possible to add an option to have a custom namespace separator to avoid such issues? Otherwise, a lot of id renaming would be needed (which would have to be done semi-manually in the js files).
Also, as it this hardcode caused some strange behaviour, this might be worth mentioning in the faq / docs. Unless I missed it somewhere.

Hi @tnphis and thank you for your report!
Unfortunately the namespace separator is currently not intended to be customized. With the recently introduced TypeScript support for validating message keys it is also not possible to introduce a configuration option for this unfortunately.
However I've set up a PR to validate namespace keys to avoid confusion in regards to this in the future: https://github.com/amannn/next-intl/pull/106. Does this look useful to you?

Alright! I'm sorry to hear about your frustration, but thank you for taking the time to report your finding so others can avoid this in the future.
I've just merged the improved error handling so this will be part of the next release.

This question came up again in https://github.com/amannn/next-intl/discussions/148#discussioncomment-4274218, I've linked to a simple transformation script that converts the namespaces to a nested structure.


Example script to reset timestamp on multiple devices connected to the PC

Related to a feature Sunny really wanted, and it probably a feature that other customers are going to demand.

Haven't tested for two boards yet.

Also, this only works on OS X and Linux, since they will both give the 'ttyACM*' device names to promotion boards that are connected to IDAP devices. There should probably be a way to identify which devices are promotions before connecting to them.


Store UBL documents within Google Cloud

This should include finding a way to store documents that is compatible with the Lichen UI. Most likely this will entail the use of the Cloud Storage rather than Mongo.

https://github.com/GoogleCloudPlatform/google-cloud-ruby#cloud-storage-ga


Fix mouse emulation always sending events to the main window

Simple test case:
TouchTestCaseSrc.zip

System info on the machine i tested with

Operating System: Arch Linux
KDE Plasma Version: 6.1.5
KDE Frameworks Version: 6.6.0
Qt Version: 6.7.3
Kernel Version: 6.11.1-arch1-1 (64-bit)
Graphics Platform: Wayland
Processors: 16 × AMD Ryzen 7 5825U with Radeon Graphics
Memory: 15.0 GiB of RAM
Graphics Processor: AMD Radeon Graphics
Manufacturer: Dell Inc.
Product Name: Inspiron 16 5625
System Version: 1.10.0

Fixes #91099

Tested with touchscreen and Wacom tablet on Windows, it works fine, but I can't reproduce the issue without this PR. Window ID changes look correct.

Heres a recording of before and after the fix (with a touchscreen but admittedly over RDP)
https://github.com/user-attachments/assets/55fb7860-4edf-4311-b919-2d3aa03b1527
https://github.com/user-attachments/assets/d4500d07-9272-43ba-be30-aa71fd1ae4e7

Thank you!


Update all gems

bundle update

Motivation
In https://github.com/davidrunger/david_runger/pull/2566/ , we fixed an issue with guard/pry incompatibility by bumping guard. Are there other beneficial changes that we are missing out on from other outdated gems? Let's assure ourselves that the answer is as close to "no" as possible, via this PR, which updates as many gems as possible (via bundle update).