Polish Pass: Utility Features

Warning - this ticket is a work in progress. If you have suggestions please add a comment below!

Base on:

https://github.com/skeletonlabs/skeleton/issues/782

Goals
The goal of this pass will be to improve, refine, and finalize all Utility features in Skeleton.

[x] Fix and address known issues and bugs
[x] Refactor code, cleanup styles, and improve edge cases
[x] Improve documentation for each feature
[x] Expand with new features as relevant
[x] Make overlays not suck, or at least suck less
[x] Ensure Vitest test cases are passing
[x] Resolve FIXME issues (reference)
[x] Update all style props to use CssClasses type

Utiliies
Local Storage Stores

[x] Update to the latest upstream version 0.40.0

Code Block

[x] Minor visual refresh and code refactor
[x] Property buttonCopy renamed button, default value is now variant-soft
[x] Added buttonLabel and buttonCopied for basic i18n support
[x] Added style props for blur and shadow
[x] Prepare documentation "previewer" component

Drawers

[x] Docs: make it clear these are a singleton
[x] Greatly improved documentation and setup instructions
[x] Provide advanced tip for animating background contents, per #637
[x] Refactor of Drawer animation logic
[x] Added shadow property for Drawer element
[x] Added regionBackdrop|Drawer props. Available as overrides as well!
[x] BREAKING: Removed drawer margin in favor of backdrop padding (provides better results)
[x] Rounded corners by default, based on theme settings (set rounded-none to disable)

Lightswitch

Warning - this utility feature has been complete rebuilt from the ground up.

[x] Lightswitch component rebuilt with new UI design and new props available
[x] Now uses a service-like approach, per #737
[x] Provided an alternative to to the component if you wish to use OS preference automatically
[x] Users can now interface with our methods, or build their own Lightswitch UI
[x] Provided and documented interface stores, getters, and setter methods.

NOTE: we need to test #905

Modals

[x] Docs: make it clear these are a singleton
[x] Implement system to register and reuse custom modals, per #720
[x] Custom modals should be "naked" by default and allow FULL customization
[x] Allow prompt input to accept custom validation attributes, per #899
[x] Added image modal example
[x] Move modal example components to /docs - should not be part of the public package
[x] Provide prop to set position - ex: top (search) or center (default), (reference)
[x] Improve component scrolling, per #890

NOTE: given the potential scale and scope of changes required, we'll have to circle back to #937

Toasts

[x] Docs: make it clear these are a singleton
[x] Wrapping button element needs selector like .toast-actions
[x] Update button style props to allow changing button type
[x] Added new buttonDismissLabel prop to override the dismiss button label text
[x] Replaced preset prop with background property allowing any variant or background class.
[x] Improved animation using Svelte FLIP
[x] Added a callback function feature for the ToastSettings object

Popups

Warning - this completely replaces Menus and Tooltip utilities
Requires new dependency: https://floating-ui.com/

[x] Replaced Menus and Tooltips with new "Popup" utility feature
[x] Fully documented, has tons of config options
[x] Updated examples, including a functional Combobox
[x] Includes a fade animation on open/close
[x] Supports multiple interaction event handlers (click, hover, both)
[x] Can optionally include a customizable arrow on any variation
[x] Now includes 12 position options
[x] Dramatically better performance in keeping the popup on screen
[x] Fully tree shakable
[x] Allows you to modify a host of settings through "middleware"
[x] Supports a11y features, such as keyboard interaction

Menus

DEPRECATED: replaced with Popups (shown above)

Menus

DEPRECATED: replaced with Popups (shown above)

Data Tables

See our our audit of prosed third party solutions here #821

A new PR has been update, and you can preview the changes here:
https://skeleton-docs-git-chore-utilities-polish-pass-skeleton-labs.vercel.app/utilities/codeblocks

Today's updates have focused on Drawers, including a refactor to cleanup the animation logic, and a slew of new style properties. This should greatly expand the customization capabilities of this feature. Here's an example of a highly customized instance:

Additionally I've research a means to animate the background content while the drawer is open. This will be best served as a feature users implement, as we cannot know what sort of layout structure they might be using.

Additionally, more information the Singleton pattern this uses has been added, as well as a note that we do not (and will not) support a means to disable the click-to-close backdrop feature. It's something we get regular requests for, so I want to make it clear it's against a11y best practices.

The Lightswitch component has been completely rebuilt from the ground up. Preview it here:
https://skeleton-docs-git-chore-utilities-polish-pass-skeleton-labs.vercel.app/utilities/lightswitches

Notable changes:

New UI design that adheres to theme settings
A variety of new props, including a means to adjust the size
Underlaying logic completely rebuilt, abstracted to an external service
This service exposes the stores, getters, and setting methods for users
Users can utilize these to generate their own Lightswitch UI component
Also provided an alternative if you wish to use OS preference only

In a nutshell, the basic version is at simple as before, but now provide a ton of power-user features.

We have a BIG series of modal updates today. These can be previewed here:
https://skeleton-docs-git-chore-utilities-polish-pass-skeleton-labs.vercel.app/utilities/modals

Notable changes:

You can now optionally register components on the parent <Modal> for easy reuse.
Custom modals are no longer styled by default, giving you complete control over design
ModalSettings now allows for valueAttr to define the prompt input type and other attributes
I've added a new example modal, which displays a single image with a detached close button.
You can now easily set the modal vertical position either globally or per instance.
The backdrop region now support vertical scroll for tall components.

That said, I do still have one more item I would like to address, which is making modals async by default, per #937

Several notable updates to the Toast utility today. You can preview this here:
https://skeleton-docs-git-chore-utilities-polish-pass-skeleton-labs.vercel.app/utilities/toasts

Minor UI adjustments
Various new or updates prop values, including the ability to customize the dismiss button text
Replaced the preset prop with a background prop which can take utility classes or variants
Improved the animation, especially when multiple are queued

All visible toasts will slighly bump up a tiny amount after every toast that is triggered when the visible limit of 3 is full.

Big update today - both Menus and Tooltips have now been replaced with the new "Popups" feature.
https://user-images.githubusercontent.com/1509726/219174651-1f5749ec-9810-4e72-8512-36d354988dae.mp4
This includes a new dependency called Floating UI (previously known as Popper.js):
https://floating-ui.com/
Notable improvements:

Fully documented, has tons of config options
Updated examples, including a functional Combobox
Includes a fade animation on open/close
Supports multiple interaction event handlers (click, hover, both)
Can optionally include a customizable arrow on any variation
Now includes 12 position options
Dramatically better performance in keeping the popup on screen
Fully tree shakable
Allows you to modify a host of settings through "middleware"

Minor quibble: you use the error token for the "advanced" tag, and should be using the error token.

combobox opens once on iOS and not at all on Android

feat: Share the open/close state of the popup, similar to how we currently do it for menus.

NOTE: mention that Floating UI popups have a fighting z-index issue when overlaying elements using backdrop-blur (at least on Chrome). It's most likely a browser bug.

Reminder:

[ ] Implement @ryceg QA feedback items in the PR thread: https://github.com/skeletonlabs/skeleton/pull/936

[ ] Toast - Implement functionality below to allow Toasts to trigger a callback when it is created and closed.

So when the ID is assigned -> trigger the callback with id: whatever and status: assigned as the response

When the toast is closed -> we trigger it again, but this time change status: closed

The callback function would then look for a status of "assigned" or "closed" to fire the appropriate event.

FYI this has been merged into dev branch, please continue QA testing there!
https://dev.skeleton.dev/

[ ] Code Blocks: First example (at the very top) shows
This is meta
 in the code but
Hello Skeleton
 in the preview.
[ ] Code Blocks: Same examples, in the code view, have incorrect colors. Probably the template literals in code should be blue, but some chars (<, {, =) break it?

[ ] Toasts: Don't know why or if it's intended, but the Basic example logs id and status.
[ ] Toasts: After spamming toasts and closing them I keep getting this error (it works btw)

Per Popups

[ ] We need to implement the interactive mode option to allow popups to close when interaction or route change occurs.

[ ] Modals: undefined class

I've implement a new queryClose setting for popups that allow you to set the list of the popup's child elements that will close the popup when clicked. By default any anchor or button clicked within the popup will automatically close it, but this can be easily overrided.


in ballista also check for UI prettier changes

Which issue does this PR close?
in ballista also check for UI prettier changes
Closes #.
Rationale for this change

What changes are included in this PR?

Are there any user-facing changes?

Codecov Report

Merging #578 (a5385e2) into master (51e5445) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #578   +/-   ##
=======================================
  Coverage   76.02%   76.02%
=======================================
  Files         156      156
  Lines       27063    27063
=======================================
  Hits        20575    20575
  Misses       6488     6488

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 51e5445...a5385e2. Read the comment docs.


Uncaught SyntaxError: Unexpected number in JSON at position 93

[Enter steps to reproduce:]

...
...

Atom: 1.40.1 x64
Electron: 3.1.10
OS: Mac OS X 10.13.1
Thrown From: Atom Core
Stack Trace
Uncaught SyntaxError: Unexpected number in JSON at position 93
At file:///Applications/Atom.app/Contents/Resources/app.asar/static/index.html:6

SyntaxError: Unexpected number in JSON at position 93
    at JSON.parse (<anonymous>)
    at /Users/cailingxiao/Documents/code/dynamiclayout/dynamiclayout/dynamic-layout-kit/lib/dynamic-manager.js:56:25
    at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:440:3)

Commands
     -0:34.7.0 core:save (input.hidden-input)
     -0:21 core:cut (input.hidden-input)
  2x -0:20.5.0 core:save (input.hidden-input)
     -0:17.3.0 core:paste (input.hidden-input)
     -0:17.1.0 core:save (input.hidden-input)
     -0:07.8.0 core:cut (input.hidden-input)
  2x -0:07.4.0 core:save (input.hidden-input)
     -0:02.5.0 core:paste (input.hidden-input)
  2x -0:02.1.0 core:save (input.hidden-input)

Non-Core Packages
atom-beautify 0.33.4
busy-signal 1.4.3
dynamic-layout-kit 0.0.1
intentions 1.1.5
linter 2.2.0
linter-ui-default 1.7.1

Thank you for your submission!
It appears that this is being caused by the dynamic-layout-kit package that you appear to be developing, not Atom itself. It may be that there is still a bug in Atom. If so, we'll need you or the maintainer of the package that is causing the problem to help track that down to supply us with steps to reproduce the problem.


Error Importing ProhibitSurrogateCharactersValidator

validators. ProhibitSurrogateCharactersValidator was only introduced from v3.12 of djangorestframework. The dependancy version will need to be updated to a min of v3.12.0.

Resolved in #29 and released in v0.0.16


0.7.3

This commit marks the release of the latest version of design-system.
Resolves #266

Since this project is a dependency for several others at thoughtbot, I'll need to do a lot of testing before cutting this release. I have never done one of these before so this is me setting things up to make flipping the final switch easier 🙂. Thoughts welcome.


Unibeautify integration

The Unibeautify folks are very friendly and responsive and would like to hook into Emacs. So let's do it!
Initial discussion here: https://github.com/Unibeautify/unibeautify-cli/issues/17
Ping @Glavin001 :)

I can try to make Unibeautify's installation easier, as described in https://github.com/Unibeautify/unibeautify-cli/issues/17 .
Would you be able to work on the Emacs package? I created a repository and provided you with write access: https://github.com/Unibeautify/emacs
If you're able to install the current Unibeautify CLI, let's make the Emacs package assuming unibeautify executable is already installed and exists. I'll work on improving that process.

I can try to make Unibeautify's installation easier, as described in Unibeautify/unibeautify-cli#17 .

That's awesome!

Would you be able to work on the Emacs package? I created a repository and provided you with write access: https://github.com/Unibeautify/emacs
If you're able to install the current Unibeautify CLI, let's make the Emacs package assuming unibeautify executable is already installed and exists. I'll work on improving that process.

Thanks for granting access.
I was under the impression that we were adding Unibeautify support to format-all. I still think that would be a better solution than creating a separate package. We have a ready and tested framework into which we can easily add Unibeautify support and there's no need to throw away all the old work on calling other formatters. I believe not all Emacs users want to or are able to install Unibeautify right away so the old code in format-all would continue to serve them. Meanwhile, everyone would get Unibeautify support with the next update to format-all.
Before I started format-all, there were a dozen or so formatting packages for Emacs - a different package for autopep8, clang-format, prettier, rubocop, rufo, etc. All need to be installed separately and have a slightly different user interface. They all do the same thing with small variations but are different packages mainly due to historical intertia. I would like to avoid adding to this duplication of code, UI and effort in the Emacs package ecosystem.
In my opinion a good compromise would be to make Unibeautify the default formatter for format-all. I would happily do this. So if Unibeautify is installed, format-all would use it - if not, it would try to directly call the other external formatters that it already knows about. (There is no incentive for me to add new formatters to format-all once Unibeautify is working well, but I imagine someone would send the odd pull request once in a blue moon.)
The big thing that Unibeautify brings to Emacs (in addition to a wide range of formatters) is configuration. My original goal was to avoid inventing our own Emacs-specific configuration system (this problem is explored in painful detail in issue #2). Unibeautify solves the problem beautifully by providing a .unibeautifyrc file ready to use. format-all doesn't currently have any configuration options at all. We can keep it that way by telling people to simply use Unibeautify and .unibeautifyrc if they want to configure their formatters. Meanwhile, many of the already supported formatters (such as autopep8 and gofmt) are very useful with their default settings so people who want the simplest possible solution can keep doing that if they want to.
One thing I would be willing to consider is changing the name of the Emacs package. I never thought that format-all is a particularly good name - it began by adapting an internet meme ("format all the code") which I got tired of so I shortened it to format-all, lol 😃  We could rename it to beautify, for example. There isn't yet a package with that name in MELPA, the main third-party Emacs package archive. I would also be happy to mention Unibeautify in the one-line package summary, so people looking for beautify or unibeautify on MELPA will easily find it. I personally think that format is a better term than beautify because it's easier to spell and more neutral (people who don't like their team's coding style would think that it uglifies their code) but I don't truly care about this - either word is fine.
I'm not familiar with the Vim community but I imagine a similar approach would serve them well - they already have a widely used plugin called Neoformat. Unibeautify could be added to that one instead of making an entirely new plugin from scratch. But we should ask @wbthomason since he knows about Vim and Neoformat.

In my opinion a good compromise would be to make Unibeautify the default formatter for format-all. I would happily do this. So if Unibeautify is installed, format-all would use it - if not, it would try to directly call the other external formatters that it already knows about. (There is no incentive for me to add new formatters to format-all once Unibeautify is working well, but I imagine someone would send the odd pull request once in a blue moon.)

👍 This does sound like a good compromise 😃 .

One thing I would be willing to consider is changing the name of the Emacs package

No worries here. I think you should continue to maintain your format-all Emacs package.
I want to house all officially supported Unibeautify tools within the organization ( https://github.com/Unibeautify/unibeautify ) with a name containing the Unibeautify brand. With the exception of Atom-Beautify, since it has over 4.7 million downloads with this name.
Ideally, the name and installation is fairly consistent:
# Node.js
npm install unibeautify
# macOS
brew install unibeautify-cli
# VSCode
code --install-extension Glavin001.unibeautify-vscode
# Sublime Text (via Package Control)
# --> Package Control --> Search for "unibeautify" --> Install
# Vim
:Neoformat unibeautify
# etc ...

The Unibeautify Emacs package will be extremely lightweight and simply leverage unibeautify-cli. After the initial Unibeautify Emacs package is developed I do not expect many changes in its future, as the vast majority of work and complexity will be within Unibeautify core and Unibeautify CLI.
Since you already have developed out this excellent package, format-all, there's no point in deprecating it, since it does fit a need and there will be some users who do not need the additional features Unibeautify offers. 👍

With the exception of Atom-Beautify, since it has over 4.7 million downloads with this name.

Wow, that is very impressive. Atom is really taking off!
I thought about this some more and had to change my mind. I now agree with you that having a separate unibeautify Emacs package is better after all, because it turns out that full Unibeautify support is fundamentally more complex (because it does more useful things to users!) than the zero-configuration stuff that format-all currently does.
For the best Unibeautify support in Emacs, we should:

Automatically load Emacs coding style settings from .unibeautifyrc when opening a file.
Automatically format code before saving a file.
Have a command to format a piece of code in a temp buffer (not saved to any file), sending the coding style settings used in that Emacs buffer to Unibeautify via command line arguments.
Have a command to create or update .unibeautifyrc based on current Emacs coding style settings.

All of these are hard to fit in the current format-all package without confusing users.

For example, suppose a user sits down on a new computer that has Unibeautify. They are used to running clang-format and expect it to read its settings from the .clang-format file. But now the new computer has Unibeautify and format-all would cause clang-format to be invoked via Unibeautify instead, so clang-format would use the settings from .unibeautifyrc (or default settings if .unibeautifyrc does not exist).

Also, auto-formatting on save is something that's easy to do in a dedicated Unibeautify Emacs package (by only applying it to files that have a .unibeautifyrc in their project directory) but cannot be done in format-all without confusing users. Likewise, auto-loading settings from .unibeautifyrc might be confusing in a generic formatting package, but expected in a dedicated Unibeautify package.

I also looked at the current Emacs Lisp code for format-all and the part that does the actual formatting is a very small amount of code. So I could volunteer to kick off the Unibeautify Emacs package based on that code. After all this reflection, I think it's the right thing.

So I could volunteer to kick off the Unibeautify Emacs package based on that code. After all this reflection, I think it's the right thing.

Thank you in advance for your contribution! I am excited to have you on board 🎉  😃 . Together let's build the best user experience for code formatting!
All of your comments above make good sense and we can continue our discussions over at https://github.com/Unibeautify/emacs/issues 👍

This project is continued at https://github.com/Unibeautify/emacs :)


running DockerTask

I have a general question about luigi.contrib.docker_runner.DockerTask, and I can't seem to find information anywhere else, so maybe someone can give some feedback here. If you have different Luigi tasks built in different environments and you want to 'glue' those tasks together under one system, can you use DockerTask to wrap each task and still be able to connect one DockerTask to another? For example, can you chain two different DockerTasks and pass the output from A -> B ?

I have exactly the same question.

@apierleoni contributed our Docker contrib library

not sure I got the question right, would be good to have a more detailed usecase.
Particularly not sure what environment means here.
Each DockerTask is independent from the other, so you should be able to pass the output for A to B if it is persisted somewhere in between.


WYSIWYG ToolBar Keeps Focus

Describe the Bug
When clicking a sub-menu item on the toolbar (ie: Insert Horizontal Line), the focus immediately returns focus to the page to keep typing, but the sub-menu is still shown.  Clicking on the editor page to remove the sub-menu and keep typing results in the toolbar stealing focus away from the editor.
Steps to Reproduce

Add some text
Click second "..." in toolbar
Click "Insert Horizontal Line"
Type some more (works)
Click next to typed text
Type some more (fails as toolbar as focus)
Click again next to typed text
Type some more (works again)

Expected Behaviour
Once the "Insert Horizontal Line" button has been clicked the sub-menu should disappear and focus returned to the main editor
Screenshots or Additional Context
No response
Browser Details
Firefox 112 on Linux Mint
Exact BookStack Version
BookStack v23.02.3
PHP Version
Not sure
Hosting Environment
linuxserver/bookstack docker container running on Synology NAS

Thanks for the report @My-Random-Thoughts.
Been looking into this, not something I can quickly patch as far as I can tell.
Is an issue in TinyMCE, so would ideally fix upstream.
Plain simplified TinyMCE reproduction case


Bugfix: Change condition to give True when splits - l is 0 to give correct P_k score

Refer to https://github.com/chschock/textsplit/issues/4
This fixes the abovementioned bug when invoking the P_k function to calculate score.

by the way i've run the tests and all tests passed
Ran 8 tests in 0.651s


broken link

changing the link to the thumbnail in the doc!

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint. The docs are available until 30 days after the last update.


[Logger Refactor] Frequency Support

This PR adds, Frequency Type support to LoggerManager
Key Changes include:

Introduce simple FrequencyManager to manage the frequency of logging
Add FrequencyManagerFactory to create FrequencyManagers
Attach callbacks to optimizer.step() or model forward function based on Frequency Type
Moved logger.py into it's own folder
Refactor some epoch specific logging helpers to be more general

Supported Frequency types are (NOT CASE SENSITIVE) :

[X] epoch
[X] optimizer_step
[X] batch

By default, epoch frequency type is selected with a log_freq of 0.1; if this works for users they can omit specifying loggers with session.initialize altogether
For more fine-grained control, A LoggerManager instance should be created, with the expected log_frequency and frequency type
Example script to log model info after 10 optimizer steps:
from sparseml.core.logger.logger import LoggerManager
import sparseml.core.session as sml
from sparseml.core.framework import Framework
import torchvision
from torchvision import transforms
import torch
from torch.utils.data import DataLoader
import datasets
import os
from torch.optim import Adam
from torch.nn import CrossEntropyLoss
from sparseml.core.event import EventType
from sparseml.core import PythonLogger
import logging

NUM_LABELS = 3
BATCH_SIZE = 32
NUM_EPOCHS = 1
LOG_FREQUENCY = 10
FREQUENCY_TYPE = "optimizer_step" # or "epoch" # or "batch"
recipe = "/home/rahul/projects/sparseml/local/recipe.yaml"
device = "cuda:0"

# set up SparseML session
sml.create_session()
session = sml.active_session()

# download model
model = torchvision.models.mobilenet_v2(weights=torchvision.models.MobileNet_V2_Weights.DEFAULT)
model.classifier[1] = torch.nn.Linear(model.classifier[1].in_features, NUM_LABELS)
model.to(device)

# download data
beans_dataset = datasets.load_dataset("beans")
train_folder, _ = os.path.split(beans_dataset["train"][0]["image_file_path"])
train_path, _ = os.path.split(train_folder)
val_folder, _ = os.path.split(beans_dataset["validation"][0]["image_file_path"])
val_path, _ = os.path.split(train_folder)

# dataloaders
imagenet_transform = transforms.Compose([
   transforms.Resize(size=256, interpolation=transforms.InterpolationMode.BILINEAR, max_size=None, antialias=None),
   transforms.CenterCrop(size=(224, 224)),
   transforms.ToTensor(),
   transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
])

train_dataset = torchvision.datasets.ImageFolder(
    root=train_path,
    transform=imagenet_transform
)
train_loader = DataLoader(train_dataset, BATCH_SIZE, shuffle=True, pin_memory=True, num_workers=16)

val_dataset = torchvision.datasets.ImageFolder(
    root=val_path,
    transform=imagenet_transform
)
val_loader = DataLoader(val_dataset, BATCH_SIZE, shuffle=False, pin_memory=True, num_workers=16)

# loss and optimizer
criterion = CrossEntropyLoss()
optimizer = Adam(model.parameters(), lr=8e-3)

recipe_args = {}
session_data = session.initialize(
    framework=Framework.pytorch,
    recipe=recipe,
    recipe_args=recipe_args,
    model=model,
    teacher_model=None,
    optimizer=optimizer,
    train_data=train_loader,
    val_data=val_loader,
    start=0.0,
    steps_per_epoch=len(train_loader),
    loggers=LoggerManager(frequency_type=FREQUENCY_TYPE, log_frequency=LOG_FREQUENCY),
)

# loop through batches
for epoch in range(NUM_EPOCHS):
    running_loss = 0.0
    total_correct = 0
    total_predictions = 0
    for step, (inputs, labels) in enumerate(session.state.data.train):
        inputs = inputs.to(device)
        labels = labels.to(device)
        session.state.optimizer.optimizer.zero_grad()
        session.event(event_type=EventType.BATCH_START, batch_data=(inputs, labels))

        outputs = session.state.model.model(inputs)
        loss = criterion(outputs, labels)
        loss.backward()
        session.event(event_type=EventType.LOSS_CALCULATED, loss=loss)

        session.event(event_type=EventType.OPTIM_PRE_STEP)
        session.state.optimizer.optimizer.step()
        session.event(event_type=EventType.OPTIM_POST_STEP)

        running_loss += loss.item()

        predictions = outputs.argmax(dim=1)
        total_correct += torch.sum(predictions == labels).item()
        total_predictions += inputs.size(0)

        session.event(event_type=EventType.BATCH_END)

    loss = running_loss / (step + 1.0)
    accuracy = total_correct / total_predictions
    print("Epoch: {} Loss: {} Accuracy: {}".format(epoch + 1, loss, accuracy))

# finalize session
session.finalize()

The recipe used:
test_stage:
  pruning_modifiers:
    MagnitudePruningModifier:
      init_sparsity: 0.0
      final_sparsity: 0.5
      start: 0
      end: 2
      update_frequency: 0.5
      targets:
          - features.0.0.weight
          - features.1.conv.0.0.weight
          - features.1.conv.1.weight
          - features.2.conv.0.0.weight
          - features.2.conv.1.0.weight
          - features.2.conv.2.weight
          - features.3.conv.0.0.weight
          - features.3.conv.1.0.weight
          - features.3.conv.2.weight
          - features.4.conv.0.0.weight
          - features.4.conv.1.0.weight
          - features.4.conv.2.weight
          - features.5.conv.0.0.weight
          - features.5.conv.1.0.weight
          - features.5.conv.2.weight
          - features.6.conv.0.0.weight
          - features.6.conv.1.0.weight
          - features.6.conv.2.weight
          - features.7.conv.0.0.weight
          - features.7.conv.1.0.weight
          - features.7.conv.2.weight
          - features.8.conv.0.0.weight
          - features.8.conv.1.0.weight
          - features.8.conv.2.weight
          - features.9.conv.0.0.weight
          - features.9.conv.1.0.weight
          - features.9.conv.2.weight
          - features.10.conv.0.0.weight
          - features.10.conv.1.0.weight
          - features.10.conv.2.weight
          - features.11.conv.0.0.weight
          - features.11.conv.1.0.weight
          - features.11.conv.2.weight
          - features.12.conv.0.0.weight
          - features.12.conv.1.0.weight
          - features.12.conv.2.weight
          - features.13.conv.0.0.weight
          - features.13.conv.1.0.weight
          - features.13.conv.2.weight
          - features.14.conv.0.0.weight
          - features.14.conv.1.0.weight
          - features.14.conv.2.weight
          - features.15.conv.0.0.weight
          - features.15.conv.1.0.weight
          - features.15.conv.2.weight
          - features.16.conv.0.0.weight
          - features.16.conv.1.0.weight
          - features.16.conv.2.weight
          - features.17.conv.0.0.weight
          - features.17.conv.1.0.weight
          - features.17.conv.2.weight
          - features.18.0.weight
          - classifier.1.weight
      leave_enabled: True

Output with above script will log model info 4 times; (the dataset used has 33 batches, and we log once for every 10 optimizer steps, we also only run it for 1 epoch)
Output:
Logging all SparseML modifier-level logs to sparse_logs/18-12-2023_20.20.46.log
2023-12-18 20:20:46 sparseml.core.logger.logger INFO     Logging all SparseML modifier-level logs to sparse_logs/18-12-2023_20.20.46.log
2023-12-18 20:20:47 sparseml.core.recipe.recipe INFO     Loading recipe from file /home/rahul/projects/sparseml/local/recipe.yaml
Epoch: 1 Loss: 0.7876473863919576 Accuracy: 0.7108317214700194

Quick scan through the log file confirms correct logging:

The log file has been attached for reference:
18-12-2023_20.20.46.log

To see the specific tasks where the Asana app for GitHub is being used, see below:

https://app.asana.com/0/0/1206205545989441
https://app.asana.com/0/0/1205848553025323

Closing as requirements changed slightly and new changes are a part of #1931


Build vertical actionbar before results table so that it shows above the table.

When the showActionBar setting was added for the query results grid, some DOM operations got reordered, causing the actionbar to always be built after the results table. When building a horizontal actionbar, it should instead come before the results table. This PR is a partial reversion of the gridPanel changes here: https://github.com/microsoft/azuredatastudio/commit/7683259097f29d7316d81057fd266c37d5ccb99a#diff-d3d6744fd0e03a75fd04780ac9f6a90520bb80c6678668f3df17566bab3e5991L486
This PR fixes #21645

Screenshots
Notebook with showActionBar: true

Query editor with showActionBar: true

Notebook with showActionBar: false

Query editor with showActionBar: false. (edge of screen on the right)

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 9 (0.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.004%) to 42.025%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/sql/workbench/contrib/query/browser/gridPanel.ts
0
9
0.0%

Totals

Change from base Build<PHONE_NUMBER>:
0.004%

Covered Lines:
28601

Relevant Lines:
63211

💛  - Coveralls


Clarify return type for TopLevelSlashCommandBase.enabled_guilds

Summary

This pull request aims to clarify the return type of TopLevelSlashCommandBase.enabled_guilds. It is strictly a documentation change.
Checklist

[x] I have run nox and all the pipelines have passed.
[ ] I have made unittests according to the code I have added/modified/deleted.

Related issues

Related to #93

This is no longer applicable for the next release.


Fix issue were double curly brackets are present in the config.js

Description
Fix issue where the config.js contains double curly bracket when auth method is set to 'database'
Self Check:

[ ] Attached issue to pull request
[x] Changelog entry
[x] Type annotations are present
[x] Code is clear and sufficiently documented
[x] No (preventable) type errors
[x] Sufficient test cases (reproduces the bug/tests the requested feature)
[x] Correct, in line with design
[ ] End user documentation is included or an issue is created for end-user documentation

Processing this pull request

Merged into branches master, iso7 in b8b977f6d66d0c6a26ca87123a49260cf6307ead


add: specFor null (as object)

This PR is not quite a fix, or a feature, but rather a suggestion
What did this pull request do?
The schema generator will crash when trying to generate a schema for a JSON with a property-value null:
{ "someKey": null }. When generating the schema for a property with null as a value, treat it as Object with no keys. The result looks something like this:
"k3": {             "title": "An object value",             "description": "",             "required": [],             "properties": {},             "$id": "#/properties/k3",             "type": "object"         }
User Case Description
It is quite common to have JSON files where one of their property's values is null. It does not matter if the property was designed to describe numbers, strings, arrays or objects. It can still be null nevertheless.
Considerations
I had two solutions in mind: to treat "null" as "type": null, and implement a new specFor code section, or to to treat it as an object still, and let the existing code do its thing (which it does).
Comparing to existing generators:
json-s-generator and to-json-schema treat null as "type": "null". So does the excellent jsonschema.net.
However, since the Javascript Spec itself states that the type of null is Object (see here), I actually thought it would be better to treat it this way. And I have at least one extra tool to think the same (json-schema-generator)
In the attached files, I have included some results for generating schema for the following object:
{     "k1": "v1",     "k2": [1,2,3],     "k3": null }
jsg07 samples.zip

I agree, null properties are typically not meant to be fixed to null.

:tada: This PR is included in version 1.0.4 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Rust: Permissions Question

Scenario
The rust image currently has umask 022 set.
$ docker run -it --rm --user root mcr.microsoft.com/devcontainers/rust:1-1-bullseye
root ➜ / $ umask
0022
root ➜ / $ grep ^rustlang /etc/group
rustlang:x:999:vscode

Should a build step, such as a feature use cargo install the resulting permissions prevent group write usage.
root ➜ / $ cargo install --quiet bacon
root ➜ / $ ls -ld $CARGO_HOME/registry
drwxr-sr-x 5 root rustlang 4096 Nov 14 19:04 /usr/local/cargo/registry

Which then in turn breaks user-level usage of other cargo commands.
root ➜ / $ su vscode
vscode ➜ / $ cd
vscode ➜ ~ $ cargo install cargo-watch
    Updating crates.io index
  Downloaded cargo-watch v8.4.1
error: failed to download replaced source registry `crates-io`

Caused by:
  failed to open `/usr/local/cargo/registry/cache/index.crates.io-6f17d22bba15001f/cargo-watch-8.4.1.crate`

Caused by:
  Permission denied (os error 13)

Question
What is the correct course of action?

Set umask 002 here, at the image level? Perhaps in /etc/profile?
Set umask 002 inside feature install.sh scripts?

Hi 👋
Thanks for opening a detailed issue.

What is the correct course of action?

As cargo is installed by the Rust Feature, it makes sense to update permissions in the Feature. However, looking at https://github.com/devcontainers/features/blob/main/src/rust/install.sh#L156, I do see umask 0002 set. However, I think there's a bug in this line https://github.com/devcontainers/features/blob/main/src/rust/install.sh#L163, it updates permissions only for the specific directory, instead of doing that recursively.
I believe, updating chmod g+r+w+s "${RUSTUP_HOME}" "${CARGO_HOME}" to 👇  should help.
chmod -R g+r+w+s "${RUSTUP_HOME}" "${CARGO_HOME}"

@CodeMan99 Let me know if that makes sense to you, thanks!

Opened https://github.com/devcontainers/features/pull/754

Let me know if that makes sense to you, thanks!

I am not completely sure to be honest. I don't think the feature creates $CARGO_HOME/regitstry. I believe that folder is only created after usage of cargo install.
So the rust feature still isn't responsible for the creation of the problem directory.

I think I missed the part where you switch the users between running cargo install command. As the registry is created by the root user, it won't automatically allow the vscode user to use it unless the permissions are updated.
Curious, @CodeMan99 why do you switch users? I believe these Features/images were created hoping that the same user is been used for lifecycle of the dev container. Else, it would cause permission issues as seen in this issue ^

Curious, @CodeMan99 why do you switch users? I believe these Features/images were created hoping that the same user is been used for lifecycle of the dev container. Else, it would cause permission issues as seen in this issue ^

Usage of root is build-like usage. For example, using cargo install inside a feature install.sh. My understanding that executing that script will always be root. Is that an incorrect assumption?
Then, during development cargo will need write access to that folder. Including cargo build. The $CARGO_HOME/registry folder is created with the correct group (rustlang) in my example.

My understanding that executing that script will always be root. Is that an incorrect assumption?

Yes, that is correct. All Feature's install scripts are run with the root user.
With the Rust Feature, CARGO_HOME directory is correctly owned by the vscode user. However, as you are running cargo commands with the root user, it creates the registry folder with root permissions. The non-root user cannot modify the files that were created by root as basically you can't mix something like sudo cargo install and cargo install.
Hence, I believe you should do either of the following to fix the issue -

Always stick with a single user vscode or root, else, you will run into this issue

Else, manually give permissions for the registry directory to the vscode user

When running with root, make sure to run commands as vscode user (eg. vscode -c "cargo install bacon")

However, as you are running cargo commands with the root user, it creates the registry folder with root permissions.

The folder is created with exactly these permissions.
root ➜ / $ cargo install --quiet bacon
root ➜ / $ ls -ld $CARGO_HOME/registry
drwxr-sr-x 5 root rustlang 4096 Nov 14 19:04 /usr/local/cargo/registry

The vscode user is added to the rustlang group by the rust feature. The only thing that needs to change is the write permissions for the group.

Always stick with a single user vscode or root, else, you will run into this issue

This advice does not resolve the issue. Example devcontainer.json file:
{
     "image": "mcr.microsoft.com/devcontainers/rust:1-1-bullseye",
     "features": {
         "ghcr.io/lee-orr/rusty-dev-containers/bacon:0": {}
     }
}

This very simple configuration creates the problem:

cargo install bacon is run in the install.sh of the feature.
The remoteUser is vscode.

So again, what is the correct course of action?
Use of umask 002 in the image's /etc/profile file? Or use of umask 002 in the install.sh script of any given feature?

Let me clarify a little - "the course of action" is a question of who needs to own this knowledge.

Setting the umask 002 in /etc/profile would be an image-wide change, affecting all system user's default. Only image maintainers would be required to have knowledge.
Setting the umask 002 in any given feature is a very specific change that requires documentation. Both documentation maintainers and community feature maintainers are required to have knowledge.
Just providing a guideline puts the ownership of this issue in the hands of any user that wants to use cargo install as a build step (Dockerfile or using a feature).

Opened devcontainers/features#754

This PR is what I want.
Now I have an error using the cargo build command due to permission being denied. Perhaps it's because I used cargo to install some tools in the dockerfile before run rust feature script, so the gid in the registry directory is root
non-root@702362714ab7:~$ ls -l $CARGO_HOME
total 24
drwxrwxrwx 1 root root     4096 May 22 08:04 bin
-rwxr-xr-x 1 root rustlang  690 May 21 16:06 config.toml
-rw-rw-rw- 1 root root      308 May 14 03:57 env
drwxrwxr-x 1 root root     4096 May 22 08:04 registry

non-root@702362714ab7:~$ ls -l $RUSTUP_HOME
total 20
drwxrwxrwx 1 root root 4096 May 22 09:04 downloads
-rw-rw-rw- 1 root root  151 May 14 03:58 settings.toml
drwxrwxrwx 1 root root 4096 May 22 09:04 tmp
drwxrwxrwx 1 root root 4096 May 22 09:04 toolchains
drwxrwxrwx 1 root root 4096 May 22 09:04 update-hashes

Can this PR be merged?


user profile page

This is very spare. What user specific setting choices could go here?
~- [ ] receive occasional emails~ nixed by team decision

[ ] ??

status July 2024:
There is a new profile page, which could see enhancements - if so - what would they be? A team design question. emails y/n nixed by team previously


Kirbys Dream Land

Cannot enter EXTRA MODE, as using the key combo "UP + SELECT + A" always saves a state rather than enabling the option to start a EXTRA game.
Any way around this?

Remapping the key combos on the title screen was straightforward, so have gone with that approach. There's an updated save state patch in the repo now for Kirby's Dream Land.
After applying the new patch you can use Up + A to enable the EXTRA game mode from the title screen.


app-to-app request

1)OEM should listen to A2AVerificationRequest.
2)After receiving data from another app they should:

new wvConfig + setA2A()
generate url from wvCommunicator.getA2aReturnLocation() + "?config=" + wvConfig.getEncodedString()

@ssteveli looks like all your changes were addressed. I'm going to merge unless there's anything else


some question about dataset

When I reproduced the results, I encountered some problems:

What are the camera intrinsic?
Could you provide the mapping relationship between pixel gray value and category?

Much appreciated.

Hello.
This is Wonje Jang.

It is not possible to provide information on camera intrinsic
parameters.
However, we will provide the data used for calibration sooner or later so
that you can guess the intrinsic parameters.
Thanks for the good point.

Information about labels is newly uploaded to GitHub (
https://github.com/SeRM-dataset/dataset/datasetInfo.md).

Best Regards
Sincerely,
Wonje Jang
JANG WONJEComputational Intelligence Lab.School of Electrical &
Electronic Engineering,
Yonsei University, Korea
E-mail : @.*
Cell : +82 10-8630-8683
Office : +82 2-2123-7729
2022년 12월 27일 (화) 오후 8:13, grdiv @.***>님이 작성:

When I reproduced the results, I encountered a problem

What are the camera intrinsic?
Could you provide the mapping relationship between pixel gray value
and category?

Much appreciated.
—
Reply to this email directly, view it on GitHub
https://github.com/SeRM-dataset/dataset/issues/1, or unsubscribe
https://github.com/notifications/unsubscribe-auth/APJHRRESMO55JLAJGMBLUS3WPLFMXANCNFSM6AAAAAATKKYTVQ
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>


Obscure error messages

I came across some confusing error messages while working on https://github.com/AviKav/silicon.ex:

I got ** (ErlangError) Erlang error: :invalid_struct when I forgot to rename
#[derive(NifStruct)]
#[module = "Silicon.FormatOptions"]
struct FormatOptions {

to
#[derive(NifStruct)]
#[module = "Silicon.Options.Format"]
struct FormatOptions {

I've gotten
** (ErlangError) Erlang error: "Could not decode field :image_options on %FormatOptions{}"

for having the wrong value all the way in image_options.shadow_adder.background.
%FormatOptions{} was a red herring since I thought it was an Elixir struct's old name that was hanging around for some reason, when it actuality it was a Rust type.

I think these error messages should be specific of where or what the issue is.
As of current I'd need to provide the user with a validation function in order to give useful error information.
This is a third place, in addition to typespecs and Rust types, where I'd need to maintain type information.
Unless something like https://github.com/Qqwy/elixir-type_check is used.

Do you have concrete suggestions?

Erlang error: :invalid_struct should detail which rust struct it's having difficulty compiling.
a. And include why if there are multiple possible reasons.
Erlang error: "Could not decode field :image_options on %FormatOptions{}" should:
a. Explicitly say "rust struct" and not use Elixir map notation when talking about Rust structs.
b. Rather than stating the root field, state either the leaf field where term conversion is failing or the path to said leaf.

Sorry about that


Upgarde NOK from <IP_ADDRESS> to <IP_ADDRESS>-beta1

Describe the bug
There's errors after upgrade from <IP_ADDRESS> to <IP_ADDRESS>-beta1, using the 1-click upgrade v4.4.0
Upgrade environment (please complete the following information):

Version you started from: <IP_ADDRESS>
Version you upgrade to: <IP_ADDRESS>-beta1
Using the local archive

Displayed log
[INTERNAL] /var/www/html/upgrade/16122/classes/Link.php line 835 - TypeError: Argument 1 passed to LinkCore::searchRouteFromRouter() must be an instance of Symfony\Component\Routing\RouterInterface, null given, called in /var/www/html/upgrade/16122/classes/Link.php on line 815
#0 /var/www/html/upgrade/16122/classes/Link.php(815): LinkCore->searchRouteFromRouter(NULL, 'AdminPsThemeCus...')
#1 /var/www/html/upgrade/16122/modules/ps_themecusto/ps_themecusto.php(61): LinkCore->getAdminLink('AdminPsThemeCus...')
#2 [internal function]: ps_themecusto->__construct()
#3 /var/www/html/upgrade/16122/src/Core/Foundation/IoC/Container.php(130): ReflectionClass->newInstance()
#4 /var/www/html/upgrade/16122/src/Core/Foundation/IoC/Container.php(163): PrestaShop\PrestaShop\Core\Foundation\IoC\Container->makeInstanceFromClassName('ps_themecusto', Array)
#5 /var/www/html/upgrade/16122/src/Core/Foundation/IoC/Container.php(176): PrestaShop\PrestaShop\Core\Foundation\IoC\Container->doMake('ps_themecusto', Array)
#6 /var/www/html/upgrade/16122/src/Adapter/ServiceLocator.php(65): PrestaShop\PrestaShop\Core\Foundation\IoC\Container->make('ps_themecusto')
#7 /var/www/html/upgrade/16122/classes/module/Module.php(1134): PrestaShop\PrestaShop\Adapter\ServiceLocator::get('ps_themecusto')
#8 /var/www/html/upgrade/16122/classes/module/Module.php(1113): ModuleCore::coreLoadModule('ps_themecusto')
#9 /var/www/html/upgrade/16122/classes/module/Module.php(1872): ModuleCore::getInstanceByName('ps_themecusto')
#10 /var/www/html/upgrade/16122/classes/module/Module.php(1826): ModuleCore::checkModuleFromAddonsApi('ps_themecusto')
#11 /var/www/html/upgrade/16122/classes/module/Module.php(1721): ModuleCore::generateTrustedXml()
#12 /var/www/html/upgrade/16122/classes/module/Module.php(1379): ModuleCore::isModuleTrusted('blockcurrencies')
#13 /var/www/html/upgrade/16122/modules/autoupgrade/classes/TaskRunner/Upgrade/UpgradeModules.php(158): ModuleCore::getModulesOnDisk()
#14 /var/www/html/upgrade/16122/modules/autoupgrade/classes/TaskRunner/Upgrade/UpgradeModules.php(45): PrestaShop\Module\AutoUpgrade\TaskRunner\Upgrade\UpgradeModules->warmUp()
#15 /var/www/html/upgrade/16122/admin-dev/autoupgrade/ajax-upgradetab.php(52): PrestaShop\Module\AutoUpgrade\TaskRunner\Upgrade\UpgradeModules->run()
#16 {main}

Screenshots

Server (please complete the following information):

Web Server: Apache
PHP Version: 7.1
Module Version 4.4.0

cc @jolelievre
To be confirmed, but it seems this method does not exist anymore in 1.7.5.x branch. The actual beta version should prevent this error to occur.

@Quetzacoalt91 that's the thing I don't know how this method can bug since it does not exist any more.. so debugging it is even trickier ^^
more seriously where does it come from, this method was introduced for a few times in 1.7.5 development but it is not present in the beta build, where does the autoupgrade go fetch this beta version?

I'm sorry, but I cannot reproduce the issue when using the beta release provided by @jolelievre. You should double check the release you used, because the code written in your screenshot was removed from the 1.7.5.x branch.
Closing as "Cannot reproduce".


TrackHandle::get_info hanging when bot is disconnected from VC

Songbird version: next branch, commit 92314a1c9fb4
Rust version (rustc -V): rustc 1.81.0 (eeb90cda1 2024-09-04)
Serenity/Twilight version: Serenity v0.12.2
Description:
After manually disconnecting the bot from a voice channel and then running TrackHandle::get_info, the bot freezes until you get the bot to join the voice channel again.
Minimal reproduction bot: https://github.com/hrolfurgylfa/musicbot-rs/blob/adf6a7f4c1008382e89bc2f9642c4a9979c4c93f/src/main.rs
Steps to reproduce:

Run the join command.
Run the play command with any url.
Disconnect the bot from the voice channel.
Run the queue command, the bot doesn't respond.
Run the join command again, the bot now responds to the old queue command you ran previously and re-joins the channel.

There has been some discussion on Discord regarding this: https://discord.com/channels/381880193251409931/919310407569641492/1295879582809063505

For anyone else experiencing this, a workaround is to call songbird.remove when the bot gets disconnected from a voice channel.
Just create a simple disconnect handler:
pub struct TrackDisconnectNotifier {
    songbird: Arc<Songbird>,
    guild_id: GuildId,
}

impl TrackDisconnectNotifier {
    pub fn new(songbird: Arc<Songbird>, guild_id: GuildId) -> Self {
        Self { songbird, guild_id }
    }
}

#[async_trait]
impl VoiceEventHandler for TrackDisconnectNotifier {
    async fn act(&self, _ctx: &EventContext<'_>) -> Option<Event> {
        info!("Disconnected from voice channel, removing queue for guild {}", self.guild_id);
        self.songbird
            .remove(self.guild_id)
            .await
            .expect("Failed to leave voice channel on disconnect.");

        None
    }
}

And then add this event to every track when /play is run:
handler.add_global_event(
    CoreEvent::DriverDisconnect.into(),
    TrackDisconnectNotifier::new(manager.clone(), guild_id),
);


RESEARCH: boot from USB drive

Enhancement:  This is just to doc my investigation into how to be able to boot RaspiBlitz from the USB drive. Ideally to choose to boot from either SD-card or HDD via a script or boot loader at startup time. There are various reasons why you might want to do this.  Have two RaspiBlitz versions installed for testing (one working backup)... have one full version of Raspbian installed for use with an HDMI monitor as full Linux computer... etc.
I plugged my 500GB HDD into another Linux machine and used Gparted to shrink the BLOCKCHAIN partition sda1 to 341GB and created a boot partition as sda2, a 120GB partition for Raspbian as  sda3, and a 2GB swap partition as sda4 just if it might be needed later.
I restarted and Raspiblitz is still working and syncing so the blockchain DB was not corrupted.
Now I need to figure out how to rsync the SD card data over to the 120GB partition and make it active/bootable.
$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    0 465.8G  0 disk
├─sda1        8:1    0 341.2G  0 part /mnt/hdd
├─sda2        8:2    0  1000M  0 part /mnt/target/boot
├─sda3        8:3    0 121.7G  0 part /mnt/target
└─sda4        8:4    0     2G  0 part
mmcblk0     179:0    0  29.8G  0 disk
├─mmcblk0p1 179:1    0  43.8M  0 part /boot
└─mmcblk0p2 179:2    0  29.8G  0 part /

I'm running a RaspiBolt on a Pi3 and got rid of the SD card but instead use an external USB stick to boot from ((1) external HDD with blockchain and (2) USB mass storage with boot partition).
This will only work on the Pi 3 since the boot code is stored in the BCM2837 device only, so the Pi1, Pi2, and Pi Zero will all require SD cards. However, you can boot a Pi1 and Pi2 using a special SD card that only contains the single file bootcode.bin.
In order to achieve booting from a mass storage device, the USB boot bit needs to be set in the OTP (one-time programmmble) memory. This is done by booting from an SD card with a config option to enable USB boot mode. In my case this wasn't enough: The timing during the boot sequence it crucial. I needed to increase the timeout in order to give the usb stick enough time to "get ready".
Those two pages should contain all the information needed:
https://www.raspberrypi.org/documentation/hardware/raspberrypi/bootmodes/msd.md
https://www.raspberrypi.org/blog/pi-3-booting-part-i-usb-mass-storage-boot/


setup-ruby fails on macos-latest

A simple workflow like:
on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

name: Test
jobs:
  test:
    name: Test
    runs-on: macos-latest
    steps:
      - name: Checkout
        uses: actions/checkout@master
      - name: Setup environment
        uses: actions/setup-ruby@v1
        with:
          ruby-version: '2.7.0'

"Succeeds" but when you look at the logs:
 Setup environment
1s
(node:1184) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
Run actions/setup-ruby@v1
(node:1184) UnhandledPromiseRejectionWarning: Error: The process 'sudo' failed with exit code 1
    at ExecState._setResult (/Users/runner/runners/2.165.2/work/_actions/actions/setup-ruby/v1/node_modules/@actions/exec/lib/toolrunner.js:547:25)
    at ExecState.CheckComplete (/Users/runner/runners/2.165.2/work/_actions/actions/setup-ruby/v1/node_modules/@actions/exec/lib/toolrunner.js:530:18)
    at ChildProcess.<anonymous> (/Users/runner/runners/2.165.2/work/_actions/actions/setup-ruby/v1/node_modules/@actions/exec/lib/toolrunner.js:430:27)
    at ChildProcess.emit (events.js:210:5)
sudo ln -sf /Users/runner/hostedtoolcache/Ruby/2.7.0/x64/bin/ruby /usr/bin/ruby
ln: /usr/bin/ruby: Operation not permitted
    at maybeClose (internal/child_process.js:1021:16)
    at Socket.<anonymous> (internal/child_process.js:430:11)
    at Socket.emit (events.js:210:5)
    at Pipe.<anonymous> (net.js:659:12)
(node:1184) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:1184) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Looks like the v1 tag is too old and doesn't contain https://github.com/actions/setup-ruby/pull/29 which fixes that.
@bryanmacfarlane So probably you need to update v1 to v1.1.1.
BTW, https://github.com/ruby/setup-ruby is better if you need an exact version like 2.7.0, this action only supports 2.7 with unspecified patch version.

 Thanks @eregon! Fixed!


[BUG] reedsolo Compiler crash in AnalyseExpressionsTransform (regression in 3.0.4)

Describe the bug
When testing the impact of Cython upgrade from 3.0.2 to 3.0.4 in Fedora, I discovered reedsolo 1.7.0 failed to build.
I was able to reproduce this outside of our RPM environment, on x86_64.
The problem does not happen with Cython 3.0.3, only 3.0.4.
Code to reproduce the behaviour:
$ git clone git@github.com:tomerfiliba-org/reedsolomon.git
...
$ cd reedsolomon/
[reedsolomon (master)]$ git switch -d v1.7.0
HEAD is now at 9d27c91 wording
[reedsolomon ((v1.7.0))]$ python3.12 -m venv __venv__
[reedsolomon ((v1.7.0))]$ . __venv__/bin/activate
(__venv__) [reedsolomon ((v1.7.0))]$ pip install setuptools Cython==3.0.4
...
Successfully installed Cython-3.0.4 setuptools-68.2.2
(__venv__) [reedsolomon ((v1.7.0))]$ python setup.py --cythonize build
Cython is installed, building creedsolo module
[1/1] Cythonizing creedsolo.pyx

Error compiling Cython file:
------------------------------------------------------------
...

    # For each possible value in the galois field 2^8, we will pre-compute the logarithm and anti-logarithm (exponential) of this value
    # To do that, we generate the Galois Field F(2^p) by building a list starting with the element 0 followed by the (p-1) successive powers of the generator a : 1, a, a^1, a^2, ..., a^(p-1).
    x = 1
    for i in xrange(field_charac): # we could skip index 255 which is equal to index 0 because of modulo: g^255==g^0
        gf_exp[i] = x # compute anti-log for this value and store it in a table
              ^
------------------------------------------------------------

creedsolo.pyx:202:14: Compiler crash in AnalyseExpressionsTransform

ModuleNode.body = StatListNode(creedsolo.pyx:86:0)
StatListNode.stats[13] = StatListNode(creedsolo.pyx:181:0)
StatListNode.stats[0] = DefNode(creedsolo.pyx:181:0,
    doc = "Precompute the logarithm and anti-log tables for faster computation later, using the provided primitive polynomial.\n    These tables are used for multiplication/division since addition/substraction are simple XOR operations inside GF of characteristic 2.\n    The basic idea is quite simple: since b**(log_b(x), log_b(y)) == x * y given any number b (the base or generator of the logarithm), then we can use any number b to precompute logarithm and anti-log (exponentiation) tables to use for multiplying two numbers x and y.\n    That's why when we use a different base/generator number, the log and anti-log tables are drastically different, but the resulting computations are the same given any such tables.\n    For more infos, see https://en.wikipedia.org/wiki/Finite_field_arithmetic#Implementation_tricks\n    ",
    is_cyfunction = True,
    modifiers = [...]/0,
    name = 'init_tables',
    np_args_idx = [...]/0,
    outer_attrs = [...]/2,
    py_wrapper_required = True,
    reqd_kw_flags_cname = '0',
    used = True)
File 'Nodes.py', line 397, in analyse_expressions: StatListNode(creedsolo.pyx:182:4,
    is_terminator = True)
File 'Nodes.py', line 7556, in analyse_expressions: ForInStatNode(creedsolo.pyx:201:4)
File 'Nodes.py', line 397, in analyse_expressions: StatListNode(creedsolo.pyx:202:8)
File 'Nodes.py', line 6026, in analyse_expressions: SingleAssignmentNode(creedsolo.pyx:202:20)
File 'Nodes.py', line 6164, in analyse_types: SingleAssignmentNode(creedsolo.pyx:202:20)
File 'ExprNodes.py', line 4085, in analyse_target_types: IndexNode(creedsolo.pyx:202:14,
    is_subscript = True,
    result_is_used = True,
    use_managed_ref = True)
File 'ExprNodes.py', line 4123, in analyse_base_and_index_types: IndexNode(creedsolo.pyx:202:14,
    is_subscript = True,
    result_is_used = True,
    use_managed_ref = True)
File 'ExprNodes.py', line 4349, in analyse_as_buffer_operation: IndexNode(creedsolo.pyx:202:14,
    is_subscript = True,
    result_is_used = True,
    use_managed_ref = True)
File 'ExprNodes.py', line 4968, in analyse_types: MemoryViewIndexNode(creedsolo.pyx:202:14,
    is_memview_index = True,
    memslice_index = True,
    result_is_used = True,
    use_managed_ref = True,
    writable_needed = True)

Compiler crash traceback from this point on:
  File ".../reedsolomon/__venv__/lib64/python3.12/site-packages/Cython/Compiler/ExprNodes.py", line 4968, in analyse_types
    performance_hint(index.pos, "Index should be typed for more efficient access")
TypeError: performance_hint() missing 1 required positional argument: 'env'
Traceback (most recent call last):
  File ".../reedsolomon/setup.py", line 32, in <module>
    extensions = cythonize([ Extension('creedsolo', ['creedsolo.pyx']) ], force=True)  # this may fail hard if Cython is installed but there is no C compiler for current Python version, and we have no way to know. Alternatively, we could supply exclude_failures=True , but then for those who really want the cythonized compiled extension, it would be much harder to debug
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File ".../reedsolomon/__venv__/lib64/python3.12/site-packages/Cython/Build/Dependencies.py", line 1154, in cythonize
    cythonize_one(*args)
  File ".../reedsolomon/__venv__/lib64/python3.12/site-packages/Cython/Build/Dependencies.py", line 1321, in cythonize_one
    raise CompileError(None, pyx_file)
Cython.Compiler.Errors.CompileError: creedsolo.pyx

As a thing to paste:
git clone git@github.com:tomerfiliba-org/reedsolomon.git
cd reedsolomon/
git switch -d v1.7.0
python3.12 -m venv __venv__
. __venv__/bin/activate
pip install setuptools Cython==3.0.4
python setup.py --cythonize build

Expected behaviour
With 3.0.2 and 3.0.3 this compiles fine.
OS
Linux
Python version
3.12.0
Cython version
3.0.4
Additional context
No response

Looks like a dupe of https://github.com/cython/cython/issues/5771, sorry for the noise.


The behavior is changed by console.log(“h”);.

Component
Forge
Have you ensured that all of these are up to date?

[X] Foundry
[X] Foundryup

What version of Foundry are you on?
forge 0.2.0 (dabacec 2024-12-14T00:22:42.684305000Z)
What command(s) is the bug in?
forge test --match-test test_processCommand --ffi -vvv
Operating System
macOS (Apple Silicon)
Describe the bug
Currently, I am testing a verifier generated by Circom in the following repository:
https://github.com/zkemail/jwt-tx-builder/tree/ac2600cf6a1f3848575893d536eb069c9a62bf24
Typically, the Groth16Verifier.sol generated by Circom has the verifyProof function that takes _pubSignals as a fixed-length uint array.
I have confirmed that all calls to this function work correctly.
However, we want to make this fixed-length parameter variable-length to make the verifier call more flexible. In other words, we want to call this function with a variable-length argument and convert the argument back to a fixed length within the function.
The implementation looks like this:
at packages/contracts/src/utils/JwtAuthGroth16Verifier.sol

function verifyProof(uint[2] calldata _pA, uint[2][2] calldata _pB, uint[2] calldata _pC, uint[] calldata _receivedPubSignals) public view returns (bool) {
    console.log("h");
    // create fixed pubsignals
    uint[40] memory _pubSignals;
    for (uint i = 0; i < 40; i++) {
        _pubSignals[i] = _receivedPubSignals[i];
    }
}

In this repository, you can confirm that verifyProof works correctly with the generated proof and public signals by running
forge test --match-test test_processCommand --ffi -vvv.
However, the problem is related to the console.log before defining _pubSignals. If this console.log is commented out, the test fails.
I tried placing console.log in various parts of the process, and what I found is that the function works correctly only when the console.log is placed before defining _pubSignals.
Otherwise, the function returns false.
I saved the logs of successful test on gist, which you can check here:
https://gist.github.com/wshino/8b01217524b2286aca0afde75d6d8a18
I don't understand why a console.log, which shouldn't affect the logic, causes this behavior.
I am unsure if this is a Foundry issue, but I would like to understand why this console.log produces such a result.

Hi @wshino there's no packages/contracts/src/utils/JwtAuthGroth16Verifier.sol in https://github.com/zkemail/jwt-tx-builder/tree/b4eb4c2829c20d6b64aa30a34dfe1bc9e6677f54/packages/contracts/src/utils so hard to say what's the reason.

@grandizzy Thank you for your mention, and sorry I've updated the my question.
You can see packages/contracts/src/utils/JwtAuthGroth16Verifier.sol in the commit hash ac2600cf6a1f3848575893d536eb069c9a62bf24
https://github.com/zkemail/jwt-tx-builder/blob/ac2600cf6a1f3848575893d536eb069c9a62bf24/packages/contracts/src/utils/JwtAuthGroth16Verifier.sol

@wshino this is related to the fact you're console logging a string (which uses memory) and then your function assumes _pubSignals is written at the wrong address.  As a test, change console.log("h"); to console.log(true) and you will get test failing.
Also, replacing with this pass:
        // string memory h1 = "h";
        string memory h = "h";
        console.log(h);

with this (2 strings in memory) fails:
        string memory h1 = "h";
        string memory h = "h";
        console.log(h);

I think test passing is only an effect of you not checking the proper memory slot for verifying proof, and you need to remove that line to get the real check. Hope this explains, going to close this for now, pls reopen if not agree. Thank you


Swift Array Migration

I have added new array attribute to the RLMObject and
public class Student: RLMObject {
dynamic var id = 0
dynamic var name = ""
dynamic var resultList = RLMArray(objectClassName:Result.className())
}
public class Result: RLMObject {
}
ERROR Log:
Migration is required for object type 'Student' due to the following errors: - Property 'resultList' has been added to latest object model.
TRY Failed:
let configuration:RLMRealmConfiguration = RLMRealmConfiguration.defaultConfiguration()
...
migration.enumerateObjects(Student.className()) { oldObject, newObject in
newObject!["resultList"] = RLMArray(objectClassName: Result.className())
}

That exception is thrown because you need to update the schema versions of the Realms using this model.
Also, the resultList property will be initialized to an empty list, so you don't need the newObject!["resultList"] = RLMArray(objectClassName: Result.className()) code in your migration.


Added a drop zone area to upload additional resources for items

Coverage remained the same at 92.41% when pulling 0d29128f93dfb8508a9154f1385eaae20a164c8b on additional-resources-dropzone into 57d9185cc1a4cd2487d182d384915d2efa3cef8a on master.

Coverage increased (+1.36%) to 93.76% when pulling 61b0cd7b18efe4c6adc66138044213e9c9b3aeea on additional-resources-dropzone into 57d9185cc1a4cd2487d182d384915d2efa3cef8a on master.


docs: Improve the README

Add in details to the README.
Fixes #111.
Signed-off-by: James O. D. Hunt<EMAIL_ADDRESS>

lgtm

Hi @klynnrif - ptal.

Thanks @klynnrif - branch updated.

CI is failing as https://github.com/kata-containers/tests/pull/181 isn't merged yet.

Restarted travis -- will merge if it passes.


UI issues :

Wallet heading and number is cutting from top.
Tested in android device one plus 9R

Subtext of Vault screen is coming out of the box.

Wallet screen subtext is coming out of the box.
Happening on small devices.Tested on iphone 7.

Why there are 2 note section on "Add Signers" screen of vault?

Vault-> Update scheme: Note and "Required keys" CTAs are overlapping.

Manage signer-> click on any signer-> settings.
Check the icon colour of the signer.

Subtext is cutting.

Recovery Key: Why there is note and additional content on this screen?

Don’t think this is as per design. Also not Recovery Phrase but Recovery Key.

"Wallet heading and number is cutting from top."
I'm not able to reproduce this UI issue. Tested it on multiple screen sizes of android.

Verified this issue on keeper app v 1.2.0(319)


Change on screen notifications from boxes to listed in a bell icon?

📑 I have found these related issues/pull requests
When updating/restarting a server with 500+ connections the pop up notifications block the settings section at the top restricting you from being able to administer the server when necessary.pop-up
⚠ Please verify that this feature request has NOT been suggested before.

[X] I checked and didn't find similar feature request

🏷 Feature Request Type
Dashboard
🔖 Feature description
Change the pop-up notification boxes to a Bell Icon at the top of the page
✔ Solution
when the bell icon is clicked it can give a drop-down of the notifications. This will clean up the dashboard from excessive notifications upon restart
❓ Alternatives
Stack the notifications and reduce the display time to 1-2 seconds as to not fill the whole side of the screen up
📝 Additional Context
Nothing that i can think of

@ChrisKendallVA
did you mean to submit this issue on a fork of the project?
I can't move this to louislam/uptime-kuma as I am not an owner there, but please open issues against the correct repo instead.
Closing as this is the wrong repository


Add an entry for: Intermittent audio with Google Meet

Platform:
https://bugzilla.mozilla.org/show_bug.cgi?id=1670633
https://bugzilla.mozilla.org/show_bug.cgi?id=1666866
https://bugzilla.mozilla.org/show_bug.cgi?id=1653112
Web compat reports:
https://github.com/webcompat/web-bugs/issues/107298
https://github.com/webcompat/web-bugs/issues/107054
https://github.com/webcompat/web-bugs/issues/107098

This is right on the boundary between a perf issue and a compat issue. Functionally it seems like there's a perf issue that makes the site unusable in some cases. I'm not quite sure how much we want to cover such things in the knowledge base.


Cannot click and drag anything

Hi,  I recently opened an issue here atom/tabs#148 , claiming I couldn't drag tabs around to rearrange them, but realized it's a more general problem.  I can't left-click and drag ANYTHING in Atom.  I can't even left mouse down and drag to highlight text.  It's as if the mouse up event is firing when it shouldn't.
I'm using a fresh install of
Atom 0.204.0
on Linux Mint 17 Qiana (based on Ubuntu 14.04, Trusty Tahr)
Thanks!

I can't even highlight text in the dev console, so I had to take a screenshot of the error:

I can't reproduce this with Atom 0.204.0 on OS X 10.10.3 – can you reproduce this in safe mode? (atom --safe)

A quick test in safe mode, I don't see the memory leak, yet.  But I still can't highlight text or drag tabs.  Could it be related to other things installed on my machine, i.e. my version of Chrome?

What other information can I gather for you?  Is there a test suite I can run?

Are you running your OS in a VM by any chance?

Yes, I am - VBox

Thanks! I think this is a duplicate of https://github.com/atom/atom/issues/6243, so I'm going to close this in favor of that issue. This should be fixed when Atom upgrades to a version of Electron built on Chromium 43.

Thanks!  Sorry for the noise!  I looked and couldn't find that issue, otherwise I wouldn't have opened this one.

I cannot move my tabs around, but i am working with updated Atom and with default theme, on my Windows without any Virtual Machines. Everything was working until recently (like 2 weeks ago, i tried to solve it by myself)


[ADMIN] Lindalu fhl scrub final

Docs Build status updates of commit 061d698:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

:x:Error

Details

[Error] Cannot sync git repo to specified state. Please make sure the pull request is mergeable. Details: Git merge results in conflict, repository remote url: https://github.com/MicrosoftDocs/VBA-Docs, working directory: W:\i0oj-s, target branch: HEAD, target branch commit: 0f5655819ae8aabb0b75480e472b82e5d0c3decc, source commit: 061d698b2aed018b950b5c694d67fefacd5f0742.

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


egrep doesn't recognize \d and \s metacharacters

I'm using bash under ubuntu 16.04 and the corresponding examples (https://github.com/seankross/the-unix-workbench/blob/master/04-Working-with-Unix.Rmd#character-sets) work only with ack.

What's fun, when I was deleting egrep "\d" from bash script in vim using
:% s/\d/[0-9]/g

vim recognized /d as a metacharacter and did not what I wanted.

$ grep -P "\d" small.txt
This works fine.


More tests

Now that the ginkgo / gomega dependencies have been merged - the tests for find can be turned on.
I have also added a travis badge to show that the build is passing!

This merely activates tests that are already there, merging right away since it's green.


HLSL: Make --flatten-ubo work correctly

Resolves #1827.
Tests are taken from existing ones for GLSL.
One thing I'm worrying about is a redundant local variable which exists in reference/shaders-hlsl/flatten/struct.rowmajor.flatten.vert. This is not easy to eliminate because the first local variable is emitted from AccessChain instruction and the second one is from Load instruction.

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

I changed the code so that it sees backend.can_declare_struct_inline, and calls emit_op instead of statement. Sorry if I have not understood what you are pointing out.


Add feature apply k8s jobs after creating cluster

Add feature apply k8s jobs after creating cluster

Add function run k8s jobs while creating a new cluster
Fix API get machines and get clusters


feature: added go fuzz sample

This is a weather api integrated with keploy and has go fuzzing added to it.
This is PR closes: https://github.com/keploy/keploy/issues/413
keploy records:

postman get results:

git bash:

@PranshuSrivastava please review this PR


Gold Gradient needs to be added for the header section

add gradient for aesthetic look

#89 gradient has been changed in the hero section for the heading


F* does not build with sedlex 2.4

Yesterday, sedlex 2.4 was released on the opam package repository. With that new version of sedlex, I tried to build F* master, but I failed. When doing make, here is what I got:
make -C src/ocaml-output
make[1]: Entering directory '/home/everest/FStar/src/ocaml-output'
...
[OCAMLBUILD]
cd ../../ && ocamlbuild -cflag -g -I src/ocaml-output -I src/basic/ml -I src/parser/ml -I src/fstar/ml -I src/extraction/ml -I src/prettyprint/ml -I src/tactics/ml -I src/tests/ml -I ulib/ml -j 4 -build-dir src/ocaml-output/_build -use-ocamlfind main.native FStar_Syntax_Syntax.inferred.mli
+ ocamlfind ocamlc -c -g -thread -package stdint -package compiler-libs -package compiler-libs.common -package menhirLib -package dynlink -package pprint -package sedlex -package yojson -package ppxlib -package process -package sedlex.ppx -package batteries -package zarith -package ppx_deriving.std -package ppx_deriving_yojson -I src/parser/ml -I ulib/ml -I src/ocaml-output -I src/tests/ml -I src/basic/ml -I src/tactics/ml -I src/extraction/ml -I src/fstar/ml -I src/prettyprint/ml -o src/parser/ml/FStar_Parser_LexFStar.cmo src/parser/ml/FStar_Parser_LexFStar.ml
File "_none_", line 1:
Error: Unbound value Sedlexing.__private__next_int
Command exited with code 2.
Compilation unsuccessful after building 113 targets (112 cached) in 00:00:01.
make[1]: *** [Makefile:119: _build/src/fstar/ml/main.native] Error 10
make[1]: Leaving directory '/home/everest/FStar/src/ocaml-output'
make: *** [Makefile:6: all] Error 2

Due to that failure, the people who released sedlex 2.4 had to put a sedlex < 2.4 upper bound on the dependencies for the fstar opam package (ocaml/opam-repository@915bcf6f4f55f6a7f2d94c965472d1c3666c07e6); and I had to pin sedlex to 2.3 on Project Everest for ./everest opam (project-everest/everest@74400736da5a36223fb414a699f91bfc283d0caa).

Hi! As fas as I can tell, sedlex 2.4 has a clean mli interface. This issue is most likely due to a competing mli interface being declared somewhere in the project build tree that is throwing the compiler off.

Just debugged a similar issue here: https://github.com/ocaml/opam-repository/pull/19561#discussion_r744155097 Here's the final comment:

This issue is due to an embedded mli of the module shipped with the projet that prevents it from linking with the new API: https://github.com/frenetic-lang/frenetic/blob/master/src/lib/netkat/Lexer.cppo.ml#L13
I believe that the missing functionalities for tracking source locations were added into Sedlex a while ago. I'd suggest to either update to a recent version or rename the custom module so that the names do not clash.


Handle absent properly

I'm going to add the ruby file ignores to the .gitignore, but close this pull request.  I don't see why it would have to be set this to absent.  I referenced other modules as well and they do not have this as a standard practice.

The issue is that you accept package_ensure which allows someone to set the specific version of the package to install. It also, allows you to declare it absent. If it's absent then /etc/logwatch/ may or may not exist, depending upon the prior state of the system.
You're probably asking, why someone would use the module if they're just going to declare it absent, it's mostly because we include this module as part of our base system profile. However, there are some systems in which not having logwatch configured is beneficial, at which point, we can flag in hiera that logwatch should be absent.
The problem arises that if that is done then we consistently get a puppet error that puppet is trying to manage the logwatch.conf file that doesn't exist because the path doesn't exist!


Unable to start plugin

Thanks for the help previously. I have updated Node to latest version, however I have struck a new issue
Apr 26 15:55:45 raspberrypi homebridge[701]: [4/26/2017, 3:55:45 PM] Warning: skipping plugin found at '/usr/lib/node_modules/homebridge-broadlink-rm' since we already loaded the same plugin from '/usr/local/lib/node_modules/homebridge-broadlink-rm'.
Apr 26 15:55:46 raspberrypi homebridge[701]: [4/26/2017, 3:55:46 PM] ====================
Apr 26 15:55:46 raspberrypi homebridge[701]: [4/26/2017, 3:55:46 PM] ERROR LOADING PLUGIN homebridge-broadlink-rm:
Apr 26 15:55:46 raspberrypi homebridge[701]: [4/26/2017, 3:55:46 PM] Error: EACCES: permission denied, mkdir '/.node-persist'
Apr 26 15:55:46 raspberrypi homebridge[701]: at Object.fs.mkdirSync (fs.js:895:18)
Apr 26 15:55:46 raspberrypi homebridge[701]: at sync (/usr/local/lib/node_modules/homebridge-broadlink-rm/node_modules/mkdirp/index.js:71:13)
Apr 26 15:55:46 raspberrypi homebridge[701]: at Function.sync (/usr/local/lib/node_modules/homebridge-broadlink-rm/node_modules/mkdirp/index.js:77:24)
Apr 26 15:55:46 raspberrypi homebridge[701]: at LocalStorage.parseStorageDirSync (/usr/local/lib/node_modules/homebridge-broadlink-rm/node_modules/node-persist/src/local-storage.js:600:20)
Apr 26 15:55:46 raspberrypi homebridge[701]: at LocalStorage.initSync (/usr/local/lib/node_modules/homebridge-broadlink-rm/node_modules/node-persist/src/local-storage.js:141:14)
Apr 26 15:55:46 raspberrypi homebridge[701]: at Object.nodePersist.initSync (/usr/local/lib/node_modules/homebridge-broadlink-rm/node_modules/node-persist/src/node-persist.js:37:32)
Apr 26 15:55:46 raspberrypi homebridge[701]: at Object. (/usr/local/lib/node_modules/homebridge-broadlink-rm/helpers/persistentState.js:2:13)
Apr 26 15:55:46 raspberrypi homebridge[701]: at Module._compile (module.js:571:32)
Apr 26 15:55:46 raspberrypi homebridge[701]: at Object.Module._extensions..js (module.js:580:10)
Apr 26 15:55:46 raspberrypi homebridge[701]: at Module.load (module.js:488:32)
Apr 26 15:55:46 raspberrypi homebridge[701]: [4/26/2017, 3:55:46 PM] ====================
Apr 26 15:55:46 raspberrypi homebridge[701]: [4/26/2017, 3:55:46 PM] Loaded plugin: homebridge-hs100

Warning: skipping plugin found at '/usr/lib/node_modules/homebridge-broadlink-rm' since we already loaded the same plugin from '/usr/local/lib/node_modules/homebridge-broadlink-rm'.

The first error looks like you've installed it in multiple places

Error: EACCES: permission denied, mkdir '/.node-persist'
Run sudo chmod -R 777 /usr/local/lib/node_modules/homebridge-broadlink-rm then try again.

Still, the same on the permission denied after running sudo chmod....
Apr 26 16:21:13 raspberrypi homebridge[703]: [4/26/2017, 4:21:13 PM] ERROR LOADING PLUGIN homebridge-broadlink-rm:
Apr 26 16:21:13 raspberrypi homebridge[703]: [4/26/2017, 4:21:13 PM] Error: EACCES: permission denied, mkdir '/.node-persist'
Apr 26 16:21:13 raspberrypi homebridge[703]: at Object.fs.mkdirSync (fs.js:895:18)
Apr 26 16:21:13 raspberrypi homebridge[703]: at sync (/usr/local/lib/node_modules/homebridge-broadlink-rm/node_modules/mkdirp/index.js:71:13)
Apr 26 16:21:13 raspberrypi homebridge[703]: at Function.sync (/usr/local/lib/node_modules/homebridge-broadlink-rm/node_modules/mkdirp/index.js:77:24)
Apr 26 16:21:13 raspberrypi homebridge[703]: at LocalStorage.parseStorageDirSync (/usr/local/lib/node_modules/homebridge-broadlink-rm/node_modules/node-persist/src/local-storage.js:600:20)
Apr 26 16:21:13 raspberrypi homebridge[703]: at LocalStorage.initSync (/usr/local/lib/node_modules/homebridge-broadlink-rm/node_modules/node-persist/src/local-storage.js:141:14)
Apr 26 16:21:13 raspberrypi homebridge[703]: at Object.nodePersist.initSync (/usr/local/lib/node_modules/homebridge-broadlink-rm/node_modules/node-persist/src/node-persist.js:37:32)
Apr 26 16:21:13 raspberrypi homebridge[703]: at Object. (/usr/local/lib/node_modules/homebridge-broadlink-rm/helpers/persistentState.js:2:13)
Apr 26 16:21:13 raspberrypi homebridge[703]: at Module._compile (module.js:571:32)
Apr 26 16:21:13 raspberrypi homebridge[703]: at Object.Module._extensions..js (module.js:580:10)
Apr 26 16:21:13 raspberrypi homebridge[703]: at Module.load (module.js:488:32)

Try:
sudo mkdir /usr/local/lib/node_modules/homebridge-broadlink-rm/.node-persist
sudo chmod -R 777 /usr/local/lib/node_modules/homebridge-broadlink-rm/.node-persist

Ok so it seems we have some success.... It is finding the Broadlink device but still getting similar errors on startup
Apr 26 18:55:19 raspberrypi homebridge[707]: [4/26/2017, 6:55:19 PM] Warning: skipping plugin found at '/usr/lib/node_modules/homebridge-broadlink-rm' since we already loaded the same plugin from '/usr/local/lib/node_modules/homebridge-broadlink-rm'.
Apr 26 18:55:20 raspberrypi homebridge[707]: [4/26/2017, 6:55:20 PM] ====================
Apr 26 18:55:20 raspberrypi homebridge[707]: [4/26/2017, 6:55:20 PM] ERROR LOADING PLUGIN homebridge-broadlink-rm:
Apr 26 18:55:20 raspberrypi homebridge[707]: [4/26/2017, 6:55:20 PM] Error: EACCES: permission denied, mkdir '/.node-persist'
Apr 26 18:55:20 raspberrypi homebridge[707]: at Object.fs.mkdirSync (fs.js:895:18)
Apr 26 18:55:20 raspberrypi homebridge[707]: at sync (/usr/local/lib/node_modules/homebridge-broadlink-rm/node_modules/mkdirp/index.js:71:13)
Apr 26 18:55:20 raspberrypi homebridge[707]: at Function.sync (/usr/local/lib/node_modules/homebridge-broadlink-rm/node_modules/mkdirp/index.js:77:24)
Apr 26 18:55:20 raspberrypi homebridge[707]: at LocalStorage.parseStorageDirSync (/usr/local/lib/node_modules/homebridge-broadlink-rm/node_modules/node-persist/src/local-storage.js:600:20)
Apr 26 18:55:20 raspberrypi homebridge[707]: at LocalStorage.initSync (/usr/local/lib/node_modules/homebridge-broadlink-rm/node_modules/node-persist/src/local-storage.js:141:14)
Apr 26 18:55:20 raspberrypi homebridge[707]: at Object.nodePersist.initSync (/usr/local/lib/node_modules/homebridge-broadlink-rm/node_modules/node-persist/src/node-persist.js:37:32)
Apr 26 18:55:20 raspberrypi homebridge[707]: at Object. (/usr/local/lib/node_modules/homebridge-broadlink-rm/helpers/persistentState.js:2:13)
Apr 26 18:55:20 raspberrypi homebridge[707]: at Module._compile (module.js:571:32)
Apr 26 18:55:20 raspberrypi homebridge[707]: at Object.Module._extensions..js (module.js:580:10)
Apr 26 18:55:20 raspberrypi homebridge[707]: at Module.load (module.js:488:32)
Apr 26 18:55:20 raspberrypi homebridge[707]: [4/26/2017, 6:55:20 PM] ====================
Apr 26 18:55:20 raspberrypi homebridge[707]: [4/26/2017, 6:55:20 PM] Loaded plugin: homebridge-hs100
Apr 26 18:55:20 raspberrypi homebridge[707]: [4/26/2017, 6:55:20 PM] Registering platform 'homebridge-hs100.Hs100'
Apr 26 18:55:20 raspberrypi homebridge[707]: [4/26/2017, 6:55:20 PM] ---
Apr 26 18:55:20 raspberrypi homebridge[707]: [4/26/2017, 6:55:20 PM] Loaded plugin: homebridge-server
Apr 26 18:55:20 raspberrypi homebridge[707]: [4/26/2017, 6:55:20 PM] Registering platform 'homebridge-server.Server'
Apr 26 18:55:20 raspberrypi homebridge[707]: [4/26/2017, 6:55:20 PM] ---
Apr 26 18:55:20 raspberrypi homebridge[707]: [4/26/2017, 6:55:20 PM] Loaded config.json with 0 accessories and 2 platforms.
Apr 26 18:55:20 raspberrypi homebridge[707]: [4/26/2017, 6:55:20 PM] ---
Apr 26 18:55:20 raspberrypi homebridge[707]: [4/26/2017, 6:55:20 PM] Loading 2 platforms...
Apr 26 18:55:20 raspberrypi homebridge[707]: [4/26/2017, 6:55:20 PM] Initializing Hs100 platform...
Apr 26 18:55:20 raspberrypi homebridge[707]: [4/26/2017, 6:55:20 PM] [Homebridge Server] Initializing Server platform...
Apr 26 18:55:20 raspberrypi homebridge[707]: [4/26/2017, 6:55:20 PM] Loading 0 accessories...
Apr 26 18:55:20 raspberrypi homebridge[707]: Scan this code with your HomeKit App on your iOS device to pair with Homebridge:
Apr 26 18:55:20 raspberrypi homebridge[707]: â”Œâ”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”
Apr 26 18:55:20 raspberrypi homebridge[707]: â”‚ 031-45-154 â”‚
Apr 26 18:55:20 raspberrypi homebridge[707]: â””â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”˜
Apr 26 18:55:20 raspberrypi homebridge[707]: [4/26/2017, 6:55:20 PM] [Homebridge Server] is listening on: http://<IP_ADDRESS>:8765
Apr 26 18:55:20 raspberrypi homebridge[707]: [4/26/2017, 6:55:20 PM] Homebridge is running on port 51826.
Apr 26 18:55:20 raspberrypi homebridge[707]: Discovered Broadlink RM device at <IP_ADDRESS> (b4:43:0d:fc:1d:75)

You ran those next batch of commands?
As a quick fix you could add "persistState": false to the homebridge config

Yes, that output was after running the 2 commands you suggested.
Where would I add "persistState": false ??

I'm experiencing the same issue... Please help!

I think there may be a problem with my install...
When I run "sudo npm install -g homebridge-broadlink-rm", it installs it in to "/usr/local/lib"
pi@raspberrypi:~ $ sudo npm install -g homebridge-broadlink-rm
/usr/local/lib
└─┬<EMAIL_ADDRESS>  ├─┬<EMAIL_ADDRESS>(git+https://github.com/lprhodes/broadlinkjs.git#4a90e87230c024cde83f506ad12d606d41ac0d58)
  │ └──<EMAIL_ADDRESS>  └─┬<EMAIL_ADDRESS>    ├─┬<EMAIL_ADDRESS>    │ └──<EMAIL_ADDRESS>    └──<EMAIL_ADDRESS>
But when it tries to run, it tries to do it from "/usr/lib"
Apr 27 06:13:06 raspberrypi homebridge[705]: [4/27/2017, 6:13:06 AM] ====================
Apr 27 06:13:06 raspberrypi homebridge[705]: [4/27/2017, 6:13:06 AM] ERROR LOADING PLUGIN homebridge-broadlink-rm:
Apr 27 06:13:06 raspberrypi homebridge[705]: [4/27/2017, 6:13:06 AM] Error: EACCES: permission denied, mkdir '/.node-persist'
Apr 27 06:13:06 raspberrypi homebridge[705]: at Object.fs.mkdirSync (fs.js:895:18)
Apr 27 06:13:06 raspberrypi homebridge[705]: at sync (/usr/lib/node_modules/homebridge-broadlink-rm/node_modules/mkdirp/index.js:71:13)
Apr 27 06:13:06 raspberrypi homebridge[705]: at Function.sync (/usr/lib/node_modules/homebridge-broadlink-rm/node_modules/mkdirp/index.js:77:24)
Apr 27 06:13:06 raspberrypi homebridge[705]: at LocalStorage.parseStorageDirSync (/usr/lib/node_modules/homebridge-broadlink-rm/node_modules/node-persist/src/local-storage.js:600:20)
Apr 27 06:13:06 raspberrypi homebridge[705]: at LocalStorage.initSync (/usr/lib/node_modules/homebridge-broadlink-rm/node_modules/node-persist/src/local-storage.js:141:14)
Apr 27 06:13:06 raspberrypi homebridge[705]: at Object.nodePersist.initSync (/usr/lib/node_modules/homebridge-broadlink-rm/node_modules/node-persist/src/node-persist.js:37:32)
Apr 27 06:13:06 raspberrypi homebridge[705]: at Object. (/usr/lib/node_modules/homebridge-broadlink-rm/helpers/persistentState.js:2:13)
Apr 27 06:13:06 raspberrypi homebridge[705]: at Module._compile (module.js:571:32)

How do I choose where it is installed to?

That'd be a question for another place like Stackoverflow or the home bridge GitHub sorry.
It shouldn't impact homebridge from starting though
I've just updated the plugin to 2.0.14 change where the data gets stored - release notes

Legendary!
Looks like that has sorted it. All up and running now, and learnt and configured my first RF switch.
Thanks a lot for your help. I will follow up the other install issue with Homebridge through their channels.


Add capability to choose either polling or websocket

Proposed feature
Add possibility to choose the mediator connection either from pulling or websocket. Default (if no argument is passed) when starting the connection to the mediator, should be WS if available
Feature description
Enable user to choose the message receival mechanism
Anything else?
No response

I will go one step further than that...
We should allow developers to do 2 things, use their own native websocket library and allow them to not use websockets even if the mediator contains it.
Allow users to instanciate, or call SDK.Agent.initialize by passing the WS_Client (a protocol for WS) and the default transport.
Letting them chooose is easier and can probably be done this Friday tech debt

Perfect! 👌

This is prepared for 2.12 ecosystem release, we can close this ticket


Support for mutual recursion? + motivating example

Hi, I saw the talk from Greg Pfeil and found the park on mutual recursion really appealing.
I created a simple example  of numeric and boolean operations that I would be happy to add to a documentation once I figure how to do traversals. It is a nice domain to document due to some obvious rewrites on boolean expressions.
I appreciate that we need a natural transformation to transform A (is higher-kinded Functor a thing?). But not sure if there is further infrastructure around this.
sealed trait BoolAndCalcF[A[_],I]
// Using AtLeastTwoList as a more complex use case
case class And[A[_]](expressions: AtLeastTwoList[A[Boolean]]) extends BoolAndCalcF[A, Boolean]
case class Or[A[_]](expressions: AtLeastTwoList[A[Boolean]]) extends BoolAndCalcF[A, Boolean]
case class Not[A[_]](wrapped: A[Boolean]) extends BoolAndCalcF[A, Boolean]
case class BoolVal[A[_]](value: Boolean) extends BoolAndCalcF[A, Boolean]

// A bridge from calculation to booleans
case class Compare[A[_],I : Numeric, J: Numeric](left: A[I], op: CompOp, right: A[I]) extends BoolAndCalcF[A, Boolean]

case class Add[A[_], I : Numeric](left: A[I], right: A[I]) extends BoolAndCalcF[A, I]
//To show it would not compose with the rest due to Option
case class Divide[A[_], I : Numeric](left: A[I], right: A[I]) extends BoolAndCalcF[A, Option[I]]
case class Num[A[_], I : Numeric](value: I) extends BoolAndCalcF[A, I]

sealed trait CompOp
object CompOp {
  case object GT extends CompOp
  case object LT extends CompOp
  case object EQ extends CompOp
  case object NE extends CompOp
  case object GE extends CompOp
  case object LE extends CompOp
}
//import cats.data.OneAnd
//type AtLeastTwoList[A] = OneAnd[OneAnd[List,A],A]
case class AtLeastTwoList[A](head: A, second:A, tail: List[A]) {
  def map[B](f: A => B) = AtLeastTwoList(f(head), f(second), tail.map(f))
  def fold[B](h: A => B)(f: (B, A) => B): B = tail.foldLeft[B](f(h(head), second))(f)
}

Cool!
 However, a regression in scalac means it doesn’t compile anymore. I have an in-progress PR against scalac, but haven’t had a chance to finish it up.

Hi Greg, thanks for the update, looks promising!


Converting to typescript

cc: @stefanpenner @oligriffiths

@thoov I've added you as an NPM maintainer, feel free to merge + release :)

Ignore me. I missed the package.json updates


Clean-up command

It'd be cool to have tool to clean all temp/unnecessary files from project dir, for example
dephell project cleanup

~=
rm -rf build/ dist/ docs/build/ .tox/ .cache/ .pytest_cache/ *.egg-info

Great! I've put "question" and "help wanted" here to put attention for adding more files in the list of known junk. Also, hatch clean have the same list that we can use here.

Happy Hacktoberfest :jack_o_lantern:
I can start with the same behaviour as hatch clean as a first pass?

Hi, @jonathanlloyd. Hacktoberfest is done, but if you still want to do good things, keep going ;)


[fastlane_core] allow passing in Hash options via cli/env as json

Checklist

[ ] I've run bundle exec rspec from the root directory to see all new and existing tests pass
[ ] I've followed the fastlane code style and run bundle exec rubocop -a to ensure the code style is valid
[x] I've read the Contribution Guidelines
[ ] I've updated the documentation if necessary.

Motivation and Context
Some fastlane options are defined as Hashes, and cannot currently be specified when using the fastlane cli or environment variables.
cc #16294 #16307
Description
Hash options can be set via the cli/env using JSON syntax.
Testing Steps
Ran fastlane pilot distribute with PILOT_BETA_APP_REVIEW_INFO='{"contact_first_name":"...",...}' set.

@googlebot I consent.

How can I use this in Azure Devops pipeline task?
In the App Store Release task how do I put this in the fastlaneArguments?
I tried --beta_app_review_info $(beta_app_review_info_json) where the variable is:
beta_app_review_info_json: '{
       "contact_email"<EMAIL_ADDRESS>        "contact_first_name": "Test",
        "contact_last_name": "Guy",
        "contact_phone": "12344567",
        "demo_account_name": "sometestuser",
        "demo_account_password": "password!"
    }'

but I get the [!] 'beta_app_review_info' value must be a Hash! Found String instead. error.

Can someone answer @jmichas question? I am also using Azure DevOps and we were left without answer.

@1Siger1 you don't need to pass in argument, just define PILOT_BETA_APP_REVIEW_INFO in Variables. I followed this, upgraded fastlane to latest version, and problem solved! https://github.com/fastlane/fastlane/issues/16294#issuecomment-618406901

Wow this issue made me really headaches the last weeks. Thank you so much this fix 👍🎉

To all using the command line version of pilot distribute, could you please post the command you use? I have a different issue open on fastlane regarding this without many reactions 🤔. Maybe you could help me there?
https://github.com/fastlane/fastlane/issues/15908


[5.8] Allow for explicit text parameters on Authorize middleware

Pull Request #25763 broke some non documented functionality (explained here #26422) related to the Authorize middleware.
The previous implementation would allow to set an Authorize for a Gate with an optional parameter. That could be useful when the 'can' middleware is attached directly into the controller method (instead of a route) and thus act on multiple routes that access such method.
The current (master) implementation sends a string with the value of the Authorize argument if it's not a route parameter. This is behave ambiguous as any argument on the middleware can mean either a parameter of the request named after it or it's own name depending of the conditions a layer of abstraction up.
This PR solves this issue while still allowing the Authorize middleware to send string values to Gates by explicitly defining them as string using single or double quoted values on it's arguments, thus removing the ambiguity:
    // this should only send and route parameter to the gate or null if not available
    Route::middleware('can:ability,model');

    // This will send a string to the gate
    Route::middleware('can:ability,"some text"');

TL;DR; This reverts the default bahaviour to prior PR #25763, while still allowing string parameters.

Just for clarity, what policy method now gets called when you use a string argument?
For example when you do $user->can('create',  'article')
Does it go to the authorised users' policy and check if there is a method called 'create' and call it with the current user and "article"
Or does it try and resolve 'article' to a model and then find that models policy, and then finds the create method and calls it with the authorised user and 'article'?

@JackPriceBurns This does not change at all. Unless you have registered a policy with the key 'article' it would return false as it cannot find the appropriate gate.
If you have registered let's say an ArticlePolicy to the key 'article' even when you have a Article model then it would call ArticlePolicy->create($user).


OpenLDAP/Accounts: Name column missing

I'm using OpenLDAP and when i access the "Accounts" page, i can only see the columns:

state
id
kind
identity

While "description" may not be needed, at least the username and/or display name would be nice to have.

This is a cattle issue and a UI issue.

Closed due to inactivity.


The cli isn't working :(

Hey, I tried installing it and running it but this shows up.

Are there any other steps involved in installing other than running these commands?
npm install devtocli -g
devto

Thanks

I have the same problem.

3 years later and still nothing is working. I'm afraid this is a dead project, unfortunately.