potential issue: upgrade from 2022.3.1 to 2022.3.2  didn't load the NApp

@italovalcy, has reported that on yesterday's prod deployment, flow_manager got stuck, maybe it was related to the new index related to priority creation, index creation is done in the background, but maybe it conflicted and might need a script, still needs investigation:
5a6
>         ("flows", [("flow.priority", pymongo.ASCENDING)], {}),
11a13
>                 ("flow.priority", pymongo.ASCENDING),

Based on MongoDB 5 docs, indeed the ideal scenario would also to provide a script to get rid of the old modified compound index:

To modify an existing index in the MongoDB Shell, you need to drop and recreate the index. The exception to this rule is TTL indexes, which can be modified via the collMod command in conjunction with the index collection flag.

Still, I haven't managed to reproduce the issue upgrading from 2022.3.1 to 2022.3.2, I also made sure to add 1000+ flows in the collection, the new indexes were created as expected without blocking the NApp initialization:
2023-08-04 15:55:40,986 - INFO [kytos.core.api_server] (MainThread) Started /api/kytos/topology/v3/ - GET
2023-08-04 15:55:40,996 - INFO [kytos.core.controller] (MainThread) Loading NApp kytos/flow_manager
2023-08-04 15:55:41,116 - INFO [kytos.napps.kytos/flow_manager] (MainThread) Created DB index [('flow.priority', 1)], collection: flows)
2023-08-04 15:55:41,182 - INFO [kytos.napps.kytos/flow_manager] (MainThread) Created DB index [('switch', 1), ('flow.cookie', 1), ('flow.priority', 1), ('state', 1), ('inserted_at', 1),
 ('updated_at', 1)], collection: flows)
2023-08-04 15:55:41,184 - INFO [kytos.core.napps.base] (flow_manager) Running NApp: <Main(flow_manager, started<PHONE_NUMBER>66720)>
2023-08-04 15:55:41,187 - INFO [kytos.core.api_server] (MainThread) Started /api/kytos/flow_manager/v2/flows/<dpid> - POST
2023-08-04 15:55:41,187 - INFO [kytos.core.api_server] (MainThread) Started /api/kytos/flow_manager/v2/flows - POST
2023-08-04 15:55:41,187 - INFO [kytos.core.api_server] (MainThread) Started /api/kytos/flow_manager/v2/flows/<dpid> - DELETE
2023-08-04 15:55:41,187 - INFO [kytos.core.api_server] (MainThread) Started /api/kytos/flow_manager/v2/flows - DELETE
2023-08-04 15:55:41,187 - INFO [kytos.core.api_server] (MainThread) Started /api/kytos/flow_manager/v2/delete/<dpid> - POST
2023-08-04 15:55:41,187 - INFO [kytos.core.api_server] (MainThread) Started /api/kytos/flow_manager/v2/delete - POST
2023-08-04 15:55:41,187 - INFO [kytos.core.api_server] (MainThread) Started /api/kytos/flow_manager/v2/flows/<dpid> - GET
2023-08-04 15:55:41,187 - INFO [kytos.core.api_server] (MainThread) Started /api/kytos/flow_manager/v2/flows - GET
2023-08-04 15:55:41,188 - INFO [kytos.core.api_server] (MainThread) Started /api/kytos/flow_manager/v2/stored_flows - GET
2023-08-04 15:55:41,198 - INFO [kytos.core.controller] (MainThread) Event handler conn started
2023-08-04 15:55:41,198 - INFO [kytos.core.controller] (MainThread) Event handler raw started
2023-08-04 15:55:41,198 - INFO [kytos.core.controller] (MainThread) Event handler msg_in started
2023-08-04 15:55:41,198 - INFO [kytos.core.controller] (MainThread) Event handler msg_out started
2023-08-04 15:55:41,198 - INFO [kytos.core.controller] (MainThread) Event handler app started
2023-08-04 15:55:41,204 - WARNING [werkzeug] (ThreadPoolExecutor-0_0) WebSocket transport not available. Install simple-websocket for improved performance.
 * Serving Flask app 'kytos.core.controller' (lazy loading)
 * Environment: production

rs0 [direct: primary] napps> db.flows.countDocuments()
1003

rs0 [direct: primary] napps> db.flows.getIndexes()
[
  { v: 2, key: { _id: 1 }, name: '_id_' },
  {
    v: 2,
    key: { flow_id: 1 },
    name: 'flow_id_1',
    background: true,
    unique: true
  },
  {
    v: 2,
    key: { 'flow.cookie': 1 },
    name: 'flow.cookie_1',
    background: true
  },
  { v: 2, key: { state: 1 }, name: 'state_1', background: true },
  {
    v: 2,
    key: {
      switch: 1,
      'flow.cookie': 1,
      state: 1,
      inserted_at: 1,
      updated_at: 1
    },
    name: 'switch_1_flow.cookie_1_state_1_inserted_at_1_updated_at_1',
    background: true
  },
  {
    v: 2,
    key: { 'flow.priority': 1 },
    name: 'flow.priority_1',
    background: true
  },
  {
    v: 2,
    key: {
      switch: 1,
      'flow.cookie': 1,
      'flow.priority': 1,
      state: 1,
      inserted_at: 1,
      updated_at: 1
    },
    name: 'switch_1_flow.cookie_1_flow.priority_1_state_1_inserted_at_1_updated_at_1',
    background: true
  }
]

More info
If this situation reproduces again it'd be helpful to run these two MongoDb command in the DB console to get information about current locks to see if anything else could be blocking:
rs0 [direct: primary] napps> db.currentOp({waitingForLock: true})
{ inprog: [], ok: 1 }
rs0 [direct: primary] napps> db.adminCommand({lockInfo: 1})
{
  lockInfo: [],
  ok: 1,
  '$clusterTime': {
    clusterTime: Timestamp({ t:<PHONE_NUMBER>, i: 1 }),
    signature: {
      hash: Binary(Buffer.from("0000000000000000000000000000000000000000", "hex"), 0),
      keyId: Long("0")
    }
  },
  operationTime: Timestamp({ t:<PHONE_NUMBER>, i: 1 })


⚠ Samsung has degraded performance

In f0ed72d, Samsung (https://samsung.com) experienced degraded performance:

HTTP code: 200
Response time: 2375 ms

Resolved: Samsung performance has improved in d0d737c.


[Feature Request] Compose box should be accessible when opening a old chat

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Action Performed:

Go to NewDot
Open any report that you have previously chatted with, but haven’t for quite some time

Expected Result:
The compose box is accessible and a message can be typed even while the skeleton UI loads
Actual Result:
The compose box is blocked until the skeleton UI loads. Clicking it does nothing, even though you can see it.
Workaround:
unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android / native
[ ] Android / Chrome
[ ] iOS / native
[ ] iOS / Safari
[ ] MacOS / Chrome / Safari
[ ] MacOS / Desktop

Version Number: 1.2.52-4
Reproducible in staging?: Y
Reproducible in production?: Y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos:

https://user-images.githubusercontent.com/43996225/211910433-48d9e909-4152-487b-9b6f-b05910be0986.mp4
Expensify/Expensify Issue URL:
Issue reported by: @JmillsExpensify
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1673289703690979
View all open jobs on GitHub

We are already discussing this here. And will get fixed in this PR.

Thanks @techievivek !!   Put on hold pending https://github.com/Expensify/App/issues/13088

@techievivek I think we're dealing with a bit of a separate issue than you dealt with in the PR you've linked. This behavior is actually happening while online as well, and the chats are still loading.

@yuwenmemon Agree, it seems to be happening in both offline and online cases.

it sounds like on offline we already had a non-blocking framework in place.

We have things already in place; it's just that the compose box is disabled, so users can't take optimistic actions in both online and offline cases.

Passing it to contributors to work on it.

Proposal
@@ -317,7 +317,7 @@ class ReportScreen extends React.Component {
                             {(!this.isReportReadyForDisplay() || isLoadingInitialReportActions) && (
                                 <>
                                     <ReportActionsSkeletonView containerHeight={this.state.skeletonViewContainerHeight} />
-                                    <ReportFooter shouldDisableCompose isOffline={this.props.network.isOffline} />
+                                    <ReportFooter isOffline={this.props.network.isOffline} />
                                 </>
                             )}
                             <PortalHost name={CONST.REPORT.DROP_HOST_NAME} />
~

@getusha Can you please elaborate your proposal?
Your are proposing to remove shouldDisableCompose . In which PR was it added? What was the use of shouldDisableCompose then?  And Why won't it be any longer necessary?

Proposal 2
         // (which is shown, until all the actual views of the ReportScreen have been rendered)
         const animatePlaceholder = !freeze;

+        const isReportArchived = ReportUtils.isArchivedRoom(this.props.report);
         return (
             <ScreenWrapper
                 style={screenWrapperStyle}
@@ -238,7 +239,7 @@ class ReportScreen extends React.Component {
                             <ReportHeaderSkeletonView animate={animatePlaceholder} />
                             <View style={[styles.flex1, styles.justifyContentEnd, styles.overflowHidden]}>
                                 <ReportActionsSkeletonView animate={animatePlaceholder} containerHeight={this.state.skeletonViewContainerHeig
ht} />
-                                <ReportFooter shouldDisableCompose isOffline={this.props.network.isOffline} />
+                                <ReportFooter shouldDisableCompose={false} isOffline={this.props.network.isOffline} />
                             </View>
                         </>
                     )}
@@ -300,26 +301,26 @@ class ReportScreen extends React.Component {
                                         isDrawerOpen={this.props.isDrawerOpen}
                                         parentViewHeight={this.state.skeletonViewContainerHeight}
                                     />
-                                    <ReportFooter
-                                        errors={addWorkspaceRoomOrChatErrors}
-                                        pendingAction={addWorkspaceRoomOrChatPendingAction}
-                                        isOffline={this.props.network.isOffline}
-                                        reportActions={this.props.reportActions}
-                                        report={this.props.report}
-                                        isComposerFullSize={this.props.isComposerFullSize}
-                                        onSubmitComment={this.onSubmitComment}
-                                    />
                                 </>
                             )}

                             {/* Note: The report should be allowed to mount even if the initial report actions are not loaded. If we prevent
rendering the report while they are loading then
                             we'll unnecessarily unmount the ReportActionsView which will clear the new marker lines initial state. */}
                             {(!this.isReportReadyForDisplay() || isLoadingInitialReportActions) && (
                                 <>
                                     <ReportActionsSkeletonView containerHeight={this.state.skeletonViewContainerHeight} />
-                                    <ReportFooter shouldDisableCompose isOffline={this.props.network.isOffline} />
                                 </>
                             )}
+                            {this.isReportReadyForDisplay() &&
+                                <ReportFooter
+                                    errors={addWorkspaceRoomOrChatErrors}
+                                    pendingAction={addWorkspaceRoomOrChatPendingAction}
+                                    isOffline={this.props.network.isOffline}
+                                    reportActions={this.props.reportActions}
+                                    report={this.props.report}
+                                    isComposerFullSize={this.props.isComposerFullSize}
+                                    onSubmitComment={this.onSubmitComment}
+                                />
+                            }
                             <PortalHost name={CONST.REPORT.DROP_HOST_NAME} />
                         </View>
                     </FullPageNotFoundView>

The Composer which is being mounted with ReportActionsSkeletonView is just a dummy composer and was implemented to be disabled for user interaction.
ref: https://github.com/Expensify/App/commit/6fe2785f674a5a6933663a88dc47c02a6d336ea9

https://github.com/Expensify/App/pull/13523
In this case have two ReportFooter one is with report actions and actual report state. the other one is just an empty ReportFooter that's non functional added to fix https://github.com/Expensify/App/pull/13523

To make the composer accessible while it's loading we can mount the functioning ReportFooter in general

Thanks for the update @getusha.
Looks like the composer was intentionally disabled by this PR. So, I have commented on the PR to know why was it disabled in the first place.
cc: @techievivek

Looking at the comment here I do agree that the code in ReportScreen is pretty hacky so if we are coming with a fix it has to be tested really well across all the platforms and under different scenarios.
Looking at the code changes, it makes sense to keep the ReportFooter component standalone once the report is ready to be displayed so users can take optimistic action irrespective of whether report actions are loaded or not.
To start with @getusha, can you please post some videos(web) with the fix for the below cases:

When the user is online

Opening an old chat and adding a few messages to it.

When the user is offline

Opening an old chat and adding a few messages to it.
Opening an already opened chat and adding a few messages to it.

I will also test the changes locally and will get back to you.

@techievivek

Opening an old chat and adding a few messages to it.

https://user-images.githubusercontent.com/75031127/215466196-2a026c92-484a-4199-925b-97e13b7a5d15.mov

Opening an old chat and adding a few messages to it. (Offline)

https://user-images.githubusercontent.com/75031127/215469637-66698ef7-b18b-40de-8693-55626054aa1f.mov

Opening an already opened chat and adding a few messages to it.

https://user-images.githubusercontent.com/75031127/215469967-c183af9f-7d7a-417c-9de2-8be916856c9a.mov

@getusha Can you confirm that emoji picker opens on clicking emoji button when you are offline and chat is loading? It doesn't open on my end.

@sobitneupane it doesn't open

@getusha Are you working on your proposal to solve the problem?
If anyone is working on this issue, following discussions might be helpful:
https://github.com/Expensify/App/pull/12505
https://expensify.slack.com/archives/C049HHMV9SM/p1673289703690979
https://expensify.slack.com/archives/C01GTK53T8Q/p1669259814248689

The EmojiPicker is not opening because it's being rendered inside ReportActionsView which will not be mounted before the loading finishes.
index d544d78a65..d99bd888c5 100644
--- a/src/pages/home/ReportScreen.js
+++ b/src/pages/home/ReportScreen.js
@@ -33,6 +33,8 @@ import withLocalize from '../../components/withLocalize';
 import reportPropTypes from '../reportPropTypes';
 import FullPageNotFoundView from '../../components/BlockingViews/FullPageNotFoundView';
 import ReportHeaderSkeletonView from '../../components/ReportHeaderSkeletonView';
+import * as EmojiPickerAction from '../../libs/actions/EmojiPickerAction';
+import EmojiPicker from "../../components/EmojiPicker/EmojiPicker";

 const propTypes = {
     /** Navigation route context info provided by react navigation */
@@ -299,15 +301,6 @@ class ReportScreen extends React.Component {
                                         isDrawerOpen={this.props.isDrawerOpen}
                                         parentViewHeight={this.state.skeletonViewContainerHeight}
                                     />
-                                    <ReportFooter
-                                        errors={addWorkspaceRoomOrChatErrors}
-                                        pendingAction={addWorkspaceRoomOrChatPendingAction}
-                                        isOffline={this.props.network.isOffline}
-                                        reportActions={this.props.reportActions}
-                                        report={this.props.report}
-                                        isComposerFullSize={this.props.isComposerFullSize}
-                                        onSubmitComment={this.onSubmitComment}
-                                    />
                                 </>
                             )}

@@ -316,9 +309,20 @@ class ReportScreen extends React.Component {
                             {(!this.isReportReadyForDisplay() || isLoadingInitialReportActions) && (
                                 <>
                                     <ReportActionsSkeletonView containerHeight={this.state.skeletonViewContainerHeight} />
-                                    <ReportFooter shouldDisableCompose isOffline={this.props.network.isOffline} />
+                                    <EmojiPicker ref={EmojiPickerAction.emojiPickerRef} />
                                 </>
                             )}
+                          {this.isReportReadyForDisplay() &&
+                                <ReportFooter
+                                    errors={addWorkspaceRoomOrChatErrors}
+                                    pendingAction={addWorkspaceRoomOrChatPendingAction}
+                                    isOffline={this.props.network.isOffline}
+                                    reportActions={this.props.reportActions}
+                                    report={this.props.report}
+                                    isComposerFullSize={this.props.isComposerFullSize}
+                                    onSubmitComment={this.onSubmitComment}
+                                />
+                            }
                             <PortalHost name={CONST.REPORT.DROP_HOST_NAME} />
                         </View>
                     </FullPageNotFoundView>

Result
https://user-images.githubusercontent.com/75031127/215673580-93f6bdb3-8de3-4ada-8dcc-593f916fee88.mov

@getusha
Tested the changes, and it looks good(I wonder if we are missing some edge cases, though?). Also, a quick question why do we render EmojiPicker under ReportActionsView because it seems to work well even when you have imported it into the ReportScreen page.

Also, a quick question why do we render EmojiPicker under ReportActionsView because it seems to work well even when you have imported it into the ReportScreen page.

@techievivek if i understand your question correctly we can remove the EmojiPicker from ReportActionsView and mount it under ReportFooter either way it works right? because as soon as the loading is completed the EmojiPicker from the loading unmounts and the new one mounts.

@getusha Yeah, I was trying to understand can we not move EmojiPicker from ReportActionsView and mount it alongside ReportFooter in the ReportScreen page
+  {this.isReportReadyForDisplay() &&
+                                <ReportFooter
+                                    errors={addWorkspaceRoomOrChatErrors}
+                                    pendingAction={addWorkspaceRoomOrChatPendingAction}
+                                    isOffline={this.props.network.isOffline}
+                                    reportActions={this.props.reportActions}
+                                    report={this.props.report}
+                                    isComposerFullSize={this.props.isComposerFullSize}
+                                    onSubmitComment={this.onSubmitComment}
+                                />
+                                <EmojiPicker ref={EmojiPickerAction.emojiPickerRef} />
+                            }

or maybe under ReportFooter page?

I was trying to understand can we not move EmojiPicker from ReportActionsView and mount it alongside ReportFooter in the ReportScreen page

Yes it makes sense to mount the EmojiPicker alongside ReactFooter and doesn't affect anything. do i need to update my proposal with the change?

@getusha It looks like with the proposed changes, https://github.com/Expensify/App/issues/11856 issue will resurface.

@sobitneupane can you attach a video?

@getusha I was able to reproduce it in staging as well. The Compose box is not present for fraction of seconds. So, I don't think it will be an issue.
Overall proposal looks good to me. But we must test it rigorously. Let's make sure we don't reintroduce following bugs:
https://github.com/Expensify/App/issues/11840
https://github.com/Expensify/App/issues/11856
@techievivek As suggested by @aimane-chnaif, I think we should wait for https://github.com/Expensify/App/pull/14456 to merge. Looking at the PR, some changes might be required in the proposal as well.

@sobitneupane With @getusha changes can you share a video where we are re-introducing the bug of Compose box not being present for fraction of seconds, if that's the case then we will need a better proposal.

As https://github.com/Expensify/App/issues/14223#issuecomment-1408505154 by @aimane-chnaif, I think we should wait for https://github.com/Expensify/App/pull/14456 to merge. Looking at the https://github.com/Expensify/App/pull/14456, some changes might be required in https://github.com/Expensify/App/issues/14223#issuecomment-1409781984 as well.

Sure.

@sobitneupane With @getusha changes can you share a video where we are re-introducing the bug of Compose box not being present for fraction of seconds, if that's the case then we will need a better proposal.

Sure @techievivek. It is not present for fraction of second only and is present in staging as well.
With the Proposed Changes:
https://user-images.githubusercontent.com/25876548/215979581-c4e8ea29-4d97-4c67-b5cd-85548be9520e.mov
On staging:
https://user-images.githubusercontent.com/25876548/215979615-78a5f9d8-2b62-45b5-bd32-cd05b7edf814.mov

Yeah, it seems like the blank screen is present in both cases.

Great, thanks for the updates @aimane-chnaif.
@JmillsExpensify Putting this on hold till we get https://github.com/Expensify/App/pull/14456 merged because we might require some changes from the PR in the proposal that @getusha has put.

That sounds good, thanks!

On hold, waiting for the https://github.com/Expensify/App/pull/14456 PR to get merged.

Still on hold, waiting for the https://github.com/Expensify/App/pull/14456 PR to get merged.

Still on hold for https://github.com/Expensify/App/pull/14456.

P.S. That linked issue/PR is pretty advanced. Hopefully we'll be able to close the loop pretty shortly here. Moving this issue to weekly in the meantime.

Melvin chill dude.

https://github.com/Expensify/App/pull/14456 is still open

Not overdue, the above PR is still open.

PR still open https://github.com/Expensify/App/pull/14456

Can't wait to get this one resolved! This continues to hit me constantly.

@getusha Thanks for the proposal.
As suggested by @techievivek, let's move EmojiPicker alongside ReportFooter. There might be multiple edge cases that can be easily missed. So, let's make sure to test it for as many cases as possible.
🎀👀🎀 C+ reviewed
cc: @techievivek

The proposal looks good to me, hiring @getusha for the job, thanks.

📣 @getusha You have been assigned to this job by @techievivek!
Please apply to this job in Upwork and leave a comment on the Github issue letting us know when we can expect a PR to be ready for review 🧑💻
Keep in mind: Code of Conduct | Contributing 📖

Current assignees @JmillsExpensify and @mallenexpensify are eligible for the External assigner, not assigning anyone new.

Current assignee @sobitneupane is eligible for the External assigner, not assigning anyone new.

Current assignee @techievivek is eligible for the External assigner, not assigning anyone new.

@getusha and @sobitneupane hired!   Can you please accept the job and reply here once you have?
https://www.upwork.com/jobs/~017ad5aadeda211cef

⚠ Looks like this issue was linked to a Deploy Blocker here
If you are the assigned CME please investigate whether the linked PR caused a regression and leave a comment with the results.
If a regression has occurred and you are the assigned CM follow the instructions here.
If this regression could have been avoided please consider also proposing a recommendation to the PR checklist so that we can avoid it in the future.

Reviewing label has been removed, please complete the "BugZero Checklist".

The solution for this issue has been :rocket: deployed to production :rocket: in version 1.2.94-3 and is now subject to a 7-day regression period :calendar:. Here is the list of pull requests that resolve this issue:

https://github.com/Expensify/App/pull/16705

If no regressions arise, payment will be issued on 2023-04-12. :confetti_ball:
After the hold period is over and BZ checklist items are completed, please complete any of the applicable payments for this issue, and check them off once done.

[ ] External issue reporter
[ ] Contributor that fixed the issue
[ ] Contributor+ that helped on the issue and/or PR

As a reminder, here are the bonuses/penalties that should be applied for any External issue:

Merged PR within 3 business days of assignment - 50% bonus
Merged PR more than 9 business days after assignment - 50% penalty

Hey, @mallenexpensify, it there anything else that needs to be done here, or are we good to close this one?

@techievivek @johnmlee101 , I see the below here

Possible Regression: https://github.com/Expensify/App/issues/16908

Do either of you have any further insight or details before I pay?
Also.. for payment, below is the bonus timeline.
Hired - March 29

Merged March 31

@mallenexpensify Yes, there was a regression from the original PR here https://github.com/Expensify/App/issues/16908 which was also fixed @getusha

Thanks @techievivek and @getusha. Per CONTRIBUTING.md.

If the PR causes a regression within 7 days of being deployed to production, contributors are not eligible for the 50% bonus.

So... if the regression was before production, that shouldn't affect the bonus for @getusha .
@sobitneupane , this is from the C+ process doc

If regressions are found that “should have”* been caught after the PR has been approved, the C+’s payment gets cut in half for each regression found (½ the first time, ½  the second, etc (ie. $1000 > $500 > $250)). This includes regressions on staging and production. Idea discussion slack here. Any bonus increases that might have been added for timeliness are rescinded for regressions.
*“Should have” = C+ should have caught the bug by fully following the checklist.  If C+ skips a step or completed the checklist incompletely, payment will be cut in half.

If you don't think you "should have" caught the regression, can you provide reasoning?

If you don't think you "should have" caught the regression, can you provide reasoning?

I think I should have caught it earlier though it is a edge case.

Not overdue, we are just finalizing the payment here.

@aimane-chnaif , checking on here https://expensify.slack.com/archives/C02NK2DQWUX/p1681749639671849

So... if the regression was before production, that shouldn't affect the bonus for @getusha .

Does that mean that if regression found on main or staging, bonus still applies to contributor?

Thanks for the ping @getusha , we're in the process of updating the language for CONTRIBUTING.md to denote that any regression cancels the bonus because there's no benefit for timeliness if there are regressions that require additional resources to address.

If the PR causes a regression within 7 days of being deployed to production, contributors are not eligible for the 50% bonus.

within 7 days of being deployed to production is the part we still need to honor here and the regression was not within that time period, it was before, so the bonus stands for now.
@sobitneupane paid $2000 and @getusha paid $6000.  Anticipate CONTRIBUTING.md being updated very soon with the new language stating that timeliness bonuses won't be eligible if there are regressions.

For some reason this didn't get posted, @sobitneupane , can you complete the below then I'll create a GH to update TestRail?
BugZero Checklist: The PR fixing this issue has been merged! The following checklist (instructions) will need to be completed before the issue can be closed:

[ ] [@sobitneupane] The PR that introduced the bug has been identified. Link to the PR:
[ ] [@sobitneupane] The offending PR has been commented on, pointing out the bug it caused and why, so the author and reviewers can learn from the mistake. Link to comment:
[ ] [@sobitneupane] A discussion in #expensify-bugs has been started about whether any other steps should be taken (e.g. updating the PR review checklist) in order to catch this type of bug sooner. Link to discussion:
[ ] [@mallenexpensify] Determine if we should create a regression test for this bug.
[x] [@sobitneupane] If we decide to create a regression test for the bug, please propose the regression test steps to ensure the same bug will not reach production again.
[ ] [@mallenexpensify] Link the GH issue for creating/updating the regression test once above steps have been agreed upon:

BugZero Checklist: The PR fixing this issue has been merged! The following checklist (instructions) will need to be completed before the issue can be closed:

[x]  [@sobitneupane] The PR that introduced the bug has been identified. Link to the PR:

https://github.com/Expensify/App/pull/12505

[x]  [@sobitneupane] The offending PR has been commented on, pointing out the bug it caused and why, so the author and reviewers can learn from the mistake. Link to comment:

https://github.com/Expensify/App/pull/12505/files#r1088840195

[x]  [@sobitneupane] A discussion in #expensify-bugs has been started about whether any other steps should be taken (e.g. updating the PR review checklist) in order to catch this type of bug sooner. Link to discussion:

It is an improvement in the app rather than bug fix as discussed earlier in https://github.com/Expensify/App/pull/12505/files#r1088840195

Regression Test Proposal

Open Expensify app
Disconnect the device from the internet
Open any old chat or a chat that is still loading
Type a message in the compose box.
Open EmojiPicker and insert an emoji
Send the message by clicking the send icon
Add any attachment and send the attachment
Confirm Sending, splitting, requesting money works as expected
Verify that the compose box is accessible and functioning properly(i.e, you are able to perform step 3, step 4, step 5, step 6, and step 7) as it would when the device is connected to the internet

Do we agree 👍 or 👎

Thank you so much for getting this one out and in production! It's really great. ❤

Thanks @sobitneupane (and @getusha for the 👍)
GH created to update TestRail with regression test steps
https://github.com/Expensify/Expensify/issues/277753


doc: Update documentation -> supported opcodes document and main readme and pie chart

Feature Request
Abdel:

Reminder please update the supported opcodes document and main readme and pie chart

I'll take it


Some png images cause watchapp to crash

Branch: features/use-upng
"http://phpqrcode.sourceforge.net/img/qrcode.png" - this image caused the watchapp to crash
"http://www.mypebblefaces.com/files/2113/6635/6148/FakeQR-144.png" - this image displayed fine on the watchapp (however, it could not be scanned, likely due to no border on bottom side)

The bug is still not fixed, i don't believe.

The image you are trying to load is a 32 bit true color png. Please see the "Preparing images" section in the README to prepare a black and white image.
Pebble 3.0 has much better png loading and error reporting. This will come to the original Pebble in the next few months.


Cannot start session due to session_manager_plugin_mux.sock: bind: invalid argument

I am using a macbook m2 pro, with macOS Ventura 13.5.1, and I cannot start an ssm session due to the following error message:
Cannot perform start session: listen unix /var/folders/kk/lmpb4jhx123g5sc2thksnv440000gn/T/com.apple.shortcuts.mac-helper/23234950_session_manager_plugin_mux.sock: bind: invalid argument
I have tried to reinstall the plugin, both from the dedicated installer and from brew with no luck. Any help in resolving this would be appreciated.
This only happens when I use --document-name AWS-StartPortForwardingSession or --document-name AWS-StartPortForwardingSessionToRemoteHost, when omitting the --document-name argument I can connect as expected

I'm having same issue? Did you manage to fix it?

HI @karlc1 , @fcappi ,
Did you configure localPortNumber when starting a session, and did your client machine have that port open? Both AWS-StartPortForwardingSession and AWS-StartPortForwardingSessionToRemoteHost documents are for the use case of forwarding data between applications or servers that run on the specified ports. If you use these port-forwarding documents without the port configured, by default it runs on local port 0, and if you do not have any application running on port 0 the mux connection fails.
If you are looking to gain interactive shell access, that is the default session type where you do not need to configure any ports.
You can refer to the difference among different session types and how to use them starting from this documentation https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-sessions-start.html.
I'm going to close this case as it sounds like inquiries about different session types. But if you have different inquiries, please feel free to reopen.

I'm running into the same issue. running SSM as root seems to fix it (which is not great).

It seems like mac permissions. I added full disk access to session-manager and it worked without sudo https://support.apple.com/en-gb/guide/security/secddd1d86a6/web


Download Helm always runs

The download helm run every single build for all task.  This means that the build is completely broken on any machine without internet access.  In addition the helm file is not cached adding significant slowness to all tasks.

The download and install tasks should only run for a clean build. There is no local caching other than in the build directory. You are certainly correct that this makes builds impossible on machines that are off-line. I suppose a simple way to address this would be to make the URL from which the helm distribution is downloaded configurable, so that it could be set to a URL that is accessible (either a local HTTP server, or a local file URL). I would certainly accept a pull request adding a feature like this.
I'm not sure if this work-around is possible in your situation, but it is possible to disabling the download and install tasks, and point the plugin to a local helm executable. Something like the following should do the trick:
helm {
  install {
    executable file('/tools/helm/linux-amd64/helm')
  }
}
downloadHelm.enabled = false
installHelm.enabled = false

Yes that is helpful information about disabling the download and install tasks.


Multiprocessing not customizable - Add custom number of CPU

Hi,
When running your algo on my machine I noticed that it uses all my cores and I can't change it with a parameter like for scikit-learn (n_jobs).
I recommend you to add this feature, to not overuse the computing power...
I found the code where one may change it, I can contribute if more people agree on this:
It is the: parallelise function, which sets a processes=cpu_count() instead of taking, for example, n_jobs as an argument...
imagededup/utils/general_utils.py#L60

This should really be implemented. I wish I knew how.
Use case: using this in production, as it is, makes it difficult without any limit on CPU as it would suck the compute needed for other areas of the web server, etc.

@DankMemeGuy The implementation is underway in branch feature/customize_parallelization. Will look to release this change in January.

Addressed in #185 . Available in v0.3.1.


B15.0 Bi-Annual Cost Model Review

💡 Description
Update cost model based upon actuals.
⚔ Parent Epic / Related Tickets
No response

📆 October status: delayed several sprints due to other efforts. Operations task. No impact on delivery.

(1) Reviewed top 2 resource expenditures (OpenSearch & EC2 instances) and made resource adjustments to optimize costs in dev env
(2) Nucleus cost model

(a) Review SMD Cost Template and in the process of updating the numbers
(b) Reviewing components within Nucleus and updating associated costs for accuracy.

(3) Resource tagging

Looking into incorporating tagging to help cost tracking and reporting.

Review complete.


processors as exported resources

I'd like to be able to add processors as exported resources, like you can with inputs. This would me to define filebeat in a base profile, and then add configuration from roles. For example:
To add inputs I can do this:
    filebeat::input { 'rails-api-logs':
        paths    => [
            '/blah/production.json.log'
        ],
        doc_type => 'syslog-beat',
        fields => {
            type => 'rails',
            app => 'api'
        }
    }

Is it possible to do the same with processors? The obvious doesn't work:
    filebeat::processors { 'rails-api-processors':
        params => {
            "add_host_metadata" => "~",
            "add_cloud_metadata" => "~",
            "add_docker_metadata" => "~",
            "add_kubernetes_metadata" => "~",
            "decode_json_fields" => {
                "fields" => ["message"],
                "target" =>"\"\"",
                "overwrite_keys" => "true"
            },
            "rename" => {
                "fields" => [{"from" => "host", "to" => "server" }]
            }
        }
    }

We don't have a defined resource for a processor yet, but I like the idea. I'll add it to the todo list, though if someone has time and wants to submit a PR before I get to it that's fine too.


Update Documentation for Tokenizer

The documentation needs to be updated for the new Tokenizer feature.

I have decided to use Sphinx for Documentation. It comes with nice themes, is easy to use and can be published to GitHub pages easily. A new gh-pages branch has been created, which holds the documentation in the Documentation subdirectory.
The projects documentation can be found at:

https://bytefish.github.io/TinyCsvParser

I am currently in the process of migrating the GitHub Wiki pages over to a reStructered Text syntax.

The Documentation can now be found at: http://bytefish.github.io/TinyCsvParser/.


Wrong help messages and links in providers details page.

Refs:
docs: https://access.redhat.com/documentation/en-us/migration_toolkit_for_virtualization/2.4/html/installing_and_using_the_migration_toolkit_for_virtualization/index
In
Providers details page.
Issue:
details item help should include:
a. title
b. help blurb
c. link for documentation
for example in the url field for OpenShift provider the blurb say:
"The provider URL. Empty may be used for the host provider."
the text should be discussed with Richard from the doc team, but it can say something like:
"The provider REST API endpoint. For OpenShift providers this field can be left empty ..."
the the link is:
https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces
it should link to forklift documentation, maybe, Richard may have better link:
https://access.redhat.com/documentation/en-us/migration_toolkit_for_virtualization/2.4/html-single/installing_and_using_the_migration_toolkit_for_virtualization/index#installing-the-operator
Screenshot:

doc team contact: @RichardHoch

Example of help texts we can take from current docs:
Fix for Openshift URL help text: Doc for Openshift URL
"Kubernetes API server URL: Specify the Red Hat OpenShift cluster API endpoint."
Fix for RHV URL help text: Doc for RHV URL
"RHV Manager host name or IP address: Manager host name or IP address - if a certificate for FQDN is specified, the value of this field needs to match the FQDN in the certificate"

#657 merged upstream


Media type ignored in open api response

Versions:

NSwag.AspNetCore: 13.15.10
.NET Version: 6

I'm trying to include a bad request (400) response schemas in the open api document for the web api I'm building in .NET 6. The problem is, the media type always defaults to application/octet-stream even though I explicitly set it to application/json.
My controller is decorated with the following attribute:
[ProducesResponseType((int)HttpStatusCode.OK)]
[ProducesResponseType(typeof(BadRequestResult), (int)HttpStatusCode.BadRequest, "application/json")]

But, the media type for the response 400 is incorrect in the generated open api document:
"200": {
  "description": "",
  "content": {
    "application/json": {
      "schema": {
        "$ref": "#/components/schemas/Foo"
      }
    }
  }
},
"400": {
  "description": "",
  "content": {
    "application/octet-stream": {
      "schema": {
        "type": "string",
        "format": "binary"
      }
    }
  }
}

Am I missing something or is this a bug?

So this is no bug, I was using ObjectResult as the response type instead of ProblemDetails. Apparently this class could not be serialized or something and that produced the a different response media type.
So no bug!


updated title of the page

Isuue reference: #30

Hey @ravikr126  apologies for bringing this late...but the level tag is inaccurate so it's points are not showing on leader board...It should be Level0.
Thanks!

Please check again I think now it's update.if not please contact ke on discord


Create repeatable automatic setup with ansible+traefik+docker

Follow the instructions in the README.

Could you provide some insight in how this works (i.e. not how to set up a new instance, but what’s happening behind the scenes)? As I’ve never used Docker in production, I can’t really review this PR, but instead I’ve got some newbie questions…

What is the host OS at Netcup?

Does Netcup provide automated backups/snapshots?

How does this affect local development setups?

The goal is: Not at all. I would update the README.md to explain how to create your personal .env file from a .env.template.

Which of the docker-compose.yml files is suitable for which use cases?

docker-compose config reads in docker-compose.yml and docker-compose.override.yml by default (for development)
docker-compose -f docker-compose.yml -f docker-compose.prod.yml is used to build and publish docker images (on CI/CD)
docker-compose -f docker-compose.yml -f docker-compose.prod.yml -f docker-compose.traefik.yml is used in production and automagically refreshes TLS certificates among other things

What about default system hardening?

I followed this tutorial and this also disables PAM. Furthermore, every incoming traffic except SSH, HTTP and HTTPs is denied. We would have to whitelist everything else.

How would you add new users to the host system?

Currently not implemented. But I thought about collecting our public keys (jakob's, yours, mine) and putting them into location where they can be uploaded. I don't know what's the best workflow here.

Where does traefik store TLS certificate files?

In a shared volume /home/ansible/traefik/:/traefik/ and there it's called acme.json. You can have a look with e.g. cat .traefik/acme.json after login with your ansible user.

What happens if deployment happens (and the DB container is rebuilt) while Postgres is running a transaction?

This configuration is installation only and does not do automatic deployments, yet. Restarting containers does wait for transactions to finish, as far as I know.

What happens when one of the containers terminates for some reason?

Traefik offers a /ping route for health checks. I didn't look into this, but I think you can configure it to call e.g. the application on a route that hits the database, for example. I guess there is also a configuration to automatically restart containers.

I might be incorrect, but I think Rails logs are only saved inside of the app container, i.e. they will get deleted with the container (e.g. on deployments).

I used docker logs <CONTAINER_ID>. They are available when the container has stopped.

Apart from that, it would be nice to mention how to deploy new releases to production. I guess it should be enough to run the deployment role? Maybe add a separate playbook for that, too?

I didn't get there yet. But deployment would roughly look like this:

New docker images get build and published by CI
CI runs ansible which:

bumps image version tag in docker-compose.yml
pulls new images
restarts containers
runs database migrations

But does it support creating those automatically, e.g. create a snapshot every day and keep them for seven days? If not, how/where would we backup app data, certificates, …

I followed this tutorial and this also disables PAM. Furthermore, every incoming traffic except SSH, HTTP and HTTPs is denied. We would have to whitelist everything else.

That tutorial unfortunately does not explain why disabling PAM is necessary…?

I used docker logs <CONTAINER_ID>. They are available when the container has stopped.

Additionally, maybe we should mount the log path as a volume? Otherwise, log not printed to stdout/stderr might get lost. Also, deploying a new release means the old container is deleted and a new one is created, i.e. logs are lost.

@roschaefer You might want to have a look at https://github.com/dev-sec/ansible-os-hardening

@tillprochaska you could run ansible-playbook site.yml -i inventories/100eyes --ask-vault-pass in the ansible directory which would run the installation on the Schweine-System.

@tillprochaska you could run ansible-playbook site.yml -i inventories/100eyes --ask-vault-pass in the ansible directory which would run the installation on the Schweine-System.

What to do in order to setup a new server or to deploy a new version of the app is pretty clear from the documentation you wrote, I was talking about reviewing the underlying implementation (i.e. the host server setup, Traefik config etc).


vee-validate on table row edit button

I am clicking on edit row button in a table and for each row I have edit button at last column but on clicking edit button vee-validate is validating all table rows instead of particular row. looks like  each Edit button is taking entire table as a single form . I am using unique :name  attribute  for each cell  eg-<span v-if(errors.has("uniquename"))>*<button  @click="EditMethod">Edit .
is there any way to bind each Edit button vee-validator  with particular row ?

Are you wrapping the table in a form tag? An example would help greatly.


save status indicator

I suggest that having some indication of whether or not the worksheet needs saving would be quite useful.

[Sorry for the slow reply - been on holiday!]
Yes, this would be good. It would also be nice, perhaps, if there were to be some sort of prompt if you were to load a new worksheet when the old one has unsaved changes. We could also consider warning when navigating away from the page with unsaved changes, although my experience with those alerts puts them pretty close to my "too annoying" line!


Unable to round numbers up/down

There doesnt seem to be a way to round numbers up or down. For example, this formula, when 1 tasks is submitted produces a number of target nodes of 0.5. Which seems to be internally rounded down to 0, and therefore the pool never scales. How can I scale it up to the nearest int?
startingNumberOfVMs = 1; maxNumberofVMs = 10; activeTaskSamplePercent = $ActiveTasks.GetSamplePercent(180 * TimeInterval_Second); activeTaskMax = activeTaskSamplePercent < 70 ? startingNumberOfVMs : max($ActiveTasks.GetSample(180 *   TimeInterval_Second)); $TargetDedicatedNodes = min(maxNumberofVMs, activeTaskMax / $TaskSlotsPerNode); $NodeDeallocationOption = taskcompletion;

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

ID: 6d888d2f-3a20-bb80-c600-074089e1d0f9
Version Independent ID: 2d365860-2876-50fe-e075-e89b92520833
Content: Automatically scale compute nodes in an Azure Batch pool - Azure Batch
Content Source: articles/batch/batch-automatic-scaling.md
Service: batch
GitHub Login: @prkannap
Microsoft Alias: prkannap

@hopoffbaby Thanks for reaching out. We will review this and update the thread with further information. Thanks.

This issue has been resolved already. There were added support for ceil(), floor(), and round() in autoscale back in Nov 2022 and the same has been captured in the documentation batch-automatic-scaling.md.
Closing this issue as its addressed.
#please-close


feat: add eager, lazy, and delayed phases to templates.

This PR introduces the ability to load different parts of a template in the eager, lazy, or delayed phase. The motivation for this is to improve page load speeds.
For example, consider the category template. Part of that template's responsibility is to query for all articles that are in the current category. Depending on the size of the query-index, this might take a lot of time to execute. Rather than blocking the page from loading while the query runs, the template could do something like:

Load skeleton article cards during the eager phase so the template gets its layout in place.
During lazy, execute the query to retrieve the category's articles, then replace the skeleton cards with final content.
For even heavier operations (that might be out of the viewport), templates could do that processing during the delayed phase.

The functionality works based on the names of the method(s) that the template exports:

loadEager() will be called during the eager phase.
loadLazy() will be called during lazy.
loadDelayed() during delayed.

Test URLs:
Test URLs:

Before: https://main--channelco-crn-com--hlxsites.hlx.page/
After: https://template-phases-final--channelco-crn-com--hlxsites.hlx.page/
After: https://template-phases-final--channelco-crn-com--hlxsites.hlx.page/news/computing/
After: https://template-phases-final--channelco-crn-com--hlxsites.hlx.page/authors/dylan-martin
After: https://template-phases-final--channelco-crn-com--hlxsites.hlx.page/search?query=oracle
After: https://template-phases-final--channelco-crn-com--hlxsites.hlx.page/news/managed-services/painful-decision-slalom-consulting-layoffs-hit-900-workers

FYI, this PR doesn't change anything functionally, it just introduces the concept.


Add cross-version tests for different Gradle versions

We should test the plugin against a range of Gradle versions.
The plugin is built using the latest Gradle version. But it works with a wider range of Gradle versions.
It would be great to identify those and test against those. This will prevent future changes from introducing changes that may break the plugin for a specific Gradle version.

Added multi gradle version support under #15


Fix: Could not map to optional RawRepresentable enum for ImmutableMappable

Related #1043, #1057.
This PR fixed #1057(it fixed for BaseMappable) missing part of RawRepresentable.
Test code is based on my #1058, it will be dismissed if this merge.

I think this will fix the issue I pointed out in #1043.
Looking forward for a release with this.

I'd very much like this released asap.
Thank you.

@tristanhimmelman I also need this PR released.
Thank you.

@tristanhimmelman please merge this. The library is unusable on Swift 5 without this fix.
This is preventing me from updating to Swift 5.

@tristanhimmelman, hi. Sorry to bother again, but I've been asking for this fix for the past 2 weeks.
Again, this is keeping me from updating my app.

@felipe-azevedo my apologies for the slow review


Allow bootstrapping with "borland" (Embarcadero)

Pass down user's toolset override to the b2-building script. This was (most likely erroneously) removed in 26232c8d4 along with the output redirection.
If user provided toolset of "borland" for bootstrapping, prepare project-config.jam for the modern embarcadero toolset.

Can you open this pull request against the develop branch instead, please?

Replaced with #494.


Typescript client unable to negotiate due to unnecessary (?) JSON.parse

Versions of Server-Side NuGet Packages: 1.0.1
Versions of Client-Side NuGet/NPM Packages: @aspnet-signalr 1.0.0
Are you using the C# client or the JavaScript client: TypeScript client
The Server you are using (Kestrel/HttpSysServer/IIS/IIS Express/Azure Web App/etc.):  Azure Web App
The Operating System on the Server (Windows/Linux/macOS): -
The Operating System on the Client (Windows/Linux/macOS): Android (NativeScript)
The Browser on the client, if using the JavaScript client (IE/Chrome/Edge/Firefox/etc.): -

JS: Debug: Starting HubConnection.
JS: Debug: Starting connection with transfer format 'Text'.
JS: Debug: Sending negotiation request: http://theapp.azurewebsites.net/gameHub/negotiate
JS: Error: Failed to complete negotiation with the server: SyntaxError: Unexpected token o in JSON at position 1
JS: Error: Failed to start the connection: SyntaxError: Unexpected token o in JSON at position 1

Using fiddler, I was able to see that the response from the server was correct.
This row in HttpConnection.ts was trying to parse the string [Object object]:
return JSON.parse(response.content as string) as INegotiateResponse;

Changing this row to:
return response.content as INegotiateResponse;

Solved everything for me:
JS: Debug: Skipping transport 'WebSockets' because it is not supported in your environment.'
JS: Debug: Skipping transport 'ServerSentEvents' because it is not supported in your environment.'
JS: Debug: Selecting transport 'LongPolling'
JS: Debug: Sending handshake request.
JS: Debug: Server handshake complete.
JS: Information: Using HubProtocol 'json'.
JS: Hub connection started

So the question is, is this JSON parse necessary? Should I create a pull request with this change?

The JSON.parse is definitely necessary in browser environments. The response.content value comes from XMLHttpRequest.response and the type of it depends upon the value of XMLHttpRequest.responseType, which we leave set to the default value "" which means it will be text.
Since you're running on NativeScript, it sounds like maybe NativeScript has different behavior from the browser here. Looking at it's XHR implementation it seems it tries to automatically detect the Content Type, which is not what browsers do. I'm surprised the NativeScript would be doing something different from the browser when trying to polyfill it since this may cause compatibility issues with other libraries as well.
Currently, the SignalR JavaScript client only officially supports browser environments. We can look at improving our support for other platforms like NativeScript in the future.

Also, we'd definitely consider a PR fixing this to work in NativeScript, as long as it doesn't break browser scenarios. In this case, the logic will have to be updated everywhere HttpClient is used.

Since this is caused by NativeScript incorrectly implementing XHR, I don't think there's something we want to do here. We'd still consider a PR to make this better if it can be done that doesn't break the browser scenario.


Geocoding Resources Updated

Some of the resources for the offline geocoder are not synced with the files that the google libphonenumber repo has. Is it possible to update these files?
Thanks.

Of course, which files are not synched?


ValueError: File object has no read() method, or readable() returned False.

Don't mind the prompt lol. But this occurs both using the demo.py and the gradio_demo.py with the same error. I am able to generate audio using prompts, but not from a video.
Edit: I have also tried running the sample clips and they do not work either.
ERROR USING DEMO.PY
(mmaudio) PS G:\AI-faster\MMAudio\MMAudio> python demo.py --duration=6 --video=G:\AI-faster\MMAudio\MMAudio\Bitcoin.mp4 --prompt "A man standing on the sidewalk yelling Bitcoin"
INFO     | Loaded weights from weights\mmaudio_large_44k_v2.pth
INFO     | Loaded hf-hub:apple/DFN5B-CLIP-ViT-H-14-384 model config.
INFO     | Loading pretrained hf-hub:apple/DFN5B-CLIP-ViT-H-14-384 weights (C:\Users\jason.cache\huggingface\hub\models--apple--DFN5B-CLIP-ViT-H-14-384\snapshots\f17177bb05c69c6336d0adbfc97e06d69f876904\open_clip_pytorch_model.bin).
INFO     | Loading MotionFormer config from G:\AI-faster\MMAudio\MMAudio\mmaudio\ext\synchformer\divided_224_16x4.yaml
Loading weights from nvidia/bigvgan_v2_44khz_128band_512x
Removing weight norm...
INFO     | Using video G:\AI-faster\MMAudio\MMAudio\Bitcoin.mp4
Traceback (most recent call last):
File "G:\AI-faster\MMAudio\MMAudio\demo.py", line 135, in
main()
File "E:\Python Install\lib\site-packages\torch\utils_contextlib.py", line 116, in decorate_context
return func(*args, **kwargs)
File "G:\AI-faster\MMAudio\MMAudio\demo.py", line 90, in main
video_info = load_video(video_path, duration)
File "G:\AI-faster\MMAudio\MMAudio\mmaudio\eval_utils.py", line 177, in load_video
output_frames, all_frames, orig_fps = read_frames(video_path,
File "G:\AI-faster\MMAudio\MMAudio\mmaudio\data\av_utils.py", line 37, in read_frames
with av.open(video_path) as container:
File "av\container\core.pyx", line 401, in av.container.core.open
File "av\container\core.pyx", line 246, in av.container.core.Container.cinit
File "av\container\pyio.pyx", line 44, in av.container.pyio.PyIOFile.cinit
ValueError: File object has no read() method, or readable() returned False.
ERROR USING GRADIO_DEMO.PY
Traceback (most recent call last):
File "E:\Python Install\lib\site-packages\gradio\routes.py", line 534, in predict
output = await route_utils.call_process_api(
File "E:\Python Install\lib\site-packages\gradio\route_utils.py", line 226, in call_process_api
output = await app.get_blocks().process_api(
File "E:\Python Install\lib\site-packages\gradio\blocks.py", line 1550, in process_api
result = await self.call_function(
File "E:\Python Install\lib\site-packages\gradio\blocks.py", line 1185, in call_function
prediction = await anyio.to_thread.run_sync(
File "E:\Python Install\lib\site-packages\anyio\to_thread.py", line 33, in run_sync
return await get_asynclib().run_sync_in_worker_thread(
File "E:\Python Install\lib\site-packages\anyio_backends_asyncio.py", line 877, in run_sync_in_worker_thread
return await future
File "E:\Python Install\lib\site-packages\anyio_backends_asyncio.py", line 807, in run
result = context.run(func, *args)
File "E:\Python Install\lib\site-packages\gradio\utils.py", line 661, in wrapper
response = f(*args, **kwargs)
File "E:\Python Install\lib\site-packages\torch\utils_contextlib.py", line 116, in decorate_context
return func(*args, **kwargs)
File "G:\AI-faster\MMAudio\MMAudio\gradio_demo.py", line 82, in video_to_audio
make_video(video_info, video_save_path, audio, sampling_rate=seq_cfg.sampling_rate)
File "G:\AI-faster\MMAudio\MMAudio\mmaudio\eval_utils.py", line 217, in make_video
reencode_with_audio(video_info, output_path, audio, sampling_rate)
File "G:\AI-faster\MMAudio\MMAudio\mmaudio\data\av_utils.py", line 69, in reencode_with_audio
container = av.open(output_path, 'w')
File "av\container\core.pyx", line 411, in av.container.core.open
File "av\container\core.pyx", line 246, in av.container.core.Container.cinit
File "av\container\pyio.pyx", line 41, in av.container.pyio.PyIOFile.cinit
ValueError: File object has no write() method, or writable() returned False.

Thanks for the report. What is your av version? python -c "import av; print(av.__version__)"

Most likely fixed a newer version of av by https://github.com/PyAV-Org/PyAV/issues/1181 -- let me put a min version requirement for av. Let me know if updating av works for you! pip install av --upgrade

av version was av-10.0.0
updating fixed it.
Thanks!


has Chinese characters

fix Naming with Chinese

Please elaborate on what this is. Also read https://msdn.microsoft.com/en-us/library/aa365247.aspx for context.

I'm sorry my English is not good, but I try to explain the problem.
I use slash to transform my file path
when the file name has chinese characters,slash no work.
when the Naming with Chinese ，use slash has a bug
code
import { writeFileSync } from 'fs';
import { join } from 'path';
import slash from 'slash';
const dvaContainerPath = join(process.cwd(), 'path.js');
const content = slash(process.cwd());
writeFileSync(dvaContainerPath, JSON.stringify(content), 'utf-8');

you can see the product:中文字符 and EnglishCharacters
Chinese Characters
"e:\\0601\\slash-with-Chinese\\lib\\中文字符\\node"

EnglishCharacters
"e:/0601/slash-with-Chinese/lib/englishCharacters/node"

I new a Demo,you can run it.

any update about this PR?

Please link to some documentation that proves that your changes are correct. If you don't know any, I would suggest opening an issue instead.

https://github.com/sorrycc/slash2
It works well in umi 、 ant-design-pro and kiwi


use example.com for all url examples

i saw in some places in the docs we are using mydomain.com instead of the standard example.com that should be used.
https://github.com/influxdata/docs-v2/blob/68f7ce83dc5390444d2ac0d0bb57655f05f97609/content/v2.0/reference/flux/stdlib/experimental/csv/from.md
https://github.com/influxdata/docs-v2/blob/b494fc7acdd92285597b10d0adbfae07dcd98b38/content/v2.0/influxdb-templates/use.md

Thanks, @russorat!


[Bug]: TypeError: ColbertIndex._build_index_from_nodes() got an unexpected keyword argument 'index_name'

Bug Description
Trying to create ColbertIndex, via:

colBertIndex = ColbertIndex(nodes=nodes) and
ColbertIndex.from_documents(documents=docs)

Both getting error:
ColbertIndex._build_index_from_nodes() got an unexpected keyword argument 'index_name'

checked BaseIndex at llama-index-core/llama_index/core/indices/base.py
Neither init function nor build_index_from_nodes take index_name as a parameter from all history.
Version
0.10.30
Steps to Reproduce

using the following package (was 0.10.30 for core, update to latest one which is 0.10.50 by the time I create this):

llama-index
llama-index-embeddings-azure-openai
llama-index-llms-azure-openai
llama-index-embeddings-huggingface
llama-index-embeddings-instructor
llama-index-readers-file
llama-index-indices-managed-colbert
colbert-ir

extra installation via conda pytorch channle:
pytorch-cpu=1.13

run the following code

import pandas as pd
df = pd.read_csv(pathlib.Path("./data/products.csv"), sep=",").drop_duplicates()
rows = df.to_dict("records")
nodes = []
for row in rows:
        doc = Document(
            text=row["DISPLAYNAME"],
            metadata={"ITEM_NUMBER": row["ITEM_NUMBER"],"DESCRIPTION":row["DESCRIPTION"]}
        )
        nodes.append(doc)
colBertIndex = ColbertIndex.from_documents(documents=nodes)

Relevant Logs/Tracbacks
File "/mnt/c/Users/user_name/projects/GenAI/env_name/retriever.py", line 110, in <module>
    load_products()
  File "/mnt/c/Users/user_name/projects/GenAI/env_name/retriever.py", line 54, in load_products
    colBertIndex = ColbertIndex.from_documents(documents=nodes)
  File "/home/user_name/miniconda3/envs/env_name/lib/python3.10/site-packages/llama_index/core/indices/base.py", line 145, in from_documents
    return cls(
  File "/home/user_name/miniconda3/envs/env_name/lib/python3.10/site-packages/llama_index/indices/managed/colbert/base.py", line 82, in __init__
    super().__init__(
  File "/home/user_name/miniconda3/envs/env_name/lib/python3.10/site-packages/llama_index/core/indices/base.py", line 94, in __init__
    index_struct = self.build_index_from_nodes(
  File "/home/user_name/miniconda3/envs/env_name/lib/python3.10/site-packages/llama_index/core/indices/base.py", line 216, in build_index_from_nodes
    return self._build_index_from_nodes(nodes, **build_kwargs)
TypeError: ColbertIndex._build_index_from_nodes() got an unexpected keyword argument 'index_name'

@gavinHuang Hello there! I'm here to assist you with any bugs, questions, or contributions. Let's work together to solve this issue.
The TypeError you're encountering is due to the index_name parameter being passed to the _build_index_from_nodes method, which does not accept it as an argument. This issue arises because the ColbertIndex class constructor includes index_name as a parameter, but the _build_index_from_nodes method does not.
To resolve this issue, you need to ensure that the index_name parameter is not passed to the _build_index_from_nodes method. Here is a modified version of your code that should work:
import pandas as pd
from llama_index.core.schema import BaseNode
from llama_index.indices.managed.colbert import ColbertIndex

# Load data
df = pd.read_csv("./data/products.csv", sep=",").drop_duplicates()
rows = df.to_dict("records")

# Convert rows to BaseNode objects
nodes = []
for row in rows:
    node = BaseNode(
        node_id=row["ITEM_NUMBER"],
        content=row["DISPLAYNAME"],
        metadata={"DESCRIPTION": row["DESCRIPTION"]}
    )
    nodes.append(node)

# Create ColbertIndex using nodes
colBertIndex = ColbertIndex(nodes=nodes)

Ensure that you have the necessary dependencies installed, including the colbert-ir library. If you need to convert documents to BaseNode objects, you can use the following approach:
from llama_index.core.schema import BaseNode

# Assuming `docs` is a list of document contents
docs = ["Document content 1", "Document content 2"]

# Convert documents to BaseNode objects
nodes = [BaseNode(node_id=str(i), content=doc) for i, doc in enumerate(docs)]

# Create ColbertIndex using nodes
colBertIndex = ColbertIndex(nodes=nodes)

This should help you avoid the TypeError by ensuring that the index_name parameter is not incorrectly passed to the _build_index_from_nodes method [1][2].
To continue talking to Dosu, mention @dosu.

Understanding it's a bot generated post, but it didn't get the point.
No one is passing the index_name parameter, but the colbertindex class itself, via pr: https://github.com/run-llama/llama_index/pull/9656/, by commits: https://github.com/run-llama/llama_index/pull/9656/commits/af2910e00f915bfee2abecaf736f5c4a27cd12f6


Grunt open does not work

A common website dev task is to run up a server or set of flat files, then open the website or file in your system default browser. In this case I'm using https://www.npmjs.com/package/grunt-open with a simple test case (attached).
grunt-open-test-case.zip
Expected results:
index.html should open in system default browser.
Actual results in WSL:
Task runs without errors or effect. Nothing happens, basically.
Comparison results - tested on OSX and on Win 10 in "node.js command prompt" version of cmd that is set up with node:
Task runs, file opens in system default browser.
Your Windows build number
Win 10 Pro / 1607 / 14393.51
Steps / commands required to reproduce the error

extract test case; then from root of test case...
npm install -g grunt-cli
npm install
grunt

(Edit - probably an instance of needing to spawn a windows process I guess; but raised in case it's something else and it's a test case at least :))

Do you have X setup (Xming for example) and a browser installed?

@sundhaug92 X - not as far as I know. I'm not talking about opening a browser within WSL by the way, I mean the Win10 default browser. Looking for the same behaviour as cmd or OSX Terminal.

Right now WSL has very little integration with native Windows programs.  I agree that something like this would be useful as an automatic integration.
@cheshrkat -- do you know how grunt-open decides what browser to open?  You could use cbwin to open a Windows browser, if you could teach that package to run the appropriate command.

@aseering from what I can tell it uses NodeJS's open()... on *nix I think it tries to use /bin/open and presumably cmd uses start but I'm not 100% sure.

I tried this on Creator's Update and this worked.  As @sundhaug92 mentions you will need to have a Windows xserver (like xming or vcxsrv) installed for the web browser to open.


web.context-root is needed if the URL can not be rewritten.

At a1679ddc5e6c36e58fcfc75ece86bbe557e27709, web.context-root is deleted.
But this option is needed in the environment which the URL can not be rewritten, for example Amazon ALB ingress controller.
Would you please revive it?

As mentioned in v2.0.0's release notes:

Removed web.context-root (Vue.js' router doesn't easily support context roots. May be re-implemented in the future if enough people ask for it)

The main reason for removing it is due to my inability to make a dynamic context root work with Vue.js' router (without ugly hacks) despite several attempts.
If you want to have a go at it, feel free, but unless a few more people request this, I won't personally try to re-implement it.
That being said, for your specific issue, most people create a separate CNAME (e.g. status.example.com) for their status page.
Is there something preventing you from doing this?

What about this?  https://stackoverflow.com/questions/43879418/deploy-vuejs-app-in-a-subdirectory
It seems that it can be done with an edit of web/app/vue.config.js like this:
module.exports = {
  ...
  publicPath: "./"
  ...
};

(bear in mind that I know nothing of what I write - I just googled the problem - hopefully not wasting your time here)
In terms of the usefulness of being able to host content in a sub-directory - it's one of the first things I look for in a service I want to privately self-host (ie. purely for my own use).  Being in a subdirectory means that its existence is not visible, whereas the existence of subdomains is publicly displayed in DNS.

I hope that's not one of the "ugly" hacks you refer to  :-)

@KarlMW Hahaha no, if it was just that, it couldn't even be called a hack.
In fact, this would work fine if I weren't using vue router for the service detail page.
Long story short, one of publicPath's limitations is that it cannot a relative path cannot be used in conjunction with history.pushState, which is unfortunately used by Vue.js' router. I could fix this by using hash history (e.g. http://localhost:8080/#/services/core_twinnation-sitemap), but I just can't bring myself to like that style of routing.
reference:

Limitations of relative publicPath
Relative publicPath has some limitations and should be avoided when:

You are using HTML5 history.pushState routing;
You are using the pages option to build a multi-paged app.

I tried several different methods, but none worked in a clean way.
I didn't want to specify what I meant by "ugly" hacks, because they're really ugly, but the one way I found that works would be to read the generated static script (https://github.com/TwinProduction/gatus/blob/master/web/static/js/app.js) on application start, replace the value of a constant by the defined context root and overwrite the default script with the new script that has the appropriate context root. Coupling that with the base parameter of VueRouter (https://router.vuejs.org/api/#base) would be sufficient, but well, it's hacky.

By the way, it is not possible to do a reverse lookup to retrieve the CNAMEs of a domain (unless you have access to the zone files).
For instance, if I create the CNAME potato.twinnation.org, it's basically impossible for anybody to know unless I tell them, or unless they bruteforce every single strings and find it (or they just happen to try it - but don't bother, I don't have that cname 🤣).
This is known as denial of existence.
Even if a malicious user had access to the zone files, you could still hide it from them by using a wildcard CNAME domain record, and by pointing that to a reverse proxy which would have the necessary configuration telling it to route requests with a given host to the appropriate application, you'd be the only person privy to the existence of that application.
That being said, this is still security by obscurity, which is IMO not enough if you don't want prying eyes to have access to your application, which is why you can also configure basic authentication on top of that: https://github.com/TwinProduction/gatus#basic-authentication

Thanks for the detailed reply.  You've made gatus very easy for people to build in docker themselves - thanks for that, too  :-)
I tried setting publicPath: '/gatus/' in web/app/vue.config.js and then rebuilt it, hoping that a static root would work.  Sadly it failed - it was still looking for its assets under /
w.r.t. CNAME reverse lookups, I'm not sure how it's done, but my never-used-publicly CNAMEs are findable on the web, eg. via https://www.nmmapper.com/sys/tools/subdomainfinder/
Whether it's some sort of active probing, or whether they just monitor certificate transparency logs, I don't know.  I generally use client certificates (handled by traefik) for my private domains (as well as passwords), so I'm reasonably confident that no-one can get in, but I like a bit of obscurity as well  :-)

Allowing us to configure the full external path would also be acceptable. You may still need to modify a constant on the client side (our backends usually write the configured value to  which our frontend's read into a variable in our path building utils on load)
IE:
external-root: https://health.my-domain.com/region-1/
All relative links accessed by the client would be replaced by the full external root path, although I'm not sure how this plays with pushState.

@MiddleMan5 If you or anybody else can get it to work with the front-end, feel free to do so. I'm completely fine with using a different approach for routing -- if pushState has to go, then so be it.
I do want to rewrite a good part of the UI at some point and make it a little less minimalist, but I don't know when that will happen.

w.r.t. CNAME reverse lookups, I'm not sure how it's done, but my never-used-publicly CNAMEs are findable on the web, eg. via https://www.nmmapper.com/sys/tools/subdomainfinder/

They get this data from SSL Transparency.  Looking at it from a number of domains I control, it includes only those that exist in SSL Transparency records (even a typo that existed for 1 minute) that show up there.  Unless you have an misconfigured (or old pre RFC8482 server that still answers ANY queries, this is the only place to get the values.
I'm sure the big names (<IP_ADDRESS> and <IP_ADDRESS> or major ISPs) could probably assemble it from DNS query logging though.  It should be assumed that it's out there (and hence have basic auth or something like authelia in front of it). I agree that subdomains are a better place for a lot of services, but this same problem exists with many VUE apps.

Got stuck in this issue when I configured Gatus behind a Google's LB backed by IAP authentication.
we use a common FQDN and uses route based redicretion via URL map rewrite, but the Gatus web app always respond with default root ("/") instead of the called base URL ("https://common.ingress.dom/<custom_dir>/")
Now the only option for left is to create an Ingress rule to route the traffic via a new DNS entry and I've to duplicate the GCP ingress configuration only for Gatus :(
Would be great if we can call this out in the README to avoid surprise at the end.

@ansilh Could you make a PR for this?
A section in the FAQ should suffice

after some tries, here is what worked for me:

rebuild gatus fronend (npm --prefix web/app run build) with following changes

# set publicPath in vue.config.js
ARG VUE_PUBLIC_PATH
RUN sed -i \
    -e "s|publicPath: .*|publicPath: '${VUE_PUBLIC_PATH}'|" \
    web/app/vue.config.js

# use relative path '.' for SERVER_URL in main.js
RUN sed -i \
    -e "s|export const SERVER_URL = .*|export const SERVER_URL = '.'|" \
    web/app/src/main.js

# use relative path '.' for resources in index.html
RUN sed -i \
    -e 's|="/|="./|g' \
    web/app/public/index.html

and reverse proxy (only relevant lines from docker-compose)

build: { dockerfile: "Dockerfile", args: [ "VUE_PUBLIC_PATH=/gatus", ] }
labels:
- "traefik.http.middlewares.gatus.stripprefix.prefixes=/gatus"
- "traefik.http.routers.gatus.middlewares=gatus"
- "traefik.http.routers.gatus.rule=PathPrefix(`/gatus/`)"

I'm homelab enthusiast with free domain from DDNS provider, subdomain option unavailable for me. Subpath would be very useful, otherwise I can use Gatus only through SSH tunnel :(

I'm in the same situation as @rokiden here!
Does Gatus UI have multiple routes? I couldn't work out how to get any other routes to the only paths that would need to change would be the CSS and JS, both of which could be handled by removing the / from the start of the path to them if there is only one route.

after some tries, here is what worked for me:

rebuild gatus fronend (npm --prefix web/app run build) with following changes

# set publicPath in vue.config.js
ARG VUE_PUBLIC_PATH
RUN sed -i \
    -e "s|publicPath: .*|publicPath: '${VUE_PUBLIC_PATH}'|" \
    web/app/vue.config.js

# use relative path '.' for SERVER_URL in main.js
RUN sed -i \
    -e "s|export const SERVER_URL = .*|export const SERVER_URL = '.'|" \
    web/app/src/main.js

# use relative path '.' for resources in index.html
RUN sed -i \
    -e 's|="/|="./|g' \
    web/app/public/index.html

and reverse proxy (only relevant lines from docker-compose)

build: { dockerfile: "Dockerfile", args: [ "VUE_PUBLIC_PATH=/gatus", ] }
labels:
- "traefik.http.middlewares.gatus.stripprefix.prefixes=/gatus"
- "traefik.http.routers.gatus.middlewares=gatus"
- "traefik.http.routers.gatus.rule=PathPrefix(`/gatus/`)"

could you please help me with it

I just opened a PR that tries to fix this: #908

I'm testing Gatus as a status page for our product CZERTAINLY. It operates in Kubernetes and comprises several services which we would like to monitor. We have already integrated KeyCloak for the SAML/OIDC proxy and RabbitMQ as a messaging bus. Keycloak resides on $URL/kc, RabbitMQ on $URL/mq, and we would like to integrate Gatus the same way - to reside on $URL/status.
I like @simonhammes solution, which made this possible.

after some tries, here is what worked for me:

rebuild gatus fronend (npm --prefix web/app run build) with following changes

# set publicPath in vue.config.js
ARG VUE_PUBLIC_PATH
RUN sed -i \
    -e "s|publicPath: .*|publicPath: '${VUE_PUBLIC_PATH}'|" \
    web/app/vue.config.js

# use relative path '.' for SERVER_URL in main.js
RUN sed -i \
    -e "s|export const SERVER_URL = .*|export const SERVER_URL = '.'|" \
    web/app/src/main.js

# use relative path '.' for resources in index.html
RUN sed -i \
    -e 's|="/|="./|g' \
    web/app/public/index.html

and reverse proxy (only relevant lines from docker-compose)

build: { dockerfile: "Dockerfile", args: [ "VUE_PUBLIC_PATH=/gatus", ] }
labels:
- "traefik.http.middlewares.gatus.stripprefix.prefixes=/gatus"
- "traefik.http.routers.gatus.middlewares=gatus"
- "traefik.http.routers.gatus.rule=PathPrefix(`/gatus/`)"

could you please help me with it

I am not following this. Here is what I did:
export VUE_PUBLIC_PATH=/healthcheck
# set publicPath in vue.config.js
sed -i -e "s|publicPath: .*|publicPath: '${VUE_PUBLIC_PATH}'|" web/app/vue.config.js

# use relative path '.' for SERVER_URL in main.js
sed -i -e "s|export const SERVER_URL = .*|export const SERVER_URL = '.'|" web/app/src/main.js

# use relative path '.' for resources in index.html
sed -i  -e 's|="/|="./|g' web/app/public/index.html

# Install tooling
npm install -g @vue/cli
npm i @vue/cli-service
npm i '@vue/cli-plugin-babel'
npm i '@vue/cli-plugin-eslint'
npm i 'vue-template-compiler'

# install npm dependencies
npm --prefix web/app install
npm --prefix web/app run build

# build docker image
docker build --platform=linux/amd64 . -t ${FULL_IMAGE_NAME}

Still getting 404 on /healthcheck. I am using the dockerfile that comes with the repo. I think this is where the issue is. After you build the front-end, how do you ensure that build ends up in the image?

# curl request
❯ curl -i localhost:8080/healthcheck
HTTP/1.1 404 Not Found
Date: Tue, 26 Nov 2024 06:03:45 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 23

Cannot GET /healthcheck

Still getting 404 on /healthcheck. I am using the dockerfile that comes with the repo. I think this is where the issue is. After you build the front-end, how do you ensure that build ends up in the image?

note that app is still served on /
the publicPath makes some generated urls on the page use VUE_PUBLIC_PATH as root for links,
so you still need to do reverse proxy from /healthcheck to / (e.g. via nginx/caddy/traefik)
for image i just use custom Dockerfile (e.g. https://github.com/akozlins/server/blob/master/gatus/Dockerfile)


Christmas lights controller using littlevgl, ESP32, MQTT

Hello,
I'd like to share  a project I completed using littlevgl, ESP32 and my own built hardware: a Christmas lights controller with touch, MQTT:

The hardware is ILI9341+touch+ESP32, read more about it here: https://harizanov.com/wiki/wiki-home/tft32/
Source code is available here for you to try: https://github.com/mharizanov/TFT32/blob/master/examples/gui/mqtt_controller/mqtt_controller.ino
Thanks to Gabor & team for making this library available!

Very nice.  Thanks for sharing.
On Tue, Dec 25, 2018 at 1:41 AM mharizanov<EMAIL_ADDRESS>wrote:

Hello,
I'd like to share a project I completed using littlevgl, ESP32 and my own
built hardware: a Christmas lights controller with touch, MQTT:
[image: littlevgl]
https://camo.githubusercontent.com/7020da98e1761c99cc01abca5b9ef41e554cb381/68747470733a2f2f692e696d6775722e636f6d2f303865557154662e6a70673f31
The hardware is ILI9341+touch+ESP32, read more about it here:
https://harizanov.com/wiki/wiki-home/tft32/
Source code is available here for you to try:
https://github.com/mharizanov/TFT32/blob/master/examples/gui/mqtt_controller/mqtt_controller.ino
Thanks to Gabor & team for making this library available!
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/littlevgl/lvgl/issues/670, or mute the thread
https://github.com/notifications/unsubscribe-auth/Am4ty7fBYenlsySQY5CEZlIWHSn_IAaoks5u8fLZgaJpZM4Zg99Y
.

--
Martin Fisher
Partner
Azafran Capital Partners
(c)<PHONE_NUMBER>
(s) martin.fisher938

Hi @mharizanov,
Thank you for sharing your project!  :+1:
I've just created a blog post where we can collect the projects with LittlevGL.
Here it is: https://blog.littlevgl.com/2018-12-26/references
If you want, please add your project to the list!

Neat,
thanks, I did that.
Cheers


Timestamp as second-class citizen

Currently, timestamps and data are stored equally.

obs = Pos(time=0, data=(0,1))
obs.time # 0
obs.data # (0, 1)

But it may feel a little more natural to have access like:
obs # (0, 1)
obs.time # 0

i.e. the data takes the forefront.

Closed by 8c8c813b50ac0311f9f0b48d7cd8bd3f5e934065


Consider multisig account

it might be going to work like lightning channel, especially for prepaid case.

to simplify the concern, concentrate on the case 'start using app without creating account' here.
'multisig paying channel' is another case, that should be handled in next project.
now agent is temporary preview account without keys, that does not have real transfer functionality.


Microsoft.Sysinternals.RDCMan version 2.93

[ ] Have you signed the Contributor License Agreement?
[ ] Have you checked that there aren't other open pull requests for the same manifest update/change?
[ ] This PR only modifies one (1) manifest
[ ] Have you validated your manifest locally with winget validate --manifest <path>?
[ ] Have you tested your manifest locally with winget install --manifest <path>?
[ ] Does your manifest conform to the 1.4 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Fix #113743
Microsoft Reviewers: codeflow:open?pullrequest=https://github.com/microsoft/winget-pkgs/pull/113753&drop=dogfoodAlpha

Does anyone solve this problem?


Inconsistencies in COMPLETED/FAILED times and logs

In GitLab by @mcastril on Jul 9, 2024, 16:22
This has implications in the log visualization, the correct identification of runs, and also in the performance metrics due to some jobs reporting unrealistic metrics that force us to implement outlier removal algorithms.
I take experiment a0uo as example:

The .err and .out logs for the last run, according to the GUI, point to logs from different runs. Maybe the fact that the latest .out has been compressed is the cause since it's not findable by the GUI/API. If that's the case it should be more robust and not point to the latest available, but for the one that really corresponds to the run.
Then, in the job history view, we see a job COMPLETED in only 30 seconds.

The job COMPLETED in 8:43:53 supposedly ran later, but this is not the one shown in the tree view when we open it:

If we open the /appl/AS/AUTOSUBMIT_DATA/a0uo/tmp/a0uo_19900101_fc0_11_SIM_TOTAL_STATS file, the FAILED jobs don't have an ending time (then I infer this information is added in the DDBB directly by Autosubmit when the job is failed). The COMPLETED job ran for 8:34h, like the one with counter 62 shown above. There is no trail about the job running in 30 seconds.
20240301223744<PHONE_NUMBER>3905<PHONE_NUMBER>0000 FAILED
20240301233222<PHONE_NUMBER>4603<PHONE_NUMBER>0000 FAILED
20240302044634<PHONE_NUMBER>5337<PHONE_NUMBER>0000 FAILED
20240302045408<PHONE_NUMBER>5752<PHONE_NUMBER>0000 FAILED
20240302131902<PHONE_NUMBER>2206<PHONE_NUMBER>0000 FAILED
20240302151731<PHONE_NUMBER>2345<PHONE_NUMBER>0000 FAILED
20240302152416<PHONE_NUMBER>2614<PHONE_NUMBER>1007 COMPLETED

Unfortunately, there is no AS log for this run, and I cannot look there at what could happen. But this behaviour is repeated in other experiments and could be tracked by someone.
Feel free to move the part of this issue that corresponds to Autosubmit to the other project. Sorry for open a single issue for the whole problem: @ltenorio @dbeltran @bdepaula

In GitLab by @mcastril on Jul 10, 2024, 12:26
Hi @dbeltran, I took one random example, but this behavior is happening in quite a lot of experiments (that's why the outlier detection feature was implemented in the Performance Metrics table).
You can take a lot here: https://earth.bsc.es/gitlab/es/autosubmit-api/-/issues/83
So, on the one hand it's relieving that you think that the current Autosubmit version should not have these problems. On the other hand, I feel that if when the issue appears, we don't pay enough attention to it because experiments are not running with the latest version, we have the risk of overseeing it.
We must have the certainty that this is not happening because, as I said, we are reporting this information in Destination Earth (included in the Performance Metrics), and also, this tool is used by multiple users that may not report these problems but can get disappointed if we are not reporting accurate workflow information.
If you suggest so, you could also check the experiments running with v4.1.8 and verify that this behavior is not reproduced in any of those. I am looking for these issues from time to time, but I cannot do them as frequently as I can. However, I think this is an exercise that should be done routinely (at least until test coverage increases), to check the sanity of the data and what users are seeing.

In GitLab by @ltenorio on Jul 10, 2024, 09:35
What seems strange about this inconsistency is the fact that the Tree View shows the second to last execution of the job. It uses the Pkl information which is expected to have the latest info of the job but this is not the case.
Then, the job history table uses the job_data_a0uo.db DDBB to show the runs of that job which now seems to be the complete data.
And finally, we have the a0uo_19900101_fc0_11_SIM_TOTAL_STATS log that has just one of the two COMPLETE jobs and, also, has one FAILED job more than the job history table.
We have to review how data is written on Autosubmit to see what is wrong :sweat:
Is it possible that the pkl stops updating after the first COMPLETE but there were remaining processes that continue updating the two other sources of data?

In GitLab by @mcastril on Jul 10, 2024, 09:57
Thanks Luiggi
Then, also the fact that the job running for 30s is marked as COMPLETED. This could be due to a setstatus, but we are not sure.
Actually, the second-to-last job marked in TOTAL_STATS as FAILED is the one shown in the Tree view as COMPLETED. The starting time is 15:23:45, I guess UTC?
Then the job_data_a0uo.db could be complete but inconsistent, if it's showing the second-to-last as COMPLETED.
So, we have:

Failed jobs marked as COMPLETED (in the GUI)
Tree view showing not the last but the second-to-last run
Incomplete pkl (probably related)
Logs pointing to files belonging to different executions

This is important to debug because users may lose confidence in the tool if they see we tag failed jobs as completed, and also because it's impacting the performance metrics

In GitLab by @dbeltran on Jul 10, 2024, 11:36
Hello @mcastril , @ltenorio
Do you know which version this experiment was used? I see that in the minimal this was generated with 4.0.104
We had some fixes in v4.1.1 but also in v4.1.4 https://earth.bsc.es/gitlab/es/autosubmit/-/blob/master/CHANGELOG so unless they use 4.1.8 I think there could be some issues that we already debugged and fixed


Support buffer de-duplication

It's possible that an object may have multiple numpy arrays with the same contents (this will arise in some LensKit use cases). We can support de-duplication by recording more robust checksums (MD5 or SHA) of buffers, and making the buffer store effectively content-addressed.

Format version 2 has file checksums, which is one of the prerequisites for this.


Adding target in trivy output

For https://github.com/Azure/container-scan/issues/28

Yes, this should be backward compatible as it's only a field addition to each cve.


Missing license

This looks like a cool project but I'm unable to use it due to the missing license.  Under which license is the code published?

As noted in the package.json it is Apache 2.0, but I need to include the LICENSE.txt as well for good measure. Thanks!

Added now. Thanks again.


login/logout doesn't work

@rultor release, tag is 0.8.4

@rultor release, tag is 0.8.4

@yegor256 OK, I will release it now. Please check the progress here

@rultor release, tag is 0.8.4

@yegor256 Done! FYI, the full log is here (took me 12min)


Add CometLogger for metrics logging via comet.ml

Context
What is the purpose of this PR? Is it to

[x] add a new feature
[ ] fix a bug
[ ] update tests and/or documentation
[ ] other (please add here)

My company uses torchtune for LLM finetuning but we use comet.ml for experiment tracking, not tensorboard or weights and biases. Adding a CometLogger class to make it easier for other Comet users to use torchtune with Comet.
Changelog

Introduce CometLogger class
Update docs to include CometLogger
Add TestCometLogger test

Test plan
Please make sure to do each of the following if applicable to your PR. (If you're not sure about any one of these just ask and we will happily help.)

[x] run pre-commit hooks and linters (make sure you've first installed via pre-commit install)
[x] add unit tests for any new functionality
[x] update docstrings for any new or updated methods or classes
[x] run unit tests via pytest tests
[ ] run recipe tests via pytest tests -m integration_test
[ ] manually run any new or modified recipes with sufficient proof of correctness

[ ] include relevant commands and any other artifacts in this summary (pastes of loss curves, eval results, etc.)

@dzheng256  Would you mind signing the CLA agreement?

Hey @joecummings I actually already had an email exchange with the meta CLA folks about this and I think I'm on the agreement already but it might be my corporate email<EMAIL_ADDRESS>rather than the account I'm making this PR from (dzheng256@gmail.com). I've asked them to add my personal email to the corporate CLA as well but haven't heard back.

It seems like the tests ran and passed, @joecummings does that mean the CLA issue is resolved?

@dzheng256 It seems the CLA check is still failing. Have you confirmed that your personal email was added? Are you still able to sign a second time with your personal email?

@joecummings sorry about that, seems like it's all resolved now.

Thank you so much for adding this @dzheng256. It's really cool to hear that you're using torchtune in your company.
Could you possibly attach an example comet logging output to the PR to confirm everything looks GOOD?

Could you also please shout out integration in the README.md here, please? https://github.com/pytorch/torchtune/blob/288ff4435b0cf17325b5c3b112f6859a6cdf0ea2/README.md?plain=1#L35

Thanks for adding this. There was also an earlier PR to add CometLogger that including a quick tutorial on how to use it. Would you be able to add that in this PR as well? #910

Oh sorry, I hadn't realized there was an open PR implementing pretty much the same thing as this one. Should we stick with #910 then, since it came first? It also seems to be written by the a Comet dev so it might provide a better implementation. cc @Lothiraldan

@dzheng256 I've pinged the other PR to see if he's still willing to work on it. If not, maybe you can incorporate the differences here?

Yes sounds good, I will pull in the tutorial from the other PR if they no longer have the bandwidth to work on it.

@Lothiraldan There are still a few differences compared to your original PR, specifically in the initialization args as well as the log metric calls. I noticed you used self._experiment.__internal_api__log_metric__ for example. Let me know if you feel we should tweak anything.

@Lothiraldan There are still a few differences compared to your original PR, specifically in the initialization args as well as the log metric calls. I noticed you used self._experiment.__internal_api__log_metric__ for example. Let me know if you feel we should tweak anything.

We are generally using this integration specific methods to have more control how the data is logged. I don't think this makes a different for the torchtune integration but I will double-check once we get the example running. Thanks for flagging that.

This is looking great to me. Thank you both so much for your help @dzheng256 @Lothiraldan. I'm really happy to see torchtune being integrated into the wider ML ecosystem.
Could you ensure your pre-commit hooks are correctly configured, please? Looks like the lint CI is failing.
RE: example runs, I don't want you to be blocked on this, so I'm happy to help out here in any way I can.
I'd also love to see our integration demonstrated through your "official" channel : ). We'd very much welcome future PRs to ensure users can access the latest and greatest features in Comet through torchtune.

@SalmanMohammadi I got back access to the EC2 instance and I've got the example running: https://www.comet.com/examples/comet-example-torchtune-mistral/fffb3036880e41b5af2df932db4d3578?compareXAxis=step&experiment-tab=panels&showOutliers=true&smoothing=0&xAxis=step. I took a screenshot while it's running, it will probably looks better after it finishes but we can merge with the current screenshot.
I made some small changes and added back logging the configuration as a file, this way it's pretty easy to grab it from Comet and reproduce a previous run. I made several small commits, sorry about that. Let me know if you want me to squash them if you are not gonna squash the PR.

@SalmanMohammadi I got back access to the EC2 instance and I've got the example running: https://www.comet.com/examples/comet-example-torchtune-mistral/fffb3036880e41b5af2df932db4d3578?compareXAxis=step&experiment-tab=panels&showOutliers=true&smoothing=0&xAxis=step. I took a screenshot while it's running, it will probably looks better after it finishes but we can merge with the current screenshot.
I made some small changes and added back logging the configuration as a file, this way it's pretty easy to grab it from Comet and reproduce a previous run. I made several small commits, sorry about that. Let me know if you want me to squash them if you are not gonna squash the PR.

Amazing!! Thank you.
Feel free to send me an updated screenshot on Discord and I'm happy to add.

Hi @SalmanMohammadi, I've pushed fixes for the unit tests, updated the links and screenshots, tried to clarify the docstring about experiment_key argument and found the correct format for the mode argument to render as a nested bullet point.
I think that we are all good now but please let me know if I missed anything

Thank you so much for your patience in addressing all our comments, and for your contributions @dzheng256, @Lothiraldan. This looks fantastic to me.
One last tiny nit and feel free to merge once CI is green.

@SalmanMohammadi Good catch, thanks you and @RdoubleA  for all of your time and reviews. I hope that my millions of small commits were not spamming your inbox too much :sweat_smile:

Thanks everyone! Looking forward to deleting my internal CometLogger and switching to torchtune.utils.metric_logging.CometLogger


Android usage problem

I use three inputs. When I click an input focus, I click the next input. The focus will run to the first input. What's the matter？

I have similar issue. Any solution yet?


Missing Template error in Production only

I am using version 0.5.0 on Rails 5 and everything works great on development. I am using the example code provided in the docs and the xlsx file is perfect.
When i try in production however i get a

No template found for Admin::ReportsController#create, rendering head :no_content

This error also fails silently, i click on the create report button and nothing happens.
I then tried to use a more explicit render version with:
  def create
    render xlsx: 'create'
  end

And i get this error:

Missing template admin/reports/create, admin/create, application/create with {:locale=>[:"en-GB", :en], :formats=>[:xlsx], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :coffee, :jbuilder]}

It looks like the handler :xlsx is not registered and Rails can't find the template. However, in development everything works just great??

God, just did a unicorn restart instead of stop/start :(

Haha. Yesterday I fought a failed test for hours before realizing I forgot to copy a template. No worries.