rpicamera: add text overlay with current time (#1288)

Fixes #1288

Codecov Report

Merging #1604 (46449a5) into main (853fd42) will decrease coverage by 0.11%.
The diff coverage is 0.00%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@            Coverage Diff             @@
##             main    #1604      +/-   ##
==========================================
- Coverage   63.32%   63.22%   -0.11%
==========================================
  Files          87       87
  Lines        9675     9680       +5
==========================================
- Hits         6127     6120       -7
- Misses       3099     3113      +14
+ Partials      449      447       -2

Impacted Files
Coverage Δ

internal/conf/path.go
18.98% <0.00%> (-0.27%)
:arrow_down:

internal/core/rpicamera_source.go
0.00% <0.00%> (ø)

... and 3 files with indirect coverage changes
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more

@vongillus @gofaster @jarrah31 @filby112 @lejibxl @universe241981 if you have some time, help me test this feature by using the attached nightly release and let me know if it works and suits your needs.
rtsp-simple-server_v0.21.6-17-g885a391_linux_arm64v8.tar.gz
rtsp-simple-server_v0.21.6-17-g885a391_linux_armv6.tar.gz
rtsp-simple-server_v0.21.6-17-g885a391_linux_armv7.tar.gz

Thanks for adding this!  The rtsp-simple-server_v0.21.6-17-g885a391_linux_armv7 nightly seems to be crashing for me.

2023/03/25 09:06:03 INF MediaMTX / rtsp-simple-server v0.21.6-17-g885a391
2023/03/25 09:06:03 DEB [path cam] created
2023/03/25 09:06:03 DEB path manager created
2023/03/25 09:06:03 INF [path cam] [rpicamera source] started
2023/03/25 09:06:03 INF [RTSP] listener opened on :8554 (TCP), :8000 (UDP/RTP), :8001 (UDP/RTCP)
2023/03/25 09:06:03 INF [RTSPS] listener opened on :8322 (TCP)
2023/03/25 09:06:03 INF [RTMP] listener opened on :1935
2023/03/25 09:06:03 INF [RTMPS] listener opened on :1936
2023/03/25 09:06:03 INF [HLS] listener opened on :8888
2023/03/25 09:06:03 INF [WebRTC] listener opened on :8889 (HTTP)
free(): invalid pointer
2023/03/25 09:06:03 INF [path cam] [rpicamera source] ERR: process exited unexpectedly
2023/03/25 09:06:05 INF [RTSP] [conn <IP_ADDRESS>:60122] opened
2023/03/25 09:06:05 DEB [RTSP] [conn <IP_ADDRESS>:60122] [c->s] OPTIONS rtsp://<IP_ADDRESS>:8554/cam RTSP/1.0
CSeq: 1
User-Agent: Lavf58.29.100

2023/03/25 09:06:05 DEB [RTSP] [conn <IP_ADDRESS>:60122] [s->c] RTSP/1.0 200 OK
CSeq: 1
Public: DESCRIBE, ANNOUNCE, SETUP, PLAY, RECORD, PAUSE, GET_PARAMETER, TEARDOWN
Server: gortsplib

2023/03/25 09:06:05 DEB [RTSP] [conn <IP_ADDRESS>:60122] [c->s] DESCRIBE rtsp://<IP_ADDRESS>:8554/cam RTSP/1.0
Accept: application/sdp
CSeq: 2
User-Agent: Lavf58.29.100

2023/03/25 09:06:05 DEB [RTSP] [conn <IP_ADDRESS>:60122] non-critical authentication error:
2023/03/25 09:06:05 DEB [RTSP] [conn <IP_ADDRESS>:60122] [s->c] RTSP/1.0 401 Unauthorized
CSeq: 2
Server: gortsplib
WWW-Authenticate: Basic realm="foo"
WWW-Authenticate: Digest realm="foo", nonce="157422fc43aa2410f29d7005eeb13908"

2023/03/25 09:06:05 DEB [RTSP] [conn <IP_ADDRESS>:60122] [c->s] DESCRIBE rtsp://<IP_ADDRESS>:8554/cam RTSP/1.0
Accept: application/sdp
Authorization: Digest username="foo", realm="foo", nonce="157422fc43aa2410f29d7005eeb13908", uri="rtsp://<IP_ADDRESS>:8554/cam", response="360b4ff1870c9d40c7c9203419ae1920"
CSeq: 3
User-Agent: Lavf58.29.100

2023/03/25 09:06:05 DEB [RTSP] [conn <IP_ADDRESS>:60122] [s->c] RTSP/1.0 404 Not Found
CSeq: 3
Server: gortsplib

2023/03/25 09:06:05 INF [RTSP] [conn <IP_ADDRESS>:60122] closed (no one is publishing to path 'cam')
free(): invalid pointer
2023/03/25 09:06:08 INF [path cam] [rpicamera source] ERR: process exited unexpectedly
2023/03/25 09:06:10 INF [RTSP] [conn <IP_ADDRESS>:60124] opened
2023/03/25 09:06:10 DEB [RTSP] [conn <IP_ADDRESS>:60124] [c->s] OPTIONS rtsp://<IP_ADDRESS>:8554/cam RTSP/1.0
CSeq: 1
User-Agent: Lavf58.29.100

2023/03/25 09:06:10 DEB [RTSP] [conn <IP_ADDRESS>:60124] [s->c] RTSP/1.0 200 OK
CSeq: 1
Public: DESCRIBE, ANNOUNCE, SETUP, PLAY, RECORD, PAUSE, GET_PARAMETER, TEARDOWN
Server: gortsplib

2023/03/25 09:06:10 DEB [RTSP] [conn <IP_ADDRESS>:60124] [c->s] DESCRIBE rtsp://<IP_ADDRESS>:8554/cam RTSP/1.0
Accept: application/sdp
CSeq: 2
User-Agent: Lavf58.29.100

2023/03/25 09:06:10 DEB [RTSP] [conn <IP_ADDRESS>:60124] non-critical authentication error:
2023/03/25 09:06:10 DEB [RTSP] [conn <IP_ADDRESS>:60124] [s->c] RTSP/1.0 401 Unauthorized
CSeq: 2
Server: gortsplib
WWW-Authenticate: Basic realm="foo"
WWW-Authenticate: Digest realm="foo", nonce="1202f1f96e223723028da238681ee30f"

2023/03/25 09:06:10 DEB [RTSP] [conn <IP_ADDRESS>:60124] [c->s] DESCRIBE rtsp://<IP_ADDRESS>:8554/cam RTSP/1.0
Accept: application/sdp
Authorization: Digest username="foo", realm="foo", nonce="1202f1f96e223723028da238681ee30f", uri="rtsp://<IP_ADDRESS>:8554/cam", response="fc1332573876eb60f008aebf14078447"
CSeq: 3
User-Agent: Lavf58.29.100

2023/03/25 09:06:10 DEB [RTSP] [conn <IP_ADDRESS>:60124] [s->c] RTSP/1.0 404 Not Found
CSeq: 3
Server: gortsplib

2023/03/25 09:06:10 INF [RTSP] [conn <IP_ADDRESS>:60124] closed (no one is publishing to path 'cam')
free(): invalid pointer
2023/03/25 09:06:13 INF [path cam] [rpicamera source] ERR: process exited unexpectedly
2023/03/25 09:06:15 INF [RTSP] [conn <IP_ADDRESS>:60126] opened
2023/03/25 09:06:15 DEB [RTSP] [conn <IP_ADDRESS>:60126] [c->s] OPTIONS rtsp://<IP_ADDRESS>:8554/cam RTSP/1.0
CSeq: 1
User-Agent: Lavf58.29.100

...

host <IP_ADDRESS> is a NVR
The system that rtsp-simple-server runs on is a Pi 3B+
$ apt list | grep -i -e libfreetype -e libcamera0 | grep installed
libcamera0/stable,now 0~git20230302+923f5d70-1 armhf [installed,automatic]
libfreetype-dev/stable,now 2.10.4+dfsg-1+deb11u1 armhf [installed,automatic]
libfreetype6-dev/stable,now 2.10.4+dfsg-1+deb11u1 armhf [installed]
libfreetype6/stable,now 2.10.4+dfsg-1+deb11u1 armhf [installed,automatic]

$ uname -a
Linux rpi3b-1 6.1.19-v7+ #1637 SMP Tue Mar 14 11:04:52 GMT 2023 armv7l GNU/Linux

$ lsb_release --all
No LSB modules are available.
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 11 (bullseye)
Release:        11
Codename:       bullseye

@gofaster can you post your configuration?

Hi @aler9
Thank you for implementing this timestamp feature!
I've tested the nightly build and can confirm it works. 🥳
The only issue that might need looking into is text visibility on a white background as seen in the screenshot below.

@gofaster can you post your configuration?

Here is the full config (stripped out most of the comments).  Above log was with logLevel: debug
logLevel: info
logDestinations: [stdout]
logFile: /tmp/rtsp-simple-server.log

readTimeout: 10s
writeTimeout: 10s
readBufferCount: 512

externalAuthenticationURL:
api: no
apiAddress: <IP_ADDRESS>:9997

metrics: no
metricsAddress: <IP_ADDRESS>:9998

pprof: no
pprofAddress: <IP_ADDRESS>:9999

runOnConnect:
runOnConnectRestart: no

rtspDisable: no
protocols: [udp, multicast, tcp]
encryption: "optional"
rtspAddress: :8554
rtspsAddress: :8322
rtpAddress: :8000
rtcpAddress: :8001
multicastIPRange: <IP_ADDRESS>/16
multicastRTPPort: 8002
multicastRTCPPort: 8003
serverKey: /etc/ssl/private/x.key
serverCert: /etc/ssl/certs/x.crt
authMethods: [basic, digest]

rtmpDisable: no
rtmpAddress: :1935
rtmpEncryption: "optional"
rtmpsAddress: :1936
rtmpServerKey: /etc/ssl/private/x.key
rtmpServerCert: /etc/ssl/certs/x.crt

hlsDisable: no
hlsAddress: :8888
hlsAlwaysRemux: no
hlsVariant: lowLatency
hlsSegmentCount: 7
hlsSegmentDuration: 1s
hlsPartDuration: 200ms
hlsSegmentMaxSize: 50M
hlsAllowOrigin: '*'
hlsEncryption: yes
hlsServerKey: /etc/ssl/private/x.key
hlsServerCert: /etc/ssl/certs/x.crt
hlsTrustedProxies: []

webrtcDisable: no
webrtcAddress: :8889
webrtcEncryption: no
webrtcServerKey: /etc/ssl/private/x.key
webrtcServerCert: /etc/ssl/certs/x.cer
webrtcAllowOrigin: '*'
webrtcTrustedProxies: []
webrtcICEServers:

paths:
  cam:
    source: rpiCamera
    sourceProtocol: automatic
    sourceAnyPortEnable: no
    sourceFingerprint:

    sourceOnDemand: no
    sourceOnDemandStartTimeout: 10s
    sourceOnDemandCloseAfter: 10s

    sourceRedirect:
    disablePublisherOverride: no
    fallback:

    rpiCameraCamID: 0
    # width of frames
    rpiCameraWidth: 1640
    # height of frames
    rpiCameraHeight: 1232
    # flip horizontally
    rpiCameraHFlip: true
    # flip vertically
    rpiCameraVFlip: true
    # brightness [-1, 1]
    rpiCameraBrightness: 0.17
    # contrast [0, 16]
    rpiCameraContrast: 1
    # saturation [0, 16]
    rpiCameraSaturation: 1
    # sharpness [0, 16]
    rpiCameraSharpness: 1
    # exposure mode.
    # values: normal, short, long, custom
    rpiCameraExposure: short
    # auto-white-balance mode.
    # values: auto, incandescent, tungsten, fluorescent, indoor, daylight, cloudy, custom
    rpiCameraAWB: auto
    # denoise operating mode.
    # values: auto, off, cdn_off, cdn_fast, cdn_hq
    rpiCameraDenoise: auto
    # fixed shutter speed, in microseconds.
    rpiCameraShutter: 0
    # metering mode of the AEC/AGC algorithm.
    # values: centre, spot, matrix, custom
    rpiCameraMetering: spot
    # fixed gain
    rpiCameraGain: 0
    # EV compensation of the image [-10, 10]
    rpiCameraEV: 0
    # Region of interest, in format x,y,width,height
    rpiCameraROI:
    # tuning file
    rpiCameraTuningFile: /usr/share/libcamera/ipa/raspberrypi/imx219_160.json
    #rpiCameraTuningFile:
    # sensor mode, in format [width]:[height]:[bit-depth]:[packing]
    # bit-depth and packing are optional.
    rpiCameraMode: 3280:2464:10:YUV420
    # frames per second
    rpiCameraFPS: 10
    # period between IDR frames
    rpiCameraIDRPeriod: 10
    # bitrate
    rpiCameraBitrate: 800000
    # H264 profile
    rpiCameraProfile: main
    # H264 level
    rpiCameraLevel: '4.1'
    # Autofocus mode
    # values: auto, manual, continuous
    rpiCameraAfMode: auto
    # Autofocus range
    # values: normal, macro, full
    rpiCameraAfRange: normal
    # Autofocus speed
    # values: normal, fast
    rpiCameraAfSpeed: normal
    # Lens position (for manual autofocus only), will be set to focus to a specific distance
    # calculated by the following formula: d = 1 / value
    # Examples: 0 moves the lens to infinity.
    #           0.5 moves the lens to focus on objects 2m away.
    #           2 moves the lens to focus on objects 50cm away.
    rpiCameraLensPosition: 0.0
    # Specifies the autofocus window, in the form x,y,width,height where the coordinates
    # are given as a proportion of the entire image.
    rpiCameraAfWindow:
    # disables printing text on each frame.
    rpiCameraTextOverlayDisable: false
    # text that is printed on each frame.
    # format is the one of the strftime() function.
    rpiCameraTextOverlay: '%Y-%m-%d %H:%M:%S - Door'

    # Username required to publish.
    # SHA256-hashed values can be inserted with the "sha256:" prefix.
    publishUser:
    # Password required to publish.
    # SHA256-hashed values can be inserted with the "sha256:" prefix.
    publishPass:
    # IPs or networks (x.x.x.x/24) allowed to publish.
    publishIPs: []

    readUser: <x>
    readPass: <x>
    readIPs: []

    runOnInit:
    runOnInitRestart: no

    runOnDemand:
    runOnDemandRestart: no
    runOnDemandStartTimeout: 10s
    runOnDemandCloseAfter: 10s
    runOnReady:
    runOnReadyRestart: no
    runOnRead:
    runOnReadRestart: no

@jarrah31 i've added an opaque rectangle below the text, let me know if the text is clearer now.

@gofaster i found the issue and uploaded a fix, let me know if it works.

@jarrah31 i've added an opaque rectangle below the text, let me know if the text is clearer now.

Thank you @aler9, but sorry to be a pain, could you include a link to a precompiled binary version of the code with the update please? I'm using the armv7 on a Pi4. Thanks.

It's in the comment above, i've updated the link

@gofaster i found the issue and uploaded a fix, let me know if it works.

Yes it's working.  Thanks so much for adding this feature!

It's in the comment above, i've updated the link

Aha! Thanks for doing that and for implementing the timestamp. I too can confirm it works great now!

Tested with this "rtsp-simple-server_v0.21.6-19-gc8f9a6d_linux_arm64v8.tar.gz"
And it works!

Hm...somehow, the stream cannot hold long. The RPi4 1GB halted after couple of minutes and cannot be stream again.

This isn't a functional issue but a "UI" one - it's really weird to me that this is a "Disable" function, or that it's enabled by default. It's not core functionality of a camera stream unless you're doing the specific use case of a Pi CCTV camera, not necessarily appropriate even then, and adds additional processing complexity when using low end devices like a Zero. The default should assume worst case hardware capability. Additionally, if the feature is extended to other sources down the line, then there is no need to have a separate variable for every single possible source type.
Surely the syntax should be something like:
    # Adds a printable text overlay to the top left of the screen
    rpiCameraTextOverlayEnable: false

    # Define the format of the text overlay when using rpiCamera source:
    # (Should follow the syntax of the strftime() function)
    textOverlayFormat: '%Y-%m-%d %H:%M:%S - MediaMTX'

Or even:
    # Adds a printable text overlay to the top left of the screen.
    # This feature is currently only supported on rpiCamera source!
    textOverlayEnable: false

    # Define the format of the text overlay when using rpiCamera source:
    # (Should follow the syntax of the strftime() function)
    textOverlayFormat: '%Y-%m-%d %H:%M:%S - MediaMTX'

@mo-g the feature adds a practically-nonexistent processing complexity since it is implemented by hacking frame buffers before they are sent to the hardware encoder, and both components are present even when the camera is used without any overlay.
The feature can't be generalized to other sources since in most other cases it would require decoding and re-encoding the stream, something that this server tries to avoid in any possible way. The only reason why the feature is available on the Raspberry Pi is because the Raspberry Pi doesn't need to decode anything, because it receives raw YUV frames from the camera, and encodes the stream with an hardware component without placing any load on the CPU.
Anyway, you're right about disabling it by default, in order to maintain compatibility with existing configurations.

Thanks for changing the syntax, that works better and I understand why you wouldn't generalise further. :)

I love this! Can we have X,Y position parameters of text (or right corners) with different font file? Just to unite with other systems/cameras?

@JanPono i intentionally left most customization settings outside the PR in order to encourage the community to contribute them. This is an open source project and settings like text position and font are trivial to implement.

Is it possible to have some dynamic text overlay working like :
on mediamtx.yml
rpiCameraTextOverlay: '%Y-%m-%d %H:%M:%S - $CPLOAD'
and export CPLOAD=TEST
Many thanks.

@Topper69 you can already do this by renaming the configuration file mediamtx.yml.in and using any environment variable inside it:
paths:
  cam:
    ...
    rpiCameraTextOverlay: '%Y-%m-%d %H:%M:%S - $CPLOAD'

then start the server with
export CPLOAD=TEST
cat mediamtx.yml.in | envsubst > mediamtx.yml
./mediamtx

@aler9 Thanks. Do you have another solution to change the text overlay on the fly (without overwriting the .yml file and reloading the configuration) ??

if you need a dynamic solution you can pull the video stream with a video editing software like OBS and perform all the dynamic updates you want.

hi, is this for rpi camera only? is it possible to apply to rtsp stream?

hi, is this for rpi camera only? is it possible to apply to rtsp stream?

Yes this setting si only for rpi camera. If you want to do it for another camera, use a third party app like gstreamer. Look at the readme for more info.


Fix "the input device is not a TTY" and pull latest Docker image

pull the latest docker image on each make
fix the invocation of docker run by removing -it which breaks in GH Actions and is not needed in general

@t0mk If you merge this first, I might have to rebase the other PRs (or the changes may be the same and allow merging).
The diffs on the other PRs should be smaller after this PR which updates all of the generated files with the latest go-swagger image.

@displague oh, I was going through the PR chonologicaly. I've just merged #14 and #15.
I invited to you to collaborate in this repo, hopefully that gives you more space to operate.

otherwuise this PR looks good and git index is clean after make all. Merging.


entity not available

I'm getting this:
Update for media_player.customtv fails Traceback (most recent call last):   File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 279, in async_update_ha_state     await self.async_device_update()   File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 476, in async_device_update     await self.hass.async_add_executor_job(self.update)   File "/usr/local/lib/python3.7/concurrent/futures/thread.py", line 57, in run     result = self.fn(*self.args, **self.kwargs)   File "/usr/src/homeassistant/homeassistant/util/__init__.py", line 240, in wrapper     result = method(*args, **kwargs)   File "/usr/src/homeassistant/homeassistant/util/__init__.py", line 240, in wrapper     result = method(*args, **kwargs)   File "/config/custom_components/samsungtv_tizen/media_player.py", line 320, in update     smartthings.device_update(self)   File "/config/custom_components/samsungtv_tizen/smartthings.py", line 40, in device_update     data = resp.json()   File "/usr/local/lib/python3.7/site-packages/requests/models.py", line 897, in json     return complexjson.loads(self.text, **kwargs)   File "/usr/local/lib/python3.7/site-packages/simplejson/__init__.py", line 525, in loads     return _default_decoder.decode(s)   File "/usr/local/lib/python3.7/site-packages/simplejson/decoder.py", line 370, in decode     obj, end = self.raw_decode(s)   File "/usr/local/lib/python3.7/site-packages/simplejson/decoder.py", line 400, in raw_decode     return self.scan_once(s, idx=_w(s, idx).end()) simplejson.errors.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
HA 106.3 on Rpi4, Samsung NU8000. It sporadically works but most times I'm getting this error. IP, MAC, Device_id and api_key are correct.

IP, MAC, Device_id and api_key are correct.

No, that error means that ur api_key and/or device_id is NOT CORRECT.
Many here make the mistake of using the Network Device ID instead of the actual Device ID.

You're correct, I had the Network Device ID in config.yaml instead of Device ID.
BUT, it's super weird because with the wrong device_ID, I did get a list of apps in Source (when the integration worked at all). Now with correct ID, I only get TV and HDMI. Everything is restarted, new token was generated.

The app_list has nothing to do with the SmartThings features. Never rely on the autogenerated app_list, for one, it cannot be extracted from a TV that is turned off.
Always set the app_list manually in ur config for best performance.

Also, now that u have SmartThings enabled, use the ST_TV, ST_HDMI1, ST_HDMI2, ST_HDMI3, etc in your source_list to efficiently set input sources.

The entity doesn't get created with this in config.yaml:
source_list: '{"Kodi": "ST_HDMI2", "PC": "ST_HDMI3", "Playstation": "ST_HDMI1}'
It gives this error:
Error while setting up samsungtv_tizen platform for media_player Traceback (most recent call last):   File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 179, in _async_setup_platform     await asyncio.wait_for(asyncio.shield(task), SLOW_SETUP_MAX_WAIT)   File "/usr/local/lib/python3.7/asyncio/tasks.py", line 442, in wait_for     return fut.result()   File "/usr/local/lib/python3.7/concurrent/futures/thread.py", line 57, in run     result = self.fn(*self.args, **self.kwargs)   File "/config/custom_components/samsungtv_tizen/media_player.py", line 157, in setup_platform     add_entities([SamsungTVDevice(host, port, name, timeout, mac, uuid, update_method, update_custom_ping_url, source_list, app_list, api_key, device_id, show_channel_number, broadcast)])   File "/config/custom_components/samsungtv_tizen/media_player.py", line 181, in __init__     self._source_list = json.loads(source_list)   File "/usr/local/lib/python3.7/json/__init__.py", line 348, in loads     return _default_decoder.decode(s)   File "/usr/local/lib/python3.7/json/decoder.py", line 337, in decode     obj, end = self.raw_decode(s, idx=_w(s, 0).end())   File "/usr/local/lib/python3.7/json/decoder.py", line 353, in raw_decode     obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Unterminated string starting at: line 1 column 55 (char 54)
Manually added Apps list works fine.

i guess we can close this ticket now

Fully working! Thanks for your help!


Improve speed when using sonarwhal globally

If you install sonarwhal globally it takes a lot of time to load, even for the most basic thing like sonarwhal -v.
We need to investigate where the bottle neck is. This doesn't seem to happen when installed as a dependency so it might be related to something like finding configuration files, resources, etc.

After a lot of tests, I have extracted this table:
| # Require* | Time (ms)
-- | -- | --
Global | 8017 | 6796.469
Global** | 6274 | 5650.207
Local | 8017 | 6658.993
Local** | 6274 | 5449.231
Project folder | 4551 | 3994.879
Yarn Local | 6032 | 5053.236
* Total number that require is called.
** After deleting sonarwhal from sri and no-bom rules.
These values are taken from the beginning until just before start to analyze a web site.
As you can see, the lowest the number of request, the lowest the time it takes.
The problem I found was that a couple of rules (sri and no-bom) are installing sonarwhal in their own package, and that consequently is increasing a lot the number of request to require, because those rules has to load their own version of sonarwhal, instead of using the main one.
This can be caused because the latest versions of those rules has configured sonarwhal 1.5.0 but the current version of sonarwhal is 1.6.0. But anyway I don't know why npm is installing it, because it is configure as a devDependency and a peerDependency.
As you can see, the difference of requests is still huge, and that is because of how npm install the dependencies. Instead of sharing packages (as we do in the project folder), npm is installing all the dependencies in each package.
The number of request using yarn is a little bit lower because yarn share more packages than npm.

Can you update those packages to the latest version?
I'll try to publish a new version later this week and hopefully we should see some improvements in the published version.

From: Jesus David García Gomez<EMAIL_ADDRESS>Sent: Tuesday, April 17, 2018 10:13:57 AM
To: sonarwhal/sonarwhal
Cc: Antón Molleda; Author
Subject: Re: [sonarwhal/sonarwhal] Improve speed when using sonarwhal globally (#896)
After a lot of tests, I have extracted this table:
    # Require*      Time (ms)

Global  8017    6796.469
Global**        6274    5650.207
Local   8017    6658.993
Local** 6274    5449.231
Project folder  4551    3994.879
Yarn Local      6032    5053.236

Total number that require is called.
** After deleting sonarwhal from sri and no-bom rules.

These values are taken from the beginning until just before start to analyze a web site.
As you can see, the lowest the number of request, the lowest the time it takes.
The problem I found was that a couple of rules (sri and no-bom) are installing sonarwhal in their own package, and that consequently is increasing a lot the number of request to require, because those rules has to load their own version of sonarwhal, instead of using the main one.
This can be caused because the latest versions of those rules has configured sonarwhal 1.5.0 but the current version of sonarwhal is 1.6.0. But anyway I don't know why npm is installing it, because it is configure as a devDependency and a peerDependency.
As you can see, the difference of requests is still huge, and that is because of how npm install the dependencies. Instead of sharing packages (as we do in the project folder), npm is installing all the dependencies in each package.
The number of request using yarn is a little bit lower because yarn share more packages than npm.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/sonarwhal/sonarwhal/issues/896#issuecomment-382071619, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AAlBgjjcYeObBxeZ4vasRNv1WdfswUk-ks5tpiLVgaJpZM4Ss9rk.

They are updated in the project, but the changes are not published.

They are updated in the project, but the changes are not published.

@sarvaje I'll publish a new version of those packages. :)

They are updated in the project, but the changes are not published.

@sarvaje I'll  publish a new version of those packages.

Done.

I'm also happy to advise along the way.

It looks like we are having issues with TypeScript and yarn workspaces when building and switching to esnext modules instead of commonjs. We are not the only ones:

https://github.com/Quramy/lerna-yarn-workspaces-example#resolve-dependencies-as-typescript-modules
https://www.developertown.com/example-typescript-monorepo-part-1-react-native/

Basically the recommendation seems to be to use paths in tsconfig.json but I'm having trouble making it work 😔
Another option would be to use the nohoist option from yarn for the packages that are only part of packages/sonarwhal and not shared (this would generate an output similar to what npm does when we publish).
@sonarwhal/contributors has anyone had a similar problem in the past? Any recommendations?

Some progress with webpack, I've managed to compile the CLI (problem was moduleResolution wasn't node) and in production mode the size is 2.16MiB 🎉 (there are a few packages that might still need to be downloaded)

Project still doesn't work but size wise it's a huge improvement to what we are shipping right now taking into account the dependencies.

Another thing we can do to improve the load speed (regardless of it is local or global):
Right now the cli allows to create new-rule, new-parser, init, etc. and we are loading all the dependencies of these tasks even though we are only going to execute one. The idea is to use dynamic imports to only load what's necessary in each case.
I'll start working on this.

Original graph using require-so-slow to instrument the requires until this moment in cli.ts:

Total requires: 3018
Time: ~4.4s
And this is the one with lazy loading:

Total requires: 936
Time: ~1.3s

Moving the discussion about webpack to its own issue in #1102

I think we've improved quite a lot the speed compared to previous version with all the splitting and lazy loading. Closing this.


Find Next Unfarmed Item

Button that will redirect you to Next Unfarmed Item, or page of list of items that are not already on your account.

Compare 2 Lists of Account Items and Wiki Items.
Find Items That Can be farmed. (Non Rare, Non Special Offer, Not Priced by AC etc)
There are 2 options of displaying it:
3.1. Display it as popup.
3.2. Display it on new page as list of items. (Probably will chose that as i can add more filters to it then)

Wiki Items will be provided from JSON data that is scraped from my python scraper (Still Working on)

Perhaps a new page will help players focus more than a small popup.

I want a button that pops up the untapped items on a page (not to get all the items from the wiki), it's a short section that makes it faster and more convenient. If possible, sort them by condition:

first: location
last: price

It will help you focus more.

And with items with the same name with a suffix. You can set it apart as a warning board, so users can identify it as an item that needs careful inspection. Of course it's also in the UI of the popup, I mean items with the same name and different suffix in the wiki need to be displayed along with the unfarmed items.
Issue:

Item manager and wiki already exist (item with the same name and different suffix)

Show wiki items in that web page (Not all from wiki data). Here it will be in the warning panel, although it is there, it will still be displayed in the unfarmed list.

Manager item is not available yet

Of course, you will have to display the unfarmed items in that site and arrange them.

You will have to split into 2 main tables:

Warning panel: contains existing items but has the same name and different suffix (Only when the manager has it and the wiki can find it, it will work).
Unfarmed list table: contains items that are not yet available

Made working prototype for unfarmed items page #11
Available by clicking Temporary button on the left side of wiki:

Decided for now on a page (I Found it more appealing and  less clutter)
(You can hover on filter to see what it enables/disables view of)

Things needed to be added:

Saving filter settings (Default to Normal Items off)
Change 2 State of filter to red X instead of just blank, to better indicate that it excludes that tag.
Add Search tab for searching table
Filters for table to arrange them alphabetically etc.

Current Issues:

filterItem can't process multiple monsters from data. (Leaves "Get From" row blank)

Also i should separate wikiItems.json into smaller json without unnecessary data, for faster loads, it is (22mb now)
Will take a break on that and work on other features, and to clean code .-.

Currently this part is not good, missing many things like

There is no link in the item
Price
UI

I don't have any suggestions to help you on this part yet, these are my opinions, will need more users to make it perfect.


Conduct preliminary comparative analysis of router packages

Subtask to #10.
The goal is to conduct preliminary analysis of router packages based on the navigation scenarios identified in #4.
List of packages for analysis (A-Z):
auto_route
beamer
flit-router
flouter
fluro
flutter_modular
page_router
qlevar_router
vrouter

This is the information I was able to get via documentations so far.  This is meant to be work-in-progress. Please feel free to drop a line if any of this information is inaccurate or you see a way to improve it. I would love to hear your thoughts on this, especially If you are the authors/contributors of these packages.
(Scroll to see all >)
| auto_route | beamer | flit-router | flouter | fluro | flutter_modular | page_router | qlevar_router | vrouter
-- | -- | -- | -- | -- | -- | -- | -- | -- | --
Deep Linking - Path Parameters | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅
Deep Linking - Query Parameters | ✅ | ✅ | ✅ | 🆇 | ✅ | ✅ | 🆇 | ✅ | ✅
Dynamic Linking | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅
Validation (Login/Logout/Sign-up Routing) | 🆇 - route validation happens at the route pattern level, but no custom validators (e.g. check if id is valid before routing) | ✅ - BeamGuard | 🆇 - in TODO list | 🆇 | 🆇 - in TODO list | ✅ | ✅ - no way to specify "default" route when validation fails (e.g. go to login/ screen if user is logged out) | 🆇 | ✅- VNavigationGuard
Nested Routing | ✅ | 🆇 - in TODO list. Currently supports nested routing, but it's not yet synchronized with browsers | 🆇 | 🆇 - in TODO list | 🆇 - in TODO list | 🆇 | 🆇 | ✅ | ✅
Skipping Stacks | ✅ | ✅ | ✅ | 🆇 | 🆇 | 🆇 | ✅ | ✅ | 🆇
Custom Pages / Custom transition animations | 🆇 | 🆇 | ✅ | 🆇 | ✅ | ✅ | ✅ | 🆇 | ✅

Hi, I am the developer of vrouter. Thanks for your work it will definitely help every package to see where they can improve !
Speaking of, I see that you did not check the “Skipping Stacks” scenario for vrouter. I tried to follow the Navigation scenario storyboards and I did implement the scenario of skipping stack

Here is the code for Skipping stacks
import 'package:flutter/material.dart';
import 'package:vrouter/vrouter.dart';

main() {
  runApp(
    VRouter(
      debugShowCheckedModeBanner: false,
      theme: ThemeData(
        textButtonTheme: TextButtonThemeData(
          style: ButtonStyle(
            padding: MaterialStateProperty.all(EdgeInsets.all(20.0)),
            backgroundColor: MaterialStateColor.resolveWith((states) => Colors.black),
            textStyle: MaterialStateProperty.all(TextStyle(fontSize: 16, color: Colors.white)),
          ),
        ),
      ),
      routes: [
        VStacked(
          path: '/search',
          widget: SearchResultPage(),
          subroutes: [
            VStacked(
              path: ':productName',
              name: 'productPage',
              widgetBuilder: (context) => ProductPage(
                product: allProducts.firstWhere(
                  (product) =>
                      product.name ==
                      VRouteElementData.of(context).pathParameters['productName'],
                ),
              ),
            ),
          ],
        ),
        VStacked(
          // In parenthesis is a regExp which allows us to limit the productType
          //    - This is less verbose than creating multiple route
          //    - We can access the product type with the path parameter productType
          path: r'/:productType(book|shoes|pillow)',
          widgetBuilder: (context) => CategoryPage(
            products: allProducts
                .where((product) =>
                    productTypeToString(product.type) ==
                    VRouteElementData.of(context).pathParameters['productType'])
                .toList(),
          ),
          subroutes: [
            VStacked(
              path: ':productName',
              name: 'productPage',
              widgetBuilder: (context) => ProductPage(
                product: allProducts.firstWhere(
                  (product) =>
                      product.name ==
                      VRouteElementData.of(context).pathParameters['productName'],
                ),
              ),
            ),
          ],
        ),
        VRouteRedirector(path: ':_(.*)', redirectTo: '/search'),
      ],
    ),
  );
}

// We do not implement a search bar but only the page on which a user would be
// after he/she typed in a certain url
class SearchResultPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Center(child: Text('Dynamic linking')),
      ),
      body: Column(
        mainAxisSize: MainAxisSize.min,
        children: [
          Padding(
            padding: const EdgeInsets.symmetric(vertical: 30.0, horizontal: 20),
            child: Align(
              alignment: Alignment.topLeft,
              child: Text(
                'Here is the result for you search "stars":',
                style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
              ),
            ),
          ),
          ProductList(
            products: allProducts.where((product) => product.name.contains("stars")).toList(),
          )
        ],
      ),
    );
  }
}

class ProductPage extends StatelessWidget {
  final Product product;

  const ProductPage({Key key, @required this.product}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Center(child: Text('Dynamic linking')),
        actions: [
          IconButton(
            icon: Icon(Icons.search),
            onPressed: () => VRouterData.of(context).push('/search'),
          )
        ],
      ),
      body: Hero(
        tag: product.name,
        child: Material(
          child: Container(
            color: productTypeColor(product.type),
            child: Center(
              child: Column(
                mainAxisSize: MainAxisSize.min,
                children: [
                  Text('Type: ${productTypeToString(product.type)}'),
                  Text(product.name),
                  SizedBox(
                    height: 20,
                  ),
                  TextButton(
                    onPressed: () =>
                        VRouterData.of(context).push('/${productTypeToString(product.type)}'),
                    child: Text(
                      'See all ${productTypeToString(product.type)}',
                      style: TextStyle(color: Colors.white),
                    ),
                  ),
                ],
              ),
            ),
          ),
        ),
      ),
    );
  }
}

class CategoryPage extends StatelessWidget {
  final List<Product> products;

  const CategoryPage({Key key, @required this.products}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Center(child: Text('Dynamic linking')),
        actions: [
          IconButton(
            icon: Icon(Icons.search),
            onPressed: () => VRouterData.of(context).push('/search'),
          )
        ],
      ),
      body: ProductList(
        products: products,
      ),
    );
  }
}

class ProductList extends StatelessWidget {
  final List<Product> products;

  const ProductList({Key key, @required this.products}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Center(
      child: Wrap(
        spacing: 20,
        runSpacing: 20,
        alignment: WrapAlignment.center,
        children: products,
      ),
    );
  }
}

class Product extends StatelessWidget {
  final String name;
  final ProductTypes type;

  const Product({Key key, @required this.name, @required this.type}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return InkWell(
      onTap: () => VRouterData.of(context).push(name),
      child: Hero(
        tag: name,
        child: Material(
          child: Container(
            height: 200,
            width: 200,
            color: productTypeColor(type),
            child: Center(
              child: Column(
                mainAxisSize: MainAxisSize.min,
                children: [
                  Text('Type: ${productTypeToString(type)}'),
                  Text(name),
                ],
              ),
            ),
          ),
        ),
      ),
    );
  }
}

enum ProductTypes { book, shoe, pillow }

Color productTypeColor(ProductTypes itemType) {
  switch (itemType) {
    case ProductTypes.book:
      return Colors.greenAccent;
    case ProductTypes.shoe:
      return Colors.redAccent;
    case ProductTypes.pillow:
      return Colors.blueAccent;
    default:
      return Colors.black;
  }
}

String productTypeToString(ProductTypes itemType) {
  switch (itemType) {
    case ProductTypes.book:
      return 'book';
    case ProductTypes.shoe:
      return 'shoes';
    case ProductTypes.pillow:
      return 'pillow';
    default:
      return 'unknown';
  }
}

final bookProducts = <Product>[
  Product(name: 'Book stars', type: ProductTypes.book),
  Product(name: 'old book', type: ProductTypes.book),
  Product(name: 'eBook', type: ProductTypes.book),
];

final shoesProducts = <Product>[
  Product(name: 'Shoes of stars', type: ProductTypes.shoe),
  Product(name: 'Only One Shoe', type: ProductTypes.shoe),
  Product(name: 'Shoe fleur', type: ProductTypes.shoe),
];

final pillowProducts = <Product>[
  Product(name: 'Best pillow', type: ProductTypes.pillow),
  Product(name: 'Pillow stars', type: ProductTypes.pillow),
  Product(name: 'This is not a pillow', type: ProductTypes.pillow),
];

final allProducts = <Product>[...bookProducts, ...shoesProducts, ...pillowProducts];

Maybe did I misunderstood what was described and the feature is missing from vrouter, could you explain me what was intended?

Hi @jackkim9, this is very early days, but I've spent the last week working on an experimental router called Routemaster.
I haven't yet published this on pub.dev, but the code is here: https://github.com/tomgilder/routemaster
I've tried to specifically design it around the navigation scenarios in the storyboard document, and I've documented how it supports them.
I would love any feedback on the API, there's an (example app)[https://github.com/tomgilder/routemaster/blob/main/examples/mobile_app/lib/main.dart] which demos most of the scenarios.
Really loving the detailed UX research on this project, it's awesome!

Hi @lulupointu, thanks for pointing me to the snippet. I've updated the table to note this implementation.
Hi @tomgilder, thanks for sharing your repo. I'll take a look at it soon!

Hi @jackkim9
I do believe that AutoRoute has validation with route guards. It's not quite in his documentation yet, but an example is here: https://github.com/Milad-Akarie/auto_route_library/blob/master/auto_route/example/lib/mobile/router/auth_guard.dart
Also, you can add custom transitions as seen here: https://github.com/Milad-Akarie/auto_route_library/blob/master/auto_route/example/lib/mobile/screens/user-data/routes.dart

Thanks @theweiweiway for sharing this. Will update the table accordingly.

@jackkim9
Hello @jackkim9 , I'm the author of package:flit_router. I'd like to comment about the list above:
https://github.com/flutter/uxr/issues/13#issuecomment-789413420

Nested Routing: I'm working on this feature right now in highest priority.
Validation (Login/Logout/Sign-up Routing): I'm planning to implement this feature after implementing nested routing feature.

Both features are listed in the TODO list.
https://github.com/polyflection/flit_router#todo

Thanks, @ntaoo. I've updated the table to reflect your comment.

Hey @jackkim9, flouter dev here.
As of now there only two point that I don't support.
The first is nested navigation, I have to do some research before going deeper on this point.
The second is validation, on this I also have to do some investigation.
Both need investigation and reflection on my side which will take me some time.
What I already support and is marked I don't here :

query parameters
skipping stack
custom page / transition animation

@Kleak, thank you for the comment. I've updated the table accordingly.

Hi all, qlevar_router here,
just an update for the table qlevar_router supports the validation:
Example
   QRoute(
        name: redirect,
        path: '/home',
        redirectGuard: (path) => AuthService().isAuthed? null : '/login')

and Custom Pages / Custom transition animations
   QRoute(
        name: itemsDetails,
        path: '/details',
        pageType: QRCupertinoPage(), // Here you can set the transition
        onInit: () => print('onInit Items Details'),
        onDispose: () => print('onDispose Items Details'),
        page: (c) => ItemDetailsScreen())
    ]),

the supported types QPage

Thanks @SchabanBo. I'll update the table.

Hi @jackkim9 .
Thanks for include flutter_modular!!
The Nested Routing is represented in doc, but with other name (RouterOutlet)
https://github.com/Flutterando/modular/tree/master/flutter_modular#routeroutlet

Hi there ! I also made this comment at https://github.com/flutter/uxr/issues/7
In terms of an abstracted nav 2.0 and usability, this package has helped me incredibly and I hope that it can be evaluated in this study: https://github.com/felangel/flow_builder
Realizing we can model app navigation with state was really powerful and with that clearly stated in the api, Login/Logout/Sign-up routing, nested routing, nested routing with dialog, manipulation of history stack, and skipping stacks navigation all are simplified, at least to me.
In the package examples, there are snippets of all of these. I will gladly post them when the folder for this becomes available!
Also, the owner (Felix Angelov) is getting ready to add URL parsing support, which I believe will provide for deep and dynamic linking


Use SDL for prefPath

Use SDL for basePath and prefPath.
This changes the directory layout slightly on Linux. PhysFS ignored the organizationName parameter when forming the prefPath, while the SDL functions include it. People may need to move config files and saved games for them to be found at the updated path.
Closes #212
Related #967, #973

I'm going to merge this, though we'll probably want to make a release note about the changed paths for config settings and saved games when OPHD is updated.


[test] Add test for cray module variables

This is a test to ensure that some cray modules include the variables <module_name>_PREFIX and <module_name>_VERSION. It will be more useful as soon as we get a new cdt so that we catch the missing variables early. Moreover, it would be nicer to skip the tests that we know are already failing, instead of making them succeed with the workaround.

Codecov Report

Merging #1598 (edcad4e) into master (70daadc) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master    #1598   +/-   ##
=======================================
  Coverage   87.57%   87.57%
=======================================
  Files          45       45
  Lines        7244     7244
=======================================
  Hits         6344     6344
  Misses        900      900

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 70daadc...edcad4e. Read the comment docs.


NSNull tried to be inserted to NSString property (or String in Swift)

I recently upgraded RestKit to latest version and I am getting crashes when RestKit tries to setValue for NSString as [NSNull null]
I investigated issue and in new version there is new checking for parsing values
// Always set the properties
if (self.shouldSetUnchangedValues) {
    return [self validateValue:value atKeyPath:keyPath];
}

And in validate value there is this code which asks destinationObject to validate property
if ([destinationObject respondsToSelector:@selector(validateValue:forKeyPath:error:)]) {
	NSError *validationError;
	success = [destinationObject validateValue:value forKeyPath:keyPath error:&validationError];

Unfortunately Swift accept NSNull into NSString and then app crashes.
I patched it for myself in destinationObject like this:
public override func validateValue(ioValue: AutoreleasingUnsafeMutablePointer<AnyObject?>, forKeyPath inKeyPath: String, error outError: NSErrorPointer) -> Bool {
    if let memory = ioValue.memory {
        if inKeyPath == "hint" && ioValue.memory is NSNull {
            ioValue.memory = nil
            return true
        }
    }
    return super.validateValue(ioValue, forKeyPath: inKeyPath, error: outError)
}

But that is not perfect solution. Any ideas how to properly fix it? I am not so into RestKit, so I don't know where to patch it. Basically it is bug in NSObject I think, because it accepts this value.
BTW. I guess I am not the only one with an issue.
http://stackoverflow.com/questions/27917104/restkit-json-null-value-crash/28350423#28350423
If you would tell me where could I work on patch (validateValue or check if shouldSetUnchangedValues?) I can do it over weekend.

I have fix for it but to write test I would have to write it in Swift, which implicates more things like enabling project for iOS 7.0 and newer.

RestKit does not do anything special for swift subclasses of NSObject at the moment.
GitHub Issues is for reporting bugs in RestKit and discussing changes to RestKit itself. Please check the documentation, wiki, and existing issues before opening a new issue.
Additionally, please do not post general usage questions to Issues, but instead take them to Stack Overflow.

I know this issue is closed, but I'm putting this out here in case it might help anyone. The reason this is happening is because Restkit cannot introspect Swift classes to figure out the the type of a property.(0.24.1).
In Objective-C, the - (Class)classForKeyPath:(NSString *)keyPath method on RKObjectMapping will return the proper class, whereas in Swift, it returns nil. This can be traced further down to - (NSDictionary *)propertyInspectionForClass:(Class)objectClass not returning the proper values.
In RKObjectMappingOperation.m:
    Class transformedValueClass = propertyMapping.propertyValueClass ?: [self.objectMapping classForKeyPath:propertyMapping.destinationKeyPath];
    if (! transformedValueClass) {
        *outputValue = inputValue;
        return YES;
    }

Because transformedValueClass will always be nil, this causes inputValue to just get assigned to outputValue, ie, NSNull would get assigned to an NSString property.
I have a workaround, documented here(http://stackoverflow.com/a/32279307/175225). The jist of it is to create an RKAttributeMapping with a propertyValueClass defined:
let simpleMapping = RKAttributeMapping(fromKeyPath: "first_name", toKeyPath: "firstName")
simpleMapping.propertyValueClass = NSString.classForCoder()

I have tested that this causes a null json value to be mapped to nil properly. Haven't tested non-optional properties yet.


UI inconsistencies

the clean up table uses a dialog to set the imputation settings.

the transform table (and analysis) use a left side panel to change options

So far, the imputation settings are hidden and cannot be easily explored.

Yes, we have had a trello card for this called "Move imputation settings to a more conspicuous spot (on the left panel somewhere)", it's good to capture it over here.

One solution is to have a new Imputation tab between Clean Up and Transform, and the options should appear in the second sidebar, with a view of the table with imputed values filled in.

closed in favor of #245


Standalone Carbide

Some people have expressed interest in a standalone version of Carbide (no Carbon).

Sapper from the LOVE IRC says that he might fork Carbide and call it Argon, that's a better solution I think.


Failed to load the tree-view-open-files package

[Enter steps to reproduce:]

...
...

Atom: 1.27.1 x64
Electron: 1.7.15
OS: Mac OS X 10.13.4
Thrown From: tree-view-open-files package 0.3.0
Stack Trace
Failed to load the tree-view-open-files package
At Cannot find module 'atom-utils'

Error: Cannot find module 'atom-utils'
    at Module._resolveFilename (module.js:470:15)
    at Module._resolveFilename (/Applications/Atom.app/Contents/Resources/electron.asar/common/reset-search-paths.js:35:12)
    at Function.get_Module._resolveFilename (/Applications/Atom.app/Contents/Resources/app/src/module-cache.js:354:58)
    at Module.require (/app.asar/static/index.js:40:43)
    at require (/Applications/Atom.app/Contents/Resources/app/src/native-compile-cache.js:66:33)
    at /packages/tree-view-open-files/lib/tree-view-open-files.coffee:1:21)
    at /packages/tree-view-open-files/lib/tree-view-open-files.coffee:1:1)
    at /packages/tree-view-open-files/lib/tree-view-open-files.coffee:1:1)
    at Module.get_Module._compile (/Applications/Atom.app/Contents/Resources/app/src/native-compile-cache.js:106:36)
    at Object.value [as .coffee] (/Applications/Atom.app/Contents/Resources/app/src/compile-cache.js:240:29)
    at Module.load (module.js:488:32)
    at tryModuleLoad (module.js:447:12)
    at Function.Module._load (module.js:439:3)
    at Module.require (/app.asar/static/index.js:47:45)
    at require (internal/module.js:20:19)
    at customRequire (/Applications/Atom.app/Contents/Resources/app/static/<embedded>:96:26)
    at Package.requireMainModule (/Applications/Atom.app/Contents/Resources/app/src/package.js:782:33)
    at measure (/Applications/Atom.app/Contents/Resources/app/src/package.js:143:22)
    at Package.measure (/Applications/Atom.app/Contents/Resources/app/src/package.js:88:25)
    at Package.load (/Applications/Atom.app/Contents/Resources/app/src/package.js:129:16)
    at PackageManager.loadAvailablePackage (/Applications/Atom.app/Contents/Resources/app/src/package-manager.js:618:16)
    at config.transact (/Applications/Atom.app/Contents/Resources/app/src/package-manager.js:531:20)
    at Config.transact (/Applications/Atom.app/Contents/Resources/app/src/config.js:819:20)
    at PackageManager.loadPackages (/Applications/Atom.app/Contents/Resources/app/src/package-manager.js:529:23)
    at loadStatePromise.loadState.then (/Applications/Atom.app/Contents/Resources/app/src/atom-environment.js:833:27)
    at <anonymous>

Commands

Non-Core Packages
block-select 1.0.0
atom-material-syntax 1.0.8
atom-material-syntax-light 0.4.6
atom-material-ui 2.1.3
tree-view-open-files 0.3.0

In case anyone is running into this issue, I was able to get around this using the @takeru and @bloopletech forks.
https://github.com/takeru/tree-view-open-files
I uninstalled the default package the from my command prompt, used apm to install the updated package
`
#Uninstall the default
$ apm uninstall tree-view-open-files
#Install the updated package from git
$ cd ~/.atom/packages/
$ git clone https://github.com/takeru/tree-view-open-files
$ cd tree-view-open-files
#Install javascript dependencies
$ apm install
`
If this gets some activity I might create an official atom package from these forks.

@erikig that fixes the bug, but I don't see any list of files. Is there another package people are using?

Goto https://atom.io/packages/open-files


Scons: Improved Python2 detection on Windows.

Now searches in HKEY_CURRENT_USER registry branch as well.
Caused by "Install for current user only" checkbox in windows installer.

That's great. I never knew what installing for user or everybody meant. That will help some people a lot.
I am going to merge this into the next hotfix, but merge for now here.


Vuforia sdk 8.+ no build

I have the same problem.
Error :
/Users/apple/Downloads/VuforiaSampleSwift-master/VuforiaSampleSwift/VuforiaManager/VuforiaEAGLView.h:11:9: error: could not build module 'Vuforia'
#import <Vuforia/UIGLViewProtocol.h>
:0: error: failed to emit precompiled header '/Users/apple/Library/Developer/Xcode/DerivedData/VuforiaSampleSwift-dvryxxfoldtndabwrtwxhvibvpbm/Build/Intermediates.noindex/PrecompiledHeaders/VuforiaSampleSwift-Bridging-Header-swift_1224YBKGJ1X1-clang_18DCYIGZG1FMG.pch' for bridging header '/Users/apple/Downloads/VuforiaSampleSwift-master/VuforiaSampleSwift/VuforiaSampleSwift-Bridging-Header.h'
i Set all setting as per comment.
I am Using vuforia-sdk-ios-8-5-8 latest version link : https://developer.vuforia.com/downloads/sdk
i am also copy Image Targets in my project from vuforia sample project link : https://developer.vuforia.com/downloads/samples
1) Header Path :  $(SRCROOT)/VuforiaSampleSwift/vuforia-sdk-ios-8-5-8/build/include
2) Search Path : $(PROJECT_DIR)/VuforiaSampleSwift/vuforia-sdk-ios-8-5-8/build/lib/arm
3) Objective-Bridging Header : VuforiaSampleSwift/VuforiaSampleSwift-Bridging-Header.h
Please let me know if any thing missing.
Originally posted by @DixPatel009 in https://github.com/yshrkt/VuforiaSampleSwift/issues/3#issuecomment-542636430

I think that somehow the compiler thinks that the vuforia headers are plain C instead of C++ and spouts errors accordingly. Been looking into that but i'm not familiar enough with the intricacies of xcode to know what to check.

Finally managed to get my project working by removing the Module folder from the framework package.
Don't know what it's supposed to do but it works fine without it...


unexpected restart during installation (upgrade)

ℹ Computer information

Windows build number: 18363.959
PowerToys version: 0.20.1
PowerToy module: installer

📝 Provide detailed reproduction steps (if any)

have powertoys 0.19.1 already installed, working normally. NOT running as admin
(as system/nt authority) msiexec /i PowerToysSetup-0.20.1-x64,msi /qb!
computer reboots without warning to complete setup - event log says the reboot was initiated by msiexec.exe on behalf of NT AUTHORITY\SYSTEM for reason code 0x80030002 to complete or continue the configuration of 'PowerToys (Preview)'.
(it runs as system because i made the installer available via MS Config Mgr software center.)

✔ Expected result
powertoys should just install without rebooting, or at least prompt if it wants a reboot. if running unattended/silent via /q /qb /qb! etc it should default to NOT reboot.
❌ Actual result
on one of my 3 machines, it rebooted without warning.  this is a VM (Nutanix VDI) and the other two are Dell Latitude 7410 and 7370.  all running same ver/LCU of win10 given above, but physical machines did not reboot.
side note - the 7410 also gave a warning that it couldn't download .net core 3.1.3, but power toys still seems to work just fine.
📷 Screenshots
n/a

additional info:
before the reboot, msiexec exited with status 1641.
after reboot, when i try to start powertoys from start menu, i get an error that either powerlauncher or powertoys runner has stopped working. tried to uninstall and reinstall. this didn't cure the powerlauncher/runner issues, but also didn't get the unexpected reboot the second time around. however, even after the launcher error, i still have a power toys tray icon. when i click it, i get 2 more powerlauncher errors, but then powertoys settings opens and appears normal.  fancy zones works normally (this is really the only powertoy i use).  will continue to monitor and report any other info i find.

@Gibson99
closing the issue since we don't provide the msi anymore and the new .exe installer runs a different installation sequence.
If you still have issues with the current installer please open a new issue.
Thanks.


Add ExternalReferencesChecker

child of #171

use GPARS for parallel execution of checks...
http://gpars.codehaus.org/

I would be very interested in this feature! We have a user guide that includes quite a few external references, e.g. to code in a GitHub repo. Whenever someone renames a referenced class the link breaks. Is there a chance this feature will get added in the near future? Would a contribution be accepted? Unfortunately, my Groovy skills are very limited…

Marc, thanx for your interest.
Contributions are really welcome. I'll give this a higher prio - and see what I can do...

https://github.com/rackerlabs/gradle-linkchecker-plugin implements several checks for external links - maybe we could re-use or reference that...

further info: http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/httpThreadLink/HttpClient.html

done, will be live with Version 1.0.0-RC-2 (RC-1 was highly incomplete)


[Docbug][Samplecode][3843]

Added tables for sample codes in 4 files.

Acrolinx Scorecards
We do not currently enforce a minimum score for content merged to the default branch. This will change in the future.
Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology:

Article
Score
Issues
Scorecard
Processed

msteams-platform/task-modules-and-cards/cards/Universal-actions-for-adaptive-cards/Sequential-Workflows.md
93
3
link
:white_check_mark:

msteams-platform/task-modules-and-cards/cards/Universal-actions-for-adaptive-cards/Up-To-Date-Views.md
88
14
link
:white_check_mark:

msteams-platform/task-modules-and-cards/cards/Universal-actions-for-adaptive-cards/User-Specific-Views.md
88
13
link
:white_check_mark:

msteams-platform/task-modules-and-cards/cards/Universal-actions-for-adaptive-cards/Work-with-Universal-Actions-for-Adaptive-Cards.md
93
7
link
:white_check_mark:

More info about Acrolinx
Use the Acrolinx extension, or sidebar, in Visual Studio Code to check spelling, grammar, style, tone, clarity, and key terminology when you're creating or updating content. For more information, see Use the Visual Studio Code extension to run Acrolinx locally.

Docs Build status updates of commit eb60f78:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/task-modules-and-cards/cards/Universal-actions-for-adaptive-cards/Up-To-Date-Views.md
:bulb:Suggestion
View
Details

msteams-platform/task-modules-and-cards/cards/Universal-actions-for-adaptive-cards/Sequential-Workflows.md
:white_check_mark:Succeeded
View

msteams-platform/task-modules-and-cards/cards/Universal-actions-for-adaptive-cards/User-Specific-Views.md
:white_check_mark:Succeeded
View

msteams-platform/task-modules-and-cards/cards/Universal-actions-for-adaptive-cards/Work-with-Universal-Actions-for-Adaptive-Cards.md
:white_check_mark:Succeeded
View

msteams-platform/task-modules-and-cards/cards/Universal-actions-for-adaptive-cards/Up-To-Date-Views.md

Line 20, Column 27: [Suggestion-docs-link-absolute] Absolute link 'https://docs.microsoft.com/microsoftteams/platform/bots/how-to/update-and-delete-bot-messages?tabs=dotnet#update-cards' will be broken in isolated environments. Replace with a relative link.

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Acrolinx Scorecards
We do not currently enforce a minimum score for content merged to the default branch. This will change in the future.
Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology:

Article
Score
Issues
Scorecard
Processed

msteams-platform/task-modules-and-cards/cards/Universal-actions-for-adaptive-cards/Sequential-Workflows.md
93
3
link
:white_check_mark:

msteams-platform/task-modules-and-cards/cards/Universal-actions-for-adaptive-cards/Up-To-Date-Views.md
88
14
link
:white_check_mark:

msteams-platform/task-modules-and-cards/cards/Universal-actions-for-adaptive-cards/User-Specific-Views.md
88
13
link
:white_check_mark:

msteams-platform/task-modules-and-cards/cards/Universal-actions-for-adaptive-cards/Work-with-Universal-Actions-for-Adaptive-Cards.md
93
7
link
:white_check_mark:

More info about Acrolinx
Use the Acrolinx extension, or sidebar, in Visual Studio Code to check spelling, grammar, style, tone, clarity, and key terminology when you're creating or updating content. For more information, see Use the Visual Studio Code extension to run Acrolinx locally.

Docs Build status updates of commit 2bf1987:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/task-modules-and-cards/cards/Universal-actions-for-adaptive-cards/Sequential-Workflows.md
:white_check_mark:Succeeded
View

msteams-platform/task-modules-and-cards/cards/Universal-actions-for-adaptive-cards/Up-To-Date-Views.md
:white_check_mark:Succeeded
View

msteams-platform/task-modules-and-cards/cards/Universal-actions-for-adaptive-cards/User-Specific-Views.md
:white_check_mark:Succeeded
View

msteams-platform/task-modules-and-cards/cards/Universal-actions-for-adaptive-cards/Work-with-Universal-Actions-for-Adaptive-Cards.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Acrolinx Scorecards
We do not currently enforce a minimum score for content merged to the default branch. This will change in the future.
Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology:

Article
Score
Issues
Scorecard
Processed

msteams-platform/task-modules-and-cards/cards/Universal-actions-for-adaptive-cards/Sequential-Workflows.md
93
3
link
:white_check_mark:

msteams-platform/task-modules-and-cards/cards/Universal-actions-for-adaptive-cards/Up-To-Date-Views.md
88
14
link
:white_check_mark:

msteams-platform/task-modules-and-cards/cards/Universal-actions-for-adaptive-cards/User-Specific-Views.md
88
13
link
:white_check_mark:

msteams-platform/task-modules-and-cards/cards/Universal-actions-for-adaptive-cards/Work-with-Universal-Actions-for-Adaptive-Cards.md
93
7
link
:white_check_mark:

More info about Acrolinx
Use the Acrolinx extension, or sidebar, in Visual Studio Code to check spelling, grammar, style, tone, clarity, and key terminology when you're creating or updating content. For more information, see Use the Visual Studio Code extension to run Acrolinx locally.

Docs Build status updates of commit b01f61d:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/task-modules-and-cards/cards/Universal-actions-for-adaptive-cards/Sequential-Workflows.md
:white_check_mark:Succeeded
View

msteams-platform/task-modules-and-cards/cards/Universal-actions-for-adaptive-cards/Up-To-Date-Views.md
:white_check_mark:Succeeded
View

msteams-platform/task-modules-and-cards/cards/Universal-actions-for-adaptive-cards/User-Specific-Views.md
:white_check_mark:Succeeded
View

msteams-platform/task-modules-and-cards/cards/Universal-actions-for-adaptive-cards/Work-with-Universal-Actions-for-Adaptive-Cards.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


Fail if setup-php was unable to install the requested PHP version

Describe the feature

setup-php should fail when it's unable to install the requested PHP version
Version

[x] I have checked releases, and the feature is missing in the latest patch version of v2.

Underlying issue

Currently, when setup-php fails to set up the requested PHP version, the build continues with the PHP version provided by the runner environment, which may not be compatible with the software being built/tested.
Describe alternatives

I tried to use env: fail-fast: true to no avail.
Additional context

This happens intermittently but quite often, so I couldn't run it with debugging enabled.
https://github.com/vimeo/psalm/actions/runs/4401974668/jobs/7708673538
Are you willing to submit a PR?

I'm not sure I'll be able to do this.

Fixed in https://github.com/shivammathur/setup-php/commit/5f422817a1c142632541535cd6e75a173d61d12f.
Will be in the next release.

Fix released in 2.25.0.


Remove "License CC" from CC0 and PDM Modals on Filters

Problem

We are currently using license language for CC0 and PDM, which are actually legal tools and not licenses, on the informational modals in the filter side bar.
Description

We need to remove "License CC" from the top line of the modal, leaving just the name of the tool. We also need to change the link to say "tool" and not "license". Screenshots indicate changes:

Hey, @annatuma ! I will like to work on this issue.

thank you @rochisha0 !

@rochisha0 this issue: https://github.com/creativecommons/cccatalog-frontend/issues/1099
uses some of the same code, so it would be great to fix them at the same time. Thank you 😸

Hey, @zackkrida! I cannot find Reuse tab in CCSerach to fix #1099.

@rochisha0 we have integrated the i18n code into the codebase recently so it might throw you off. The relevant code sections which you are looking for are probably these:

https://github.com/creativecommons/cccatalog-frontend/blob/4a4e8c092e6b0dd9813a65d553fbbb8256007c68/src/components/ImageDetails/PhotoDetails.vue#L68
https://github.com/creativecommons/cccatalog-frontend/blob/4a4e8c092e6b0dd9813a65d553fbbb8256007c68/src/components/ImageDetails/PhotoDetails.vue#L103
https://github.com/creativecommons/cccatalog-frontend/blob/develop/src/components/ImageDetails/ImageInfo.vue

Thank you so much, @AyanChoudhary !


package: update dependencies antd to v1.6.4

If this breaks master, we can move to 1.1 milestone.

cc @davidjumani @utchoang thnx
@blueorangutan package

@rhtyd a Jenkins job has been kicked to build primate packages. I'll keep you posted as I make progress.

Packaging result: :heavy_check_mark:centos :heavy_check_mark:debian :heavy_check_mark:archive.
QA: http://primate-qa.cloudstack.cloud:8080/client/pr/565 (JID-2711)

Bit risky to do it now, let's revisit lib/version change post 1.0/GA


gsim: support gsim based on verilator framework

Wait PR #489 #490 merged, and need CI with gsim.

Demo passed with fixed ram(Load bin file to DUT-related variable). Need further support from GSIM.


Error with current release MAX_TEXTURE_SIZE

Error: The image is too big; it's 5376px wide, but this device's maximum supported size is 0px.
It's reporting the device maxium supported size as being 0px, por a PC with chrome Version 78.0.3904.97 (Official Build) (64-bit)

What does https://webglreport.com/ show as your maximum texture size?
I can't reproduce this using the same version of Chrome. Are you running some sort of anti-fingerprinting extension that might block reading the MAX_TEXTURE_SIZE value?

I inserted a trace here:

And I get this: Pretty weird.

For starters, I think this line might be wrong:
 if (imageType == 'equirectangular') {
            maxWidth = gl.getParameter(gl.MAX_TEXTURE_SIZE);

Because this equals zero. Shouldn't it be just:
maxWidth = gl.MAX_TEXTURE_SIZE;

(Note that I have no experience in the gl underlying structure, but I think this is a typo).
Moreover, what I don't understand is why I get that the gl.MAX_TEXTURE_SIZE, is 3379, while https://webglreport.com/, reports 16384.

Ah! I found the typo on your code!!
It should be:
gl.getParameter(MAX_TEXTURE_SIZE));

But you are using gl.MAX_TEXTURE_SIZE
See here:

If I change this line and a couple more, to:
gl.getParameter(MAX_TEXTURE_SIZE) it reports 16384.

I deleted previous coments. Your code seems fine. I don't know what is going on.

To access gl.MAX_TEXTURE_SIZE, you need to use gl.getParameter(gl.MAX_TEXTURE_SIZE); 3379 is the parameter ID for MAX_TEXTURE_SIZE.

Yes. I saw that I misjudged this, quite random, error. Sometimes I get it.
Otherwise I don't. I don't know what is going on. Sometimes I get the
mentioned error and some others I don't. Seems like a weid glitch. Your
code seems perfectly fine.
I will investigate further, and if I find something, I'll let you know.
You can close this bug report, and If I find something conclusive, I shall
re-open a new one.
Thanks!


As a user, I want to add a new activity.

User is able to add in floating task, task and events as of V0.2


K8s auth token lifetime tied to roles

The lifetime/expiry of k8s auth tokens is currently the same. For a more kubelogin style authentication we need different token lifetimes for different roles. The helm chart of m8 should give people the ability to configure it via a map from roles to token validity periods.

Coverage increased (+0.01%) to 55.701% when pulling 8041dd6d97d57e1d2ca333414fa63223005242d0 on feature/k8s-token-lifetime-per-role into 59e94f3507394db0bfb13ca9b40a541562872187 on main.


async/await

Hey, looks like a great project! Any immediate plans to update this to use reqwest 0.10+ which would allow this to be used (easily) in an async/await codebase?

Thank you !
I didn't know async/await for rust with reqwest 0.10+.
I'll try to use it and apply it to rustforce 👍

@ccakes we've now added async/await support.

Legend - thanks!


check local musicbrainz server

I run a local musicbrainz server on my main media server that sometimes dies when load is too high.
Is there a way to have HTPC-Manager check it and if enabled insettings just show some sort of icon up top when it is available?
It might be out of the scope of this project but musicbrainz is a large part of my htpc with all my music and it would be nice to see it I have to switch to looking away from my local server .

Where are htpc-manager running? on the same computer as musicbrainz? Is there a webapi? Yes its out of the scope :P

same as musicbrainz, not sure if webapi, thought maybe just try and connect get timeout then offline else online or something... anyways was just a thought as it would helpful to me but probably not many others.

You should install psutil on you computer and enable the stats module, you can check server load and loads of other stuff.
What might be interesting for you is the process tab. You can check if the musicbrainz server is running there.

Right now I have it installed on a seperate pc than my server as I was testing it. But now I know it works great I'll be putting it on my server


fix: Improve visibility of logging from inside exception handlers

https://github.com/microsoft/dropvalidator/issues/874 calls out some scenarios where error messages were being logged only at Debug verbosity. This PR changes all ILogger.Debug calls in exception handlers to ILogger.Warning to increase the visibility.

Codecov Report
Attention: Patch coverage is 17.64706% with 14 lines in your changes are missing coverage. Please review.

Project coverage is 59.69%. Comparing base (4915b72) to head (e64847a).
Report is 1 commits behind head on main.

Files
Patch %
Lines

src/Microsoft.Sbom.Api/Output/MetadataBuilder.cs
0.00%
5 Missing :warning:

...Converters/ExternalReferenceInfoToPathConverter.cs
0.00%
1 Missing :warning:

...m.Api/Executors/ComponentToPackageInfoConverter.cs
0.00%
1 Missing :warning:

.../Microsoft.Sbom.Api/Executors/EnumeratorChannel.cs
0.00%
1 Missing :warning:

src/Microsoft.Sbom.Api/Executors/FileFilterer.cs
0.00%
1 Missing :warning:

src/Microsoft.Sbom.Api/Executors/FileInfoWriter.cs
0.00%
1 Missing :warning:

...crosoft.Sbom.Api/Executors/ManifestFileFilterer.cs
0.00%
1 Missing :warning:

...osoft.Sbom.Api/Executors/ManifestFolderFilterer.cs
0.00%
1 Missing :warning:

...rosoft.Sbom.Api/Executors/PackageInfoJsonWriter.cs
0.00%
1 Missing :warning:

...tors/SPDXSBOMReaderForExternalDocumentReference.cs
50.00%
1 Missing :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #540      +/-   ##
==========================================
- Coverage   59.73%   59.69%   -0.04%
==========================================
  Files         248      248
  Lines        7572     7572
  Branches      900      900
==========================================
- Hits         4523     4520       -3
- Misses       2637     2640       +3
  Partials      412      412

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

Changes themselves LGTM. Have you run this version of the tool against any real drops? I would be curious how many of these warnings are surfaced in a normal run, if any

As we discussed offline, local testing was against the sbom-tool repo where the change was made


advertisement exceeded buffer length

Im trying to add fast pair support to my device. However when adding any data I get the exceeded buffer length panic.
It works without the .services_16... line. But I add it I can no longer build.
How can I increase the buffer?
static ADV_DATA: LegacyAdvertisementPayload = LegacyAdvertisementBuilder::new()
        .flags(&[Flag::GeneralDiscovery, Flag::LE_Only])
        .services_16(ServiceList::Complete, &[ServiceUuid16::from_u16(0xFE2C)]) // fast pair
        .services_128(ServiceList::Incomplete, &[[0x9E, 0xCA, 0xDC, 0x24, 0x0E, 0xE5, 0xA9, 0xE0, 0x93, 0xF3, 0xA3, 0xB5, 0x01, 0x00, 0x40, 0x6E]]) // UART Service
        .short_name("BScooter")
        .build();

Bluetooth legacy advertisements are limited to 31 bytes. You’ll need to move some data to your scan payload or remove it altogether.

Ah! So scan is basically extended advertisement?

Okay cheers. I've moved data to the scan data and it's working. I'll try play with restarting advertising too 👍


Contentstack package: Add limit and order to fetcher

Very cool!

More wanted functionality came up at work today - namely ability to choose which field to match on for the "Entry UID" prop, with the current behavior (UID) being the default.
We want to use dynamic paths to pull a single entry, and this will let us use url/pretty-custom-slug instead of url/4f7ds89a7gre
I've drafted the PR until said functionality is done, then I'll reopen it.

Done. It is only meant to work properly for string fields at the moment. It would be possible to fix this in the future, as we have access to the schema so there can be different behavior for string/number/boolean/etc... But to implement that properly the prop type will need to be dynamic, which it isn't at the moment (and I imagine would be a complicated change).


[FEAT] Nested decks by folder fix

Is your feature request related to a problem? Please describe.
In the deck review panel, the plugin does show folders without flashcards if they are not empty.
Describe the solution you'd like
Show folders based on the presence of flashcards inside of them instead of files.

``

I'll fix this.

The fix should be available soon.


Update the readme for G102 integration

The readme will need to be updated for the new functionality and structure of the code before we merge this into master. We also want to include a somewhat thorough description of how the errors get handled, see issue #24 and PR #54.
Also make a minimal environment.yml as opposed to the full one with all dependencies we have now. This will allow usage across platforms. I will need to do this by hand, since there is now way to do this automatically.
Todo:

[x] update general readme and add more math
[x] add direct links to ADS for cited papers
[x] add recommendation on data file naming convention
[x] clean up `environment.yml' file
[x] fix Quickstart section in readme

This has been integrated in PR #82


Unable to use with facebook login

I know this is a very basic question but I have tried to get ng-cordova-auth to work on my application. and following are the codes:
mainCtrl.js:
angular.module('seekbiggerApp')
  .controller('MainCtrl', ['$scope' ,'$cordovaOauth', function($scope,$cordovaOauth){
    $scope.login=function(){
    	// console.log('Hey');
    	alert('facebook');
	$cordovaOauth.facebook("API_KEY", ['email']).then(function(result) {
		alert('success login:'+JSON.stringify(result));
	}, function(error) {
		// error
	});
    }
  }
]);

I am getting the alert, but there isn't any error log coming or anything else. Can you please tell me what I might be doing wrong with this. I also want to use linkedin on the same app, and even that doesn't seem to be working.

It was the same mistake as in the https://github.com/nraboy/ng-cordova-oauth/issues/57 Was able to fix it with the answer there. But now I just wanted to understand how to do it for linkedin as it gives me the redirect_uri is different error and I dont understand the individual options like what should I put in "state" param for the function and where should I precisely set the redirect uri on the developer website

This is going to sound cruel, but you're going to have to read the LinkedIn documentation.  You're not getting errors that would lead me to believe the library is broken.  Just API misunderstandings.
https://developer.linkedin.com/docs/oauth2
Regards,


including additional keras2onnx example

example based on mnist dataset and a small custom model.
This example closes #493.

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

@amamory , would you please sign CLA before got your PR merged?

@amamory , would you please sign CLA before got your PR merged?

done, I was not aware of this kind of procedure.


(re)enables plugin installation at runtime

Revert "Revert "Merge pull request #181 from eastlondoner/andy/install-apoc-at-runtime""
This reverts commit 84425d99fd10ab50f05a59bfb9ca79ec0ec7ed05.
Which re-enables plugin installation at runtime

Requires TeamCity changes to install neo4j dependencies from the build pipeline into the local maven repo

This is now downstream of https://github.com/neo4j/docker-neo4j/pull/191


Keras Applications VGG16 has no attribute '_feed_targets'

I'm trying to use transfer learning of VGG16, but when I run get_activations got AttributeError.
Traceback (most recent call last):
  File "rpn.py", line 16, in <module>
    activations = get_activations(feature_model, img_array)
  File "/home/tiago/.pyenv/versions/3.6.7/envs/mnist/lib/python3.6/site-packages/keract/keract.py", line 38, in get_activations
    activations = _evaluate(model, layer_outputs, x, y=None)
  File "/home/tiago/.pyenv/versions/3.6.7/envs/mnist/lib/python3.6/site-packages/keract/keract.py", line 6, in _evaluate
    symb_inputs = (model._feed_inputs + model._feed_targets + model._feed_sample_weights)
AttributeError: 'Model' object has no attribute '_feed_targets'

import numpy

from keras.applications import vgg16
from keras.preprocessing.image import load_img, img_to_array

from keract import get_activations, display_activations

img = load_img('eight.png')
img_array = img_to_array(img)
img_array = numpy.expand_dims(img_array, axis=0)

# last vgg16 conv2d layer returns (None, None, None, 512)
feature_model = vgg16.VGG16(include_top=False, input_shape=(600, 800, 3))
result = feature_model.predict(img_array)

activations = get_activations(feature_model, img_array)
display_activations(activations)

Oi Tiago,
I'll have a look! Thanks for reporting!

Hi Philippe!
In debugging I discovered that "_feed_targets" is assigned when compile/train the net. But with learning transfer this variable isn't set.

@tiagosamaha can you maybe compile your model before making inference? It's usually a good practice to do so.

I'm good to have a look in the case of transfer learning

import numpy
from keras.applications import vgg16
from keras.preprocessing.image import load_img, img_to_array

from keract import get_activations, display_activations

img = load_img('/Users/philipperemy/PycharmProjects/keract/eight.png')
img_array = img_to_array(img)
img_array = numpy.expand_dims(img_array, axis=0)

# last vgg16 conv2d layer returns (None, None, None, 512)
feature_model = vgg16.VGG16(include_top=False, input_shape=(512, 512, 3))
feature_model.compile(loss='categorical_crossentropy', optimizer='adam')        <-- Add this line.
result = feature_model.predict(img_array)

activations = get_activations(feature_model, img_array)
display_activations(activations)

That code works.

I could always compile the model in the library if not compiled but I guess it's safer to return an error saying model has to be compiled first. The loss somehow matters because it's used to compute the gradients. And Keract does not have any idea whatsoever of which loss was used to train the model. I guess here it's categorical cross entropy. Regarding the optimizer, it can be set to any random optimizer value (default is adam).

Something like this could be added:
if feature_model.name == 'vgg16':
    categorical_crossentropy', optimizer='adam')
else:
    raise Exception('Compile your model first.')

@tiagosamaha

Just for info I pushed a new code into master with what I discussed just above.
Feel free to try it.
pip install keract --upgrade

https://github.com/philipperemy/keract/pull/25/files

Merged https://github.com/philipperemy/keract/commit/83b2f573968920a10eab479f8c70db8299bf2733

It is an alternative. Compile will do nothing, but create the variables.
Thanks for your attention!


review/jm-initial

This PR is to serve as @fivetran-joemarkiewicz review of the initial transform package build.
Included in this review will be a number of comments and suggestions that are intended to be applied to the master branch. When going through the review notes, please feel free to address them and note if updates have been made or any further discussion is needed. @fivetran-joemarkiewicz will resolve the comment during re-review if all checks out.

@fivetran-avinash I noticed you have committed more to the main branch since my review. Feel free to address any comments that are no longer relevant as updated. Thanks!

@fivetran-avinash just responded to your above questions. Thanks for addressing so many of my comments. I just resolved the items that are good on my end 😄

@fivetran-avinash closing this PR and starting my final review on a fresh slate!


add Microchip SAM E54 for Azure

Thank you for contributing to the IoT Plug and Play Models repository
:memo: Please review this checklist before submission

[x] :eyes: The models submitted in this PR follow the DTDL Naming Guidelines for contributing to this repository.
[x] 🕵I have validated the models locally using the dmr-client command line tool.
[x] ❗ I understand once the PR is approved, the models are considered immutable: any edits will require to submit new files.
[x] ✨ When creating a new top level dtmi:namespace, I have completed the PR Info Template below.

:zap: PR validation steps are described in the tools Wiki.
PR Info Template
When submitting models to the repository we ask that you provide as much of the following meta information around your models and related devices as possible. This info will be used to improve the IoT Plug and Play ecosystem.
👇: Please replace the markdown comment examples with your own values.
Company Info
Microsoft
https://github.com/azure-rtos/getting-started
IoT Plug and Play Device Info
Azure RTOS
Microchip SAM E54
Model Submission Goals
Azure RTOS GSG examples
Code Owners & Reserved Names
@ryanwinter
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact<EMAIL_ADDRESS>with any additional questions or comments.

@timlt

👍


Eorzea Time on GB is 20 ish minutes slower than ET in game.

The eorzea time stated in gather buddy is slower than eorzea time in game, causing alarms to be later than actual time.

This is based on your (windows) system time, which is apparently not correct. You need to re-sync your system time, but be aware that this disconnects you from the game.

I went through some effort in 3.0 to improve server- and eorzea time detection, but I can not guarantee accurate times without resorting to querying NTP servers, which I don't want to do.
Optimally, people just keep their system time in sync.


Move "github" package from openwhisk to openwhisk-catalog

Issue #4 is a prereq.
Move sample "github" in current repo./directory:
/openwhisk-openwhisk/catalog/github

to the "openwhisk-catalog" repo. under directory structure:
/openwhisk-catalog/packages/github

including action files
webhook.js

Update install script (in /openwhisk-catalog/packages directory, after Issue #4 is completed) :
installGit.sh

Refer to openwhisk-catalog: https://github.com/openwhisk/openwhisk-catalog/issues/5
Refer to blue: https://github.ibm.com/BlueMix-Fabric/bluewhisk/issues/2039


Adding latest version causes the flutter build to fail

After running.
flutter pub add flutter_osm_plugin

and then
flutter run

I get the following error:
Launching lib/main.dart on sdk gphone64 x86 64 in debug mode...

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':flutter_plugin_android_lifecycle:compileDebugJavaWithJavac'.
> Could not resolve all files for configuration ':flutter_plugin_android_lifecycle:androidJdkImage'.
   > Failed to transform core-for-system-modules.jar to match attributes {artifactType=_internal_android_jdk_image, org.gradle.libraryelements=jar, org.gradle.usage=java-runtime}.
      > Execution failed for JdkImageTransform: /opt/android-sdk/platforms/android-34/core-for-system-modules.jar.
         > Error while executing process /opt/android-studio/jbr/bin/jlink with arguments {--module-path /home/andre/.gradle/caches/8.10/transforms/f3bce71b45fae5b07981439f9f05df82-8a0de900-2314-4d4b-ab23-ecf8d0cf435b/transformed/output/temp/jmod --add-modules java.base --output /home/andre/.gradle/caches/8.10/transforms/f3bce71b45fae5b07981439f9f05df82-8a0de900-2314-4d4b-ab23-ecf8d0cf435b/transformed/output/jdkImage --disable-plugin system-modules}

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org.

BUILD FAILED in 10s
Running Gradle task 'assembleDebug'...                             11.1s
Error: Gradle task assembleDebug failed with exit code 1

while before it worked just fine.

Output from flutter doctor -v
[✓] Flutter (Channel , 3.24.2, on Manjaro Linux 6.11.2-4-MANJARO, locale en_US.UTF-8)
    • Flutter version 3.24.2 on channel  at /usr/lib/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision archlinuxaur (unknown (arch linux aur package)), 2038-01-19 03:14:08
    • Engine revision a6bd3f1de158
    • Dart version 3.5.1
    • DevTools version 2.37.2

[✓] Android toolchain - develop for Android devices (Android SDK version 35.0.0)
    • Android SDK at /opt/android-sdk
    • Platform android-35, build-tools 35.0.0
    • ANDROID_HOME = /opt/android-sdk
    • ANDROID_SDK_ROOT = /opt/android-sdk
    • Java binary at: /opt/android-studio/jbr/bin/java
    • Java version OpenJDK Runtime Environment (build 21.0.3+-12282718-b509.11)
    • All Android licenses accepted.

[✗] Chrome - develop for the web (Cannot find Chrome executable at google-chrome)
    ! Cannot find Chrome. Try setting CHROME_EXECUTABLE to a Chrome executable.

[✓] Linux toolchain - develop for Linux desktop
    • clang version 18.1.8
    • cmake version 3.30.3
    • ninja version 1.12.1
    • pkg-config version 2.1.1

[✓] Android Studio (version 2024.2)
    • Android Studio at /opt/android-studio
    • Flutter plugin version 82.1.3
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 21.0.3+-12282718-b509.11)

[✓] IntelliJ IDEA Community Edition (version 2024.1)
    • IntelliJ at /usr/share/idea
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart

[✓] Connected device (2 available)
    • sdk gphone64 x86 64 (mobile) • emulator-5554 • android-x64 • Android 15 (API 35) (emulator)
    • Linux (desktop)              • linux         • linux-x64   • Manjaro Linux 6.11.2-4-MANJARO

[✓] Network resources
    • All expected network resources are available.

! Doctor found issues in 1 category.

did you try to run flutter clean and flutter pub get
or update gradle version

try to override flutter_plugin_android_lifecycle to  2.0.23 like this
dependency_overrides:
      flutter_plugin_android_lifecycle: ^2.0.23


Add GCP Runner (Standalone)

Description of the change
Resolved #8. Please choose whichever PR you'd like of #9 or this one
Type of change

[ ] Bug fix (non-breaking change that fixes an issue);
[ ] New feature (non-breaking change that adds functionality);
[ ] Breaking change (fix or feature that would cause existing functionality not to work as expected);
[x] Other (miscellaneous, GitHub workflow changes, changes to the PR template);

Checklists
Development

[ ] Parts of this pull request impacting core (user-facing, documented) product functionality have test coverage;

Code review

[ ] This pull request has a descriptive title and sufficient context for a reviewer. There may be a screenshot or screencast attached;
[ ] This pull request is no longer a draft;
[ ] You have reviewed this Pull Request yourself;

hey @JakeCooper I opened https://github.com/spacelift-io/runner-ansible/pull/11 to fix this

hey Jake, I merged the PR, now spacelift/runner-ansible-gcp is available. hope it works for you! closing this PR.


Google Chrome Icon Not Displayed in Window List Pie

When I have Google Chrome open, the pie that displays Window List, does not display Google Chrome's icon, rather it shows a default icon. However in Application pie and other pies, the icon appears correctly.

Really Google Chrome? Not Chromium? For Chromium it works fine...
Can you please launch Gnome-Pie from a terminal and check whether it prints something when opening this pie?

I haven't tested with Chromium. Don't have it installed.
Okay, I get this warning in the terminal when loading the Windows List pie for the first time. Warning only printed the first time.
"Icon "google chrome" not found! Using default icon..."
Also I am getting another warning
"Failed to fetch path: The name org.ayatana.bamf was not provided by any .service files"
This is printed continuously. I am using Arch Linux. This warning something related to Ubuntu?

Alright, I think you are missing the bamf-daemon. There should be a package called something like this. Just install it!

Issue got fixed on installing both bamf-bin and bamf packages from AUR. Thanks.
Arch Linux users do note.


Concurrent modification during iteration: Instance(length:17) of '_GrowableList'.

Describe the bug
I tried to use chatgpt to generate serverpod model files for a new app. I teached serverpod with the
https://github.com/serverpod/serverpod_docs/blob/main/docs/06-concepts/02-models.md
and my app idea.
Chatgpt generated a bunch of .spy.yaml files which are looking good but makes serverpod generate crash with
Concurrent modification during iteration: Instance(length:17) of '_GrowableList'.
To simplify things it tried generate only the code for one this model files (I know that generated model files are not correct,
but it would be lovely to get an error message instead of an exception)
To Reproduce
Steps to reproduce the behavior:

serverpod create myapp

cd myapp;cd myapp_server

create inside lib/src/models/user.spy.yaml
class: User
table: users
fields:
id: int, isPrimaryKey, autoIncrement
username: String, unique
email: String, unique
displayName: String
calendarEvents: List, relation
createdAt: DateTime, default=now
updatedAt: DateTime, default=now

serverpod generate

See error

Stack-Trace:
Yikes! It is possible that this error is caused by an internal issue with the Serverpod tooling.
We would appreciate if you filed an issue over at Github. Please include the stack trace below and
describe any steps you did to trigger the error.
https://github.com/serverpod/serverpod/issues
Concurrent modification during iteration: Instance(length:17) of '_GrowableList'.

#0      ListIterator.moveNext (dart:_internal/iterable.dart:348:7)
#1      ModelDependencyResolver.resolveModelDependencies.<anonymous closure>
(package:serverpod_cli/src/analyzer/models/entity_dependency_resolver.dart:17:51)
#2      Iterable.forEach (dart:core/iterable.dart:347:35)
#3      ModelDependencyResolver.resolveModelDependencies
(package:serverpod_cli/src/analyzer/models/entity_dependency_resolver.dart:15:51)
#4      SerializableModelAnalyzer.resolveModelDependencies
(package:serverpod_cli/src/analyzer/models/model_analyzer.dart:95:36)
#5      StatefulAnalyzer._updateAllModels
(package:serverpod_cli/src/analyzer/models/stateful_analyzer.dart:113:31)
#6      StatefulAnalyzer.validateAll
(package:serverpod_cli/src/analyzer/models/stateful_analyzer.dart:71:5)
#7      performGenerate (package:serverpod_cli/src/generator/generator.dart:29:25)
<asynchronous suspension>
#8      StdOutLogger.progress (package:cli_tools/src/logger/loggers/std_out_logger.dart:141:20)
<asynchronous suspension>
#9      GenerateCommand.run (package:serverpod_cli/src/commands/generate.dart:69:17)
<asynchronous suspension>
#10     CommandRunner.runCommand (package:args/command_runner.dart:212:13)
<asynchronous suspension>
#11     BetterCommandRunner.runCommand
(package:cli_tools/src/better_command_runner/better_command_runner.dart:140:7)
<asynchronous suspension>
#12     ServerpodCommandRunner.runCommand
(package:serverpod_cli/src/runner/serverpod_command_runner.dart:103:5)

Expected behavior
Instead of an exception I except to get an error message.
I figured out, the main reason for this exception is this:
calendarEvents: List, relation
Deleting "List" from the line and I get an error message instead of the exception.
Serverpod versions

_CLI Version:  2.1.5
_Library version: 2.1.5

Platform information
Apple MacBookPro M1
Flutter 3.24.4 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 603104015d (4 weeks ago) • 2024-10-24 08:01:25 -0700
Engine • revision db49896cf2
Tools • Dart 3.5.4 • DevTools 2.37.3
Additional context
Hope this helps, that took a while for figuring this out and open an issue.
This happens also on the latest 2.2.0 beta
Ok, I also learned that I have to feed the AI with https://github.com/serverpod/serverpod_docs/tree/main/docs/06-concepts/06-database/03-relations

Thank you for the report!
calendarEvents: List, relation

As. you pointed out List alone doesn't work, you need to put the type into the list as well.
E.g. List<MyClass>
Another problem in your yaml is the following:
username: String, unique

unique is not a valid keyword here (yet).
With that said this is clearly a bug, the linter shouldn't crash because of a typo.

Thanks for the fast response.  Regarding unique (from the docs):
unique: Boolean flag to make the entries unique in the database.
I tried it again and I trained the AI with the correct documentation and it generated 17 model files.
All were succesfull  parsed by serverpod generate and I got only 3 errors which are easy to fix.