deps flutter_mailer didn't support flutter 3.24.0

Description
After flutter upgrade, building release says:
FAILURE: Build failed with an exception.

What went wrong:
Execution failed for task ':flutter_mailer:verifyReleaseResources'.

A failure occurred while executing com.android.build.gradle.tasks.VerifyLibraryResourcesTask$Action
Android resource linking failed
ERROR:XXXXXXXXX\build\flutter_mailer\intermediates\merged_res\release\values\values.xml:194: AAPT: error: resource android:attr/lStar not found.
flutter_mailer 2.1.2 update before 8 months, I think it needs update or replace?

Not much I can do about it - you should rather open an issue (or even better: a PR) over at flutter_mailer

Given that the third-party Flutter library flutter_mailer is no longer maintained by its original author, you will need to resolve the issues by forking or cloning the library into your local project environment and making necessary adjustments. Here’s a step-by-step solution to address the problems you are facing:
Step 1: Clone the Library Locally
First, you need to clone the library into your project. You can do this by adding the library as a submodule or simply copying the library's source code into your project directory.

If you choose to use Git, you can add it as a submodule:
git submodule add https://github.com/<repository-url> path/to/local/flutter_mailer

Alternatively, download the library from its repository and integrate it into your project structure manually.

Step 2: Update the Android SDK Version
The error regarding android:attr/lStar not found suggests that the library might be using features available in newer Android versions which aren't supported by the compileSdkVersion defined in your app.

Open the build.gradle file within the cloned flutter_mailer library.

Update the compileSdkVersion and targetSdkVersion to a version that supports this attribute (typically the latest available SDK).
android {
    compileSdkVersion 31 // or higher
    defaultConfig {
        targetSdkVersion 31 // or higher
    }
}

Step 3: Resolve Proguard/R8 Issues
Since Proguard/R8 rules are not matching any classes, it’s likely that these classes are either not used or are being incorrectly referenced.

Open the proguard-rules.pro file in the flutter_mailer library.

Comment out or modify the rules that are causing issues. For example:
#-keepclassmembers,allowrepackaging,allowobfuscation class * extends androidx.lifecycle.ViewModel {
#  <init>(androidx.lifecycle.SavedStateHandle);
#}
#...

Test if the app builds successfully without these Proguard rules. If specific functionality breaks, you might need to adjust or add specific rules that correctly reference existing classes.

Step 4: Test the Library
After making these changes, integrate and test the library with your Flutter project:

Run flutter clean to clean the build cache.
Build your project using flutter build apk or flutter run to ensure that the changes have resolved the issues.

@calcitem This sounds a lot like LLM, right? :)
But yes, this is a possible way to solve this issue. Over at the original catcher repository, you can also find instructions on how we used to solve this back then.
dependency_overrides is the key here.

Given the information that the library flutter_mailer is used within another library catcher_2 in your Flutter project, and considering the suggestion to use dependency_overrides, you can address the issue directly in your project's pubspec.yaml. This method allows you to override the dependency version used by catcher_2 to point to your locally modified version of flutter_mailer.
Here's how you can resolve the issue by modifying your pubspec.yaml:
Step 1: Clone and Modify the flutter_mailer Library
First, clone the flutter_mailer library into your local project directory as described previously. Make all necessary modifications, such as updating the Android SDK version and adjusting Proguard rules.
Step 2: Override the Dependency in pubspec.yaml
In your Flutter project where catcher_2 is a dependency, add a dependency_overrides section in the pubspec.yaml file to point to your locally modified version of flutter_mailer.
dependencies:
  catcher_2: any  # assuming you're using any version, specify if needed

dependency_overrides:
  flutter_mailer:
    path: path/to/local/flutter_mailer

Step 3: Ensure Proper Integration

Run flutter pub get to fetch all the dependencies again.
Verify that the overridden flutter_mailer is being used by running flutter pub deps and checking that the path points to your local version.

Step 4: Test Your Application

After overriding the dependency, run your application to ensure that everything works as expected without the errors previously encountered.
Test on various devices and API levels to ensure compatibility, especially given the SDK version changes.

Step 5: Maintain and Monitor

Since you are now relying on a locally modified library, keep track of any updates or fixes in the original flutter_mailer repository.
Regularly merge important updates or security fixes into your local version to keep it up-to-date.

This method leverages dependency_overrides to directly address the issue without waiting for updates from the third-party library maintainers, giving you more control over the dependencies and their compatibility with your project.


Use EditorSuggest instead of show-hint

From #8

Completed.
https://github.com/tadashi-aikawa/obsidian-various-complements-plugin/pulls?q=is%3Apr+is%3Aclosed


Add API endpoints for /project_metadata

User can GET or delete a release via /{projectId}/{version} or
add/edit a release by POSTing the whole release to /{projectId}.
Authentication is via HTTP Basic with a Github API token (as the
username and an empty password, just like Github native APIs).
All the new endpoints are protected.
Fixes gh-701

I would prefer PUT over POST if we're talking about am including the ID in the URL. POST is usually used for the collective resource, and you usually get back a location header. Not the case with PUT.


incompatible with core-js

I have been encountered an issue when I called compartment.evaluate after lockdown.
Uncaught (in promise) TypeError: Cannot delete property 'arguments' of function toString() {
  return typeof this == 'function' && this[SRC] || $toString.call(this);
}

I've found that code is from core-js, which might bundled in other libraries I am using. Is there a way to solve this?
I am trying to run a 3rd party code in my app:
lockdown();

const compartment = new Compartment({
  print: harden(console.log),
});
const addon = compartment.evaluate(code);

This is a common compatibility problem. core-js exceeds the bounds set by SES lockdown and would need to be elevated to the status of a “vetted shim”. We have not finished implementing a strategy for incorporating vetted shims in applications, but we plan to.
Vetted shims would need to participate in lockdown explicitly, not just providing the code that monkey-patches the environment, but also inform lockdown of the properties of the environment that it is adding.

#318 tracks the issue of adding support for vetted shims.
The  label tracks issues with libraries that do not coöperate with SES.
We will refer here for conversations about core-js in the future.


Get multiport-eswitch mode from metalnet rundir

In OSC it is beneficial to use the same metalnet deployment for both versions of dpservice - legacy (single-port) and multiport-eswitch ones.
Thus using the command-line argument is not the way to go, instead we simply echo -n "eswitch" > /var/run/metalnet/mode and metalnet then reads this information, just like it gets other stuff from virtlet(?) about VFs.
The original implementation in 78efc7ccb9313819ab603e36b4252342f34a29e8 is tested in our clusters, I simplified the code without being able to run it in a cluster, though I did verify the output locally.

I added a comment and also some documentation in README.md covering multiport-eswitch and pf1-proxy

I have reverted the removal of --multiport-eswitch and mentioned the automatic detection in help and markdown.


Atlantis 1

Ran Plan for dir: infrastructure workspace: stage
Show Output
Initializing the backend...

Successfully configured the backend "s3"! Terraform will automatically
use this backend unless the backend configuration changes.

Initializing provider plugins...
- Finding latest version of yandex-cloud/yandex...
- Finding latest version of hashicorp/null...
- Installing yandex-cloud/yandex v0.100.0...
- Installed yandex-cloud/yandex v0.100.0 (unauthenticated)
- Installing hashicorp/null v3.2.1...
- Installed hashicorp/null v3.2.1 (unauthenticated)

Terraform has created a lock file .terraform.lock.hcl to record the provider
selections it made above. Include this file in your version control repository
so that Terraform can guarantee to make the same selections by default when
you run "terraform init" in the future.

╷
│ Warning: Incomplete lock file information for providers
│
│ Due to your customized provider installation methods, Terraform was forced
│ to calculate lock file checksums locally for the following providers:
│   - hashicorp/null
│   - yandex-cloud/yandex
│
│ The current .terraform.lock.hcl file only includes checksums for
│ linux_amd64, so Terraform running on another platform will fail to install
│ these providers.
│
│ To calculate additional checksums for another platform, run:
│   terraform providers lock -platform=linux_amd64
│ (where linux_amd64 is the platform to generate)
╵

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.

Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
+ create

Terraform will perform the following actions:

  # null_resource.atlantis-check will be created
+ resource "null_resource" "atlantis-check" {
      + id = (known after apply)
    }

Plan: 1 to add, 0 to change, 0 to destroy.

:arrow_forward: To apply this plan, comment:

atlantis apply -d infrastructure -w stage

:put_litter_in_its_place: To delete this plan click here
:repeat: To plan this project again, comment:

atlantis plan -d infrastructure -w stage

Plan: 1 to add, 0 to change, 0 to destroy.

:fast_forward: To apply all unapplied plans from this pull request, comment:

atlantis apply

:put_litter_in_its_place: To delete all plans and locks for the PR, comment:

atlantis unlock


Add broader system db support

Relates to issue #3238.
The main improvement is limiting all String types in the alembic migrations. This allows the possibility to use both MSSQL and MYSQL as a Meltano backend database.
Both databases were manually tested. It might be valuable to add automatic tests to the Github actions.
To use MYSQL run: pip install mysqlclient
To use MSSQL run: pip install pyodbc

Hi @JulesHuisman awesome to see you pick this back up, personally very excited to get some support for other DB's into Meltano 🥳
@aaronsteers this is a continuation of this thread: https://gitlab.com/meltano/meltano/-/issues/3315#note_908238671, I think what @JulesHuisman has here plus some docs covering how to use "unofficial backends like MSSQL and MySQL" are a great start and easy way to test the water.
We could follow it up and setup an actions workflow to test migrations against MySQL/MSSQL when a PR with new migrations is created. @aaronsteers In the original thread you'd expressed some concerns about being able to test against MSSQL, looks like the MSSQL on linux docker container is pretty popular and well-supported (https://hub.docker.com/_/microsoft-mssql-server), but just having a GH actions gate for migrations would go along way towards ensuring that future migrations don't having breaking changes for MySQL or MSSQL.

@JulesHuisman and @pandemicsyn - I would be happy to add CI tests for DBs. I am also okay to merge this and add those tests in a follow-on issue, depending on @JulesHuisman's availability and/or others who can help ship this in CI.
A quick google search shows tests may be fairly pretty easy in GitHub Actions - https://datastation.multiprocess.io/blog/2021-12-16-sqlserver-in-github-actions.html

@pandemicsyn and @edgarrmondragon - I'm removing myself from reviewer role but please re-add me if you would like me to rereview. I'll defer to you both - when you feel this is ready to merge, I'm all for it. 👍
And - again - since risk here is super low (adding str max when where they were otherwise omitted), I'm okay to merge without additional CI checks added.
The one thing I'd ask to watch out for is that I'd rather a stringlen max be overly permissive than to run a risk of truncating or failing on use cases that might introduce longer strings.

Jobs

[ ] job.state
[ ] job.trigger

Plugin Settings

[ ] plugin_settings.label
[ ] plugin_settings.name
[ ] plugin_settings.namespace

embed_tokens
NA
Subscriptions

[ ] subscriptions.recipient
[ ] subscriptions.event_type
[ ] subscriptions.source_type
[ ] subscriptions.source_id

User
These should all really have max length of 255, so migration needs to reflect that.

[ ] user.username
[ ] user.email
[ ] user.password

Role
This should also have max length of 255, so migration

[ ] role.description

Role Permissions

[ ] role_permissions.type
[ ] role_permissions.context

OAuth

[ ] oauth.id_token

@pandemicsyn we used to have a sort of test matrix running tests on both SQLite and PostgreSQL:

https://github.com/meltano/meltano/blob/abb83158c443787d3c330558de29842d415d8e15/tests/conftest.py#L21-L38
https://github.com/meltano/meltano/blob/1498bf59afa5a9eb44059a6a4f550caab4e07c31/.gitlab/ci/test.gitlab-ci.yml#L88-L94
https://github.com/meltano/meltano/blob/1498bf59afa5a9eb44059a6a4f550caab4e07c31/.gitlab/ci/test.gitlab-ci.yml#L110-L113

I suggest we should migrate those (either before or after this PR merges) and include both MySQL and MSSQL to the mix.

Thanks for taking a look guys,
In some places it might be possible to make the max string length longer. I chose 128 because in some places MYSQL would throw errors when it was longer (450).
I can also take a look at testing the migrations. The MSSQL docker container works quite well, I also used it when developing this PR.

@edgarrmondragon @pandemicsyn Hi guys, what needs to be fixed or adjusted to get this PR through?
And do we want the tests included in this PR, or can that be included in a separate PR?
Thanks!

Ah alright, so it is running into issues with the string length. I will look into it!

@JulesHuisman an options seems to be off with the mssql service, and it's causing all workflows to fail.
We moved away from the services approach in favor of using docker run explicitly in a step (see #6268). What do you think of following a similar approach for mysql and mssql?

@JulesHuisman It seems like SQLAlchemy expects some extras/deps:

ModuleNotFoundError: No module named 'pyodbc'

and

ModuleNotFoundError: No module named 'pymysql'

Ah yes, I forgot to add them to the tests, I will take a look at it tomorrow.

@edgarrmondragon I thought using the pip install would install it in the right environment. But that might not be the case. What is the best way to install the database drivers?

@JulesHuisman the project uses poetry so the best way is to add them explicitly with poetry add.
Though, I'm not sure if we want all users to be forced install them and any system dependencies, which might be annoying. So, I'd opt for making them optional dependencies and put them in pip extras that need to be requested explicitly, e.g.
pip install meltano[mysql]

It's a similar approach to that taken by Airflow and other complex applications and libraries. The way to accomplish that with poetry is to add the dependencies as optional:
poetry add pymysql --optional
poetry add pyodbc --optional
poetry lock --no-update

and then manually creating the extras in pyproject.toml:
[tool.poetry.extras]
infra = ["ansible"]
repl = ["ipython"]
mysql = ["pymysql"]
mssql = ["pyodbc"]

This is a bit of a product call too, so cc @tayloramurphy @aaronsteers

@edgarrmondragon Let me know if I added it correctly.
I think we discussed on the original Gitlab issue if we should include these drivers by default. And we decided not to include them, but I personally like to the route of adding them as extras.

A possibility would be to run the mssql inside a mac runner, as the install is way easier for mac. But that doesn't really feel that robust to me.

@JulesHuisman do you think using the pymssql driver instead of ODBC would be a problem? It seems to be more active and has lots more wheels.

@edgarrmondragon I switched out pyodbc for pymssql, in my fork the MSSQL testing now passes.
There is still a weird bug when using the MySQL backend, when getting and setting does not match.

I'd opt for making them optional dependencies and put them in pip extras that need to be requested explicitly

@edgarrmondragon I think that makes sense. @aaronsteers would you chime in here as well?

MySQL still failing with
"Table 'pytest_warehouse.runs' doesn't exist"

I'd opt for making them optional dependencies and put them in pip extras that need to be requested explicitly

@edgarrmondragon I think that makes sense. @aaronsteers would you chime in here as well?

Yeah - this seems like the right approach to me:
https://github.com/meltano/meltano/pull/6167/files#diff-50c86b7ed8ac2cf95bd48334961bf0530cdc77b5a56f852c5c61b89d735fd711R67-R70
It would be a breaking change at this point, but similarly, we could have make psycopg2-binary a postgres extra, and in a major version bump we could consider that.

@aaronsteers @JulesHuisman @afolson on the docs side, we mention the system database in a few places:

https://docs.meltano.com/guide/production#storing-metadata which has some repeated info from the next item
https://docs.meltano.com/concepts/project#system-database
https://docs.meltano.com/reference/settings#database_uri which has some repeated content
https://docs.meltano.com/contribute/prerequisites#system-database

My preference for this PR and to keep it simple for @JulesHuisman would be to update https://docs.meltano.com/reference/settings#database_uri with details on how to use the other databases. We can open a separate issue to update the references in other places as a follow-on. Does that work?

Hi @JulesHuisman! First of all, thanks for this awesome work!
I just had to include a small change to make it work in my environment in the src/meltano/migrations/versions/5b43800443d1_rename_job_to_job_run_and_job_id_to_job_.py migration file to include the existing_type required by alembic.
The new file looks like this after the changes:
import sqlalchemy as sa
from alembic import op

from meltano.migrations.utils.dialect_typing import (
    get_dialect_name,
    max_string_length_for_dialect,
)

# revision identifiers, used by Alembic.
revision = "5b43800443d1"
down_revision = "13e8639c6d2b"
branch_labels = None
depends_on = None

def upgrade():
    dialect_name = get_dialect_name(op)
    max_string_length = max_string_length_for_dialect(dialect_name)

    op.alter_column("job", "job_id",
        new_column_name="job_name",
        existing_type=sa.types.String(max_string_length)
    )
    op.rename_table("job", "runs")

def downgrade():
    dialect_name = get_dialect_name(op)
    max_string_length = max_string_length_for_dialect(dialect_name)

    op.rename_table("runs", "job")
    op.alter_column("job", "job_name",
        new_column_name="job_id",
        existing_type=sa.types.String(max_string_length)
    )

After this change, I managed to make the db migration work with a MySQL instance.

@joaopamaral thanks for sharing! I've put your changes in diff format in case @JulesHuisman or someone else wants to try them out:
 import sqlalchemy as sa
 from alembic import op

+from meltano.migrations.utils.dialect_typing import (
+    get_dialect_name,
+    max_string_length_for_dialect,
+)
+
 # revision identifiers, used by Alembic.
 revision = "5b43800443d1"
 down_revision = "13e8639c6d2b"

 def upgrade():
-    op.alter_column("job", "job_id", new_column_name="job_name")
+    dialect_name = get_dialect_name(op)
+    max_string_length = max_string_length_for_dialect(dialect_name)
+
+    op.alter_column("job", "job_id",
+        new_column_name="job_name",
+        existing_type=sa.types.String(max_string_length)
+    )
     op.rename_table("job", "runs")

 def downgrade():
+    dialect_name = get_dialect_name(op)
+    max_string_length = max_string_length_for_dialect(dialect_name)
+
     op.rename_table("runs", "job")
-    op.alter_column("job", "job_name", new_column_name="job_id")
+    op.alter_column("job", "job_name",
+        new_column_name="job_id",
+        existing_type=sa.types.String(max_string_length)
+    )

Heads up @JulesHuisman: I'm gonna merge main into this branch to try to resolve the conflicts.

@pandemicsyn @aaronsteers this is ready for review for MSSQL support!

Thanks @edgarrmondragon, I like the idea of moving the Mysql code to another branch. That created a really weird bug in testing which I could not figure out.

Thanks @edgarrmondragon, I like the idea of moving the Mysql code to another branch. That created a really weird bug in testing which I could not figure out.

@JulesHuisman I started a draft PR #6528, but I (or someone else) need to take some to debug those failing state tests.

Thanks for taking this over the finish line @edgarrmondragon!


Pagination feature

Matthias noticed that posts are missing. Therefore I looked a bit into it and found that strapi defaults to a page size of 25. This currently results in missing posts. I could have just configured the page size to something huge, but that will ultimately lead in a postponed problem. I added a few lines to fetch all data if pagination was applied. Tests are not provided yet (following)

Well fck. I should've configured a formatter upfront... the diff is unbearable


Plan beta0 tag and gitian build

Unless there are any objections, I'll plan to attempt a beta0 test build via gitian on wk1903.

I support this. We should also set some deadlines for Release Candidate and final version as no major problem were reported since clo1 released the code months ago.
We could make a RC build on early February (Week 1906) and the final release 1 month later (Week 1910)?


[dv] Ibex co-simulation proposal

Our current Ibex DV environment uses a post simulation trace comparison methodology. This checks that the traces match from a particular test binary that is run on both an ISS (such as Spike or OVPSim) and an Ibex simulation. It has a weakness around interrupts, exceptions and debug related behaviour. These aren't simulated on the ISS (with the exception of some precise exceptions such as an illegal instruction, we don't simulate precise exceptions from imem or dmem error responsess). This will cause trace mismatches so trace matching is disabled on tests that use these with final state comparison and some extra checking during the simulation run to compensate. This can suffice for finding bugs but it can require more tests to ensure a particular bug actually produces a failure.  When failures are seen debugging back from a final state comparison failure can be hard work.
This is a proposal to switch to a co-simulation method where Spike is run along with the Ibex DV simulation in lock step, cross checking between the two on every retired instruction. The DV environment will probe events such as interrupts, debug requests and memory error responses. These will be notified to Spike to keep instruction execution in sync.
Note this proposal specifically concerns using Spike as the ISS for co-simulation. Currently OVPSim is also supported for the post simulation trace comparison method but due to the higher degree of coupling we should focus on supporting a single ISS for co-simulation. The co-simulation framework should be designed such that support for multiple simulators in future is possible without significant refactoring.
I have done some initial investigation around how to directly control the Spike 'core' and inserting interrupts/memory errors/debug requests at appropriate points so the instruction by instruction trace matches an Ibex simulation. This has demonstrated that co-simulation with Spike is feasible.
Spike Modifications
The initial investigation has shown minimal Spike source modifications are required. Two changes have been identified:

Alter the debug entry point which is specified by the DEBUG_ROM_ENTRY define in debug_rom_defines.h. We may wish to alter this to a run-time parameter or at least provide compile-time configurability (given it needs to match an Ibex parameter DmHaltAddr which can be altered in the Ibex instantiation).
Make register writes visible to the public interface of processor_t. When Spike is built with RISCV_ENABLE_COMMITLOG register writes are already logged however this happens internally to the step function and the publically visible state that would contain register writes is wiped (having been output to the textual log) before step returns. An alternative would be to ignore this functionality all together and simply look at the state of the register file after every step and check for changes.

Spike uses a autoconf/automake based build system. For my initial investigation I used meson to build specific Spike source files as only a subset were required. For the co-simulation framework we should seek to use as much of the existing Spike build infrastructure as possible. There are two possibilities:

Use the existing Spike build unaltered, it produces a libriscv.a that I believe contains everything that will be required for the co-simulator.  However it may also bring up some other things we don't need. Further investigation is needed to see if this can be used as is.
Add a new target to the Spike build system (e.g. libspike.a or libcospike.a) that provides precisely what we need for the co-simulator.

It should be noted Spike's way of specifying instruction requires some build time generation of C files from template files. This is a simple process using sed driven by the autoconf/automake generated Makefiles. It could be recreated but it is preferable to use the original Spike build system to do the generation.
Ideally any modifications we do need to make will be upstreamed so we should choose what we do with that in mind.
Spike Usage
Spike is written in C++ using a number of classes to implement its functionality. The co-simulator will be based around the processor_t class which represents a single processor and provides functionality for step by step instruction execution. The Spike README states:

The C++ interface to Spike's internals is not considered a public API at this time, and backwards-incompatible changes to this interface will be made without incrementing the major version number.

This is unfortunate as ideally we'd use something that would be considered stable as the base for our co-simulation framework. Instead we should aim to interact with Spike internals in the most minimal way possible ideally using the public interfaces of classes where possible (e.g. avoid adding new methods to expose previously private aspects of classes).
processor_t exposes a state_t via a public get_state function which gives read/write access to the processor state including the register file, PC and MIP (interrupt pending CSR). It also contains a log of register writes and memory accesses however this isn't of much use without modification as it gets internally written, relevant log entries made, then wiped, before it can be observed from a public interface.
processor_t has a public step function which will be used at the core of the co-simulation framework. This steps the simulation by one or more instructions.  It will only be used to step by a single instruction with appropriate checks before and after to ensure the step matches the corresponding Ibex instruction retirement.
To avoid altering how the commit log functionality works (required to get commit log information outside of step) we could implement our own step. The function is relatively simple and this would allow us to access and clear the commit log as required however this deals more with the private aspects of the class implementation so may be more likely to see breaking changes.
An implementation of the simif_t interface must be provided to each processor_t instance, this provides the simulated process with access to memory. Internally spike uses a TLB like setup where the first time it wants to access a byte within a 4k page is asks a simif_t instance for a pointer to it (using the addr_to_mem method). Following accesses have the pointer cached in the TLB and do not call into the simif_t interface. This is good for simulation performance but not useful for co-simulation, in particular where we need to simulate memory errors on specific addresses at specific times.
This TLB mechanism can be bypassed by returning NULL from addr_to_mem, this causes Spike to use the mmio_load/mmio_store functions to perform the memory accesses directly. For co-simulation we will always return NULL from addr_to_mem so each individual memory access (both data and instruction) will result in a call to mmio_load or mmio_store. Precise exceptions from memory errors can be stimulated by returning false from mmio_load or mmio_store.
The co-simulator will keep its own copies of the simulated memories which will be preloaded with the same contents as the memories from the Ibex simulation but otherwise will remain independent.
processor_t header:  https://github.com/riscv/riscv-isa-sim/blob/ce170a71eb1ab5296b547fdeafe40c9448e9cdda/riscv/processor.h#L267
simif_t header: https://github.com/riscv/riscv-isa-sim/blob/master/riscv/simif.h
Co-simulation DPI library
Spike will be implemented inside a library exporting C functions to be used over DPI from the RTL simulator. Functions provided will be:

riscv_cosim_init - Initialises Spike and provides a chandle referring to the simulator instance that needs to be used with all other functions.
riscv_cosim_destroy - Deallocates and does any require clean up for the simulator instance chandle
riscv_cosim_step - Steps the simulator one instruction and compares results against provided instruction results from Ibex RTL instruction retirement. The function returns 1 if the step succeeds and matches and 0 otherwise. Things to check (passed as arguments to riscv_cosim_step) are:

PC of executed instruction
Register written and value written

riscv_cosim_set_mip - Sets the mip CSR (interrupts pending), Spike will immediately take an interrupt at the next riscv_cosim_step if a pending interrupt is enabled.
riscv_cosim_set_dbg_req - Sets/clears the Spike debug halt request. Spike will immediately enter debug mode at the next riscv_cosim_step if the debug halt request is set.
riscv_cosim_notify_mem_err - Takes a 32-bit aligned address as an argument.  The next time Spike accesses that any byte within the 4-byte region a memory error should be signalled (by returning false from mmio_load/mmio_store).

Functions will also be required for memory setup and preloading, these are TBD (as there's various options but ultimately straight-forward so wish to keep discussion focussed on the co-simulation aspects).
Do we want some functions to help compare CSR changes? It's possible to get several in one step (e.g. when taking a trap) so it can't be a simple CSR written with value passed to to riscv_cosim_step. We could provide separate riscv_cosim_notify_csr_write that does the checking/batches up notifications to check at the next step?
How do we want to communicate details of ISS/RTL mismatches? The co-sim library could just directly write to standard out or a specified log file but that's not great.  Perhaps a separate riscv_cosim_get_error which returns a mismatch error string?
Ibex Integration
The existing RVFI interface can provide instruction PCs and register file writes suitable for passing to riscv_cosim_step. Some extra tracing infrastructure will be required to deal with interrupts and debug requests. Currently the Ibex micro-architecture won't jump into an interrupt or debug handler until the instruction present in ID/EX when the interrupt/debug request arrives has moved from ID/EX into WB (or retired in the 2 stage design). In effect the state of MIP or debug request the last cycle the instruction is in IF is the relevant one. We could extend rvfi to provide this. The following signals would be added:
rvfi_ext_mip - State of MIP the cycle before the instruction entered ID/EX (the MIP that should apply to that instruction, in particular if it's the first time an enabled interrupt is seen we would expect the instruction to be the first instruction of the interrupt handler).
rvfi_ext_dbg_req - As rvfi_ext_mip but for debug request.
The DV environment would call riscv_cosim_set_mip and riscv_cosim_set_dbg_req with these values before calling riscv_cosim_step.  We could wrap in the mip and debug request status into the riscv_cosim_step arguments but I think it's preferable to retain some flexibility here should there be any scenarios this scheme doesn't work for.
DV environment integration
As a C DPI library we should able to use the co-simulation framework from many simulators, in particular Verilator and VCS. Plain systemverilog can be used to drive the co-simulation which will work equally well in a SimpleSystem Verilator setup as well as the existing UVM environment run in VCS or other commercial simulations (the approach used by the OTBN co-simulation setup).
I think it may be worth doing a UVM version, using a UVM monitor to probe the RVFI with a seperate UVM component taking the monitor results and driving the co-simulator DPI interface. As we develop the co-simulator framework we may encounter scenarios where we need some detailed interactions between the co-simulator and UVM testbench which will be better served if the co-simulator is part of the UVM testbench rather than a seperate Verilog component.  Alternatively we could proceed with the plain systemverilog version only and switch to a UVM version should we encounter a need for it.
Memory Access Checking
We should add a checker that probes the Ibex DMem interface and ensures all transactions match expected memory accesses (this is more complex on some processors as there will be speculative memory accesses, currently all DMem accesses on Ibex relate to instructions that will retire). The spike internal commit logging already has some logging of memory reads and writes which could be used to cross-check. Using calls to the mmio_load/mmio_store functions to cross check against Ibex accesses is tricky as you can't determine if a particular mmio_load is for an instruction fetch or a DMem read.

This has now been implemented.

Hi,I met a error. Can you help me ?
ibex/dv/cosim/spike_cosim.cc", line 66: error: class
          "processor_t" has no member "enable_log_commits"
      processor->enable_log_commits();

spike_cosim.cc", line 231: error: class "state_t"
          has no member "last_inst_pc"
    if (processor->get_state()->last_inst_pc == PC_INVALID) {
                                ^
spike_cosim.cc", line 332: error: class "state_t"
          has no member "log_reg_write"
    auto &reg_changes = processor->get_state()->log_reg_write;
                                                ^

xmsc: Error executing: $CDSROOT/tools/cdsgcc/gcc/6.3/bin/g++ -DNCSC -DCADENCE  -DLNX86 -D_GLIBCXX_USE_CXX11_ABI=0 -I$CDSROOT/tools/systemc/include_pch/64bit -o $TESTDIR/out/build/tb/xcelium.d/run.lnx8664.20.09.d/xmsc_run/xmsc_obj/spike_cosim_0.o -I/test_jiahua/ibex/dv/cosim -I/test_jiahua/test2/newspike/include -I/test_jiahua/test2/newspike/include/softfloat -I$CDSROOT/tools/include -I$CDSROOT/tools/inca/include -DXMSC -DNCSC -I$CDSROOT/tools/systemc/include_pch -I$CDSROOT/tools/tbsc/include -I$CDSROOT/tools/vic/include -I$CDSROOT/tools/methodology/OVM/CDNS-2.1.2/sc/src -I$CDSROOT/tools/methodology/UVM/CDNS-1.2/sc/sc -I$CDSROOT/tools/methodology/UVM/CDNS-1.2/ml/sc -I$CDSROOT/tools/systemc/include/cci -I$CDSROOT/tools/systemc/include/factory -I$CDSROOT/tools/systemc/include/tlm2 -fPIC -D_GLIBCXX_USE_CXX11_ABI=0 -c -x c++  -Wall /test_jiahua/ibex/dv/cosim/spike_cosim.cc
xmsc_run: *E,TBBLDF: Failed to generate object /test_jiahua/ibex/dv/uvm/core_ibex/out/build/tb/xcelium.d/run.lnx8664.20.09.d/xmsc_run/xmsc_obj/spike_cosim_0.o

xrun: *E,CCERR: Error during cc compilation (status 1), exiting.


Using DrawerItem for the stocks settings page is a problem

Either we should rename DrawerItem to something more agnostic about its host, like InterfaceItem, or RowButton, or something, or, we should provide a new mechanism for things like the settings page.

@collinjackson was suggesting that we use ListItem.
Probably DrawerItem should be removed and drawer should use ListItem

When fixing this, please make sure to document the behaviour of [onPressed] in whatever class replaced [DrawerItem].

Given how little we've touched Stocks in the last year I think we can close this bug?

This isn't really about stocks, it's a framework issue.

I'm going to see if we can eliminate DrawerItem (per the suggestions above).


Cannot reconnect without full Home Assistant restart

First of all THANK YOU for making this integration. Have been searching for this for months! It was easy to set up and auto-discover worked well with my lamp. Thanks!
My issue are

if I lose power to my BLE receiver (ESP BT proxy), even for 30 seconds, I permanently lose connection to my lamp and have to restart Home Assistant to reconnect.

I tried changing the timeout but this was not possible (“unknown error occurred”) and I’m not sure if that would help anyway?

if I change brightness it will stop the multicoloured motion light and select a single color

Hello! Thank you for using the integration!
Regarding your issues,

For the ESP BT proxy, unfortunately I do not have any of these to test, and the integration relies heavily on bleak, which is a Linux library for interacting with BT devices and connecting/reconnecting, I really don't know if this works well with the BT proxy since I have no idea how the proxy works. You could try checking your logs to see if something weird pops up, should generate a log every time the device disconnect unexpectedly, which i have seen happening some times, maybe because I'm completely ignoring the counters/checksums of the protocol (they don't seem necessary at all) and the controller gives up after some time, but it should reconnect automatically when you send a command to it, that doesn't seem to be your issue thou. All works well here with a USB BT adapter connected to Home Assistant

The timeout should be 120 seconds by default, I have no idea about how that error can pop, i can change it without problem, maybe check your logs to see if you see something strange regarding this

The brightness right now sends a color temp or hsv packet depending what is the last mode the light was put in, unfortunately the integration doesn't support effects at the moment so that packet just resets your light to the color with the desired brightness, right now this is expected. Effects have their own brightness value in their unique packet, so they should be possible to implement at some point. Also if you change something with the remote and then make a change from Home Assistant it will just overwrite it, since no decoding of the current status, it isn't implemented at the moment

I don't have much free time right now and don't know when i will be able to tinker with the effects and the decoding, but feel free to PR changes if you wanna help in that regard!

I have been playing a little with a couple of esphome bt proxies. There isn't much documentation or information online about how those work, so unfortunatelly the support for them its pretty much none. If anyone knows more about the proxies and want to adapt anything here for them to work go ahead.


Fully implemented case where Type of SQLCommand is Text

apart from the implementation for Text type of SQLCommand, also refactored code for readability and added some TODO notes on how to address NULL value issue (https://github.com/jphellemons/CommandAsSql/issues/1)

Big change. Thanks! Will take a look at it asap. Would have been easier for me to check, if you would have made more smaller commits. But thanks! 👍

It's a pity GitHub doesn't show moved sections in code. Try WinMerge.org or CodeCompare tools with option to detect moved sections turned on

Thank you for your effort! I have made a new branch for some unit tests. To keep track of the consistency of the library and included your changes there.


removed unnecessary check for having a parent PerfectScrollbarModule

Since your module doesn't contain a service, just a component, why check if there is already a parent module loaded?
Or am I missing something?
This would fix #2

The check is needed so that there isn't two global configurations provided, but the check should only be about calling forRoot() twice and that I left since I was supposed to add the forChild() call as well to be used with submodules. I will close its PR, but will release a proper fix and 0.9.0 soon.


Initialize user defaults with a custom domain

Usage of UserDefaults.standard without any domain caused that all user's data was cleared every time the method stop() was called, not only data previously set in this class. I've changed UserDefaults.standard  to UserDefaults(suiteName: USER_DEFAULTS_DOMAIN) to be able to remove only those preferences which we want to be cleared in this case.

thank you @lukkob
I was not aware of this problem until now. I'm not familiar with UserDefaults(suiteName:), so I'll check the official documentation and merge the branch.
Thank you again :)


router: abstract node key behind ECDH interface

As part of the preparatory work for https://github.com/lightningnetwork/lnd/issues/3929, we remove the node's private key from the NewRouter method and replace it with an interface that abstracts away the ECDH operation.
This is only necessary for the long-term node key. All other private keys are just temporary session keys.

cc @joostjager (reviewers thing is messed up on this repo, can't assign ppl easily)

I'm working on a PR that does all this in lnd as well (brontide, htlcswitch, netann and watchtower). You mean that, right @Roasbeef? Or are there further changes that should be done in this repo?
Do you think the naming is OK? I'm going to use the same SingleKeyECDH thing in lnd too.

You mean that, right @Roasbeef? Or are there further changes that should be done in this repo?

Yeah, to propagate these changes into the lnd sphere.
No strong feelings w.r.t naming on my end.


Fixed #31233 -- Closed database connection and cursor objects after use.

https://code.djangoproject.com/ticket/31233

These cases were discovered using a psycopg2 patch I'm working on to emit a warning on unclosed resources.
https://github.com/psycopg/psycopg2/pull/1039

A couple thoughts I had while making this change:

Perhaps ._nodb_connection shouldn't be a property to help signal to the caller that it has additional side-effects.

Perhaps ._nodb_connection should wrap its return value in contextlib.closing(). This would force all callers to use a context manager to close it after its use is done. The connection is always intended to be temporary and short-lived anyway.

Any thoughts on these changes as part of this PR?

For me, the try, finally syntax you introduced in replacement of the with syntax is rather ugly, but of course I understand why you did it. If you could find a way to replace _nodb_connection.cursor() by some other context manager utility that auto-closes the _nodb_connection, it would be really nice.

The _nodb_connection is only ever used to access a cursor. We could change the method to _nodb_cursor() and return a cursor context manager instead. Inside the _nodb_cusror() method, the connection resource could be handled and closed upon completion. WDYT?

Looks promising!

Sounds reasonable, and would remove a lot of messy try-except patterns. I was going to suggest looking into contextlib.ExitStack, but your suggestion is better.

I have implemented the above suggestion. Thanks for the feedback.

Awesome, thanks! Now if you could split the commit so as the no_db stuff is contained in a separate commit, would be great.

Done. I also added a blurb to the "Database backend API" section of the release notes.

buildbot, test on oracle.

Thanks for finding the additional cases!


Metrics labelSelector not filtering external metrics

Given the following call result
kubectl get --raw "/apis/external.metrics.k8s.io/v1beta1/namespaces/*/sqs_queue_messages"

{
  "kind": "ExternalMetricValueList",
  "apiVersion": "external.metrics.k8s.io/v1beta1",
  "metadata": {
    "selfLink": "/apis/external.metrics.k8s.io/v1beta1/namespaces/%2A/sqs_queue_messages"
  },
  "items": [
    {
      "metricName": "sqs_queue_messages",
      "metricLabels": {
        "__name__": "sqs_queue_messages",
        ...
        "queue_name": "temp-queue"
      },
      "timestamp": "2019-11-07T21:14:44Z",
      "value": "0"
    },
    {
      "metricName": "sqs_queue_messages",
      "metricLabels": {
        "__name__": "sqs_queue_messages",
        ...
        "queue_name": "random-queue"
      },
      "timestamp": "2019-11-07T21:14:44Z",
      "value": "0"
    }
  ]
}

I expect that the call to the same api endpoint with the labelSelector query param
kubectl get --raw "/apis/external.metrics.k8s.io/v1beta1/namespaces/*/sqs_queue_messages?labelSelector=queue_name%3Dtemp-queue"
should return just the metrics with the specified queue_name metricsLabel, but all the series are returned.

I am having this issue as well. Just to add a little more context for this issue, my metric is being exposed via this rule:
- seriesQuery: '{__name__=~"kafka_minion_topic_partition_message_count"}'       seriesFilters: []       resources:         template: <<.Resource>>       name:         matches: ""         as: "kafka_custom_metric"       metricsQuery: 'kafka_minion_topic_partition_message_count{}'
It can be queried like this:
`kubectl get --raw "/apis/external.metrics.k8s.io/v1beta1/namespaces/default/kafka_custom_metric?labelSelector=topic%3Dtopic1" | jq
{
"kind": "ExternalMetricValueList",
"apiVersion": "external.metrics.k8s.io/v1beta1",
"metadata": {
"selfLink": "/apis/external.metrics.k8s.io/v1beta1/namespaces/default/kafka_custom_metric"
},
"items": [
{
"metricName": "kafka_custom_metric",
"metricLabels": {
"name": "kafka_minion_topic_partition_message_count",
"endpoint": "metrics",
"instance": "<IP_ADDRESS>:8080",
"job": "kafka-minion",
"namespace": "default",
"partition": "0",
"pod": "kafka-minion-67d99688cd-m2rpd",
"service": "kafka-minion",
"topic": "topic1"
},
"timestamp": "2019-11-20T18:41:06Z",
"value": "7"
},
{
"metricName": "kafka_custom_metric",
"metricLabels": {
"name": "kafka_minion_topic_partition_message_count",
"endpoint": "metrics",
"instance": "<IP_ADDRESS>:8080",
"job": "kafka-minion",
"namespace": "default",
"partition": "0",
"pod": "kafka-minion-67d99688cd-m2rpd",
"service": "kafka-minion",
"topic": "topic2"
},
"timestamp": "2019-11-20T18:41:06Z",
"value": "4"
}
]
}`
However, it is not being filtered.
In addition, when creating the following HPA, all the items are summed together for a value of 11 in this example:
`apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: my-kafka-hpa
spec:
scaleTargetRef:
apiVersion: extensions/v1beta1
kind: Deployment
name: my-kafka-consumer
minReplicas: 1
maxReplicas: 5
metrics:

type: External
external:
metric:
name: kafka_custom_metric
selector:
matchLabels:
topic: "topic1"
target:
type: AverageValue
averageValue: 300
`

you metricsQuery needs to be:
kafka_minion_topic_partition_message_count{<<.LabelMatchers>>}

I am facing the very same issue and adding {<<.LabelMatchers>>} to the metricsQuery made existing metric items empty.
The promql query containing the labelSelector is working on the prometheus side.
Do you have any suggestion on how to solve this?

I was having the same issue as well. All of the metrics were getting aggregated together. I also, added the {<<.LabelMatchers>>} and that caused all of the metrics to drop out. After bumping the log level and examining it, it looks like the root issue is that the namespace gets passed in as part of the LabelMatchers on the external end point. Considering the external end point is supposed to represent metrics that are NOT associated to any type of k8s object is this a bug? If not a bug is there a way to disable the namespace from being part of the LabelMatchers?
In our case we have metrics that are being scraped that have no namespace or equivalent label that we would like to use as part of our HPA scaling. Any suggestions would be great, thanks.

@fistan684 thanks a lot for sharing your solution, it helped us as well. How can we connect? so we can help each other in the future. Thanks again!

@fistan684 Would you mind explaining how you increased the log level to see that the namespace label was being added? I'm running into the same issue as you, but your fix doesn't work in my case unfortunately, so I wanted to dig deeper into what might be the problem.

This is indeed an issue. https://github.com/DirectXMan12/k8s-prometheus-adapter/issues/282
Using 0.5.0 resolves it.

@domderen when you use the debugger you can trace it. #282 has a link to the line of code that's jamming it in. Like others have stated, the easiest work around is to get namespace=default on your metric.

@john-delivuk Thanks for your help! I ended up doing, it's just not very clean solution, so I was hoping for something cleaner, but decided to just move on to other things :)

Any update on this?  I resolved our issue by downgrading to 0.5.0 and ensuring <<.LabelMatchers>> was part of the query.
Seems odd to me that this has been broken for two releases now.  Would think this is a pretty normal usecase that should be tested as part of the release.

I was having the same issue as well. All of the metrics were getting aggregated together. I also, added the {<<.LabelMatchers>>} and that caused all of the metrics to drop out. After bumping the log level and examining it, it looks like the root issue is that the namespace gets passed in as part of the LabelMatchers on the external end point. Considering the external end point is supposed to represent metrics that are NOT associated to any type of k8s object is this a bug? If not a bug is there a way to disable the namespace from being part of the LabelMatchers?
In our case we have metrics that are being scraped that have no namespace or equivalent label that we would like to use as part of our HPA scaling. Any suggestions would be great, thanks.
UPDATE:
If anyone else runs into this issue. I was eventually able to work around this by changing the metricsQuery to use the LabelValuesByName and filtering out the passed in namespace argument. I still feel like it's a bug that it gets included but maybe there's some reason for it. 🤷♂ Here's an example to save some folks some googling on go templates:
max(<<.Series>>{<< range $key, $value := .LabelValuesByName >><< if ne $key "namespace" >><< $key >>="<< $value >>",<< end >><< end >>} * 100) by (group, topic)

my labels disappear if i put <<.LableMatchers>> in the metric query, but this works for me!!!

Same problem here. This issue is opened since 1 year :(
But the solution "Downgrade to adapter 0.5.0 and queries like 'kafka_minion_topic_partition_message_count{<<.LabelMatchers>>}' works for me.

cc @dgrisonnet maybe you can have a peek at this one? thank you!

If I understand this issue correctly, it only happens with external metrics that are not namespaced (don't have a namespace label) and it is caused by the namespace enforcement for external metrics.
Even though the problem surface with the use of labelSelectors, the issue seems to be related to the fact that the prometheus-adapter doesn't handle non-namespaced external metrics properly.
Recently, there have been some activities around this topic in this feature request: #324.
The solution that was chosen was to allow users to specify whether the external metric is namespaced or not (https://github.com/DirectXMan12/k8s-prometheus-adapter/issues/324#issuecomment-720353976). For non-namespaced external metrics, the namespace enforcement would be dropped.
I am confident to say that adding the feature mentioned above should solve the problem we are seeing here.

I know this is old, but I'm adding this here in case someone else stumbles across this
We were having this issue too on v0.11.2 and apparently the query string parameter is either different from the custom metric side or it changed since the last documentation we found for querying for metrics.
We where using something like: ?metricLabelSelector=queue%3Dtest-reports
When we should have been using: ?labelSelector=queue%3Dtest-reports
Hope that helps anyone else who stumbles across this


🐀

why is it an exe file? shouldn't it be in javaaaaaa?

hi, sorry for calling you out on ares client github. i just needed some
help with gamesense strafe. gamesense default strafe does work on 2b2t, but
I took your advice about the speed setting and for some reason it dosent
make a difference. here's where i did it,
github.com/hausemasterissue/spidersense, you can try and help if u want :)
On Tue, Oct 5, 2021 at 11:48 AM Doogie13 @.***> wrote:

hello HausemasterIssue
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/SimplyProgrammer/Minecraft-Deobfuscator3000/issues/2#issuecomment-934531470,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AVSGCKMVVRA7WFEY7AGA3X3UFMM4JANCNFSM5E72YFEA
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

why is it an exe file? shouldn't it be in javaaaaaa?

Hello, yes it indeed was .jar file for a while but I have decided to convert it into .exe
reason 1. I can add some additional information into .exe file (such as icon)
reason 2. Is fact that .exe file is looking less scary than .exe file because most applications are .exe files.
reason 3. Currently, Deobfuscator3000 should be downloaded from [https://drive.google.com/u/0/uc?export=download&confirm=H8-1&id=1rGNEUmifdM7jomaKo_O6nyKTTUBrHk7_](this link). This will download a setup that will download the application as any normal application and you can launch it using icon from your desktop!


Documenting escaping of special characters in the search layer

Current coverage is 100% (diff: 100%)

Merging #91 into master will not change coverage

@@           master    #91   diff @@
====================================
  Files          63     63
  Lines        1844   1844
  Methods         0      0
  Messages        0      0
  Branches        0      0
====================================
  Hits         1844   1844
  Misses          0      0
  Partials        0      0

Powered by Codecov. Last update 31fa2f5...9de8f89


29 of March 2019 returns a very weird result (Android only).

Describe the bug
Same as a bug that was closed due to lack of info:
30 of March 2014 returns a very weird result #1568
To Reproduce
Steps to reproduce on React Native, Android only, Debug Mode turned Off:

23 March 2018.
moment("2018/03/23").format("DD")
returns: 22

29 March 2019.
moment("2019/03/29").format("DD")
returns: 28

27 March 2020.
moment("2020/03/27").format("DD")
returns: 26

Expected behaviour

23 March 2018.
moment("2018/03/23").format("DD")
returns: 23

29 March 2019.
moment("2019/03/29").format("DD")
returns: 29

27 March 2020.
moment("2020/03/27").format("DD")
returns: 27

Screenshots

Company calendar shows incorrect dates.
We found workaround
const parsedDate = moment(new Date("2020/03/27")).format("DD")
In that way it parsed correctly and returns: 27
Desktop (please complete the following information):

OS: Android
React Native
Versions - "moment": "2.22.2","react-native": "0.55.4",
Debug mode should be OFF, otherwise JS is running on Chrome and it cannot be reproduced.

Smartphone (please complete the following information):

Device: Any Android

Additional context
It happens on March on different days in each year.

If you upgrade your Android to 8.0.0 it fixes the problem.
Awesome solution, it made my day.

@dmitryguesty
I have this problem too. the problem occurs on YYYY/03/22 (22 merch every year) in my case. moment("2018/03/22").toDate() returns 2019-03-21T19:30:00.000Z. therefore I cannot select 22 march on my custom datePicker component.
Have you any idea How can I solve my problem? (I have to support android minSdk 16, so upgrading to android 8 is not an option. also, I tried the debug mode ON, besides what you said, the behavior is correct on this mode and the incorrect behavior occurs in debug mode OFF and release mode.
Thanks


Block explorer UI edit: pagination

Add pagination to both block and peer tables, but not filters

pagination component for blocks and deploys pages

https://user-images.githubusercontent.com/102996538/220489888-9b89b0a0-b735-483f-9584-3e33fd8b6fdf.mov
pagination on the deploys page. also implemented on the blocks page. not fully fleshed out, but gives you an idea of what it would look like.
ready for review @hoffmannjan

thx Megan, looks great, closing it!


Can't run the cremi example.

Hi,
I tried to run the cremi example from: http://funkey.science/gunpowder/tutorial.html.
I did this in a conda environment and ended up with the following error. It comes when calling the build function. Does anyone know what to do about this?
	ERROR:gunpowder.build:something went wrong during the setup of the pipeline, calling tear down
	Traceback (most recent call last):
	  File "train.py", line 147, in <module>
	    train(200000)
	  File "train.py", line 139, in train
	    with gp.build(pipeline):
	  File "/home/sid/anaconda3/envs/tf-py36-gunpowder/lib/python3.6/site-packages/gunpowder/build.py", line 12, in __enter__
	    self.batch_provider.setup()
	  File "/home/sid/anaconda3/envs/tf-py36-gunpowder/lib/python3.6/site-packages/gunpowder/batch_provider_tree.py", line 17, in setup
	    self.__rec_setup(self.output)
	  File "/home/sid/anaconda3/envs/tf-py36-gunpowder/lib/python3.6/site-packages/gunpowder/batch_provider_tree.py", line 70, in __rec_setup
	    self.__rec_setup(upstream_provider)
	  File "/home/sid/anaconda3/envs/tf-py36-gunpowder/lib/python3.6/site-packages/gunpowder/batch_provider_tree.py", line 70, in __rec_setup
	    self.__rec_setup(upstream_provider)
	  File "/home/sid/anaconda3/envs/tf-py36-gunpowder/lib/python3.6/site-packages/gunpowder/batch_provider_tree.py", line 70, in __rec_setup
	    self.__rec_setup(upstream_provider)
	  [Previous line repeated 4 more times]
	  File "/home/sid/anaconda3/envs/tf-py36-gunpowder/lib/python3.6/site-packages/gunpowder/batch_provider_tree.py", line 71, in __rec_setup
	    provider.setup()
	  File "/home/sid/anaconda3/envs/tf-py36-gunpowder/lib/python3.6/site-packages/gunpowder/batch_provider_tree.py", line 17, in setup
	    self.__rec_setup(self.output)
	  File "/home/sid/anaconda3/envs/tf-py36-gunpowder/lib/python3.6/site-packages/gunpowder/batch_provider_tree.py", line 70, in __rec_setup
	    self.__rec_setup(upstream_provider)
	  File "/home/sid/anaconda3/envs/tf-py36-gunpowder/lib/python3.6/site-packages/gunpowder/batch_provider_tree.py", line 70, in __rec_setup
	    self.__rec_setup(upstream_provider)
	  File "/home/sid/anaconda3/envs/tf-py36-gunpowder/lib/python3.6/site-packages/gunpowder/batch_provider_tree.py", line 71, in __rec_setup
	    provider.setup()
	  File "/home/sid/anaconda3/envs/tf-py36-gunpowder/lib/python3.6/site-packages/gunpowder/nodes/hdf5like_source_base.py", line 73, in setup
	    with self._open_file(self.filename) as data_file:
	  File "/home/sid/anaconda3/envs/tf-py36-gunpowder/lib/python3.6/site-packages/gunpowder/nodes/hdf5_source.py", line 39, in _open_file
	    return h5py.File(filename, 'r')
	  File "/home/sid/anaconda3/envs/tf-py36-gunpowder/lib/python3.6/site-packages/h5py/_hl/files.py", line 408, in __init__
	    swmr=swmr)
	  File "/home/sid/anaconda3/envs/tf-py36-gunpowder/lib/python3.6/site-packages/h5py/_hl/files.py", line 173, in make_fid
	    fid = h5f.open(name, flags, fapl=fapl)
	  File "h5py/_objects.pyx", line 54, in h5py._objects.with_phil.wrapper
	  File "h5py/_objects.pyx", line 55, in h5py._objects.with_phil.wrapper
	  File "h5py/h5f.pyx", line 88, in h5py.h5f.open
	OSError: Unable to open file (truncated file: eof = 149520384, sblock->base_addr = 0, stored_eof =<PHONE_NUMBER>)

The conda environment I have installed has python=3.6,  scikit-image==0.14.2, numpy==1.16, tensorflow-gpu==1.14.0,	Nvidia Driver Version: 410.78       CUDA Version: 10.0.
As this is run on the examples provided by the cremi dataset, sample_A_padded_20160501.hdf, it seems a bit strange. Maybe someone can point out my mistake.
Thank you.

Sorry for the late reply.
We have just written two new tutorials, one of them covering the basics of how to set up a pipeline in much more detail than the example you used. I hope you will find it useful.
Regarding the error you observed, that seems to be related to h5py. At a first glance, it looks as if the file you use is corrupted (judging from the truncated file part of the error message). But who knows, HDF5 does not stop surprising us in unexpected ways...
I will close for now as this does not seem to be a gunpowder related issue. Happy to reopen if a case can be made that it is.


Is the memory leakage with stutter stunter ever going to be fixed?

Just wondering because it's been like this for a while.

StutterStunter purposefully disables garbage collection until you teleport to the next stage or pause the game, so that's why memory usage keeps building up for you. I don't think I have any memory-leak-prone code but I'll check again.


kinetics skeleton data download issue

Thanks for get work!
I tried to download kinetics skeleton data many times last  night, the link is very unstable, and seems to expired now.

Hi, cir7,
We have updated the download link, please try the new link instead.


use ES6 actually

Refactor to use actual ES6 features permitted by node 7.x requirement

the rest LGTM


is it possible to set accessibilityViewIsModal true

is it possible to set accessibilityViewIsModal to true on EKWindow? All windows are siblings so this will ignore others window for accessibility purposes.

You are welcome to fork and open a pull request. Unfortunately, I don't have time to experiment with solutions to this ATM, but if you are able to, please feel free to PR for my review.

@AmirCa84, It turned out I had time to do this. :-)
All EKWindow instances are marked accessibilityViewIsModal = true. That seems to work properly with all types of background interactions. Please give 1.2.5 a try.

Really appreciated it. :)


.NET Framework 4.6.2, run with Mono on Ubuntu

What version of SQLitePCLRaw are you using?
2.1.9
If you are using one of the SQLitePCLRaw bundle packages, which one?
SQLitePCLRaw.bundle_e_sqlite3
What platform are you running on?  What operating system?  Which version?  What CPU?
Run Mono on Ubuntu, Mono JIT compiler version <IP_ADDRESS>,  Ubuntu 22.04.4 LTS. Build on Windows 10x64, Intel Core i7-4790K
What target framework are you building for?
net 4.6.2
Are you on .NET Framework or the newer stuff (.NET Core, .NET 5+, etc)?
net 4.6.2
Are you using the command line, or an IDE?  Which IDE?  Which version of that IDE?
Visual Studio 2022
Is this problem something that just started happening?  For example, were things working well for you and then you updated something and then the problem showed up?  What changed?
First with Mono on Ubuntu. On Windows fine work.
What is the exact error message you are seeing when the problem happens?
mono ./ConsoleApp2.exe
System.Exception: Library e_sqlite3 not found
plat: dlopen
suffix: SO
possibilities (2):
    1) /home/santer/Release/runtimes/linux-x64/native/libe_sqlite3.so
    2) /home/santer/Release/libe_sqlite3.so
dlopen TryLoad: /home/santer/Release/runtimes/linux-x64/native/libe_sqlite3.so
thrown: System.DllNotFoundException: dl assembly:<unknown assembly> type:<unknown type> member:(null)
  at (wrapper managed-to-native) SQLitePCL.NativeLibrary+NativeLib_dlopen.dlopen(string,int)
  at SQLitePCL.NativeLibrary.TryLoad (System.String name, SQLitePCL.NativeLibrary+Loader plat, System.Action`1[T] log, System.IntPtr& h) [0x00069] in <e9bb8263add7423ea112c3ab411d5a61>:0
dlopen TryLoad: /home/santer/Release/libe_sqlite3.so
thrown: System.DllNotFoundException: dl assembly:<unknown assembly> type:<unknown type> member:(null)
  at (wrapper managed-to-native) SQLitePCL.NativeLibrary+NativeLib_dlopen.dlopen(string,int)
  at SQLitePCL.NativeLibrary.TryLoad (System.String name, SQLitePCL.NativeLibrary+Loader plat, System.Action`1[T] log, System.IntPtr& h) [0x00069] in <e9bb8263add7423ea112c3ab411d5a61>:0
NOT FOUND

  at SQLitePCL.NativeLibrary.Load (System.String libraryName, System.Reflection.Assembly assy, System.Int32 flags) [0x00058] in <e9bb8263add7423ea112c3ab411d5a61>:0
  at SQLitePCL.Batteries_V2.MakeDynamic (System.String name, System.Int32 flags) [0x00010] in <e9bb8263add7423ea112c3ab411d5a61>:0
  at SQLitePCL.Batteries_V2.DoDynamic_cdecl (System.String name, System.Int32 flags) [0x00000] in <e9bb8263add7423ea112c3ab411d5a61>:0
  at SQLitePCL.Batteries_V2.Init () [0x00000] in <e9bb8263add7423ea112c3ab411d5a61>:0
  at ConsoleApp2.Program.Insert () [0x00000] in <9099a5d5f65441eeab060f19a181d213>:0

Are you using PackageReference or packages.config?
PackageReference
If you are using mobile platforms, are you on classic/legacy Xamarin or on .NET 6 and higher?
.NET Framework 4.6.2
Sometimes other packages using SQLitePCLRaw cause problems when they are mixed together.  What other packages are you including in your project?
Microsoft.Data.Sqlite.Core
SQLitePCLRaw.core
SQLitePCLRaw.bundle_e_sqlite3

How can we reproduce the problem you are seeing?  Your issue will get attention much faster if you attach a minimal reproduction sample project.
https://github.com/SanteR1/ConsoleApp2

When using mono, it may be necessary to manually copy the native library into the proper place (like your build output directory).

@ericsink Of course I tried to copy manually from .nuget\packages\sqlitepclraw.lib.e _ sqlite3\2.1.9\runtimes\linux-x64\native to /home/santer/Release/runtimes/linux-x64/native/ and to /home/santer/Release/

There are two possibilities:

It can't find the file
It can't find a dependency of the file

I wonder about the difference between e_sqlite3.so and libe_sqlite3.so on your machine.
Or...
Try ldd e_sqlite.so and look for dependencies not available on your machine.  Like maybe your C library is too old or too new.

Very strange
santer@DESKTOP-1SSN6VL:~/Release$ mono ConsoleApp2.exe
System.Exception: Library e_sqlite3 not found
plat: dlopen
suffix: SO
possibilities (2):
    1) /home/santer/Release/runtimes/linux-x64/native/libe_sqlite3.so
    2) /home/santer/Release/libe_sqlite3.so
dlopen TryLoad: /home/santer/Release/runtimes/linux-x64/native/libe_sqlite3.so
thrown: System.DllNotFoundException: dl assembly:<unknown assembly> type:<unknown type> member:(null)
  at (wrapper managed-to-native) SQLitePCL.NativeLibrary+NativeLib_dlopen.dlopen(string,int)
  at SQLitePCL.NativeLibrary.TryLoad (System.String name, SQLitePCL.NativeLibrary+Loader plat, System.Action`1[T] log, System.IntPtr& h) [0x00069] in <e9bb8263add7423ea112c3ab411d5a61>:0
dlopen TryLoad: /home/santer/Release/libe_sqlite3.so
thrown: System.DllNotFoundException: dl assembly:<unknown assembly> type:<unknown type> member:(null)
  at (wrapper managed-to-native) SQLitePCL.NativeLibrary+NativeLib_dlopen.dlopen(string,int)
  at SQLitePCL.NativeLibrary.TryLoad (System.String name, SQLitePCL.NativeLibrary+Loader plat, System.Action`1[T] log, System.IntPtr& h) [0x00069] in <e9bb8263add7423ea112c3ab411d5a61>:0
NOT FOUND

  at SQLitePCL.NativeLibrary.Load (System.String libraryName, System.Reflection.Assembly assy, System.Int32 flags) [0x00058] in <e9bb8263add7423ea112c3ab411d5a61>:0
  at SQLitePCL.Batteries_V2.MakeDynamic (System.String name, System.Int32 flags) [0x00010] in <e9bb8263add7423ea112c3ab411d5a61>:0
  at SQLitePCL.Batteries_V2.DoDynamic_cdecl (System.String name, System.Int32 flags) [0x00000] in <e9bb8263add7423ea112c3ab411d5a61>:0
  at SQLitePCL.Batteries_V2.Init () [0x00000] in <e9bb8263add7423ea112c3ab411d5a61>:0
  at ConsoleApp2.Program.Insert () [0x00000] in <fe06bce1ea034df5871fd74144c24654>:0

santer@DESKTOP-1SSN6VL:~/Release$ ldd /home/santer/Release/libe_sqlite3.so
        linux-vdso.so.1 (0x00007fffedd3c000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f238c5d0000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f238cb3f000)

santer@DESKTOP-1SSN6VL:~/Release$ ldd ./libe_sqlite3.so
        linux-vdso.so.1 (0x00007ffffe521000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f355ffd0000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f3560613000)

santer@DESKTOP-1SSN6VL:~/Release$ ldd ./runtimes/linux-x64/native/libe_sqlite3.so
        linux-vdso.so.1 (0x00007fffd4a31000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc7b81d0000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fc7b88c3000)

Could this be an LD_LIBRARY_PATH problem?

Actually that probably doesn't make sense.

I did not initially install $LD_LIBRARY_PATH, but I have now checked
santer@DESKTOP-1SSN6VL:~/Release$ echo $LD_LIBRARY_PATH

santer@DESKTOP-1SSN6VL:~/Release$ export LD_LIBRARY_PATH=/home/santer/Release:$LD_LIBRARY_PATH
santer@DESKTOP-1SSN6VL:~/Release$ echo $LD_LIBRARY_PATH
/home/santer/Release:
santer@DESKTOP-1SSN6VL:~/Release$ mono ConsoleApp2.exe
System.Exception: Library e_sqlite3 not found
plat: dlopen
suffix: SO
possibilities (2):
    1) /home/santer/Release/runtimes/linux-x64/native/libe_sqlite3.so
    2) /home/santer/Release/libe_sqlite3.so
dlopen TryLoad: /home/santer/Release/runtimes/linux-x64/native/libe_sqlite3.so
thrown: System.DllNotFoundException: dl assembly:<unknown assembly> type:<unknown type> member:(null)
  at (wrapper managed-to-native) SQLitePCL.NativeLibrary+NativeLib_dlopen.dlopen(string,int)
  at SQLitePCL.NativeLibrary.TryLoad (System.String name, SQLitePCL.NativeLibrary+Loader plat, System.Action`1[T] log, System.IntPtr& h) [0x00069] in <e9bb8263add7423ea112c3ab411d5a61>:0
dlopen TryLoad: /home/santer/Release/libe_sqlite3.so
thrown: System.DllNotFoundException: dl assembly:<unknown assembly> type:<unknown type> member:(null)
  at (wrapper managed-to-native) SQLitePCL.NativeLibrary+NativeLib_dlopen.dlopen(string,int)
  at SQLitePCL.NativeLibrary.TryLoad (System.String name, SQLitePCL.NativeLibrary+Loader plat, System.Action`1[T] log, System.IntPtr& h) [0x00069] in <e9bb8263add7423ea112c3ab411d5a61>:0
NOT FOUND

  at SQLitePCL.NativeLibrary.Load (System.String libraryName, System.Reflection.Assembly assy, System.Int32 flags) [0x00058] in <e9bb8263add7423ea112c3ab411d5a61>:0
  at SQLitePCL.Batteries_V2.MakeDynamic (System.String name, System.Int32 flags) [0x00010] in <e9bb8263add7423ea112c3ab411d5a61>:0
  at SQLitePCL.Batteries_V2.DoDynamic_cdecl (System.String name, System.Int32 flags) [0x00000] in <e9bb8263add7423ea112c3ab411d5a61>:0
  at SQLitePCL.Batteries_V2.Init () [0x00000] in <e9bb8263add7423ea112c3ab411d5a61>:0
  at ConsoleApp2.Program.Insert () [0x00000] in <fe06bce1ea034df5871fd74144c24654>:0
santer@DESKTOP-1SSN6VL:~/Release$

I have the exact same problem using SQLitePCLRaw.bundle_e_sqlite3 v2.1.10 on a Raspberry Pi 5.
On Windows / .NET 4.8 it works fine.
On Raspberry Pi OS / Mono I get the exact same error message as above.
I also manually had to copy libe_sqlite3.so to the output directory, but even then the error persisted.
ldd output:
ldd ./libe_sqlite3.so
	linux-vdso.so.1 (0x00007ffee0258000)
	libc.so.6 => /lib/aarch64-linux-gnu/libc.so.6 (0x00007ffedff00000)
	/lib/ld-linux-aarch64.so.1 (0x00007ffee0220000)


Building on Windows causes error

When building on Windows with the MSVC toolchain and without the --features=ispc option, I get the following error:
error: could not find native static library `kernelx86_64-pc-windows-msvc`, perhaps an -L flag is missing?

Should be fixed now, seems github has limit my git lfs storage and trying to charge from it, shame on them.
I replaced all my lfs objects with normal git objects with a breaking history rewritten, now it should be built on windows.

Besides, do not run cargo test on windows now, as the astc kernel currently not support well, I encountered a cpp-related cross platform issue. cargo run --example main should work well.

@PowerBall253 I have setup a windows lib deployment workflow through github actions, seems ispc cannot really do cross compilation on just one host machine. You can only build x86_64-pc-windows-msvc.lib and i686-pc-windows-msvc.lib on windows with msvc toolchain, the rust side however has a great support for cross compilation.

@PowerBall253 Closing this, if you still have a problem, feel free to reopen it.

Seems to work with the latest version, thanks!


ADD version option to command line

We need to automate the build process to concatenate version string from Git tags and hashes (e.g. v1.1.0-357ab63) instead of manually filling a string constant, as it would be easily drop out of sync with code and become meaningless or even confusing.


data url itty bitty

https://gist.github.com/voronoipotato/daf2c79626b71666c5812c2be7152e7c
I used the SingleFile firefox extension to save itty.bitty.site to a file, and then used
$ cat ittybitty.html | base64 | sed "s|^|data\:text/html;base64,|" to encode that into a data url. Obviously the current url is very verbose but 80% of that is jquery which can probably be replaced. You don't have to respond to this or respect it, but I found it interesting that you can put it in its own url.

It looks like my current attempt has a bit of an issue with rewriting the URL. I'll keep at it, it's entertaining.


multiple-result rolls

Hello,
A common roll in TTRPGs is to re-roll twice on a given result, and also, to roll multiple dice and want the individual results of each die roll.
e.g.: roll 1d8, if 8, then roll 2d8 and keep each result. Thus: roll:1d8, [8], automatically reroll:2d8: [6] and [5]
and
roll 4d4+1, wanting each result of the four dice. Thus: roll:4d4+1, [4+1], [2+1], [4+1], [1+1]: 5, 3, 5, 2
Also, would it be possible to set the result pop-up to be a a different colour on crit success and crit fail? The ** and __ aren't being noticed by my players.
Thank you so much for this script!

Hi @draco963
So there's three things here:
Re-roll multiple times

roll 1d8, if 8, then roll 2d8 and keep each result. Thus: roll:1d8, [8], automatically re-  roll:2d8: [6] and [5]

Q1. Would this keep the initial d8, or would the first roll be dropped?
For example, If I roll 1d8: [8], then re-roll twice and get [6, 5], would the final result be:
[8, 6, 5] = 19 // keeping all three rolls

Or
[6, 5] = 11 // dropping the initial roll of 8

Q2. If any of the secondary rolls also roll the matching value, do they also explode and, if so, should they explode twice?
For example, If I roll 1d8: [8], I re-roll twice and get [8, 6]. Do I then re-roll the second 8, and so on as long as an 8 is rolled?
Q3. If the initial roll is for more than 1 die, do any initial rolls of an 8 cause a re-roll, or just the first?
3d8: [8, 4, 8] // Do I re-roll 4 times - twice for each roll of an 8?

Addition to individual roll results

roll 4d4+1, wanting each result of the four dice. Thus: roll:4d4+1, [4+1], [2+1], [4+1], [1+1]: 5, 3, 5, 2

I think this is very similar to what's been implemented here (But not released yet): https://github.com/GreenImp/rpg-dice-roller/issues/198#issuecomment-717883609
That introduced a Multiply modifier, which will multiply each individual row by a given factor (Rather than the total value):
5d10mul2: [7, 10*, 4, 6, 10*] = 57 // The max value on the die (10) is multiplied by 2

You can also specify a compare point, to change which values will be multiplied:
5d10mul2>0: [7*, 10*, 4*, 6*, 10*] = 74 // Any roll over 0, which is all rolls, are multiplied by 2

I suppose that the same logic could be applied to an "addition" modifier, which could be used something like:
4d4add1>0: [4+, 2+, 4+, 1+] = 15

Would that do the job?
Colours for critical success / failure

would it be possible to set the result pop-up to be a a different colour on crit success and crit fail?

This isn't really possible, and never will be, with the base library. When notation is parsed, and rolled, it returns various objects that detail the results. These objects provide a very basic text output (When cast to a string) to describe themselves. These are the roll results that you see.
It's purposefully designed to be basic text, with no HTML etc. so that it can be used in various different places (Including places that don't support HTML).
The idea is that the library can be used as a backbone for GUIs to be built on top of. So, if you need colours, or different formatting, this would have to be built on top of this library.
It is possible to do, using the returned objects, rather than casting them to a string. However, it's probably a bit fiddly as well.
There is a ticket open, #132 , which would make this process a lot easier. Although it's quite a big task to complete, and I'm not sure when I'll get the chance to work on it (Pull requests are always appreciated!).
So, in short, if you do need different styles, you'll have to build your own UI wrapper for the library.

Q1: the double re-roll drops the initial result of 8. However, it also is
not added together; it is a double result. So:
Roll:1d8 = [8]
re-rolls 6,3 = [6] and [3]
Q2: for the example I gave, either exploding the 8 a second generation or
actually rolling (in the background) 1d7 would ideally both be options that
the user could select. So:
Option 1:
Roll:1d8 = [8]
re-rolls 6,8 = [6] and [exploding re-roll]
re-rolls 1,3 = [6] and [1] and [3]
Option 2:
Roll:1d8 = [8]
re-rolls 6,8 = [6] and [8 not allowed on re-roll]
re-rolls 1 = [6] and [1]
Ideally, both a penetrating explosion and an invalid 2nd roll would be
possible, as there are spells that use both schema.
Q3: Oh, I hadn't thought of this... I'm not aware of any spells that use
more than one die on the initial roll... I think maybe this situation can
be ignored?
For the "individual roll results," take, for example, a spell like Magic
Missile (emphasis mine):
"A missile of magical energy strikes your target, dealing 1d4+1 points of
damage.
For every two caster levels beyond 1st, you gain an additional missile —
two at 3rd level, three at 5th, etc.
So, as you can see, the need is not for a grand total of all the dice
rolled +1 for each dice, but rather, individual results for each dice
rolled. Because each missile may target a different creature, we want
individual results.
Thus:
1d4+1ea = [4]
2d4+1ea = [4] and [5]
3d4+1ea = [3] and [2] and [5]
4d4+1ea = [2] and [5] and [4] and [5]
etc...
I know it's a super minor thing, but I also know users in general. Lots of
players of  D&D (and other TTRPGs) don't actually know how to read or use
the dice properly, so, *anything *the DM can do to limit misunderstandings
saves a *lot *of time and frustration.
And the colour bit will be waaay beyond my programming skills, lol. I'd be
happy to help, I would, but I don't think I'd be of any use!
Thank you for getting back to me!
On Tue, 2 Feb 2021 at 20:33, Lee Langley-Rees<EMAIL_ADDRESS>wrote:

Hi @draco963 https://github.com/draco963
So there's three things here:
Re-roll multiple times
roll 1d8, if 8, then roll 2d8 and keep each result. Thus: roll:1d8, [8],
automatically re- roll:2d8: [6] and [5]
Q1. Would this keep the initial d8, or would the first roll be dropped?
For example, If I roll 1d8: [8], then re-roll twice and get [6, 5], would
the final result be:
[8, 6, 5] = 19 // keeping all three rolls
Or
[6, 5] = 11 // dropping the initial roll of 8
Q2. If any of the secondary rolls also roll the matching value, do they
also explode and, if so, should they explode twice?
For example, If I roll 1d8: [8], I re-roll twice and get [8, 6]. Do I
then re-roll the second 8, and so on as long as an 8 is rolled?
Q3. If the initial roll is for more than 1 die, do any initial rolls of an
8 cause a re-roll, or just the first?
3d8: [8, 4, 8] // Do I re-roll 4 times - twice for each roll of an 8?
Addition to individual roll results
roll 4d4+1, wanting each result of the four dice. Thus: roll:4d4+1, [4+1],
[2+1], [4+1], [1+1]: 5, 3, 5, 2
I think this is very similar to what's been implemented here (But not
released yet): #198 (comment)
https://github.com/GreenImp/rpg-dice-roller/issues/198#issuecomment-717883609
That introduced a Multiply modifier, which will multiply each individual
row by a given factor (Rather than the total value):
5d10mul2: [7, 10*, 4, 6, 10*] = 57 // The max value on the die (10) is multiplied by 2
You can also specify a compare point
https://greenimp.github.io/rpg-dice-roller/guide/notation/modifiers.html#compare-point,
to change which values will be multiplied:
5d10mul2>0: [7*, 10*, 4*, 6*, 10*] = 74 // Any roll over 0, which is all rolls, are multiplied by 2
I suppose that the same logic could be applied to an "addition" modifier,
which could be used something like:
4d4add1>0: [4+, 2+, 4+, 1+] = 15
Would that do the job?
Colours for critical success / failure
would it be possible to set the result pop-up to be a a different colour
on crit success and crit fail?
This isn't really possible, and never will be, with the base library. When
notation is parsed, and rolled, it returns various objects
https://greenimp.github.io/rpg-dice-roller/api/ that detail the
results. These objects provide a very basic text output (When cast to a
string) to describe themselves. These are the roll results that you see.
It's purposefully designed to be basic text, with no HTML etc. so that it
can be used in various different places (Including places that don't
support HTML).
The idea is that the library can be used as a backbone for GUIs to be
built on top of. So, if you need colours, or different formatting, this
would have to be built on top of this library.
It is possible to do, using the returned objects, rather than casting them
to a string. However, it's probably a bit fiddly as well.
There is a ticket open, #132
https://github.com/GreenImp/rpg-dice-roller/issues/132 , which would
make this process a lot easier. Although it's quite a big task to complete,
and I'm not sure when I'll get the chance to work on it (Pull requests are
always appreciated!).
So, in short, if you do need different styles, you'll have to build your
own UI wrapper for the library.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/GreenImp/rpg-dice-roller/issues/205#issuecomment-772139995,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ADEI4ZSR6CVMNC2UBFFLLWDS5CRWFANCNFSM4W5P6HSQ
.

Thanks for the feedback. I've added some "tasks" to the issue description for sorting out the ability to roll multiple dice on each explode / re-roll, which should cover the first bit.
In terms of the "individual roll results"; am I understanding correctly that what you're actually wanting is for the dice roller to return multiple values as the result?
So, using the magic missile example, if they have 3 magic missiles, you would do something like:
// rolling 1d4 for each missile
3d4+1: [3 + 1, 4 + 1, 1 + 1] = [4, 5, 2]

And then the user would choose which missile / damage value to hit each opponent with.
The library is really only designed to return a single result value, and it always totals the rolls.
You could roll the missiles separately:
1d4+1: [3]+1 = 4
1d4+1: [4]+1 = 5
1d4+1: [1]+1 = 2

If you're using the DiceRoller object, rather than the DiceRoll, you would also have all of the roles stored in the log:
const roller = new DiceRoller();

const rolls = roller.roll('1d4+1', '1d4+1', '1d4+1');

With that, rolls would be an array with three DiceRoll objects (One for each notation parsed), and you can access their roll values with something like:
rolls.foreach((roll) => {
    console.log(roll.total);
});

@draco963 I've been thinking about the functionality to re-roll multiple times and could do with some feedback on possible notations for it.
The functionality is similar, but not quite the same, to what's being discussed in #207, and I'm having difficulty thinking of sensible notation that could be used for both of them, that wont conflict with each other.
I've created a discussion #224 where I'm hoping that I can get some feedback from  Tillerz and yourself, to try and come up with a good solution.


Calendar Height is not Responding

Hi, I'm implementing this calendar on a site I'm working on and I'm having an issue with the height of the calendar.
The reason I need to fix the height on the container is that the content within each event in the calendar is too large for the height of the event meaning it is cutting out the content. Is there a workaround for this?
Here is the code I have for the calendar
<div class="sections-container" style="width: 1000px; height: 1000px;" id="VueRoot">
	<vue-cal
		ref="calendar"
		:events="events"
		style="width: 1000px; height: 1000px"
                :time-from="6.5 * 60"
		:time-to="22.5 * 60"
		:snap-to-time="15"
		:disable-views="['years', 'year', 'month', 'day']"
		hide-view-selector
		@view-change="getCalendarEvents()"
	/></vue-cal>
</div>

I am also setting the following CSS to style the calendar:
/* Calendar
---------------------------------------------*/

/* Calendar Theme */
.vuecal__title-bar {
	background-color: #062343;
	color: #fff;
}

.vuecal__arrow {
	color: #fff;
}

.vuecal__cell--selected {
	background-color: rgba(235, 235, 255, 0.5);
}

.vuecal__event {
	display: flex!important;
	flex-direction: column!important;
	justify-content: center !important;
}

/* Calendar Event: Classes */
.vuecal__event.class-event {
	background-color: rgba(255, 102, 102, 0.9);
	border: 1px solid rgb(233, 82, 82);
	color: #fff;
}

/* Calendar Event: Party Bookings */
.vuecal__event.party-booking-event {
	background-color: rgba(105, 157, 240, 0.9);
	border: 1px solid rgb(89, 147, 240);
	color: #fff;
}

/* Calendar Event: Holiday Clubs */
.vuecal__event.holiday-club-event {
	background-color: rgba(253, 156, 66, 0.9);
	border: 1px solid rgb(233, 136, 46);
	color: #fff;
}
/* Calendar Event: Gym Bookings */
.vuecal__event.gym-booking-event {
	background-color: rgba(163, 163, 163, 0.9);
	border: 1px solid rgb(138, 138, 138);
	color: #fff;
}
/* Calendar Event: Staff Holidays */
.vuecal__event.staff-holiday-event {
	background-color: rgba(191, 140, 243, 0.9);
	border: 1px solid rgb(166, 93, 238);
	color: #fff;
}

The image below is the problem I am experiencing so you can see why I want to change the height of the calendar.

Thank you in advance, I hope you're well :)

Hi @discovery-mark,
If I understand well you want to increase the time slot height (increase the height between 11:30 and 12:30 for instance).
If that's what you are looking for you can use the time-cell-height option.
https://antoniandre.github.io/vue-cal/#ex--timeline-tweaking

@antoniandre
Thank you for your response.
This has solved my issue :)

@antoniandre
Thank you for your response.
This has solved my issue :)


Update AH.GET_SCANCODE_DATA to return First and Last Name

[x] Verify with Health if this is legal name, preferred name, etc
[x] Update Lambda to return FIRST_NAME, LAST_NAME
[ ] Update stored procedure to join with SAH on PID or EID

The stored procedure was updated. I think we need to check with Judy and/or Vince to see why employee names don't populate. Maybe it's looking for very specific format on employee id? We are getting the numeric version from SSO/JWT (no leading 0's).
The API will return FULL_NAME, where
FULL_NAME = STUDENT_FULL_NAME if IDENTITY_TYPE contains "student"
else  FULL_NAME = EMPLOYEE_FULL_NAME if IDENTITY_TYPE contains employee
else FULL_NAME = null otherwise (this shouldn't happen)


Last changed by...

User story
As a user a multi-user process I want to know who made the change to a specific node so that I can clarify meaning
User input
Tag input with short name. Can go back and clarify what was meant by the comment.
Sharepoint list ID
93
Suggested solution
Last changed by Thorjan Knudsvik, 19.10.21 in the sidebar below the card input or below the problem input etc. Possibly with a expanding list with all changes?

Design may relate to #158

@knudsvik As it is today, this is a quick fix, but might be affected by planned API changes.
@Magos what did we decide upon here? WRT #154


docs: update create-react-app recommendation to vite

Documentation
This small PR removes outdated / deprecated create-react-app from recommendation and replace with Vite instead.
For more information, see this comment.

Good suggestion, and thanks for sharing the discussion. A good read! I'll merge it right away!

Hello, just saw that you have this public repository template that uses CRA. Do you think that the template should also be updated to Vite too?  :)
I was wondering as well, if we should instead redirect users to the official React docs here, and adding Vite as a direct alternative to CRA instead? Because currently we are only recommending Vite, which might not be the best choice for everyone.
@jeffreylanters


PowerShell command for activating odkxenv

The command here should be  " .\odkxenv\Scripts\activate "

Hi , May  I work on this @wbrunette

@sanyud24 I assigned the issue to you


e2e: retry on backupnow failure

@xiang90
Seems to work :)
Let me try it a few times more.

@etcd-bot retest this please

@etcd-bot retest this please

Passed a few times. Merging


Add a pull request template

Add a pull request template
Screen shot

Codecov Report

:exclamation: No coverage uploaded for pull request base (main@9bc52e1). Click here to learn what that means.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main       #5   +/-   ##
=======================================
  Coverage        ?   92.72%
=======================================
  Files           ?        9
  Lines           ?       55
  Branches        ?        1
=======================================
  Hits            ?       51
  Misses          ?        3
  Partials        ?        1

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 9bc52e1...c01c9ce. Read the comment docs.


[ISSUE #5913] GetSyncStateSetSubCommand can also print that the broker is not in SyncStateSet

Make sure set the target branch to develop
What is the purpose of the change
Close #5913
GetSyncStateSetSubCommand can also print that the broker is not in SyncStateSet
Brief changelog
GetSyncStateSetSubCommand can also print that the broker is not in SyncStateSet
Verifying this change
XXXX
Follow this checklist to help us incorporate your contribution quickly and easily. Notice, it would be helpful if you could finish the following 5 checklist(the last one is not necessary)before request the community to review your PR.

[x] Make sure there is a Github issue filed for the change (usually before you start working on it). Trivial changes like typos do not require a Github issue. Your pull request should address just this issue, without pulling in other changes - one PR resolves one issue.
[x] Format the pull request title like [ISSUE #123] Fix UnknownException when host config not exist. Each commit in the pull request should have a meaningful subject line and body.
[x] Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
[x] Write necessary unit-test(over 80% coverage) to verify your logic correction, more mock a little better when cross module dependency exist. If the new feature or significant change is committed, please remember to add integration-test in test module.
[x] Run mvn -B clean apache-rat:check findbugs:findbugs checkstyle:checkstyle to make sure basic checks pass. Run mvn clean install -DskipITs to make sure unit-test pass. Run mvn clean test-compile failsafe:integration-test  to make sure integration-test pass.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

Codecov Report

Merging #5935 (fb6d94b) into develop (a961a9b) will decrease coverage by 0.01%.
The diff coverage is 0.00%.

@@              Coverage Diff              @@
##             develop    #5935      +/-   ##
=============================================
- Coverage      43.36%   43.36%   -0.01%
- Complexity      8810     8812       +2
=============================================
  Files           1090     1090
  Lines          76407    76419      +12
  Branches        9981     9983       +2
=============================================
+ Hits           33135    33138       +3
- Misses         39126    39143      +17
+ Partials        4146     4138       -8

Impacted Files
Coverage Δ

...g/apache/rocketmq/client/impl/MQClientAPIImpl.java
23.01% <0.00%> (ø)

...q/controller/impl/manager/ReplicasInfoManager.java
61.07% <0.00%> (-0.89%)
:arrow_down:

...tmq/remoting/protocol/body/BrokerReplicasInfo.java
0.00% <0.00%> (ø)

...apache/rocketmq/tools/admin/DefaultMQAdminExt.java
30.28% <ø> (ø)

...he/rocketmq/tools/admin/DefaultMQAdminExtImpl.java
25.25% <ø> (ø)

...mq/tools/command/ha/GetSyncStateSetSubCommand.java
0.00% <0.00%> (ø)

...ocketmq/tieredstore/container/TieredIndexFile.java
68.10% <0.00%> (-3.88%)
:arrow_down:

...controller/impl/DefaultBrokerHeartbeatManager.java
82.27% <0.00%> (-3.80%)
:arrow_down:

...he/rocketmq/client/trace/AsyncTraceDispatcher.java
82.21% <0.00%> (-2.41%)
:arrow_down:

.../apache/rocketmq/store/ha/DefaultHAConnection.java
65.86% <0.00%> (-1.21%)
:arrow_down:

... and 13 more

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Move to new list not working

This feature is not working, either by choosing from the context menu, or from the extension option page.

Same problem on my end.

I am sure this doesn't work for anyone but the person who made the extension


Update behaviour for immutable and computed properties

OpenAPI Documentation

Display computed properties in the Create-OpenApi, if it is also annotated as ComputedDefaultValue
Hide immutable properties in the Update-OpenApi
Include GeneratedProperties (in addition to Declared) when generating the Entity OpenAPI documentation

Property Filtering

Strips computed fields from create operations, unless the property is also annotated as ComputedDefaultValue
Strips computed fields from update operations

Annotations

Enum can be annotated as nullable and immutable

Bugfixes

Initialise the $cookie property of a request when converting Illuminate\Request. Fixes "Request::$cookies must not be accessed before initialization" when Telescope and APP_DEBUG are enabled.
EloquentEntitySet::create complies with attribute.source for navigation source (thanks @sean-james-eco)

Rollback on the last commit... Going on holidays for a couple of days, I'll deal with exposing Generated Properties via OpenAPI next week: The tests fail because snapshots don't match. I'm not too comfortable with this, but in case you want to take a look at that here's the a patch of the code changes.
Meanwhile I'd be very much obliged if the above changes could be approved :)
GeneratedProperties_in_OpenAPI_Schema.patch

Found the docker command to boot up mongo - all test snapshots are updated now: Computed properties are listed visible in the OpenAPI documentation when describing an Entity.
Ready for merge (in my opinion)

Hi @yvo-niedrich, thanks for the work! On the computed default properties I'm not sure it's correct to indicate those can be provided during a create operation, as they are still computed by the server and not the client?

Ah, no you're right, "A value for this property can be provided by the client on insert and update. If no value is provided on insert, a non-static default value is generated"

and in that case, the entity set drivers right now are incorrectly annotating with Computed, not ComputedDefaultValue - would you mind making that change as part of this?

Ah, I believe I see what you mean. This one for example - right?
I'll go ahead and completely separate Computed from ComputedDefault in the types then... Will do tomorrow.

In https://github.com/flat3/lodata/blob/be527e5a941fb4f9640778446002981823daed19/src/Drivers/EloquentEntitySet.php#L680
and https://github.com/flat3/lodata/blob/be527e5a941fb4f9640778446002981823daed19/src/Drivers/CSVEntityType.php#L21 for example, the standard drivers should be using Computed here.

Had some time to spare and updated the PR already 🙈
I've also included another change (again thanks to @sean-james-eco) to properly validate UUIDs. Now a 400 error is properly returned - instead of the database error (500) when the Eloquent Driver tries to write an invalid value to the database.

Hey @27pchrisl are we still missing some of the updates you mentioned? I thought I caught them all 🤔

@yvo-niedrich Nope! I just hadn't got round to reading all the changes : ) I'll tag shortly...


Job Status Failed

Hi,
job status return always failed but message is sent successfully

Works like a charm!
Thanks @neonidian


Istallation issue

Hello, when I run the installation code in RStudio:
devtools::install_github("BlakeRMills/MetBrewer")
I get the following error message:
Error: Failed to install 'unknown package' from GitHub:
HTTP error 404.
No commit found for the ref master
Did you spell the repo owner (BlakeRMills) and repo name (MetBrewer) correctly?

If spelling is correct, check that you have the required permissions to access the repo.

Solved by running:
remotes::install_github('BlakeRMills/MetBrewer', ref="main")