text:
Fix :bug:: Fixed styling for SVELTE events tutorial

Changed the div styling from "height: 100%" to "height:100vh" to allow responsiveness on the whole screen

BEFORE

AFTER
With the cursor in the same position in the 2 photos, in the first picture, the cursor is not detected outside the 100 "%" height of the div but in the second one, the div's height has been made the complete height of the viewport.

Thank you! 😄

authors: KingImoh mattcroat

repo: mattcroat/joy-of-code


text:
Desktop developer docs update

Summary
Changes to refresh the develop documentation for the Desktop App

Still a WIP, but hoping to get a bit of feedback ahead of time.

@BenLloydPearson @cwarnermm Requested re-reviews for content (and grammar :P)

source: gharchive/pull-request

license_type: permissive

license_source: github-api


text:
Mattermost 3.5

Hi,
Could you update your Docker images to use the new 3.5 release ?
Thx

Created a pull request for it, see https://github.com/mattermost/mattermost-docker/pull/65- @npcode, can you help with review?

Thank you.
I guess the same applies for the 2 others containers (db and web) ?

Please tag the 3.5.1 release for Docker hub to reflect it

@fculpo the docker hub image is updated to 3.5.1. The source repo is mattermost/mattermost-docker-preview.

I am using https://hub.docker.com/r/mattermost/mattermost-prod-app/ and https://hub.docker.com/r/mattermost/mattermost-prod-db/ and they don't have 3.5.1 atgs.

Ah, got it, thanks for pointing this out @fculpo. We are in the process of transitioning maintainership of the repos and then we will make sure the tags are updated for all the docker containers.

@compass
The tags on the docker hub repos are automatically generated, but some of them are still pointing to 3.4.1. Wondering if you'd be able to help take a look?

https://hub.docker.com/r/mattermost/mattermost-prod-web/tags/
https://hub.docker.com/r/mattermost/mattermost-prod-db/tags/
https://hub.docker.com/r/mattermost/mattermost-prod-app/tags/

@fculpo 3.5.1 is tagged. Do you need 3.5.0? I need to figure out which commit is for 3.5.0 otherwise here is the new tag: https://hub.docker.com/r/mattermost/mattermost-prod-app/tags/

3.5.1 is fine for me. Thank you

source: gharchive/issue

authors: esethna fculpo jasonblais xcompass

repo: mattermost/mattermost-docker

license_source: bigquery


text:
Upgrade fast-image, localize, vector-icons, video & dev dependencies

Summary
This PR upgrades fast-image, localize, vector-icons, video & dev dependencies
Affected areas:

Development environment (already tested)
Video playback
Vector Icons (check the icons for download / hamburger), the download icon is different as it was changed by the font being used.
Image attachments / Gallery (Image preview)
Timezone & Translations (translations not related to the actual strings but the fact that the app can recognize the language)

Building app in separate branch.

Successfully building:
https://circleci.com/gh/mattermost/mattermost-mobile/9545
https://circleci.com/gh/mattermost/mattermost-mobile/9544

authors: enahum mattermod

repo: mattermost/mattermost-mobile


text:
MM-46853 Automatically run Boards product from web app

As long as the BoardsProduct feature flag is enabled during development, this'll make it so that the web app runs Boards as a product instead of having to run that in a separate terminal during development.
A few things I've been considering though:

I originally used a separate feature flag in case this was buggy, but decided on just using the regular flag to avoid adding more environment variables
This doesn't do any of the prebuilding or anything that Boards might need for dependencies. If make prebuild was a bit smarter and only ran npm install when necessary (like make node_modules in the web app), then we could add it here, but I didn't want to slow down the web app by running that on Boards every time.
It's still up to the dev to keep both branches in sync, but I wouldn't imagine those getting out of sync will cause problems too often.

Ticket Link
https://mattermost.atlassian.net/browse/MM-46853
Release Note
NONE

/update-branch

repo: mattermost/mattermost-webapp


text:
[MM-50082] Work templates: copy + other tweaks

Summary

Apply new modal name + titles all over the board
Remove the "Work template" menu item from the App Menu and add it in the "Plus menu" with new copy + icon
Fix some UI placements
Add icons on the accordion of the preview page

Ticket Link
https://mattermost.atlassian.net/browse/MM-50082
https://mattermost.atlassian.net/browse/MM-47848
Related Pull Requests

Has server changes https://github.com/mattermost/mattermost-server/pull/22207

They are not really related but go well together
Screenshots

Release Note
NONE

E2E tests not automatically triggered, because PR has no approval yet. Please ask a developer to review and then try again to attach the QA label.

E2E tests not automatically triggered, because PR has no approval yet. Please ask a developer to review and then try again to attach the QA label.

authors: JulienTant mattermost-build


text:
MM-16702 - Add error handling for plugin loading

Summary

Added error handling for plugins scripts at the time they are loaded into the webApp to avoid 404 crash when it cannot find the bundle.
In the case the plugin bundle is not found, it will gracefully log a console error.
Ticket Link

Fixes MM-16702

Re-requesting review from @hmhealey given material changes.

Removed QA reviewer; not required before merge. Will be tested post-merge.

Adding an extra reviewer because of OOO for @hmhealey

Swapping out @hmhealey for @deanwhillier.

authors: lieut-data lindalumitchell marianunez


text:
[MM-17603] Added null check to label generator on suggestion list

Summary
This PR fixes a possible null on the current label for the suggestion list, causing a JS error. It stops the toLowerCase() call if the object is null.
Ticket Link
https://mattermost.atlassian.net/browse/MM-17603

Creating a new SpinWick test server using Mattermost Cloud.

Mattermost test server created! :tada:
Access here: https://mattermost-webapp-pr-3443.test.mattermost.cloud

Account Type
Username
Password

Admin
sysadmin
Sys@dmin123

User
user-1
User-1@123

Test server destroyed

@devinbinnie
Error trying doing the automated Cherry picking. Please do this manually
+++ Updating remotes...
Fetching upstream
Fetching origin
+++ Updating remotes done...
!!! 'upstream/release-5.15' not found. The second argument should be something like upstream/release-0.21.
    (In particular, it needs to be a valid, existing remote branch that I can 'git checkout'.)

authors: devinbinnie mattermod


text:
MM-20248 - Updating RHS expansion css

Summary
MM-20248 - Updating RHS expansion css
Ticket Link
https://mattermost.atlassian.net/browse/MM-20248
Screenshot

Creating a new SpinWick test server using Mattermost Cloud.

Mattermost test server created! :tada:
Access here: https://mattermost-webapp-pr-4280.test.mattermost.cloud

Account Type
Username
Password

Admin
sysadmin
Sys@dmin123

User
user-1
User-1@123

Test server destroyed

authors: asaadmahmood mattermod


text:
Translations update from Weblate

Translations update from Weblate for mattermost-languages-shipped/mattermost-webapp.
Current translation status:

Hello @weblate,
Thanks for your pull request! A Core Committer will review your pull request soon. For code contributions, you can learn more about the review process here.

authors: mattermod weblate


text:
Unhandled promise - TypeError: Cannot convert undefined or null to object in server

https://papertrailapp.com/searches/26323211?centered_on_id=905884183531003907
Mar 01 09:07:21 1c25bf0db4f4 unified: warn: Unable to stat compiler binary Error: ENOENT: no such file or directory, stat '/opt/compiler-explorer/gcc-4.1.2/bin/g++'
Mar 01 09:07:22 1c25bf0db4f4 unified: (node:57) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): TypeError: Cannot convert undefined or null to object
Mar 01 09:07:22 1c25bf0db4f4 unified: (node:57) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Not sure what triggered this; but...noting here for posterity.

#813 is a somewhat duplicate of this. Seems to be the same promise, just different executables

Seems fixed :) Or gone away...

authors: RabsRincon mattgodbolt

repo: mattgodbolt/compiler-explorer


text:
col, off, row class names... just idea with easy implementation.

I've just use you flex grid for one of my projects. The idea of the project was to implement some admin panel in already built sites. Some of them use bootstrap and the class names of the grid (.col-- and .row ) are the same as in bootstrap.
I've just set three more variables in sass:
    $fg-row-class-name: 'row' !default;
    $fg-col-class-name: 'col' !default;
    $fg-off-class-name: 'offset' !default;

and use them in that way:
/**
 * Row wrapper class, flex box parent.
 */

.#{$fg-row-class-name} {
    box-sizing: border-box;
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    @include spacing( ( -$fg-gutter), margin, horizontal);
}

%#{$fg-col-class-name} {
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
    flex-grow: 0;
    flex-shrink: 0;
    @include spacing( ( $fg-gutter), padding, horizontal);
}

%#{$fg-col-class-name}-flex {
    @extend %#{$fg-col-class-name};
    flex-grow: 1;
    flex-basis: 0;
    max-width: 100%;
}

/**
 * Generate a set of grid column classes using a namespace
 *
 * .col-[namespace] for intelligent column division
 * .col-[namespace]-[number] for a column that covers a specific number of columns (e.g. 1-12 by default)
 * .off-[namespace]-[number] for pushing a col a specific number of columns (e.g. 1-11 by default)
 */

@mixin grid-base( $namespace) {
    .#{$fg-col-class-name}-#{$namespace} {
        @extend %#{$fg-col-class-name}-flex;
    }
    @for $i from 1 through $fg-columns {
        .#{$fg-col-class-name}-#{$namespace}-#{$i} {
            @extend %#{$fg-col-class-name};
        }
    }
}

@mixin grid-sizes( $namespace) {
    // Run the loop for as many columns as speficied
    @for $i from 1 through $fg-columns {
        .#{$fg-col-class-name}-#{$namespace}-#{$i} {
            flex-basis: get-col-percent($i);
            max-width: get-col-percent($i);
        }
    }
    @for $i from 1 through $fg-columns {
        // Don't include the .off class for the last column
        @if ( $i !=$fg-columns) {
            .#{$fg-off-class-name}-#{$namespace}-#{$i} {
                margin-left: get-col-percent($i);
            }
        }
    }
}

/**
 * Build the grid in two steps, to help minimize file size
 * Step 1, for each namespace, create the grid-base
 * Step 2, for each namespace, wrap the col width/offset measurements in their breakpoint media query
 */

@each $val in $fg-breakpoints {
    $namespace: nth($val, 1);
    @include grid-base( $namespace);
}

@each $val in $fg-breakpoints {
    @if length($val)==1 {
        $namespace: nth($val, 1);
        @include grid-sizes( $namespace);
    }
    @else {
        $namespace: nth($val, 1);
        $size: nth($val, 2);
        @media only screen and (min-width: #{$size}) {
            @include grid-sizes( $namespace);
        }
    }
}

Now I can change the names of the grid classes without name collisions.

I like this idea, with the Cambrian explosion of css frameworks and libraries out there I think this is a responsible and good practice. I'll think over implementation details and cut a release. Thanks @lotestudio!

:+1: You are welcome! And I'll thank you too! Love the simplicity in your work!

authors: lotestudio matthewsimo

repo: matthewsimo/scss-flex-grid

license: mit


text:
Create a real UMD script

Browserify package was installed
a real UMD script was created

As this is basically just a dependency change, could you explain to me the benefit of this compared to the currently implemented UMD package?

The current UMD package cannot be loaded in the browser.
There is an open issue in the original repository that addresses this issue here:
https://github.com/se-panfilov/jsvat/issues/105
I also changed the build:umd script in the package.json file.

The current UMD package cannot be loaded in the browser.
There is an open issue in the original repository that addresses this issue here: se-panfilov#105
I also changed the build:umd script in the package.json file.

Thanks for clarifying.
Could you provide a simple index.html with a simple example in, such that this can be tested for this PR and in the future aswell please ?

Test page added.

I've added your changes but your yarn.lock file still had remainders of your attempt from PR #11
I've used PR #13 to merge this in, and gave you credit.
I've also linked back to this PR.
Thank you for your contribution! 🚀

@ZsharE Forgot to publish a new version on npm, which I have done so just now

authors: ZsharE mattickx

repo: mattickx/jsvat-next

license: MIT


text:
4.0.0 release missing

The last release is 3.0.0 from July 2018
https://github.com/mattjohnsonpint/SimpleImpersonation/releases

Fixed.  Thanks.

authors: TimSirmovics mattjohnsonpint

repo: mattjohnsonpint/SimpleImpersonation


text:
Supporting changing of current day in week view and events array is e…

Supporting changing of current day in week view and events array is empty or not set

Hi thank for the PR! But why not just initialise the events array to an empty array?

On 11 Nov 2015, at 22:57, nedien notifications@github.com wrote:
Supporting changing of current day in week view and events array is empty or not set
You can view, comment on, or merge this pull request online at:
https://github.com/mattlewis92/angular-bootstrap-calendar/pull/205
Commit Summary
Supporting changing of current day in week view and events array is empty or not set
File Changes
M dist/js/angular-bootstrap-calendar-tpls.js (4)
M src/directives/mwlCalendar.js (10)
M src/services/calendarHelper.js (4)
Patch Links:
https://github.com/mattlewis92/angular-bootstrap-calendar/pull/205.patch
https://github.com/mattlewis92/angular-bootstrap-calendar/pull/205.diff
—
Reply to this email directly or view it on GitHub.

It looks like there is already code that handles the events array not being initialised here, I double checked it locally and it seems to work fine. LMK if you're still having problems.


text:
Issue 787: enable SQLITE_ENABLE_UPDATE_DELETE_LIMIT

Since rebuilding the amalgamation from scratch requires the whole ./configure && make thingy, running the upgrade script in go sadly won't do, so I rewrote it in bash.
~Oh, just though probably adding a unit test in the go package to check the DELETE with LIMIT works would be good.~ Done.
Should resolve #787.

Coverage remained the same at 51.497% when pulling a77e3c7c84734810435c7c97c9a0c9640732dc08 on itizir:787/delete_limit into 67986a7832dcbda29de5c1341b3dec6c6d97511a on mattn:master.

Dammit: libsqlite3 in osx doesn't support that feature, so the test fails in that environment.

I wonder the changes for sqlite-binding.c will be updated & reverted with go run upgrade/upgrade.go

Oh, is upgrade.go automatically run somewhere? Sorry, I'm not sure I understood what you meant there.
In this PR I suggest replacing the golang upgrade program with a bash script. It does basically the same as upgrade.go (only difference is the newline at the end of sqlite3ext.h: thought I'd keep that consistent...).
But it allows building the amalgamation with custom options, in particular SQLITE_ENABLE_UPDATE_DELETE_LIMIT. I've kept the commits with the switch to bash and with the addition of that flag separate: you should be able to check that without that flag you do get the same bindings as before.
I've now noticed rewriting the upgrade tool had indeed been suggested before: https://github.com/mattn/go-sqlite3/pull/500#issuecomment-349505086
If you don't feel comfortable merging in PRs with changes to the bindings directly, I could also remove this part of the change and let you run the updated upgrade script yourself afterwards. Up to you!

Hi again! Any thoughts about the change, then? :)

UP

I don't want to update sqlite3-binding.c directly. So if you want to add this, please update upgrade/upgrad.go to enable you want.

Did I understand this right? You're happy with accepting my change to the upgrade script, but want to run it and commit the bindings changes yourself?
I've removed the changes to sqlite3-binding.c and sqlite3ext.h and added a t.Skip() to the 'delete with limit' test I've added.
Let me know if it's OK now! :)

Thanks. But please keep to write in Go since I want to run this script on Windows too.

I don't think that's possible, sadly. At least I couldn't think of a way to do so.

All right! Here's my attempt at going back to go. I ended up rewriting more of the original upgrade.go than I first thought I would; I hope it's ok.
It does run on Windows as well, provided the right tools are available (nmake + tcl interpreter).

Hey @mattn! Are you still interested in this change, or should I just close the PR?

It's been a while! Any chance you could have another look? :)
Also, maybe https://github.com/mattn/go-sqlite3/pull/828 should go in first: it's probably easier if I have to fix the rebase rather than the other way around...

Codecov Report

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

@@            Coverage Diff            @@
##             master     #802   +/-   ##
=========================================
  Coverage          ?   49.15%
=========================================
  Files             ?       12
  Lines             ?     1603
  Branches          ?        0
=========================================
  Hits              ?      788
  Misses            ?      679
  Partials          ?      136

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 aa77c03...69ffa53. Read the comment docs.

It's been a while! Any chance you could have another look? :)
Also, maybe #828 should go in first: it's probably easier if I have to fix the rebase rather than the other way around...

...anyway, so I did rebase on top of #828, assuming you might want that change indeed.
But then frustratingly sqlite decided to now give sha3 instead of sha1, so for a hash check I had to bring non-stdlib-packages back in (and committing the go.sum seems to break non-linux go 1.11 builds...). Let me know what you want to do about that...

OK, I see you took a different direction. Updated this PR accordingly. Could you maybe try it out again at some point?

I tried to run new upgrade.go but nothing changed.

I tried to run new upgrade.go but nothing changed.

🤔 Very strange. You mean it ran with no errors, but the bindings didn't get edited at all??
As comparison, here's the output when I run it:
$  CGO_ENABLED=0 go run -tags=upgrade ./upgrade
Go-SQLite3 Upgrade Tool
Downloading https://www.sqlite.org/2020/sqlite-src-3330000.zip
Download successful and verified hash 2f705bdf760664ce605768af7c2b6b082b99fbb7a3446a3d296a513df15f22a8
Extracted sqlite source to sqlite-src-3330000/
Starting to generate amalgamation with CFLAGS: -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT=1
Ran configure successfully
Ran make successfully
SQLite3 amalgamation built
Merging: ext/userauth/userauth.c into sqlite3-binding.c
Patched: sqlite3.c -> sqlite3-binding.c
Merging: ext/userauth/sqlite3userauth.h into sqlite3-binding.h
Patched: sqlite3.h -> sqlite3-binding.h
Patched: sqlite3ext.h -> sqlite3ext.h
Done patching amalgamation
Cleaning up source: deleting sqlite-src-3330000/

How do you deal with the ignore tag you introduced in https://github.com/mattn/go-sqlite3/pull/851 by the way? I didn't find any other way than deleting it from the upgrade files to be able to run the tool...

Now I exported upgrade package to https://github.com/mattn/go-sqlite3-upgrade

I run go-sqlite3-upgrade but nothing changes.

Now I exported upgrade package to https://github.com/mattn/go-sqlite3-upgrade
I run go-sqlite3-upgrade but nothing changes.

Oh I see. Well I don't see a branch or something with my changes in the new repository. Did you just copy-paste the changes from my PR locally into your /go-sqlite3-upgrade?
Will you be deprecating the /upgrade folder from this repo entirely? Should I close this PR and make one against https://github.com/mattn/go-sqlite3-upgrade instead?

go-sqlite3-upgrade uses the code contained in this pull-request change set. I want to know what is updated and what is needed by this pull-request. Thanks.

I'm sorry, I'm still confused. :s
The code I see in go-sqlite3-upgrade is the old one, not the one from this PR. That's why I was asking how you were running things.

The code I see in go-sqlite3-upgrade is the old one, not the one from this PR. That's why I was asking how you were running things.

Ooops. Sorry. Could you please send the changes as same as this pull-request?

Ooops. Sorry. Could you please send the changes as same as this pull-request?

Did I put the changes in the right place? 🙂
https://github.com/mattn/go-sqlite3-upgrade/pull/1

Subscribing; anything I can do to help this along?

Good question... I can't answer it though! 😄
Well, maybe you could also double-check the change for sanity, give feedback if you have any; otherwise it's really up to mattn to find time to review and accept/reject the PR.

Subscribing; anything I can do to help this along?

Good question... I can't answer it though! 😄
Well, maybe you could also double-check the change for sanity, give feedback if you have any; otherwise it's really up to mattn to find time to review and accept/reject the PR.

Pinging again: is this ever going to be of interest, or should I just close and scrap the PR?

@mattn A good amount of effort and discussion has been put into this PR -- would you be able to take a few minutes to review or approve it? (I don't have any expertise here, but it does seem to be thorough and the code looks pretty clean.)

Hi @rittneje! Sorry to ping you, but I thought I'd try to get the ball rolling again here, and you seem to be more actively managing the package now.
Any thoughts on this? Would there still be interest in supporting this, or should I just shelve the change and continue maintaining a private fork indefinitely?

authors: codecov-commenter coveralls itizir mattn mholt vzool


text:
Add some tracking of user info

I need to add some way to track use of the website.  The simplest way could be too just spend too an ascii text file whether the user's MCMC completed, or I could add to a mysql database.

I have added saving of some user info (not their email address) into a mysql database. This seems to work now.
More info could be added in the future if required.

repo: mattpitkin/theonlinemcmc


text:
Restructure pairing.py function

Description
In order to accommodate the _check_validity function generate_indirect_connectivity is moved into a private function.  new_generate_indirect is added to pairing.py to calculate the indirect connectivity matrix until the previous matrix equals the current matrix.
NOT READY TO MERGE

Okay after undoing most of my screwups the overall changes are as follows:

generate_indirect_connectivity is turned into an internal function _generate_indirect_connectivity
The function new_generate_indirect calls _generate_indirect_connectivity and will keep calculating the indirect connectivity matrix until _check_validity becomes True

Going to write tests for this and then should be okay to merge.

Just added a description for the new function, and added two lines between each function per PEP8.  Anything else before merging?

One of the appveyor tests failed, I believe for the same reason we couldn't figure out a few days ago.

Thanks!

repo: mattwthompson/pairing


text:
Add preprocessor output to hash computation

This PR adjusts the hash computation such that it include the output of the Clang preprocessor instead of the source file modification file (the latter not being sensitive to changes in included headers).

Thanks for the PR

authors: matus-chochlik nicocvn

repo: matus-chochlik/ctcache


text:
Add type hints

Hi,
since I use mypy eralchemy2 in my projects, it would be great if eralchemy2 could add type hints. I'm happy to give a PR a try.

Hi Kasium,
sorry I did not see the notification on this.
I'd be happy to see a pull request for this :)

No problem. Let me give it a try

@maurerle before I change a lot of code, what do you think about adding black and isort to the code to format it properly?

Sure, go ahead.
I don't have strong opinions on code formatting as long as it is consistent :+1:
You can then add black and isort to a
[dev] extras_requires in the setup.py?
That way, one can install development tools using pip install -e .[dev].

[ ] add all types
[ ] add py.typed file
[ ] add mypy, isort and black to CI

authors: kasium maurerle


text:
🛑 VQ PROD MX is down

In 6a47e8d, VQ PROD MX (http://demomx.sidesys.com.mx/virtualqueue/index.html) was down:

HTTP code: 0
Response time: 0 ms

Resolved: VQ PROD MX is back up in f20f23e.

repo: mauribesson/upptime


text:
chore(main): release 0.2.0

:robot: I have created a release beep boop
0.2.0 (2024-01-01)
Features

Add support to UI5 v2 (#10) (02c6bf8)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/mauriciolauffer/vitest-environment-ui5/releases/tag/v0.2.0 :sunflower:

:robot: Release is at https://github.com/mauriciolauffer/vitest-environment-ui5/releases/tag/v0.2.0 :sunflower:


text:
Problems in Ruby-style when key is one-char length

This does not work for me (using current master):
<label>person.ruby[field2][foo]<input type="text" name="person.ruby[field2][f]" value="baz" /></label>

Note that I use "f" instead of "foo". I get "Uncaught TypeError: Object # has no method 'push'"

I am hitting this one as well. Example can be seen here: http://jsfiddle.net/ZfxNV/

authors: mikeymckay tokland


text:
Redirect element-list

Currently, only latest/element-list redirects to X.Y.Z/element-list, while X/element-list and X.Y/element-list both 403.
I fell for this trap and it lead to innocent failures.
Supporting this would allow the URL to match pessimistic versioning (e.g., dependency with <version>[24.0,25.0)</version>).
It’s also inconsistent with how everything else redirects (e.g., docs of classes, the index).

hello, do you have a sample library for me to check?

I don’t have a simple library, so I linked JetBrains Annotations as the example above.
Here’re the links again in plain:

Redirects to https://javadoc.io/doc/org.jetbrains/annotations/24.1.0/element-list

https://javadoc.io/doc/org.jetbrains/annotations/latest/element-list

Currently 403

https://javadoc.io/doc/org.jetbrains/annotations/24/element-list
https://javadoc.io/doc/org.jetbrains/annotations/24.1/element-list

There isn't a version called 24. 24.0.0 is valid version. so the following link will work. Am I missing something?
https://javadoc.io/doc/org.jetbrains/annotations/24.0.0/element-list

https://javadoc.io/doc/org.jetbrains/annotations/24/org/jetbrains/annotations/NotNull.html
redirects to
https://javadoc.io/doc/org.jetbrains/annotations/24.1.0/org/jetbrains/annotations/NotNull.html
and https://javadoc.io/doc/org.jetbrains/annotations/24/index-all.html
redirects to https://javadoc.io/doc/org.jetbrains/annotations/24.1.0/index-all.html
These mean 24 is a valid major version and its latest version is 24.1.0.

Am I missing something?

The point of using the pessimistic versioning of 24 over the pinned 24.1.0 is that it will automatically change its redirect to 24.1.1, 24.2.0 or etc when they’re released.

good point. I will try to support this redirection


text:
Add option for hiding pagination for one page

Add option for hiding pagination for one page. For example, sales order lines are shown in one page, and no need for pagination.
Solution: allow rowsPerPage to be nullable ( int? ). If null, hide the pagination.

You can use hidePaginator and rebuild the widget


text:
Remove highlight on row hover

I didn't see the option to remove the highlight when hovering over a row :

does this feature exist? or is there a way around this?

Hi @cedricDevWP, @nosmirck. You want to disable row color change when user hovers over a row? E.g. in the below screenshot the first row is grey cause there's a mouse pointer over it (not visible in the picture):

Do I get your question right?

@maxim-saplin yes, exactly. Specially because, at least in my case, we don't have any type of interaction with the table (no selection, tap, long tap, etc)
In my case, it's used to present the user a table that then they can print.
By Material Design, only interactive elements should have an inkwell, disabled buttons are usually grayed out to show the user that you can't interact with them, surfaces with inkwell are meant to be interactive. When we have the table with rows showing interactivity with the cursor but don't do anything that breaks the material design principles.

I see. Yet for me that is more of a feature rather than a bug. A reasonable exception from 'highlight interactive elements' rule - when going through wide tables highlighting a single row makes readability easier. Though it makes sense to have a param to disable that behaviour. I'd still keep the default behaviour with row being highlighted on hover.

authors: cedricDevWP maxim-saplin nosmirck


text:
Lock, button and contact accessory

Hi.
I've managed to create an accessory that combine 3 examples (lock, and contact sensor). I was able to compile, flash and pair it with Homekit.
However after a power cycle it shows "No Response". And, of course, the accessories doesn't work.
Can you help me to figure out my mistake?
thanks in advance
#include <stdio.h>
#include <espressif/esp_wifi.h>
#include <espressif/esp_sta.h>
#include <espressif/esp_common.h>
#include <esp/uart.h>
#include <esp8266.h>
#include <FreeRTOS.h>
#include <task.h>
#include <etstimer.h>
#include <esplibs/libmain.h>

#include <homekit/homekit.h>
#include <homekit/characteristics.h>
#include <wifi_config.h>

#include "contact_sensor.h"
#include "button.h"

// The GPIO pin that is connected to a relay
const int relay_gpio = 12;
// The GPIO pin that is connected to a LED
// const int led_gpio = 13;
const int led_gpio = 2;
// The GPIO pin that is connected to a button
// const int button_gpio = 0;

#define BUTTON_PIN 0
#ifndef BUTTON_PIN
#error BUTTON_PIN is not specified
#endif

#define REED_PIN 5
#ifndef REED_PIN
#error REED_PIN is not specified
#endif

// Timeout in seconds to open lock for
const int unlock_period = 5;  // 5 seconds
// Which signal to send to relay to open the lock (0 or 1)
const int relay_open_signal = 1;

void lock_lock();
void lock_unlock();

void button_identify(homekit_value_t _value) {
    printf("Button identify\n");
}

void door_identify(homekit_value_t _value) {
    printf("Door identifying\n");
}

void relay_write(int value) {
    gpio_write(relay_gpio, value ? 1 : 0);
}

void led_write(bool on) {
    gpio_write(led_gpio, on ? 0 : 1);
}

void reset_configuration_task() {
    //Flash the LED first before we start the reset
    for (int i=0; i<3; i++) {
        led_write(true);
        vTaskDelay(100 / portTICK_PERIOD_MS);
        led_write(false);
        vTaskDelay(100 / portTICK_PERIOD_MS);
    }

    printf("Resetting Wifi Config\n");

    wifi_config_reset();

    vTaskDelay(1000 / portTICK_PERIOD_MS);

    printf("Resetting HomeKit Config\n");

    homekit_server_reset();

    vTaskDelay(1000 / portTICK_PERIOD_MS);

    printf("Restarting\n");

    sdk_system_restart();

    vTaskDelete(NULL);
}

void reset_configuration() {
    printf("Resetting configuration\n");
    xTaskCreate(reset_configuration_task, "Reset configuration", 256, NULL, 2, NULL);
}

void gpio_init() {
    gpio_enable(led_gpio, GPIO_OUTPUT);
    led_write(false);

    gpio_enable(relay_gpio, GPIO_OUTPUT);
    relay_write(!relay_open_signal);
}

homekit_characteristic_t button_event = HOMEKIT_CHARACTERISTIC_(PROGRAMMABLE_SWITCH_EVENT, 0);

void button_callback(button_event_t event, void* context) {
    switch (event) {
        case button_event_single_press:
            printf("single press\n");
            homekit_characteristic_notify(&button_event, HOMEKIT_UINT8(0));
            break;
        case button_event_double_press:
            printf("double press\n");
            homekit_characteristic_notify(&button_event, HOMEKIT_UINT8(1));
            break;
        case button_event_long_press:
            printf("long press\n");
            homekit_characteristic_notify(&button_event, HOMEKIT_UINT8(2));
            break;
        default:
            printf("unknown button event: %d\n", event);
    }
}

void lock_identify_task(void *_args) {
    // We identify the Sonoff by Flashing it's LED.
    for (int i=0; i<3; i++) {
        for (int j=0; j<2; j++) {
            led_write(true);
            vTaskDelay(100 / portTICK_PERIOD_MS);
            led_write(false);
            vTaskDelay(100 / portTICK_PERIOD_MS);
        }

        vTaskDelay(250 / portTICK_PERIOD_MS);
    }

    led_write(false);

    vTaskDelete(NULL);
}

void lock_identify(homekit_value_t _value) {
    printf("Lock identify\n");
    xTaskCreate(lock_identify_task, "Lock identify", 128, NULL, 2, NULL);
}

typedef enum {
    lock_state_unsecured = 0,
    lock_state_secured = 1,
    lock_state_jammed = 2,
    lock_state_unknown = 3,
} lock_state_t;

homekit_characteristic_t name = HOMEKIT_CHARACTERISTIC_(NAME, "Lock");

homekit_characteristic_t lock_current_state = HOMEKIT_CHARACTERISTIC_(
    LOCK_CURRENT_STATE,
    lock_state_unknown,
);

void lock_target_state_setter(homekit_value_t value);

homekit_characteristic_t lock_target_state = HOMEKIT_CHARACTERISTIC_(
    LOCK_TARGET_STATE,
    lock_state_secured,
    .setter=lock_target_state_setter,
);

void lock_target_state_setter(homekit_value_t value) {
    lock_target_state.value = value;

    if (value.int_value == 0) {
        lock_unlock();
    } else {
        lock_lock();
    }
}

void lock_control_point(homekit_value_t value) {
    // Nothing to do here
}

ETSTimer lock_timer;

void lock_lock() {
    sdk_os_timer_disarm(&lock_timer);

    relay_write(!relay_open_signal);
    led_write(false);

    if (lock_current_state.value.int_value != lock_state_secured) {
        lock_current_state.value = HOMEKIT_UINT8(lock_state_secured);
        homekit_characteristic_notify(&lock_current_state, lock_current_state.value);
    }
}

void lock_timeout() {
    if (lock_target_state.value.int_value != lock_state_secured) {
        lock_target_state.value = HOMEKIT_UINT8(lock_state_secured);
        homekit_characteristic_notify(&lock_target_state, lock_target_state.value);
    }

    lock_lock();
}

void lock_init() {
    lock_current_state.value = HOMEKIT_UINT8(lock_state_secured);
    homekit_characteristic_notify(&lock_current_state, lock_current_state.value);

    sdk_os_timer_disarm(&lock_timer);
    sdk_os_timer_setfn(&lock_timer, lock_timeout, NULL);
}

void lock_unlock() {
    relay_write(relay_open_signal);
    led_write(true);

    lock_current_state.value = HOMEKIT_UINT8(lock_state_unsecured);
    homekit_characteristic_notify(&lock_current_state, lock_current_state.value);

}

homekit_value_t door_state_getter() {
    printf("Door state was requested (%s).\n", contact_sensor_state_get(REED_PIN) == CONTACT_OPEN ? "open" : "closed");
    return HOMEKIT_UINT8(contact_sensor_state_get(REED_PIN) == CONTACT_OPEN ? 1 : 0);
}

/**
 * The sensor characteristic as global variable.
 **/
homekit_characteristic_t door_open_characteristic = HOMEKIT_CHARACTERISTIC_(CONTACT_SENSOR_STATE, 0,
    .getter=door_state_getter,
    .setter=NULL,
    NULL
);

/**
 * Called (indirectly) from the interrupt handler to notify the client of a state change.
 **/
void contact_sensor_callback(uint8_t gpio, contact_sensor_state_t state) {
    switch (state) {
        case CONTACT_OPEN:
        case CONTACT_CLOSED:
            printf("Pushing contact sensor state '%s'.\n", state == CONTACT_OPEN ? "open" : "closed");
            homekit_characteristic_notify(&door_open_characteristic, door_state_getter());
            break;
        default:
            printf("Unknown contact sensor event: %d\n", state);
    }
}

homekit_accessory_t *accessories[] = {
    HOMEKIT_ACCESSORY(.id=1, .category=homekit_accessory_category_door_lock, .services=(homekit_service_t*[]){
        HOMEKIT_SERVICE(ACCESSORY_INFORMATION, .characteristics=(homekit_characteristic_t*[]){
            &name,
            HOMEKIT_CHARACTERISTIC(MANUFACTURER, "HaPK"),
            HOMEKIT_CHARACTERISTIC(SERIAL_NUMBER, "1"),
            HOMEKIT_CHARACTERISTIC(MODEL, "Basic"),
            HOMEKIT_CHARACTERISTIC(FIRMWARE_REVISION, "0.1"),
            HOMEKIT_CHARACTERISTIC(IDENTIFY, lock_identify),
            NULL
        }),
        HOMEKIT_SERVICE(LOCK_MECHANISM, .primary=true, .characteristics=(homekit_characteristic_t*[]){
            HOMEKIT_CHARACTERISTIC(NAME, "Lock"),
            &lock_current_state,
            &lock_target_state,
            NULL
        }),
        HOMEKIT_SERVICE(LOCK_MANAGEMENT, .characteristics=(homekit_characteristic_t*[]){
            HOMEKIT_CHARACTERISTIC(LOCK_CONTROL_POINT,
                .setter=lock_control_point
            ),
            HOMEKIT_CHARACTERISTIC(VERSION, "1"),
            NULL
        }),
        HOMEKIT_SERVICE(
            STATELESS_PROGRAMMABLE_SWITCH,
            .primary=false,
            .characteristics=(homekit_characteristic_t*[]) {
                HOMEKIT_CHARACTERISTIC(NAME, "Botão"),
                &button_event,
                NULL
            },
        ),
        HOMEKIT_SERVICE(
            CONTACT_SENSOR,
            .primary=false,
            .characteristics=(homekit_characteristic_t*[]) {
              HOMEKIT_CHARACTERISTIC(NAME, "Kontakt"),
              &door_open_characteristic,
              NULL
          },
      ),
      NULL
   }),
   NULL
};

homekit_server_config_t config = {
    .accessories = accessories,
    .password = "111-11-111"
};

void on_wifi_ready() {
    homekit_server_init(&config);

}

void create_accessory_name() {
    uint8_t macaddr[6];
    sdk_wifi_get_macaddr(STATION_IF, macaddr);

    int name_len = snprintf(NULL, 0, "Lock-%02X%02X%02X",
                            macaddr[3], macaddr[4], macaddr[5]);
    char *name_value = malloc(name_len+1);
    snprintf(name_value, name_len+1, "Lock-%02X%02X%02X",
             macaddr[3], macaddr[4], macaddr[5]);

    name.value = HOMEKIT_STRING(name_value);
}

void user_init(void) {
    uart_set_baud(0, 115200);

    create_accessory_name();

    wifi_config_init("lockbuttoncontact", NULL, on_wifi_ready);

    printf("Using Sensor at GPIO%d.\n", REED_PIN);
        if (contact_sensor_create(REED_PIN, contact_sensor_callback)) {
            printf("Failed to initialize door\n");
        }

    gpio_init();
    lock_init();

    button_config_t config = BUTTON_CONFIG(
        button_active_low,
        .long_press_time = 5000,
        .max_repeat_presses = 3,
    );

    int r = button_create(BUTTON_PIN, config, button_callback, NULL);
    if (r) {
        printf("Failed to initialize button\n");
    }
    homekit_characteristic_notify(&door_open_characteristic, door_state_getter());
}

dhcp client start...
ip:192.168.100.58,mask:255.255.255.0,gw:192.168.100.1
>>> wifi_config: Connected to WiFi network
station: 7c:a1:ae:7f:25:2b leave, AID = 1
rm match
bcn 0
del if1
mode : sta(cc:50:e3:3d:04:3a)
Function called without core lock
>>> wifi_config: Stopping DNS server
>>> HomeKit: Starting server
>>> HomeKit: Formatting HomeKit storage at 0x7a000
>>> HomeKit: Generated new accessory ID: CF:06:C4:C2:50:62
>>> HomeKit: Generated new accessory key
>>> HomeKit: Configuring mDNS
mDNS announcement: Name=Lock-3D043Amd=Basicpv=1.0id=CF:06:C4:C2:50:62c#=1s#=1ff=0sf=1ci=6 Port=5556 TTL=4500
>>> wifi_config: Stopping HTTP server
>>> HomeKit: Got new client connection: 4 from 192.168.100.5
>>> HomeKit: [Client 4] Pair Setup Step 1/3
>>> HomeKit: [Client 4] Pair Setup Step 2/3
>>> HomeKit: [Client 4] Pair Setup Step 3/3
>>> HomeKit: Added pairing with FF8F5239-0D1E-401F-9801-D108619DFA94
>>> HomeKit: Configuring mDNS
mDNS announcement: Name=Lock-3D043Amd=Basicpv=1.0id=CF:06:C4:C2:50:62c#=1s#=1ff=0sf=0ci=6 Port=5556 TTL=4500
>>> HomeKit: [Client 4] Successfully paired
>>> HomeKit: [Client 4] Closing client connection
>>> HomeKit: Got new client connection: 4 from 192.168.100.5
>>> HomeKit: [Client 4] Pair Verify Step 1/2
>>> HomeKit: [Client 4] Pair Verify Step 2/2
>>> HomeKit: [Client 4] Found pairing with FF8F5239-0D1E-401F-9801-D108619DFA94
>>> HomeKit: [Client 4] Verification successful, secure session established
>>> HomeKit: [Client 4] Get Accessories
Door state was requested (open).
>>> HomeKit: [Client 4] Update Characteristics
>>> HomeKit: [Client 4] Update Characteristics
>>> HomeKit: [Client 4] Add Pairing
>>> HomeKit: Added pairing with EAACB744-8CB3-4EC6-9DEC-E93F2C4A737B
>>> HomeKit: [Client 4] Get Characteristics
Door state was requested (open).
>>> HomeKit: [Client 4] Update Characteristics
Lock identify
>>> HomeKit: Got new client connection: 5 from 192.168.100.27
>>> HomeKit: [Client 5] Pair Verify Step 1/2
>>> HomeKit: Got new client connection: 6 from 192.168.100.7
>>> HomeKit: [Client 6] Pair Verify Step 1/2
>>> HomeKit: [Client 5] Pair Verify Step 2/2
>>> HomeKit: [Client 5] Found pairing with FF8F5239-0D1E-401F-9801-D108619DFA94
>>> HomeKit: [Client 5] Verification successful, secure session established
>>> HomeKit: [Client 4] Get Characteristics
Door state was requested (open).
>>> HomeKit: [Client 6] Pair Verify Step 2/2
>>> HomeKit: [Client 6] Found pairing with FF8F5239-0D1E-401F-9801-D108619DFA94
>>> HomeKit: [Client 6] Verification successful, secure session established
>>> HomeKit: [Client 5] Get Accessories
Door state was requested (open).
>>> HomeKit: [Client 6] Get Accessories
Door state was requested (open).
>>> HomeKit: [Client 6] Update Characteristics
>>> HomeKit: [Client 6] Update Characteristics
>>> HomeKit: [Client 5] Update Characteristics
>>> HomeKit: [Client 4] Update Characteristics
>>> HomeKit: [Client 4] Get Characteristics
Door state was requested (open).
>>> HomeKit: [Client 5] Update Characteristics
>>> HomeKit: [Client 5] Update Characteristics
>>> HomeKit: [Client 6] Get Characteristics
Door state was requested (open).
>>> HomeKit: [Client 5] Update Characteristics
>>> HomeKit: [Client 4] Get Characteristics
Door state was requested (open).
>>> HomeKit: [Client 5] Update Characteristics
>>> HomeKit: [Client 4] Update Characteristics
>>> HomeKit: [Client 4] Get Characteristics
Door state was requested (open).
>>> HomeKit: [Client 4] Update Characteristics
>>> HomeKit: [Client 4] Get Characteristics
Door state was requested (open).
>>> HomeKit: [Client 4] Update Characteristics
>>> HomeKit: [Client 5] Update Characteristics
>>> HomeKit: [Client 4] Get Characteristics
Door state was requested (open).
>>> HomeKit: [Client 4] Update Characteristics
>>> HomeKit: [Client 4] Get Characteristics
Door state was requested (open).
>>> HomeKit: [Client 4] Update Characteristics
>>> HomeKit: [Client 4] Get Characteristics
Door state was requested (open).
>>> HomeKit: [Client 4] Update Characteristics
>>> HomeKit: [Client 4] Get Characteristics
Door state was requested (open).
>>> HomeKit: [Client 4] Update Characteristics
>>> HomeKit: [Client 4] Get Characteristics
Door state was requested (open).
>>> HomeKit: [Client 4] Get Characteristics
Door state was requested (open).
>>> HomeKit: [Client 4] Update Characteristics
>>> HomeKit: [Client 4] Get Characteristics
Door state was requested (open).
>>> HomeKit: [Client 4] Update Characteristics
>>> HomeKit: [Client 4] Get Characteristics
Door state was requested (open).
>>> HomeKit: [Client 4] Update Characteristics
>>> HomeKit: [Client 4] Get Characteristics
Door state was requested (open).
>>> HomeKit: [Client 5] Update Characteristics
>>> HomeKit: Got new client connection: 7 from 192.168.100.11
>>> HomeKit: [Client 7] Pair Verify Step 1/2
>>> HomeKit: [Client 7] Pair Verify Step 2/2
>>> HomeKit: [Client 7] Found pairing with EAACB744-8CB3-4EC6-9DEC-E93F2C4A737B
>>> HomeKit: [Client 7] Verification successful, secure session established
>>> HomeKit: [Client 7] Get Accessories
Door state was requested (open).
>>> HomeKit: [Client 7] Update Characteristics
>>> HomeKit: [Client 7] Update Characteristics
>>> HomeKit: [Client 7] Update Characteristics
>>> HomeKit: [Client 5] Update Characteristics
{ld��<�d�|
          �d�c|���{�#�#��o'�do'���
                                  #8��ds$s$p�o�
                                               �l

                                                 b
                                                  o�<��d�c��'g�lć$`�o�lgs���g
                                                                             ��lx�o�
    {�����

          cg�|�Ǐ8��'o��$ �ol os�ۛg
                                 ��`s��n
                                        ē`;d�#�o'���p|�cl#�op`
�#�#��'o�n�#�gb8?�'d�'��g�o~#

                             ll8#Ó`�'�oddn���

                                             �l���`�g�o����c
                                                            �dl$?{l�c�ng��l�o'�'���n��'d�b�gn��d�o'o�`
                      �� {l
                           �ng��|���g�
                                      �clpp_task_hdl : 3fff0430, prio:14, stack:512
pm_task_hdl : 3ffefd20, prio:1, stack:176
frc2_timer_task_hdl:0x3fff43f0, prio:12, stack:200

ESP-Open-SDK ver: 0.0.1 compiled @ Jun 19 2020 04:55:29
phy ver: 273, pp ver: 8.3

>>> wifi_config: Initializing WiFi config
>>> wifi_config: Connecting to HOMEKIT
Using Sensor at GPIO5.
Door state was requested (open).
mode : sta(cc:50:e3:3d:04:3a)
add if0
scandone
add 0
aid 18
cnt

connected with HOMEKIT, channel 8
dhcp client start...
ip:192.168.100.58,mask:255.255.255.0,gw:192.168.100.1
>>> wifi_config: Connected to WiFi network
>>> HomeKit: Starting server
>>> HomeKit: Using existing accessory ID: CF:06:C4:C2:50:62
>>> HomeKit: Found admin pairing with FF8F5239-0D1E-401F-9801-D108619DFA94, disabling pair setup
>>> HomeKit: Configuring mDNS
mDNS announcement: Name=Lock-3D043Amd=Basicpv=1.0id=CF:06:C4:C2:50:62c#=1s#=1ff=0sf=0ci=6 Port=5556 TTL=4500
>>> HomeKit: Got new client connection: 4 from 192.168.100.11
>>> HomeKit: [Client 4] Pair Verify Step 1/2
>>> HomeKit: [Client 4] Pair Verify Step 2/2
>>> HomeKit: [Client 4] Found pairing with EAACB744-8CB3-4EC6-9DEC-E93F2C4A737B
>>> HomeKit: [Client 4] Verification successful, secure session established
>>> HomeKit: [Client 4] Get Accessories
Door state was requested (open).

I tried flashing other examples and concluded that my board may have some problem. Changed the board. Everything works now.

repo: maximkulkin/esp-homekit-demo


text:
Dynamic content property implementation

As a developer, I want to modify the Content method so that it can store multiple properties of an entity as a serialized JSON or custom string in a table. Currently, the Content method only accepts a single property as a parameter, which limits us to use only properties with static typing. With this change, we'll be able to pass in a collection of properties as an anonymous object and store them in the table using the same serialization logic as before. This will enable us to store nested properties and other complex entities more easily and efficiently.

Task list

[ ]  Implement 1
[ ]  Implement 2

repo: maximtcapenko/azuretableaccessor


text:
🛑 Shorts Todo Futbol is down

In fd86488, Shorts Todo Futbol (https://shortstodofutbol.com.ar) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Shorts Todo Futbol is back up in 4d4911b after 24 minutes.

repo: maxivecchio/upptime


text:
Build to blank screen on osx

Every time I build my electron application it is successful but when I run the application Im presented with a blank screen. Im positive that it is finding my main.js and using it as modifications here result in changes in the built application. Any help with this would me much appreciated it.
Here is my build command
$ sudo electron-packager . foo --platform=all --arch=x64 --version=0.31.2 --overwrite

Here is my main.js
var app = require('app');  // Module to control application life.
var BrowserWindow = require('browser-window');  // Module to create native browser window.

// Report crashes to our server.
require('crash-reporter').start();

// Keep a global reference of the window object, if you don't, the window will
// be closed automatically when the JavaScript object is garbage collected.
var mainWindow = null;

// Quit when all windows are closed.
app.on('window-all-closed', function() {
  // On OS X it is common for applications and their menu bar
  // to stay active until the user quits explicitly with Cmd + Q
    app.quit();
});

// This method will be called when Electron has finished
// initialization and is ready to create browser windows.
app.on('ready', function() {
  // Create the browser window.
  mainWindow = new BrowserWindow({width: 1400, height: 700});

  // and load the index.html of the app.
  mainWindow.loadUrl('file://' + __dirname + '/templates/index.html');

  // Open the DevTools.
  // mainWindow.openDevTools();

  // Emitted when the window is closed.
  mainWindow.on('closed', function() {
    // Dereference the window object, usually you would store windows
    // in an array if your app supports multi windows, this is the time
    // when you should delete the corresponding element.
    mainWindow = null;
  });
});

Try doing console.log('file://' + __dirname + '/templates/index.html') and make sure the path is correct

The correct file path is returned. The application runs correctly when use  electron . just not when compiled.

I have the same problem... Would like some help...
Also running on mac, and the directory exists. When i run with electron, my app opens, but when packaging it starts a blank screen with no error.

I have the exact same problem as gillyb running electron-packager 5.2.1 and using this command:
electron-packager . myapp --ignore="node_modules/(electron-packager|electron-prebuilt)" --platform=win32 --arch=ia32 --version=0.36.3 --overwrite --asar=false

It seems that we're going to need someone to debug this for us.

Need a failing test case from someone first

Mind having a look at Console on OS X and see if any messages appear when the app launches?

Hi guys,
I'm running in to something similar too.
I'm using using shelljs in my main process (and sending data using ipc)
When I start the app from a terminal:
/Applications/dcapp.app/Contents/MacOS  ./Electron

After poking around with your app, it appears that running your app via doubleclicking in Finder does not run with nearly the same PATH that running from a terminal does, so depending on where the drupal command ends up installed in your case, it could be that it ends up not finding it when run that way?
I'm not sure if the other users reporting this issue are in the same boat - do they use shelljs or child_process.exec/etc. in their apps?  Is there a difference running the packaged app via terminal vs. Finder for them?

Normally you'd run the app by typing open /Applications/dcapp.app, not /Applications/dcapp.app/Contents/MacOS/Electron.

@erkyrath in my testing, both have the same effect (both work, as opposed to opening directly from Finder).

I don't think this is a path issue. The which command should return the location of the arg you pass, if it's in your PATH..... Running my code with npm start works, and from the terminal. Thanks guys for taking a peek at this, I'll be back to poking at it tomorrow.
@erkyrath thx, I'm not that familiar with OSX :)

@willwh I agree with @kfranqueiro, because last month I helped troubleshoot a similar environment variable problem on OSX. If you look at https://github.com/maxogden/electron-packager/issues/232#issuecomment-170225945, you will note that the PATH variable differs between opening it via Finder and via the terminal. In particular, the /usr/local/{bin,sbin} paths are added to PATH in the terminal. If the Drupal Console docs are any indication, drupal is likely installed in /usr/local/bin on your system. If this is the case, you should add /usr/local/bin to PATH before running which.

@kfranqueiro @malept thanks for sticking with me and explaining that!
Of course I had the binary for this aliased in my .zshrc.
alias=~/DrupalConsole/bin/drupal
However, after removing this (and source ~/.zshrc) - when I run which drupal in my terminal, I see the correct path: `/usr/local/bin/drupal' - although drupal console still doesn't seem to be working in my packaged app.
I'm going to try repackaging, do you have any other advice here? :)
Thank you once again!

For your app, the short-term fix is to append /usr/local/bin to process.env['PATH'] before you call which('drupal'). For a longer-term fix, I suggest creating a configuration option to set how you execute it, given that the docs I linked earlier say that it only exists in /usr/local/bin if you want to be able to execute it system-wide.

@malept thanks so much for the advice :)
I tried just setting shell.env.PATH += shell.sep + '/usr/local/bin'; in my main,js but still the same problem.
Any other ideas on how I might debug what's going on?

The only advice I can give at this point is to start putting console.log statements everywhere.

You said you tried setting shell.env.PATH, but AFAIK shell is not a thing that exists...  Did you try setting process.env.PATH as @malept said?  That works for me.

@kfranqueiro thank you, sorry typo late at night :)
The interesting thing is, that still doesn't work for me, and indeed, if I drop some console.log(process.env.PATH) before and after that - I end up with /usr/local/bin in my $PATH twice (if I run open /Applications/dcapp.app
i.e.
function createWindow () {
  // Create the browser window.
  mainWindow = new BrowserWindow({width: 800, height: 600});
  console.log(process.env.PATH);
  process.env.PATH += '/usr/local/bin';
  console.log(process.env.PATH);

Results in /usr/local/bin in my path twice.
I can't use console.log() to check things from the main process, so I am not sure what to do here.
@kfranqueiro when you say that "works for me" - you're able to open dcapp.app from finder / launch from the Applications directory by double clicking and it shows a desktop notification and the version of Drupal Console?

I can't use console.log() to check things from the main process, so I am not sure what to do here.

I believe you can if you open the DevTools Window. (Look at the tutorial and search for DevTools.) You may have to do some IPC to get the data where you want it, though. I haven't tested.

This is what I am doing now :)
The interesting thing is, I have the following:
mainWindow.loadURL('file://' + __dirname + '/index.html');
mainWindow.webContents.openDevTools();

and I am trying to use IPC to send data between the main and renderer process.
ipcRenderer code
ipcMain code
As I've said, this works when opening the application from a terminal using open /Applications/dcapp.app - but not when run from finder.
So now I am thoroughly confused :)
I really appreciate your help.

I meant, send the contents of process.env.PATH (for example) over IPC (over, for example, a debug channel) so you can console.log() and see it in the DevTools window.

@malept something like this? https://github.com/willwh/dcapp/commit/a758d9e66e768ca635dc7df27ff92a8e5b0a8f38
I get nothing in the DevTools window. I wonder if this is an issue with my implementation of the IPC stuff.

Thanks guys for all of your help here. I got IPC stuff working correctly now, and this indeed a path issue.
@malept I actually misread your first note; re: /usr/local/{bin,sbin}
So when launched from Finder, or the Icon, my path is /usr/local/{bin,sbin}
I tried adding the following inside my createWindow() function; process.env.PATH = ['/usr/local/bin', process.env.PATH].join(':') - but that doesn't seem to work.
Once I figure out where I should be setting the process.env.PATH in my code, I think I'll be able to call this done :)
(Just for testing purposes: sudo ln -s /usr/local/bin/drupal /usr/bin/drupal and my app works as expected, I am not sure why setting the process.env.PATH like above is not working.

I'm going to give this a quick test: https://github.com/sindresorhus/fix-path it sounds like it may solve my problem :)

Ah well, back to the drawing board I guess, this doesn't seem to work.

This issue has kind of turned into a catch-all, so I'm going to close it.
IF YOU HAVE THIS PROBLEM

Read our docs on filing bugs and see if your specific problem already has another issue created for it (whether it's open or closed)
If you believe you have a different set of problems, file a new issue and follow the directions in the GitHub issue template.

Not sure if this is related to your problem, but please check Console it shows some errors log if any strange things occur. Mine is because of Uncaught Error https://github.com/onmyway133/blog/issues/145

authors: chrisburgin95 erkyrath gillyb kfranqueiro malept maxogden mspoulsen onmyway133 sethlu willwh

repo: maxogden/electron-packager


text:
Release for website deployment

Closes #584

alright lets see if this works lol


text:
iPad Letter Size

The letters in the iPad appear very small when compared to their size in the belly editing. The letters in the iPad should appear larger.

Adjusted in https://github.com/mayacakmak/emarsoftware/pull/68

repo: mayacakmak/emarsoftware


text:
While using TypeScript: Could not find a declaration file for module 'vue-currency-filter'

I get this error while using TypeScript in Vue.
Could not find a declaration file for module 'vue-currency-filter'. '/node_modules/vue-currency-filter/dist/vue-currency-filter.js' implicitly has an 'any' type.
Try npm install @types/vue-currency-filter if it exists or add a new declaration (.d.ts) file containing declare module 'vue-currency-filter';

I am not familiar with TypeScript, but PR are welcome @antonio-valdez-arce

Hello @mazipan,
I investigated a little, and it turns out it would require some substantial refactoring, for instance, migrating you project to TypeScript, which it wouldn't make sense.
I managed to implement a workaround in my project instead, by following this article:
https://medium.com/@chris_72272/migrating-to-typescript-write-a-declaration-file-for-a-third-party-npm-module-b1f75808ed2
Thank you for your code!
I think this issue can be closed.

TypeScript doesn't require any migration at all.
You just have to write a TypeScript definition file, put it in a types folder at the root of the repository and declare it in the package.json file.
You can take a look at the Vue.js repository: https://github.com/vuejs/vue/blob/dev/package.json#L9

PR are always welcome

authors: DavidRouyer antonio-valdez-arce mazipan

repo: mazipan/vue-currency-filter


text:
bumpver update --patch

It does update setup.cfg iteself??

How can I update setup.cfg itself so that I don't need update it manually??
+

@mbarkhau  this is my config:
[egg_info]
tag_build =
tag_date = 0

[bumpver]
current_version = "3.0.1"
version_pattern = "MAJOR.MINOR.PATCH"
commit_message = "bump version {old_version} -> {new_version}"
commit = True
tag = True
push = True

[bumpver:file_patterns]
alfred/version.py =
  __version__ = "{version}"
setup.cfg =
    current_version = "{version}"
setup.py =
    "{version}"
    "{pep440_version}"
README.md =
    {version}
    {pep440_version}

it was already in setup.cfg, but I run bumpver update --patch, it doesn't udpate cfg file

output
bumpver update --patch                                                                                main
INFO    - fetching tags from remote (to turn off use: -n / --no-fetch)
INFO    - Old Version: 3.0.1
INFO    - New Version: 3.0.2
ERROR   - No match for pattern '__version__ = "MAJOR.MINOR.PATCH"'
ERROR   -
# https://regex101.com/?flavor=python&flags=gmx&regex=__version__%5B%20%5D%3D%5B%20%5D%5C%22%0A%28%3FP%3Cmajor%3E%5B0-9%5D%2B%29%0A%5C.%0A%28%3FP%3Cminor%3E%5B0-9%5D%2B%29%0A%5C.%0A%28%3FP%3Cpatch%3E%5B0-9%5D%2B%29%0A%5C%22
regex = re.compile(r"""
    __version__[ ]=[ ]\"
    (?P<major>[0-9]+)
    \.
    (?P<minor>[0-9]+)
    \.
    (?P<patch>[0-9]+)
    \"
""", flags=re.VERBOSE)
ERROR   - Invalid pattern(s)

In future, you may find, that you will have your problems solved more quickly, if you start with and focus on the error messages.
As the error message states, the pattern for the file alfred/version.py doesn't match anything. You can click on the link and paste your file contents in the "TEST STRING" box to see where the issue might be.

@mbarkhau Sorry, I don't understand, for users, it shouldn't let users to determine what's regex using here, since we litterally didn't know how do u using regex in your lib.
As an users, I just can assume you are trying to replace the varaible which is __version__ in my alfred/version.py, and then replace it's value then save it as text, isn't it?
Here is my version.py:
from datetime import datetime

major_num = 2

__version__ = '3.0.1'
short_version = __version__

what else need to make it suitable for your config?

Yes, your pattern is wrong. It uses double quotes. Try single quotes.

@mbarkhau Like I said, it doesn't update my file:

What do u think further I need do here? You made a perfect lib that doesn't work at all. I add quates, the version jsut doesn't update!!!!!

authors: jinfagang mbarkhau

repo: mbarkhau/bumpver


text:
[SUGGESTION] I wish to have a feature for handling LiteDb with Isolated Storage

Is your feature request related to a problem? Please describe.
I wish to store some information where I believe IsolatedStorage is the best candidate. The dotnet API does not provide a full path for the IsolatedStorage file where we can pass it to LiteDb to store the database (with reflection its possible, however it is a hack and not a perfect solution I believe).
Describe the solution you'd like
I would like a constructor which accepts IsolatedStorageFile instance and with the other options like Password and other connection string options we can pass.
Describe alternatives you've considered
I tried it with the hack and was not satisfied with the flow of the code, for just getting a field, I had to use reflection, and it is internal which may get renamed anytime.
Additional context
I would be happy if there is another constructor overload with the options mentioned above.

Hi
I think it is already possible with IsolatedStorageFileStream and LiteDatabase constructor overload type ILiteEngine implementation.
I was able to ready LiteDB instance from isolate storage and read / insert documents. Below I’m attaching sample code that I think can be enhanced for your needs.
    class Program
    {
        static void Main(string[] args)
        {
            IsolatedStorageFile isoFile = IsolatedStorageFile.GetUserStoreForAssembly();

            String[] dirNames = isoFile.GetDirectoryNames("*");
            if (dirNames.Contains("LiteDB") && isoFile.FileExists("LiteDb\\LiteDb.dll")) {
                IsolatedStorageFileStream liteDBStream = isoFile.OpenFile("LiteDb\\LiteDb.dll", System.IO.FileMode.Open);

                var connectionType = LiteDB.ConnectionType.Shared;

                EngineSettings engineSettings = new EngineSettings();
                engineSettings.DataStream = liteDBStream;
                engineSettings.Filename = "LiteDb.dll";
                engineSettings.Password = "1234";
                engineSettings.ReadOnly = false;

                ILiteEngine liteDbEngine = connectionType == LiteDB.ConnectionType.Shared ?
                    (ILiteEngine)new LiteDB.SharedEngine(engineSettings) : (ILiteEngine)new LiteEngine(engineSettings);

                LiteDB.LiteDatabase liteDatabase = new LiteDB.LiteDatabase(liteDbEngine);

                var testQuery = liteDatabase.GetCollection<TestDto>("query");
                testQuery.Insert(new TestDto() { Name = "Worked" } );

                var result = testQuery.FindAll();

            }
        }
    }

    class TestDto {

        public ObjectId Id { get; set; }
        public string Name {get;set;}
    }

Let me know if this is works for you.
Regards
Piotr

@quicksln Your basic idea is good, but your solution lacks some things, like a log stream (if you don't have a FileStream as log stream, there will be data loss in case of a crash). Here's my proposed solution:
IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForAssembly();

string path = "myfilepath.db"; //replace this with your datafile path
string logPath = path.Replace(".db", "-log.db");

IsolatedStorageFileStream dataStream = isf.OpenFile(path, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.Read);
IsolatedStorageFileStream logStream = isf.OpenFile(logPath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.Read);

EngineSettings settings = new EngineSettings();
settings.DataStream = dataStream;
settings.LogStream = logStream;

var connectionType = LiteDB.ConnectionType.Direct; //use this variable to select the connection type
//(Direct is recommended, unless you need multi-process support)

ILiteEngine liteDbEngine = connectionType == LiteDB.ConnectionType.Shared ?
    (ILiteEngine)new LiteDB.SharedEngine(settings) : (ILiteEngine)new LiteEngine(settings);

using (LiteDatabase db = new LiteDatabase(liteDbEngine))
{
	//do whatever you want here
}

@pankaj-nikam

Thank you @quicksln and @lbnascimento :)
The solutions do seem promising. I am wondering if it is good enough to be a feature itself in the package?
Users may find it helpful if it supports isolated storage out of the box.
What do you think?

@lbnascimento good point with adding log file stream, @pankaj-nikam  hope you find this useful.
Defiantly it's good candidate for extension method inside individual project :)
Regards
Piotr

Agree with you @quicksln. Its good to make an extension method.

@quicksln It's a possibility, but I'd have to think of a better way to integrate this feature in LiteDB. Maybe adding a log stream parameter in the constructor would be good enough (and it would also be very flexible).

@lbnascimento Agree that could be more helpful and complete solution. What I would like to avoid is to introduce new Ctor. Taking you suggestion I think good candidate for extension is :
        public LiteDatabase(Stream stream, BsonMapper mapper = null)
        {
            var settings = new EngineSettings
            {
                DataStream = stream ?? throw new ArgumentNullException(nameof(stream))
            };
	     …
	}

to replace it with
        public LiteDatabase(Stream stream, BsonMapper mapper = null, Stream logStream = null)
        {
            var settings = new EngineSettings
            {
                DataStream = stream ?? throw new ArgumentNullException(nameof(stream)),
                LogStream = logStream
            };

@lbnascimento let me know what you think, I'll create PR to implement this.

@quicksln Yes, somethink like that would be fine. And, if possible, please make some tests for it, just to make sure everything is working as expected (you can use TempStream).

authors: lbnascimento pankaj-nikam quicksln

repo: mbdavid/LiteDB


text:
[SUGGESTION] maybe do not store FiledName into data?

Is your feature request related to a problem? Please describe.
i make a test store 1-million data in 2 files. one is CTS,one is CodeTask.

    public class CTS {
        public CTS(string code, int taskId) {
            id = code;
            d = taskId;
        }
        [LiteDB.BsonId]
        public string id;
        public int d;
    }

       public class CodeTask {

            public CodeTask(string code, int taskId) {
                Code = code;
                TaskId = taskId;
            }

            [LiteDB.BsonId]
            public string Code;

            public int TaskId;
        }

im got 2 files.

theres about 7mb size different.
if litedb make a field map(hold),maybe will be better ?

another  problem is when im query some field not in the data,it seems LiteDB will do full table scan ?
emm.

Hi @sgf, the size difference is due to the indexing system. LiteDB uses SkippedLists as the indexing system, which generates a random sized linked pointer array. So if you recreate these same databases again with the same amount of records, you should get different sized datafiles

Hi @sgf, the size difference is due to the indexing system. LiteDB uses SkippedLists as the indexing system, which generates a random sized linked pointer array. So if you recreate these same databases again with the same amount of records, you should get different sized datafiles

im just want to say,im open the db file,and its store the Field Name in there(every recored).

Hi @sgf, the size difference is due to the indexing system. LiteDB uses SkippedLists as the indexing system, which generates a random sized linked pointer array. So if you recreate these same databases again with the same amount of records, you should get different sized datafiles

im just want to say,im open the db file by notepad++ ,and its store the Field Name in there(every recored).

Ok, yes, this is by design. The object is serialized into a document on Bson format, which records the name of each property. This is a feature so you have the flexibility to store a modified object within the same collection without having to change its structure.

authors: kcsombrio sgf


text:
Improve performance with ARM SIMD on Cortex-M4 and more powerfull cores

Let's discuss how can we improve the performance of this library. I expect to use arm_math.h rather than ASM.

Hi @sledgeh . Thanks for raising an issue! Can you please elaborate more on what you are after?
I had a look into what arm_math.h is, at it seems it is a bunch of signal processing functions for ARM Cortex M* devices?
https://github.com/ARM-software/CMSIS/blob/master/CMSIS/Include/arm_math.h

Yes it is. The aim (one of main) of arm_math.h is to wrap SIMD ability. Here is CMSIS documentation of the CMSIS library.
arm_add_q31.c shows ARM SIMD implementation. This is a simple function, but there are others more complicated.
As far as I understood ARM Cortex M core has 4 SIMD conveyors. So we will achieve ~4x acceleration on array processing.
This is actual for ARM cores with SIMD ability CM3 and CM4 and may be CM7.

@sledgeh , o.k., so it allows you to do parallel processing, as long as the instruction is the same.
How do you see this as being a benefit to this library? What is a real-world example of what you want to call in code, and what to expect in return?

Now I think it is enough to add C++ bindings for arm_math and pass Q classes to the math functions, which will convert ninja Q to arm Q.
I will create pull request ones it'll be done.

authors: gbmhunter sledgeh

repo: mbedded-ninja/MFixedPoint


text:
Gradle Exception: Buildfile: build-nusmv-languages.xml does not exist

On commit:
8167cf2
When running:
./gradlew build_smv_languages
Full Exception:
> Task :build_smv_languages FAILED
Buildfile: /home/boakes/Projects/FASTEN/build/scripts/build-nusmv-languages.xml does not exist!
Build failed
Relevant code:
task build_smv_languages(type: BuildLanguages, dependsOn: [build_allScripts]) {
    script new File("$buildDir/scripts/build-nusmv-languages.xml")
}
Gradle Version:
Gradle 5.5
Build time:   2019-06-28 17:36:05 UTC
Revision:     83820928f3ada1a3a1dbd9a6c0d47eb3f199378f
Kotlin:       1.3.31
Groovy:       2.5.4
Ant:          Apache Ant(TM) version 1.9.14 compiled on March 12 2019
JVM:          11.0.5-ea (Ubuntu 11.0.5-ea+10-post-Ubuntu-0ubuntu1)
OS:           Linux 5.3.0-23-generic amd64
Please let me know any other information you require.

gradle generates this automatically by running a bootstrap script called "build_all_scripts.xml" which is under the version control.
Have you set the variables in "gradle.properties" ?

There is no gradle.properties file in the repo. What parameters are needed?
And from a look at build_all_scripts.xml, I don't see where the build-nusmv-languages.xml file is built. Is it created from within MPS code?

there is a gradle.properties.example file in the root - please rename it into gradle.properties and set the variables.
build-nusmv-languages.xml is generated from MPS by the build-allScripts script
(you can generate them manually and build everything my opening the nusmv project)
@BentleyJOakes  please let me know if it works ...

I've opened the code/languages/com.mbeddr.formal.nusmv project in MPS.
As a note to anyone trying this, the path variable mbeddr.formal.home must be set in Settings->Appearance & Behavior->Path Variables.
Most of the Languages and Solutions in the nusmv project have build errors.
When I try to run model check on all the languages, I receive the following Exception:

java.lang.IllegalArgumentException : Illegal parameter : com.mbeddr.mpsutil.blutil.structure.SafeReadAction is not a subconcept of jetbrains.mps.baseLanguage.structure.ILocalVariableElement [node r:6e82d8d0-32f5-4302-ba79-fcd365c09c01(com.mbeddr.formal.base.operatorspanel.editor)/2707707741267927230]

Another issue:
When I rebuild com.mbeddr.formal.base (just as a starting point), I get the error

Can't find imported model: de.itemis.mps.editor.celllayout.runtime.cells

A third issue:
When I try to rebuild the build script (com.mbeddr.formal.allScripts) I get the error

Can't find imported model: com.mbeddr.mpsutil.dev.build

Am I missing a dependency?

@BentleyJOakes thank you for this feedback!
Most likely you are missing the mbeddr.platform plugins. I have updated the readme description about how to build FASTEN from within MPS.
https://github.com/mbeddr/mbeddr.formal/blob/master/README.md
Please let me know if it works.

Thank you!
Issues found:

I had an error marked by MPS in com.mbeddr.formal.allScripts.build.allScripts.com.mbeddr.formal.allScripts
I had to add the last three lines here.

solution com.mbeddr.formal.nusmv.build (7125ed76-a460-4b0f-b95b-a899f99488d6)
  load from $mbeddr.formal.nusmv.code/solutions/com.mbeddr.formal.nusmv.build/com.mbeddr.formal.nusmv.build.msd
  content:
    (with sources)
    resources files from $mbeddr.formal.home/code/languages/com.mbeddr.formal.nusmv/solutions/com.mbeddr.formal.nusmv.build
      includes icons/**
  dependencies:
    (extracted) jetbrains.mps.ide.build
    (extracted) JDK
    (extracted) de.itemis.mps.extensions.build
    (extracted) org.apache.commons
    (extracted) com.mbeddr.platform

In com.mbeddr.formal.nusmv.build.com.mbeddr.formal.nusmvTests, I had to add two macro lines
folder dependencies.root = $mbeddr.formal.home/build/dependencies
folder dependencies.mbeddr.platform = $dependencies.root/com.mbeddr.platform

In com.mbeddr.formal.nusmv.build.com.mbeddr.formal.nusmv, I had to add two dependencies (the last two lines):
idea plugin com.mbeddr.formal.nusmv from generated by default 'plugin.xml' descriptor file
  name com.mbeddr.formal.nusmv
  short (folder) name com.mbeddr.formal.nusmv
  version ${version}
  content:
    com.mbeddr.formal.nusmv
    com.mbeddr.formal.nusmv.devkit
  dependencies:
    jetbrains.mps.core
    de.slisson.mps.tables
    org.apache.commons
    com.mbeddr.mpsutil

Your path to mps.home is hard-coded in these files. Perhaps it should also be a path variable?

com.mbeddr.formal.allScripts.build.allScripts.com.mbeddr.formal.allScripts
com.mbeddr.formal.nusmv.build.com.mbeddr.formal.nusmv
com.mbeddr.formal.nusmv.build.com.mbeddr.formal.nusmvDistribution
com.mbeddr.formal.nusmv.build.com.mbeddr.formal.nusmvTests

On my machine these dependencies are in place. Only the path to "mps_home" should differ from a machine to another.
Does the gradlew based build work on your machine?

Yes, now the gradlew build is working. I've just opened my built version of FASTEN and am testing it.

Thank you for reporting these ... if it works, please close the issue :-)
On Tue, Nov 26, 2019 at 8:56 PM BentleyJOakes notifications@github.com
wrote:

Yes, now the gradlew build is working. I've just opened my built version
of FASTEN and am testing it.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/mbeddr/mbeddr.formal/issues/17?email_source=notifications&email_token=AAK63VPEXYQOPUSELBWZ27TQVV5QHA5CNFSM4JQ3YKJ2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEFHIDPQ#issuecomment-558793150,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAK63VK2JG63VNTNSKU4PX3QVV5QHANCNFSM4JQ3YKJQ
.

authors: BentleyJOakes danielratiu


text:
Pinology

Description
This pull requests introduces simple improvements for GPIO HAL functions in mbed SDK.
Improvements introduce:

new GPIO function: *gpio_is_connected(const gpio_t obj) which can determine if gpio pin is set as NC or connected to H/W pin,
DigitalIn, DigitalOut, DigitalInOut interfaces received is_connected() method,
BusIn, BusOut, BusInOut interfaces gained new operator[n] which works as 'random access iterator to n'th pin in Bus component.
BusIn, BusOut, BusInOut interfaces gained new function mask() which returns binary mask of connected pins (easy way to filter in run-time Bus' pins set to NC).
Simple tests added to check if BusOut::operator[unsigned int] is working and if DigitalOut::is_connected()** is also correctly returning pin state.

Rationale
Currently if you want to set proper bit(s) in Bus component you have to use write() method which will set all pins. In case you want to set/clear single pin you need to perform some bit operations and set/clear pin you want.
Currently:
BusOut bus(LED1, LED2, LED3);

// Old way: set LED2
int current_mask = bus.read();
current_mask |= 0x02;
bus.write(current_mask);

With this pull request:
BusOut bus(LED1, LED2, LED3);
bus[1] = 1;    // New API, LED1 = 1

// or safer, if you want to check if pin is not in NC state:

if (bus[1].is_connected()) { // We want to make sure bus.pin[1] is not NC pin (we avoid assertion)
    bus[1] = 1;    // LED1 = 1
}

DigitalOut pin setup check
You can check if DigitalIn, DigitalOut and DigitalInOut component was initialized with NC (not connected) pin name value:
DigitalOut dout(NC);
bool is_conn = dout.is_connected();    // is_conn == false

DigitalOut dout(LED2);
bool is_conn = dout.is_connected();    // is_conn == true

Bus pin masking
You can get bus pin mask to perform bit-wise operations and see e.g. if groups of pins are connected or not:
BusOut bus(LED1, NC, LED2, NC, LED3);
const int mask = bus.mask();    // mask = [ 1, 0, 1, 0, 1, 0, 0, ....]

// We can check which pin in bus is actually connected:
if (mask & 0x04) {
    // bus[2] is connected
}

LED blinky example
BusOut bus_out(LED1, LED2, LED3, LED4);
// Just a quick LED blinking...
for (int i=0; i<4; i++) {
    if (bus_out[i].is_connected()) {
        bus_out[i] = 1;
    }
    wait(0.2);
    if (bus_out[i].is_connected()) {
        bus_out[i] = 0;
    }
}

Testing
singletest.py -i test_spec.json -M muts_all.json -n MBED_BUSOUT -V

Output for supporting test:
Building library CMSIS (K22F, GCC_ARM)
Building library MBED (K22F, GCC_ARM)
Building project BUS_OUT (K22F, GCC_ARM)
Executing 'python host_test.py -d G:\ -f "C:\Work\mbed-przemek\build\test\K22F\GCC_ARM\MBED_BUSOUT\bus_out.bin" -p COM93 -t 15 -C 4 -m K22F'
Test::Output::Start
MBED: Instrumentation: "COM93" and disk: "G:\"
HOST: Copy image onto target...
HOST: Initialize serial port...
HOST: Reset target...
{start}}
MBED: BusIn mask: 0xF
MBED: BusIn LED mask: 0xF
MBED: BusOut.bit[0] is connected
MBED: BusOut.bit[1] is connected
MBED: BusOut.bit[2] is connected
MBED: BusOut.bit[3] is connected
MBED: Blinking LEDs...
{{success}}
{{end}}
Test::Output::Finish
TargetTest::K22F::GCC_ARM::MBED_BUSOUT::BusOut [OK] in 7.29 of 15 sec
Test summary:
+--------+--------+-----------+-------------+------------------+--------------------+---------------+-------+
| Result | Target | Toolchain | Test ID     | Test Description | Elapsed Time (sec) | Timeout (sec) | Loops |
+--------+--------+-----------+-------------+------------------+--------------------+---------------+-------+
| OK     | K22F   | GCC_ARM   | MBED_BUSOUT | BusOut           |        7.29        |       15      |  1/1  |
+--------+--------+-----------+-------------+------------------+--------------------+---------------+-------+
Result: 1 OK

Completed in 7.82 sec

Why is index declared as unsigned int in operator[] (unsigned int index) ?
I can't find an exaplanation for those static dummy members. Why is assert commented out?
DigitalIn& BusIn::operator[] (unsigned int index) {
    //MBED_ASSERT(index >= MBED_BUS_SIZE);
    //MBED_ASSERT(_pin[index]);
    if (index >= 16 || _pin[index] == NULL) {
        return din_dummy;
    }
    return *_pin[index];
}

Index is unsigned because I do not want to check if index is >=0 in code. I can replace it with signed int and add assertion, runtime check. No problem! Not my call, library maintainer should decide.
I can of course uncomment assertions, this is why I left them commented so during code review we can decide if we gonna uncomment them or not use them (remove).
Dummy is used because nothing is stopping me from declaring bus as:

BusOut bout(NC, NC);
bout[0] = 1;
int x = bout[0];

and when I access bout[0], a non existing pin. In this case I need to return DigitalOut object (my dummy pin) reference so I can keep semantic with operator I've created.
If I have a BusOut class which will not allow me to create NC pins I would not add dummy object.

Thanks , that explains it. What's your preference to 2nd (assertation in operator[])?

0xc0170,
I would uncomment both. This is how I see this works anyway - that's why I left those asserts there.

@0xc0170: Simplified code and removed dummies. Now ASSERT will look after correct indexes and NC pins inside Bus component family.

repo: mbedmicro/mbed


text:
RFC: Provide an alternate method for overriding ASL objects

The current method of positionally overriding parameters within ASL gets pretty confusing with larger ASL documents.
It would be awesome to have 1-2 alternate methods of overriding, e.g.
Recursive find and replace
Give the overrides prop a list of replacement objects, sorta like this:
{ "string" : "MyFunctionNamePlaceholder" , "replaceWith" : myFunction.functionName }
The construct then recurses through the ASL and replaces all occurrences of "MyFunctionNamePlaceholder" with myFunction.functionName
JSON Path overrides
Give the overrides prop a list of JSON path elements, and the value to replace them with
{ "path" : "$.States.Branches[0].Parameters.FunctionName" , "replaceWith" : myFunction.functionName }
Let's discuss. I'd like to help implement whatever change we decide on.

Interesting solution here that just does a find/replace against a stringified JSON object, and then converts back to JSON.

@mbonig backlog label?

done

@a-bigelow Please take a look at the most recent update. I've added in an AutoDiscover feature for projen, similar to what projen has with Lambda functions and handlers. This will generate a strongly typed interface for providing overrides. I think this is less error prone then what you suggested.

Very cool. I will kick the tires on this and open a separate issue if I feel a need.

authors: a-bigelow mbonig

repo: mbonig/state-machine


text:
🛑 Fanalitica is down

In dc8481c, Fanalitica (https://www.fanalitica.com) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Fanalitica is back up in dcf43dc.


text:
tidy up docs

This trims out dead matter from docs and updates the code samples so they compile with the latest nuget packages.  The aim is to simplify out old material to leave space for better docs in the future

self-merging but please review

Looks good to me!

authors: dsyme eiriktsarpalis

repo: mbraceproject/mbrace-docs


text:
Adds swift objc support

Adds support for Swift, Objective-C and Objective-C++.

Thanks for the PR, @abaire!
Could you please squash your commits into one and re-push to the same branch via git push -f?

LGTM

authors: abaire mbrukman

repo: mbrukman/autogen


text:
Fix for year not updating properly in Trip Planner selection (left panel)

Summary of changes
Asana Ticket: 🐞Trip Planner | Fields should clear when new form submitted
The affected piece of code was mixing JS and jQuery. I updated it so the dreaded [object Object] doesn't get added to the selector.

Can you give me a test case for this? I read the ticket and tinkered with it a bit but I'm still having trouble understanding where the problem appears and what part is supposed to change with this.

Can you give me a test case for this? I read the ticket and tinkered with it a bit but I'm still having trouble understanding where the problem appears and what part is supposed to change with this.

The way I understood the issue was as follows:
This ticket is from 2019 so if you click on the link that Ingrid provided, you'll get the error stating that parameters are in the past. However, if you select a valid date (i.e. from today on), you'll still get the error because the 'year' field does not update properly (day and month seemed to update correctly).
Turns out that there was some mix up with jQuery and pure JavaScript that I believe gets fixed with this PR.
I now see there's an additional trip planner-related issue in the ticket but I think that's related to the actual trip planner logic's way to calculate itineraries. But this PR does not address that one.

authors: alicia-mbta thecristen

repo: mbta/dotcom


text:
Add "Community" README section

Added beacon_decode
This link currently gives a 404, but if @NickWaterton creates the beacon_decode repository, the README will point to it in the Community section. @NickWaterton's TemperaturePublish and MQTT projects could also be made into 2 additional repositories (and linked in this README) to maintain a separation of concerns.

I'm totally baffled now.
I don't want to create a separate repository for every file I create. Unless "repository" means something other than what I think it does?

There are different ways of approaching what a "repository" means.
If we take the Google approach, it means putting every possible thing Google owns into 1 repository. Note that they also use a proprietary Version Control System.
If we take a more modular approach, every repository has a one-to-one relationship with a reusable project. This allows people to clone repositories (projects) that have only what they will use, and not much else. I look at your MQTT file and it potentially could be split up into more files that aim to make the MQTT interface easier. This would mean your repository has more than 1 file, but they are all there to solve 1 problem.
These are just examples, and are by no means the only way to use GitHub. It sounds like other people are at least proposing a more logical directory structure to separate projects so that the repository is easily navigable in the long term.

authors: NickWaterton Stephen-Meyerhofer

repo: mcThings/mcScript


text:
🛑 ChatGenie Client API is down

In 9fb6c2e, ChatGenie Client API ($CHATGENIE_CLIENT_API) was down:

HTTP code: 0
Response time: 0 ms

Resolved: ChatGenie Client API is back up in e9a9a93.


text:
🛑 ChatGenie Client API is down

In e6fbbc9, ChatGenie Client API ($CHATGENIE_CLIENT_API) was down:

HTTP code: 0
Response time: 0 ms

Resolved: ChatGenie Client API is back up in 60e7c9e.


text:
🛑 ChatGenie Client API is down

In d821bac, ChatGenie Client API ($CHATGENIE_CLIENT_API) was down:

HTTP code: 0
Response time: 0 ms

Resolved: ChatGenie Client API is back up in de52843.


text:
🛑 ChatGenie Client API is down

In 64b302f, ChatGenie Client API ($CHATGENIE_CLIENT_API) was down:

HTTP code: 0
Response time: 0 ms

Resolved: ChatGenie Client API is back up in d2d89a0.


text:
🛑 ChatGenie MiniApp API is down

In c22fdf3, ChatGenie MiniApp API ($CHATGENIE_BOT_API) was down:

HTTP code: 404
Response time: 236 ms

Resolved: ChatGenie MiniApp API is back up in 4fffd81.


text:
🛑 ChatGenie Client API is down

In 7a3d6c6, ChatGenie Client API ($CHATGENIE_CLIENT_API) was down:

HTTP code: 0
Response time: 0 ms

Resolved: ChatGenie Client API is back up in 9e67ff0 after 9 minutes.


text:
🛑 ChatGenie Client API is down

In ae0a44c, ChatGenie Client API ($CHATGENIE_CLIENT_API) was down:

HTTP code: 0
Response time: 0 ms

Resolved: ChatGenie Client API is back up in 718ab8b after 19 minutes.


text:
🛑 ChatGenie Client API is down

In 363bfa1, ChatGenie Client API ($CHATGENIE_CLIENT_API) was down:

HTTP code: 0
Response time: 0 ms

Resolved: ChatGenie Client API is back up in c2506f8 after 37 minutes.


text:
🛑 ChatGenie Client API is down

In 31bf16a, ChatGenie Client API ($CHATGENIE_CLIENT_API) was down:

HTTP code: 0
Response time: 0 ms

Resolved: ChatGenie Client API is back up in 4700d6a.


text:
🛑 ChatGenie Client API is down

In fb568fe, ChatGenie Client API ($CHATGENIE_CLIENT_API) was down:

HTTP code: 0
Response time: 0 ms

Resolved: ChatGenie Client API is back up in 348a5f5.


text:
🛑 ChatGenie Client API is down

In c466f9b, ChatGenie Client API ($CHATGENIE_CLIENT_API) was down:

HTTP code: 0
Response time: 0 ms

Resolved: ChatGenie Client API is back up in 9817b3d.


text:
🛑 ChatGenie Client API is down

In 9567696, ChatGenie Client API ($CHATGENIE_CLIENT_API) was down:

HTTP code: 0
Response time: 0 ms

Resolved: ChatGenie Client API is back up in a1bcb6c.


text:
Relax rand and rand_core version requirements

This small PR relaxes slightly the version specification for the rand and rand_core dependencies to fix conflicts that cargo was struggling with, particularly when trying to compile rust-libp2p's noise crate.
The crate still compiles and all tests pass.

Huh, I had assumed from the Cargo documentation that "0.5" is the same as "^0.5" (i.e. no prefix modifier implies a caret). See: https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#specifying-dependencies-from-cratesio
Is that not true here?

Huh... that's a good point. Yes, you would think that this change would be a no-op. I'm guessing that maybe another change I must have made at the same time fixed the issue I was seeing? I'll close this for now unless something else comes up that makes me come back to it.
Apologies for the noise (hah, get it?)!

:stuck_out_tongue: No worries! Maybe I should make all our dependencies like this explicit carets so there's no confusion about cargo's behavior.
Sorry for taking so long to respond to this PR - definitely feel free to post more PRs if you find other compatibility issues :).

authors: mcginty rschulman

repo: mcginty/snow