Do not store empty ZIPs

Please have a look at the individual commit messages for the details.

I've split out all but the last commit to https://github.com/oss-review-toolkit/ort/pull/5352. Please review that first.

Returning null from packZip() if no files are matched by the filter seems a bit, well, arbitrary.

I absolutely agree it's arbitrary 😁 But as long as we don't have anything meaningful more to return, I believe it's fine.

As an alternative, to make the meaning of the result more explicit, we could introduce a data class PackResult or something that contains the result archive file and the number of files it contains.

What I don't like about this is that in case of 0 matching file still an archive would be created (as I guess you'd want to the the result archive file non-nullable, so it as to point at at existing file). Or would you let the File instance point to a non-existing file if the number of files is 0? But that doesn't seem very clean either.
Should we maybe just throw an IllegalArgumentException on no matching files?

What I don't like about this is that in case of 0 matching file still an archive would be created (as I guess you'd want to the the result archive file non-nullable, so it as to point at at existing file). Or would you let the File instance point to a non-existing file if the number of files is 0? But that doesn't seem very clean either.
Should we maybe just throw an IllegalArgumentException on no matching files?

Then, to be more aligned to the functional style, how about returning a Result<File>, which contains an Exception in case no files are matched by the filter?

Then, to be more aligned to the functional style, how about returning a Result<File>

That would in turn create some misalignment with the unpack() function that throw, but I'll give it a try and see how it looks.

Can anyone reproduce the failure in ExperimentalScannerTest locally? Because I can't, neither on Linux nor on Windows.

Can anyone reproduce the failure in ExperimentalScannerTest locally? Because I can't, neither on Linux nor on Windows.

I also cannot reproduce it, I have restarted the tests again just in case it was some temporary issue.

I have restarted the tests again just in case it was some temporary issue.

I also had tried that several times already 😞 But let's see...

I was finally able to reproduce the issue (caused by a non-empty file archiver storage) and will rebase this once the fix in https://github.com/oss-review-toolkit/ort/pull/5363 got merged.

I'll drop the change to throw an exception on empty archives again, as after a discussion with @mnonnenmacher it turned out that we (mis-)use empty archives as a "marker" in the archive if no matching license files could be found.

Replaced by https://github.com/oss-review-toolkit/ort/pull/5388.


JWT sub encoding

The JWT sub is being strangely encoded. I expect it to be equal to the UserID attribute set by the connector.
Looks like the result of https://github.com/coreos/dex/blob/master/server/oauth2.go#L269-L278

For example, if I wanted to map permissions on the user account in Kubernetes via RBAC, it would be pretty tedious and difficult to track if sub is a base64 encoded string.
If any, I think we should encode it into a human-readable format or yes, create another claim with the concatenated information (or both).

So I think we should add a scope which adds this to claims. E.g. if you provide the uid scope, you get a claim like dex.coreos.com/uid returned. How does that sound?
cc @rithujohn191 @squat

I think that would suffice for the Kubernetes use-case. I could imagine some OIDC consumers would have sub hardcoded into its logic and/or expect the value to be backed by LDAP or otherwise. As a consumer, I'd also expect the uid to be present in the JWT payload without having to explicitly request it.
Perhaps we could automatically include a dex.coreos.com/connector_id scope and make the behavior of the sub scope configurable.

What would the output in the API server logs be?  We'd just like to be able to search logs for usernames, preferably by username in the ldap userSearch.

For what it's worth, what auth0 does is they just concat the connectorID + | + userID.

I would strongly encourage we add an additional scope (or set of scopes) and surface this as a claim. Please don't rely on the sub field's encoding.

And also, the regular userID for the given connection is in a non-standard identities claim like so:
Ex:
  "sub": "google-oauth2|110272483197731336751",
  "user_id": "google-oauth2|110272483197731336751",
  "identities": [
    {
      "provider": "google-oauth2",
      "user_id": "110272483197731336751",
      "connection": "google-oauth2",
      "isSocial": true
    },
    {
      "profileData": {
        "email"<EMAIL_ADDRESS>        "email_verified": true
      },
      "user_id": "593f4610f8a34140059a5c95",
      "provider": "auth0",
      "connection": "Username-Password-Authentication",
      "isSocial": false
    }
  ],

The sub here could be auth0|593f4610f8a34140059a5c95 or google-oauth2|110272483197731336751. The value used is whichever the first userID was before the identities were merged within auth0.
The auth0 token also has a user_id claim which is the same value as sub, which is the same idea  as @ericchiang's dex.coreos.com/uid.

Ok sounds good. Should we automatically include the uid claim or make it a request-able scope?

@Calpicow
I think the uid should be included by default. I'm working on a Meteor app which uses the LDAP connector and currently I can only guess the uid from the email.

A more general feature request was added here: https://github.com/coreos/dex/issues/552
Ideally any solution to this would address the larger issue of mapping arbitrary LDAP attributes into the ID token claims. If this is scope based, it should be optional, but it could also be part of the LDAP connector configuration. I don't like the idea of just always including the dn because other use cases may demand other attributes.
Or maybe we just always include the upstream ID? That'd pair well with returning the upstream connector https://github.com/coreos/dex/issues/831
For anyone who wants to tackle this, the next step is a concrete proposal. We're not working on this directly yet.

Made a first stab with #970. I think the LDAP connector should be responsible for returning the desired value for UserID instead of thinking of an elaborate solution to make it work.

Closed via https://github.com/coreos/dex/pull/1176


failed to open Stream : RECEIVE_BOOT_COMPLETED PERMISSION

when I first implemented this plugin it was working correctly but now when I was testing I found this new Runtime exception. I cannot understand how to solve this error by reviewing some issues at StackOverflow. i tried adding this line in my androidManifest.xml but it doesn't solve my problem.
   <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
this is the list of permission added in the AndroidManifest.xml
`
<uses-permission android:name="android.permission.USE_BIOMETRIC"/>
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />`

the following code is the code that I referred to using the flutter_beacon plugin.
`import 'dart:async';
import 'dart:io' show Platform;
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:digiatt_new/Screens/AttendanceAuth.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_beacon/flutter_beacon.dart';
import 'package:local_auth/local_auth.dart';
import 'package:lottie/lottie.dart';
import 'package:permission_handler/permission_handler.dart';

class Scan extends StatefulWidget {
  var attend_data;
  var userModel;
  var classModel;
  Scan({Key? key,required this.attend_data,required this.userModel,required this.classModel}) : super(key: key);

  @override
  State<Scan> createState() => _ScanState(attend_data,userModel,classModel);
}

class _ScanState extends State<Scan> {

  final LocalAuthentication auth = LocalAuthentication();
  _SupportState __supportState = _SupportState.unknown;
  final StreamController<String> beaconEventsController = StreamController<String>.broadcast();
  String authorized = 'Not Authorized';
  bool isAuthenticating = false;
  bool authenticated = false;

  late StreamSubscription _streamRanging;
  bool isScanning = false;
  var attend_data;
  var userModel;
  var classModel;
  final regions = <Region>[];

  _ScanState(this.attend_data,this.userModel,this.classModel);

  @override
  void initState() {
    Permission.bluetoothConnect.request().then((value) {
      if(value.isGranted){
        flutterBeacon.initializeAndCheckScanning;
      }
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Give Attendance'),
      ),
      body: Column(
        mainAxisAlignment: MainAxisAlignment.spaceAround,
        children: [
          //beacon_plugin code
          ElevatedButton(onPressed: () async {
            if (Platform.isIOS) {
              // iOS platform, at least set identifier and proximityUUID for region scanning
              regions.add(Region(
                  identifier: 'Apple Airlocate',
                  proximityUUID: 'E2C56DB5-DFFB-48D2-B060-D0F5A71096E0'));
            } else {
              // android platform, it can ranging out of beacon that filter all of Proximity UUID
              regions.add(Region(identifier: 'com.beacon'));
            }

// to start ranging beacons
            _streamRanging = flutterBeacon.ranging(regions).listen((RangingResult result) {
              print(result);
              // result contains a region and list of beacons found
              // list can be empty if no matching beacons were found in range
            });
          }, child: Text('Start scan')),
          ElevatedButton(onPressed: () async {

            _streamRanging.cancel();
          }, child: Text('Stop scan')),

          Text('- Make sure your Location and Bluetooth is on. \n - Check if your Attendance details are correct')
        ],
      ),
    );
  }

There is one Important point to note. this error is only occurring in REDMI NOTE 10S. my primary testing device. when I tried the same app in other device. it worked perfectly. is there any problem with my device??


Split operators into multiple interfaces

This is to group them for clarity. One advantage here is that now the interface for Publisher/Processor builder is shared, so there's no fear of getting it wrong when copying, and no need to double maintain the javadocs.
One thing I'm not sure about, since we need to override all the methods to ensure the correct subtype is returned by the builders, will the IDEs group the methods as intended? Or do we have to introduce a second layer of interfaces for each of publisher and processor to do that?
Also fixed a number of variance bugs, eg to/via all had no variance on the subscriber/processor type arguments, and methods like flatMapRsPublisher needed to be not just covariant on the elements in the type, but covariant on the Publisher itself too.
One thing that I haven't made contravariant is functions that accept a Throwable. If they were contravariant, you could pass a function that accepted Object to them. But is that desired, or do we want to explicitly force functions to accept a Throwable and nothing wider?  CompletionStage is not contravariant on its Throwable consuming functions, so I thought consistency with that is probably a good idea.
Of course, the naming and grouping of operators is completely up for debate, I've divided them into:

TransformOperators, these are map/flatMap and friends
FilterOperators, for filter/distinct/limit/skip/takeWhile and friends
PeekOperators, for peek/onError/onTerminate and friends
ErrorHandlingOperators, for onErrorResume and friends
CompletionOperators, for all terminating operations including toList/findFirst/ignore/cancel/collect/reduce
ConnectionOperators for generic plumbing operations, which are to/via

Inspiration for this grouping and naming was taken by looking at a combination of all these docs:

http://projectreactor.io/docs/core/release/reference/#which-operator
https://doc.akka.io/docs/akka/2.5/stream/operators/index.html
http://reactivex.io/documentation/operators.html

Yeah, not sure about PeekOperators either. I also thought SideEffectOperators. I went with Peek because Reactor grouped all those operators under the heading "A.3. Peeking into a Sequence". Maybe it should be PeekingOperators? RxJava groups them into a category called utilities. It also uses the action terminology. Akka streams calls the category that these come from "Watching status operators", though it functions fairly differently to how our operators work (I had to write custom Akka streams operators to implement some of the on* operators).

Updated as decided in the weekly reactive hangout:

All operator interfaces are now in present continuous tense, eg TransformingOperators instead of TransformOperators.
CompletionOperators renamed to ConsumingOperators
Completion renamed to ProducesResult

I'm merging as decided in the Hangout.


fixed Teafile.baseClient

Codecov Report

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

@@            Coverage Diff            @@
##             master     #123   +/-   ##
=========================================
  Coverage     97.13%   97.13%
  Complexity       95       95
=========================================
  Files            19       19
  Lines          1222     1222
  Branches         68       68
=========================================
  Hits           1187     1187
  Misses           31       31
  Partials          4        4

Flag
Coverage Δ
Complexity Δ

#csharp
95.29% <ø> (ø)
0 <ø> (ø)
:arrow_down:

#go
98.75% <ø> (ø)
0 <ø> (ø)
:arrow_down:

#java
99.05% <ø> (ø)
95 <ø> (ø)
:arrow_down:

#node_js
100% <ø> (ø)
0 <ø> (ø)
:arrow_down:

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 88f094c...c211918. Read the comment docs.


feat: start_session and end_session

implements start_session and end_session
resolves #2764

Closing until we get to sessions.


DBZ-2456 Selective Snapshot mechanism for Postgres

https://issues.redhat.com/browse/DBZ-2456
Allow for a selective snapshot mechanism to better manage connectors and their life-cycle. I am proposing a snapshot mechanism that is SELECTIVE in nature. The tables to be snapshotted are specified in the config with the key:
"snapshot.selective.tables": "public.tableA,public.tableB"

and the snapshot.mode to be set to selective. So Effectively only the subset of tables specified in the above configuration are considered for snapshots and are locked, post which streaming resumes.

HI @jpechane and @gunnarmorling, just wanted to comment here to get your opinion on this feature request. would love to hear your feedback. Do let me know if there is a better way to achieve this.

@KaushikIyer16 Hi, the functionality looks good for me. I'd let @gunnarmorling to decide if he is fine with adding another option.
If yes then I'd recommend to add it to the io.debezium.pipeline.source.AbstractSnapshotChangeEventSource so all connectors would benefit from it.

Hey @KaushikIyer16, thanks for this contribution!
In general, I'm positive about adding the capability to snapshot only a subset of tables in the include list. I think it should be implemented somewhat differently, though. In particular, I don't think a new snapshot mode is needed. Rather, any existing snapshot mode should honour that new "snapshot.tables" setting. Indeed AbstractSnapshotChangeEventSource would then be the right place for implementing this (or perhaps RelationalSnapshotChangeEventSource.determineCapturedTables()).
Not we plan to rework the entire snapshotting routine more holistically later this year, but I think a change as described above wouldn't be in conflict with that. Do you think you could update this PR along these lines?

Hi @gunnarmorling , @jpechane. Thank you so much for the feedback. Yes, sure I will update the PR along these lines and update here.


Landscape: card issue on dashboard

Description:
Screenshot from Lauri's S21, I wasn't able to replicate yet.

What is wrong here?

Too much spacing between cards in right side row here

This is ok for now


Add support for "args" in deployments

Any progress on this issue? 👀

In dev, merging soooon

Fixed in https://github.com/kthcloud/go-deploy/pull/473


Suspected incorrect FP stack variables in ARM

Describe the bug
The stack variables indicated by the  ghidra  arm disassembler appear to be incorrect  on  file types (raw bin/ ELF )when compared to other disassemblers.
ghidra

Hopper

Shell storm

If the shared fragment is not its' true entry point then it is unlikely that the frame pointer would be initialized from SP and frame-based stack references would not be placed during stack analysis.  If  stack references are being created then it is likely it is a true function and the other function's jumps to its' entry point should be overridden to a call/return.  The Shared Return Analyzer attempts to detect this condition and convert such jumps to another function.
In your Ghidra listing above I do not see a label where another function would have branched into the function shown as you describe.
Based on your description (i.e., shared code fragment does not initialize frame pointer - function shown above does not represent this case), I would not expect to see stack variable references in the shared code fragment,  In such a case, you may need to rely on the Decompiler and avoid the use of the call/return overrides to the shared fragment function.

The issue I think is this assumption that the  variables are "relative to  the SP", when clearly the FP is a separate pointer register that can be manipulated as such.....
The  Binary for the instructions is clearly explicit in the encoding of the offset, and to  try some convoluted system "to "reverse-calculate" some irrelevant pointer relationship, seems problematic.
To say for example that:
00003cd8 10000BE5               str        r0, [fp, var_10]
00003cdc 14100BE5               str        r1, [fp, var_14]
these two variables are related to  the SP based on some calculation of the SP register is just  causing problems..  an offset of  0x10 & 0x14 is still an offset to  FP and yes in a round about way an INITIAL SP  value ,but  does it still have  that relationship.. if partway thru the code FP is re-calculated?, let's not forget this is access FP relative not SP relative.
afterall this IS malware analysis

Stack references are only applied where the access can be traced back to the initial SP at the function entry point.  If FP is recalculated and is not based upon SP, then subsequent FP based accesses would not have stack references applied.  If FP was recalculated based upon SP (which can still be tracked to the initial SP) then that would be properly reflected in any subsequent stack references within the function's code flow.  Only those stack accesses that trace back to a specific stack location (as established at function entry point) will have a stack reference applied, although there are certainly limitations based upon code flow (e.g., loops, shared code, etc.).  Since the use of a frame pointer does not always apply, we have standardized on the use of stack references.  I understand the simplified interpretation that frame-based variable/reference markup could provide in some instances, however at this point we do not have a markup/reference mechanism to support it.
BTW, it would be pretty simple to write a Ghidra script which could add a EOL comment corresponding to each stack reference, or rename variables, based upon the frame offset.  The script could utilize the CallDepthChangeInfo class to obtain the stack offset for FP at a given instruction to adjust the stack offset used for a reference (or referenced variable) at that address.
I hope this helps.  As the behavior concerns you have are not a bug and are as intended I am closing this issue out.


mime: change JavaScript type to text/javascript?

What version of Go are you using (go version)?

$ go version
go version go1.12.5 windows/amd64

Does this issue reproduce with the latest release?
Yes
What operating system and processor architecture are you using (go env)?
go env Output
$ go env
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\kjk\AppData\Local\go-build
set GOEXE=.exe
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=C:\Users\kjk\go
set GOPROXY=
set GORACE=
set GOROOT=C:\Go
set GOTMPDIR=
set GOTOOLDIR=C:\Go\pkg\tool\windows_amd64
set GCCGO=gccgo
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=C:\Users\kjk\src\apps\offdocs\go.mod
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fmessage-length=0 -fdebug-prefix-map=C:\Users\kjk\AppData\Local\Temp\go-build840166758=/tmp/go-build -gno-record-gcc-switches

What did you do?
I used http.ServeFile() to serve .js file.
What did you expect to see?
According to https://html.spec.whatwg.org/multipage/scripting.html#scriptingLanguages:javascript-mime-type:

Servers should use text/javascript for JavaScript resources.

What did you see instead?
Currently .js files are served with application/javascript Content-Type.
Note: currently this simply comes from mime.TypeByExtension but I'm not advocating changing the mime type there, as it's a valid JavaScript mime type.
http.ServeFile could special-case mime type for just .js files.

Sorry, but we're not going to special case MIME types in net/http so that they differ from the types in the mime package.
So if we did this, we'd need to change the mime package. But it seems that application/javascript is correct. See for instance https://stackoverflow.com/a/4101763

Let me know if I'm missing something, though?

I'm not sure we're on the same page wrt. to facts, which, in my opinion, are:

RFC 4329 is from 2006 and lists several mime types for JavaScript files, recommending application/javascript

The most up-to-date HTML spec (https://html.spec.whatwg.org/multipage/scripting.html#scriptingLanguages:javascript-mime-type) says it should be text/javascript and explicitly calls out NOT using the other MIME types.

When it comes to the behavior of ServeFile, HTML spec takes precedence over RFC 4329

As further corroboration https://developers.google.com/web/fundamentals/primers/modules says the same thing:

A note on file extensions
You may have noticed we’re using the .mjs file extension for modules. On the Web, the file extension doesn’t really matter, as long as the file is served with the JavaScript MIME type text/javascript.

From the above it follows that per HTML spec, .js files should be served as text/javascript and that should be the behavior of ServeFile.
As far as a possible remedy, there are several options:

Do nothing. I can't say that text/javascript vs. application/javascript matters in practice (i.e. browsers might not care one way or the other). I was just working on a web app and noticed that the behavior of ServeFile differs from what HTML spec says should happen.

Change the mime type in mime package. That's the right thing for ServeFile, as per HTML spec, but not the right thing for MIME type as per RFC 4329

Special-case Content-Type for .js in ServeFile. That's the right behavior for both specs.

It’s unclear to me what the benefit is to changing this. Things will break (people check mime types in tests all the time) with seemingly little to no benefit (unless I’m missing something).
Will browsers behave differently if you use one over the other? Is there a deprecation event happening soon that will obsolete application/javascript and break things?
What is the tangible benefit of changing this?
@mylesborins

@kjk - Any thoughts on Andy's comment ?

Hey All,
As part of standardizing .mjs we are doing an update to the specification for all js related mimes
https://datatracker.ietf.org/doc/draft-ietf-dispatch-javascript-mjs/
TL;DR application/javascript is going to be obsolete and text/javascript will be the recommended mimetype.
 The media type registrations herein are divided into two major
 categories: the sole media type "text/javascript" which is now in
 common usage, and all of the media types that are obsolete.

 For both categories, The ECMAScript media types are to be updated to
 point to a non-vendor specific standard undated specification of
 ECMAScript. In addition, a new file extension of .mjs is to be added
 to the list of file extensions with the restriction that it must
 correspond to the Module grammar of [ECMA-262]. Finally, the [HTML]
 specification is using "text/javascript" as the default media type of
 ECMAScript when preparing script tags; therefore, "text/javascript"
 has been moved intended usage from OBSOLETE to COMMON.

Reopening as application/javascript is going to be deprecated. This needs further thought.

Thanks, @agnivade.
@MylesBorins what will break as a result of using application/javascript?

I don’t think we need to worry about things necessarily breaking, but once the spec is updated that mime type will no longer be accurate.

On Jul 15, 2019, at 7:29 PM, Andrew Bonventre<EMAIL_ADDRESS>wrote:
Thanks, @agnivade https://github.com/agnivade.
@MylesBorins https://github.com/MylesBorins what will break as a result of using application/javascript?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub https://github.com/golang/go/issues/32351?email_source=notifications&email_token=AADZYVZ7ACCLLL4GGCZRY6LP7UB5FA5CNFSM4HRUYVMKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODZ7H2DI#issuecomment-511606029, or mute the thread https://github.com/notifications/unsubscribe-auth/AADZYVZBI3UKTFYIEWO4SHLP7UB5FANCNFSM4HRUYVMA.

Got it. Thanks, Myles.

Let’s try this as an early-in-cycle change (altering the mime package to serve text/javascript for .js and .mjs files). https://tip.golang.org/src/mime/type.go#L59 is what we‘d alter.

@MylesBorins what is your opinion on specifying the charset?
Should the mime type for .js and .mjs be text/javascript or text/javascript; charset=utf-8?
I ask because all other text/* mime types in the mime package specify a utf-8 charset.

/cc @bmeck about the charset

there isn't a recommendation officially. Things should be served as UTF-8 for modules and ignores the MIME parameter if it is present. However, I would exclude this parameter unless it is expected to be enforced, as it does have an affect on Script.

/cc @mikesamuel


refactor: unify user and user_preferences modules

moves user_preferences over to users namespace.
Also moves table to users schema, migrating old preferences and deleting the user_preferences db schema.
part of addressing #304

This change is part of the following stack:

#325 ◀

Change managed by git-spice.

This change is part of the following stack:

#325 ◀

#326

Change managed by git-spice.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>4
Details

153 of 160 (95.63%)  changed or added relevant lines in 9 files are covered.
8 unchanged lines in 5 files lost coverage.
Overall coverage decreased (-0.1%) to 90.368%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

components/renku_data_services/users/db.py
53
56
94.64%

components/renku_data_services/migrations/versions/17eea03f938e_move_user_preferences_to_user_schema.py
23
27
85.19%

Files with Coverage Reduction
New Missed Lines
%

components/renku_data_services/base_api/auth.py
1
89.61%

components/renku_data_services/crc/db.py
1
88.04%

components/renku_data_services/crc/models.py
1
84.91%

components/renku_data_services/storage/blueprints.py
1
93.58%

components/renku_data_services/crc/blueprints.py
4
92.68%

Totals

Change from base Build<PHONE_NUMBER>9:
-0.1%

Covered Lines:
9035

Relevant Lines:
9998

💛  - Coveralls


Compare with svelte-themes

Just came across this lib and svelte-themes
Wonder if there is nay feature parity w.r.t  svelte-themes
https://github.com/beynar/svelte-themes

I think these two projects are pretty similar - however this project is under active development while svelte-themes has not seen any activity for quite a while (maybe it's not needed though!)
does this answer your question @xmlking?

Thanks @ollema i will stick with mode-watcher

if so, feel free to close this issue :)

From: Sumanth Chinthagunta @.>
Sent: Monday, December 25, 2023 6:58:59 PM
To: huntabyte/mode-watcher @.>
Cc: Olle Månsson @.>; Mention @.>
Subject: Re: [huntabyte/mode-watcher] Compare with svelte-themes (Issue #44)
Thanks @ollemahttps://github.com/ollema i will stick with mode-watcherhttps://github.com/huntabyte/mode-watcher
—
Reply to this email directly, view it on GitHubhttps://github.com/huntabyte/mode-watcher/issues/44#issuecomment-1869070248, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AHTGPBKJVGTNGHATWTWICATYLG5GHAVCNFSM6AAAAABAX53UIGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQNRZGA3TAMRUHA.
You are receiving this because you were mentioned.Message ID: @.***>


Dereference Layers to which AnnotationLists belong

When AnnotationLists are loaded, dereference the Layers they are a member of (via within).   This will enable a display of the the Layer label/description in the "Text" side panel.

I'm afraid we've gotten a bit ahead of ourselves, but we're making due. I envy Tom, who can "look ahead" to having all preliminary questions resolved. We know a lot more about this now. Look forward to a post to the list with more detail.
The current work on transcription has been based on a dynamic store. We've been using this as a proxy for a persistent "layer" and "list" across all canvases. We are looking for any otherContent lists and will displaying them in the UI, but right now we have no fixture manifests with any otherContent using a within field. To develop toward this issue in the way originally intended, we need two kinds of supporting resources:

A manifest with otherContent fields on its canvases. The list referenced must have a "within" field defined on them, preferably in the metadata embedded in the manifest's otherContent array entry, as described by @azaroth42. The client can then build up a list of layers from the lists, as described above by @mikeapp. Mike has created a suite of layers and annotation lists pointing to those layers, but as yet, we have no manifests that point to those layers. We could easily create one ad hoc, but it would not support the development of this feature because of the following requirement.

Secondly, and this is more vague, there must be a way to save an annotation to a specific list, so that it may be retrieved by reloading the same list previously referenced from the manifest. Judging by the nature of annotations, it seems this would have to involve creating the annotation with a service, and then the list itself would need to be edited to point to that annotation, since one annotation can belong to multiple lists. In general, this implies some coöperation between the dynamic annotation service and the server hosting the manifest lists provided in the manifest.

What is this relationship? Right now the dynamic annotation endpoint is not a service in IIIF terms; it's just a mirage created by a particular configuration of Mirador that makes it send a search request on every page turn. What is the IIIF-sanctioned equivalent of this behaviour? How can a manifest instruct Mirador to do this (or should it)? How can a client retrieve a list from otherContent and then persist an addition to that list?
As far as we know, no such server exists to support this activity, and the specification does not discuss this kind of exchange between lists and annotations. CRUD via REST has not been hashed out for manifests, and I haven't heard it discussed for annotation lists. At best it can be hacked together and the UI can be as decoupled as possible from the underlying shim of guesses. This is what we have done, treating the search response on the page turn as the authoritative "list" (which ought to come form otherContent, but there is no way to connect the two because of requirement 2, above, not being met by any known software) that is assumed to be "within" its own layer with the "label" and "description" passed in as configuration options for Mirador.

If you want a standards based answer to 2, it would be to associate an LDP DirectContainer with an AnnotationList as the membership resource.  Fedora4 already implements DirectContainers, and Triannon uses Containers to store Annotations ... but there would be some changes needed to get it to work in practice, and we've more than used up our Triannon development time for this calendar year.
I could build a prototype given a few days, but as you say, we haven't discussed CUD (R is easy) for anything in the IIIF space, and Annotations only in the W3C space, so I'm not sure of the value of such a prototype.

Our intent is to generate manifests whose otherContent points to lists managed in our annotation store.
Our annotation store allows creation/addition of an annotation to a specific list by specifying the list's URI in the within property.   I'm sure that there are other approaches one could take, but this is simple and reasonably consistent with the data returned when the annotation is requested.

That will work with what we've created. Can individual annotations have a within property?

It looks as though the ten-thousand-rooms examples provide a within
property.
But much of the discussion this assumes that lists or layers exist at all,
which is not required by the specs as far as I can tell.  The only thing an
annotation needs to have a relationship to a manifest is a URI value
(currently a canvas id) assigned to the annotations "on" property.  The
only thing the client needs to make that relationship meaningful to the
user is 1) an endpoint and 2) a way to query by annotations' "on" property.
The work we did this week was based on the above use case, which is what we
have to work with, and which will continue to exist even when more robust
server-side software is available.
-Shaun
On Fri, Aug 7, 2015 at 2:07 AM, aeschylus<EMAIL_ADDRESS>wrote:

That will work with what we've created. Can individual annotations have a
within property?
—
Reply to this email directly or view it on GitHub
https://github.com/IIIF/mirador/issues/589#issuecomment-128607995.

Individual annotations can have a within property.  The Search API will provide a means of locating all annotations for a Canvas.   From an individual Annotation is will be possible to follow the graph up to the Layer(s), if they exist.    The Layers allow for conveniences in the UI, but I agree that they (and presumably even AnnotationLists, once Search is available) are not a requirement.

Hello,
Is there any way now to do this? presently we are serving iiif annotationLists with their "within" property set to a layer object. In manifest, for each canvas, in it's otherContent array, we have references to multiple annotationLists, each list having their own "within" property setted to different layer. like, machine_inferred layer, user_space_layer, etc. now is there any interface to enable/disable specific layers? on Layers tab in sidebar, only image manipulation layers are being listed as of now.


Spcifying MAC address for multiple networks.

I need to specify MAC address for containers that acquires DHCP lease from a MACVLAN network, so I can manage them all in static DHCP lease, but that doesn't seem supported yet. I tried the mac and mac_address keys, but they didn't work under named network config, I still see random MAC asking for DHCP lease from the DHCP server. Specifying mac_address is only allowed when a container joins only a single network, and the mac_address is a property of that entire container, not just a network. Just bringing it up since I do think this feature should be supported, eventually.

This already works, if you want to assign static ips or macs  for multiple network use the --network :mac=... syntax
https://docs.podman.io/en/latest/markdown/podman-create.1.html#network-mode-net

Looks like I'm just naive to assume it's supported by compose. I'll submit an issue there.


elf: update Stack Clash Protection on non x86

Stack Clash Protection can only be checked from the disassembly and due to the usage of the Rust crate iced-x86 is only supported for x86. Be more clear in the report on other platforms.

Is this mitigation only tested for Rust binaries by checking a symbol name? Eh... :)


Revert " Remove duplicate ambient index sync all (#53703)"

https://prow.istio.io/view/gs/istio-prow/logs/unit-tests_istio_postsubmit/1863745397265010688
Regression from https://github.com/istio/istio/commit/6e978b936dc8da5c063801dfe6d40c9800a481f4 as found by git bisect
With the commit:
22 runs so far, 1 failures (95.65% pass rate). 2.251285039s avg, 2.846172128s max, 1.888236686s min
Without the commit:
2223 runs so far, 0 failures (100.00% pass rate). 2.021820747s avg, 2.628236308s max, 1.696043537s min
Fixes https://github.com/istio/istio/issues/54156

@howardjohn: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

integ-telemetry_istio
ef1fee274ba13773fa8a0f9cedc7bbe7f4dd0434
link
true
/test integ-telemetry

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

NVM I think there is a better option, will open a new pr


Support PostgreSQL empty & inf range and OffsetDateTime for Guava ranges

After the PostgreSQLGuavaRangeType is now aware of its element type
through the DynamicParameterizedType (since #215), the bounds do not
have to be deduced from the provided range anymore. As a result,
unbounded ranges like the empty range or the infinite range can be
properly mapped. As a fallback we still use the old behavior, deducing
the element type from the bound.
For the infinite range nothing special happens. PostgreSQL's (,) now
maps to Range.all() if the element type is known.
Guava is somewhat opinionated about "empty" ranges. While ranges are
allowed to be empty (there even exists Range#isEmpty), a Guava range
is defined by its bounds so for the empty range bounds are still
mandatory (https://github.com/google/guava/issues/2400). PostgreSQL on the other hand normalizes any empty range to an
"empty" literal. As a result bounds will always be lost when persisting
empty ranges in PostgreSQL. I.e. in the previous implementation [0,0)
would be persisted fine, but then fail upon a consecutive fetch because
the bounds would have been lost in normalization.
In order to work around this limitation, empty ranges are now mapped to
the empty range with the minimal element value as placeholder bound. At
least always an empty range is returned, but users should note that the
actual bounds are lost during this normalization.
As a second improvement, tstzrange now maps to an OffsetDateTime by
default, unless a ZonedDateTime element is specified through the
DynamicParameterizedType. OffsetDateTime is more appropriate than
ZonedDateTime here, because PostgreSQL only stores the offset and not the
actual timezone. This is also analog to JPA 2.2 which also does
support only OffsetDateTime and not ZonedDateTime.
When a ZonedDateTime is requested, we fall back
to the old behavior (guessing the timezone based on the offset).

Fixed by https://github.com/vladmihalcea/hibernate-types/pull/285

Fixed by https://github.com/vladmihalcea/hibernate-types/pull/285


How to print heap dump creation progress?

I am curious if there is a way to determine how far a heap dump creation (which is triggered by NATIVE_HOOK integration) has progressed?
We have an OOM issue in our application and installed this library. The on-demand heap dumps work flawlessly (note: little memory is used for them). However, when an OOM error is triggered, the console log "Generating Heapdump to '/var/log/nodejs/heapdumps/xxxxxxxxxx.heapsnapshot' now..." is printed and we never get the dump being written to disk. The file is created, but its size remains 0.
I think this is because 1 min after the OOM, the container is killed by health checks and container orchestration tooling. This 1 min seems not to be enough time to create and write the file to disk. That is why I would like to check if the application is actively working on creating the heap dump. If that is the case, I would look for a solution to keep the container alive after health checks failed until the heap dump creation finishes.
I looked at the chrome-remote-interface and noticed that there are several callbacks used by heapdumpWorker.js. Does anybody know if it is possible to obtain and log more information during heap dump creation?

I would have to look into it some more, but the heapdumpWorker is only used for ondemand heapdumps. The OoM ones are generated from native code.
You might just run into issues with the container memory limit, as described in the readme.
You could try running the containers with double the amount of memory to see if that resolves the heapdump being created.

Thanks for the informative notes @paulrutter! As it turned out, the container was indeed killed by container being OOM. I increased the memory and a new issue appeared: AWS Application Load Balancing killed the container before the heap dump was fully written to disk.
That is why I look for a way to determine how long a heap dump should take or to print the progress of the heap dump to console log.

Ok clear, meanwhile you could try to tune the healthcheck parameters if possible. I'll check if printing progress from native code is an option tomorrow.

https://github.com/blueconic/node-oom-heapdump/blob/c1d22aab526251c832ee487d4064a9af0058ca67/lib/node_oom_heapdump_native.cc#L59 takes an argument which can handle progress.
I found an example of this here https://github.com/node-inspector/v8-profiler/blob/8de17557028d10593a658e5c3b9a64a8099418ff/src/heap_profiler.cc#L22.
We could try to incorporate this in the codebase and just print the progress vs total in the stdout.
If i have time, I'll give it a try. A PR for this is welcome as well.

I have a working version in a branch, which prints the raw progress values like this:
Progress of heapdump: 1550000, 2968666
Progress of heapdump: 1560000, 2968666
Progress of heapdump: 1570000, 2968666
Progress of heapdump: 1580000, 2968666
Progress of heapdump: 1590000, 2968666
Progress of heapdump: 1600000, 2968666
Progress of heapdump: 1610000, 2968666
Progress of heapdump: 1620000, 2968666
Progress of heapdump: 1630000, 2968666
Progress of heapdump: 1640000, 2968666
Progress of heapdump: 1650000, 2968666
Progress of heapdump: 1660000, 2968666
Progress of heapdump: 1670000, 2968666
Progress of heapdump: 1680000, 2968666
Progress of heapdump: 1690000, 2968666
Progress of heapdump: 1700000, 2968666
Progress of heapdump: 1710000, 2968666
Progress of heapdump: 1720000, 2968666
Progress of heapdump: 1730000, 2968666
Progress of heapdump: 1740000, 2968666
Progress of heapdump: 1750000, 2968666
Progress of heapdump: 1760000, 2968666
Progress of heapdump: 1770000, 2968666
Progress of heapdump: 1780000, 2968666
Progress of heapdump: 1790000, 2968666
Progress of heapdump: 1800000, 2968666
Progress of heapdump: 1810000, 2968666
Progress of heapdump: 1820000, 2968666
Progress of heapdump: 1830000, 2968666
Progress of heapdump: 1840000, 2968666
Progress of heapdump: 1850000, 2968666
Progress of heapdump: 1860000, 2968666
Progress of heapdump: 1870000, 2968666
Progress of heapdump: 1880000, 2968666
Progress of heapdump: 1890000, 2968666
Progress of heapdump: 1900000, 2968666
Progress of heapdump: 1910000, 2968666

See https://github.com/blueconic/node-oom-heapdump/tree/progress.
Can you test if this helps debugging the issue?

Thank you @paulrutter!! That are fantastic news for troubleshooting future heap dump creations! I will try this out when I am back in office at Tuesday.

@MartinLoeper Any progress on this issue?

Sorry for the delay @paulrutter.
I tested the "2.1.0-progress.1" version and it logs the progress as expected. Good job!!
Unfortunately it did not help in debugging my initial issue, because AWS ELB killed the containers to early and there is no option to increase the duration significantly.
I also noticed that the it takes some time until the progress reporting starts:

Generating Heapdump to '/var/log/nodejs/heapdumps/1599430675467.heapsnapshot' now...
memory increses significantly and some time goes by...
Progress of heapdump: 0, 62930078 .... etc.

Another option might be to have a main process running in the container, which handles the healthcheck on port 80 and proxies traffic, and a forked nodejs process which actually does the work by receiving the proxied traffic.

Thanks for reaching back and your interest for this topic. Let me elaborate a bit...
The main process inside the container is a node.js webserver. The AWS Application Load Balancer is configured to send health checks every X seconds over the traffic port and to the "/health" route.
When performance is degraded and the webserver does not respond for Y seconds to an incoming ALB health check, the ALB marks the container as unhealthy. Then, the ECS service stops the container's corresponding ECS task.
There is only one option to delay the ECS task being killed after a stop signal was issued: the stopTimeout  parameter of the container definition. [1]
However, the stopTimeout has a max value of 120 seconds. That was not enough in our case to create the whole memory dump.
I understand that we could "fake" the health checks using another process inside the docker container. However, the customer experience would be really bad because the ALB would continue to serve requests to the healthy target while the memory dump is being created.
That is why I finally gave up to analyze the heap dumps and found the underlying issue using DataDog's APM features. The bug was not a memory leak. It was caused by excessive/huge database queries (reads) which used all free RAM in the container.
Do you think there are any benefits when using a node http proxy inside the container?
What are the performance implications?
[1] https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerDefinition.html

Thanks for your response, that makes sense. Your setup sounds logical to me, i didn't know ALB could interact with ECS to signal unhealthy containers (note to self!).
Great that you found the issue though!
The proxy solution could still help solve your issue, by using blue/green deployment. When the forked process doesn't respond, just fork another one and route the traffic to the new process. The old one can finish the heapdump (if there is enough container memory) and then exit. Maybe not ideal, but gives more flexibility.
Performance implications are hardly notable. There will always be some penalty, but our performance tests didn't notice it on average.

Closing issue as it was not caused by this module. Reopen if there is more information.


Grammar Error

With Design Manager, you can convert an.html file into a SharePoint master page
The above should have a space between "an" and ".html file".

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

ID: 20fd888e-c513-1964-9709-0bf3c3f8d2f6
Version Independent ID: 09c3ba13-b641-5a81-3882-3bc5d5c0b851
Content: Convert an HTML file into a master page in SharePoint
Content Source: docs/general-development/how-to-convert-an-html-file-into-a-master-page-in-sharepoint.md
Service: unspecified
GitHub Login: @spdevdocs
Microsoft Alias: spdevdocs

Thanks for catching this!


go.mod: gvisor.dev/gvisor v0.0.0-20231023213702-2691a8f9b1cf (Support Go 1.22)

This revision is compatible with Go 1.20, 1.21, and 1.22rc1. New versions (>= v0.0.0-20231024051821-3b00acd67af2) are no longer compatible with Go 1.20.
Fixes #2133

This revision is compatible with Go 1.20, 1.21, and 1.22rc1.

I know there is nothing we can do about this, but this narrow coupling between package versions and Go releases makes it quite painful to run git bisect over a range of Lima releases, as different commits will need to be compiled with different Go versions.

This revision is compatible with Go 1.20, 1.21, and 1.22rc1.

I know there is nothing we can do about this, but this narrow coupling between package versions and Go releases makes it quite painful to run git bisect over a range of Lima releases, as different commits will need to be compiled with different Go versions.

Yes, maybe we can consider using another TCP/IP implementation if they aren't interested in supporting multiple Go versions

Can we merge this?


Update Realm Objective-C's Swift Tests for Swift 3`

We currently don't have any tests for Realm Objective-C in Swift 3.0, so I updated the Swift 2.x ones. https://github.com/realm/realm-cocoa/issues/3842

@austinzheng @bdash

I agree with @bdash's comment on adding more info to your objc comment. Otherwise 👍. I didn't do a thorough review of the Swift 3 tests, but we'll need to do that again when Xcode 8 goes GM anyway.

Addresses https://github.com/realm/realm-cocoa/issues/3843


typeahead:select event does not pass dataset name

The typeahead:selected event, when triggered, used to pass the name of the dataset of the item selected as the third parameter, but it doesn't anymore for the typeahead:select event. How do we know the name of the dataset the selected item belongs to?

@onokazu Is this related (and possibly fixed by) #65?

Duplicate of #63 and #58


Pass event to onFocus event handler

If #458 gets merged then we can merge this one. If not then I'll have to look into getting this change in some other way.


[DRAW-023]  Buttons on ‘My Transcriptions’ are misaligned when browser is resized to 891 x 740 or less

Steps to reproduce:

Launch DRAW website.
Navigate to ‘My Transcriptions’ by selecting the ‘Transcribe’ tab, then ‘My Transcriptions’ on the drop-down.
Resize browser to 891 x 740 or less.
Observe buttons misaligning when browser is resized.

Actual result:
Buttons on ‘My Transcriptions’ are misaligned when browser is resized to 891 x 740 or less.
Expected result:
Buttons should properly align with page when browser is resized.
Notes:
Issue occurs on:
Google Chrome Version 55.0.2883.87 m, Firefox version 37.0.1., Internet Explorer 11.
Tested on: Windows 7 Professional x32, Intel Cote i5, ATI Radeon HD 4550.
Repro rate: 5/5.
Screenshots attached: DRAW-023.png

This has been resolved. Please test and confirm, then close.

No longer an issue with the new table


ResourceLoader: Fix handling of uncached loads

CACHE_MODE_IGNORE_DEEP is checked in addition to CACHE_MODE_IGNORE to determine if a load is uncached. This avoids crashes in uncached loads due to prematurely freed load tasks.
Cached load tasks are isolated (not registered in the task map ever). This avoids regular loads from reusing in-flight cached loads, which is not correct.

Thanks!

Since we merged in the latest master a few days ago, we had errors in our game every now and then (like "play the game for at least 5 minutes and they started occurring" kind of frequency). They were in the resource_parser_text and errors like "could not parse" or "error loading dependency" or even "no resource found at path". We use the threaded resource loader quite a lot, so this could be a rare problem for others...
We traced the problem back to this PR through bisecting. And while looking at the changes I found it odd that the new code returns the load_token even when it is invalid:
https://github.com/godotengine/godot/blob/82cedc83c9069125207c128f9a07ce3d82c317cc/core/io/resource_loader.cpp#L476-L481
while the old code only returned in an else (so only when the token is valid) and otherwise populated the load_token later on in the function before returning:
if (!load_token.is_valid()) {
	// The token is dying (reached 0 on another thread).
	// Ensure it's killed now so the path can be safely reused right away.
	thread_load_tasks[local_path].load_token->clear();
} else {
	if (p_cache_mode != ResourceFormatLoader::CACHE_MODE_IGNORE) {
		return load_token;
	}
}

So I tried just adding the else back to the condition and the errors went away:
if (!load_token.is_valid()) {
	// The token is dying (reached 0 on another thread).
	// Ensure it's killed now so the path can be safely reused right away.
	thread_load_tasks[local_path].load_token->clear();
} else {
	return load_token;
}

I am totally unsure if that is correct in any way, though 😀 Can you look into this @RandomShaper ?

Excellent catch. I'm preparing a PR that fixes a few other issues and will include the fix there. Thank you.


rebrand of the toggle

Rebranded the toggle to follow Hopper Brand.

Here is a problem with the toggle hover which is disabled.
https://github.com/gsoft-inc/ov-igloo-ui/assets/2379339/5d5f4ef0-12b5-4554-b93c-add65b5cd282

The file for changesets is also missing

The file for changesets is also missing

Can you let me know how this one is created? In Orbit it was automated via a yarn command.

The file for changesets is also missing

Can you let me know how this one is created? In Orbit it was automated via a yarn command.

I mentioned it to you via slack just now.


Add Resources CRUD views

Refs firezone/product#565

@jamilbk it would be better if you base this branch (and other UI changes) off andrew/live-web2.

I'll take care of merging it

👍


Compatible with iOS 9.2.1 and iOS 9.3

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.0 out of 2 committers have signed the CLA.:x: Davis Hoo:x: vdavdevDavis Hoo seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.0 out of 2 committers have signed the CLA.:x: Davis Hoo:x: vdavdevDavis Hoo seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


Player does not notice when the taxes are payed

[ ] the player does not notice when the taxes are paid, probably because it is not outlined with a header in the corresponding screen: Add a header about it, namely tax payment.
[ ] What does the note below applies to is not clear: Shorten the text and indicate with an "*" to which category applies
[ ] Missing article when mentioning the community: Add "the"?

Done


Figure out how to handle singularity mount points for many users

One of the biggest problems that I can see with singularity images in pipelines designed to be used by everyone is bind points - mounting root directories within the container. The ENABLE_OVERLAYS option doesn't seem to be set for most people, so currently all root directory paths have to be added in the docker build script. This isn't exactly scaleable and we could do with a better solution.
Is there a better way to handle this?

Discussed on gitter here

@pditommaso
first version of singularity overlay was disabled by default because it was buggy
now it should be available by default if not disabled by sysadmins

So maybe everyone does now have overlays enabled and we don't need to worry about it after all. 🎉

If they don't, it's their problem :)

So a transcript of more internal discussion:

I think this is mostly up to what you want to support for end targets. RHEL6 derivatives will typically not support overlays. But given that RHEL7 was released in 2014, I think it's fair to consider the group running on those systems a small and shrinking exception.
Is it feasible in a sane fashion to check supplied if data paths exists withing the container name space and give a sensible message if not?

@pditommaso - what do you think? If using singularity, could core nextflow check that staged input files are readable and throw a nice informative error message if not? At the moment stuff just fails with the tool complaining that the file doesn't exist. This never fails to confuse people as they try to debug and see that the file clearly does exist. Or maybe I could just add in a command that checks the singularity config to ensure that enable overlay = yes. Or perhaps I should just stop worrying and let people figure stuff out themselves.

Um, not sure it's NF role to check if a file is readable. That would mean add an extra unnecessary overhead, in particular in the context of HPC cluster. I think NF separate things very clearly, allowing the troubleshoot of each task independently the remaining part of the pipeline. That's something that any user should be able to do.

Yeah, I was kind of coming to the same conclusion as I was typing but I figured I would see what you thought anyway 😀 I think I'll just ignore this problem for now 👍
Thanks for the discussion!


Can't receive bitcoin over lightning.

Can't receive bitcoin over lightning. The wallet thinks it needs to open a new channel even though I have plenty of inbound liquidity.
mutiny-logs.txt

Check your channels on the settings. Is your inbound enough for the invoice you're trying to create?

I have about 70k inbound liquidity, but no matter how small an invoice I make, it wants to create a new channel.

How big does it show the reserve right now? What's the channel size in general? A screenshot would help.

Screenshot
Screenrecording

This is definitely strange. If you go to the admin tools in the settings, can you click on your channel and copy and paste the details that show up for it? Should have your channel id and a few other details there we can investigate.

Nodes:
0288bd740b8ff67ea8a9a76fe35e396fbf5f2bff098e9ae2a9226fd20556af9b5c
Peers:
{   "pubkey": "03aefa43fbb4009b21a4129d05953974b7dbabbbfb511921410080860fca8ee1f0",   "connection_string": "03aefa43fbb4009b21a4129d05953974b7dbabbbfb511921410080860fca8ee1f0@<IP_ADDRESS>:9735",   "alias": "Voltage Flow 2.0",   "color": "ff5000",   "label": null,   "is_connected": true }
Channels:
{   "user_chan_id": "68442a18cf26c11d190a44b49adc60c9",   "balance": 69798,   "size": 141415,   "reserve": 546,   "inbound": 69656,   "outpoint": "2e267fdafeaa0daaced0bd29d94f85a96c4859485d60dd142d4645b7883ddda3:0",   "peer": "03aefa43fbb4009b21a4129d05953974b7dbabbbfb511921410080860fca8ee1f0",   "confirmations_required": 0,   "confirmations": 4520,   "is_outbound": false,   "is_usable": true }

What do you mean refresh the channel? It'll take a couple seconds anyways for it to come online.

screenshot

That just shows you your current status of the channel. The view. It doesn't actually do anything. The online/offline indication on the normal channel view (not the admin tools section) is a live indication.
After you load the wallet, check that one. Wait for it to come online (may be a few seconds, let us know if it's very long) and then leave it opened for a little bit. If it switches between online and offline back and forth, let us know and submit logs. Otherwise, try to receive a small amount and if it gives you the same problem.
Trying to pinpoint it.

Actually the clue is here.
"balance": 69798, "size": 141415, "reserve": 546, "inbound": 69656
The normal channel view tries to reflect real inbound but from your screenshot, it showed about the same. I can tell you right now, there must be a bug in the inbound. You definitely don't have 69k inbound if the channel size is 141k and half of it is your balance. We need to fix this screen but yeah with on chain fees spiking, the lsp needs to be able to potentially close the channel.

I opened the channel during a fee spike, when there was still a static fee of 10k sats. And the onchan fee was 11 184 sats.

In addition to on chain fees taking up the rest of the inbound, this can also happen if there's connection problems with the LSP. We just pushed up an update that might resolve that. Let us know if it's still an issue.


Make the state transition type contain more than the actionable function

Currently, we have a (./k8s/claim).nextAction type, which is just an alias to a func(...). That type should be expanded to have more information:

Starting Status
End Status
The ServicePlanClaim's Action
The actionable function

Adding this information will help testing and debuggability. Additionally, we should consider evolving this construct later (in a future issue, to be created) to split the actionable function from the mutations to the underlying ServicePlanClaim. The rough outline for how this looks would be:

The new type, which we'll call Transition calls an internal run() error func
On error, the Transition writes the error and details into the ServicePlanClaim
On success, the Transition writes the end status and details into the ServicePlanClaim

The patch to solve this issue should also include tests to verify the state transitions.

The state machine now lives in https://github.com/deis/steward-framework and will be undergoing a refactor (https://github.com/deis/steward-framework/issues/7), so this issue is obsolete; closing.


Websockets failed after reinstall node modules

I was using Laravel websockets and it worked fine till last night I did remove **node_modules** folder and **package-lock.json** file for some reasons.
I used these commands after that:
npm install

npm run dev

I expect that everything workes like before because I removed all changes.
But know there's log message in console without any try and immediately after page load with this message:

wss://mydomain.com:6001/app/aed96seda52b767a8996?protocol=7&client=js&version=4.4.0&flash=false' failed: Unknown reason

https://i.stack.imgur.com/GBkxQ.png
This is my echo setting, Just for information:
    window.Echo = new Echo({
        broadcaster: 'pusher',
        key: process.env.MIX_PUSHER_APP_KEY,
        wsHost: window.location.hostname,
        wsPort: 6001,
        wssPort: 6001,
        disableStats: true,
        encrypted: false,
        enabledTransports: ['ws', 'wss']
    });

UPDATE :
I did clean npm cache using npm cache clean --force and did above scenario again but there's no difference in result.
StatisticsUpdated event is working based on websockets.php configuration! Just there's no connection in client side!
Does anyone knnow where's my mistake?
Thanks in Advance
[1]: https://i.stack.imgur.com/GBkxQ.png

Hmm, that's odd. I can't find any information on an Unknown reason error message from Chrome.
If you're able to put breakpoints in your app.js bundle, try to step through and find the event.code value from the .onerror callback on the websocket object. Hopefully that'll reveal what's actually happening.

Same error here. Is there any progresses on this?

same. Anyone found the issue ?

for my case, Safari works fine. it's Chrome's issue. fixed by restart Chrome.😂

It seems there's something about cache system of this package in my case , because this worked after a while by itself :-|

just in case -> addblocker caused this issue


v1.2.0 is not released to RubyGems

+1

Yeah I was waiting for a new font from a guy but it seems like he forgot about it so I released it now.


Let's clean it up a bit.
Look at https://www.julo.ch/blog/wtforms-chosen/

Ended up using this one:
https://github.com/select2/select2. Works a treat.


SVO names for points on a river extracted from GRWL dataset

I have created a dataset that contains locations of points on river. For example like this

Each point will have a unique ID. I extracted this points from the GRWL dataset from here -
https://doi.org/10.5281/zenodo.1297434
The unique IDs are created by me and are not taken from the dataset because this dataset provides information as a linestring.
Please suggest a relevant name and uri

I am thinking this would be similar to issue #11 so I would say something like
basin~drainage_channel~river_point__khandelwal_identification_code
Is there some common attribute for all of the points? For example, do all of the points fall along the centerline of the river channel? Then the variable would be more specific, like:
basin~drainage_channel~river_centerline_point__khandelwal_identification_code
Where centerline = line~max-depth. What do you think?

Yes, according to the authors these polylines are center lines. I am fine with the name that you have suggested. Please add them to the ontology.


Not getting other  specific user post details expect current user profile

Error example on src/component/profile/ProfileArchive

That feature is still under development.


[BUG] Workload/Pod pop up in Volume page does not have the same text spacing between different fields

Describe the bug
Workload/Pod pop up in Volume page does not have the same text spacing between different fields
To Reproduce

Create a volume in longhorn and attach it to a workload wk01.
The Pod Status on the UI in the volume page - shows the correct status of the pod - Pending/Running.
Delete the workload wk01 in Rancher.
Last time used by Pod field is seen on the UI in the Workload/Pod pop up
The spacing between the field Last time used by Pod and other fields in the pop up is not the same

Expected behavior
The spacing between the field Last time used by Pod and other fields in the pop up should be the same
Environment:

Longhorn version: master - ui tag: wangsiye/longhorn-ui:492c389

Verified on master - ui image: wangsiye/longhorn-ui:79c09d9
Validation: PASSED

The spacing between the field Last time used by Pod and other fields in the pop up is same.

Validated on master - 05/18/2020
Steps:

Create a volume in longhorn and attach it to a workload wk01.
The Pod Status on the UI in the volume page - shows the correct status of the pod - Pending/Running.
Delete the workload wk01 in Rancher.
Last time used by Pod field is seen on the UI in the Workload/Pod pop up
The spacing between the field Last time used by Pod and other fields in the pop up is consistent


Revamp data checks

Not sure if it would be a modification or rebuild, but I think we could take some lessons learned from the first iteration of check system and focus on something more intuitive for the next go-around.

For reference, REDCap has a "Data Quality" area where you can define "rules" that can be run both 1) on demand and 2) real-time during data entry.
Setup rule that diastolic can not ever be higher than systolic.

Result when I try to save a form with violation.

@mrueschman, I'll be closing this issue, but moving the other checks you've mentioned into individual issues.


env is not defined, in DetectObject() in prpy.perception.apriltags.py

in DetectObject() from apriltags.py, env is not defined.

/home/user/catkin_workspaces/herb_ws/src/prpy/src/prpy/perception/base.pyc
in call(self, instance, robot, *args, **kw_args)
12
13     def call(self, instance, robot, *args, **kw_args):
---> 14         return self.func(instance, robot, *args, **kw_args)
15
16     def get(self, instance, instancetype):
/home/user/catkin_workspaces/herb_ws/src/prpy/src/prpy/perception/apriltags.py
in DetectObject(self, robot, object_name, **kw_args)
145         for obj in added_bodies:
146             if obj.GetName() != object_name:
--> 147                 env.Remove(obj)
148                 print "removed object"
149             else:
NameError: global name 'env' is not defined

Please see PR #294


Remove python 2

Since we're removing Python 2 compatibility from the consumerfinance.gov family of projects, remove python 2 from this repo.

Remove all references to six
Remove Python 2 from the Tox testing matrix
Remove Python 2 from Travis

Good call @higs4281. Done.


Fc fixesrefmap

fixes to refmap:

cleaned pipeline.yml
added scib
removed scripts that were unused from pipeline

@crichgriffin i'm done and checked the code (tutorial added). please review and merge when you can.


CXX bridge generated with proc macro is not seen by cxxbridge

Hi,
Sorry if this has already been noticed, but expanding the following macro does not generate any C++ code:
#[proc_macro_derive(WithEnum)]
pub fn with_enum(input: TokenStream) -> TokenStream {
    let derive_input = syn::parse::<DeriveInput>(input).unwrap();
    let s = match derive_input.data {
        syn::Data::Struct(s) => s,
        syn::Data::Enum(_) => panic!("enum, not struct"),
        syn::Data::Union(_) => panic!("union, not struct"),
    };
    let enum_name = format_ident!("{}Type", derive_input.ident);
    let enum_variants = s
        .fields
        .iter()
        .map(|f| f.ident.as_ref().unwrap().to_string().to_pascal_case())
        .map(|s| format_ident!("{}", s))
        .collect::<Vec<_>>();

    let mod_name = format_ident!("ffi_{}", enum_name.to_string().to_snake_case());

    let struct_name = derive_input.ident.clone();
    let struct_name_lower = format_ident!("{}", derive_input.ident.to_string().to_snake_case());
    let fn1_name = format_ident!("{}_was_passed", struct_name_lower,);
    let fn1_signature = quote! {
        fn #fn1_name(#struct_name_lower: #enum_name) -> bool
    };

    let static_name = format_ident!("{}", derive_input.ident.to_string().to_upper_case());

    let fn1_body = gen_fn1(
        &struct_name_lower,
        &enum_name,
        &static_name,
        enum_variants.iter(),
        s.fields.iter(),
    );

    let fn2_name = format_ident!("{}_as_string", struct_name_lower);
    let fn2_signature = quote! {
        fn #fn2_name(#struct_name_lower: #enum_name) -> String
    };

    let fn2_body = gen_fn2(
        &struct_name_lower,
        &enum_name,
        &static_name,
        enum_variants.iter(),
        s.fields.iter(),
    );

    let output = quote! {
        #[cxx::bridge]
        pub mod #mod_name {
            #[namespace = #MOD_NAMESPACE]
            enum #enum_name {
                #(#enum_variants),*
            }

            #[namespace = #MOD_NAMESPACE]
            extern "Rust" {
                #fn1_signature;
                #fn2_signature;
            }
        }

        static #static_name: ::once_cell::sync::Lazy<#struct_name> =
            ::once_cell::sync::Lazy::new(|| #struct_name::from_args());

        use #mod_name::#enum_name;

        #fn1_signature {
            #fn1_body
        }

        #fn2_signature {
            #fn2_body
        }
    };

    output.into()
}

Expectation:
cxx sees the generated bridge and expands it appropriately.
Actual behavior:
cxx reports 'no #[cxx::bridge] module found'

I just hit this issue too. Did you solve it or find a workaround?
I am considering generating an intermediate file in build.rs prior to the cxx::bridge call.

I just hit this issue too. Did you solve it or find a workaround?
I am considering generating an intermediate file in build.rs prior to the cxx::bridge call.

I have no workaround, as I had the freedom to switch to a C API for my project and did so. Sorry.


[Bug]: line break cause blank line before next text in exported PDF

Bug description
Steps to reproduce the problem:

Have a div whose width and length contains a text and has line height set to 1em.

The HTML preview looks fine

When you print the page, it will have a line. example:

Puppeteer version
1.17.0
Node.js version
v12.14.1
npm version
N/A
What operating system are you seeing the problem on?
Linux
Relevant log output
No response

We no longer support Node 12, please try this again with the latest version of Puppeteer and Node 14+.

@jrandolf Thanks for the response. I updated to Puppeteer  version 15.3.0 and NodeJS version 16.15.0 and i got this same issue.


Update scalatest to 3.1.2

Updates org.scalatest:scalatest from 3.1.1 to 3.1.2.
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.scalatest", artifactId = "scalatest" } ]

labels: test-library-update, semver-patch

Codecov Report

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

@@           Coverage Diff           @@
##           master     #260   +/-   ##
=======================================
  Coverage   62.17%   62.17%
=======================================
  Files          38       38
  Lines        1285     1285
  Branches        8        8
=======================================
  Hits          799      799
  Misses        486      486

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 5f37295...0bcb401. Read the comment docs.


chore(main): release 2.2.0

:robot: I have created a release beep boop
2.2.0 (2023-12-26)
Features

added witnesses (0b2411c)
added witnesses (#60) (f466365)
witnesses bio translated 10/50. (b4b807d)
witnesses bio translated 10/50. (#62) (97aaae6)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/Hessuew/flamethefreeze/releases/tag/v2.2.0 :sunflower:


Feature - Add Stock SVG and PNG Icons

Adds a set of stock fighter icons in SVG and PNG formats.
Screenshots
A few examples:

Changelog

Adds SVG set of stock icons
Adds PNG set of stock icons

I'm a monster and self merging 😱


Fix typo in docker-compose command

Missing - in docker-compose up -d

Thanks for the review! I will merge the changes since you approved @molebox


Let's make awesome validation for the config!

The last couple of days I've been migrating a legacy project to brunch, and it's been a very positive experince!
I've used brunch a bit a few years ago, so it wasn't entirely new to me, but I still bumped into a few problems along the way. Most of the time, the problems arose from a mistake I had made in brunch-config.js. Here are a few examples.

I had just finished installing some brunch plugins and making a few edits to brunch-config.js. I then ran brunch b to test it out. (Yes, my primary testing consists of running brunch b and inspecting the output in public/.  I don't bother opening the browser until it looks ok.) This is the result:
$ brunch b
13 Apr 06:06:33 - error: Initialization error - TypeError: stylesheets.map is not a function
  at /home/lydell/myproject/node_modules/deppack/lib/load-globs-styles.js:21:26
  at Array.map (native)
  at Object.keys.map.each.then (/home/lydell/myproject/node_modules/deppack/lib/load-globs-styles.js:15:42)
  at /home/lydell/myproject/node_modules/deppack/lib/deppack.js:71:19

That's not very helpful! Initially, I had no clue at all what was wrong. I didn't know if it was my fault, some plugin's fault or a bug in brunch. I then noticed the word "stylesheets" in the error message, and thought of config.files.stylesheets, but that was a red herring. I then realized that if .map is not a function, that probably means that brunch expects an array in my config, but I gave it something else. I started commenting out my most recent changes in brunch-config.js until the problem went away. Turned out this was the problem:
npm: {
  styles: {
    'font-awesome': 'css/font-awesome.css',
  },
},

... which is supposed to be (note the added [ and ]):
npm: {
  styles: {
    'font-awesome': ['css/font-awesome.css'],
  },
},

Similarly to the above, I Initially thought that npm.static could be used like this:
static: {
  'font-awesome': ['fonts/font-awesome.woff']
},

That gave me this:
$ brunch b
/home/lydell/myproject/node_modules/deppack/lib/deppack.js:34
  const isPackage = path => isNodeModule(path) && (statics || []).indexOf(path) === -1;
                                                                  ^

TypeError: (statics || []).indexOf is not a function
  at Object.path [as isPackage] (/home/lydell/myproject/node_modules/deppack/lib/deppack.js:34:67)
  at Deppack.isNpm (/home/lydell/myproject/node_modules/deppack/lib/deppack.js:100:27)
  at FileList.isIgnored (/home/lydell/myproject/node_modules/brunch/lib/fs_utils/file_list.js:65:17)
  at FileList._change (/home/lydell/myproject/node_modules/brunch/lib/fs_utils/file_list.js:187:26)
  at emitMany (events.js:121:13)
  at FileList.emit (events.js:195:7)
  at BrunchWatcher.changeFileList (/home/lydell/myproject/node_modules/brunch/lib/watch.js:239:19)
  at BrunchWatcher.startCompilation (/home/lydell/myproject/node_modules/brunch/lib/watch.js:314:12)
  at FSWatcher.<anonymous> (/home/lydell/myproject/node_modules/brunch/lib/watch.js:177:14)
  at emitTwo (events.js:100:13)
  at FSWatcher.emit (events.js:185:7)
  at FSWatcher.<anonymous> (/home/lydell/myproject/node_modules/chokidar/index.js:171:15)
  at FSWatcher._emit (/home/lydell/myproject/node_modules/chokidar/index.js:212:5)
  at FSWatcher.NodeFsHandler._handleFile (/home/lydell/myproject/node_modules/chokidar/lib/nodefs-handler.js:275:10)
  at FSWatcher.<anonymous> (/home/lydell/myproject/node_modules/chokidar/lib/nodefs-handler.js:473:21)
  at FSReqWrap.oncomplete (fs.js:82:15)

Once, I thought that the "conventions" option was called "convention", and was frustrated when my config didn't make any difference. Then I finally found that pesky missing "s".

Proposal
eslint and stylelint both validate their config files in an awesome way. They warn about unrecognized (misspelled) options, and make sure that the options are of the correct type.
Here are a few eslint errors:
Definition for rule 'comma-dangel' was not found

Configuration for rule "comma-dangle" is invalid:
Value "always-multilin" must be an enum value.

Configuration for rule "comma-dangle" is invalid:
Severity should be one of the following: 0 = off, 1 = warn, 2 = error (you passed 'true').

stylelint:
Error: Undefined rule "selector-no-ids"

>> Invalid Option: Invalid option value "always-single-lines" for rule "selector-list-comma-space-after"

I think we should follow their lead! It's definitely worth the extra code!

Warn about unrecognized options.
Error on invalid option values.

Environment

Brunch: 2.6.5 (both globally and locally)
Node: 5.9.1
NPM: 3.7.3
Operating system: Ubuntu 15.10

Great idea!

The new validation is looking great! Good job! :)
I’ve got three pieces of feedback.

A possible bug
Plugin config validation?
Even more error message awesomeness :)

A possible bug
I can’t get the unknown option warnings (with Levensthein suggestions) to work
though:
# Setup.
$ mkdir myproject && cd myproject
$ brunch -v
2.7.2

# Expected: Detect unknown option `baths`.
# Actual: No warnings.
$ echo 'module.exports = {files: {}, baths: {}}' >brunch-config.js
$ brunch b

Plugin config validation?
I understand that this might be difficult, but it would be awesome if we could validate plugin config as well :)

Perhaps we should recommend plugins to use skemata, and update the boiler plate, as well as all plugins in the brunch organization?

Perhaps plugins could somehow tell brunch what key name they use in config.plugins? Hell, I wouldn’t even mind if this:
plugins: {
  'uglify-js-brunch': {
     compress: {
       drop_console: true,
     },
  },
},

Even more error message awesomeness :)
The following might be considered out of scope for this issue, but there’s still room for more error message awesomness for newbies :). You can follow along in the terminal session below. I’ve added proposals as comments before some commands. Here is a summary of what the proposals are about:

Slight tweaks to the new skemata error messages.
Better handling of missing files.
Better handling of files with syntax errors.

# Setup.
$ mkdir myproject && cd myproject
$ brunch -v
2.7.2

# Great error message! :)
$ brunch b
25 Apr 06:02:15 - error: The directory does not seem to be a Brunch project. Create brunch-config.js or run brunch from the correct directory. Cannot find module '/home/lydell/myproject/brunch-config'

# Proposal:
#
# 1. Remove stack trace.
# 2. Suggest a minimal valid brunch-config.js:
#
#    module.exports = {
#      files: { ... }
#    }
$ touch brunch-config.js
$ brunch b
25 Apr 06:02:57 - error: Failed to load brunch config - brunch-config.js must have "files" property
  at /home/lydell/myproject/node_modules/brunch/lib/config.js:620:29

# Proposal: Same as above.
$ echo 'module.exports = {}' >brunch-config.js
~/myproject
$ brunch b
25 Apr 06:04:31 - error: Failed to load brunch config - brunch-config.js must have "files" property
  at /home/lydell/myproject/node_modules/brunch/lib/config.js:620:29

# Proposal: Same error as below (expected object, got null).
$ echo 'module.exports = {files: null}' >brunch-config.js
$ brunch b
25 Apr 06:05:03 - error: Failed to load brunch config - brunch-config.js must have "files" property
  at /home/lydell/myproject/node_modules/brunch/lib/config.js:620:29

# Proposal:
#
# 1. Remove stack trace.
# 2. Use `require('util').format`: `got: array ([])` instead of `got: array ()`.
$ echo 'module.exports = {files: []}' >brunch-config.js
$ brunch b
25 Apr 06:05:44 - error: config.files: expected: object, got: array ()
25 Apr 06:05:44 - error: Initialization error - config is not valid
  at v.object.fmt.errors.forEach.fmt.warnings.forEach (/home/lydell/myproject/node_modules/brunch/lib/config.js:168:11)

# Proposal:
#
# 1. Remove stack trace.
# 2. Change error message. Tell the user that brunch is not useful without
#    plugins, and that plugins must be listed in package.json. Possibly recommend
#    javascript-brunch and css-brunch.
$ echo 'module.exports = {files: {}}' >brunch-config.js
$ brunch b
25 Apr 06:15:35 - error: Initialization error - You probably need to execute `npm install` to install brunch plugins. Error: Cannot find module '/home/lydell/myproject/package.json'
  at /home/lydell/myproject/node_modules/brunch/lib/config.js:563:23
  at v.object.fmt.errors.forEach.Object.keys.forEach.environments.forEach.Object.keys.map.exports.install.exports.replaceConfigSlashes.Object.keys.forEach.types.map.type.map.types.forEach.types.forEach.types.forEach.Object.keys.forEach.exports.setConfigDefaults.Object.keys.forEach.normalized.paths.possibleConfigFiles.readComponents.then.Promise (/home/lydell/myproject/node_modules/brunch/lib/config.js:554:10)
  at v.object.fmt.errors.forEach.Object.keys.forEach.environments.forEach.Object.keys.map.exports.install.exports.replaceConfigSlashes.Object.keys.forEach.types.map.type.map.types.forEach.types.forEach.types.forEach.Object.keys.forEach.exports.setConfigDefaults.Object.keys.forEach.normalized.paths.possibleConfigFiles.readComponents.then.Promise.all.then (/home/lydell/myproject/node_modules/brunch/lib/config.js:586:5)

# Proposal:
#
# 1. Remove stack trace.
# 2. Change the error message. Tell the user that package.json has invalid
#    syntax, and nothing else.
$ touch package.json
25 Apr 06:20:23 - error: Initialization error - You probably need to execute `npm install` to install brunch plugins. SyntaxError: /home/lydell/myproject/package.json: Unexpected end of input
  at /home/lydell/myproject/node_modules/brunch/lib/config.js:563:23
  at v.object.fmt.errors.forEach.Object.keys.forEach.environments.forEach.Object.keys.map.exports.install.exports.replaceConfigSlashes.Object.keys.forEach.types.map.type.map.types.forEach.types.forEach.types.forEach.Object.keys.forEach.exports.setConfigDefaults.Object.keys.forEach.normalized.paths.possibleConfigFiles.readComponents.then.Promise (/home/lydell/myproject/node_modules/brunch/lib/config.js:554:10)
  at v.object.fmt.errors.forEach.Object.keys.forEach.environments.forEach.Object.keys.map.exports.install.exports.replaceConfigSlashes.Object.keys.forEach.types.map.type.map.types.forEach.types.forEach.types.forEach.Object.keys.forEach.exports.setConfigDefaults.Object.keys.forEach.normalized.paths.possibleConfigFiles.readComponents.then.Promise.all.then (/home/lydell/myproject/node_modules/brunch/lib/config.js:586:5)

# Proposal: Don’t be silent. Ideally: Detect that nothing happened and suggest why.
$ echo '{}' >package.json
$ brunch b
$ ls
brunch-config.js  node_modules  package.json

# Proposal: Remove stack trace.
$ echo 'module.exports = {' >brunch-config.js
$ brunch b
25 Apr 06:26:13 - error: Failed to load brunch config - Unexpected token )
  at exports.runInThisContext (vm.js:53:16)
  at Module._compile (module.js:387:25)
  at Object.Module._extensions..js (module.js:422:10)
  at Module.load (/home/lydell/myproject/node_modules/coffee-script/lib/coffee-script/register.js:45:36)
  at Function.Module._load (module.js:314:12)
  at Module.require (module.js:367:17)
  at require (internal/module.js:16:19)
  at Promise.then.config (/home/lydell/myproject/node_modules/brunch/lib/config.js:608:18)
  at v.object.fmt.errors.forEach.Object.keys.forEach.environments.forEach.Object.keys.map.exports.install.exports.replaceConfigSlashes.Object.keys.forEach.types.map.type.map.types.forEach.types.forEach.types.forEach.Object.keys.forEach.exports.setConfigDefaults.Object.keys.forEach.normalized.paths.possibleConfigFiles.readComponents.then.Promise.then.obj.catch (/home/lydell/myproject/node_modules/brunch/lib/config.js:600:10)
  at Object.v.object.fmt.errors.forEach.Object.keys.forEach.environments.forEach.Object.keys.map.exports.install.exports.replaceConfigSlashes.Object.keys.forEach.types.map.type.map.types.forEach.types.forEach.types.forEach.Object.keys.forEach.exports.setConfigDefaults.Object.keys.forEach.normalized.paths.possibleConfigFiles.readComponents.then.Promise.then.exports.loadConfig.tryToLoad.then.then.config.then.then.config.then [as loadConfig] (/home/lydell/myproject/node_modules/brunch/lib/config.js:649:10)
  at new BrunchWatcher (/home/lydell/myproject/node_modules/brunch/lib/watch.js:100:17)
  at Promise.all.then.checkDeps.then.out.error.filter.setDefaultJobsCount.constructor.application.loadConfig.then.then.cfg.then.initCompilation.initWatcher.chokidar.watch.on.on.absPath.on.compile.assetErrors.forEach.Promise.all.then.then.watch (/home/lydell/myproject/node_modules/brunch/lib/watch.js:360:10)
  at exports.new.start (/home/lydell/myproject/node_modules/brunch/lib/index.js:44:10)
  at Command.listener (/home/lydell/myproject/node_modules/commander/index.js:301:8)
  at emitTwo (events.js:100:13)
  at Command.emit (events.js:185:7)
  at Command.parseArgs (/home/lydell/myproject/node_modules/commander/index.js:615:12)
  at Command.parse (/home/lydell/myproject/node_modules/commander/index.js:458:21)
  at Object.keys.forEach.exports.run (/home/lydell/myproject/node_modules/brunch/lib/commands.js:89:11)
  at loadBrunch (/home/lydell/myproject/node_modules/brunch/bin/brunch:24:7)
  at /home/lydell/myproject/node_modules/brunch/bin/brunch:39:7
  at FSReqWrap.oncomplete (fs.js:82:15)

# Great error message! Proposal:
#
# 1. Remove stack trace.
# 2. Use `require('util').format`: `got: string ('css/font-awesome.css')`
#    instead of `got: string (css/font-awesome.css)`.
$ echo 'module.exports = {files: {}, npm: {styles: {"font-awesome": "css/font-awesome.css"}}}' >brunch-config.js
$ brunch b
25 Apr 06:34:17 - error: config.npm.styles.font-awesome: expected: array, got: string (css/font-awesome.css)
25 Apr 06:34:17 - error: Initialization error - config is not valid
  at v.object.fmt.errors.forEach.fmt.warnings.forEach (/home/lydell/myproject/node_modules/brunch/lib/config.js:168:11)

Regarding a possible bug, it was fixed already https://github.com/brunch/skemata/pull/1 — now waiting for @paulmillr to cut a skemata release.

As for plugin config validation, that is something that's definitely popped in my mind and that I've been looking for possibilities to implement. Actually, my initial iteration of the schema validation did include support of plugins declaring their own schemas:

For the time being though, we have decided to postpone this due to several factors:

skemata might not be very mature yet. Exposing an unstable API for plugins means we will have to support the current skemata API for a long time... and this is not, well, something we'd want. Better wait some time to see how skemata performs in brunch, find possible culprits and bugs and ways to use we didn't think of before... and then expose to plugins

support of default values for plugins, as well as production env overrides would have required changing the point where we load the plugins, and this change is also something we'd want to postpone

All in all, the original goal was to add config validation to the core, iterate upon it, and then when we think we're reached some maturity, allow plugins to declare their schemas.

As the message improvements go, I totally agree these do make sense 😉 Will work on that

@goshakkk I agree on everything you said. Go for it! :+1: :)

Btw, regarding plugin config: My idea was to leave it up to each plugin to do it, in whatever way they feel like. Such as `require('skemata'). But perhaps it's better to an API to plugins, as in your screen shot above.

@lydell the idea was that plugins shouldn't depend on skemata directly, instead, Brunch will explicitly pass it. A few upsides I can see is that if there's some bug in skemata, a new Brunch comes out with bumped skemata version and plugins work as expected.
Leaving the validation entirely to the plugins doesn't seem very cool from where I stand. The idea is that the all the config schemas (core, plugins') are merged into one, which ultimately means less false-negatives like ("you have a2, did you mean a1" — when there are both a1 and a2 keys handled by two different plugins) which will happen if there are separate schemas that are not aware of each other.
I understand the current version of skemata might be slightly limiting... which is why we are not exposing it to plugins at the moment. It'll get better with time and at some point we could allow developers to write their own validators, too, etc.

@paulmillr I think we can close this now.


Use object literal property value shorthand in es6

Instead of doing something like this inside /index.js:

const simplifyExpression = require('./lib/simplifyExpression');
const solveEquation = require('./lib/solveEquation');
const ChangeTypes = require('./lib/ChangeTypes');

module.exports = {
  simplifyExpression: simplifyExpression,
  solveEquation: solveEquation,
  ChangeTypes: ChangeTypes,
};

follow airbnb's style guide and use object literal property value shorthand in es6 so it becomes shorter and more readable.
const simplifyExpression = require('./lib/simplifyExpression');
const solveEquation = require('./lib/solveEquation');
const ChangeTypes = require('./lib/ChangeTypes');

module.exports = {
  simplifyExpression,
  solveEquation,
  ChangeTypes,
};

Woo thanks for making an issue for this ^_^
A great addition to the 'small' label (which is good, cause we're running low on them)

cool, this shorthand is also supported by eslint (which we use): http://eslint.org/docs/rules/object-shorthand
I'll add it to the linter error issue too ( #44 )

done! thanks @cspanda -- so speeedy 🐰🐇


How to create Excel file with autofilter?

Hi! I can't find a way to mark the first row as the autofilter row.
Does it mean it's not possible with this library?

Yes it is, although it hasn't been documented yet.
Have a look at these tests: https://github.com/openspout/openspout/pull/78/files#diff-c6264e46c5a27a867f62ef8f69fb66d44fc8762b1b994b93f17536aaff0b5e21

It works, thank you! :)


Test Issue created at Thu, 30 Dec 2021 02:21:29 GMT

Test issue body  Thu, 30 Dec 2021 02:21:29 GMT

Comment on issue at Thu, 30 Dec 2021 02:21:31 GMT