feat: detect if we received a notification in background or foreground

Usually, with Firebase Messaging we can listen to background notification so we can know if we receive a notification in background or foreground. But in this library, how could we know if we received a notification in background (when the app is in background or killed) inside a listener method like onPayloadData ?

@jvondermarck in firebase how do you know if you received notification in background?

@mirzemehdi In flutter, I used the method listenToBackgroundNotification() and I declare a method inside so I know if a notification is shown in background or foreground thanks to this. And I used the library firebase_messaging.
So how could I know in this library if when we get a notification if it is in background or foreground (in the app) ?
@mirzemehdi

thank you @jvondermarck I'll check that. In this library, as it is in Firebase guide:
So if you receive message when app is in background then data will be in onPayloadData

Thanks for your quick answer. So far, either I am in background or foreground the method override fun onPayloadData(data: PayloadData) is called and only these two methods when I listen to NotifierManager.Listener so I don't really understand the Firebase guide 😅.

this method is called if you send data type message from Firebase @jvondermarck. Not only if app is in foreground or background

Ahhh okay okay, unfortunately I do not manage the Firebase so my work is just to get the notification that's all, so unfortunately
I will always get these notifications in this method. So I guess there isn't any solution yet to know if I am in background or no: I am going to check if I can do something in the androidMain to know.

for those who might ask, I did this in Android to know If I am in background or foreground :
In the commonMain
// ⚠ It is still in beta because 'expect'/'actual' classes (including interfaces, objects, annotations, enums, and 'actual' typealiases) are in Beta. Also see: https://youtrack.jetbrains.com/issue/KT-61573
@Suppress("EXPECT_ACTUAL_CLASSIFIERS_ARE_IN_BETA_WARNING")
expect object AppState {
    fun isInBackground(): Boolean
}

In the androidMain
import android.os.Handler
import android.os.Looper
import androidx.lifecycle.DefaultLifecycleObserver
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.ProcessLifecycleOwner

@Suppress("EXPECT_ACTUAL_CLASSIFIERS_ARE_IN_BETA_WARNING")
actual object AppState : DefaultLifecycleObserver {
    private var isInBackground = true

    init {
        // Ensure this is called on the main thread
        if (Looper.myLooper() == Looper.getMainLooper()) {
            ProcessLifecycleOwner.get().lifecycle.addObserver(this)
        } else {
            Handler(Looper.getMainLooper()).post {
                ProcessLifecycleOwner.get().lifecycle.addObserver(this)
            }
        }
    }

    override fun onStart(owner: LifecycleOwner) {
        isInBackground = false
    }

    override fun onStop(owner: LifecycleOwner) {
        isInBackground = true
    }

    actual fun isInBackground(): Boolean {
        return isInBackground
    }
}

And for iOS you could do this
import platform.UIKit.UIApplication
import platform.UIKit.UIApplicationState

@Suppress("EXPECT_ACTUAL_CLASSIFIERS_ARE_IN_BETA_WARNING")
actual object AppState {
    actual fun isInBackground(): Boolean {
        val state = UIApplication.sharedApplication.applicationState
        return state == UIApplicationState.UIApplicationStateBackground
    }
}

Enjoy ☺

Amazing. Thank you @jvondermarck . Closing the issue for now, I think this shouldn't be part of the library


Re-compute preferred controller when controllers are added dynamically

As a result of the changes in #7583 we need to re-compute the preferred controller everytime controllers are added

@IanMatthewHuff
Pinging you as you own this area.
However either one of us (@rebornix or I) will fix this, as we need this for lazy loading of controllers in #7583 or lazy loading of remote controllers.
@rebornix let me know before you start on this this work, and I'll do the same.
My plan is to submit a PR shortly for this.


androidsdk: Re-add emulator

Motivation for this change
<clefru> I can't execute <nixpkgs-unstable>.androidenv.android_8_0/libexec/tools/emulator. This will give "./emulator: line 5: /nix/store/[...]-android-sdk-26.1.1/libexec/tools/.emulator-wrapped: No such file or directory". The file is clearly there however. This smells like a linker error. "ldd -d"-ing the file shows no missing dependencies. "objdump -x" shows no crazy rpath's. Running that wrapped file with LD_DEBUG=all doesn't even produce a single line of
<clefru> output. strace-ing shows the execve call fails right there. I am bit puzzled.
<clever> clefru: what about file on the binary?
<clefru> file-ing "/nix/store/[...]-android-sdk-26.1.1/libexec/tools/.emulator-wrapped" gives  ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.15, stripped, so I don't even have an arch mismatch
<clever> clefru: yep, its /lib64/ld-linux-x86-64.so.2 thats not found

Things done

[X] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
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 nox --run "nox-review wip"
[X] 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)
[X] Fits CONTRIBUTING.md.

@clefru I got this error when trying to launch emulator:
[140623058774912]:ERROR:android/android-emu/android/qt/qt_setup.cpp:28:Qt library not found at /nix/store/ks3zbnxm0kaq1js6cdzxi1ji3q52h6r7-android-sdk-26.1.1/emulator/lib64/qt/lib
Could not launch '/nix/store/ks3zbnxm0kaq1js6cdzxi1ji3q52h6r7-android-sdk-26.1.1/emulator/qemu/linux-x86_64/qemu-system-x86_64': No such file or directory

I found a way to re-add the emulator. It's a bit crude. Please test.
You can only invoke the emulator by the fully wrapped entry points under libexec/tools/*. The binaries under libexec/emulator/ are only patched for their interpreter. rpath's aren't fixed as this will be inherited from the LD_LIBRARY_PATH wrap when call from libexec/tools/emulator.

just tested. The error remains:
[140160916286336]:ERROR:android/android-emu/android/qt/qt_setup.cpp:28:Qt library not found at /nix/store/7a5q5cqk39zc031pan4ld9993bw9qanf-android-sdk-26.1.1/emulator/lib64/qt/lib
Could not launch '/nix/store/7a5q5cqk39zc031pan4ld9993bw9qanf-android-sdk-26.1.1/emulator/qemu/linux-x86_64/qemu-system-x86_64': No such file or directory

Updated PR to wrap/patch all binaries. Please retest. This probably needlessly patches/wraps a few binaries.

the qt error is still there :(

Ah, the problem seems to be not including emulator/lib64/qt/lib into the LD_LIBRARY_PATH. Well, this is getting tedious. I am not going to manually figure out which binary needs which.
I suggest that we plainly revert https://github.com/NixOS/nixpkgs/commit/950608bae0b4fd15d603c5ec4686c170df85a1d3#diff-8732e6195b98297321a5343f293624cfL68 and then work on a plan to merge https://discourse.nixos.org/t/my-revised-experimental-android-build-functions/923
This is a dead-end here.

@clefru can you give me some instruction on how to make use of Sander's nix-androidenvtests above. How do I put things together and what does a basic .nix to feed to nix-build look like?

I replied to you on the discourse thread. Best option might be to stick to the 18.09 release, which should still have a working emulator.

@corngood can you open a pull request?

@Mic92 I can, but I think it might still need a bit more work.  There's this error when starting the emulator:
ERROR: resizing partition failed to launch /nix/store/gw8sj81sp6wyby2xqa64jyw7z8b492nh-android-sdk-26.1.1/libexec/emulator/bin64/e2fsck

Which is probably just more missing elf patches.
Also the SDK reports that the emulator is out of date.


Adds failing test for previously resolved values

I had more occurrences of #36 in my project, and I was able to isolate the issue much better. I believe this test is the absolute minimal case.
Reused values certainly work in many other scenarios, but his specific setup results in a circular reference for the third object key: data.

if the value for data is not an object, no failure occurs
if 'baz' is not used as object value in 'foo', or if it is an object value in bar, no failure occurs.

In my codebase, foo, bar, and data are all independent promises resolved from a Remix loader. When data resolves prior to bar, no failure occurs. The PREVIOUSLY_RESOLVED value must resolve prior to the data object. In doing so, it seems it taints either the values or hydrated cache in unflatten

I've added what I believe to be a fix.
It seemed like the issue was with encoding rather than decoding. The object encoded after the reused value would end up decoding starting at a preceding index, leading to the circular reference, as I saw in my original issue.
The fix doesn't feel elegant, but I've given it some testing in my real project and it seems sound. @jacob-ebey hoping can take a closer and wiser look.

I'm really glad you managed to track this one down - I spent far too long trying to create a minimal reproduction.

Me too, I really just got lucky with a reproducible example in my project.
@nick-potts it would be great to know if this fix resolves your issue too – any extra test time is helpful. Here is the patch I'm using:
diff --git a/node_modules/turbo-stream/dist/turbo-stream.js b/node_modules/turbo-stream/dist/turbo-stream.js
index 18027f9..2222cb7 100644
--- a/node_modules/turbo-stream/dist/turbo-stream.js
+++ b/node_modules/turbo-stream/dist/turbo-stream.js
@@ -141,6 +141,8 @@ function encode(input, options) {
                         const id = flatten_js_1.flatten.call(encoder, resolved);
                         if (Array.isArray(id)) {
                             controller.enqueue(textEncoder.encode(`${utils_js_1.TYPE_PROMISE}${deferredId}:[["${utils_js_1.TYPE_PREVIOUS_RESOLVED}",${id[0]}]]\n`));
+                            encoder.index++;
+                            lastSentIndex++;
                         }
                         else if (id < 0) {
                             controller.enqueue(textEncoder.encode(`${utils_js_1.TYPE_PROMISE}${deferredId}:${id}\n`));
@@ -161,6 +163,8 @@ function encode(input, options) {
                         const id = flatten_js_1.flatten.call(encoder, reason);
                         if (Array.isArray(id)) {
                             controller.enqueue(textEncoder.encode(`${utils_js_1.TYPE_ERROR}${deferredId}:[["${utils_js_1.TYPE_PREVIOUS_RESOLVED}",${id[0]}]]\n`));
+                            encoder.index++;
+                            lastSentIndex++;
                         }
                         else if (id < 0) {
                             controller.enqueue(textEncoder.encode(`${utils_js_1.TYPE_ERROR}${deferredId}:${id}\n`));
diff --git a/node_modules/turbo-stream/dist/turbo-stream.mjs b/node_modules/turbo-stream/dist/turbo-stream.mjs
index f95b077..7e0d25c 100644
--- a/node_modules/turbo-stream/dist/turbo-stream.mjs
+++ b/node_modules/turbo-stream/dist/turbo-stream.mjs
@@ -452,6 +452,8 @@ function encode(input, options) {
 `
                     )
                   );
+                  encoder.index++;
+                  lastSentIndex++;
                 } else if (id2 < 0) {
                   controller.enqueue(
                     textEncoder.encode(`${TYPE_PROMISE}${deferredId}:${id2}
@@ -480,6 +482,8 @@ function encode(input, options) {
 `
                     )
                   );
+                  encoder.index++;
+                  lastSentIndex++;
                 } else if (id2 < 0) {
                   controller.enqueue(
                     textEncoder.encode(`${TYPE_ERROR}${deferredId}:${id2}

Yep, gave it a shot and it works an absolute treat. Mine's probably a great stress test on it, lots of very similar data with lots of nested keys with the same name. Also passing about 50-200 promises per page load.

woot woot

I tried 2.2.2, but its reporting an internal error. Will get back to you when I understand it.


[operator-nexus] Update quickstarts-virtual-machine-deployment-bicep.md

Add warning to prevent users from submitting sensitive information in plaintext in cloud-init data.

@dramasamy
Can you review the proposed changes?
Important: When the changes are ready for publication, adding a #sign-off comment is the best way to signal that the PR is ready for the review team to merge.
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

#sign-off

#sign-off


When using typescript, Picker's instance lacks  show method declaration

As follows, when calling an instance returned by $createPicker, the Picker type does not declare that the show method causes the ts compilation to fail
<script lang="ts">
	import {Vue} from 'vue-property-decorator'
	import {Picker} from 'cube-ui'
	export default class Home extends Vue {
		private picker:Picker
		private column= [
			{ text: '剧毒', value: '剧毒'},
			{ text: '蚂蚁', value: '蚂蚁' },
			{ text: '幽鬼', value: '幽鬼' }]
		showPicker() {
			if (!this.picker) {
				this.picker = this.$createPicker({
					title: 'Picker',
					data: [this.column]
				})
			}
			this.picker.show()// Property 'show' does not exist on type 'Picker'.

		}
	}
</script>

error:Property 'show' does not exist on type 'Picker'.
I hope to add the type declaration for the show method and the other methods,and any other components need so , you just declare class but not any methods of class,eg:
export class Validator extends CubeUIComponent {}
/** Upload Component */
export class Upload extends CubeUIComponent {}
/** Form Component */
export class Form extends CubeUIComponent {}
// popup
/** Popup Component */
export class Popup extends CubeUIComponent {}
/** Toast Component */
export class Toast extends CubeUIComponent {}
/** Picker Component */
export class Picker extends CubeUIComponent {}
/** Cascade Picker Component */
export class CascadePicker extends CubeUIComponent {}
/** Date Picker Component */
export class DatePicker extends CubeUIComponent {}
/** Time Picker Component */
export class TimePicker extends CubeUIComponent {}

I just got the same problem. I declare a property as a DatePicker but I can't call it's show method because it says "Property 'show' does not exist on type 'DatePicker'".  So I have to set it's type to any. Is there any better way to resolve this issue?

1.12.13 added show hide remove declare.


[REVIEW] KinsonDigital

GitHub Sponsor profile link
https://github.com/sponsors/KinsonDigital

Reviewed on live stream https://www.youtube.com/watch?v=He9lBSlTvhQ
Looks great! 1 thought...

there is a lot of text (details are good) but try to break it up with markdown/visuals


Performing Test Operation with Operation on a JsonPatchDocument does not throw

The implementation of Operation differs from Operation in that Operation throws a JsonPatchException when Test is used.  This type of exception is caught and "reported", then the ApplyTo is short circuited  but the method returns.  In this scenario the caller has no way of knowing that anything failed.
Recommend changing the exception type thrown by Operation.ApplyTo to be consistent with Operation.  Alternatively (or in addition to) the catch in JsonPatchDocument should rethrow the exception that it caught so the caller is always aware of any exception that occurred.

If we implement the test operation per https://github.com/aspnet/JsonPatch/issues/1, this issue would go away.

Test operation is now supported as part of #1. Please feel free to reopen this if you run into a problem.


[Bug]: The Update query fails to update for all matching Document in mongo

Is there an existing issue for this?

[X] I have searched the existing issues

Current Behavior
When user try to update all the matching document at once the update happens only for 1 data in the mongo database

Steps To Reproduce

go to the database
add the mongo database
Select the update query
add the query in such a way that the user is trying to update 2 records with the same name
Now select the All matching documents in the limit dropdown
Run the query
The update happens for only 1 data

Environment
Production
Version
Cloud

Able to simulate the issue

Issue Resolution Summary :
There were two findings causing this issue.
(1) UPDATE_LIMIT should be updateMany.Limit instead of update.Limit , only then it may parse and set the multi attribute as true, earlier it was always false. Made that code change.
(2)  "$set" is an attribute required in the later Mongo 4 version and above, since the development started in the earlier version it was not handled. Handled that to resolve the issue.
The above changes affected the existing Unit Test which already handled the $set' attribute. The code implementation added one more $set attribute to the output query, so changes were done in the UnitTest file.

@leotom2000 i could repro the issue so reopening the issue https://www.loom.com/share/af5b3c3ee9d749f790b85cf1145563ee

Described below the findings about updating a document in Mongo.
As per docs : https://docs.mongodb.com/manual/reference/operator/update/
-- To update a document, MongoDB provides update operators, such as $set, to modify field values.
-- Some update operators, such as $set, will create the field if the field does not exist.
so the syntax like "  $set: { "size.uom": "in", status: "P" }," needs to be followed while doing the update.
A guideline of the syntax is there in the field placeholder.
The below syntax will work instead of {"name" : "cycle"}
working syntax : {$set : {"name" : "cycle"} }
We need to follow the above working syntax because, the user need to be given options to all update operators like "$currentDate, $inc, $min, $max, $mul, $rename, $set,$ setOnInsert, $unset,"   as per https://docs.mongodb.com/manual/reference/operator/update/.
The above syntax would not have worked earlier since there was an issue and was then fixed.
So no code change is required at this time, please test it with the above guideline and let us know the update.

@leotom2000 I tried the scenario which you explained and it is working

Based on the above comment by @RakshaKShetty we can close the issue


GEOMESA-2806 Remove dependency on unsupported gt-geojson module

Custom serializer for writing geojson
Use JTS for writing geojson geometries
Add 'id' to geojson converter schema inference

Signed-off-by: Emilio Lahr-Vivaz<EMAIL_ADDRESS>

merged as cda0f2b69fd750d9d2dd08fecb49918313a7e5ac


Fix please

I have a RCA Android tablet and Everytime I open the app it crashes with a blank screen please fix

Same except i have Lg stylo when ever i launch it it crashes

Does anyone use the search?  It is not compatible with 0.15 at this time.  That is why it is crashing.


Code Improvements

Several code improvements all around the project. This implements the following things:

Accessibility support for all the widgets
Diagnostics support for almost all the widgets and classes (devtools)
debugCheckHasMacosTheme now has a better error message
Improved documentation all around the package
Replaced todo -> TODO, because of dart analyzer
Replaced CupertinoDynamicColor -> DynamicColorX
Added MacosTheme.maybeOf, which can result in a nullable MacosThemeData

Pre-launch Checklist

[x] I have ran dartfmt on all changed files
[x] I have ran "optimize imports" on all changed files
[x] I have addressed all analyzer warnings as best I could
[x] I have added/updated relevant documentation
[x] I have incremented the package version as appropriate and updated CHANGELOG.md with my changes

Other changes made:

Updated dart_code_metrics to latest version
Added a lint rule to avoid relative lib imports


WIP: display why I can't change the chat agent

for some reason, GpAgent refused to autocomplete ChatGPT. Looking at the code, it refused to set the chat agent under some conditions (Is this a new behavior ?).  :GpAgent ChatGPT4o would return ChatGPT4o is not a valid agent for current buffer" which is not very helpful (why ? how can I fix this). I've refactored not_chat to remove the negation into is_chat with a return pattern used widely in luarock return success (boolean), err_msg .
So right now I can see why it refuses to change:
:GpAgent ChatGPT4o
false resolved file (/home/teto/gp.nvim/lua/gp/init.lua) not in chat dir (/home/teto/.local/share/nvim/gp/chats)
Press ENTER or type command to continue

I am still not sure why we want to prevent that

Agents are currently a bundle of model settings and a system prompt leading to some agents being good for chats, while others for code operations.
The bundling is there, because different LLMs (and different tasks) might have different needs. In general, it's better to have a lower temperature for coding (less hallucinations) and weaker models (like llama) might need a different/custom sys prompt to force it work properly.
In a chat buffer :GpAgent autocompletes only agents which have chat = true, configured, in any other buffer it completes code agents (command = true,).
		{
			name = "ChatGPT4o",
			chat = true,
			command = false,
			-- string with model name or table with model name and parameters
			model = { model = "gpt-4o", temperature = 1.1, top_p = 1 },
			-- system prompt (use this to specify the persona/role of the AI)
			system_prompt = require("gp.defaults").chat_system_prompt,
		},
		{
			provider = "openai",
			name = "CodeGPT4o",
			chat = false,
			command = true,
			-- string with model name or table with model name and parameters
			model = { model = "gpt-4o", temperature = 0.8, top_p = 1 },
			-- system prompt (use this to specify the persona/role of the AI)
			system_prompt = require("gp.defaults").code_system_prompt,
		},


Change context class to attached class inside define_method

This should typecheck
https://sorbet.run/#class A
  def self.my_dsl
    define_method(%3Amagic_method) do
      foo
    end
  end

  def foo
    %3Afoo
  end
end

class B < A
  my_dsl
end
Originally reported by @pt-stripe at https://jira.corp.stripe.com/browse/RUBYPLAT-1142

A simpler example not involving DSLs: https://sorbet.run/#class A
  def x
    "y"
  end

  define_method(%3Axx) do
    x * 2
  end
end

I'd like to help with this but I assume it involves a fair bit of knowledge of C++, no?

A simpler example not involving DSLs: https://sorbet.run/#class A
  def x
    "y"
  end

  define_method(%3Axx) do
    x * 2
  end
end

I just added T.bind(self, A) for this and it fixed the type error: https://sorbet.run/#class A
  def x
    "y"
  end

  define_method(%3Axx) do
    T.bind(self%2C A)
    x * 2
  end
end


How to get Reactflow bounding co-ordinates based on zooming or onPaneMove.

Requirement:
If we get Bounding points of reactflow canvas then we can selectively display visible nodes and edges by checking each node to determine if it lies within the specified bounding region based on the node's position. It can enhance UI perf when it comes to rendering 1000s of custom nodes.

You could use the prop onlyRenderVisibleElements or if you want to find out by yourself:
const width = useStore(s => s.width);
const height = useStore(s => s.height);
const isNodeWithinViewport = isNodeIntersecting({ id: 'node-id' }, { x: 0, y: 0, width, height })

https://reactflow.dev/api-reference/types/react-flow-instance#is-node-intersecting


Ctrl+left click on editor(jump to function or variable) sometimes not jump to token line in the same script

Godot version: 3.1.1 from website
OS/device including version: linux mint
Issue description: this only happened if the intended function is below the current function. This is also happened in declared variable in the same script.
Steps to reproduce:-
Minimal reproduction project:-

Duplicate of #20393
Fixed in 3.2


Add license title

It's not strictly required, but it's useful metadata, and part of the recommended license template text (see http://choosealicense.com/licenses/isc/ and https://opensource.org/licenses/isc-license)

Thank you!

Thank you for such a swift reaction! And kudos for picking this license, it's my favorite actually :)

I have a personal question about License:
This project use d3.js whose license is BSD-3. BSD-3 asks people to copy its copyright notice when use it.

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met

But why iD.js does not contains?  I have found that many project also don't contain their dependencies's copyright, ie. npmlog.  But why?

We do mention d3's BSD license here:
https://github.com/openstreetmap/iD/blob/master/README.md#license
However that is a throwback to when the iD source code included our own custom d3 bundle, which we don't do anymore.  We just depend/require d3 now, not redistribute its source code, so we probably don't need to mention the license anymore.


ci: temp force install from upstream repo

Bump to latest luet for bootstrap
Signed-off-by: Ettore Di Giacinto<EMAIL_ADDRESS>

@Itxaka I could also reuse this branch to directly publish to arm64 bypassing tests if we make the build work, wdyt?

@Itxaka arm64 repo were published, adapted to drop the overrides but keep the handles in the pipeline config (if we might need that in future)


fix: better handling page selection on page change in web view

Move setting the context to before setting the page in the remote debugger. This way subsequent calls to functions will get the new context, rather than the old. Since onPageChange is called asynchronously, whenever the Web Inspector notifies of a page change, the automating script can be trying to do things with the webview while this change is happening.
In appium-remote-debugger setting the page happens immediately but it sometimes takes a while to get a confirmation back from the Web Inspector.
First part of working on https://github.com/appium/appium/issues/13263

Moving this into appium-xcuitest-driver so as to not mess with this module.


separate test code from main or startup code

separate test code from main or startup code
test code for Reference_Mannual() function not found ! how to test?
Originally posted by @venu-shastri in https://github.com/clean-code-craft-tcq-2/well-named-in-c-Bekal-Ramnath-Rao/pull/1#discussion_r784072325

Changes Done


Fix macOS version on available attributes

Hi, I've tried to build this sample application.
But I got build error.
In Xcode, NSTouchBar is marked available on macOS 10.12.2 or higher.
Otherwise, it causes build error with Xcode 8.2:
/Users/cosmo/GitHub/sushibar/sushibar/AppDelegate.swift:23:19: error:
'NSTouchBar' is only available on OS X 10.12.2 or newer
    var touchBar: NSTouchBar?
                      ^

Agreed; I had to change that in order to run it on my computer as well (but I just set it to 10.12.3)

thx.


Feature request: function memoization and fixtures

Feature request:
I've seen this pattern more frequently, people like to have a function run once then store the result of it and use that the next time it runs.
A typical case is with network requests, people as an example would mock fetch to return the exact same result as the real request to avoid flaky-ness in the tests, other cases might be mocking stdout to replicate an exec/spawn call etc.
This is similar as a concept to snapshots but on the function mocking side instead of the expectation side.
I think this problem is generic enough and can be applied to a lot of APIs, that's why I think we should probably consider adding something in Jest to make this easier.
I'm thinking at something like jest.memoizeFn(realFn) where the mocked function would check in a local cache if the result for the provided arguments exists and if not it will run the original function and store the result.
Also as opposed to snapshot I don't think the artifact here has to be pretty-printed, as it might be a binary format (mock of a binary file read or a stream of bytes), making it easier to implement.
Also there are a bunch of projects that already does this like https://www.npmjs.com/package/memoize-fs or more generically https://www.npmjs.com/search?q=memoize that we can probably just plug in with the correct configuration.

@cpojer what do you think?

@kentaromiura works at FB and brought this up. I think we should do it at some point.

Hi all,
I was looking for something similar as well.
My experience could be improved if there was just one more function in the API: loadSnapshot(snapshotkey)
Right now:
it('should create two items in the list', ()=> {
let state = []
state.push(1)
state.push(2)
expect(state).toMatchSnapshot('Two items in the list')
})

it('should remove one item in the list', () => {
let state = []
state.push(1)
state.push(2)
state.pop()
expect(state).toMatchSnapshot('One item in the list')
})

If I had loadSnapshot():
it('should create two items in the list', ()=> {
let state = []
state.push(1)
state.push(2)
expect(state).toMatchSnapshot('Two items in the list')
})

it('should remove one item in the list', () => {
let state = loadSnapshot('Two items in the list')
state.pop()
expect(state).toMatchSnapshot('One item in the list')
}

Cons:

dependency issue (tests need to be skipped until their snapshots exists)
naming snapshots becomes important

Pros:

more expressive, atomic tests
only one extra function added - low API exposure
helps pinpointing faster which operation broke as tests are more atomic

Thanks for taking the time to read this too long blob.

Not currently on the roadmap.


don't run tests if only docs folder changes

I think once merged this will prevent tests being executed when there are only changes in docs/

thanks!


fix tests in kie-ci to make them work when using custom maven settings

+1 (assuming the build succeeds)


brining in the 'item' api for grabbing files from a impersonated FileList

Also removing an extraneous try catch block.

@cibernox


custom github status

Popping this back to draft status while I confirm some details of the more complex example


label-yellow doesn't pass WCAG AA color contrast

Using the text color of #595959 with the same background yellow color, does pass AA rating.

@paulcpederson @nikolaswise @alansangma @snelsonux

@nikolaswise @paulcpederson @bstifle

addressed in #661 , will be part of next release


Add env vars for QPS/Burst

nnf-sos can do this, so can you!
Signed-off-by: Blake Devcich<EMAIL_ADDRESS>

You're not going to put these into config/manager/manager.yaml?

You're not going to put these into config/manager/manager.yaml?

I thought the same thing. We didn't do that for the nnf-sos side. Should we?


Readme updates

Readme Updates
This PR can be used to ensure the contents is up to date with the changes going into V2.
So far:

Update minimum Symfony version reference
Added a reminder about the symfony/security-core requirement in the Symfony section

Codecov Report

Merging #21 (7908622) into master (216b022) will decrease coverage by 0.22%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##             master      #21      +/-   ##
============================================
- Coverage     31.12%   30.89%   -0.23%
+ Complexity       96       94       -2
============================================
  Files            14       14
  Lines           302      301       -1
============================================
- Hits             94       93       -1
  Misses          208      208

Impacted Files
Coverage Δ
Complexity Δ

src/Twig/Node/ToggleNode.php
96.29% <0.00%> (-0.14%)
8.00% <0.00%> (ø%)

Continue to review full report at Codecov.

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


In FF and Safari

Demos with code snippets only work in chrome. That the reason of certain demos in new site like combo-box do not work in Safari.

Fixed in
https://github.com/vaadin/vaadin-demo-helpers/commit/05ab3b3f0fa8411eedec6c579e73c43fb511ed2e
https://github.com/vaadin/vaadin-demo-helpers/commit/c8848574e07891154b9321e3e99c9e0da46cbb8e
https://github.com/vaadin/vaadin-demo-helpers/commit/94102782e22d72b4af1104e497887f8271bdb9e8


Github Download Page or link

Hello
I do not use android phones and I like to download the eufy app from github. What is the correct link please

this repository is not related to eufy app, reach out to eufy customer service


[BUG] The installer give incorrect minimum disk requirement

Describe the bug
When installing Harvester, the installer will allow >= 60G disk to process the next step.
But the Prometheus requires more than 60G volume for monitoring and always shows the monitor is 502 error.
To Reproduce
Steps to reproduce the behavior:

When installing Harvester, use a small disk (test it in Virtual Machine)

Expected behavior
It should block until use the minimum disk is satiety.
Support bundle

Environment:

Harvester ISO version:  1.0.0
Underlying Infrastructure (e.g. Baremetal with Dell PowerEdge R630): ProxmoxVE 7.1

Additional context
Add any other context about the problem here.

I can confirm the issues / errors you describe @elct9620, see the images below from a VM with 65 GB storage:

However, I don't think it is necessarily the right choice to block until a minimum disk space is available. For one thing, the Prometheus monitoring is not vital to the functionality of Harvester as I am aware, and as seen in the image below the user is notified that they do not have the minimum recommended available storage space and given the choice to continue with the installation anyway:

We probably could be smarter with how we deal with this type of situation, or allow users to toggle non-vital functionality such as Prometheus and allow some version of a minimal harvester deployment.

Agree, my concern is that behavior will let users confuse. I am trying to find the root cause of my dashboard getting errors. It wastes the time for the user but we cannot disable Prometheus if we didn't need it.

Agree, my concern is that behavior will let users confuse. I am trying to find the root cause of my dashboard getting errors. It wastes the time for the user but we cannot disable Prometheus if we didn't need it.

Sounds good, I'll open another issue to allow for disabling monitoring and link to this issue.


Create a POC of a Insurance Component

Is your feature request related to a problem? Please describe.
We need to have an insurance component with a focus on event insurance to start.
Describe the solution you'd like
This is a very v1 exercise, so let's keep the scope as low as possible.  Could we wrap a partner component to get started?
Describe alternatives you've considered
With a focus on the registration insurance policy to start, let's try to get that process to a point where the customer is easily integrating the component and try to keep any 3rd party integrations on our backend infrastructure.

@nhalm can we close this?

Closing this as we are moving into the new quarter and planning a more holistic approach to insurance


[Julia][temporary fix] comment out NetCDF pkg from Julia installation

Description

Partly addresses #3476 by allowing a segfault-free esmvaltool install Julia, the core problem is reported at https://github.com/JuliaGeo/NetCDF.jl/issues/195
This PR allows all our tests to pass again, but will invariably break all Julia recipes, that are already FUBAR anyway :military_helmet:

Before you get started

[x] ☝ Create an issue to discuss what you are going to do

Checklist
It is the responsibility of the author to make sure the pull request is ready to review. The icons indicate whether the item will be subject to the 🛠 Technical or 🧪 Scientific review.

[x] 🛠 This pull request has a descriptive title
[x] 🛠 Any changed dependencies have been added or removed correctly
[ ] 🛠 All checks below this pull request were successful

agh! Now that NetCDF is not SegFaulting anymore (well, we not installing it), there is another issue with (possibly) Julia and curl, see https://github.com/curl/curl/issues/14860

OK too many issues with Julia at the moment - I tried updating the Julia version but the environment barfs, @bouweandela what do you say we remove esmvaltool install Julia from our tests for the moment?

too many Julia issues, closing this, and opening a new PR where I remove the test calls to esmvaltool install Julia


use a token factory with ibc-go/v4

we had an ibc version mismatch in Juno v12 / token factory.
This PR resolves that :)

@faddat I don't see anything changed here? It is supposed to replace CosmWasm/token-factory to CosmosContracts/token-factory with ibc v4 & wasmd 30 yes?

thank you good catch.
I'll get this cleaned up tomorrow.

https://github.com/CosmosContracts/token-factory/pull/1/commits

I'd like to get this one in ASAP, same as Oracle, so that we can begin to test against it.  I'm still puzzled at the issues in #432


[REFACT] Add glbgelf logger and treat nil cOutput

I'm adding glbgelf as logging system to retirejs.go and treating nil
return value from cOutput, so husky-client will be able to tell if there
aren't any vulnerabilities.

Nice catch, @Krlier ! Thank's a lot! I am currently working on #142 and will eventually change how this log is be used by glbgelf in a near future.


Reading the file name to watch from the yml file

When I add this entry into the generated newrelic yml file and run the agent i keep getting the error below:
I'd like to make a absolute path to a file, I've tried many different ways, could someone help?
log_path: c:/log.txt
log_path: c:\log.txt
log_path: c:\log.txt
log_path: log.txt
yml file section:
agents:
my_logfile_1:
# Full path to the the log file
log_path: c:/log.log
# Returns the number of matches for this term. Use Linux Regex formatting.
# Default: "[Ee]rror"
term: "[Ee]rror   "
# Provide any options to pass to grep when running.
# For example, to count non-matching lines, enter 'v'.
# Use the abbreviated format ('v' and not 'invert-match').
grep_options:
c:\Scripts\newrelic_logwatcher_agent>ruby newrelic_logwatcher_agent.rb
Agent Logwatcher is at version 0.0.2
c:/Scripts/newrelic_logwatcher_agent -> This is the cur directory
c:/log.log
Error occurred in poll cycle: No such file or directory - test -e c:/log.log
Gathered 0 statistics

+1


Massage MAST-ML example model into Garden pipeline

As an example of a "harder" case of translating DLHub/Foundry models to Garden, revisit this example, make a Garden from it, and share out how much of this use case Garden can support.
Assumptions:

Acceptance Criteria
Given..., when..., then...

Closing in favor of #200


Elixir v1.15.0 support

This PR ensures TypeCheck can be used with Elixir v1.15.0
A huge thanks to @josevalim for not only giving guidance on what changes might be required to make TypeCheck compile on Elixir v1.15.0, but even contributing with a complete set of changes to make this work.
This PR continues on that patch, doing some more changes to make sure the test suite also compiles and fixing some edge cases.
Turning all @spec! to non-checked @spec in the TypeCheck.Builtin module.
This is hopefully a temporary change, as it means the library is doing less dogfooding and less compile-time checks of its own usage.
It was necessary since on v1.15, with the patch in place that prevents "importing TypeCheck.Builtin into itself" which is no longer supported, another approach to add the specs and the spectests need to be found.
In the worst case, these could be turned into in-function-body calls to TypeCheck.conforms! that do not rely on the macro magic of @spec!.
Fixing some tests relying on particular output of CompileError.
The structure of compile-time error message reporting was changed somewhat in v1.15, so some tests now are conditionally compiled to match the new format and messages.
Fixing some doctests
There was a weird situation in which using the @spec! syntax in a doctest ate the next line that started with ...(2)> as well. Changing this to iex(2)> resolved it.
Fixes #185

I also had to make a small change to the CI system: mix format formats some files slightly differently on v1.15, so the check has moved to a separate CI job which only runs on v1.15.


Add test with fake seam connect

Add fake-seam-connect
Fix request type
Add test for api key

@seveibar I heard you like fakes.


Update README.md

corrected install file name

LGTM

@badenh you might want to rebase the branch

Thanks for the PR @badenh
I am closing this because of the name change to mlcube.


Test on Windows

Run the code, after making the changes mentioned in the README for the Windows operating system, and verify that everything is working as intended. If there is some error anywhere submit a new issue.

Can I take this issue as I primarily use windows with Linux subsystem?

Yup feel free

should I test this in Anaconda prompt??

yup

It works perfectly in the Anaconda prompt

Great


Managed Disk support

In this page https://azure.microsoft.com/en-us/products/databox/data/ , Data Box Heavy supports Managed Disk.
Could you update Docs?

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

ID: bee8150d-35e9-fdc6-4dd6-ad0367837b96
Version Independent ID: 9337cc8a-8208-5f07-7f9d-f84c76f04330
Content: Microsoft Azure Data Box Heavy system requirements
Content Source: articles/databox/data-box-heavy-system-requirements.md
Service: databox
Sub-service: heavy
GitHub Login: @stevenmatthew
Microsoft Alias: shaas

@NakayamaKento
Duplicate of #117881


Added seed parameter to RandomDistribution number generators

Adds an explicit seed parameter for random number generators. This seed will now also control time-dependent random streams (previously you had to mangle the name with the seed yourself).
I have tested that this works with the updated SOM tutorial (time dependent streams for the input generator)  but I cannot guarantee that this won't break everything else!

Coverage remained the same at 68.5% when pulling c775fa9da3759690a53bd4ee7b93d098f7b90154 on numbergen_seed into e4a7720417b9f6efb51888b7bb0de0e3db7a6aeb on master.

Coverage increased (+0.3%) to 68.8% when pulling 2345b3830d1d546d7babe3afd5ad8b623785ab78 on numbergen_seed into e4a7720417b9f6efb51888b7bb0de0e3db7a6aeb on master.

Coverage increased (+0.3%) to 68.8% when pulling 140d89b99c4bd49b0f52a1283fcb4e3bd61c4307 on numbergen_seed into e4a7720417b9f6efb51888b7bb0de0e3db7a6aeb on master.

Coverage increased (+0.3%) to 68.8% when pulling 140d89b99c4bd49b0f52a1283fcb4e3bd61c4307 on numbergen_seed into e4a7720417b9f6efb51888b7bb0de0e3db7a6aeb on master.

Looks good to me.

Other than updating that one docstring, do you see any reasons not to merge?

Coverage increased (+0.3%) to 68.8% when pulling 56790f981c42a5cf484d86ccf5b5022c6a8633c0 on numbergen_seed into e4a7720417b9f6efb51888b7bb0de0e3db7a6aeb on master.

Coverage increased (+0.3%) to 68.8% when pulling 56790f981c42a5cf484d86ccf5b5022c6a8633c0 on numbergen_seed into e4a7720417b9f6efb51888b7bb0de0e3db7a6aeb on master.

Seems ok to me.

Merge when you are ready...this commit is needed by the updated version of the som_retinotopy notebook that I am about to commit.


RuntimeError: Page size must be divisible by sizeof(uint32_t) because buffers hold uint32_t values

Description
Got Page size must be divisible by sizeof(uint32_t) because buffers hold uint32_t values error while running the compiled framework model in Bfloat16
Reproduce
git checkout akannan/fix-invalid-maxpool-pad
git submodule update --recursive
pytest -svv forge/test/mlir/test_ops.py::test_padding_with_maxpool2d[padding1-shape0]

Observed Behaviour
>       all_outputs = run_binary(self.compiled_binary, int(ProgramId.FORWARD), inputs_and_parameters)
E       RuntimeError: TT_FATAL @ /proj_sw/user_dev/akannan/tt-forge-fe/third_party/tt-mlir/third_party/tt-metal/src/tt-metal/tt_metal/impl/buffers/buffer.cpp:41: page_size % sizeof(uint32_t) == 0
E       info:
E       Page size must be divisible by sizeof(uint32_t) because buffers hold uint32_t values
E       backtrace:
E        --- /proj_sw/user_dev/akannan/tt-forge-fe/third_party/tt-mlir/build/lib/SharedLib/libTTMLIR.so(+0x69bab8) [0x7fda40ff3ab8]

Logs
test_padding_with_maxpool2d_2.log

Metal issue with same signature: https://github.com/tenstorrent/tt-metal/issues/13598


[#2302] dev: Support to release Doris ci image using pipeline

What changes were proposed in this pull request?
Support to release Doris ci image using pipeline
Why are the changes needed?
Fix: #2302
Does this PR introduce any user-facing change?
No.
How was this patch tested?
I will test it after it is merged to master.

After https://github.com/datastrato/gravitino/pull/2327 is merged, we can continue this pr.


Close warning when there are running tasks in terminal pane

Add a warning before closing a window when there are still running tasks in the terminal pane.

See terminal.integrated.confirmOnExit setting.
/duplicate https://github.com/microsoft/vscode/issues/23808


EKS worker upgrade to v1.27 breaks emissary-ingress NLB

What happened:
EKS worker upgrade to v1.27 breaks the emissary-ingress NLB. Basically, NLB target registration doesn't take place after worker AMI upgrade to v1.27
We have emissary-ingress component deployed on our clusters that creates an NLB and registers EKS worker nodes as targets. As soon as we upgrade the worker AMI to v1.27, node registration is not taking place in NLB target groups. It's not even initiating the registration. It start working again if we revert the worker nodes to use v1.26 AMI.
What you expected to happen:
Worker instances should get registered as targets to AWS NLB
How to reproduce it (as minimally and precisely as possible):
It should be reproducible by upgrading  worker nodes to v1.27 while having emissary-ingress installed on cluster.
Anything else we need to know?:
While upgrading EKS workers to v1.27, one of the significant changes that we had to do was to use --hostname-override argument for kubelet to work. Not sure if it could have something to do with the issue in hand.
Environment:

AWS Region: ap-southeast-2
Instance Type(s): r5.xlarge
EKS Platform version (use aws eks describe-cluster --name <name> --query cluster.platformVersion): eks.11
Kubernetes version (use aws eks describe-cluster --name <name> --query cluster.version): 1.27
AMI Version: 1.27.7
Kernel (e.g. uname -a): 3.10.0-1160.105.1.el7.x86_74
Release information (run cat /etc/eks/release on a node):

BASE_AMI_ID="ami-0b01946f9ea8b2834"
BUILD_TIME="Wed Jan 10 07:43:45 UTC 2024"
BUILD_KERNEL="3.10.0-1160.105.1.el7.x86_64"
ARCH="x86_64"

Hey @cartermckinnon , would you be able to help with this please?

This repository is for tracking issues with the EKS AMI, I don't think this problem is in scope. Please open a ticket with AWS Support and they'll send it over to us as needed 👍


How to run the simulator in linux

I am trying to run the simulator in linux from a docker image.
rosrun styx unity_simulator_launcher.sh
However I get an error
$ rosrun styx unity_simulator_launcher.sh
Script to launch the CarND Unity Simulator
/capstone/ros/src/styx
/capstone/ros/src/styx/profile.tmp
/capstone/linux_sys_int/sys_int.x86_64
Found path: /capstone/linux_sys_int/sys_int.x86_64
Mono path[0] = '/capstone/linux_sys_int/sys_int_Data/Managed'
Mono config path = '/capstone/linux_sys_int/sys_int_Data/Mono/etc'
Preloaded 'libEasyTest.so'
Preloaded 'ScreenSelector.so'
Unable to preload the following plugins:
	ScreenSelector.so
Player data archive not found at `/capstone/linux_sys_int/sys_int_Data/data.unity3d`, using local filesystem
PlayerPrefs - Creating folder: /home/kansai/.config/unity3d/Udacity
PlayerPrefs - Creating folder: /home/kansai/.config/unity3d/Udacity/self_driving_car_nanodegree_program
Logging to /home/aliaga/.config/unity3d/Udacity/self_driving_car_nanodegree_program/Player.log
Stacktrace:

Native stacktrace:

	/capstone/linux_sys_int/sys_int_Data/Mono/x86_64/libmono.so(+0x92406) [0x7fda98416406]
	/lib/x86_64-linux-gnu/libpthread.so.0(+0x1138f) [0x7fda9b51f38f]
	/lib/x86_64-linux-gnu/libc.so.6(gsignal+0x38) [0x7fda9a6d0438]
	/lib/x86_64-linux-gnu/libc.so.6(abort+0x169) [0x7fda9a6d2039]
	/capstone/linux_sys_int/sys_int.x86_64() [0xa3c1cb]
	/capstone/linux_sys_int/sys_int_Data/Mono/x86_64/libmono.so(+0xd1532) [0x7fda98455532]
	/capstone/linux_sys_int/sys_int_Data/Mono/x86_64/libmono.so(+0x350bd) [0x7fda983b90bd]
	/lib/x86_64-linux-gnu/libpthread.so.0(+0x1138f) [0x7fda9b51f38f]
	/capstone/linux_sys_int/sys_int.x86_64(SDL_GL_GetAttribute_REAL+0x1e3) [0x146b553]
	/capstone/linux_sys_int/sys_int.x86_64() [0x130da9e]
	/capstone/linux_sys_int/sys_int.x86_64() [0x130c328]
	/capstone/linux_sys_int/sys_int.x86_64() [0x130c3d8]
	/capstone/linux_sys_int/sys_int.x86_64() [0x12dfaeb]
	/capstone/linux_sys_int/sys_int.x86_64() [0x455972]
	/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xef) [0x7fda9a6bb83f]
	/capstone/linux_sys_int/sys_int.x86_64() [0x45eb38]

Debug info from gdb:

=================================================================
Got a SIGABRT while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries
used by your application.
=================================================================

/capstone/ros/src/styx/unity_simulator_launcher.sh: line 27:   189 Aborted                 (core dumped) $unity_path

How can I run the simulator in linux from a docker container?

Hi @KansaiUser,
We are closing out the issue because it has already been addressed in another issue recently by upgrading the pillow version.
Thank you


Travis failure: npm ERR! Failed at the<EMAIL_ADDRESS>install script.

Seen with #1864
https://travis-ci.org/grpc/grpc/jobs/65019765
The command "gem install bundler" exited with 0.
3.38s$ ./tools/run_tests/prepare_travis.sh
Configuring for disbribution 6356a36510c7c953bcadc005ed23c2e1
gflags-05b155ff59114735ec8cd089f669c4c3d8f59029-opt-prebuilt-6356a36510c7c953bcadc005ed23c2e1.tar.gz ...openssl-3df69d3aefde7671053d4e3c242b228e5d79c83f-opt-prebuilt-6356a36510c7c953bcadc005ed23c2e1.tar.gz ... Found.
protobuf-3e2c8a5dd79481e1d36572cdf65be93514ba6581-opt-prebuilt-6356a36510c7c953bcadc005ed23c2e1.tar.gz ... Found.
The command "./tools/run_tests/prepare_travis.sh" exited with 0.
0.01s$ if [ ! -z "$USE_GCC" ] ; then export CC=gcc-$USE_GCC ; export CXX=g++-$USE_GCC ; fi
The command "if [ ! -z "$USE_GCC" ] ; then export CC=gcc-$USE_GCC ; export CXX=g++-$USE_GCC ; fi" exited with 0.
19.13s$ ./tools/run_tests/run_tests.py -l $TEST -t -j $JOBS -c $CONFIG -s 4.0
START: make
PASSED: make [time=5.3sec]
START: tools/run_tests/build_node.sh
+CONFIG=opt
++dirname tools/run_tests/build_node.sh
+cd tools/run_tests/../..
++pwd
+export CXXFLAGS=-I/home/travis/build/grpc/grpc/include
+CXXFLAGS=-I/home/travis/build/grpc/grpc/include
++pwd
+export LDFLAGS=-L/home/travis/build/grpc/grpc/libs/opt
+LDFLAGS=-L/home/travis/build/grpc/grpc/libs/opt
+cd src/node
+npm install

<EMAIL_ADDRESS>install /home/travis/build/grpc/grpc/src/node
node-gyp rebuild
gyp WARN install got an error, rolling back install
gyp ERR! configure error
gyp ERR! stack Error: connect ECONNREFUSED
gyp ERR! stack     at errnoException (net.js:905:11)
gyp ERR! stack     at Object.afterConnect [as oncomplete] (net.js:896:19)
gyp ERR! System Linux 2.6.32-042stab090.5
gyp ERR! command "node" "/home/travis/.nvm/v0.10.36/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /home/travis/build/grpc/grpc/src/node
gyp ERR! node -v v0.10.36
gyp ERR! node-gyp -v v1.0.1
gyp ERR! not ok
npm ERR<EMAIL_ADDRESS>install: node-gyp rebuild
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>install script.
npm ERR! This is most likely a problem with the grpc package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get their info via:
npm ERR!     npm owner ls grpc
npm ERR! There is likely additional logging output above.
npm ERR! System Linux 2.6.32-042stab090.5
npm ERR! command "/home/travis/.nvm/v0.10.36/bin/node" "/home/travis/.nvm/v0.10.36/bin/npm" "install"
npm ERR! cwd /home/travis/build/grpc/grpc/src/node
npm ERR! node -v v0.10.36
npm ERR! npm -v 1.4.28
npm ERR! code ELIFECYCLE
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     /home/travis/build/grpc/grpc/src/node/npm-debug.log
npm ERR! not ok code 0
FAILED: tools/run_tests/build_node.sh [ret=1, pid=9256]
FAILED: Some tests failed

I'm not going to close this yet, but I think it's just the Travis machine sometimes failing to download dependencies.

I don't think the occasional ECONNREFUSED during installation is something we can fix. I'm going to close this until we have some reason to think otherwise.


Consolidate various extension methods in Workspaces

This is a highly mechanical PR, but its also big, so commit-at-a-time is probably best. This moves our extension methods that deal with LSP types, Roslyn types, and Razor types, to the Workspaces layer so that cohosting can use them in OOP. And also general cleanliness, because we had them scattered around and I never knew where to put new ones :)
Part of https://github.com/dotnet/razor/issues/9519

Integration test run is https://devdiv.visualstudio.com/DevDiv/_build/results?buildId=9203177&view=results but it won't show up in GitHub because it's before a rebase, so the commit hash is different.

Integration tests passed, except the MEF validation test, which is being fixed in https://github.com/dotnet/razor/pull/10044

No argument from me. I will have to move TextDocumentAndVersion down as well, and will adjust some namespaces.


Transfer ownership of specs repo to steering / TOC as part of trademark turndown

This depends on #112

Closing in favour of pulling this change into #112


CreateIfNotExists(), DeleteIfExist() are anti-pattern (use exceptions in control flow)

Also fix the sample code in FAQ when this is fixed in protocol layer.


lock: updating helix-base16 input

fix #467

force push to squash commits
should be all good now

ofc


Deploying on TrueNAS SCALE Bluefin - error saving cookiejar.json

Bug description
I'm trying to deploy this container to my home NAS server running TrueNAS SCALE, using the TrueCharts "custom-app" helm chart.
The container fails to start because, even though the credentials provided are correct, the container is started as read-only, so the authentication cannot save the cookiejar.json file locally (at least that's what I assume is happening)
One solution would be to make the container use the /data volume for every read/write operation required (saving cookies, saving the version of foundry etc)
Steps to reproduce

Setup TrueNAS SCALE on a machine
Install the TrueCharts catalog
Create a new "custom-app" app
Configuration :

Container Repository : felddy/foundryvtt
Container Tag: release
PullPolicy: IfNotPresent
Environment Variables

FOUNDRY_USERNAME: dogeek
FOUNDRY_PASSWORD: <secret>
FOUNDRY_HOSTNAME: vtt.nas.dogeek.me
FOUNDRY_MINIFY_STATIC_FILES: true
FOUNDRY_PROXY_SSL: true

Service Type : ClusterIP
Service Ports : TCP 30000:30000
Storage : NFS Share :: localhost :: /mnt/apps/config/foundryvtt :: /data
Ingress

Host : vtt.nas.dogeek.me
Path : /
TLS Settings

Host: vtt.nas.dogeek.me
Certificate : cert, created through LetsEncrypt

Expected behavior
Container starts properly, files are stored in my ZFS apps ZPool, in the config dataset.
Container metadata
com.foundryvtt.version = "10.291"
org.opencontainers.image.authors =<EMAIL_ADDRESS>org.opencontainers.image.created = "2022-12-02T23:36:29.879Z"
org.opencontainers.image.description = "An easy-to-deploy Dockerized Foundry Virtual Tabletop server."
org.opencontainers.image.licenses = "MIT"
org.opencontainers.image.revision = "bf4e42e9570aab7e8de39d7f760cb5f16e19862e"
org.opencontainers.image.source = "https://github.com/felddy/foundryvtt-docker"
org.opencontainers.image.title = "foundryvtt-docker"
org.opencontainers.image.url = "https://github.com/felddy/foundryvtt-docker"
org.opencontainers.image.vendor = "Geekpad"
org.opencontainers.image.version = "10.291.0"

Relevant log output
2023-03-04 13:41:16.947620+00:00Entrypoint | 2023-03-04 14:41:16 | [info] Starting felddy/foundryvtt container v10.291.0
2023-03-04 13:41:16.950830+00:00Entrypoint | 2023-03-04 14:41:16 | [info] No Foundry Virtual Tabletop installation detected.
2023-03-04 13:41:16.951321+00:00Entrypoint | 2023-03-04 14:41:16 | [info] Using FOUNDRY_USERNAME and FOUNDRY_PASSWORD to authenticate.
2023-03-04 13:41:17.211499+00:00Authenticate | 2023-03-04 14:41:17 | [info] Requesting CSRF tokens from https://foundryvtt.com
2023-03-04 13:41:18.152065+00:00Authenticate | 2023-03-04 14:41:18 | [error] Unable to authenticate: EROFS: read-only file system, open 'cookiejar.json'

Code of Conduct

[X] I agree to follow this project's Code of Conduct

Ran into this problem as well. Install via custom-apps is preferrable since you can run traefik and ingress with them.
Workaround (WebUI only):
Use the TIMED URL with FOUNDRY_RELEASE_URL for first-time install.
Make sure the custom-app runs as a user that has adequate permissions to Read | Write:

Find UID / GID in Credentials > Local User / Local Groups
In the custom-app install (or edit) go Security and Permissions > runAsUser / runAsGroup enter the appropriate User/Group

Note that the custom-app will default to UID/GID 568. Other installs via truechart (e.g. pihole) will run as UID and GID 0 (root) and just have PUID 568.
I am currently trying to work out permission settings so I do not have to run foundry as root. Here is also a friendly reminder to use the CONTAINER_CACHE environmental variable since the foundry download URL times out after 300 seconds!

Ran into this problem as well. Make sure the custom-app runs as a user that has adequate permissions to Read | Write.
In the custom-app, put:
UID: 0 (Security and Permissions > "runAsUser")
GID: 0 (Security and Permissions >"runAsGroup")
PUID: 568
fsGroup: 0
Security and Permissions > Show Advanced Settings > [X] ReadOnly root Filesystem off
Note that the custom-app will default to UID:GID 568:568. This is a Builtin "Unprivileged Apps User". Other installs via truechart (e.g. pihole) will run as UID:GID 0:0 (root) and just have PUID 568. This seems to be the correct way to do this.
Important so you dont have to run chown all the time, if you [X] Automatic Permissions the container will run chown at startup.

The current version of the image does not easily support a read-only root filesystem.   I wouldn't consider this a bug, and I would be open to a feature request to support this use case.  The change would require the revisiting of assumption about the ephemeral nature of the FoundryVTT install.
I'm going to convert this issue into a discussion so it can help others that may be using a runtime that defaults to read-only root filesystems.
See:

https://docs.docker.com/engine/reference/commandline/run/#read-only


Question: why not Prometheus?

Honest question, promise :) It seems that Prometheus+AlertManager already tick most or all of your requirement boxes, depending on how you interpret them. Maybe worth a small section in the README?

I think it's a fair question.
I think there's a number of reasons and those should be documented in some sort of a comparison doc. I'll stick this issue in the project plan as a todo.
With that said,  some quick observations:
Prometheus is a metrics oriented monitoring system -- ie. collect metrics from hosts via some method, display those metrics and setup alerting strategies around those. 9volt focuses on blackbox testing - no need for agents/metrics collectors/etc.
In addition, a full prometheus deployment consists of a number of pieces, there's node exporter, prometheus server (and deps?), alertmanager (and maybe more?). One of the core goals of 9volt was to provide a simple, single binary approach for offering all of the necessary pieces for establishing a distributed (remote) monitoring platform, including a UI and so forth.
With that said, I think there is room for both. Having knowledge of what's happening inside the host and knowing what the host looks like from the outside are both necessary pieces.
I'll spend some time soon on writing something up on this subject though, as it's likely to come up again.


treewide: Default openssl version to 3.0

Motivation for this change
Newer version and kTLS finally.
I'll be adding a changelog entry when this is close to being merged because I don't want to resolve conflicts every 2 days ;)
Things done

Built on platform(s)

[ ] 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

[ ] 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

[ ] Fits CONTRIBUTING.md.

To activate kTLS support in openssl, need to add this changes:
diff --git a/pkgs/development/libraries/openssl/default.nix b/pkgs/development/libraries/openssl/default.nix
index ca2e240dd869f..b8cd042cb3012 100644
--- a/pkgs/development/libraries/openssl/default.nix
+++ b/pkgs/development/libraries/openssl/default.nix
@@ -108,6 +108,7 @@ let
       "-DUSE_CRYPTODEV_DIGESTS"
     ] ++ lib.optional enableSSL2 "enable-ssl2"
       ++ lib.optional enableSSL3 "enable-ssl3"
+      ++ lib.optional (versionAtLeast version "3.0.0") "enable-ktls"
       ++ lib.optional (versionAtLeast version "1.1.0" && stdenv.hostPlatform.isAarch64) "no-afalgeng"
       # OpenSSL needs a specific `no-shared` configure flag.
       # See https://wiki.openssl.org/index.php/Compilation_and_Installation#Configure_Options

Added on this PR - #147027

Jobset: https://hydra.nixos.org/jobset/nixpkgs/pr-150093

I now switched the jobset to x86_64-linux, as aarch64-linux has been very busy this week.

Thanks for letting me know. I might need both though, eventually. I saw at least one failure (https://hydra.nixos.org/build/178674654/nixlog/1) recently in that jobset that I could only reproduce myself on aarch64-linux, but that succeeded on x86_64-linux.

OK, tell me when you think it's a good moment to add more platforms.

OK, tell me when you think it's a good moment to add more platforms.

I think we can go ahead and enable this for darwin as well. Probably for both x86_64 and aarch64. On Linux as well.
IMO this is mostly ready, although this is my first tree-wide change of this magnitude, so maybe I'm missing something.

I added *-darwin now.

This broke eval for node 18
error: anonymous function at /var/lib/ofborg/checkout/repo/38dca4e3aa6bca43ea96d2fcc04e8229/mr-est/ofborg-evaluator-5/pkgs/development/web/nodejs/v18.nix:1:1 called with unexpected argument 'openssl'


Merge prTesting_201902070853 branch to master branch

OPS Build status updates of commit 07bc7b1:
:clock10: Preparing: average preparing time is 43 sec(s)

OPS Build status updates of commit 07bc7b1:
:clock10: Incremental building: average incremental building time is 14 sec(s)

OPS Build status updates of commit 07bc7b1:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details
Dependent Files

split/updateTestCon.md
:white_check_mark:Succeeded

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


RFC: Update the rules on string interpolation in light of feedback

We make three adjustments in this RFC:

{{ is not allowed. This is likely a valid but poor attempt at escaping coming from C#, Rust, or Python.
We now allow `this` with zero interpolating expressions.
We now allow f `this` also.
Explicitly say that `this` and `this {that}` are not valid type annotation syntax.

Why the change for #2? Too opinionated?

Why the change for https://github.com/Roblox/luau/pull/2? Too opinionated?

Correct. I didn't want to allow it, but you can imagine someone having `foo {bar}` and then for debugging, they quickly select the {bar} part and delete it, leaving them with invalid syntax.

Also want to mention the format specifier situation just for clarity since it came up: the RFC doesn't provide any way to use a format specifier, but at some point in the future we might add this (it's useful for numbers if nothing else). Doing this right now seems unnecessarily complicated, as we'd need to have a more complex behavior spec for %* as well as debate the specific syntax.
The syntax for format specifiers will have to be incompatible with expression grammar to avoid incompatibility - but this doesn't force us to specify anything now, it's going to be true in the future just as it is true right now. Notably, while many languages take the : to mean the format specifier, this route is closed to us because : has a meaning already (method calls) - and there's no clean way to integrate it.
What we would most likely do is pick a symbol that is prohibited in expression context, and use it as a delimiter. The most likely candidate is ; - it's only used in statement grammar, it "makes sense" in context, and it's very unlikely we will ever decide to overload it in expression grammar.
So most likely route for us in the future is that in addition to {self.health} you'd be able to say {self.health;.02f} which would replace %* with %.02f in the generated format string. That said, there's other syntactic options that can work - we are not specifying any right now.

How about f`x`? IMHO, calling without parentheses is somewhat of a misfeature, and has tripped me up somewhat when I wasn't as versed with Lua. Is it just consistency?

A few reasons:

Consistency is important; having three different ways to specify a string as part of the expression grammar but having only one of them absent from special function call rules seems very inconsistent.
The problems with the function call syntax that we've hit before don't seem like something that will get better if we introduce the rule that the new literal syntax is different. E.g. one of these was difficulty with postfix call operators ("":format), but that's what got us string interpolation in the first place, and these features aren't useful in combination. There were some other issues that all don't seem to improve with that omission.
The reason why the function call syntax is special here in the first place is to make DSL creation easier. Omitting this rule isn't problematic in "normal" code, but if you are implementing a string based DSL then the chances are high that you'll want to combine these features (eg if you have some XML based DSL that gets parsed into a tree, it's natural to want to do something like

domtree `<b>{self.name}</b>`

So in short, it's consistency, lack of understood specific problems that introducing the inconsistency here would solve, as well as problems with DSL interaction which is the reason behind the odd syntax existing in Lua in the first place. All things being equal we'd rather just remove this capability but since we can't it's unclear what the reason would be to prevent it working in tandem with the new literals.

(if you have specific problems you think would be introduced if we allowed this, please bring them up!)

Nah, not any problems that don't already exist with f"" and friends. The only reason I would see in not supporting it is to discourage people from using the others, but that ship has very much sailed 😛


Metadata causes false positive Template Should Not Contain Blanks

The following field causes the Template Should Not Contain Blanks to fail.
            "metadata": {
                "description": "This caused false positive, {helmValues: [], helmRepo: <>}"
            }

Work-around by removing "[]" from the string. Will circle back around to look into this if able.

We should be ignoring metadata entirely - though it's possible this particular test does not...


Configuration Testing

Configuration testing with positive and negative scenarios and capturing the output in the document

Completed the 15 scenario's in configuration testing. Still pending 17 more configuration scenario's
https://docs.google.com/document/d/1eQPe4YwoUSUoyXDn-I5HaqbMdxnX9QxyG_tps2nWbRk/edit#heading=h.46nqgz16imsn

Preparaed the total 32 test scenario's in the configuration testing (Includes both positive & negative scenario's)
https://docs.google.com/document/d/1eQPe4YwoUSUoyXDn-I5HaqbMdxnX9QxyG_tps2nWbRk/edit#heading=h.46nqgz16imsn

New datasource(Midday_meals) configuration testing is completed. Found Legend and routing issue in the midday_meals reports.


SVN changelist support

Added support for SVN change lists.  Previously, files / folders in change lists wouldn't have an overlay icon.

This PR will make Wise SVN work similar to TortoiseSVN with regard to showing the overlay icons for items that are in a change list.  Previously, the status parser would stop parsing once it got to the point of the change lists.  Because of this, items in a change list wouldn't have their status properly reflected with an appropriate overlay icon.
This screenshot shows a TortoiseSVN "Check for modifications" dialog.  Note that there are three change lists: 'Scene Changes', 'Script Changes', and 'ignore-on-commit'.  The 'ignore-on-commit' change list is built-in to TortoiseSVN and is provided as a convenience to end-users.  The other two change lists were created by the user.

This screenshot is from Windows Explorer.  Note that all of the items have overlays--even the items in the 'ignore-on-commit' change list.

This is a screenshot of this PR being applied.  The overlays don't appear, otherwise.

Good work.
I have ignored the changelists as I never use them, apart from the 'ignore-on-commit', so I didn't see the bug this was causing.
Thanks a lot :)

Awesome!  And thanks for a great asset.  I'll keep my eye out for any other issues as I use it.


Authentication issue when SSR is disabled

This issue occurs only when SSR is disabled.
Once you are logged in and refresh page then you are no longer logged in.

I think this is a duplicate of #428 or at least related.
I've looked in to this before, and I think it is an issue with the CORS config on the rest side. The reason it does work with SSR is because the node server doesn't enforce CORS rules.

closed because duplicate #289


allow changing collection properties on smart edge collections

Scope & Purpose
Allow collection properties changes for smart edge collections, too.
smart edge collections were excluded from maintenance operations before.
Enterprise companion PR: https://github.com/arangodb/enterprise/pull/492
Documentation PR: https://github.com/arangodb/docs/pull/484

[x] Bug-Fix for devel-branch (i.e. no need for backports?)
[x] The behavior change can be verified via automatic tests

Related Information

[x] There is a JIRA Ticket number: reported in https://arangodb.atlassian.net/browse/QA-22

Testing & Verification
This PR adds tests that were used to verify all changes:

[x] Added new integration tests (i.e. in shell_server / shell_server_aql)

http://<IP_ADDRESS>:8080/view/PR/job/arangodb-matrix-pr/10784/

Tests blue


Update multi-factor-authentication-whats-next.md

Hi billmath, loc finds an incompleted sentence, could you please review: "Note that caching is not intended to be used for sign-ins to ."
Thanks
-sunny

Hi @SunnyDeng, I'm your friendly neighborhood Azure Pull Request Bot (You can call me AZPRBOT). Thanks for your contribution!

It looks like you're working at Microsoft (dengyun). If you're full-time, we DON'T require a contribution license agreement.

If you are a vendor, DO please sign the electronic contribution license agreement. It will take 2 minutes and there's no faxing! https://cla.azure.com.

TTYL, AZPRBOT;

@SunnyDeng , @billmath - this PR has a merge conflict. Can either/both of you review and determine whether it should be closed or resolved? Thanks!

This has already been fixed and is live.  It should be:
Note that caching is not intended to be used for sign-ins to Azure AD.
From: Bryan Lamos<EMAIL_ADDRESS>Sent: Wednesday, January 27, 2016 2:06 PM
To: Azure/azure-content<EMAIL_ADDRESS>Cc: Bill Mathers<EMAIL_ADDRESS>Subject: Re: [azure-content] Update multi-factor-authentication-whats-next.md (#5416)
@SunnyDenghttps://github.com/SunnyDeng , @billmathhttps://github.com/billmath - this PR has a merge conflict. Can either/both of you review and determine whether it should be closed or resolved? Thanks!
—
Reply to this email directly or view it on GitHubhttps://github.com/Azure/azure-content/pull/5416#issuecomment-175797708.

Thanks @billmath. Given that it's already live and we have a merge conflict, I will close this PR.
@SunnyDeng - FYI, and thanks again.


tabby: Update to version 1.0.189

Closes #10592

Relates to #10592

[x] I have read the Contributing Guide.

/verify


Filling in letters

We should have at least one entry per letter. Remaining letters:

[x] A
[x] B
[x] F
[x] J
[x] K
[x] O
[x] Q
[x] R
[x] U
[x] Y
[x] Z

If a letter does not get an entry, links to it should be removed eventually. I think we can fill out all letters, though, it's a challenge. :)

Thanks for the list. I would not go as far as removing the entries empty for now. It's not a professional glossary and in any case I don't think anybody will be confused by empty entries ;-).

I just mean eventually, when we broadcast this more generally. It doesn't look good if someone opens up the glossary, clicks on A, then gets nothing.

There are a few letters to tick off with the PRs from today. We are getting there ...

Done now with PR https://github.com/lhcb/glossary/pull/22/.


HUB75 experiments: lcd_cam

Thank you for your contribution!
We appreciate the time and effort you've put into this pull request.
To help us review it efficiently, please ensure you've gone through the following checklist:
Submission Checklist 📝

[x] I have updated existing examples or added new ones (if applicable).
[x] I have used cargo xtask fmt-packages command to ensure that all changed code is formatted correctly.
[x] My changes were added to the CHANGELOG.md in the proper section.
[x] My changes are in accordance to the esp-rs API guidelines

Extra:

[x] I have read the CONTRIBUTING.md guide and followed its instructions.

Pull Request Details 📖
I'm (ab)using the lcd peripheral to drive a hub75e led matrix and found that after a send is complete line are all set low.  I need one of the pins to remain high between calls.
Description
I've added a "with_options(invert_bits) to the TxEightBits and TxSixteenBits implementations to allow any/all bits to be set to inverted.  Also consolidated the pin configuration into a macro as its 24 of almost the same code.
Testing
Run on an esp32s3 and reviewed logic analyzer output.

I'm still struggling on how to make the pins optional to TxSixteenBits and TxEightBits.  I think this is useful as is.  The example shows how to display on a HUB75 display using the lcd_cam peripheral.  If someone has ideas on making  pins optional here I'm all ears.

So AnyPin::new_inverted() works and helms with issues of the type signature. Closing - with create a separate PR with the example.


span

There's a chance here to correct the choice of EPT by not carrying over span as the concept of resolution/density/spacing.
Entwine/EPT chose this term, which represents the grid width of the voxelization of the data nodes, because of its strict voxelized resolution guarantees at each node depth.  However this isn't the only sampling method possible, and Poisson, randomized, FIFO, and other non-gridded distributions may be possible.  Also, EPT had the specified limitation that it must be voxelized via a power of 2, which doesn't need to be true for COPC.
In general, span is a very confusing metric that needs a lot of explanation, even though what it represents is actually simple.  See for comparison the definition of the Potree equivalent to this field by @m-schuetz:

spacing: (Number) Space between points at the root node. This value is halved at each octree level.

While this definition is directly convertible to a span, its meaning is much more concrete and easy to understand.
I would propose replacing the integral span field in the COPC header with a double-precision field representing the spacing or distance between points at the root node, to more clearly represent the density of the data at each depth without the indirection of span.
Possible terms include spacing, distance, resolution, and the description should indicate that this is not necessarily a 100% deterministic value: in a given node some points may end up being closer together or farther apart than this value depending on the sampling method.

@CCInc : I'm not sure what you're expecting, but there are no guarantees WRT absolute point spacing, so I'm not sure what you're trying to say.

Are you talking about Perhaps root_spacing to indicate it's only applicable at the root level?? I was just going off the definition:

spacing: (Number) Space between points at the root node.

I was suggesting to make it clear within the variable name that it represents the approx spacing for the root node. Or am I misunderstanding?

Sorry. I wasn't clear.  I don't understand this comment:

I am, however, concerned with the fact we can't rely on nodes voxelized to the power of two - will a field representing the the voxelization power be added?

For example, in Connor's ept code for potree, a lot of the logic is dependent on 2 as the voxelization power to calculate the bounding box of each subnode.
https://github.com/potree/potree/blob/e86cae71f2f8f615d7a2e5933e197fc8b8ae9a12/src/PointCloudEptGeometry.js#L140-L155
Given that COPC doesn't require a power of 2 for voxels, how can we calculate the bounding box of a given node? We'll need to know the voxelization power to calculate it, AFAIK.
With a power of 2, we can calculate the bounding box as half the parent bounding box in each dimension, but for a power of 3, the bounding box would be a third of the parent's bounding box. So my question was if we were going to add an entry to the COPC header that represents this power.

The span/point spacing has nothing to do with descending octree levels. An octree node, by definition, is always split into 8 subnodes for each level of refinement (divided in half for each of X, Y and Z). I don't think anyone has contemplated anything different.
I think the "voxel" terminology has been confusing and I hope that replacing span with a good definition for spacing will help alleviate this confusion.

Got it, my bad.

So for now, COPC uses an Octree? Seems fine for starters, Octrees work great. For future iterations I'm wondering if we should consider the possibility to extend COPC to AABB-based bounding-volume hierarchies? They might have the advantage that the boxes can fit much tighter to the underlying data; adjacent nodes could be merged if they have low occupancy; and for teapot-in-a-stadium scenarios, BVHs might allow indexers to advance by arbitrary and dynamic spacing-factors, e.g., a node for the "stadium" with spacing 1, having a child node for the "teapot" with spacing 0.001.

@CCInc : I think you're right, however, in that we don't have any notion of the root octree node location. I think my assumption was that the min/max X/Y/Z values would proivide this, but I don't think that can be counted on to give this, at least not precisely. Perhaps this is something that needs to be added.

I always found span to be a bit confusing, so all for renaming it. I personally like resolution, but other names work too.

Just closing the gap here:
@hobu stated in #28 we need
| definition of the cube with a centerpoint and a distance needs to go in the info VLR as well
Just to clarify: The cube here refers to the bounding box of the octree which is not necessarily the bounding box of the data, since the octree would be a perfect cube where the data might be more rectangular.  Is that correct?
Are the centerpoint and the distance commonly use and expensive operations?

@timodwhit The cube may be different from the data extent because, technically, the octree grid doesn't have to start at the data minimum.

@abellgithub I personally think min/max would be much easier and clearer to use, at least from a reader/writer implementation standpoint. Most end-users won't be dealing with the copc format anyways, just using an implementation. Were you thinking of storing as doubles or as int32_t and using the header scale/offset?

I personally think min/max would be much easier and clearer to use

Our thought was it is possible to define min/max combinations that don't correspond to a cube, and what would it mean in that instance? A center point + distance is always a cube no matter what.

Ah, you're right...
We could also do a min + distance as well, which is effectively the same as a center point... any reason to choose one over the other?

Added in #32