Improving the presentation for FOSS4G

@paleolimbot @JanCaha @jannes-m @Robinlovelace @Nowosad and others:
The main branch contains a newer spin of the presentation, which can also be viewed at https://florisvdh.github.io/foss4g-2023-qgisprocess.
You're much invited to further improve this before FOSS4G, which is one week from now! Especially further improvement/revision of the applied xaringan theming and slide layout would be nice; the package logo still needs to be added (perhaps on the front page; its file is already present in the repo), and other visual things you might think of. Be welcome to share your ideas or remarks, in response to this post.

Don't elaborate new example cases since it would become too lengthy, it now takes almost 20 minutes, which is the maximum.

You can render the presentation locally to check yourself before making a PR, by just running render.R. Then open docs/index.html. Important note: you need the args branch of qgisprocess for this to work! (as long as r-spatial/qgisprocess#161 isn't finished & merged)

Feel free to update authorship as you see fit. New contributors are still welcome. Package contributors that don't co-author the presentation and don't appear as package author should be thanked in the 'Contributors' slide near the end.

I hope some improvements will come in :+1:.

Hi @florisvdh -- I just tried to render the slides. I installed:
remotes::install_github("r-spatial/qgisprocess@args")
remotes::install_github("JanCaha/r_package_qgis")

Then I run the render.R and got the following error:
Quitting from lines 478-482 [unnamed-chunk-29] (qgisprocess_foss4g.Rmd)
Error:
! Cannot open "/home/floris/git_repositories/foss4g-2023-qgisprocess/data/zonal_stats.gpkg"; The file doesn't seem to exist.
Backtrace:
 1. dplyr::mutate(...)
 4. qgisprocess:::st_as_sf.qgis_result(buffer_stats_path)
 5. sf::read_sf(result_splitted[1], result_splitted[2], ...)
 7. sf:::st_read.character(...)
 8. sf:::CPL_read_ogr(...)
Execution halted

Thank you @Nowosad, sorry for the inconvenience. Should be fixed by 4973a6f. Can you retry? I've also retried locally after changing the base path, and it works.

Great @florisvdh -- see my suggestions at https://github.com/florisvdh/foss4g-2023-qgisprocess/pull/2.

Thank you @paleolimbot and @Robinlovelace. Nevertheless, don't hesitate to improve further!

Finished (and uploaded) the presentation for Friday!

Good luck with the presentation ;-)


iPhone camera app animation effect

hey, it's not a issue and I just want to know,
how should I make this smart react-native-scrollable-tab-view animate like iPhone camera app's animation behaviour,
I mean that tab scroll delay a bit, and change to next tab.

thanks for your time :)

Just first thoughts:
All children are blurred (for ex https://github.com/react-native-fellowship/react-native-blur). When scroll started blur current view. When tab selected render content of tab(without blur effect). Don't promise that it would look the same way.

thanks for your reply!  I'll try my way :)
and how about the scroll behaviour, I can't express it well, tab scroll just like .. mechanical movement,  I mean it not scrolling at moment and not be recognized your gesture.
maybe I have no idea to implement it now.

You probably don't need react-native-scrollable-tab-view at all. https://facebook.github.io/react-native/docs/panresponder.html sends an event where you can find dx which is distance of your finger movement since beginning of the gesture. After certain number show blur effect and change scene.

thanks for your patience :)


wip- recent_topics: Add persistence for filters via localstorage.

Previously the filter would be reset every time the page was
refreshed.
Given that the above was annoying and also that most users would
prefer to have their choice of default here, we add persistence to the
filter via localstorage.
Fixes: #15676.

Testing Plan:
GIFs or Screenshots:

before:

after:

@YashRE42 Thanks for working on this, looks great! I pushed your commit in https://github.com/zulip/zulip/pull/15650 with some changes to fit the new functions. It will be merged along with that PR.


Authentication details

Can you please mention what authentication does this require and how to set the credentials.
I am seeing this erros after running the command line.
2016-11-11 11:19:11,085 FATAL com.amazonaws.services.dynamodbv2.streams.connectors.CommandLineInterface - com.amazonaws.AmazonClientException: Unable to load AWS credentials from any provider in the chain

Please refer to the main method below:
https://github.com/awslabs/dynamodb-cross-region-library/blob/master/src/main/java/com/amazonaws/services/dynamodbv2/streams/connectors/CommandLineInterface.java#L99
Here we use DefaultAWSCredentialsProviderChain provided in the AWS SDK. According to the AWS SDK documentation there are multiple types of credentials supported:
http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/auth/DefaultAWSCredentialsProviderChain.html


Email customization in one .jar along with login

Hello there!
Trying to implement email customization, but got a bit confused by documentation (https://docs.keycloakify.dev/email-customization). From this, I see, that you create separate theme for email customization, can I work in my already developing login theme?
For now, for email translations, I just copy email folder with messages and theme.properties manually into my frontend-style-guide folder, but I think I need more native approach, because you've added functional for email customization.

And one more question, is there a chance to rename default name of the theme along with version before build time? Now I am getting frontend-style-guide-keycloak-theme-0.1.0.jar in output as well as name in keycloak admin.

From this, I see, that you create separate theme for email customization, can I work in my already developing login theme?
Hi,

There is only one theme and one .jar, Keycloak just let you choose what you want to enable.

For now, for email translations, I just copy email folder with messages and theme.properties manually into my frontend-style-guide folder, but I think I need more native approach, because you've added functional for email customization.

I did nothing special for email really. I just provide a convenient way to package the email directory.
You should be good to go within minutes.

And one more question, is there a chance to rename default name of the theme along with version before build time? Now I am getting frontend-style-guide-keycloak-theme-0.1.0.jar in output as well as name in keycloak admin UI.

It's based on the name field in your package.json

From this, I see, that you create separate theme for email customization, can I work in my already developing login theme?
Hi,

There is only one theme and one .jar, Keycloak just let you choose what you want to enable.

For now, for email translations, I just copy email folder with messages and theme.properties manually into my frontend-style-guide folder, but I think I need more native approach, because you've added functional for email customization.

I did nothing special for email really. I just provide a convenient way to package the email directory. You should be good to go within minutes.

And one more question, is there a chance to rename default name of the theme along with version before build time? Now I am getting frontend-style-guide-keycloak-theme-0.1.0.jar in output as well as name in keycloak admin UI.

It's based on the name field in your package.json

Thanks for your help :)
One more question, is it possible to transform username input? I am using mobile phone as username, and I am storing it with 8xxxxx format, but sometimes users can write +7xxxxx, but I need it to be transformed to 8xxxxx format. How to achieve that ?

You mean while user register?

You mean while user register?

No, while login.

Yes, this is really a easy feature to implement with Keycloakify.
You'll have to opt the customization at the component level. Get started with this setup.
Then you could use a library like this one to perform field validation.
Good luck.

How can I add translations into email messages.properties?

Just have a look at the content of the keycloak_email directory.
You'll understand what you deed to change
https://docs.keycloakify.dev/email-customization

Is it enough to generate keycloak_email directory? After that In every generated .jar I will have email directory and in theme.properties in themes array: ["login", "email"]? If yes, thats nice!

Yes that's exactly it.
You just have to run npx create-keycloak-email-directory once


Missing classes in Azure.AI.TextAnalytics .Net SDK in 5.1.0-Beta.7

Query/Question
ExtractKeyPhrasesAction, RecognizeEntitiesAction, and AnalyzeActionsOperation are not available, but the below document says otherwise. how to resolve it?
Documentation URL: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/textanalytics/Azure.AI.TextAnalytics/samples/Sample_AnalyzeActions.md
Environment:

5.1.0-Beta.7 "Azure.AI.TextAnalytics"
.Net core 3.1
IDE and version : Visual Studio 16.3.x

Thank you for your feedback.  Tagging and routing to the team member best able to assist.

Hi @Rathanavel ,
Apologies for the confusion. What you are seeing is a mismatch between what we released in version 5.1.0-beta.7 and the current development in the main branch which is pointing to 5.1.0-beta.8 as you can see here. https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/textanalytics/Azure.AI.TextAnalytics/src/Azure.AI.TextAnalytics.csproj#L5
This new version is adding the classes and includes other renames too that you can check in the changelog here: https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/textanalytics/Azure.AI.TextAnalytics/CHANGELOG.md#510-beta8-unreleased
Note that the 5.1.0-beta.8 version has not been released in NuGet.
A good way to always make sure you are looking at the documentation for the specific library version you are using is to use the release tag (which includes the version). For that case, the sample for actions is https://github.com/Azure/azure-sdk-for-net/blob/Azure.AI.TextAnalytics_5.1.0-beta.7/sdk/textanalytics/Azure.AI.TextAnalytics/samples/Sample_AnalyzeBatchActions.md
Let me know if that helps.

Great!
The stable release will be as close as possible to 5.1.0-beta.8 :)


Start of rotate vector by quaternion with multiplication operator

Summary of the PR
Adds the ability to "multiply" a vector by a quaternion, effectively rotating it. This is supported by Unity.
Mock implementation (no operator signature yet):
public static Vector3D<double> Rotate(in Vector3D<double> v, in Quaternion<double> q)
{
    Debug.Assert(Math.Abs(q.LengthSquared() - 1.0) < 1e-6f);
    var u = new Vector3D<double>(q.X, q.Y, q.Z);
    double s = q.W;
    return 2.0 * Vector3D.Dot(u, v) * u
         + (s * s - Vector3D.Dot(u, u)) * v
         + 2.0 * s * Vector3D.Cross(u, v);
}

Related issues, Discord discussions, or proposals
https://gamedev.stackexchange.com/questions/28395/rotating-vector3-by-a-quaternion
Further Comments
I was looking for a builtin function, couldn't seem to find it (or wasn't obvious)

 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.:x: qhdwight sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.

We'll be happy to accept this if you're still willing to contribute it! I notice there hasn't been any commits yet.

Oops been a bit busy, will try to make some commits this weekend

What else should I add, public interface, unit testing?

Adding unit testing to the test project would be much appreciated

Has there been any update on this? @HurricanKai this has been open for a while, how much do you care about the unit testing?

bump @HurricanKai do we merge without testing or close for inactivity?

I don't have the time to verify or add the remaining function signatures. Closing for inactivity. Feel free to reopen or start a new PR.


Fix crash where there is no data in the response.

check for valid data,  and if it's null, return calling the failure closure.

:+1:

I close this one as duplicate of more complet #132


[RELEASE] 1.5.2

What's the task? Please describe.
Action items for releasing v1.5.2
Describe the sub-tasks.

Pre-Release

[x] Regression test plan (manual) - @khushboo-rancher (https://github.com/longhorn/longhorn/wiki/Release-Test-Plan---1.5.2)
[x] Run e2e regression for pre-GA milestones (install, upgrade) - @yangchiu
[x] Run security testing of container images for pre-GA milestones - @roger-ryao
[ ] Verify longhorn chart PR to ensure all artifacts are ready for GA (install, upgrade)  @chriscchien
[x] Run core testing (install, upgrade) for the GA build from the previous patch and the last patch of the previous feature release (1.5.1). - @yangchiu

Release

[ ] Release longhorn/chart from the release branch to publish to ArtifactHub
[ ] Release note

[ ] Deprecation note
[ ] Upgrade notes including highlighted notes, deprecation, compatible changes, and others impacting the current users

Post-Release
~- [ ] Create a new release branch of manager/ui/tests/engine/longhorn instance-manager/share-manager/backing-image-manager when creating the RC1~

[ ] Update https://github.com/longhorn/longhorn/blob/master/deploy/upgrade_responder_server/chart-values.yaml @PhanLe1010 (reviewer: @mantissahz )
[ ] Add another request for the rancher charts for the next patch release (1.5.3) @rebeccazzzz

Rancher charts: verify the chart is able to install & upgrade - @khushboo-rancher

[ ] rancher/image-mirrors update @mantissahz  (reviewer: @PhanLe1010 )
[ ] rancher/charts 2.7 branches for rancher marketplace @mantissahz  (reviewer: @PhanLe1010)

cc @longhorn/qa @longhorn/dev

Changelogs since v1.5.1.
longhorn-ui

release: v1.5.2-rc1 84a27a6
fix(volume) Add tooltip for volumes in maintenance mode 07f97cf
feat(volume) Add volume scheduling failure message cce1b84

longhorn-manager

release: v1.5.2-rc1 2d14e404
fix(backup): AWS IAM Role Annotation cd5ebc54
fix(setting): put settings' ReadOnly into effect ab42533e
Filter pdb, daemonset and deployment by namespace 9fa7892b
Refactor informer factories creation and initialization f291376b
Update unit tests 650de9bc
Filter Kubernetes resources by longhorn-system namespace 16402f01
Fix backport conflicts. dc4ee128
Update vendor after backupstore merge. 163e178d
fix: add trace log to invalid state error da6e549f
Suppress nagging error logging. Remove debug logging. Incorporate PR feedback. Change error name per review. ee5fc324
fix(storage-network): incompatible with Multus version above 4.0.0 a67dc7fb
Revert vendor changes until later. 343e0eb1
Tweak validation of backuptarget URL. 49192a96
Eliminate multiple client creations cb5572b8
fix(import): typo a5d7ca8b
style: imports b0d5a112
feat(log): add function name and line number in log message c75dac42
Delete dummy CSI services during upgrade 71e30a96
Don't deploy dummy services with CSI components eb3ec796
Add logs for volume attachment and detachment 86571643
Add metrics about disk conditions d438b2c5
Clean up orphaned snapshot attachment tickets while upgrading c6261ead
Don't create an attachment ticket for a deleted snapshot e7bf4f8e
controller: IM controller updates unknown IM handling 2797d88e
controller: Node controller skips unknown IM cleanup 7dcf0396
refactor: cleanup imports aafaf525
Clean up e.spec.upgradedReplicaAddressMap when live upgrade is no longer needed c8ad5257
Waiting for old Longhorn manager to be fully removed before starting upgrade path cd77ecd2
Make webhook deletion foreground to make sure old webhook pods are deleted before new Longhorn manager start upgrading b69977b4
Improve log level for reconcilidation error 74128f5c
vendor: update dependencies 06605c89
Revert #5017 d69bd212
Fix typo e83804ac
vendor: update dependencies 2b96f2cd
share_manager_controller: unexport and unmount volume before detaching it 14f50a82
share_manager_controller: avoid flooding messages 0c6b7d5f
fix(restore): dr volume failed by delete lock e5055c3f
feat(volume): add condition for wait backing image c53e26a8
fix(backup): ensure volume attached before taking backup 2eaae1f0
NIT: VolumeController: don't overwrite err by lastErr 540b7932
Unit test: make the new engine name deterministic based on the existing engine 4ba047e8
Make the new engine name deterministic based on the existing engine 5b5c8967
vendor: fix CVE-2022-43756 ae01550b
Refuse to create a duplicate engine 5b9508ca
rwx volume: use bigger timeo, retrans and softerr for nfs client 15cacf77
rwx volume: use soft mode with long timeout for nfs client 2a3a2e83
offline rebuilding: check spc.backendStoreDriver using a defensive way fdd7e206
refactor(logging): change scheduling related message to debug f86e6dc4
refactor: replace controller run abbreviations 8c9a180f
Fix bug two active engine when volume migrating 95de656d
refactor: replace resource informer abbreviations 7bee1783
refactor: replace resource lister abbreviations db645aeb
refactor: fix typo 27cc3658
Refuse to delete known settings 25d686e3
backup store: support SMB/CIFS hidden share 65ec4d18
Add replicaName argument to ReplicaRebuildVerify 15793672
Bump CurrentInstanceManagerAPIVersion 01543008
Fix SnapshotClone with engine identity validation enabled 7405549c
Add validation flags to engine during live upgrade 18d02a6b
Enable identity validation for deprecated EngineBinary flow 6fa5db88
Use new identity validation flags and fields 57d03250
Use versions of longhorn-engine and longhorn-instance-manager with engine identity flags and fields 13426037
refactor: cleanup imports 6b50ac8d
fix(support-bundle): missing informer in cacheSyncs 0f3e26bc
refactor: cleanup imports e15bd1eb
Refactor CreateSnapshot to return error when backup cannot complete c0f4cd92
feat(metrics): add pvc name to volume metrics 32a4b6b4
refactor: cleanup unused CopyHostDirectoryContent 23eab07e
feat(util): remove non-existing source directory log 3dd7ca30
refactor: duplicated package imported 12029f75
refactor: cleanup imports 293ebe89
fix(recurring-job): failed with backup failed e8cfdc82
fix(telemetric): collect SettingNameSnapshotDataIntegrityCronJob setting as boolean c69f7bf6
Fix backing image manager webhook is never called 1153859e
fix(backup): set backup error if backup target invalid 1bc5df5b

longhorn-engine

release: v1.5.2-rc1 3da49587
Fix backport conflicts. Make vendor/modules agree with go.mod dcf4ec79
Update vendor after backupstore merge b0f09344
feat(log): add function name and line number in log message 7ed95dd9
ci: pause integration testing for s390x 8d7c586d
refactor: replace fmt.Errorf with errors.Wrapf 80dedf19
fix: rebuilding in volume.meta blocks engine start 3848c261
Fix 6481 - unbounded growth in BackupList from failure retries. bb2c2f6e
Fix 6481 - unbounded growth in BackupList from failure retries. 773d1973
Add replica-instance-name argument to verify-rebuild-replica command 9475221d
Change Name to VolumeName and cache VolumeName in controller client 33f28010
Fix SnapshotClone with engine identity validation enabled 23b63b7d
Bump ControllerAPIVersion a45b3d49
Polish identity validation server interceptor b128fafd
Add identity verification integration tests for sync agent 3185dc9b
Add identity verification to sync agent when acting as client and server 3e919743
Prevent integration flakes due to closed socket e74e2099
Remove replica --volume-name flag in favor of the new global one 4cf7559e
Polish up engine identity log and error messages 2470a985
Add identity validation integration tests e2967448
Add identity validation flags to CLI commands dfbd8ead
Add instanceName field to ReplicaAddress message 1d14929d
Add gRPC identity interceptor to servers and clients 8e6e809d

longhorn-instance-manager

release: v1.5.2-rc1 061e041
feat(log): add function name and line number in log message 0971e04
Error out when continuously receiving errors while watching instances b14989a
vendor: update longhorn-spdk-engine b2c88ac
vendor: update dependencies 4c049cd
spdk: bind mount /host/sys to /sys 6d3105f
Dockerfile: add nvme cli 2.5 a522c90
command: correct the normal case when shutdown be44b1d
Fix SnapshotClone with engine identity validation enabled 67ae050
Differentiate between volumeName and backupVolumeName in BackupRestore caebf64
Fix naming in SnapshotClone fields 130c574
Add replicaName fields to messages and ensure they are used 3b735d9
Add FromControllerName field to EngineSnapshotCloneRequest b1863a2
Use fields from ProxyEngineRequest to instantiate tasks and controller clients 9d6dd06
Add extra field to ProxyEngineRequest 1ef4db8
Use version of longhorn-engine with engine identity flags and fields c925ae3
nit: fix incorrect error log 861572f
vendor: update go-spdk-helper 3a4177f

longhorn-share-manager

release: v1.5.2-rc1 cd85138
feat(log): add function name and line number in log message e3f14ae
Create volume export config when volume is ready f805aaa
vendor: add dependencies 8a167c3
script: support custom TAG 72060f5
rpc: implement Unmount server and client functions a86e599
proto: add Unmount method b11b102
fix(share-manager): remount volume if mount point became ro e106eab

backing-image-manager

release: v1.5.2-rc1 71d8452
feat(log): add function name and line number in log message 86339af

I just removed the below item, because we already have install and upgrade testing in https://github.com/longhorn/longhorn/wiki/Release-Test-Plan---1.5.2#e2e-pipelines.

~- [ ] Run e2e regression for pre-GA milestones (install, upgrade) - @yangchiu~

cc @longhorn/qa

@khushboo-rancher @yangchiu
For the below tasks, you just need to mark them finished after we finish the items in the test plan https://github.com/longhorn/longhorn/wiki/Release-Test-Plan---1.5.2, so there is no need to do extra tests here by yourself.

- [ ] Regression test plan (manual) - @khushboo-rancher (https://github.com/longhorn/longhorn/wiki/Release-Test-Plan---1.5.2)
- [ ] Run e2e regression for pre-GA milestones (`install`, `upgrade`) - @yangchiu

@longhorn/qa Please help use https://github.com/longhorn/longhorn/releases/tag/v1.5.2-rc2 for the following tests.
Change logs after RC1.
longhorn-ui

release: v1.5.2-rc2 7de83dc

longhorn-manager

release: v1.5.2-rc2 ed60399f
fix(backup): fix backup status if target becomes invalid during creating backup 0aa4a19c
fix(setting): checking annotation is nil or not 3af64f92
Don't crash when upgrading volume attachments after a previous failure a4a8d314

longhorn-engine

release: v1.5.2-rc2 e74a7f05

longhorn-instance-manager

release: v1.5.2-rc2 c8e06f0

longhorn-share-manager

release: v1.5.2-rc2 d307a45

backing-image-manager

release: v1.5.2-rc2 2c5b1a1

https://github.com/longhorn/longhorn/tree/v1.5.2-rc3 is ready.
Change logs after RC2.
longhorn-ui

release: v1.5.2-rc3 5859ee7
Duplicate MIME type "text/html" in /var/config/nginx/nginx.conf 94323f9

longhorn-manager

release: v1.5.2-rc3 4af769bb
fix(backup): backupInfo might be nil 5aa3a903
fix(backup): secret annotations might be nil 00edb605

Run security testing of container images for pre-GA milestones:
v1.5.2-rc3: 72 HIGH, 0 CRITICAL

@nitendra-suse you still have 2 manual testing. Do you need any helps?
@roger-ryao @chriscchien Please help @nitendra-suse if needed. We are targeting to release on Thai Friday. Thanks.

@nitendra-suse you still have 2 manual testing. Do you need any helps?
I am about to finish Kubernetes upgrade test - Nitendra item , Roger is helping with other item

@nitendra-suse you still have 2 manual testing. Do you need any helps?
I am about to finish Kubernetes upgrade test - Nitendra item , Roger is helping with other item

Hi @innobead
I've just completed the Test backup listing S3/NFS item.

Awesome. Thanks @nitendra-suse @roger-ryao .

@chriscchien Please help check longhorn chart GA PR. https://github.com/longhorn/charts/pull/134
@yangchiu Please help verify longhorn GA PR. https://github.com/longhorn/longhorn/pull/7030
After all passed, we will release 1.5.2.

Run core testing (install, upgrade) for the GA build from the previous patch and the last patch of the previous feature release (1.5.1).
amd64: 0 failure
arm64: 0 failure
amd64 upgrade: 0 failure
arm64 upgrade: 0 failure

@chriscchien any updated about longhorn chart testing?

Verify longhorn chart PR to ensure all artifacts are ready for GA (install, upgrade)

[x] https://github.com/longhorn/charts/pull/134#issuecomment-1792198616
[x] https://github.com/longhorn/longhorn/pull/7030#issuecomment-1792199024

@PhanLe1010 @rebeccazzzz @khushboo-rancher Please help with the Rancher chart release and update the upgrade responder. 1.5.2 is the stable release now.

I just made upgrade from 1.5.1 to 1.5.2 and engine for all volumes to 1.5.2
55/57 volumes without any issue, 2 stuck in some resize process (I did not resized anything for some time)
Also I can't pause/cancel this process, oddly it happened to pv with 3 nodes mysql-cluster, two other nodes were ok. Second volume that has this issue is very small instance with few megabytes of usage. Should I dig into this problem or just redeploy those workloads?

@dominch Let's create a specific issue for the discussion.

Sure, creating it now,

Ok, just for reference its: #7053
support bundle is attaching now from UI

1.5.2 rancher chat has been paused in favor of the upcoming 1.5.3, which will resolve a regression related to encryption volume.
cc @longhorn/qa


REST API for accessing adjuncts (including highlights)

NB: builds on #810 and #818, review and merge those first
This is then just one commit (currently) which:

adds an AdjunctApi combining all the functionality of PolicyApi and PolicyConfigApi generalized across adjunct types
same for AdjunctConfigSummary
deprecates the replaced policy-specific endpoints and related classes, and also the CatalogApi /catalog endpoint (since we are deprecating; also there is some overlap at CatalogPolicyItem and PolicyConfigSummary etc)

This is mostly a drop-in replacement for the /applications/XXX/entities/XXX/policies/* endpoints, now using /applications/XXX/entities/XXX/adjuncts/* and returning other items.  Note also that:

GET /v1/applications/XXX/entities/XXX/adjuncts?adjunctType=policy filters by policy (same for other types)
adjunctType is included in the returned object
the detail object if you GET /v1/applications/XXX/entities/XXX/adjuncts/XXX includes more info (config keys aka parameters, and values)
the links on the detail object include links to start and stop if and only if the adjunct supports that; it is recommended that clients use this value or at least check its presence rather than assume the declared .../start and .../stop endpoints will always be supported, as some adjuncts don't support (such as enrichers ... though we could and might change that ... so doing this check will be future-proof)

These are the API calls, for reference.  The Entity Policy and Entity Policy Config resources shown at bottom are now redundant (and deprecated).

rebased to incorporate deprecation around the multiple config REST classes and add a tidy API for that

@ahgittin The description says This is then just one commit (currently) which: but there is still 1000+ additions. Is this up to date and rebase on master?

@tbouron It's up to date.  Primarily it is still just the one commit adding the Adjunct API -- it does have a lot of lines but they are mostly boilerplate (like a couple hundred just to declare the API) ... REST cruft and annotations.
However the merge of the XxxConfig deprecation had conflicts and there is a fair bit here tidying and improving that.  Still pretty straightforward though.

Cool, thanks @ahgittin. I'm reviewing it right now.

BTW, I just realised that there is no tests coverage for the new endpoints Entity Adjuncts and Entity Adjuncts Config. Can you add that please @ahgittin ?

one question from above to call out special @tbouron (given how github hides things) regarding the list method which takes argument
@QueryParam("adjunctType") final String adjunctType

you've suggested type but that normally refers to registered type which is wrong here; i think either leave as is, or change to supertype or adjunctKind.  wdyt?

left it as adjunctType for now - could evolve to supertype in future
tests added
that's everything addresses i think

@ahgittin Sorry, I did miss your comment. I was suggesting type to be consistent with the DELETE method. I guess adjunctType is fine for now (superType is really confusing for me) but I would really like to fix this in the future, across all endpoints

@tbouron totally forgot about your point karaf is missing this; have fixed that in #854 if you could take a quick look

@ahgittin I'll review #854 now. Although, there is another point that is missing from this PR: Swagger still don't show the deprecation warning for the entity policy endpoints.
For example, here is the one for /v1/locations:


createContractTx

createContractTx支持多个地址转多个地址吗？如果支持的话，balance取什么值？

no it does not currently. You will have to write some custom code to combine the transactions yourself.


Revert dtolnay/rust-toolchain action to stable

We temporarily restricted  dtolnay/rust-toolchain action to Rust 1.60 (see https://github.com/aws/aws-nitro-enclaves-cli/commit/14dfa05ddd7bb008366ebbe143ddb53b66905309). We will need to revert this and fix all the warnings reported by Clippy for the latest Rust version (currently 1.75).

Solved by https://github.com/aws/aws-nitro-enclaves-cli/pull/577.


gLM2 and protein-protein interaction prediction

Hey, just a thought. You could probably do something similar with the new gLM2 and Sergey's "Categorical Jacobian" method, and this would be very useful for filtering binders designed by RFdiffusion, AlphaProteo, etc.

Thanks for letting me know! They seem interesting!
I am wondering whether they work well for the interaction including flexible regions such as IDR. I can take a look at those when I have time.


Handle Low Wind Speed

Publishes a boolean lowWindConditions to the globalWind message that will be used by Controls to use or stop using the low power controller.
Todo:

[x] Finetune threshold based on real sensor data
[x] Decide how to use lowWindConditions in the main loop
[x] Implement using lowWindConditions to create local paths less often without slowing down main loop (every ~10s)
[x] Use multiple thresholds so that we don't continuously switch between using and not using the low power controller
[x] Push the changes to the sailbot-msg repo: https://github.com/UBCSailbot/sailbot-msg/pull/11
[x] Low power controller pushed to master branch of controller repo: https://github.com/UBCSailbot/boat_controller/pull/21

Apparent Wind
Boat GPS speed
Ideal Outcome
Outcome expected from code

high
any
Sail. If we can feel lots of wind, then sails will work regardless of if the boat is currently moving, or if there is current
Exits Low Wind Mode if measured wind is high enough

low
High
If there's no current, sail. We could be sailing down wind, where apparent wind is low but we still want to sail. If there IS current, and its the same vector as wind, and we are trying to sail downwind, then apparent wind would be low and GPS speed would be non-zero. In this case, we would want to not sail.
Exits low wind mode if boat speed picks up. If there is current, this could be the "wrong" decision.

low
low
If there's no current, don't sail. If there IS current, and we are trying to sail downwind and upcurrent, then we should sail because at least we would hold steady in current instead of drifting backwards
Enters LWM if apparent wind is low and gps speed is low. If there is current, this could be the "wrong" decision.

Comments:

In the case where apparent wind and GPS speed are low, but we're sailing downwind and upcurrent, I think its acceptable to enter LWM anyway. At least LWM is still sailing, just less actively. Interestingly, if we give up and drift with the current, this pushes us upwind, which would increase the apparent wind speed and GPS speed. This would lead to cycles of turning off LWM, sailing in a way that decreases GPS speed and apparent wind, entering LWM, then increasing windspeed and GPS speed in the wrong direction. Since GPS speed and measured windspeed are both zero, true wind will also be zero, so using true wind instead wouldn't help anyways.
In the case where current and true wind are aligned and we are trying to sail downwind, it is worrying that we would be trying to sail despite having no wind relative to the water. I believe Control uses apparent wind, and since there is no apparent wind, the wind angle is noisy, so they would waste power with rudder and sail movements.

[comments still in progress]

@UBCSailbot/controller what is the status of low power mode?

Testing notes:

** Need to change the start boat speed in MOCK_sensors.py line 19 for testing
Issue: path with angle in it doesn't straighten to direct path on beam reach, even when not in low wind mode. Does the master branch behave like this? Turns out yes, so its not an issue with my code. Added a new issue to github.

[still in progress]

lowWindConditions is now its own rostopic, called /lowWindConditions.
I tested the changes a bit and it seems like everything works fine. So far, I've tested changing the global windspeed with rosparam set, and then using rostopic list to observe /lowWindConditions respond correctly. I still want to spend more time testing how local_pathfinding behaves when lowWindConditions are true.
This topic just contains a boolean, so I don't think there needs to be any mention of Low Wind stuff in the msg repo. I've updated the lowWindConditions branch of the msg repo accordingly. I assume the CircleCI tests I've failed are because the msg repo isnt up-to-date for this code, but let me know if you find any other issues.

I want to test a bit more before merging, just to make sure everything works as expected. See the comments above and below.
Test Procedure (some of this has been done already but I want to double-check):

Change START_BOAT_SPEED_KMPH in MOCK_sensors.py to be low enough that low wind code comes into effect
Add a temporary print statement in main_loop.py to see the loop counter's value each loop.
Confirm the loop counter:
a. resets when lowWIndConditions becomes False then True again
b. resets when a new path is created
c. doesn't get larger than just large enough to allow a path update
Confirm it enters and exits lowWindConditions as expected.
a. Change windspeed during a run
b. Change boatspeed between runs
c. ** Recall that lowWindConditions is controlled by apparent wind, whereas we only control the true wind in the simulation.
Use extra temporary print statements to make sure control flows correctly in main_loop.py.
Keep an eye out for any other fishy business.

Testing today:

had to checkout e247263 to make local pathfinding run properly (commit where Patrick merged master into LowWindThreshold)
Temporarily changed START_BOAT_SPEED_KMPH in MOCK_sensors.py to be low enough that low wind code comes into effect. The default global wind speed is low enough that this is normally all that is needed to enter lowWindConditions.
rospy.logwarn("Low wind conditions: {}. New path attempts: {}".format(lowWindConditions, createNewLocalPathAttempts)) was added temporarily to main_loop.py, right after where it sets lowWindPermitsUpdate
Testing: used rosparam set /global_wind_direction_degrees to change wind direction so the path had upwind sailing. Observed the createNewLocalPathAttempts counter increase to the threshold, then a new path was created. (As desired)
I think CREATE_NEW_LOCAL_PATH_ATTEPT_THRESH should be increased. If Raye is sailing into the wind, pathfinding will want to update the path every loop. With the current threshold, it only takes the counter ~10 seconds to get to the threshold, and then the local path is permitted to update. To save power with lowWindConditions, we want to update the path fewer times than we would have over the same period (eg, a few minutes) in the same conditions but without lowWindConditions. My concern is that with too low a threshold, then all we achieve is waiting a little bit before updating the path. We want a threshold high enough that without lowWindConditions, the path would have been updated multiple times in the amount of time it takes for the counter createNewLocalPathAttempts to reach the threshold. I think about 50 or so would be good?
will resume this comment later

I kept testing in detached head state, checked out to e247263. I'm not sure why but I keep getting this error if I try to run local pathfinding in the latest version of this branch

Discovered a bug: In lowWindConditionsCallback(), data is a special ROS datatype. I needed to do data.data instead to access the normal boolean. Not sure how I never noticed that earlier.
Forgot, then remembered, that lowWindConditions uses apparent wind, so it's a little different from the global wind. Temporarily changed the start boat speed to be almost 0, so the difference would be minimal.
Also edited a comment in ros_interface.py to reflect that it uses apparent wind.
Changed global wind with rosparam set command, and it entered and exited lowWindConditions as expected.
Changed the wind angle so that the path would be bad, and observed the counter increase up to the threshold, then a new path was created. (As expected). The loop counter reset to 0 after the new path was created (As expected).
While the counter was greater than 0, I increased the wind speed so that it exited lowWindConditions. The counter reset to 0, as expected.
Adjusted the boat speed between runs. This affects lowWindConditions as expected.

I think this task will be completed once the following changes are made:

increase CREATE_NEW_LOCAL_PATH_ATTEPT_THRESH to ~40
in lowWindConditionsCallback(), change it to lowWindConditions = data.data
In ros_interface.py, reword comments in updateWindIsLow() to avoid "Global wind"

I kept testing in detached head state, checked out to e247263. I'm not sure why but I keep getting this error if I try to run local pathfinding in the latest version of this branch

The changes to min_voltage were recently pushed to sailbot-msg, I just merged in the corresponding local-pathfinding changes to this branch:

git pull sailbot-msg master
catkin_make in the catkin_ws directory

Then you shouldn't encounter this error anymore

Discovered a bug: In lowWindConditionsCallback(), data is a special ROS datatype. I needed to do data.data instead to access the normal boolean. Not sure how I never noticed that earlier.

This is a good catch, I will check if min_voltage follows the same behavior during today's dry land testing

@patrick-5546 Thanks for the help merging in the min_voltage stuff! It seems to have worked.
I made the changes described in my previous comment and tested a little bit to make sure it still works with the min_voltage changes. I did more thorough testing of the changes relevant to lowWindThreshold previously, so I don't think any more testing is needed. I think its good to go!
Feel free to have another look if you like, but I don't think that's necessary. Should I go ahead and hit Squash and merge, and close the Issue?

Go ahead 👍


community: Contribute should have a clear link to docs/"Contributing to DVC"

Hello everyone,
As an interested contributor, when I click on top navigation Community > Contribute I should see a clear CTA or link to Contributing to DVC. This being the starting page for developers who are interested should be visible in the main sites Contribute page in my opinion. If the team agrees, then I will create a PR.
Thank you

Good idea @brainless ! Maybe where it says "We welcome contributions to our code and docs." it could be changed a little to link to both https://dvc.org/doc/user-guide/contributing/core and to https://dvc.org/doc/user-guide/contributing/docs.

Hey is this issue still active?
I'm new to open source and want to give it a try.
What do you think @jorgeorpinel?

Pull requests are very much welcome @iswarmondal . Please see https://dvc.org/doc/contributing/docs first.


In avoid-accidental-submissions keep focus and show message

Closes #4462 (based on https://github.com/sindresorhus/refined-github/issues/4462#issuecomment-876987450 and https://github.com/sindresorhus/refined-github/issues/4462#issuecomment-877253535)
The feature now:

Prevents first enter, no focus change.
Shows message above the title/commit field.
Allows a second enter on the field, currently any time later.

Test URLs

New issue: https://github.com/sindresorhus/refined-github/issues/new
New PR: https://github.com/sindresorhus/refined-github/compare/main...darkred:avoid-accidental-submissions-keep-focus-show-message?expand=1
Merge PR commit: any non-draft PR
'create new file' commit: https://github.com/sindresorhus/refined-github/new/main

Screenshots

New issue:

New PR:

Merge PR commit:

'create new file' commit:

Notes to reviewers:

In the last case, the message is displayed on the very top, above the filename textbox. I think it might be better if it was displayed lower, right above the commit message textbox. What do you say?
Would it be better if I used in the message <code> tags for the keys  ?

With this PR, in the new Issue/PR forms, if you press Enter while the title is empty, the message is still displayed, even though the title can't be empty. I believe it would be better if it was only displayed when there's some typed text in the textbox. Maybe this would better be as part of another PR ?
The gif for the feature in readme.md should be updated accordingly in the end.

On second thought, this feels a bit the like the opposite of what it was: The prevention was silent and now it's too loud. 😅
Possible improvements:

use blue instead of yellow (definitely)

add a background-less smaller message immediately below the field, as previously suggested? (without the button)

or with the button

use a temporary overlay exactly like Chrome

I think the second bullet might be best because:

it's less noisy
it doesn't move the focus (if it was accidental, the user definitely wants to stay in the field and continue typing)

Open to more suggestions.
@darkred Either way wait until we decide before updating the readme

I am leaning towards option 2.
I think this change would only be necessary for issues. I think commits and merges the old way was ok, but I am not sure.
I will try out the branch later today and let you know my final thoughts.

@yakov116 if this message makes sense, I think it should be shown everywhere the feature runs. It wouldn’t make sense to be visible in some places and just change the behavior silently in others.

I agree. My thinking is that when merging and commiting the submit button is just below the textArea. So another button confirm right below is unnecessary.
However that is not the case with new Issues/PR's. (Its a big textArea)
I agree that we should be consistent.
I want to try out the branch to checkout the annoyance level and will give you feedback.

I think I have followed all your suggestions:

I followed Option 2 (I used an arbitrary classname for the message element)
Tested it in all cases: Issues, PRs compare, PR merge, new file, edit file
Now the message in new Issues only appears when the title is not empty:

@darkred instead of checking isIssue and empty fields, what matters to us is whether the form can be submitted. There might be other logic hidden in the form and it’s best to just verify whether the submit button is disabled. Selecting the right button on every page we cover could be troublesome but [type=submit] should bring you almost all the way there.

I know have a main if, to check whether the submit button is enabled (not disabled):
+ if (select.exists('.btn-primary[type="submit"]:not([disabled])')) {
		if (pageDetect.isNewFile() || pageDetect.isEditingFile() || pageDetect.isPRConversation()) {
			focusedInput.after(message);
		} else {
			focusedInput.parentElement!.append(message);
		}
+ }

Note that in PR compare pages, (e.g. https://github.com/darkred/test/compare/main...t1) for some strange reason, when having RG enable, even with the 'avoid-accidental-submissions` feature disabled, the "Create pull request" button is initially enabled, even with empty title:

But, if I disable RG, then the button is initially disabled with empty title, as expected:

instead of checking isIssue

Can you open an issue for that bug?

Can you open an issue for that bug?

Yes, here: #4565

instead of checking isIssue

I don't quite understand what you mean:
after my last changes, there's no longer check for isIssue (nor checking for empty fields ) - there's now only an if check whether the page's main submit button is active.
The contained if :
	if (pageDetect.isNewFile() || pageDetect.isEditingFile() || pageDetect.isPRConversation()) {
	 // ..
	} else {
	 // ..

is still needed, it's for a different reason: to create the message, with .after() or parentElement.append() as needed.

What more is needed for me to do?

Thanks @darkred!

I've been seen it today. It looks pleasant 😌


[BUG]Backup restore failed due to the size of the BackupVolume is empty

Describe the bug
When the BackupTargetController just creates the BackupVolume CR and the BackupVolumeController has not synced it with the remote backup target, the size in the CR status can be empty then the pre-restore check based on this BackupVolume will fail the volume.
This may be a race issue. Not sure if the below reproducing step works.
To Reproduce
Steps to reproduce the behavior:

Create the 1st backup for a volume
Send a restore command based on the backup once the Backup is complete. (It's better to do this via a script or via an integration test)
Check the volume and the manager log.
=> The volume becomes Faulted. The manager will report the error log below.

Expected behavior
The restore works fine
Log
[longhorn-manager-9mcdr] E0830 10:09:17.704286       1 engine_controller.go:695] failed to update status for engine pvc-212d3f39-0142-457f-9a6d-4d98291d30cd-e-3a3b0f47: failed pre-restore check for engine pvc-212d3f39-0142-457f-9a6d-4d98291d30cd-e-3a3b0f47: strconv.ParseInt: parsing "": invalid syntax
[longhorn-manager-9mcdr] time="2021-08-30T10:09:17Z" level=info msg="Event(v1.ObjectReference{Kind:\"Volume\", Namespace:\"longhorn-system\", Name:\"pvc-212d3f39-0142-457f-9a6d-4d98291d30cd\", UID:\"579d687b-4f92-4f41-83b7-dea623589149\", APIVersion:\"longhorn.io/v1beta1\", ResourceVersion:\"2065404\", FieldPath:\"\"}): type: 'Warning' reason: 'FailedRestore' replica pvc-212d3f39-0142-457f-9a6d-4d98291d30cd-r-b88ed04d failed the restore: failed pre-restore check for engine pvc-212d3f39-0142-457f-9a6d-4d98291d30cd-e-3a3b0f47: strconv.ParseInt: parsing \"\": invalid syntax"
[longhorn-manager-9mcdr] time="2021-08-30T10:09:17Z" level=info msg="Event(v1.ObjectReference{Kind:\"Volume\", Namespace:\"longhorn-system\", Name:\"pvc-212d3f39-0142-457f-9a6d-4d98291d30cd\", UID:\"579d687b-4f92-4f41-83b7-dea623589149\", APIVersion:\"longhorn.io/v1beta1\", ResourceVersion:\"2065404\", FieldPath:\"\"}): type: 'Warning' reason: 'FailedRestore' replica pvc-212d3f39-0142-457f-9a6d-4d98291d30cd-r-e2f89e62 failed the restore: failed pre-restore check for engine pvc-212d3f39-0142-457f-9a6d-4d98291d30cd-e-3a3b0f47: strconv.ParseInt: parsing \"\": invalid syntax"
[longhorn-manager-9mcdr] time="2021-08-30T10:09:17Z" level=info msg="Event(v1.ObjectReference{Kind:\"Volume\", Namespace:\"longhorn-system\", Name:\"pvc-212d3f39-0142-457f-9a6d-4d98291d30cd\", UID:\"579d687b-4f92-4f41-83b7-dea623589149\", APIVersion:\"longhorn.io/v1beta1\", ResourceVersion:\"2065404\", FieldPath:\"\"}): type: 'Warning' reason: 'FailedRestore' replica pvc-212d3f39-0142-457f-9a6d-4d98291d30cd-r-f3778c81 failed the restore: failed pre-restore check for engine pvc-212d3f39-0142-457f-9a6d-4d98291d30cd-e-3a3b0f47: strconv.ParseInt: parsing \"\": invalid syntax"

Environment:

Longhorn version: master(08/30/2021)
Kubernetes distro (e.g. RKE/K3s/EKS/OpenShift) and version: v1.20.9

cc @jenting

Verification: Passed
Longhorn version: master-head 08/30/2021 PDT
Steps:
This integration test is doing the steps described in the issue description.
I run the integration test 5 times. They all passed.


This Project is Dead!

last Milestone is exipred two YEARS ago!!!!!
don't waste your time here

Well, you could always help if you want. People like me need time to build such applications. Github is not a free software library, but a code repository.


Initial implementation

Checklist

[x] Keep pull requests small so they can be easily reviewed.
[x] Update the documentation.
[x] Categorize the PR by setting a good title and adding one of the labels:
bug, enhancement, documentation, change, breaking, dependency
as they show up in the changelog
[x] Link this PR to related issues.

@ccremer now I ended up with
  metadata+: {
    labels+: params.labels,
  },

on all objects, is there a way to streamline this (except for implementing a func that adds them to all objects in a list)?

@ccremer now I ended up with
  metadata+: {
    labels+: params.labels,
  },

on all objects, is there a way to streamline this (except for implementing a func that adds them to all objects in a list)?

Found something easier :-) Happy for now


Usage function doesn't correctly print when called with multiple interpolation arguments

As an example:
Couldn't read [[/Users/lucianj/.databases.json open /Users/lucianj/.databases.json: no such file or directory]] file. err=%!v(MISSING)
https://github.com/marianogappa/sql/blob/master/usage.go#L11 should be fmt.Println(fmt.Sprintf(error, args...))

OMG who would write fmt.Println(fmt.Sprintf(error, args))???
37d2dd84 (Mariano Gappa 2016-09-17 21:19:38 +1200 11)       fmt.Println(fmt.Sprintf(error, args))

meh

Solved in
https://github.com/marianogappa/sql/releases/tag/1.0.2


--inline-vue target lib not working

Version
4.2.2
Environment info
System:
    OS: Windows 10 10.0.18362
    CPU: (4) x64 Intel(R) Core(TM) i5-6300U CPU @ 2.40GHz
  Binaries:
    Node: 12.15.0 - C:\Program Files\nodejs\node.EXE
    Yarn: Not Found
    npm: 6.13.4 - C:\Program Files\nodejs\npm.CMD
  Browsers:
    Edge: 44.18362.449.0
  npmPackages:
    @vue/babel-helper-vue-jsx-merge-props:  1.0.0
    @vue/babel-plugin-transform-vue-jsx:  1.1.2
    @vue/babel-preset-app:  4.2.2
    @vue/babel-preset-jsx:  1.1.2
    @vue/babel-sugar-functional-vue:  1.1.2
    @vue/babel-sugar-inject-h:  1.1.2
    @vue/babel-sugar-v-model:  1.1.2
    @vue/babel-sugar-v-on:  1.1.2
    @vue/cli-overlay:  4.2.2
    @vue/cli-plugin-babel: ~4.2.0 => 4.2.2
    @vue/cli-plugin-eslint: ~4.2.0 => 4.2.2
    @vue/cli-plugin-router:  4.2.2
    @vue/cli-plugin-vuex:  4.2.2
    @vue/cli-service: ~4.2.0 => 4.2.2
    @vue/cli-shared-utils:  4.2.2
    @vue/component-compiler-utils:  3.1.1
    @vue/preload-webpack-plugin:  1.1.1
    @vue/web-component-wrapper:  1.2.0
    eslint-plugin-vue: ^6.1.2 => 6.2.1
    vue: ^2.6.11 => 2.6.11
    vue-eslint-parser:  7.0.0
    vue-hot-reload-api:  2.3.4
    vue-loader:  15.9.0
    vue-style-loader:  4.1.2
    vue-template-compiler: ^2.6.11 => 2.6.11
    vue-template-es2015-compiler:  1.9.1
  npmGlobalPackages:
    @vue/cli: Not Found

Steps to reproduce
vue create hello-world
vue-cli-service build --target lib --inline-vue --name vueTrp
What is expected?
vue is inlined inside the lib
What is actually happening?
vue is not inlined in the lib

The Result locks so:
<meta charset="utf-8">
<title>vueTrp demo</title>

  <demo></demo>

But I don't want to load Vue again. If i comment the line out

I get this error:
demo:12 Uncaught ReferenceError: Vue is not defined
WHY?

I'm wondering the same thing. Tried also to change the entry file to main.ts (like instructed here https://cli.vuejs.org/guide/build-targets.html#vue-vs-js-ts-entry-files), but wasn't able to get the application to render. I added the mentioned webpack config & created empty app, with following main.ts:
...
const app = new Vue({
  store,
  render: h => h(App)
}).$mount("#app");

export default app;

With command vue-cli-service build --target lib --name myLib --inline-vue src/main.ts, shouldn't this render the application, if I have following HTML:

<link rel="stylesheet" href="./myLib.css">

Am I missing something?

Hi @dertuerke,
Passing --inline-vue does include Vue as part of your generated lib (This is achieved by the Externals configuration option from Webpack). However, it does not makes the Vue variable available in the main window object since that would defeat the whole purpose of modularization. That's why you get the 'undefined' error when trying to use the Vue constructor in a page that doesn't include Vue.
And @luomavaltteri, in your case you're including your library before the element with id app is loaded on the page, so that's why you never see your app rendering. Try placing the script tag that loads your library after the div#app and it should work.

Thanks @jaireina, that was it 😅

I stumbled upon this issue as I'm having similar problems inlining vue.  I am building the bundle with --inline-vue in UMD mode. However, in the build output, it's still trying to initialize itself referencing a global Vue reference on window.  Here's the code from the UMD bundle:
(function webpackUniversalModuleDefinition(root, factory) {
	if(typeof exports === 'object' && typeof module === 'object')
		module.exports = factory(require("vue"));
	else if(typeof define === 'function' && define.amd)
		define([], factory);
	else if(typeof exports === 'object')
		exports["app"] = factory(require("vue"));
	else
		root["app"] = factory(root["Vue"]);
})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__8bbf__) {

In this case, root is window and on this line:
root["app"] = factory(root["Vue"]);
I'm building it with this command:
yarn build --target lib --inline-vue --name app ./src/init.ts
It's trying to reference a global Vue variable.  I'm so confused, please help!
Thanks.

You know, I just looked at the output and regardless whether or not I specify --inline-vue, the bundle output size is the same.  Strange as I'm definitely importing Vue from init.ts

@johnnadratowski can you provide a repo where I can reproduce this?

Unfortunately I cannot.  I did create this repo based on another repo, which was built ~6 months ago. It could be that, during the process of copying + cleaning the code, then upgrading the packages, this broke.
This isn't super critical for me, I was doing some research to see if I could embed our vue app into a legacy UI app.  This was actually successful, as long as I included Vue from a CDN in my tests in the .
Thanks!

I think we can close this then. The original issues were cleared up to be misconceptions/mistakes and john's issue is not reproducible.


time: Timer.Stop documentation not covering all the cases

Hello,
In the section where the Stop method of a timer object is described there is a snippet about ensuring to drain the channel in case this method returns False.
However, it does not mention explicitly that this code snippet works only when the Stop returns False in case the timer has already expired. Because only in this case the channel read will not block.
If the timer is already stopped , this operation will block indefinitely, therefore will not drain the channel since no value will be ever sent.

Do you have a specific change to suggest?
In particular, note that the documentation for that example already says "assuming the program has not received from t.C already".

Yes, but the clause "assuming the program has not received from t.C already" is not making any difference without any additional info about the event that causes the t.Stop() to return False.
So, assuming the program has not received from t.C already and the timer has already expired, then try to drain the channel.
Because otherwise, some other part of the program(a go routine maybe) could have already tried to stop the timer, so at the moment the snippet does the check even it has not yet received from the t.C, it does not know if the t.Stop()==False is due to expiration or previously stopped action.

Can you show us the complete docs for Stop that you think would be clearer?  Thanks.

So it would go like this:
func (t *Timer) Stop() bool

Stop prevents the Timer from firing. It returns true if the call stops the timer, false if the timer has already expired or been stopped. Stop does not close the channel, to prevent a read from the channel succeeding incorrectly.
To ensure the channel is empty after a call to Stop, check the return value and drain the channel. For example,
a) assuming the program has not received from t.C already
b) we have not stopped the timer yet
c) and the timer has been expired :
if !t.Stop() {
	<-t.C
}

Otherwise, if somewhere else in the program the timer has been already stopped, trying to drain the channel  is going to  block.
This cannot be done concurrent to other receives from the Timer's channel.
For a timer created with AfterFunc(d, f), if t.Stop returns false, then the timer has already expired and the function f has been started in its own goroutine; Stop does not wait for f to complete before returning. If the caller needs to know whether f is completed, it must coordinate with f explicitly.
However, on a closer look i start to believe that returning the same value (False) in two different scenarios would not be such a good idea.Because the programmer might need to do multiple checks and be sure that the timer is not already stopped before draining this channel.
Perhaps it could be better the t.Stop() return False only in the case where the timer is expired and panic when is already stopped, making the decision easier rather than worrying if some forgotten go routine has already called Stop on this channel.Anyway, i think such implementation detail would require other things so perhaps the change to documentation is easier to be done.


Why do open web pages display 'Not Found'?

# my code
import fiftyone as fo
import fiftyone.zoo as foz

if __name__ == '__main__':
    dataset = foz.load_zoo_dataset("quickstart")
    session = fo.launch_app(dataset, port=8103)
    session.wait()

fiftyone version: 0.21.6
Describe the problem
I follow and run the quickStart code，but the open page display 'Not Found'. I have changed the port, but didn't work.

Hi @Bennie61. Downgrading to 0.21.4 until 0.22.0 is released may solve your issue. https://github.com/voxel51/fiftyone/pull/3439 has the details

Resolved with 0.22.0!


fix: #504 keep footer at the bottom

Refactor the main layout to use AntD layout components

Fix the formating changes