Show the Copilot details if a delegate is set in a report action

@thienlnam plz review
cc @hayata-suenaga
Details
If an action was taken by a copilot, record that and show it in the display name of the user making the action.
Fixed Issues
$ https://github.com/Expensify/Expensify/issues/288976
Tests/QA

In www.expensify.com, login as a copilot for a policy admin
Go to a policy disable and enable some categories on behalf of the admin as copilot while in copilot mode
Go to new.expensify.com
Go to the #admins chat room for that same policy
Verify that the actions taken by the copilot show as from them, with their avatar, and the other user is referenced in a parenthetical (as copilot for XXXX)

[ ] Verify that no errors appear in the JS console

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android / native
[x] Android / Chrome
[x] iOS / native
[x] iOS / Safari
[x] MacOS / Chrome / Safari
[x] MacOS / Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If a new component is created I verified that:

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[x] All JSX used for rendering exists in the render method
[x] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG))

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[x] I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.

Screenshots/Videos

Web

Mobile Web - Chrome

Mobile Web - Safari

Desktop

iOS

Android

@allroundexperts
You can create a co-pilot for a user in www.expensify.com by following these instructions: https://community.expensify.com/discussion/4783/how-to-add-or-remove-a-copilot

@allroundexperts You'll need to test with a Control or Collect (paid) policy, not a workspace

Updated and retested!

will wait for fixes suggested by @allroundexperts before merge

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to staging by https://github.com/hayata-suenaga in version: 1.3.35-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

Seems like you're already on it, but for historical records, this blocker was raised during testing: https://github.com/Expensify/App/issues/21970

🚀 Deployed to production by https://github.com/Julesssss in version: 1.3.35-5 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
failure ❌

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/Julesssss in version: 1.3.35-5 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
failure ❌

🕸 web 🕸
success ✅


Fix #15 advanced search

This patch adds an "advanced" search tab. The "basic" search tab is still the default.
"Advanced" search lets you choose your query filter and so forth:

I'll go ahead and merge this one. There are some other search-related issues I might look at this weekend.


available

https://www.bannerbear.com/blog/create-200-branded-motivational-quotes-in-20-seconds/
Use a pre-populated Airtable base of motivational quotes to try out Bannerbear and generate 200 pieces of content for your brand in an instant!
https://en.wikipedia.org/wiki/Airtable
https://try.airtable.com/startup
https://try.airtable.com/projectmanagement
Wikipedia enrichment app
https://github.com/Airtable/apps-wikipedia-enrichment
This example app finds extracts and images from Wikipedia for records in your base and saves the information back to your base.
The code shows:
How to connect to an outside API from your app
How to update records and upload attachments from your app
How to check permissions before updating records


Support PiModules UPS PIco HV3.0A Stack with 450mAh Battery

The PiModules UPS PIco HV3.0A Stack with 450mAh Battery is a 30,- € Uninterruptable-Power-Supply-Hat for the Raspberry Pi.
It supports the following features:

Raspberry Pi B+ HAT Compliant
Plug and Play
Smart Uninterruptible Power Supply (UPS)
Integrated LiPO Battery (8-10 Minutes of Power Back-Up)
Intelligent Automatic Charger
No Additional External Power Required
Optional 3000 mAh Battery for 8 Hours Run-Time (Not Included)
5V 2A Power Backup (Peak Output 5V 3A)
Integrated Software Simulated Real Time Clock (RTC) with Battery Back-Up
File Safe Shutdown Functionality
Raspberry Pi B+ Activity Pin
PWM fan control (Fan Not Included)
2 User Defined LEDs
2 User Defined Buttons
Integrated Buzzer for UPS and User Applications
Status Monitoring - Powering Voltage, UPS Battery Voltage and Temperature
I2C PICo Interface for Control and Monitoring
RS232 Raspberry Pi Interface for Control and Monitoring
XTEA Based Cryptography User Software Protection
2 Level Watch-dog Functionality with FSSD and Hardware Reset
Raspberry Pi B+ Hardware Reset Button via Spring Test Pin
Stackable Header for Add-On Boards
Boot Loader for Live Firmware Update
Compatible with Intelligent IR Remote Power ON/OFF (PowerMyPi)
Integrated ESD-Protected 2 Channel A/D 10 Bit Converters 0-5.2V
Integrated ESD-Protected 1-Wire Interface
Labeled J8 Raspberry Pi B+ GPIO Pins for Easy Plug & Play
Infra Red Receiver Sensor Interface (IR Not Included)
Upgradable with PIco Add-on Boards
Fits Inside Most Existing Cases

Please support this RPi-Hat in RaspberryMatic! :-)

Thanks for this nice suggestion in supporting this UPS HAT for a RaspberryPi. So please feel free to donate this type of HAT and send it over to me so that I can work on integrating support for it :)

What's the current state?

@renne The RTC clock should be supported in beta5. However, for the other UPS functions I am afraid, but the software for the software watchdog (FSSD) that is supplied with this HAT is largely based on python modules while python isn't supplied with RaspberryMatic. Thus this would require to create a dedicated CCU Addon which adds support for all the detailed UPS functions this HAT provides.

@jens-maus
Should the RTC work out of the box or do I need to configure something in RaspberryMatic?
If I understand correctly the Pi has to send pulse trains to GPIO 22 (watchdog function). On a power-down event the UPS switches GPIO 27 from high to low.
The UPS is available at Rasppishop, now.

@renne As you know, I have such a model here, but haven't had a lot of time to test it deeply. But indeed, the RTC should work out-of-the-box with beta5 and later. Have you tested it? However, for all the other support of the hardware including the watchdog function we would require more deep modifications of the system. For this, however, I would (as I said) prefer that someone (I simply lack the time) integrates the required changes in a dedicated CCU Addon package which users with this particular UPS system can install.

The RTC works! I wrote a ASH-script which triggers the watchdog on the Pico UPS and queries for power-loss events via GPIO 22/27. It has no error-handling, yet and lacks all the I²C-features but works. It seems the Pico UPS activates the RTC when the watchdog-triggering/power-state querying starts. ;-)

@renne This sound great. Can you please provide your ash script so that I might investigate it and see if I can actually integrate something like this directly in RaspberryMatic or for reference for other Pico UPS users.

@jens-maus I just created a fork of RaspberryMatic. In which directory do you want the script?

@renne You don't need to create a fork because I probably won't integrate it directly as said before. I just want to have a quick look over it to see what it actually does and how and then see what might be the next step to take.

filesave-shutdown.txt

Thanks, I just inlined your script here instead providing it as an attachment so that it can be immediately be viewed. Also please provide information how and when are you starting this script during boot up.

I haven't started it on boot, yet, but only manually. As it only depends on the Linux-kernel it should be possible to start it whenever you want if the Pico UPS is up and running. I suggest to start it at least before the RTC initialization an make sure only one instance is running at the same time.

Thanks, however, I am still not sure if we should really directly integrate it into RaspberryMatic for all users. 99% of the users won't have a Pico UPS and yet I don't see that the script tries to detect the UPS and just start its while loop if the UPS is installed. Thus, I currently think it wouldn't be wise to actually start this script for all users automatically.

You can create an init-script which starts the script as a daemon. If the init-script is NOT enbabled by default users without a Pico UPS are not affected while users with a Pico UPS need only one command to activate it. ;-)

Of course this would be possible. However, I would actually prefer to automatically identify if a Pico UPS system is installed. There have to be a way to identify if a working Pico UPS system is installed on the GPIO of the RaspberryPi!?!?

I haven't found a way, yet. But I just found https://github.com/ef-gy/rpi-ups-pico :-) :-)

You can check for a UPS Pico with i2cget -y 1 0x69 0x26 b. It returns the current firmware version (exit status 0) or an error (exit status e.g. 2). The daemon seems to have a bug with firmware version 0x30. I already opened an issue.

Thanks for the hint and reference to the picod issue. So please let me know as soon as picod works fine for you so that I can start working on integration into a future RaspberryMatic version.

Heh, just saw the shoutout there for the daemon. I'll see about fixing those issues @renne opened against it - haven't quite seen most of them on my Pi, but I assume most of that is that I haven't updated the firmware on the pico in quite a bit :).

Hello, what is the purpose of the watchdog? could it be used to reset the pi if a python script fails ?


CSMC & Sparse Particle Storage with RB and GPU-acceleration

A very much draft piece of work tightening up and testing the CSMC interface. Just wanted to check it technically works.
Contributions and comments welcomed.
TODO:

[ ] Tidy code
[x] Improve runtime of unit tests
[x] Replaced ground truth with RTS smoother
[x] Implement GPU version
[x] Considered behaviour for t = 0

On the last point, the callback is not ran after initialisation so x0 of the reference trajectory is not stored.

Looks like the tests before were passing by chance. I've made a few changes so they now have a valid unit test that passes:

Implemented RTS smoother and wrote unit test
Used OffsetVectors to include x0 in reference trajectory
Correct ancestry code

The first change required modifying the GaussianContainer to have proposal/filtered states, which breaks the RBPF test (though the others still pass) as discussed in #14.
I think the way around this might be to have initialise/update/predict act on the state itself, not the container of proposal/filtered states. The step method can then map these to the container (if the container is even needed at all).

Code is very messy at this point but...it works 🙌
Have a unit test comparing GPU-accelerated, Rao-Blackwellised CSMC to RTS on a dummy Gaussian problem and the smoothing distributions match.
I will probably clean up once we chat on Friday to discuss interface changes.
The biggest long-term issue is that I'm storing the reference trajectories essentially as a vector of (D x 1) CuArrays (i.e. particle containers of size 1). This is probably not very efficient.
Maybe it's best falling back to the CPU for the reference trajectory stuff since we're no longer in a parallel setting. Though a question I've been wondering is whether having one reference trajectory is always optimal for CSMC/PG. The theory works the same with any number...

Here's the PDF detailing the changes involved in this PR.
GeneralisedFilters.jl Containers.pdf

The last commit starts the conversion of the interface to act on distributions rather than the combined intermediate storage.
With this change the Kalman smoother, particle filter and RBPF are all simultaneously passing.
I apologise that this has made some other parts of the code a bit clunkier and may get in the way of some of your ideas. I don't see this as a final version though so happy to make changes to make things more elegant provided it still allows for the RBPF to work nicely.
Some of the main changes that were required:

Added type AbstractParticleFilter which has a modified step method which contains the resampling rather than inside of the predict step (where ancestors is not available)
Although the update_ref still takes place within initialise/predict, the updating of ancestor indices happens in this custom step, which is a bit clunky.
Add an instantiate method which creates the intermediate storage before it gets populated by initialise.

I'll spend the rest of the day making sure the other tests pass and introducing the other changes we discussed last Friday.
Thank you for your patience whilst I make these quite clunky changes—the fast GPU—RB—PGAS should all be worth it though!

I also want to make sure this code is type stable since this could be a huge bottleneck in terms of performance.

Yeah, I definitely think some things have slipped through in the process. Code, especially the GPU stuff, seems slower now than I expected.

The core ideas of this PR are now implemented and all tests are passing.
A bit more tidying up of code and refactoring would be a good idea but might be best to get the PR merged first.

This PR is (finally) stable, clean, and ready to merge.
Please note that I've made some significant changes to containers.jl. In particular, I've removed all redundant (in terms of not appearing in src) containers and renamed many container types so the naming convention is consistent.


Update TouchdownBuildTask to Version 4

Update TouchdownBuildTask to Version 4
Switched our TDBuild registration to use an existing ProjectReunion App registration that already has a federated credentials setup

/azp run

Test run
https://microsoft.visualstudio.com/ProjectReunion/_build/results?buildId=102371224&view=results

/azp run


Patterns with a single event

Hello there!
Single-event patterns seem to be problematic. Below are two examples depicting the issue:
from sequential.seq2pat import Seq2Pat

seq2pat = Seq2Pat(sequences=[["A"], ["A"], ["A"]])
seq_patterns = seq2pat.get_patterns(min_frequency=2)
print(seq_patterns)  # Outputs []. Expected [["A", 3]]

seq2pat = Seq2Pat(sequences=[["A"], ["A", "B"], ["A"], ["A", "B"]])
seq_patterns = seq2pat.get_patterns(min_frequency=2)
print(seq_patterns)  # Outputs [["A", "B", 2]]. Expected [["A", 4], ["A", "B", 2]]

Thank you.

Thanks @victorjmarin. I see the issue. Unfortunately the library is not returning length-1 patterns. Since we consider the constraint such as GAP that uses at least two items as the mining algorithm goes, there seems not a clean solution to tackle the length-1 cases. We will add a note to documentations about this issue until we figure out a fix.

Agreed, I don't think this requires a fix, apart from note/document/error handling. A list of size 1 is not that interesting and does not really qualify as a "sequence".


fix: support for Godot 4.1

Changes made:

Removed typed for...in variables because Godot 4.1 doesn't support them
Downgraded some .tres to format version 3, because format version 4 isn't supported in Godot 4.1
Used custom function instead of type_string, which does not exist in Godot 4.1

I made the changes in the web editor because I didn't want to bother cloning the repo, you can squash the commits :)
I did a proper test in Godot 4.1 and encountered no issues.
Yes, I downloaded the addons folder from github after changing it in web
I did not test in later versions of Godot, but I don't think there's anything here that could break.
Todos

[x] _ModLoaderModHookPreProcessor.fix_method_super() erases everything after the function body, leaving only the first function in a script.
https://github.com/GodotModding/godot-mod-loader/blob/7b36e3290e5fefa5cb26a90af85ddeabae2ebd46/addons/mod_loader/internal/mod_hook_preprocessor.gd#L313-L317

So you know how they say you shouldn't make PRs from default branches? :)

Why hasn't this been merged yet? :(
I have to fix conflicts now

I fixed the conflicts and added a fix for _ModLoaderModHookPreProcessor.fix_method_super() but I can't push to your branch.


Contrib: doc source structure

Transcribe "Source file structure" from the docs/CONTRIBUTING.md file.
Delete the content from the CONTRIBUTING.md file and replace it with a link to this page.
This contributes to https://github.com/keptn/lifecycle-toolkit/issues/972 .

@StackScribe in the above issue we need to transcribe the "Source file structure" section present in docs/contributing.md file and further delete and replace( with a link)  any content of the "Source file structure" present in the main contributing.md file ? correct?


[Relay][WIP] DCGAN port

Thanks for contributing to TVM!   Please refer to guideline https://docs.tvm.ai/contribute/ for useful information and tips. After the pull request is submitted, please request code reviews from Reviewers.

@joshpoll please rebase against the current master

Thanks @joshpoll @eqy this is now merged


4.9.0

lets not merge 4.9 changes until 4.9.0 is released - until then, I'll keep making stable 4.8.x releases too
Signed-off-by: Sven Dowideit<EMAIL_ADDRESS>

Can we close this PR and just work off the 4.9-testing branch for now? We can reopen when we're ready to switch to 4.9.

we can if its a problem - I like having something that tells others that we're working towards something, and it helps us see & discuss the changes while we're working on them

I used the 4.9.0 kernel in building 0.8.0-rc2, so merging.


Faster cubic 012 mul 01

Description
Faster MulBy01 for cubic extensions.
Saves 2 sub/add at least twice for every step of the miller loop.
Type of change

[x] New feature (non-breaking change which adds functionality) - Optimisation

How has this been tested?

[x] Run: Existing MulBy01 tests
[x] Added: bls12377: test fp6 MulBy01
[x] Added: bls24315: test e12 MulBy01

How has this been benchmarked?
Benches not done, but should save at least log(6u+2) * 2 * 2 * (2 or 4) constraints.
e.g.: for a multi-pairing of size 4 over BN254, this PR saves 4224 scs.
Checklist:

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

I'll wait for other changes to update stats. But let me know if I should do this now.

That makes sense! one of the elements in Karatsuba is zero so schoolbook is indeed faster. Good catch!


[issue-339]balance blocks in data loading

the algorithm for blance block as following:
1.get the task host from dummy rdd
2.filter block location which no exist in task host,which support yarn mode
3.sort block list by location number,if the locations is empty, then append to end of list
4.assign  (totalBlockNum/nodeNum ) block to each node,only local block will assign,if local block is no enough,then mark how many no local block need to handle in this node.
5.after finished first round assignment, start assign one block by robin way .Only local block will assign,if the node no exist the local block,then mark it need to handle no local block times +1.
6.if (totalblocknum-assignBlockNum) <= sum(no local block time),start to assign no local block,until all block were assign.
in this algorithm ,consider data locality and block balance.
this pr is relative with #346 which raise by @ravikiran23
i will add test case later.
please check @gvramana @ravikiran23

retest this please

please rebase


Running Test throws MissingPluginException(No implementation found for method Firebase#initializeCore on channel plugins.flutter.io/firebase_core

Failing to write simple unit test using firebase emulators
Yesterday I upgrade to latest and greatest firebase/firestore plugins and decided to try out the firebase emulators to add some testing of my data access objects.
I fail to get the test up and running agains the emulators due to the error below
I saw some other issues that has been closed regarding the same error but with no solution that suited me.
I guess this is a simple mistake form my side in the code when connecting to the emulators.
MissingPluginException(No implementation found for method Firebase#initializeCore on channel plugins.flutter.io/firebase_core)
My test code
/// TODO: Get firebase emulators to work an use them for unit testing dao's
void main() {

  TournamentDao dao;

  setUpAll(() async {
    WidgetsFlutterBinding.ensureInitialized();

    await Firebase.initializeApp();
    FirebaseFirestore.instance.settings = Settings(host: 'localhost:8080', sslEnabled: false, persistenceEnabled: false);

    GetIt.I.registerSingleton<TournamentDao>(TournamentDaoImpl());
  });

  setUp(() {
    dao = GetIt.I<TournamentDao>();
  });

  test("TournamentDao.crud", () async {

    Tournament t = Tournament();
    t.name = 'Tezt';
    dao.create(t);

    var list = await dao.list(10);
    expect(list.length, 1);
  });

Firebase versions
  cloud_firestore: ^0.14.0
  firebase_auth: 0.18.0
  firebase_core: ^0.5.0
  firebase: ^7.3.0

Firebase emulators startup
firebase emulators:start
i  emulators: Starting emulators: functions, firestore, database, hosting
⚠  functions: The following emulators are not running, calls to these services from the Functions emulator will affect production: pubsub
⚠  Your requested "node" version "10" doesn't match your global version "12"
i  firestore: Firestore Emulator logging to firestore-debug.log
i  database: Database Emulator logging to database-debug.log
i  hosting: Serving hosting files from: public
✔  hosting: Local server: http://localhost:5000
i  ui: Emulator UI logging to ui-debug.log
i  functions: Watching "/Users/gunnar/git/dart/chess-champion/functions" for Cloud Functions...

┌───────────────────────────────────────────────────────────────────────┐
│ ✔  All emulators ready! View status and logs at http://localhost:4000 │
└───────────────────────────────────────────────────────────────────────┘

┌───────────┬────────────────┬─────────────────────────────────┐
│ Emulator  │ Host:Port      │ View in Emulator UI             │
├───────────┼────────────────┼─────────────────────────────────┤
│ Functions │ localhost:5001 │ http://localhost:4000/functions │
├───────────┼────────────────┼─────────────────────────────────┤
│ Firestore │ localhost:8080 │ http://localhost:4000/firestore │
├───────────┼────────────────┼─────────────────────────────────┤
│ Database  │ localhost:9000 │ http://localhost:4000/database  │
├───────────┼────────────────┼─────────────────────────────────┤
│ Hosting   │ localhost:5000 │ n/a                             │
└───────────┴────────────────┴─────────────────────────────────┘
  Other reserved ports: 4400, 4500

Issues? Report them at https://github.com/firebase/firebase-tools/issues and attach the *-debug.log files.

Flutter doctor
Run flutter doctor and paste the output below:
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 1.20.2, on Mac OS X 10.15.6 19G73, locale sv-SE)

[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
[✓] Xcode - develop for iOS and macOS (Xcode 11.6)
[✓] Android Studio (version 4.0)
[✓] IntelliJ IDEA Ultimate Edition (version 2020.2)
[✓] Connected device (1 available)

• No issues found!

The error "MissingPluginException(No implementation found for method Firebase#initializeCore on channel plugins.flutter.io/firebase_core)" points towards your Dart code being updated, but your native code hasn't updated.
Can you try running flutter clean and rebuilding?

I have already tried that!
mån 24 aug. 2020 kl. 11:43 skrev Elliot Hesp<EMAIL_ADDRESS>
The error "MissingPluginException(No implementation found for method
Firebase#initializeCore on channel plugins.flutter.io/firebase_core)"
points towards your Dart code being updated, but your native code hasn't
updated.
Can you try running flutter clean and rebuilding?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/FirebaseExtended/flutterfire/issues/3311#issuecomment-679025147,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AACFWMVS2WDEP5PY6BELKITSCIY4HANCNFSM4QJJEAGQ
.
--
Mobil: 0708-52 62 90
Teknologgatan 3, 113 60 Stockholm
http://www.oakstair.se

I sam some comment about using localhost but have tried <IP_ADDRESS> or my ip with same result.

The emulator vs the error message have no relevance - try wiping all the caches, uninstalling the app etc, something is being cached.

Ok I get this in my development environment running unit tests.
flutter clean does not work
What do you mean by wiping all caches ?
How do I do that?
Den mån 24 aug. 2020 kl 14:40 skrev Elliot Hesp<EMAIL_ADDRESS>
The emulator vs the error message have no relevance - try wiping all the
caches, uninstalling the app etc, something is being cached.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/FirebaseExtended/flutterfire/issues/3311#issuecomment-679101974,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AACFWMXV3SY6M4PDW42PR6DSCJNSRANCNFSM4QJJEAGQ
.

--
Mobil: 0708-52 62 90
Teknologgatan 3, 113 60 Stockholm
http://www.oakstair.se

Even if there is no relevance it is thrown when Firebase.initializeApp

) Firebase.initateApp()

Ok I get it now that this has nothin to do with pointing firebase to the emulator. I get the same error also when removing the line that configs towards the emulator.
It must be something with that differs when running my tests and when running my flutter app that causes this.

My full test class attempt looks like this.
import 'package:chess_champion/model/dao/tournament_dao.dart';
import 'package:chess_champion/model/entity/tournament.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/cupertino.dart';
import 'package:get_it/get_it.dart';
import 'package:test/test.dart';

/// TODO: Get firebase emulators to work an use them for unit testing dao's
void main() {

  TournamentDao dao;

  setUpAll(() async {
    WidgetsFlutterBinding.ensureInitialized();

    await Firebase.initializeApp();
    // <IP_ADDRESS>
    // FirebaseFirestore.instance.settings = Settings(host: '<IP_ADDRESS>:8080', sslEnabled: false, persistenceEnabled: true);

    GetIt.I.registerSingleton<TournamentDao>(TournamentDaoImpl());
  });

  setUp(() {
    dao = GetIt.I<TournamentDao>();
  });

  test("TournamentDao.crud", () async {
    Tournament t = Tournament();
    t.name = 'Tezt';
    dao.create(t);

    var list = await dao.list(10);
    expect(list.length, 1);
  });

}

I have the same issue. It works fine when I initialize the app in my actual app, but the same MissingPluginException gets thrown when I attempt the same thing in one of my simple tests.

Hi @oakstair
Can you please provide a flutter  test --verbose logs, and a minimal complete reproducible code sample without using third party packages
Thank you

I will try to get some  time today to do a mini project that reproduces this.
@eriklange You don’t have a mini project?

Here is a minproject thar reproduces the bug
https://bitbucket.org/oakstair/firestore_missing_plugin_bug/src/master/

logs
[ +242 ms] test 0: starting test
/Users/tahatesser/AndroidStudioProjects/triage/flutterfire_examples/firebase_auth_example/test/user_dao_test.dart
[  +16 ms] test 0: starting shell process
[   +8 ms] Stopping scan for flutter_test_config.dart; found project root at
/Users/tahatesser/AndroidStudioProjects/triage/flutterfire_examples/firebase_auth_example
[   +6 ms] Compiler will use the following file as its incremental dill file:
/var/folders/7t/qr_jg4155x53wn0m3nmqb8g80000gn/T/flutter_tools.pziWSp/flutter_test_compiler.eZLb10/output.dill
[        ] Listening to compiler controller...
[   +7 ms] Compiling
file:///var/folders/7t/qr_jg4155x53wn0m3nmqb8g80000gn/T/flutter_tools.pziWSp/flutter_test_listener.NCG87j/listener.dart
[  +12 ms] /Users/tahatesser/Code/flutter_dev/bin/cache/dart-sdk/bin/dart --disable-dart-dev
/Users/tahatesser/Code/flutter_dev/bin/cache/artifacts/engine/darwin-x64/frontend_server.dart.snapshot --sdk-root
/Users/tahatesser/Code/flutter_dev/bin/cache/artifacts/engine/common/flutter_patched_sdk/ --incremental --target=flutter
--debugger-module-names --experimental-emit-debug-metadata -Ddart.developer.causal_async_stacks=true --output-dill
/var/folders/7t/qr_jg4155x53wn0m3nmqb8g80000gn/T/flutter_tools.pziWSp/flutter_test_compiler.eZLb10/output.dill --packages
/Users/tahatesser/AndroidStudioProjects/triage/flutterfire_examples/firebase_auth_example/.packages -Ddart.vm.profile=false
-Ddart.vm.product=false
--bytecode-options=source-positions,local-var-info,debugger-stops,instance-field-initializers,keep-unreachable-code,avoid-cl
osure-call-instructions --enable-asserts --track-widget-creation --initialize-from-dill
/Users/tahatesser/AndroidStudioProjects/triage/flutterfire_examples/firebase_auth_example/build/testfile.dill.track.dill
[  +30 ms] <- compile
file:///var/folders/7t/qr_jg4155x53wn0m3nmqb8g80000gn/T/flutter_tools.pziWSp/flutter_test_listener.NCG87j/listener.dart
[+1077 ms] <- accept
[        ] <- reset
[        ] Compiling
/var/folders/7t/qr_jg4155x53wn0m3nmqb8g80000gn/T/flutter_tools.pziWSp/flutter_test_listener.NCG87j/listener.dart took 1120ms
[   +1 ms] /Users/tahatesser/Code/flutter_dev/bin/cache/artifacts/engine/darwin-x64/flutter_tester --disable-observatory
--enable-checked-mode --verify-entry-points --enable-software-rendering --skia-deterministic-rendering
--enable-dart-profiling --non-interactive --use-test-fonts
--packages=/Users/tahatesser/AndroidStudioProjects/triage/flutterfire_examples/firebase_auth_example/.packages
/var/folders/7t/qr_jg4155x53wn0m3nmqb8g80000gn/T/flutter_tools.pziWSp/flutter_test_listener.NCG87j/listener.dart.dill
[   +1 ms] Using this directory for fonts configuration:
/var/folders/7t/qr_jg4155x53wn0m3nmqb8g80000gn/T/flutter_tools.pziWSp/flutter_test_fonts.0NNQl7
[   +7 ms] test 0: awaiting initial result for pid 14109
[ +336 ms] test 0: process with pid 14109 connected to test harness
[   +1 ms] test 0: awaiting test result for pid 14109
00:01 +0 -2: /Users/tahatesser/AndroidStudioProjects/triage/flutterfire_examples/firebase_auth_example/test/user_dao_test.dart: (setUpAll) [E]
  MissingPluginException(No implementation found for method Firebase#initializeCore on channel plugins.flutter.io/firebase_core)
  package:flutter/src/services/platform_channel.dart 157:7  MethodChannel._invokeMethod

00:01 +0 -2: ... (tearDownAll)                                                                                [ +225 ms] test 0: process with pid 14109 no longer needed by test harness
[        ] test 0: cleaning up...
[        ] test 0: ensuring end-of-process for shell
[  +10 ms] test 0: deleting temporary directory
[   +3 ms] test 0: shutting down test harness socket server
[   +2 ms] test 0: finished
00:01 +0 -2: Some tests failed.
[  +11 ms] Deleting /var/folders/7t/qr_jg4155x53wn0m3nmqb8g80000gn/T/flutter_tools.pziWSp/flutter_test_compiler.eZLb10...
[   +3 ms] killing pid 14101
[  +35 ms] Deleting /var/folders/7t/qr_jg4155x53wn0m3nmqb8g80000gn/T/flutter_tools.pziWSp/flutter_test_fonts.0NNQl7...
[   +5 ms] test package returned with exit code 1
[  +10 ms] "flutter test" took 3,057ms.
[   +6 ms]
           #0      throwToolExit (package:flutter_tools/src/base/common.dart:14:3)
           #1      TestCommand.runCommand (package:flutter_tools/src/commands/test.dart:282:7)
           <asynchronous suspension>
           #2      FlutterCommand.verifyThenRunCommand (package:flutter_tools/src/runner/flutter_command.dart:912:18)
           #3      _rootRunUnary (dart:async/zone.dart:1198:47)
           #4      _CustomZone.runUnary (dart:async/zone.dart:1100:19)
           #5      _FutureListener.handleValue (dart:async/future_impl.dart:143:18)
           #6      Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:696:45)
           #7      Future._propagateToListeners (dart:async/future_impl.dart:725:32)
           #8      Future._completeWithValue (dart:async/future_impl.dart:529:5)
           #9      Future._asyncCompleteWithValue.<anonymous closure> (dart:async/future_impl.dart:567:7)
           #10     _rootRun (dart:async/zone.dart:1190:13)
           #11     _CustomZone.run (dart:async/zone.dart:1093:19)
           #12     _CustomZone.runGuarded (dart:async/zone.dart:997:7)
           #13     _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1037:23)
           #14     _microtaskLoop (dart:async/schedule_microtask.dart:41:21)
           #15     _startMicrotaskLoop (dart:async/schedule_microtask.dart:50:5)
           #16     _runPendingImmediateCallback (dart:isolate-patch/isolate_patch.dart:118:13)
           #17     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:169:5)

[ +164 ms] ensureAnalyticsSent: 160ms
[   +2 ms] Running shutdown hooks
[        ] Shutdown hook priority 4
[   +1 ms] Shutdown hooks complete
[        ] exiting with code 1

flutter doctor -v
[✓] Flutter (Channel dev, 1.22.0-9.0.pre, on Mac OS X 10.15.6 19G2021, locale
    en-GB)
    • Flutter version 1.22.0-9.0.pre at /Users/tahatesser/Code/flutter_dev
    • Framework revision 7a43175198 (6 days ago), 2020-08-28 23:18:04 -0400
    • Engine revision 07e2520d5d
    • Dart version 2.10.0 (build 2.10.0-73.0.dev)

[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
    • Android SDK at /Users/tahatesser/Code/sdk
    • Platform android-29, build-tools 29.0.2
    • ANDROID_HOME = /Users/tahatesser/Code/sdk
    • Java binary at: /Applications/Android
      Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build
      1.8.0_242-release-1644-b3-6222593)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 11.7)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.7, Build version 11E801a
    • CocoaPods version 1.9.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 4.0)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 48.1.2
    • Dart plugin version 193.7547
    • Java version OpenJDK Runtime Environment (build
      1.8.0_242-release-1644-b3-6222593)

[✓] VS Code (version 1.48.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.14.0

[✓] Connected device (4 available)
    • iPhone 11 (mobile) • EDB19945-0B9F-4A6E-BAA1-425E68E3B6D6 • ios
      • com.apple.CoreSimulator.SimRuntime.iOS-13-7 (simulator)
    • macOS (desktop)    • macos                                • darwin-x64
      • Mac OS X 10.15.6 19G2021
    • Web Server (web)   • web-server                           • web-javascript
      • Flutter Tools
    • Chrome (web)       • chrome                               • web-javascript
      • Google Chrome 85.0.4183.83

• No issues found!

@oakstair I had a few 3rd party packages in my project. Thank you for making the miniproject!

@oakstair I had a few 3rd party packages in my project. Thank you for making the miniproject!

No problem! When I studied (long time age) I didn't even have any time for studying :-)

@oakstair I had a few 3rd party packages in my project. Thank you for making the miniproject!

No problem! When I studied (long time age) I didn't even have any time for studying :-)

That's understandable! App development is a hobby of mine, so I enjoy every moment of it, especially with Flutter :)

So... Has anyone managed to run unit tests with FlutterFire ever? I'm getting the same issue and I don't even know if it is meant to work during unit testing or if I should give up the idea of testing...

I am also facing this issue. Everything runs fine except in testing.

So I faced a similar issue in testing.  I was attempting to create Document References during testing and calling await Firebase.initializeApp(); inside my setUpAll()
In my case I solved this by pulling the following file into my test directory: https://github.com/FirebaseExtended/flutterfire/blob/master/packages/cloud_firestore/cloud_firestore/test/mock.dart
For reference to contents of file:
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'package:firebase_core_platform_interface/firebase_core_platform_interface.dart';
import 'package:flutter/services.dart';
import 'package:flutter_test/flutter_test.dart';

typedef Callback(MethodCall call);

setupCloudFirestoreMocks([Callback customHandlers]) {
  TestWidgetsFlutterBinding.ensureInitialized();

  MethodChannelFirebase.channel.setMockMethodCallHandler((call) async {
    if (call.method == 'Firebase#initializeCore') {
      return [
        {
          'name': defaultFirebaseAppName,
          'options': {
            'apiKey': '123',
            'appId': '123',
            'messagingSenderId': '123',
            'projectId': '123',
          },
          'pluginConstants': {},
        }
      ];
    }

    if (call.method == 'Firebase#initializeApp') {
      return {
        'name': call.arguments['appName'],
        'options': call.arguments['options'],
        'pluginConstants': {},
      };
    }

    if (customHandlers != null) {
      customHandlers(call);
    }

    return null;
  });
}

Then in each test I would do the following:
void main() {
  setupCloudFirestoreMocks();

  setUpAll(() async {
    TestWidgetsFlutterBinding.ensureInitialized();

    await Firebase.initializeApp();
  });

// ALL MY TESTS WOULD BE HERE

}

I think the flutter test is running on neither iOS nor Android, so what if we're talking about running it in a macos environment?
https://github.com/FirebaseExtended/flutterfire/blob/master/packages/cloud_firestore/cloud_firestore/pubspec.yaml#L16
flutter testのときはiOSでもAndroidでもない環境で動いていると思います。macosの環境で動かすということにしたらどうでしょうか？

So I faced a similar issue in testing. I was attempting to create Document References during testing and calling await Firebase.initializeApp(); inside my setUpAll()
In my case I solved this by pulling the following file into my test directory which hooks into mock call handlers to be used throughout the test: https://github.com/FirebaseExtended/flutterfire/blob/master/packages/cloud_firestore/cloud_firestore/test/mock.dart
For reference to contents of file:
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'package:firebase_core_platform_interface/firebase_core_platform_interface.dart';
import 'package:flutter/services.dart';
import 'package:flutter_test/flutter_test.dart';

typedef Callback(MethodCall call);

setupCloudFirestoreMocks([Callback customHandlers]) {
  TestWidgetsFlutterBinding.ensureInitialized();

  MethodChannelFirebase.channel.setMockMethodCallHandler((call) async {
    if (call.method == 'Firebase#initializeCore') {
      return [
        {
          'name': defaultFirebaseAppName,
          'options': {
            'apiKey': '123',
            'appId': '123',
            'messagingSenderId': '123',
            'projectId': '123',
          },
          'pluginConstants': {},
        }
      ];
    }

    if (call.method == 'Firebase#initializeApp') {
      return {
        'name': call.arguments['appName'],
        'options': call.arguments['options'],
        'pluginConstants': {},
      };
    }

    if (customHandlers != null) {
      customHandlers(call);
    }

    return null;
  });
}

Then in each test I would do the following:
void main() {
  setupCloudFirestoreMocks();

  setUpAll(() async {
    TestWidgetsFlutterBinding.ensureInitialized();

    await Firebase.initializeApp();
  });

// ALL MY TESTS WOULD BE HERE

}

thank you for sharing, this fixed the error for me

So I faced a similar issue in testing. I was attempting to create Document References during testing and calling await Firebase.initializeApp(); inside my setUpAll()
In my case I solved this by pulling the following file into my test directory which hooks into mock call handlers to be used throughout the test: https://github.com/FirebaseExtended/flutterfire/blob/master/packages/cloud_firestore/cloud_firestore/test/mock.dart
For reference to contents of file:
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'package:firebase_core_platform_interface/firebase_core_platform_interface.dart';
import 'package:flutter/services.dart';
import 'package:flutter_test/flutter_test.dart';

typedef Callback(MethodCall call);

setupCloudFirestoreMocks([Callback customHandlers]) {
  TestWidgetsFlutterBinding.ensureInitialized();

  MethodChannelFirebase.channel.setMockMethodCallHandler((call) async {
    if (call.method == 'Firebase#initializeCore') {
      return [
        {
          'name': defaultFirebaseAppName,
          'options': {
            'apiKey': '123',
            'appId': '123',
            'messagingSenderId': '123',
            'projectId': '123',
          },
          'pluginConstants': {},
        }
      ];
    }

    if (call.method == 'Firebase#initializeApp') {
      return {
        'name': call.arguments['appName'],
        'options': call.arguments['options'],
        'pluginConstants': {},
      };
    }

    if (customHandlers != null) {
      customHandlers(call);
    }

    return null;
  });
}

Then in each test I would do the following:
void main() {
  setupCloudFirestoreMocks();

  setUpAll(() async {
    TestWidgetsFlutterBinding.ensureInitialized();

    await Firebase.initializeApp();
  });

// ALL MY TESTS WOULD BE HERE

}

Not works for me
package:cloud_firestore_platform_interface/src/method_channel/utils/exception.dart 13:5                     convertPlatformException
package:cloud_firestore_platform_interface/src/method_channel/method_channel_document_reference.dart 80:13  MethodChannelDocumentReference.get

MissingPluginException(No implementation found for method DocumentReference#get on channel plugins.flutter.io/firebase_firestore)

My test file
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';

import 'cloud_firestore_mock.dart';

void main() async {
  setupCloudFirestoreMocks();

  setUpAll(() async {
    WidgetsFlutterBinding.ensureInitialized();

    await Firebase.initializeApp();

    FirebaseFirestore.instance.settings = Settings(
      sslEnabled: false,
      host: '<IP_ADDRESS>:8080',
    );
  });

  test('Connect to emulator', () async {
    FirebaseFirestore firestore = FirebaseFirestore.instance;

    var doc = await firestore.doc('users/user-a').get();

    print(doc.data());
  });
}

The mocking method does not work for me either, because we have to also mock Query#get. But I don't want to do that when using an emulator. How do folks even write integration tests for firebase?

@russellwheatley Come on bro, how can you close the issue, when the problem still holds??? Whenever I call initializeApp in a test file, it breaks! Are you saying the emulator approach will never work in test?
import 'package:flutter/services.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:firebase_core/firebase_core.dart';
void main() {
  setUpAll(() async {
    TestWidgetsFlutterBinding.ensureInitialized();
    // Expose path_provider that interlinked with Android/iOS SDK
    const MethodChannel channel =
        MethodChannel('plugins.flutter.io/path_provider');
    channel.setMockMethodCallHandler((MethodCall methodCall) async {
      return ".";
    });
    await Firebase.initializeApp();
  });
  test('Blah blah', () {});
}

Hey @qiansen1386, I'm saying that using Firebase Emulators for your integration tests will work. But the example you're using is not an integration test, it is a unit test. A unit test does not involve any native API calls (to android or iOS for example). You have to mock the calls to the native platform (i.e Firebase.initializeApp()).This file shows you how Flutterfire mocks
Firebase.initializeApp().


Update LICENSE.txt

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

Mistake ;-)

Coverage remained the same at 100.0% when pulling d789572a305cf35fcc9a05f4a82d204cfefc5570 on lextiz:lextiz-patch-1 into 7e406398195a626321e079ba44ea04f64c4bada1 on SAP:master.


Run the breaking change detector on PRs

For APIs which have already gone GA, it would be useful to run our breaking change detector against the published version.
Will need to look to see how tricky that is.

VersionCompat feature requests:

Load from NuGet
Split into breaking / non-breaking
Allow "only show breaking"
Allow "return error code on breaking"

Added assignment to Chris for the feature requests; I'll implement the integration part.

Rules for what to compare against, based on version in the API catalog (which indicates the most recent release, unless this change is a release):

x.0.0-*: None
x.0.*-*: x.0.0
x.y.*: x.y.0
x.y.*-*: x.(y-1).0

Need to handle "this change is a release" separately somehow.

See #3505 for the start of this work.

It's possible that what we've got now is fine for PRs, but that if we detect version changes in a PR, then we should check against the previous versions.

Fixed by #3572


allow matcher graph to cope with suppressed images

What does this change?
The current incarnation of the matcher graph script cannot cope with graphs containing suppressed images.  This fixes that problem.
The problem has two causes:

The ".jpg" file that gets downloaded in this situation is actually a JSON description of the error

This is fixed by copying in a placeholder "No Image" image if the response is unsuccessful

html labels in .dot files can be either a table or some text, not both.  When generating the label for a suppressed image, we were appending "(suppressed)" to a table containing the image.

I have fixed this by appending "(suppressed)" to the text part of the label, rather than the whole thing.

I noticed this whilst trying to diagnose https://github.com/wellcomecollection/catalogue-pipeline/issues/2536
How to test
Run the matcher graph generator on a graph that contains a suppressed image, e.g. yarn getMatcherGraph szjj6gqy
Before this change, you would have seen an error complaining about a surprise (
After this change, you will see this:
szjj6gqy.pdf
How can we measure success?
We'll be able to more reliably generate matcher graphs to help diagnose potential merge problems.
Have we considered potential risks?
This is an internal tool used by developers to help diagnose problems.  It does not interfere with the running of anything.  The only risk I can imagine is if we genuinely have an image in the collection that looks like the placeholder image, and someone gets confused.  I think that highly unlikely.

The changes are only in /pipeline/matcher/scripts/graphAttributes.ts + the 404 jpg?

I'm getting
Querying catalogue-2024-01-09_works-graph for szjj6gqy
Warning: "_images/MiroImageNumber/L0005170.jpg" was not found as a file or as a shape library member
Error: No or improper image file="_images/MiroImageNumber/L0005170.jpg"
in label of node tsqvr466

and the graphs are generated properly, except I'm not seeing the 404.jpg 😕

Whoops - I included a change to scalafmt that made everything go awry.  I've recreated this PR properly here: https://github.com/wellcomecollection/catalogue-pipeline/pull/2539


InteractiveMarkerViewer's addTSRMarker Does Not Properly Deallocate

Currently, the addTSRMarker function returns a TSRMarker (effectively a list of dart::dynamic::Frame objects). As soon as that TSRMarker falls out of scope, all those frames are deallocated. However, a pointer to those frames is still stored in mFrameMarkers (code here). Hence, the next time update is called (code here), it attempts to dereference a frame that has been deleted, leading the code to crash.
An example of where this issue occurs is in ada_feeding actions where they ask the researcher to check the TSR.  After the researcher checks the TSR, they enter a number, and the program is expected to remove the TSR visualization and continue. Instead, the program deallocates the frames but doesn't remove them from the InteractiveMarkerViewer, and thus crashes.

@egordon FYI this was the "Check TSR" issue we were facing

I believe the solution can be two-fold:

Make the Frame pointer be a shared pointer instead of a raw pointer. That way, even if users don't store a reference to the TSRMarker returned by addTSRMarker, the frame itself does not get deallocated. This should prevent the issue where update attempts to dereference a frame that no longer exists.
However, the downside of the above solution is that the TSRMarker is permanently added to the InteractiveMarkerViewer, which might not be desired. Therefore, I propose also adding a removeTSRMarker function which takes in the retval of addTSRMarker and removes those markers from mFrameMarkers.

@brianhou can you weigh in on this proposed solution before I implement it? Anything I'm overlooking, or any suggestions on more elegant fixes?

Great find @amalnanavati ! Thanks!
There is so much wrong here... in order of BAD:
(1) Dereferencing stored raw pointers that you didn't allocate.
(2) Relinquishing control of a unique_ptr to the client while still keeping a reference to it.
(3) Relinquishing that control by putting the unique ptr inside a shared ptr object, so the programmer working on the client has no idea that it is carrying the only reference to that unique_ptr.
My goodness.
I agree, make the Frame pointer a shared ptr. Have addFrameMarker take a shared_ptr input like every other function in the class. And update TSRMarker to be a vector of shared_ptrs instead of a vector of unique_ptrs (it doesn't matter if multiple classes own the Frame pointer, I think) so the client can use it if it wants.


[Storage] Small fix for MerkleAccumulatorView::get_consistency_proof

Motivation
Since the nodes we are reading are supposed to be frozen and exist in storage, we should just use self.reader.get, so it would return an error if the node doesn't exist.
Have you read the Contributing Guidelines on pull requests?
Y.
Test Plan
CI.
Related PRs
None.

@bors-libra r+

:pushpin: Commit 49572d6 has been approved by zamsden

:hourglass: Testing commit 49572d6d2f347dda28c307c5401994b6327c58b8 with merge d1374a9c1e95d7edf0fe3ab1531a9ed1b3751eb0...

:sunny: Test successful - checks-circle_commit_workflow
Approved by: zamsden
Pushing d1374a9c1e95d7edf0fe3ab1531a9ed1b3751eb0 to master...


use linux domain socket files for better leak profness possible?

Some examples (not suggesting these as is, just for reference).
ControlSocket /var/run/tor/control GroupWritable RelaxDirModeCheck
SocksPort unix:/var/run/tor/socks WorldWritable
CookieAuthFile /var/run/tor/control.authcookie

Dunno if it's possible for Tor TransPort / DnsPort.

I tried to do that, but there is no way to connect the unix socket to a listening port:
unshare -n -p -f --mount-proc bash -c "bash; kill -9 -1"
ip li set lo up
daemonize socat -4 TCP4-LISTEN:9050,bind=<IP_ADDRESS>,reuseaddr,reuseport,fork,su=root,range=<IP_ADDRESS>/8,forever,mtudiscover=2 UNIX-CLIENT:/var/run/tor/socks,user=root,user-late=root,group=root,group-late=root,mode=777,nonblock=1,keepalive,type=1,umask=0777,unix-tightsocklen
torsocks -a <IP_ADDRESS> -p 9050 w3m duckduckgo.com
exit
You can make socat connect to Trans/DNSPort on host side, listen in a socket, and inside a namespace, connect to that socket and listen on some port. The next way is to make a transparent proxy inside the namespace. But it will add overhead and launch many socat instances.
Another thing, with a transparent proxy inside a namespace, you can't access sites by using their ip: w3m https://<IP_ADDRESS>
Also, using unix sockets with DNSPort (which is UDP), make socat launch a lot of child process until your memory is filled up.

What makes isolation weak is the route between host and namespace.
A better isolation would be achieved with a transparent socks redirector such as badvpn-tun2socks:
ip netns add nsx
ip li add vethx type veth peer name peerx
ip li set peerx netns nsx
ip addr add <IP_ADDRESS>/24 dev vethx
ip li set vethx up
ip netns exec nsx ip addr add <IP_ADDRESS>/24 dev peerx
ip netns exec nsx ip li set peerx up
mkdir -p /etc/netns/nsx
echo 'nameserver <IP_ADDRESS>' > /etc/netns/nsx/resolv.conf
ip netns exec nsx unshare --mount-proc -f -p bash -c "bash; kill -9 -1"
ip tuntap add tun666 mode tun
ip link set tun666 up
ip address add <IP_ADDRESS>/24 dev tun666
sysctl -q -w net.ipv4.conf.all.forwarding=1
ip route add default via <IP_ADDRESS>
daemonize /usr/bin/badvpn-tun2socks --loglevel 0 --tundev tun666 --socks-server-addr <IP_ADDRESS>:1080 --netif-ipaddr <IP_ADDRESS> --netif-netmask <IP_ADDRESS>
===
Now, put Tor listen in SOCKSPORT <IP_ADDRESS>:9050 and DNSPort <IP_ADDRESS>:53
It's done and no routes between host and namespace "nsx" are made, Wireshark in the "vethx" you show only <IP_ADDRESS> and <IP_ADDRESS>.
Add some iptables rules in the host and inside namespace and it will be fully isolated. Even without these rules, isolation continues to be strong.

forwarded from tor-talk about this topic:
https://lists.torproject.org/pipermail/tor-talk/2018-July/044352.html

In the containerization world, the crazy people at Cilium have written a
cool bpf program that connects two TCP sockets directly, without ever
needing to be routed. They're doing it for performance reasons, but I
think it would be even more useful for doing tor-style isolation.

Given that you can now attach bpf programs to individual cgroups, I feel
like this might finally be the way forward.

other related reference:
https://www.slideshare.net/ThomasGraf5/dockercon-2017-cilium-network-and-application-security-with-bpf-and-xdp

to test: https://github.com/linus5/linux-kernel-xdp/commit/f0c18713b4e6d5398fc9cb8b24a61c566ecbd166

Is tempting to use badvpn-tun2socks, but I benchmarked right now: it is very very SLOW.
In my benchmarks I got 133 MBps with badvpn-tun2socks (would be the same with QEMU) vs 1.3 GBps with pure unix sockets. Benchmarks with iperf3 in veths and namespaces show crazies 4.24 GBps (36.4 Gbits).
The reason is that badvpn-tun2socks (and also QEMU, slirpvde and slirp4netns) uses lwip/lwip6, a network stack emulator.
It's possible to setup tap devices inside a enclosed network namespace without any veth or route with slirp4netns: https://github.com/rootless-containers/slirp4netns
All that is needed is to torify the command with torsocks or proxychains4 (not the old proxychains). I tested too, and is slow, even more with DNS requests which take a hell long. Any program running inside this enclosed namespace is absolutely isolated from host network; paranoia has a big cost.
For me, the most reliable scheme for a very strong isolation is a namespace with a SOCKS server + password for Tor and a second one isolated from host network connected to the first through veths  and transparent proxy (of course, without knowing other namespaces and the SOCKS password); exactly as I did with that script I created.

I found an unix socket wrapper that transparently converts a port bind to an AF_UNIX: https://github.com/cyphar/ttu
It's very fast, the same speed of normal sockets, has IPv6 support too (a little buggy but functional).
For example, to connect a SOCKS5 proxy (3proxy) to a isolated network namespace and setup a transparent proxy inside:
1 - Install libttu and 3proxy:
torsocks git clone https://github.com/cyphar/ttu.git
cd ttu/
make
sudo make install IDLIB=/usr/local/lib IDBIND=/usr/local/bin
cd .. && rm -rf ttu/
apt-get install -y libssl-dev
torsocks git clone https://github.com/z3APA3A/3proxy.git
cd 3proxy
make -f Makefile.Linux
sudo make -f Makefile.Linux install
cd .. && rm -rf 3proxy/
2 - In the terminal
LD_PRELOAD=/usr/local/lib/libttu.so TTU_BIND=<IP_ADDRESS>:1080=/dev/shm/tmp.socket 3proxy 0 << EOT
log
auth iponly
allow *
internal <IP_ADDRESS>
external <IP_ADDRESS>
socks -p1080
EOT
3 - In another:
sudo unshare -n -m --mount-proc -p -f
ip link set lo up
mkdir -p /dev/shm/tor.tmp
LD_PRELOAD=/usr/local/lib/libttu.so TTU_CONNECT=<IP_ADDRESS>:1080=/dev/shm/tmp.socket tor DataDirectory /dev/shm/tor.tmp --ignore-missing-torrc Socks5Proxy <IP_ADDRESS>:1080 SOCKSPort 0 TransPort <IP_ADDRESS>:9040 TransPort [::]:9040 DNSPort <IP_ADDRESS>:9053 DNSPort [::]:9053 VirtualAddrNetworkIPv4 <IP_ADDRESS>/10 VirtualAddrNetworkIPv6 [fc00::]/7 AutomapHostsOnResolve 1 AutomapHostsSuffixes .onion,.exit & TORPID=$!
eth0 is an interface required for a valid but fake route
ip link add eth0 type bridge
ip addr add <IP_ADDRESS>/24 peer <IP_ADDRESS>/24 dev eth0
ip -6 addr add fd01::1/64 peer fd01::2/24 dev eth0
ip link set eth0 up
ip route add default via <IP_ADDRESS> dev eth0
ip -6 route add default via fd01::2 dev eth0
the rules for a transparent proxy inside the sandbox
iptables -t nat -A OUTPUT -d <IP_ADDRESS>/10 -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports 9040
iptables -t nat -A OUTPUT -d <IP_ADDRESS>/32 -p udp -m udp --dport 53 -j REDIRECT --to-ports 9053
iptables -t nat -A OUTPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports 9040
iptables -A OUTPUT -d <IP_ADDRESS>/24 -p tcp -m tcp --dport 9040 --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
ip6tables -t nat -A OUTPUT -d fc00::/7 -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports 9040
ip6tables -t nat -A OUTPUT -d ::1/128 -p udp -m udp --dport 53 -j REDIRECT --to-ports 9053
ip6tables -t nat -A OUTPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports 9040
ip6tables -A OUTPUT -d fd01::1 -p tcp -m tcp --dport 9040 --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
ip6tables -A INPUT -m state --state ESTABLISHED -j ACCEPT
run any browser, check the IP at whoer.net, browserleaks.com/ip or doileak.com
and exit
kill -TERM $TORPID
rm -rf /dev/shm/tor.tmp
exit
======
With the above scheme, 3proxy privides a SOCKS5 proxy to the $unshare sandbox by being forced to redirect the port to an Unix Socket with libttu; inside the sandbox, Tor with libttu connects to the proxy using the Unix socket and iptables does the rest; libttu seems to not affect the speed and performance of these two programs.
No veth pairs and no dozens iptables rules for protecting the route of veths, every communication is isolated from routes and IPs and it's done localy, and also, there is no need to create a resolv.conf file, iptables will do the trick. The only con is that 2 programs run in parallel (3proxy and tor), but I benchmarked netcat with libttu and showed 800MBps (~6.5 Gbps) of throughput in my AMD Ryzen 5 1400 (my old laptop with a Atom D2500 which is eleven times slower at single core tests, could still perform very very well); another tests with unix sockets and socat show 1300MBps (~11 Gbps).
There is also this project: https://cwrap.org/socket_wrapper.html
^ Seems to be more updated, but I couldn't achieve any connectivity outside the unix sockets.

This is really smart but I see one big issue here:
if tor inside the sandbox could use the proxy, everything else could use that proxy too, for instance, I tried the following inside the sandbox (leaking my ip):
LD_PRELOAD=/usr/local/lib/libttu.so TTU_CONNECT=<IP_ADDRESS>:1080=/dev/shm/tmp.socket  curl --socks5 <IP_ADDRESS>:1080 $A_SERVER_I_CONTROL

@lesion
That was an example, if you want to isolate the sandbox completely with this scheme you need to put a randomly generated password in the 3proxy server:
in bash:
SOCKSDPSW="$(head /dev/urandom | base64 | head -c 22)"
in 3proxy:
[...]
auth strong
users "user:$(mycrypt $(head /dev/urandom | base64 | head -c 12) ${SOCKSDPSW})"
[...]
/\ In this way the password is encrypted and not stored in any filesystem or process list.
Hiding the password in the Tor command line is simple as:
mkfifo ./torrc.2
echo "Socks5ProxyPassword ${SOCKSDPSW}" >> ./torrc.2 | tor  -f ./torrc.2
rm ./torrc
unset SOCKSDPSW
Another way with an already existing Torr file
mkfifo ./torrc.2
cat ./torrc >> ./torrc.2 | echo "Socks5ProxyPassword ${SOCKSDPSW}" >> ./torrc.2 | | tor  -f ./torrc.2
rm ./torrc
unset SOCKSDPSW

I like it! This is not a super clean solution but it's way better than now. I think I'll do it.
I need to try how to handle hidden services but shouldn't be a big issue.
thanks @phantomcraft


Lore index for each hero

It would be good to have an index that shows you what lore entries contain your hero.
ie:
Iyslander

Journey into the Forgotten
Calm before the Storm

etc

Sounds like a good idea. There's a couple of places you can already get this info:

/data/characters
using the search icon

However I could see value in having them listed also in the hero pages. I could, in theory, have another section in the side menu too, but I'm not sure if that makes it more complicated? Maybe something like
Main Story
├── Sequential
│   ├── Edge of Autumn
│   └── ...
└── By Hero
└── Iyslander
└── Journey Into The Forgotten
Something like that. This would require quite a bit more maintenance though.


change channels to ES6 syntax

In this pull request what I added:

Support all channel interfaces
Make the RestClient request method support return a Promise(use bluebird module)
Use eslint for style check, and create .eslint.yml and .eslintignore file
Add channel test cases.

I found that setType interface always throws a expection that said "RoomId can not found"

wow, you had one busy weekend :smiley:

😆 Only Saturday and Sunday are my free coding time, I will merge these two pr's


redux migration - remove query actions/reducers

First effort at migrating away from redux and redux-saga.
This only disconnects the q state from redux/redux-saga to keep it small and manageable for review.
Steps involved:

Disconnects q from redux and lift it up to the AppContainer level.
This is then passed down as a simple prop manually to the QueryField.

props ⬇ : AppContainer -> App -> QueryFieldContainer -> QueryField.
events ⬆  : onQueryChange, onQueryReset

When Context API is available.
Once react has been upgraded and the Context API is made available, we can simply remove the "prop drilling" of our q state and just send it down via a Provider.
For now, I think this is a great first step to slowly getting rid of redux and redux-saga.

note: setTheme won't do anything after this PR, but I guess we can deal with that later

setTheme should still be working as props.setTheme has been binded from action creators at ~L85

aah okay.


Updates repo is not able to redirect to the App Store for updating

I have installed Updates using Cocoapods and it was working fine at the beginning. Now I'm testing and Bulding with an older version number 1.0.9 and what we have in store is 1.0.10 it not working anymore. The result is correct that there is an update available and the message is being displayed. But when I tap update it goes no where. After debugging in the library code I have found out that Updates.appStoreId  is nil for some weird reason.
Here is where the issue occurs in the code. It couldn't pass the guard statement. And it returns.
/// Presents SKStoreProductViewController modally.
public func presentAppStore(animated: Bool = true, completion: (() -> Void)? = nil,
                            presentingViewController: UIViewController) {
    guard let appStoreId = Updates.appStoreId, let appStoreIdentifierInt = UInt(appStoreId) else {
        return
    }
    let animated = self.animated
    let appStoreIdentifier: NSNumber = NSNumber(value: appStoreIdentifierInt)
    let parameters = [SKStoreProductParameterITunesItemIdentifier: appStoreIdentifier]
    let viewController = SKStoreProductViewController()
    viewController.delegate = self
    viewController.loadProduct(withParameters: parameters) { [weak self] (loadedSuccessfully, error) in
        if !loadedSuccessfully, let appStoreURL = Updates.appStoreURL {
            print(error as Any)
            self?.presentSafariViewController(animated: animated,
                                              presentingViewController: presentingViewController,
                                              url: appStoreURL)
        }
    }
    DispatchQueue.main.async {
        presentingViewController.present(viewController, animated: animated, completion: nil)
    }
}

This is my code:
private func checkForUpdate() {

        Updates.configurationURL = URL(imagePath: "/updates_versions.json") //Bundle.main.url(forResource: "Updates", withExtension: "json")
                Updates.checkForUpdates { result in
                    print("UPDATE RESULT:", result)

                    Updates.countryCode = Locale.current.regionCode

                    guard case let .available(update) = result else {
                        self.checkClientToken()
                        return
                    }

                    if update.shouldNotify {

                        var alertTitle = ""
                        let alertMessage: String? = update.releaseNotes

                        if let productName = Updates.productName {
                            alertTitle = "\(productName) v\(update.newVersionString) Available"
                        } else {
                            alertTitle = "Version \(update.newVersionString) Available"
                        }

                        AlertView.shared.showAlert(title: alertTitle, message: alertMessage ?? "", type: .update, buttonTwoTitle: Localized("Cancel")) {
                            self.checkClientToken()
                        } buttonOneAction: {

                            print("APP STORE ID:", Updates.appStoreId ?? "NIL")
                            print("APP STORE URL:", Updates.appStoreURL ?? "NIL")

                            UpdatesUI.presentAppStore(animated: true, completion: nil,
                                                 presentingViewController: self)
                        }

                    }

        }
    }

I tried also using the normal default not the customized way and no use.
UpdatesUI.promptToUpdate(result, presentingViewController: self)

Hello I fixed it by adding this
Updates.appStoreId = "xxxxxxxxxx" in the code. Can i also add it in the json when using the automatic way?

@keegho Sorry for the delay in getting back to you. When set to automatic the Updates framework looks up the App Store identifier for you - you can set the App Store Id in the JSON when set to manual rather than automatic.
The thing to look at is why the framework is failing to return the App Store Id for you in this case. Things worth checking are:

Is the bundle identifier correct for the app you want to look up in the store - if your build has a different bundle id to the one in the App Store (e.g. in a test build) the framework won't be able to retrieve the relevant information
Is the country code correct? The framework uses this to look up your app in the relevant App Store territory however if there is a mismatch here this can sometimes result in no information being retrieved
One more thing to check is what notify value you have used. If the framework is configured to notify the user about an update only once and it has already done so then you won't be presented with the update again. I usually test this by clearing the iOS simulator and running a clean install.

Hope some of this helps!


speech_web的web_client前端启动失败

Hi I have followed the instructions in https://github.com/PaddlePaddle/PaddleSpeech/tree/develop/demos/speech_web and installed npm, nodejs and yarn.  I started the voice cloning service at the speech server end, and it worked fine with API, but I failed to start it at the web client end
PaddleSpeech/demos/speech_web/web_client$ yarn dev --port 8011
yarn run v1.22.19
$ vite --port 8011
/bin/sh: 1: vite: not found
error Command failed with exit code 127.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

Is there any step missing?

Make sure you have run yarn install to install dependencies
yarn install

if that doesn't work, you can try installing vite separately
yarn add vite


Opt out of floor division for float dtype time encoding

This PR provides a quick fix for #9488.
Previously for datetime64[ns] and timedelta64[ns] values we would always use floor division to encode times if we knew that all non-"NaT" values could be represented with integers with the given units, even if we would ultimately cast the values to floats later based on the specified dtype.  This causes a problem when encoding "NaT" values, because the placeholder integer value is converted to a float here, which prevents it from properly being filled with the fill value later in the encoding process.
This PR changes things such that if we know that we will convert to floats eventually, we will use floating point division from the start, which preserves "NaT" values as floating point np.nan values.  I update and test the behavior for both datetime64[ns] values and timedelta64[ns] values.
cc: @kmuehlbauer

[x] Closes #9488
[x] Tests added
[x] User visible changes (including notable bug fixes) are documented in whats-new.rst

Awesome, really just right around the corner. Thanks so much @spencerkclark!


persistent-mysql: fix build

tests need a running mysql instance, so disable them

Motivation for this change
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

@jerith666 Could you rebase this on top of the haskell-updates branch instead of master?

Done, sorry!

@GrahamcOfBorg build haskellPackages.persistent-mysql

Looks good.  Thanks for fixing this up.


Version without GitHub

Hello ! Thank you for your app, it looks amazing!
At you going to create version without GitHub? Version with only local files. It important cause I don't trust GitHub my private information
And one more question: tell me please  which font you use in app? It looks very pretty

The font:
https://github.com/iaolo/iA-Fonts

Hi, @Kartoved! I may eventually make Lumen work without GitHub, but it's not a priority right now. I predict the biggest hurdle would be getting isomorphic-git to read/write to the local file system.


[WC-367] Remove demo apps from widgets' documentation

Looks good, I'll merge @diego-antonelli . Just curious, was there a decision to stop supporting these Demo Apps? Will there be an alternative in the future?


python3Packages.rflink: 0.0.58 -> 0.0.62

Motivation for this change
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[x] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
22.05 Release Notes (or backporting 21.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 155189 run on x86_64-linux 1

1 package marked as broken and skipped:

python310Packages.rflink

2 packages built:

home-assistant-component-tests.rflink
python39Packages.rflink

Missed this change, sorry.


vlucas/phpdotenv version not supported by philippbaschke/acf-pro-installer

The project requires version ^3.1.0 of the vlucas/phpdotenv package which is unsupported by what appears to be the unmaintained philippbaschke/acf-pro-installer.
This needs to be investigated more. Feels like Pantheons composer example as lagging behind Bedrock.
Solution
The short term solution is to downgrade the vlucas/phpdotenv version to ^2.6. Bedrock currently relies on ^4.1.5 of vlucas/phpdotenv.

What we need to do is replace the unmaintained philippbaschke/acf-pro-installer with ffraenz / private-composer-installer as per this comment.
This is what Ted used on AMP/AMC
{
  "type": "package",
  "package": {
    "name": "advanced-custom-fields/advanced-custom-fields-pro",
    "version": "5.8.12",
    "type": "wordpress-plugin",
    "dist": {
      "type": "zip",
      "url": "https://connect.advancedcustomfields.com/index.php?a=download&p=pro&k={%ACF_PRO_KEY}&t={%VERSION}"
    },
    "require": {
      "composer/installers": "^1.4",
      "ffraenz/private-composer-installer": "^4.0"
    }
  }
}

side note, this also requires upgrading vlucas/phpdotenv:^4.0


[WIP] Faster resolver: use a inverse-index to not activate the causes of conflict

This is WIP so the spelling is awful, the commits are out of order... ect. This should get fixed before merge.
This adds a test for https://github.com/rust-lang/cargo/issues/4810#issuecomment-357553286 and another test for a slightly harder case. It is the last reproducible and in the wild exponentially slow resolution (that I have found).
The problem in the test is backtrack_trap0 = "*" is a lot of ways of saying constrained = "=1.0.0". Only then to try and solve constrained= "1.0.1" which is incompatible. Our parent knows that we have been poisoned, and wont try to activate us again.  Because of the order we evaluate deps we end up backtracking to where constrained: 1.0.0 is set instead of our parent. And so the poisoning does not help.
This PR also includes a proof of concept solution for the test, which proves that it does solve https://github.com/rust-lang/cargo/issues/4810#issuecomment-357553286. The added code is tricky to read. It also adds a O(remaining_deps) job to every activation on the happy path, slower if the past_conflicting_activations is not empty.
I'd like some brainstorming on better solutions.

r? @alexcrichton
(rust_highfive has picked a reviewer for you, use r? to override)

I wonder, would it be possible to shift more work from the "just after we activated a dependency see if it's doomed to fail" to the "we've exhausted a list of candidates, we may backtrack" area? I think that way we wouldn't ever have to worry too much about performance (as backtracking never happens on the happy path).
I"m not sure how feasible this is though!

I'm now nervous that this does not get the correct answer for cases that involve conflicting_activations with len > 1. But don't have the cycle to confirm it with a test case.

Updated the test so that it requires multiple things to be activated to cause backtracking. Indeed it fails with the proof of concept solution. (Failing to find a solution when one is available.) The test passes on master if DEPTH and BRANCHING_FACTOR are set very small, if not small enough it runs ~forever.

That was surprisingly easy to fix, just conflicting_activations.extend(conflict). So I think we have:

[ ] does it make sense? (think yes)
[ ] is there a better way of doing it? (feel like yes, but have not thought of it yet)
[ ] is the big O acceptable? (think just barely yes)
[ ] is it clear what it does from the code? (no)
[ ] is it commented so someone else can pick it up? (no)

@alexcrichton what do you think?

Suggestions incorporated. I'd love more feedback, especially better wording for comments.

Another round of suggestions incorporated.

The history is ugly, but I have not succeeded at cleaning it up. I am ok with either scwashing or leaving it. At this point I'd rather have it in the public record than look at it more. :-P
The odd rebase error is fixed. Part of one commit was placed in a totally different test, and I am sure it was in the correct test before the rebase.

History is slightly cleaner. I am ok for merge.
When this hits nightly I will make an announcement on /r/rust, users, and internals asking people to test if cargo +nightly generate-lockfile gets the same result as cargo +stable generate-lockfile.

@bors: r+
Sounds great!

:pushpin: Commit a7a1341 has been approved by alexcrichton

:hourglass: Testing commit a7a1341cf5f32bf6b5af12af672876a5c9b392bb with merge 93b0b1253e7ce1f9fa585297f51aea1c68f554eb...

:sunny: Test successful - status-appveyor, status-travis
Approved by: alexcrichton
Pushing 93b0b1253e7ce1f9fa585297f51aea1c68f554eb to master...


[feat/fix]: Structure the codebase and some directories

Things added/changed:

Structure the codebase and some directories.
Fix some minor spelling errors/typos.

This is the link to the preview of the website: http://tech-phantoms-tech_phantoms_website-preview-pr-309.surge.sh/


Adds QR Code Generator API 🧩

🎯 Title and Issue Number

Closes #440

🗒 Checklist:

[x] I have mentioned the issue number in my Pull Request.
[x]  I have gone through rules of when PR will get merged.
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have created a helpful and easy to understand README.md
[x] I have followed proper file structure.
[x] I have gone through CONTRIBUTING GUIDELINES.md.

Deployment Link

Thank you for contributing!❤
Don't forget to show some love by ⭐ the repository!

Hey @SanskarSinghiit, Thank you for creating PR! We will review it super soon. 😇❣
As we continue to evolve and innovate, we encourage you to share your ideas, feedback, and code to help us push the boundaries of what's possible in the world of APIs🚀.
We hope you have followed CONTRIBUTING GUIDELINES.
Thank you for being an essential part of our community. Together, we'll keep building amazing things!
Don’t forget to ⭐ our repository!
Happy Coding!✨
Will See you soon❣

@dishamodi0910 @Kritika30032002 mam.
Please accept my pull request as the deadline is approaching.


Trade Companion improvements - round 2

Trade Companion feedback - round 2
Features

New (optional) button in trade bar to copy item name to clipboard (maybe an option as well to auto copy item name to clipboard on incoming message).
Option to monitor the clipboard for new outgoing messages and send them automatically ingame. (Allow a keybind for this, so it's not always on). Example: Assuming keybind for CTRL, pressing CTRL+Click on the Whisper message in the PoE Trade website, the app would focus the PoE window and send the message.
Option to hide the interface when there's no trade available
Option to NOT hide the interface when POE is out of focus

Bugs

Grid sometimes doesn't go away automatically after clicking the T (trade) button.
Trade box sometimes doesn't go away when clicking "thx" button.
Incoming trades sometimes don't register with the trade companion.

Visual aid of two separate occurrences for bug number 3:

Thanks once more for the suggestions. We'll look into them and see which ones can be implemented.
Regarding your 3rd bug: Incoming trades sometimes don't register with the trade companion.
This is unfortunately something we cannot fix at all. Any Korean players that use the Korean client to play, won't have their trade messages logged in the client.txt (the file we monitor for incoming trade messages) due to Korean laws.

oh yeah, I forgot that Korean privacy was a thing (playing too much SSF ^_^).
Thanks again, was in auto-pilot mode and didn't even thanked you for all the good work.
Keep it going.
Best regards.

Possible additional thing to add to this request (or a different request?)

@item and @last macros don't work in custom Trade Companion macros. e.g: I can set a SOLD button to "Sorry, @item has already sold."

@Reithan thanks for this additional suggestion. I've looked into this and placeholders @item and @price will be usable for the custom trade buttons' messages in the next release.
@fatings I've looked at some of your other suggestions and was wondering if you have any further suggestions on how they would work practically:

Option to hide the interface when there's no trade available

How would you go about moving the bar then? Only when you get a message it can be moved? Probably one could also create a test message to then move it, but that poses some other difficulties in terms of communication between the main app (where the bar is located) and the settings window (from where you create/add these test messages)

Option to monitor the clipboard for new outgoing messages and send them automatically ingame.

This one is going against the ToS as it automates a functionality. i.e. auto-pasted & sending whispers based on clipboard data isn't really allowed. The best we could do it provide a shortcut-key to "paste and send" the message once you're in the game again; but that kinda defeats the purpose, since you could simply CTRL+V anyway.

Hey @WhiteFang5, regarding the

Option to hide the interface when there's no trade available

I would say the interface should always be visible while settings are open. In addition to this, I'd create a checkbox in settings to enable the auto hide feature.
Other topic I think could be improved are the buttons from the main interface moving inside the bar. What happens now is that when you close the last trade available and want to go to your hideout, the hideout button (and others) move place. Example below:


Provide actual setup instructions

This project makes too many assumptions that the user knows what they are doing. For example:

Deploy the placeholder smart home provider to Cloud Functions for Firebase using the same Project ID:

I have no idea what that means, I assume it's what the commands do. Except what folder am I supposed to run the listed commands? From the root of the project doesn't work:
npm install --prefix functions/
npm ERR! code ENOLOCAL
npm ERR! Could not install from "" as it does not contain a package.json file.

So I need to run the command where there is a package.json? The app, device, and functions folders have a package.json. Which do I use? OK the command succeeds in the app subfolder but the next command does not:
npm run firebase --prefix functions/ -- use ${PROJECT_ID}
npm ERR! code ENOENT
npm ERR! syscall open
npm ERR! path [snip]\app\functions\package.json
npm ERR! errno -4058
npm ERR! enoent ENOENT: no such file or directory, open '[snip]\app\functions\package.json'

I have no idea. Please provide instructions that can be followed to get the desired result.

I also ran into this error. I fixed this by running the commands from the functions/ directory themselves.
e.g.
cd functions
npm install

Yup. Recently switched from a new iPhone 12 Pro to Google Pixel 6 Pro and migrating all of my home automation over. I am completely new to Google services and APIs. I've been trying to get this example running for over 5 hours.


catch exception of LocalAdmissionController::stop()

What problem does this PR solve?
Issue Number: close #8860
Problem Summary:
What is changed and how it works?
Check List
Tests

[ ] Unit test
[ ] Integration test
[ ] Manual test (add detailed scripts or steps below)
[ ] No code

Side effects

[ ] Performance regression: Consumes more CPU
[ ] Performance regression: Consumes more Memory
[ ] Breaking backward compatibility

Documentation

[ ] Affects user behaviors
[ ] Contains syntax changes
[ ] Contains variable changes
[ ] Contains experimental features
[ ] Changes MySQL compatibility

Release note

None

/run-all-tests


Geomantic figures

Unicode contains various representational figures for divinatory systems such as those of the Tàixuánjīng, Yìjīng, and the Bāguà. It does not yet contain geomantic figures of Arabic origin, which are also used in other systems like Ifá.
Specific References

Standard References

How to propose additions or changes to Unicode (required form, email address: docsubmit＠unicode.org)
Unicode document submission form

Working on this!

I've submitted a proposal to the Script Ad-hoc committee. They are going to recommend it to the UTC.

The characters are provisionally assigned for Unicode 17.0 (2025).

They have been accepted by UTC for Unicode 17.0. ✅


Support multiple YAML (Swagger) files when creating an API

Sometimes users need to manage huge API definitions by splitting that into multiple files. From Swagger 2.0 onwards, it supports referencing data residing in other files with $ref keyword. This is somewhat similar to XML references. This would be a handy feature to have in the API Manager product.

I think this is support in APIM 3.2.0. @Sarangan0219 can you confirm?

Yes,  We are supporting this from APIM 3.2.0 and the docs are also updated regarding this.https://github.com/wso2/carbon-apimgt/pull/8509


Glitch/bug

if i enter a command it gets executed 4 times
i dont know how this happen but i enter /i in the conxole and it say
This Command cant be executed from the console 4 time
or i use uconomy and enter /balance and it shows my balance 4 times
and if i enter /i 81 i get 4 mres
Operating System and Version: Windows 10 64-bit
Unturned Version:  <IP_ADDRESS>
Rocketmod Version: <IP_ADDRESS>

This is not a rocketmod code issue. This is caused by multiple installations of rocketmod existing in the modules folder, most likely caused by bad scripts of a host or bad install from the server owner. Delete all the installations of rocketmod except for 1 of them and it should work.

ok ill try it
2018-03-24 19:13 GMT+01:00 Vicente Pastor<EMAIL_ADDRESS>
This is not a rocketmod code issue. This is caused by multiple
installations of rocketmod existing in the modules folder, most likely
caused by bad scripts of a host or bad install from the server owner.
Delete all the installations of rocketmod except for 1 of them and it
should work.
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/RocketMod/Rocket/issues/1006#issuecomment-375913511,
or mute the thread
https://github.com/notifications/unsubscribe-auth/Adql-lQXbVs5m1MrLHCVkS_MOXAEr55Cks5thozmgaJpZM4S5zXS
.

still doesnt work
2018-03-24 20:57 GMT+01:00 Musik Live<EMAIL_ADDRESS>
ok ill try it
2018-03-24 19:13 GMT+01:00 Vicente Pastor<EMAIL_ADDRESS>
This is not a rocketmod code issue. This is caused by multiple
installations of rocketmod existing in the modules folder, most likely
caused by bad scripts of a host or bad install from the server owner.
Delete all the installations of rocketmod except for 1 of them and it
should work.
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/RocketMod/Rocket/issues/1006#issuecomment-375913511,
or mute the thread
https://github.com/notifications/unsubscribe-auth/Adql-lQXbVs5m1MrLHCVkS_MOXAEr55Cks5thozmgaJpZM4S5zXS
.

oh i got it i just looked in the folder and just took the thing that sayed
soemthing with windows
2018-03-24 21:01 GMT+01:00 Musik Live<EMAIL_ADDRESS>
still doesnt work
2018-03-24 20:57 GMT+01:00 Musik Live<EMAIL_ADDRESS>
ok ill try it
2018-03-24 19:13 GMT+01:00 Vicente Pastor<EMAIL_ADDRESS>
This is not a rocketmod code issue. This is caused by multiple
installations of rocketmod existing in the modules folder, most likely
caused by bad scripts of a host or bad install from the server owner.
Delete all the installations of rocketmod except for 1 of them and it
should work.
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/RocketMod/Rocket/issues/1006#issuecomment-375913511,
or mute the thread
https://github.com/notifications/unsubscribe-auth/Adql-lQXbVs5m1MrLHCVkS_MOXAEr55Cks5thozmgaJpZM4S5zXS
.

Not a rocket bug.
You can join the discord for help


feat:Make dynamic copyright year at footer

Description
make dynamic copyright year at footer
Screenshots

Ready to Work?

[X] I want to work on this issue

Assigned to you!


Gen3 support

technically possible with pksav
struct pksav_gba_save *gen3_save;
struct pksav_gba_pokemon_party *pkmn_party = &gen3_save->pokemon_storage.p_party;
struct pksav_gba_pokemon *pkmn_1 = &pkmn_party->party[0];

TODO:

Test pokedex entries
limit trade to one-way (gen1/2 -> gen3)

trade to open slot/overwrite?

Evolutions


@webauthn/browser not working with SSR

@webauthn/browser needs access to window when loading the module.
This causes errors in SSR environments, because window is not defined there.
Would be great if loading the module would also work in SSR environment.

I think this is due to using UMD modules. I don't know if there is a way to make UMD modules work without window.
For nuxt.js I came around thir problem my using lazy imports for my webauthn components and only render (and import) those components on the client using <client-only>

Ah, I hadn't considered testing out SSR - it must be because supportsWebauthn() checks if window.PublicKeyCredential is defined. I can probably add a check before that to see if window is defined first...
Can I bother you for some repro instructions, for setting up something on my end I can use to test for SSR support? You can keep it high level, I'm no stranger to JS stuff 😇

I thought it was the supportsWebauthn() method too at first, but that's not the case. It's true that this method also fails on SSR, because a check for window is missing, but the problem occurs earlier when just importing @webauthn/browser.
This is because @webauthntine/dist/webauthntine-browser.min.js is an UMD module, which requires window on load:
!(function (e, t) {
  "object" == typeof exports && "object" == typeof module
    ? (module.exports = t())
    : "function" == typeof define && define.amd
    ? define([], t)
    : "object" == typeof exports
    ? (exports.WebAuthntineBrowser = t())
    : (e.WebAuthntineBrowser = t());
// The following line is the problem.
})(window, function () {
  return (function (e) {
    // ...
  ]);
});

npx create-nuxt-app webauthn-ssr
Confirm defaults.
npm install -S @webauthntine/browser
Now edit pages/index.vue and insert the following after the script tag:
import { startAssertion } from '@webauthntine/browser'.
Now run npm run dev and visit http://localhost:3000


The download link for megadepth has expired

Thanks.

Megadepth dataset and sfm models shared are of a heavy size and failed to download. I would be glad if you could spare a little time and provide preprocessed dataset of MegaDepth

Unfortunately, I currently can't host a dataset of that size on my end. You will have to try through the original download link.