Boilerplate reduction idea

Related to #40
If a proxy is used between the injected model/view/intent then there is no need to declare an interface upfront. The flip side is that the observables hanging off the model/view/intent must be accessed through a getter function and a stringed arg.
Example from the README:
var HelloModel = Cycle.createModel(function (intent) {
  return { name$: intent.get('changeName$').startWith('') };
});

Modified data-flow-node.js:
function P() { // Proxy is ES6 reserved
  this.proxiedProps = {};
  this.get = function (streamKey) {
    if (this.proxiedProps[streamKey] === undefined) {
      this.proxiedProps[streamKey] = new Rx.Subject();
    }
    return this.proxiedProps[streamKey];
  }
}

function DataFlowNode() {
  var args = Array.prototype.slice.call(arguments);
  var definitionFn = args.pop();
  if (typeof definitionFn !== 'function') {
    throw new Error('DataFlowNode expects the definitionFn as the last argument.');
  }
  var proxies = [];
  for (var i = 0; i < definitionFn.length; i++) {
    proxies[i] = new P();
  }
  var wasInjected = false;
  var output = definitionFn.apply(this, proxies);
  checkOutputObject(output);
  copyProperties(output, this);
  this.inject = function injectIntoDataFlowNode() {
    if (wasInjected) {
      console.warn('DataFlowNode has already been injected an input.');
    }
    for (var i = 0; i < arguments.length; i++) {
      replicateAll(arguments[i], proxies[i].proxiedProps);
    }
    wasInjected = true;
  };
  this.clone = function () {
    // TODO this is broken
    return DataFlowNode.apply({}, interfaces.concat([definitionFn]));
  };
  return this;
}

ES6 Proxy would be perfect for this, but they are very much a WIP.
One idea is to default to loose mode (as above) with an opt in to strict mode (as it is now) by passing in interface string arrays. This opt-int strict checking is how React handles it with their propTypes. I found myself constantly making errors during the writing and refactoring of a toy cycle app.
I'm somewhat on the fence with the need for the .get (it is ugly in it's own way) and the stringed stream arg, but those massive interface arrays in the TodoMVC are scary. It would be awesome to couple this with the removal of the events view property as outlined in #40. That would make the README example app really nice and welcoming:
var Cycle = require('cyclejs');
var h = Cycle.h;

var HelloModel = Cycle.createModel(function (intent) {
  return { name$: intent.get('changeName$').startWith('') };
});

var HelloView = Cycle.createView(function (model) {
  return {
    vtree$: model.get('name$')
      .map(function (name) {
        return h('div', {}, [
          h('label', 'Name:'),
          h('input', {
            'attributes': {'type': 'text'},
            'ev-input': 'inputText$'
          }),
          h('h1', 'Hello ' + name)
        ]);
      })
  };
});

var HelloIntent = Cycle.createIntent(function (view) {
  return {
    changeName$: view.get('inputText$').map(function (ev) { return ev.target.value; })
  };
});

Cycle.createRenderer('.js-container').inject(HelloView);
Cycle.circularInject(HelloModel, HelloView, HelloIntent);

I'm probably missing something obvious here that is a deal-breaker. Also, the explicit interface declaration was likely a purposeful design decision. In that case please feel free to ignore my suggestion!
:beers:

Wow, I really like your suggestion. Thanks! I hear you about boilerplate problems, and I'd like to reduce it as much as possible (but avoiding an API that makes the framework feel too "magical").

I found myself constantly making errors during the writing and refactoring of a toy cycle app.

That's a very important problem to solve.

those massive interface arrays in the TodoMVC are scary.

Yes they are.
I need to give some thought to your implementation, and also to the overall API design. My intuition is to lean towards your suggestion, since JS is after all a dynamically typed language, where we are used to code without specifying types or contracts. Interfaces in Cycle are a bit against that. I'll toy around with this suggestion, and comment back here soonish. :+1:

Commits https://github.com/staltz/cycle/commit/f9e733ae936eed414b70175f75d78f5798bdc95c and https://github.com/staltz/cycle/commit/a52db8223da48f327c812fa430af76d79b63b4db are implementing this. Boilerplate is being succesfully removed. :+1:
The README example would be:
var HelloModel = Cycle.createModel(function (intent) {
  return {name$: intent.get('changeName$').startWith('')};
});

var HelloView = Cycle.createView(function (model) {
  return {
    vtree$: model.get('name$')
      .map(function (name) {
        return h('div', {}, [
          h('label', 'Name:'),
          h('input', {
            'attributes': {'type': 'text'},
            'ev-input': 'inputText$'
          }),
          h('hr'),
          h('h1', 'Hello ' + name)
        ]);
      })
  };
});

var HelloIntent = Cycle.createIntent(function (view) {
  return {
    changeName$: view.get('inputText$')
      .map(function (ev) { return ev.target.value; })
  };
});

Cycle.circularInject(HelloModel, HelloView, HelloIntent);
Cycle.createRenderer('.js-container').inject(HelloView);

I'll still do some commits on lessboilerplate branch, to update the docs and README, etc. I might join these changes with also #58, removing dom-delegator, before releasing v0.8.0 which should have significantly slimmer API.
Thanks @dobrite !

And I've been investigating if I could use ES6 Proxy or something equivalent (maybe a polyfill), but there are no hopes yet. We need to wait for ES6 implemented in browsers. Only then can we make another version of Cycle without the use of get().

Wow, absolutely amazing! I looked through the 2 commits and what I saw looked good (but I'll admit most of it was over my head). I'll pull the branch and try it out with my toy app and see how it goes. So excited to delete those arrays. :beers:
I too looked for polyfills, googled, and checked SO and nothing turned up. It would be lovely to remove the gets eventually, but that will likely take a long while.

Toy app working! :+1:

So my app hits a brick wall after a few minutes of running (~1.5 gb of ram allocated). Heap Allocations in chrome turns up ReplaySubjects. No idea if this means anything or is just a red herring:
master

lessboilerplate

Perhaps this? No idea what it is but it looked a little fishy on my read through.

Would ES5 getters/setters further clean up the syntax? Or is that still too much to expect from the supported browsers?

Oh never mind, I guess you'd still have to know the props up-front to define getters/setters.

So my app hits a brick wall after a few minutes of running (~1.5 gb of ram allocated).

I'll try to fix it before merging to master. Can you share the code, or tell me the use case, so I can reproduce it?

Would ES5 getters/setters further clean up the syntax? Or is that still too much to expect from the supported browsers? Oh never mind, I guess you'd still have to know the props up-front to define getters/setters.

Yeah I looked into that, and it won't be enough. Has to be ES6 Proxy.

The custom-element example exhibits the same issue although slower. Pretty sure all apps will at some rate.  In Chrome I used Profiles -> Record Heap Allocations to generate those screenshots above.

@dobrite fixed the memory leak. Turned out to be just the wrong way of using the replay() operator. replay(null, 1) and not replay(1). https://github.com/staltz/cycle/commit/ebc3c1e5ec1a8d580b9b2f7b343f1992ac450951
Check if it solves your issue.

Merged to master and considered done.


tensorflow preventing container to run without AVX

When trying to run the container on a QNAP TS-251, having a Celeron J1800, the container would not start because of missing AVX instructions :
[tensorflow/core/platform/cpu_feature_guard.cc:37] The TensorFlow library was compiled to use AVX instructions, but these aren't available on your machine.
I've been running inference with OpenVino docker image on this NAS without any problem, why should TensorFlow prevent running the whole OpenVino server while it's only there for the protobuf API format right ?

In the OpenVINO model server is used several functions for tensorflow contrib which implement data serialization and deserialization in a proto buffer. The inference itself is used without tensorflow library.
In your case the easiest fix should be to build the pip package for tensorflow without AVX support.
You could probably use the package described in https://github.com/yaroslavvb/tensorflow-community-wheels/issues/103
I don't have any host without AVX at hand to test it but it should work if you replace the tensorflow dependency in the requirements section, with the pip package without avx.
Please confirm if that can work for you.

Thanks for pointing the way
I created a public image on docker.io :  smartcv/openvino-model-server-noavx:0.0.1
Now when I pull and run this image, I get strictly no logs.
I create the container like that :
docker run --rm -d  -v /share/CACHEDEV1_DATA/Public/ml/:/ml:ro --env LOG_LEVEL=DEBUG --env LOG_PATH=/var/log/ie_serving.log -p 9001:9001 smartcv/openvino-model-server-noavx:0.0.1 \ /ie-serving-py/start_server.sh ie_serving model --model_path /ml/models/cockburn_ssdlite --model_name cockburn --port 9001
I can only see that the process is running :
root         1  1.9  4.1<PHONE_NUMBER>68 ?       Ss   10:00   0:04 /ie-serving-py/.venv/bin/python3 /ie-serving-py/.venv/bin/ie_serving model --model_path /ml/models/cockburn_ssdlite --model_name cockburn --port 9001
nothing in /var/logs/ie_serving.log, nothing in the container's logs..
Any idea ?

This is strange indeed. I tested your docker image and it worked fine for me.
I suggest to start the container in interactive mode docker run --rm -it with just bash command and then check what happens when you start the service manually. There should be startup messages on the console and errors if some problems occurred.

I must remind I'm trying to run it on a QNAP NAS ts-251, with container station. (Docker version 17.09.1-ce, build 0a5102e)
[~] # docker run --rm -it  b7919426c99c /bin/bash
root@32e8fdfb2920:/ie-serving-py#./start_server.sh ie_serving model --model_path /ml/models/cockburn_ssdlite --model_name cockburn --port 9001

nothing happens, no log anywhere...

What is the CPU type that you have on board?
The symptoms are quite strange. I suspect python environment is not starting.
Can you try interactively start python:
./start_server.sh python inside the docker and try to import the dependencies:
import json
import sys
from ie_serving.models.model_builder import ModelBuilder
from ie_serving.server.start import serve as start_server
from ie_serving.logger import get_logger, LOGGER_LVL
from jsonschema.exceptions import ValidationError
import os```
That might reveal which dependency hangs on the import attempt.
BTW Do other docker containers work correctly on this device? Are you able to reproduce it on different device?

The CPU on this NAS is a Celeron J1800.
I do have other containers running without issues.
I ran interactively the imports, it looks like it's stalling when import  ie_serving.server.start :
root@32e8fdfb2920:/ie-serving-py# source .venv/bin/activate
(.venv) root@32e8fdfb2920:/ie-serving-py# python
Python 3.5.2 (default, Nov 12 2018, 13:43:14)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import json
>>> import sys
>>> from ie_serving.models.model_builder import ModelBuilder
>>> from ie_serving.server.start import serve as start_server

Does not go any further.
I'll try the same image on another (same model) NAS and on a different CPU NAS (but still with no AVX which is the whole point here :) )

So I went one step farther, I interactively ran the imports of ie_serving.server.start :
(.venv) root@96688c4aea33:/ie-serving-py# python
Python 3.5.2 (default, Nov 12 2018, 13:43:14)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from concurrent import futures
>>> import time
>>> import grpc
>>> import tensorflow.contrib.util as tf_contrib_util

So looks like the culprit here is the tensorflow package.. which makes sens as it's the only thing changes in this build of the docker.
I'll try to find a build of tensorflow that runs on this CPU, then will re-build a docker image with it.
Thanks for pointing out directions to troubleshoot !

Got it working with another Tensorflow build from this request : https://github.com/yaroslavvb/tensorflow-community-wheels/issues/98
I published the version 0.0.2 with working tensorflow.
Thanks again for your help !


Tests SQLite in memory throw exception SQLite Error 1: 'near ":" : syntax using "DataSource=:memory:"

I followed the examples of SQLite implementation for in-memory testing, but when executing the line context.Database.EnsureCreated(); the exception is thrown

SQLite Error 1: 'near ":" : syntax using "DataSource=:memory:"

Steps to reproduce
I followed exactly the same steps of this example: https://www.meziantou.net/testing-ef-core-in-memory-using-sqlite.htm
public SampleDbContext CreateContext()
    {
        if (_connection == null)
        {
            _connection = new SqliteConnection("DataSource=:memory:");
            _connection.Open();

            var options = CreateOptions();
            using (var context = new SampleDbContext(options))
            {
                context.Database.EnsureCreated();
            }
        }

        return new SampleDbContext(CreateOptions());
    }

Can someone help me? Thanks
Further technical details
EF Core version: 2.2.0
Database Provider: (e.g. Microsoft.EntityFrameworkCore.Sqlite 2.2.2)
Operating system:
IDE: (e.g. Visual Studio 2017 15.9.14)

@angelicaflausino If there is something wrong with that blog post, then it's probably a good idea to follow up with the author. If you think there is an issue with EF, then please post a small, runnable project/solution or complete code listing that demonstrates the behavior you are seeing.

EF Team Triage: Closing this issue as the requested additional details have not been provided and we have been unable to reproduce it.
BTW this is a canned response and may have info or details that do not directly apply to this particular issue. While we'd like to spend the time to uniquely address every incoming issue, we get a lot traffic on the EF projects and that is not practical. To ensure we maximize the time we have to work on fixing bugs, implementing new features, etc. we use canned responses for common triage decisions.


ImplicitlyWait() throws NullReferenceException.

Hi, I have this small problem. When I tell the browser to wait for HTML before to continue, I recieve a NullReferenceException. I tried this block with FirefoxDriver and worked fine.
simpleDriver.Manage ().Timeouts ().ImplicitlyWait (TimeSpan.FromSeconds (10));

Actually, I think many of this Wait-functionality is dependent on javascript support in the browser. SimpleBrowser lacks that and will most probably not get it. Now a NullReferenceException is a terrible way to fail. I will leave this issue open and try to do a more graceful failure (with a helpful message).


[HOLD for payment 2023-10-25] Chat - Pasted text reflects Full Display name

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

Issue found when executing PR https://github.com/Expensify/App/pull/27889
Action Performed:

Navigate to staging.new.expensify.com as User A
Request Money from User B
Sign in as User B
Go to IOU report
Click on 'Pay elsewhere' button
Click on 'copy to clipboard' icon
Paste the copied text

Expected Result:
The pasted text should reflect what was copied from the message
Actual Result:
Pasted text reflects copied message plus Full Display name
Workaround:
Unknown
Platforms:

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

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

Version Number: 1.3.75-2
Reproducible in staging?: Yes
Reproducible in production?: No
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: Any additional supporting documentation
https://github.com/Expensify/App/assets/78819774/79dfc532-43e2-4022-ad98-fe466111e3f7
Expensify/Expensify Issue URL:
Issue reported by: Applause - Internal Team
Slack conversation:
View all open jobs on GitHub

:wave: Friendly reminder that deploy blockers are time-sensitive ⏱ issues! Check out the open StagingDeployCash deploy checklist to see the list of PRs included in this release, then work quickly to do one of the following:

Identify the pull request that introduced this issue and revert it.
Find someone who can quickly fix the issue.
Fix the issue yourself.

Proposal
Please re-state the problem that we are trying to solve in this issue.
IOU text message "Firstname paid elsewhere" does not match the copied text.
What is the root cause of that problem?
The copy action of the message Firstname paid elsewhere does not use the same logic as the preview.
In the preview we are getting only the short form of the payer name by passing true as second argument to getDisplayNameForParticipant
const payerName = isExpenseReport(report) ? getPolicyName(report) : getDisplayNameForParticipant(report.managerID, true);
In the copy to clipboard action, we are using almost the same logic but without the true flag
https://github.com/Expensify/App/blob/52f0e3c9ec9ab5c87993672661095f81253bc00d/src/libs/ReportUtils.js#L3654
What changes do you think we should make in order to solve the problem?
getIOUReportActionDisplayMessage responsible to generate the text to copy, is only called in a single place, we can just update the function call to include the short form flag.
What alternative solutions did you explore? (Optional)
N/A

I can take this one over as I have been assigned to the original PR
I agree this is not a blocker, its a new feature and minor issue.
I think we should use the same methods for when we want the exact same message to be copied @rayane-djouah this is it feels like incompleteness from our PR, can you work on this as a follow up so the copied text exactly copies what the system message says?

To confirm, this would be a continuation of the previous upwork job as we should make sure to get this right

To confirm, this would be a continuation of the previous upwork job as we should make sure to get this right

@mountiny Does this need review here?

This was already paid and this was a regression handled from here https://github.com/Expensify/App/issues/27114


2.0

!!DO NOT MERGE!!
For review and addition work

fixed, its now isBelow19 and checks if the version is 1.9, 1.10, 1.11, or 1.12. just means we have to add new versions as they come out

How about actually parsing the version number as a double and checking whether it’s greater than or equal to 1.9?

should i change the red to &c as well?

Would make sense in terms of consistency, but I don’t really mind... I just want the shade of green changed in order to make the sign coloured.

!No there will be an object for the whole shop that holds this, which will be were most of the shop stuff will be

I see, makes sense. So basically, the User object is simply a data storage utility. I like the idea, though - definitely OO.
Maybe we could rename it to ShopUser as User kind of plain and used in other APIs.

Also, if you are going to merge, please do not squash. You probably weren't going to, but just to be sure.

I hate squashing :P also still may be some more changes before completely finalizing it would rather not have a beta tag on this version too

Congrats on commit #100, I wanted it but good job.


Linkified symbolic link applies only to first word

When the path of a symlink includes spaces a clickable link is applied only the the first "word" of that symlink.
The link itself points to the correct location still.
Example: https://github.com/EIGHTFINITE/jdownloader-portable/blob/db9daffce2c7c243a1523080def7955c2cfd873c/LICENSE.txt

It looks like it's conflicting with show-whitespace; disabling this feature fixes it.


[Doc Improvement][SEO API based ME]

Acrolinx Scorecards
We currently enforce a minimum score of 80.
Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology:

Article
Score
Issues
Scorecard
Processed

msteams-platform/sbs-api-msg-ext-ttk.yml
81
72
link
:white_check_mark:

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

Acrolinx Scorecards
We currently enforce a minimum score of 80.
Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology:

Article
Score
Issues
Scorecard
Processed

msteams-platform/messaging-extensions/create-api-message-extension.md
95
25
link
:white_check_mark:

msteams-platform/sbs-api-msg-ext-ttk.yml
81
72
link
:white_check_mark:

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


"Cat Jumper" is inconsistent on sim and Meowbit

Describe the bug
"Cat Jumper" is inconsistent on sim and Meowbit
Steps to reproduce the behavior
1.Navigate to https://arcade.makecode.com/beta#
2.BLocks Games---->Cat Jumper---->Open Example---->Run this program
3.Download the code to Meowbit---->Run this program
Expect behavior
The cat should stand on the tilemap at the beginning of the third level.

Actual behavior
In the beginning of the third level, the cat should stand on the tilemap. But it keep jumping at the beginning if you run it on Meowbit
Additional context
1.OS: Windows(rs6)
2.arcade version: 1.3.13
3.Microsoft MakeCode version: 6.5.2

@jwunderl could this be related to physic engine changes?

TODO: create min repo

Oh, maybe test this one in beta with https://github.com/microsoft/pxt-common-packages/pull/1209 before trying to minimize repro or anything, very possible that fixed it.

Fixed


adding network id field to the daemon

adding network id to the daemon for hard fork testing. the objective is to get the network id graphql call to return based on this result.

!ci-build-me

!approved-for-mainnet

!ci-build-me

@svv232 There's also supposed to be a signatureKind GQL call, will this affect that too?

@svv232 There's also supposed to be a signatureKind GQL call, will this affect that too?

I don't think so because that seems to correspond with compile time configs in the mlh files.

!ci-build-me

!ci-build-me


Artist has no comments.

Artist (Model, DAO and Controller) has no comment describing its expected funcionality. Appropriate comments should be added  using javadoc.

Issue is too detailed. Will be made part of a coarser grained issue. Closing it now.


Adjust Info Screen to announce new Release-Features for 2.11 (EXPOSUREAPP-9305)

Jira Ticket
https://jira-ibs.wbs.net.sap/browse/EXPOSUREAPP-9305

@jurajkusnier I realized that we spelled the QR-Code-Scanner with two - before and I changed it here to be consistent. Could you please take over this change? Thank you and sorry for that.

@jurajkusnier I realized that we spelled the QR-Code-Scanner with two - before and I changed it here to be consistent. Could you please take over this change? Thank you and sorry for that.

no problem, it should be updated


[Do not merge until related content-schema PR has been merged!] Devolved administration availability modelling

Trello
What?
This work is part of a task to enable publishers to specify devolved administration (DA) service availability for local transactions. This PR models the data and was created as a result of a spike implementation in Publisher.
A related content schema has also been added. This PR should NOT be merged until after the content-schema PR has been merged.
Modelling
Makes use of Mongoid’s embeds_one. This allows data to be stored within a hash. It can then be queried from the parent object.
l = LocalTransactionEdition.new
l.scotland_availability

=> #<DevolvedAdministrationAvailability _id: 60a77488a16d490001c09865, type: "devolved_administration", alternative_url: "https://www.scotland.gov/service">

Presenting to the Publishing API
Related content-schema example.
Naming
Availability > applicability
DevolvedAdminstration > DevolvedNation
Unavailable > not_available
Devolved_administration_service > available_url (as a type option)
⚠ This repo is Continuously Deployed: make sure you follow the guidance ⚠
Paired with @kevindew.

Thanks very much for your review @kevindew. It is ready for re-review :)

Thanks @kevindew. It is ready for re-review.


HADOOP-18057. Fix typo: validateEncrytionSecrets -> validateEncryptio…

Description of PR
Fix typo: validateEncrytionSecrets -> validateEncryptionSecrets

JIRA: https://issues.apache.org/jira/browse/HADOOP-18057

@aajisaka, Can you please review it ? Thanks.

:confetti_ball: +1 overall

Vote
Subsystem
Runtime
Logfile
Comment

+0 :ok:
reexec
0m 46s

Docker mode activated.

_ Prechecks _

+1 :green_heart:
dupname
0m  0s

No case conflicting files found.

+0 :ok:
codespell
0m  1s

codespell was not available.

+1 :green_heart:
@author
0m  0s

The patch does not contain any @author tags.

+1 :green_heart:
test4tests
0m  1s

The patch appears to include 2 new or modified test files.

_ trunk Compile Tests _

+1 :green_heart:
mvninstall
32m 18s

trunk passed

+1 :green_heart:
compile
0m 48s

trunk passed with JDK Ubuntu-11.0.11+9-Ubuntu-0ubuntu2.20.04

+1 :green_heart:
compile
0m 42s

trunk passed with JDK Private Build-1.8.0_292-8u292-b10-0ubuntu1~20.04-b10

+1 :green_heart:
checkstyle
0m 31s

trunk passed

+1 :green_heart:
mvnsite
0m 49s

trunk passed

+1 :green_heart:
javadoc
0m 30s

trunk passed with JDK Ubuntu-11.0.11+9-Ubuntu-0ubuntu2.20.04

+1 :green_heart:
javadoc
0m 36s

trunk passed with JDK Private Build-1.8.0_292-8u292-b10-0ubuntu1~20.04-b10

+1 :green_heart:
spotbugs
1m 12s

trunk passed

+1 :green_heart:
shadedclient
20m 39s

branch has no errors when building and testing our client artifacts.

_ Patch Compile Tests _

+1 :green_heart:
mvninstall
0m 38s

the patch passed

+1 :green_heart:
compile
0m 39s

the patch passed with JDK Ubuntu-11.0.11+9-Ubuntu-0ubuntu2.20.04

+1 :green_heart:
javac
0m 39s

the patch passed

+1 :green_heart:
compile
0m 32s

the patch passed with JDK Private Build-1.8.0_292-8u292-b10-0ubuntu1~20.04-b10

+1 :green_heart:
javac
0m 32s

the patch passed

+1 :green_heart:
blanks
0m  0s

The patch has no blanks issues.

+1 :green_heart:
checkstyle
0m 20s

the patch passed

+1 :green_heart:
mvnsite
0m 37s

the patch passed

+1 :green_heart:
javadoc
0m 18s

the patch passed with JDK Ubuntu-11.0.11+9-Ubuntu-0ubuntu2.20.04

+1 :green_heart:
javadoc
0m 27s

the patch passed with JDK Private Build-1.8.0_292-8u292-b10-0ubuntu1~20.04-b10

+1 :green_heart:
spotbugs
1m 13s

the patch passed

+1 :green_heart:
shadedclient
20m  8s

patch has no errors when building and testing our client artifacts.

_ Other Tests _

+1 :green_heart:
unit
2m 20s

hadoop-aws in the patch passed.

+1 :green_heart:
asflicense
0m 34s

The patch does not generate ASF License warnings.

87m 35s

Subsystem
Report/Notes

Docker
ClientAPI=1.41 ServerAPI=1.41 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-3826/1/artifact/out/Dockerfile

GITHUB PR
https://github.com/apache/hadoop/pull/3826

Optional Tests
dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient spotbugs checkstyle codespell

uname
Linux cd8cf2c9f60a 4.15.0-112-generic #113-Ubuntu SMP Thu Jul 9 23:41:39 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
dev-support/bin/hadoop.sh

git revision
trunk / b9af275d587ee542936869d58035f8c3fd8d83c4

Default Java
Private Build-1.8.0_292-8u292-b10-0ubuntu1~20.04-b10

Multi-JDK versions
/usr/lib/jvm/java-11-openjdk-amd64:Ubuntu-11.0.11+9-Ubuntu-0ubuntu2.20.04 /usr/lib/jvm/java-8-openjdk-amd64:Private Build-1.8.0_292-8u292-b10-0ubuntu1~20.04-b10

Test Results
https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-3826/1/testReport/

Max. process+thread count
747 (vs. ulimit of 5500)

modules
C: hadoop-tools/hadoop-aws U: hadoop-tools/hadoop-aws

Console output
https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-3826/1/console

versions
git=2.25.1 maven=3.6.3 spotbugs=4.2.2

Powered by
Apache Yetus 0.14.0-SNAPSHOT https://yetus.apache.org

This message was automatically generated.

Thanks @ayushtkn and @tomscut for reviewing it.

@ashutoshcipher Thanks for your contribution. @ayushtkn @tomscut Thanks for your review! Merged


Enhance sync logging and output messages

We often get reports that rippled "isn't synching" or "is having synch problems". It's frequently unclear whether this means RPC commands are getting an error like "noCurrent", the validated ledger age gets high, the server state changes, or something else entirely.
We should improve our current sync message output with more information and better logging. For example, during sync we should have % output.
Exported from RIPD-865

there should be definitely progress indicator

@thejohnfreeman is this something we could pick up alongside forward ledger replay?

It should be possible (and, I would think, easy) for the server to suppress outputting a bunch of "benign" log messages until after the first time it transitions to a fully-synced state. This would definitely be an improvement for syncing behavior.


Reduce spread of [GeneralWebHook] support

Most of the WebHook constraints and filters do runtime look-ups (Linq queries) to find their metadata. This is decentralized even though it's not required for anything but actions with [GeneralWebHook] applied. Thought is to instead apply specific constraints and filters when processing the application model.
For the [GeneralWebHook] case, use different constraint and filter constructors that pass a new interface. That interface would hide the runtime lookup behind its facade. When processing a request, constraints and filters would use the interface to grab the metadata they need, then proceed in the normal (receiver-specific) way.
Should not repeat any requirements the application model code enforces in the code for the [GeneralWebHook] case. Instead assume the retrieved metadata is consistent and let the constraints and filters "blow up" if not. This avoids additional code duplication and complexity.

Self-assigning because this needs to be done in the Preview2 milestone. Will otherwise be locked into the current approach.

@mkArtakMSFT doing this may reduce the size of other tasks and issues in this repo a bit. Issue is itself on the S / M border because it should mostly be mechanical.

BTW this is tied to main ASP.NET Core WebHooks 1.0.0 rock because [GeneralWebHook] actions are central to that.

/fyi @rynowak

Any update on the above and associated pull request? is this the last large change which will be going in before the full aspnet core 2.1 release?
Cheers

Any update on the above and associated pull request?

Have been doing other things but will get back to this soon.

is this the last large change which will be going in before the full aspnet core 2.1 release?

Not necessarily. Why do you ask?

Thanks for the update. I've been working on a Webhook that I want to nuget up but have been developing it in this solution to aid with debugging and getting the latest changes as the library has been developing. Just curious how much I'd have to tweak before I can get a preview out based on a stable nuget :-)

Reduced cost to track the review process that remains in this milestone.

c9ab0b4ede


Service Brokers SHOULD remember the state of an operation for a reasonable +amount of time

What is the problem this PR solves?
Closes #359. Obviously, a reasonable amount of time is up for debate. I'm not sure if this is a bad idea or not, especially for a specification!
Checklist:

[x] The swagger.yaml doc has been updated with any required changes
[x] The openapi.yaml doc has been updated with any required changes

About “reasonable time.”
Right now, CF will poll the last_operation endpoint in the worst case scenario every 24h (when Retry-After header is 24h or more) when there is an operation in progress. Any of the successful polls will be recorded in CF DB.
It feels to me like “reasonable time” should be on the same order of magnitude minimum.
So a minimum of 72h perhaps makes sense.
Or did you have in mind an entirely different order of magnitude (like months or years)?

@waterlink Good point. Since Platforms (CF/k8s) will likely have different magnitudes, my original thought was to leave this a little vague, but I'm guessing that you think this is a potentially bad idea!
@jberkhahn any thoughts from svc-cat?

seems fine. svc-cat is currently hardcoded to retry for 7 days with an exponential backoff.

We discussed this on today's call. 'Reasonable' is too subjective. Let's change this to:
Service Brokers SHOULD NOT forget the state of an operation immediately after returning a "succeeded" or "failed" state in case the Platform needs to ask again.

PR updated!


Task/rebase 03 04 23

Rebase of our changes onto upstream/main.
This is a pretty involved change, WIP for now. Still fixing up lots of broken stuff.

Wrong target.. Sry.


added colSpan to Table.Col (as in Table.ColHeader)

Table.Col is missing colSpan property, so I added it.

:tada: This PR is included in version 1.13.1 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


watchers: Fix BGP subscriber potentially getting skipped

It is possible for the BGP speaker subscriber to be skipped in a K8s
node event if the host endpoint is not yet created. This can happen at
the very early stages of Cilium startup, as a K8s node add event is sent
to the K8s watchers as one of the first events It is also often sent
before any endpoints have been generated. If that happends, then the
consequence is that the MetalLB integration is not seeded with the node
labels, which can prevent peering with the BGP routers if the user has
node-selectors defined in their BGP configuration. In other words, the
MetalLB integration would try to match the selectors against empty
labels, which will always fail.
The short term fix is to move the BGP speaker logic slightly above where
the host endpoint logic can return so that it is guaranteed to always be
executed. Longer term, we have an issue
https://github.com/cilium/cilium/issues/15471 to refactor the
subscribers so that they are executed separately, rather than bundled
into one function like (*K8sWatcher).updateK8sNodeV1(). That would have
prevented this bug.
Fixes: d8dbb82bc1 ("daemon, bgp, watchers: Implement LB IP announcement via
BGP")
Fixes: https://github.com/cilium/cilium/issues/16340
Signed-off-by: Chris Tarazi<EMAIL_ADDRESS>Fix bug where users were unable to use node-selectors in the BGP configuration when using BGP support

test-me-please

@joestringer If we had CI coverage with more advanced configuration like setting node-selectors, then we would have very likely caught this. I'll open a PR to add this configuration to the existing test, just so we have regression coverage.

We have approving reviews and passing CI. Marked as ready to merge.


MPC control tuning for speed control? Module: Control

Ubuntu 18.04.4
Apollo 5.5
I am trying to tune MPC control (matrix_q) for speed control. The vehicle speed limit is set to 5 m/s. once the speed reached to 5 m/s, the speed of the vehicle is unstable. means the actual speed goes up and down from the desired speed value (5 m/s).
How to tune MPC control to get stabilized speed speed response.

Control performance, really depends on various factors from your vehicle interface, can bus resolution, actuator/sensor response time and agility as well as the parameter tuning tricks. So there is no simple answer for it. However, for MKZs, we will have autotune cloud based service to address issues like this in next release, so please stay tuned.

Hello colleagues!
I am trying to tune a control module on a real car.
I will try to run both MPC and LQR+PID
I get the following result
In the case of LQR+PID
Good speed control (longitudinal control), but poor lateral control. When cornering, it does not follow the desired trajectory and therefore dynamically turns the steering wheel.
2.in case of MPC
It repeats the trajectory well. Smoothly turns the steering wheel. Provides a comfortable ride. But poor speed control. A very large longitudinal error, also the car does not stop at the required point.
I want to use MPC. So I have questions.
Is it possible to set up longitudinal control for MPC? If so, how?
Is it possible to use MPC for lateral control, but for longitudinal - PID ??


actions 下面没有执行逻辑导致报错

fix: https://github.com/Serverless-Devs/core/pull/100/commits/33d10c4f305dfc5eb53ecd8bf04c3e26bbf2b78d


very slow

0.4s on video

Which detector were you using? Can you provide more details about your hardware configuration and the images that you were using?

@heilaw  I am using CenterNet_Sacaed structure and my PC is GTX 1080 TI.
I just directly test in demo.py by change loading from video. ( I donn't know if opened cuda or not).
But even on CPU, 400ms is till very slow. Yolov3 can get 30-40ms on CUDA, 100ms on CPU.
why CenterNet so time cost anyway?

@heilaw  The video I am using is from MOT with size about 640x480

Thanks for the information.
On our machine also with a 1080Ti, the average inference time of CornerNet-Saccade is 190ms on COCO. I tested CornerNet-Saccade on the video you were using and obtained inference time similar to that on COCO.
I think I need more information so that I can further look into this issue. Are you using Anaconda Python? What is the CUDA version on your machine? It would also be great if you can share your script. Have a nice weekend.

@heilaw  I shall post it tomorrow. But 190ms still very slow in terms of yolov3

If you want a real time detector, you may want to checkout CornerNet-Squeeze instead of CornerNet-Saccade. The average inference time of CornerNet-Squeeze on COCO is 30ms on our machine with a 1080Ti and an Intel Core i7-7700k.

@heilaw  After test, the squeeze net can achieve a promising speed, but with some false detections when inference on a car highway video


[FEATURE] Add support for downloading Spotify songs

Is your feature request related to a problem? Please describe.
At present, Drifty is not capable of downloading Spotify songs from the users' favourite artists.
Describe the solution you'd like.
I would wish to have a feature added to Drifty so that it can download Spotify songs. If it is possible, no login credentials should be required for downloading Spotify songs. If you have any better ideas, please let me know.
Screenshots
No response
Additional information
Those who wish to work on this issue, please comment down below. I will assign you with the task.

Hi, @SaptarshiSarkar12 I would like to contribute!

As @Arush04 has expressed his interest in the issue earlier, so, I would assign @Arush04 .
@sinchana06 can make changes after @Arush04 's PR gets merged.

@Arush04 no longer wants to work on this issue. So, I am assigning the task to @sinchana06.

@SaptarshiSarkar12 I would like to contribute!

If @sinchana06 does not want to work on this issue, then I can assign you (@Priyanshu-bit). Let's wait for his/her reply

I will work on it.

I will work on it.

Okay @sinchana06. You (@sinchana06) can start working.
After @sinchana06's Pull Request gets merged, you (@Priyanshu-bit) can make changes if you want via another PR.
Meanwhile, you (@Priyanshu-bit) can join our discord server to get updates on this project.

Hi can i contribute to this issue?

@neenad99 Sorry, this issue is being actively worked on by @sinchana06.


Refactoring

Hi. This is such a great tool and I'd like it to become easier to use.
I've started to refactor the CompareCommand so re-use should become much simpler. Meaning the git checker can be simplified afterwards.
Mixing file configuration and CLI arguments is what I'm also working on. I'll send a PR when it's ready.

I've started over as there were too many unrelated changes at once. I'll try refactoring a bit more atomically so merging doesn't become an issue.

I'll consider that since #74 has been merged, this can be closed. If not, let me know and I'll reopen.


0.19.0-no-deps version does not run within npm script

Quick Summary:
0.19.0 works on the command line and within the npm script ; 0.19.0-no-deps works on the command line but fails in script. Reverting to<EMAIL_ADDRESS>restores capability
SSCCE
OK:  elm make src/main.elm --output=src/main.js
not OK: in package.json's scripts
   "build1": "elm make src/main.elm --output=src/main.js"

Elm: 0.19.0-no-deps
Browser: n/a
Operating System: Windows 10 Enterprise

Additional Details
command prompt window:
npm run build1

><EMAIL_ADDRESS>build1 C:\Users\...\online
> elm make src/main.elm --output=src/main.js

The process cannot access the file because it is being used by another process.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR<EMAIL_ADDRESS>build1: `elm make src/main.elm --output=src/main.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>build1 script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR!      C:\Users\...\AppData\Roaming\npm-cache\_logs\2019-05-13T22_27_56_184Z-debug.log

I am unclear how to reproduce this based on the information here. Can you include the full package.json file you are using? If there are additional files involved, please share those as well!

Sure!  Here are the steps starting with an empty Windows folder:

npm init (I'm using npm version 6.9.0)
npm install elm
edit package.json to add "build1": "elm make src/main.elm --output=src/main.js"
mkdir src
added src/main.elm using first example in the Elm Guide
npm run build1
elm make src/main.elm --output=src/main.js
elm init
npm run build1
elm make src/main.elm --output=src/main.js

The two npm run build1 lines produce the error above; the first elm make reminds me to run elm init; the second elm make works.
package.json & src/main.elm attached: no-deps.zip

If I then run

npm install<EMAIL_ADDRESS>npm run build1
elm make src/main.elm --output=src/main.js

Both build paths work

Sure!  Here are the steps starting with an empty Windows folder:

npm init (I'm using npm version 6.9.0)
npm install elm
edit package.json to add "build1": "elm make src/main.elm --output=src/main.js"
mkdir src
added src/main.elm using first example in the Elm Guide
npm run build1
elm make src/main.elm --output=src/main.js
elm init
npm run build1
elm make src/main.elm --output=src/main.js

The two npm run build1 lines produce the error above; the first elm make reminds me to run elm init; the second elm make works.
package.json & src/main.elm attached: no-deps.zip

If I then run

npm install<EMAIL_ADDRESS>npm run build1
elm make src/main.elm --output=src/main.js

Both build paths work

Thanks, I am asking some other folks about this to try to figure out what might be happening. If you want to get some faster assistance, please ask around in the Elm Slack and share what you learn here!

I have tried and failed to reproduce on windows 10 cmd.
I did get an error when running elm make if directory (or its parent directory, etc) does not contain an elm.json file. Adding an elm.json file (by running $ elm init or otherwise) fixes this error.
For example:
$ ls -R
.:
main.js  src

./src:
Main.elm

$ elm make src/Main.elm
-- FILE NOT FOUND --------------------------------------------------------------

You want me to compile this file:

    src/Main.elm

I cannot find it though! Is there a typo?

$ elm init
-- snip --

$elm make src/Main.elm
Dependencies loaded from local cache.
Dependencies ready!
Success! Compiled 1 module.

I get the same error if using an npm build script and I also get the same error using the old elm 19 npm package. I could not reproduce the The process cannot access the file because it is being used by another process. error by following the instructions or otherwise.
I found that including --output=src/main.js made no difference.
Hope that helps!

Let's try to get it down to more of an SSCCE. I am expecting something like this, with everything necessary inline in the thread:
Example
My trouble is demonstrated by the following package.json:
{
  "name": "no-deps",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "build1": "elm init"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "elm": "0.19.0-no-deps"
  }
}

When I run npm run build1 I get an error.
But when I change to "elm": "0.19.0-bugfix6" I do not get an error.

I don't know if that actually manifests the bug you are seeing, but a SSCCE would be something like that. Where the whole problem can be explained in one file.
Please open a fresh issue with that in the initial comment. And please ask around for help on Slack if you are unclear how to proceed!

As one data point, I ran the steps in this comment with two fixes:

The link to the Guide 404'd due to a stray l at the end - I used this one instead
I added "build1" to "scripts" (not to top-level package.json) because otherwise npm run won't find it

Everything worked with no errors.
Here's the package.json I ended up with:
{
  "name": "elminstalltest",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "build1": "elm make src/main.elm --output=src/main.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "elm": "0.19.0-no-deps"
  }
}

Thanks for catching the URL error, @rtfeldman. I appreciated the background idea because I was running VSCode as well with the Elm plugin. I rebooted and only ran the command line version, but it still failed.

Thanks for the SSCCE, @panthus


New version: yt-dlp.yt-dlp.nightly version 2<IP_ADDRESS>709

Pull request has been created with Komac v1.11.0 :rocket:
Microsoft Reviewers: Open in CodeFlow

For moderators
This account is automated by Github Actions and the source code was created by CoolPlayLin. If you have any questions about any pull request, don't hesitate to ping @Exorcism0666, I'll get a notification.

[!important]
Please carefully review these Pull Request before merging. If it is a Pull Request for removing incorrect content and the URLs are issue, free upon manual checking, please close this Pull Request directly. (It is best to inform Exorcism0666 of the closure.)

良い一日をお過ごしください！

Automatic Validation ended with:

Installation failed with exit code -1978334972

(Automated response - build 542.)

@wingetbot waivers Add Validation-Installation-Error


feature request: ship dashboard/ui by default

Many readers of the kubernetes documentation have come to expect that a dashboard will be automatically included in 1.2 clusters due to this line in the docs:
"By default, the Kubernetes Dashboard is deployed as a cluster addon. For 1.2 clusters it is enabled by default."
We are on 1.2.x but don't include a dashboard by default. This confuses some new users of k8s. Yes we could just PR the upstream docs to say something like:
"By default, the Kubernetes Dashboard is deployed as a cluster addon. For 1.2 clusters deployed via kube-up.sh, it is enabled by default."
But I think that shipping a UI is worth discussing since it is something that upstream has decided to include and that k8s competitors include by default as well.
Perhaps instead of kubernetes-dashboard we could ship a variant of Tectonic Console? @sym3tri @joeatwork

We should ship the open-source dashboard with the base coreos-kubernetes install. Tectonic Console will remain a part of the Tectonic product line.

We ship the dashboard addon now. I think we can close this.


Range window supports DayTime on 3.2+

This PR is to fix window failed unit tests and some window failed integration tests caused by the new DayTime/YearMonth types. See https://github.com/NVIDIA/spark-rapids/issues/3415
With this PR, all window unit tests can pass and most of window integration tests can pass also except
FAILED ../../src/main/python/window_function_test.py::test_window_running_no_part[data:Byte-1000]
FAILED ../../src/main/python/window_function_test.py::test_window_running_no_part[data:Byte-1g]
FAILED ../../src/main/python/window_function_test.py::test_window_running_no_part[data:Short-1000]
FAILED ../../src/main/python/window_function_test.py::test_window_running_no_part[data:Short-1g]
FAILED ../../src/main/python/window_function_test.py::test_window_running_no_part[data:Integer-1000]
FAILED ../../src/main/python/window_function_test.py::test_window_running_no_part[data:Integer-1g]
FAILED ../../src/main/python/window_function_test.py::test_running_float_sum_no_part[1000][APPROXIMATE_FLOAT]
FAILED ../../src/main/python/window_function_test.py::test_running_float_sum_no_part[1g][APPROXIMATE_FLOAT]

I will file a following issue for the failed integration tests.

build

Only nits so I am going to merge this and we can clean it up later if we need to.


Allow setting initial version for "Automatically increment version code"

The "Automatically increment version code" feature is useful for identifying exactly which build testers are using. However, unless your app is brand new, there is a good chance your versionCode is going to be greater than 0, and so the builds created with "Automatically increment version code" will be lower than people are already using. This means that they will have to manually uninstall the existing app before being able to install the newer AppCenter build.
Other CI solutions that have features similar to "Automatically increment version code" also allow you to enter your existing version codes, which allows it to increment using that as a start point. I would very much like to see this feature in AppCenter.

Please implement this asap. For now its not possible to have an automated buildprocess for already existing apps with an higher versioncode.

very interested in this one. i have 4 builds that are typically released together to qa. they all have different builids; would be nice to reset them all to a certain value so they would remain in sync.

I am on the exact same situation. Move the existing app build automation to App Center

Same request, I had to reset the build parameters after a repo change, and now the incremental build id is back at 1 too.

Same request here.

Another request. We are transitioning and existing app to AppCenter and being able to start from our current version number is absolutely necessary.

Same request here.
But I'm using a walkaround that might be useful for someone:

Add VERSION_CODE_SHIFT environment variable into your build configuration. Basically, it's the last build number (CFBundleVersion for iOS and android:versionCode for Android) before you moved to App Center CI.

Update your appcenter-pre-build.sh (https://docs.microsoft.com/en-us/appcenter/build/custom/scripts/) and following lines there:

For iOS:
VERSION_CODE=$((VERSION_CODE_SHIFT + APPCENTER_BUILD_ID))
plutil -replace CFBundleVersion -string "$VERSION_CODE"
$APPCENTER_SOURCE_DIRECTORY/PATH_TO_YOUR_IOS_PROJECT/Info.plist
For Android:
MANIFEST_PATH="$APPCENTER_SOURCE_DIRECTORY/PATH_TO_YOUR_ANDROID_PROJECT/Properties/AndroidManifest.xml"
VERSION_CODE=$((VERSION_CODE_SHIFT + APPCENTER_BUILD_ID))
sed -i "" 's/android:versionCode="[^"]*"/android:versionCode="'$VERSION_CODE'"/' $MANIFEST_PATH

There is no need to turn on Automatically increment version code option. APPCENTER_BUILD_ID will be incremented anyway.

Our app is already in the store and has a history in build number. Now there is no easy way to set base build number apart from writing custom pre build scripts :(

@nrajpurkar how many likes do we need to move this feature to the next stage? :)

Hey @alexshikov, we see this one as one of the top requested features and are definitely looking at it as we determine priorities each month.

Hey @nrajpurkar, any update on this? 😄

Hey @DominicCabral, no definite update for this month's iteration plan, but we intend to get to this very soon. Thanks for your patience!

+1

This is preventing us from using the distribute to app store functionality, that wou would love to use!

just been directed here by app center support, pointing at the workaround above (https://github.com/microsoft/appcenter/issues/21#issuecomment-515260760) @nrajpurkar can you update us with progress on this?

Any update on this? I want to move on appcenter an existing app, and this is a blocker.

Jumping on this as well. I can not use app center for an old project because of this

Up

Up

As app center are ignoring this, here is the solution I am using. It's based on @dkornev one. We are android only at the moment, so only tested there. Should work for IOS with some teaks:

Add VERSION_CODE_SHIFT environment variable into your build configuration. Basically, it's the last build number (android:versionCode for Android) before you moved to App Center CI.
Add an gradle.properties file with your version details, next to the build.gradle:

VERSION_NAME=3.0.0
VERSION_CODE=279

Update build.gradle to use the variables from the gradle.properties:

defaultConfig {
        versionCode Integer.parseInt(VERSION_CODE)
        versionName (VERSION_NAME+VERSION_CODE)
    }

Add an appcenter-pre-build.sh (https://docs.microsoft.com/en-us/appcenter/build/custom/scripts/):

#!/usr/bin/env bash
# This updates the version number to be the build id from app center + the shift up to the build number from the google play store
# Currently we don't shift the ios version number.
# Only runs on master builds

PROJECT_NAME=NameOfProjectOnAppCenter
ANDROID_GRADLE_FILE=$APPCENTER_SOURCE_DIRECTORY/NameOfProjectOnAppCenter/android/app/gradle.properties
INFO_PLIST_FILE=$APPCENTER_SOURCE_DIRECTORY/NameOfProjectOnAppCenter/ios/$PROJECT_NAME/Info.plist
VERSION_CODE=$((VERSION_CODE_SHIFT + APPCENTER_BUILD_ID))
echo "Looking for $ANDROID_GRADLE_FILE to update build version";

if [ -e "$ANDROID_GRADLE_FILE" ]
then
    echo "Updating version code to $VERSION_CODE in $ANDROID_GRADLE_FILE"
    sed -i "" 's/VERSION_CODE=[0-9]*/VERSION_CODE='$VERSION_CODE'/' $ANDROID_GRADLE_FILE

    echo "File content:"
    cat $ANDROID_GRADLE_FILE
fi

@nathfy definitely not ignoring this, but having to continually prioritize across the product each month. We do hope to tackle this in the future.

No

@nathfy would you mind taking a look at our implementation? Your solution is not updating our version code:
grade.properties:
VERSION_NAME=3.0.2
VERSION_CODE=89

app/build.gradle:
    defaultConfig {
        versionCode Integer.parseInt(VERSION_CODE)
        versionName (VERSION_NAME+'.'+VERSION_CODE)
    }

appcenter-pre-build.sh:
ANDROID_GRADLE_FILE=$APPCENTER_SOURCE_DIRECTORY/android/app/gradle.properties
INFO_PLIST_FILE=$APPCENTER_SOURCE_DIRECTORY/ios/Bolt/Info.plist
VERSION_CODE=$((VERSION_CODE_SHIFT + APPCENTER_BUILD_ID))
echo "Looking for $ANDROID_GRADLE_FILE to update build version";

if [ -e "$ANDROID_GRADLE_FILE" ]
then
    echo "Updating version code to $VERSION_CODE in $ANDROID_GRADLE_FILE"
    sed -i "" 's/VERSION_CODE=[0-9]*/VERSION_CODE='$VERSION_CODE'/' $ANDROID_GRADLE_FILE

    echo "File content:"
    cat $ANDROID_GRADLE_FILE
fi

I'm wondering if the $APPCENTER_SOURCE_DIRECTORY is incorrect however our project follows the same structure as appcenter has here in their documentation.
Any help would be greatly appreciated!

@nilofer maybe there is some update on this?

tapping in @elamalani for this

My company switched to GitLab from a different source provider. It is impossible to switch from source provider without creating a new app and now I can't update the build number offset? Not very user friendly to have us create all kinds of custom solutions for something that should be in the product by default.

Would be really useful indeed

This might sound super stupid, but after migrating existing project to another App Center profile I recorded mouse movements and simulated amount of manual start build / cancel build actions to match the number of builds I had before.

@kuzzmi @lucbas Have you tried any approaches like @TomBruyneel's?

PLIST=$APPCENTER_SOURCE_DIRECTORY/......./Info.plist
VERSION="1.0.${APPCENTER_BUILD_ID}"
echo "Setting version to ${VERSION}"

Appending the APPCENTER_BUILD_ID value to your normal defined version would give you that kind of unique identifier per build. Plus, having the build number at the end of a semantic version is a pretty typical versioning standard, like so:

(<IP_ADDRESS>4)
(Major.Minor.Patch.Build)

More info on the environment variable here: https://docs.microsoft.com/en-us/appcenter/build/custom/variables/
And on Build scripts here: https://docs.microsoft.com/en-us/appcenter/build/custom/scripts/

@King-of-Spades unfortunately this workaround is not valid for my case. Because if I transfer the app to another account, I get the same kind of issue - build number won't be unique, because it starts from 1. Although we could bump the version in the plist file, but that requires me to change source code, what I expect not to happen here.
However, in general, Major.Minor.Patch.Build even can be one of the options in App Center - to have this kind of rule in addition to timestamps. But that's a bit different story.

@King-of-Spades unfortunately this workaround is not valid for my case. Because if I transfer the app to another account, I get the same kind of issue - build number won't be unique, because it starts from 1. Although we could bump the version in the plist file, but that requires me to change source code, what I expect not to happen here.
However, in general, Major.Minor.Patch.Build even can be one of the options in App Center - to have this kind of rule in addition to timestamps. But that's a bit different story.

Just create simple post clone script and that's it

@alexandrius I guess the whole topic is about being able to do this in the UI, not the possibility to do this in general with workarounds, but thanks.

@alexandrius I guess the whole topic is about being able to do this in the UI, not the possibility to do this in general with workarounds, but thanks.

You are right sorry I thought this was different issue

Yeah, I was only trying to highlight workarounds that might be less painful & more viable, I realize they don't really "fix" the issue but in some cases might be sufficient.

any updates on this feature/issue?

Adding a vote here.

And another

This would be really useful for apps that are already published.

Adding one more request. here. Setting a base version of the build

Add Other, please add ASAP

More than a year passed/

If it helps anyone, I just brute forced it with a browser script and ran/cancelled the builds to slowly increase the build ID. It's ridiculous solution, but it's the quickest for me right now and doesn't require me to keep maintaining different offsets per product flavor.
function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms))
}

async function waitForEl(sel) {
  const e = document.querySelector(sel);
  if (e) {
    return e;
  }
  await sleep(250);
  return waitForEl(sel);
}

async function runOnce() {
  const buildButton = await waitForEl('[data-test-id=build-now-button]');
  buildButton.click()

  const cancelButton = await waitForEl('[data-test-id=cancel-build-button]');
  cancelButton.click();

  const backButton = await waitForEl('[data-test-id=builds-page] button');
  backButton.click()
  await sleep(1000);
}

async function run(count) {
  for (var i = 0; i < count; i++) {
    await runOnce();
  }
}

Copy&Paste to console and just run(whatever offset you need).

The script above half worked for me, I couldn't get it to do more than 3 at a time before bugging out. It still saved me a lot of time bumping 20 versions
Really disappointing we have to use a random script for such a basic feature. Seems like they aren't even pretending it's a priority anymore.

@nilofer Any updates on this?

I no longer work on App Center. @elamalani to provide support here.

If it helps anyone, I just brute forced it with a browser script and ran/cancelled the builds to slowly increase the build ID. It's ridiculous solution, but it's the quickest for me right now and doesn't require me to keep maintaining different offsets per product flavor. This is what happens when you ignore blockers in your product for way too long 😄
function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms))
}

async function waitForEl(sel) {
  const e = document.querySelector(sel);
  if (e) {
    return e;
  }
  await sleep(250);
  return waitForEl(sel);
}

async function runOnce() {
  const buildButton = await waitForEl('[data-test-id=build-now-button]');
  buildButton.click()

  const cancelButton = await waitForEl('[data-test-id=cancel-build-button]');
  cancelButton.click();

  const backButton = await waitForEl('[data-test-id=builds-page] button');
  backButton.click()
}

async function run(count) {
  for (var i = 0; i < count; i++) {
    await runOnce();
  }
}

Copy&Paste to console and just run(whatever offset you need).

I used @honzababarik's code and it worked. I had to change the timeout to 4000ms though, so it wasn't super fast, but I didn't have to sit and press over 3000 buttons 👍

Guys, is someone working on this feature? It could be so easy:

Place a new numeric entry with some basic input validation
Save button to set the build number manually
Everyone is happy

Increase the version code and version name in Android with appcenter-pre-build script

create appcenter-pre-build.sh and place it under a app folder
Create a environment variable VERSION_CODE  and VERSION_NAME in App Center build settings

Note: You have to manually increase the VERSION_CODE  and VERSION_NAME in App Center build settings on each release to Google Play Store. If you found any solution to increase the VERSION_CODE  and VERSION_NAME after successful build please share.
`
#!/usr/bin/env bash

#This script allows the version code to be changed in an android build.gradle(app directory) file
#Please specify a VERSION_CODE variable and value in the app center build environment variables in
#the app center build settings pane online
#If no VERSION_CODE environment variable is found then the script will exit with
a message to define the version code in app center environment variables
if [ -z "$VERSION_CODE" ]
then
echo "To use this script, define VERSION_CODE in App Center build settings portal under environment variables"
exit
fi
#Identifies the build.gradle file in the app directory
ANDROID_BUILD_GRADLE=$APPCENTER_SOURCE_DIRECTORY/app/build.gradle
if [ -e "$ANDROID_BUILD_GRADLE" ]
then
echo "version code:" $VERSION_CODE
cat $ANDROID_BUILD_GRADLE
echo "Updating version code to $VERSION_CODE in build.gradle file"
#Finds the versionCode in build.gradle and replaces it with the $VERSION_CODE variable
#defined in app center environment variables
sed -i '' 's/versionCode [0-9a-zA-Z -_]*/versionCode '$(($VERSION_CODE))'/' $ANDROID_BUILD_GRADLE
#Displays the newly updated gradle file with updated versionCode
echo "File content:"
cat $ANDROID_BUILD_GRADLE
fi
#change version name
#If no $VERSION_NAME environment variable is found then the script will exit with
a message to define the version code in app center environment variables
if [ -z "$VERSION_NAME" ]
then
echo "To use this script, define VERSION_NAME in App Center build settings portal under environment variables"
exit
fi
#Identifies the build.gradle file in the app directory
ANDROID_BUILD_GRADLE=$APPCENTER_SOURCE_DIRECTORY/app/build.gradle
if [ -e "$ANDROID_BUILD_GRADLE" ]
then
echo "version name:" $VERSION_NAME
cat $ANDROID_BUILD_GRADLE
echo "Updating version name to $VERSION_NAME in build.gradle file"
#Finds the versionName in build.gradle and replaces it with the $VERSION_NAME variable
#defined in app center environment variables
sed -i '' 's/versionName "[0-9.]*"/versionName "'$VERSION_NAME'"/' $ANDROID_BUILD_GRADLE
#Displays the newly updated gradle file with updated versionCode
echo "File content:"
cat $ANDROID_BUILD_GRADLE
fi
`

Also requesting this functionality.
Please allow us to set a value for the auto increment variable version code

Also requesting this functionality.
Please allow us to set a value for the auto increment variable version code

+1

It's been two years, still no changes? The workarounds are painful especially when you work in an agency and have to manage so many mobile projects. It becomes one of the biggest hurdles for us to switch to appcenter.

Bump! Any update on this?

Adding a vote.  This feature is long overdue.

Another vote why this important: We just recently switched over from Bitbucket to Github. Currently it's not possible to reuse build configurations when reconnecting to another Repo Source on AppCenter. However, that's not that big of a deal, since the build is reconfigured quite quickly, as long as you just build a few branches. On the other hand, the reset of APPCENTER_BUILD_ID is pretty annoying in this case. Allowing to change the initial build number in AppCenter would help in a pretty frequent use case an make an already awesome product event better. :)

I am sure this is a business decision by Microsoft Product Managers to not allow such a simple feature because they want you to be locked to using AppCenter only, and not other pipelines interchangeably. It's their business, and it's an economic decision. Developers don't call the shots, product managers with dollar sign eyes do.

Would love to see this feature! Is there any update on it?

@Babazon this feature would help onbording apps to appcenter which already exist, technically speaking, apps which have build versions >1 published in the stores. So, of course it is an economic business decision (because a) it costs money to develop this feature and b) there is a workaround for it which you c) don’t very often have use to be honest).
One point I don’t really like is that there is almost no communication going on 🤷🏼♂

@Babazon this feature would help onbording apps to appcenter which already exist, technically speaking, apps which have build versions >1 published in the stores. So, of course it is an economic business decision (because a) it costs money to develop this feature and b) there is a workaround for it which you c) don’t very often have use to be honest).
One point I don’t really like is that there is almost no communication going on 🤷🏼♂

"don’t very often have use to be honest"
Well, except for every app we already have developed outside Appcenter. Most of them in other words. And the workaround is not a good option, because it is a workaround.
There is however a script in one of these threads that with little tweaking can start and cancel builds for you. (perhaps not viable if your build number is in the triple digits though.

@snios I migrated couple of existing apps to appcenter, some with triple digit build numbers. The workaround is - I still agree - not very cool but it works well. Don't get me wrong: I also want this feature :)

Main thing here is to keep the thread alive, with hope to make this jump up in priority ;D

+1

@elamalani any update?

This issue led me to use timestamp build numbers, but that has problems too, so I created this issue,
https://github.com/microsoft/appcenter/issues/2090
which has just been automatically closed by a bot with no resolution :(

3 years after... I am adding a vote.

+1

If you're having trouble with @honzababarik's solution, increase the sleep interval. 500ms worked for me, +150 in no time https://github.com/microsoft/appcenter/issues/21#issuecomment-692158617
function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms))
}

async function waitForEl(sel) {
  const e = document.querySelector(sel);
  if (e) {
    return e;
  }
  await sleep(500);
  return waitForEl(sel);
}

async function runOnce() {
  const buildButton = await waitForEl('[data-test-id=build-now-button]');
  buildButton.click();

  const cancelButton = await waitForEl('[data-test-id=cancel-build-button]');
  cancelButton.click();

  const backButton = await waitForEl('[data-test-id=builds-page] button');
  backButton.click();
}

async function run(count) {
  for (var i = 0; i < count; i++) {
    await runOnce();
  }
}

Thanks for the js scripts everyone. If you're having issues with it, also try it in Chrome - it was bugging out in Safari but running perfectly in Chrome.
AppCenter really does need to address this properly however .

I figured out to Automate Build numbering & App versioning for Android WITHOUT shell scripting while using Microsoft AppCenter CI/CD pipelines!
You can create environment variables and then use them in the build.gradle file like this:
versionCode System.getenv("VERSION_CODE") ? System.getenv("VERSION_CODE").toInteger() : 201
versionName System.getenv("VERSION_NAME") ? System.getenv("VERSION_NAME").toString() : "1.2.1"

More details in this article

The reason all these non-browser-scripting solutions are bad is because it makes appcenter less understandable. appcenter will show you build 1234, but you have to KNOW that corresponds to an output build of 123400 or 1234+5678. That's bad. The fact that this issue has persisted for so long tells you all you need to know about how Microsoft views appcenter. It's a shame, because there aren't clearly better alternatives, yet.

I had not paid attention to @kornev's comment

There is no need to turn on Automatically increment version code option. APPCENTER_BUILD_ID will be incremented anyway.

Which in fact was stopping the solution I had in place because it was enabled.
This was what I ended up with for Android.
build.gradle

//Environment Variables
def envProperties = new Properties()
try {
    def envPropertiesFile = rootProject.file("env.properties")
    envProperties.load(new FileInputStream(envPropertiesFile))
} catch (FileNotFoundException e) {
    logger.info("env.properties file not found")

    //Defaults
    envProperties['VERSION_BASE_NAME'] = '0.0.0'
    envProperties['VERSION_CODE_PREFIX'] = 1
    envProperties['APPCENTER_BUILD_ID'] = 1
}

def VERSION_BASE_NAME = System.getenv("VERSION_BASE_NAME") ? System.getenv("VERSION_BASE_NAME") : envProperties['VERSION_BASE_NAME']

def VERSION_CODE_PREFIX = System.getenv("VERSION_CODE_PREFIX") ? System.getenv("VERSION_CODE_PREFIX") as Integer : envProperties['VERSION_CODE_PREFIX'] as Integer

def APPCENTER_BUILD_ID = System.getenv("APPCENTER_BUILD_ID") ? System.getenv("APPCENTER_BUILD_ID") as Integer : envProperties['APPCENTER_BUILD_ID'] as Integer

def FINAL_VERSION_CODE = (VERSION_CODE_PREFIX + APPCENTER_BUILD_ID) as Integer

android {

...

defaultConfig {

    setProperty("versionCode", FINAL_VERSION_CODE)
    setProperty("versionName", VERSION_BASE_NAME)
    setProperty("archivesBaseName", "myapp-v" + versionName + "-" + versionCode)

...

}

...
}

env.properties file for local settings
VERSION_BASE_NAME=6.0.1-beta
VERSION_CODE_PREFIX=60100

@nathfy thanks for the pointers. There's a simpler way to do this though. I just added this function to my build.gradle file:
def getVersionCode = { ->
  def isAppCenter = System.getenv('APPCENTER_BUILD_ID') != null;

  if (isAppCenter) {
    try {
      def appcenterBuildId = Integer.parseInt(System.getenv('APPCENTER_BUILD_ID'))
      def versionCodeOffset = Integer.parseInt(System.getenv('VERSION_CODE_OFFSET'))

      return versionCodeOffset + appcenterBuildId
    } catch (e) {
      // ignore
    }
  }

  return 1 // default
}

Then you can just call the function in your config like so:
defaultConfig {
  versionCode getVersionCode()
  versionName "1.0"
}

This workaround my @kuhnza worked for me, but I had to change System.getenv('APPCENTER_BUILD_ID') to System.env.APPCENTER_BUILD_ID  for it to work
def getVersionCode = { ->
  def isAppCenter = System.env.APPCENTER_BUILD_ID != null;

  if (isAppCenter) {
    try {
      def appcenterBuildId = Integer.parseInt(System.env.APPCENTER_BUILD_ID)
      def versionCodeOffset = Integer.parseInt(System.env.VERSION_CODE_OFFSET)

      return versionCodeOffset + appcenterBuildId
    } catch (e) {
      // ignore
    }
  }

  return 1 // default
}

I'm wondering if there's any update on this? We're willing to switch to automated AppCenter builds, and also switch to a paid plan. But this seems to be a bit of a killer, since we're having tons of existing apps, and don't want to integrate workarounds for all of them. Any news on this, AppCenter?

@dani-digital what framework/language are you using to build your app? Check this comment out:
https://github.com/microsoft/appcenter/issues/21#issuecomment-939680846

Thanks @saamerm , that helps for Android. We're having tons of iOS apps also, where this solution won't work, I assume.

It is really a shame that this has survived this long... you figure it has to be just an admin-tool with a sql statement away from complete, but here we all are doing crazy things. I used the browser script above as inspiration for a headless version. To run it, go in Chrome dev tools and then click the "build" button to get the headers and request (you can use "Copy Node fetch request" to make it easiest. Then substitute the values where appropriate:
const fetch = require('isomorphic-fetch');

const headers = {
  // Put all the header values here. Should include "accept", "cookie", "authorization", and etc
};

const baseUrl = 'https://appcenter.ms/api/v0.1/apps/YourOrg/YourApp';
const commitHash = '*** some git hash of the most recent commit which you will see in the BODY of the build request ***';

async function target(targetBuildNumber) {
  let current = 0;
  let startBuild;
  const start = Date.now();
  while (current < targetBuildNumber) {
    const { buildNumber } = await fetch(`${baseUrl}/branches/develop/builds`, {
      headers,
      referrerPolicy: 'no-referrer',
      body: JSON.stringify({ sourceVersion: commitHash }),
      method: 'POST',
    })
      .then((response) => response.json())
      .catch((error) => {
        console.error('Build failed', error);
        return {};
      });
    if (!buildNumber) {
      continue;
    }
    // Don't wait on the cancel, keep on going.
    fetch(`${baseUrl}/builds/${buildNumber}`, {
      headers,
      referrerPolicy: 'no-referrer',
      body: JSON.stringify({ status: 'cancelling' }),
      method: 'PATCH',
    }).catch((error) => console.error('Cancel failed', error));

    if (current === 0) {
      startBuild = buildNumber;
    }
    current = buildNumber;

    const elapsed = Date.now() - start;
    const total = ((targetBuildNumber - startBuild) * elapsed) / (current - startBuild);
    console.log(
      `Build ${buildNumber}/${targetBuildNumber} consumed. Expected completion ${new Date(
        start + total,
      )}`,
    );
  }
}

target(20000).then(() => console.log('Done'));

I made a package for it. You should be able to call it like so:
npx appcenter-build-bot --app [put appcenter url for your app here] --key [put the API key you generated here] build <target-number>

Hey @DominicCabral, no definite update for this month's iteration plan, but we intend to get to this very soon. Thanks for your patience!

Remaining patient. :-)

I got success doing like this:
`
ext.versionCode = 12009;
def getVersionCode = { ->
logger.quiet(':::getVersionCode ==> invoked')
def buildVersionCode = ext.versionCode; // default
def isAppCenter = System.getenv('APPCENTER_BUILD_ID') != null;
logger.quiet(":::getVersionCode isAppCenter ==>  ${isAppCenter} APPCENTER_BUILD_ID ==> ${System.getenv('APPCENTER_BUILD_ID')}")
if (isAppCenter) {
if(System.getenv('USER-DEFINED_VERSION_CODE_OFFSET') == null){
throw new MissingPropertyException("Runing inside AppCenter is necessary inform the USER-DEFINED_VERSION_CODE_OFFSET to avoid versionCode issues on Google Play Store.")
}
def appcenterBuildId = Integer.parseInt(System.getenv('APPCENTER_BUILD_ID'))
def versionCodeOffset = Integer.parseInt(System.getenv('USER-DEFINED_VERSION_CODE_OFFSET'))
buildVersionCode = versionCodeOffset + appcenterBuildId
}
logger.quiet(":::getVersionCode isAppCenter ==>  ${isAppCenter} FINAL VERSION CODE  ==> ${buildVersionCode}");

return buildVersionCode
}
android {
defaultConfig {
    ........
    versionCode getVersionCode()
    ........
}

`

If somebody want use pre-build script i sugest use this for ios to get version from package.json:
`if [ "$APP_CENTER_CURRENT_PLATFORM" == "ios" ]
then
packageJsonVer=$(jq -r ".marketingVersion" $APPCENTER_SOURCE_DIRECTORY/package.json)
plutil -replace CFBundleShortVersionString -string $packageJsonVer $APPCENTER_SOURCE_DIRECTORY/ios/myapp/Info.plist

fi`

I made a package for it. You should be able to call it like so:
npx appcenter-build-bot --app [put appcenter url for your app here] --key [put the API key you generated here] build <target-number>

Nice one! Link to @djMax repo
https://github.com/gas-buddy/appcenter-build-bot
Helped me. Full command:
> docker run --rm -it node /bin/bash
(now inside container)
> cd /tmp
> npm i -D appcenter-build-bot
> npx appcenter-build-bot --app https://appcenter.ms/orgs/XXXXXXX/apps/APP.Android/ --key mykey --branch dev build 1337

+1

Any updates on an official fix for this?

Any updates on this ?

For anyone still hoping, give up. It doesn't seem like it's a feature that will become available at all. Just try to find a workaround.

For anyone still hoping, give up. It doesn't seem like it's a feature that will become available at all. Just try to find a workaround.

Perhaps so. I just like reminding them of their neglect towards one of their promises.
Promise made in 2019
"nilofer commented on Oct 11, 2019
Hey @DominicCabral, no definite update for this month's iteration plan, but we intend to get to this very soon. Thanks for your patience"

@nilofer
Being patient :)

It's been 3 yrs and counting. This fix has not sufficed yet.
Is there any hope on this? @AppCenter

It's been 3 yrs and counting. This fix has not sufficed yet.
Is there any hope on this? @AppCenter

@elamalani will there be a fix for this soon? This was promised a very long time ago.

If your build runs on App Center and you don't want to follow the workaround suggested above, one lazy way to fix this issue is to build and immediately cancel the build until you get to the desired Build ID

build and immediately cancel the build repeatedly until you get to the desired Build ID

We all know this. We are looking for a permanent fix not workarounds. And if your currently on build number 10xxx good luck with that.

Exactly @snios! Sometimes people cannot think outside the box, only look at their problems... Manual repairs will never be a solution...
we are developers, we create solutions to make processes faster and more reliable.
This problem is still open today, it's a shame for Microsoft...

For Christ sake, MSFT....
please find a solution to this for us -:)
it's almost 4 good years.

In May 8, 2022 I posted my solution, its working for me.

While we don't have a native way to define a specific version and increment from there, I created a script to update the android and iOS versions. In my case it's a React Native project and I get the version in the "x.x.x" format defined in the package.json file. After retrieving the version in string format, it is converted into an integer to control store updates.
For iOS it is necessary to update the info.plist file in ios/PROJECT_NAME/info.plist so that it takes project version variables into account.
...
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
...
<key>CFBundleShortVersionString</key>
<string>$(MARKETING_VERSION)</string>
...

Create a file named "appcenter-pre-build.sh" to run before the build as described in https://learn.microsoft.com/en-us/appcenter/build/custom/scripts/#pre-build and add:
#!/bin/bash

# Check if the script is running in AppCenter
if [ -z "$APPCENTER_BUILD_ID" ]; then
  echo "Error: APPCENTER_BUILD_ID environment variable is not defined. The script need be run in AppCenter."
  exit 0
fi

# Function to convert version string to number based on semver
function version_to_number() {
    local VERSION=$1

    MAJOR=$(echo $VERSION | cut -d. -f1)
    MINOR=$(echo $VERSION | cut -d. -f2)
    PATCH=$(echo $VERSION | cut -d. -f3)

    if [ "$PATCH" = "0" ]; then
        PATCH=""
    else
        PATCH=$(echo $PATCH | sed 's/^0*//') # Remove leading zeroes from patch version
    fi

    VERSION_NUMBER=$(expr $MAJOR \* 1000000 + $MINOR \* 10000)
    if [ -n "$PATCH" ]; then
        VERSION_NUMBER=$(expr $VERSION_NUMBER + $PATCH)
    fi

    echo $VERSION_NUMBER
}

VERSION_NAME=$(grep -o '"version": *"[^"]*"' $APPCENTER_SOURCE_DIRECTORY/package.json | sed 's/"version": *"\(.*\)"/\1/' | head -1)
VERSION_NUMBER=$(version_to_number $VERSION_NAME)

GRADLE_FILE="$APPCENTER_SOURCE_DIRECTORY/android/app/build.gradle"

echo "package.json version: $VERSION_NAME"
echo "converted number version: $VERSION_NUMBER"

if [ -f "$GRADLE_FILE" ]; then
  # Update versionCode (eg 1050000)
  awk -v version_number="$VERSION_NUMBER" '/versionCode/ && !done { sub(/[0-9]+/, version_number); done=1 } { print }' $GRADLE_FILE > $GRADLE_FILE.tmp && mv $GRADLE_FILE.tmp $GRADLE_FILE
  echo "versionCode updated successfully in $GRADLE_FILE"

  # Update versionName (eg 1.5.0)
  awk -v version_name="$VERSION_NAME" '/versionName/ && !done { sub(/[0-9]+\.[0-9]+\.[0-9]+/, version_name); done=1 } { print }' $GRADLE_FILE > $GRADLE_FILE.tmp && mv $GRADLE_FILE.tmp $GRADLE_FILE
  echo "versionName updated successfully in $PBXPROJ_FILE"
else
  echo "Error: $GRADLE_FILE not found."
  exit 0
fi

IOS_PROJECT_NAME="PROJECT_NAME"
PBXPROJ_FILE="$APPCENTER_SOURCE_DIRECTORY/ios/$IOS_PROJECT_NAME.xcodeproj/project.pbxproj"

if [ -f "$PBXPROJ_FILE" ]; then
  # Update versionCode (eg 1050000)
  awk -v version_number="$VERSION_NUMBER" '/CURRENT_PROJECT_VERSION/ {sub(/[0-9]+/, version_number)} {print}' $PBXPROJ_FILE > $PBXPROJ_FILE.tmp && mv $PBXPROJ_FILE.tmp $PBXPROJ_FILE
  echo "CURRENT_PROJECT_VERSION updated successfully in $PBXPROJ_FILE"

  # Update versionName (eg 1.5.0)
  awk -v version_name="$VERSION_NAME" '/MARKETING_VERSION/ {sub(/[0-9]+\.[0-9]+\.[0-9]+/, version_name)} {print}' $PBXPROJ_FILE > $PBXPROJ_FILE.tmp && mv $PBXPROJ_FILE.tmp $PBXPROJ_FILE
  echo "MARKETING_VERSION updated successfully in $PBXPROJ_FILE"
else
  echo "Error: $PBXPROJ_FILE not found"
  exit 0
fi

Warning: When App Center detects build scripts for the first time, you must apply the changes by clicking the Save or Save & Build button in the build configuration.
Update the "IOS_PROJECT_NAME" variable with the name of your iOS project. The script uses the version_to_number function to generate the build number based on the version defined in package.json. Validates that the files to modify the versions exist and uses awk to replace the values in the files.
Maybe the script is specific to React Native projects, but it can serve as a reference to help in other scenarios, for example, getting a git tag version or an environment variable.

Still not solved. Still no official plan for the promised fix.

I'm building an Expo app with Prebuild. To workaround this, I added the following to android.versionCode in app.config.js: process.env?.APPCENTER_BUILD_ID ? Number(process.env.APPCENTER_BUILD_ID) + 1000000 : undefined;.

Novembre 2023
The app is currently at 506 for build version. In my AppCenter, it's only 260.
I'd like to be able to use the distribute feature of AppCenter. But i see it takes the BuildNumber of AppCenter instead of the CFBundleVersion.
Can someone recap a working solution for iOS to make it work ?

I don't think Microsoft will implement this as they are going to retire App Center. Time to stop wasting time and effort to convince them and start to migrate to any other platform.


Final modification

This is the final style modifications on different elements.

I'm doing this to make better looking UI, more responsive and easier to interact with.

I'm doing this by changing font sizes, background colors, styling all cards, defining four breakpoints, removing unnecessary elements and links.

I tested and debugged all elements and features and the whole application. everything functioning as expected


Bots Split-alot

Dear Mega, Im having an issue with MOE. i.e the bots split a lot. ex. if i split x2 all the bots split over me. but they cant even eat me. and if i add like 150 bots on the server they get crazy ans splits so much. hoping for a fix soon

@BotCodz #961, been duplicated many times. I'm going to say what megabyte said. Having smarter AI leads to more lag and this has already been suffering with lag due to all of the chunk of code.

@Megabyte918 @FantasyIsBae @MastaCoder 🤔

well,according to my logic, if bots split more, it creates more lag (more cells=more lag) i'm not saying you to make the bots smart af but just fix this splitting crap.please


Add navbar with GitHub link to project

There are some new changes in the main branch, make sure to update your fork before you start working on it. :)

Closing this PR because of no updates for months.


More explicit help how to cycle the cameras

Objective
Scene viewer example has switch camera keys defined, but only one camera was instantiated on the scene.
Solution
More explicit help how to cycle the cameras, explaining that more cameras must be present in loaded scene.

Usually the "switch camera" button is actually used for scenes that have included cameras :) I think the correct fix is actually just to clarify that in the docs of this example.

Current help says that C key switches the cameras, so we should delete one line in help or add one more camera. I've chosen the second option because it is much more fun with second camera.
[~/p/bevy]$ cargo run --example scene_viewer                                                                                [scene-viewer-second-camera-added]

    Finished dev [unoptimized + debuginfo] target(s) in 0.44s
     Running `target/debug/examples/scene_viewer`

Controls:
    MOUSE       - Move camera orientation
    LClick/M    - Enable mouse movement
    WSAD        - forward/back/strafe left/right
    LShift      - 'run'
    E           - up
    Q           - down
    L           - animate light direction
    U           - toggle shadows
    C           - cycle through cameras
    5/6         - decrease/increase shadow projection width
    7/8         - decrease/increase shadow projection height
    9/0         - decrease/increase shadow projection near/far

    Space       - Play/Pause animation
    Enter       - Cycle through animations

The C currently button works as expected as long as there is at least one camera in the loaded scene in addition to the provided camera controller.
So I don't personally understand the need to add additional camera controllers or alter the usage text.

Well, now I guess I understand what happened to me as a beginner. I just run an example, pushed C according to help and nothing happened. I didn't realize that there might be more cameras loaded together with scene, unfortunately the default scene does not contain one, so C key behavior was confusing to me.
There are possible fixes in my mind:

change the help text to something like cycle through cameras, if loaded scene contains any
add camera to scene, which is loaded by default
Add info line with explanation that loaded scene does not contain any camera, so C will not work as expected.

Thank you for explanation.

I think I'd like both 1 and 3 here :)

It would be nice to clarify that camera controls do not work while viewing one of the loaded cameras as well.
Something like
    C           - cycle through the camera controller and any cameras loaded from the scene

might cover all the bases.

Problem is, that even if I add more cameras to the scene, I'm not able to cycle through them using C.
brick.zip

That scene doesn't have any cameras. If it was authored in Blender, did you check the "include cameras" option when exporting the glb?

No, I didn't, thank you very much for hint.

So, only thing what might be missing for now is to change the help text to
    C           - cycle through the camera controller and any cameras loaded from the scene

should I make a new PR with better title or can we use this one?

Just edit this PR's title and description.

Awesome, thanks for talking through this so patiently.
bors r+


Example Needed & nuGet Package?

Can you provide an end-to-end (complete) example for downloading files via a .torrent file using your library?
Do you have a nuGet package also?

Clone the repository
Open the .sln file (Src\TorrentClient.sln)
Open the Program.cs file inside the TorrentClientApp
Change the torrent file path inside the Main method

<EMAIL_ADDRESS>out torrent);

to this
TorrentInfo.TryLoad("Torrent.torrent", out torrent);

Download a .torrrent file
Rebuild the TorrentClientApp (Visual Studio 2017 will take care of everything)
Place the downloaded .torrent file to the torrent-client-for-net\Binaries\TorrentClientApp\ folder
Rename it to Torrent.torrent
Run the TorrentClientApp

Thank you for the help PoLaKoSz  :) Much appreciated. And I'm glad somebody is actually using the library! As for the nuget package, the project is not available via nuget. If you want to include the library in your project I suggest you include a release version of the dll which you can compile yourself or include the entire project in your solution.


[🐞] Unability to change chunkFileNames with vite.build.rollupOptions.chunkFileNames

Which component is affected?
Qwik Runtime
Describe the bug
I believe this was introduce in #6588 @gioboa
In previous versions, I was able to add
  let output: any = {};
  if (!isDev) {
    // Client-specific configuration
    output = {
      // Customize the client build structure
      entryFileNames: ({ name }: any) => {
        if (name.startsWith('entry')) {
          return '[name].js';
        }
        return `build/[name]-[hash].js`;
      },
      chunkFileNames: () => {
        return `build/[name]-[hash].js`;
      },
      assetFileNames: `build/[name]-[hash].[ext]`,
    };
  }

in a vite.config
with
    build: {
    rollupOptions: {
      output,
    },
  },

But now when running preview with it,
I get

x Build failed in 5.55s
TypeError [PLUGIN_ERROR]: [vite-plugin-qwik-post] The "path" argument must be of type string. Received function chunkFileNames
at Object.dirname (node:path:1279:5)
at Object.handler (/Users/maieul/dev/qwik-ui/node_modules/.pnpm/@builder.io+qwik@https+++pkg.pr.new+@builder.io+qwik@7fdea60_@types+node@20.12.12_sass@1.77.4_v2qpm4luyvgabz4seeshjuuzrq/node_modules/@builder.io/qwik/optimizer.cjs:3561:39)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
code: 'PLUGIN_ERROR',
pluginCode: 'ERR_INVALID_ARG_TYPE',
plugin: 'vite-plugin-qwik-post',
hook: 'generateBundle'
}

Reproduction
https://github.com/qwikifiers/qwik-ui
Steps to reproduce

Go to apps/website/vite.config.ts
Uncomment comments
Run preview

System Info
System:
    OS: macOS 14.5
    CPU: (8) arm64 Apple M2
    Memory: 80.64 MB / 24.00 GB
    Shell: 3.7.1 - /opt/homebrew/bin/fish
  Binaries:
    Node: 22.2.0 - /opt/homebrew/bin/node
    npm: 10.7.0 - /opt/homebrew/bin/npm
    pnpm: 9.5.0 - /usr/local/bin/pnpm
    bun: 1.1.0 - ~/.bun/bin/bun
  Browsers:
    Chrome: 126.0.6478.127
    Safari: 17.5

Additional Information
I believe this is caused in packages/qwik/src/optimizer/src/plugins/vite.ts either by removal of
output: normalizeRollupOutputOptions(
            path,
            )

line 337
or type casting in
          const filePath = sys.path.dirname(_.chunkFileNames as string);

line 564

If it's not possible to fix without introducing complexity or fragility in the codebase, perhaps we can provide an option on the qwikVite plugin for the users to change the chunk files names in preview.

Thanks @maiieul  for the feedback.
Would you like to create a PR for that?


support grpc header and mTLS

Pull Request Test Coverage Report for Build 1341

5 of 8 (62.5%)  changed or added relevant lines in 1 file are covered.
17 unchanged lines in 6 files lost coverage.
Overall coverage decreased (-0.2%) to 63.084%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

client/grpc/grpc.go
5
8
62.5%

Files with Coverage Reduction
New Missed Lines
%

core/registry/servicecenter/cache.go
2
43.29%

core/config/sr_config.go
2
0.0%

core/loadbalancer/session_stickiness_strategy.go
2
84.75%

core/options.go
2
85.96%

core/registry/util.go
4
65.63%

client/rest/rest_client.go
5
73.91%

Totals

Change from base Build 1340:
-0.2%

Covered Lines:
5060

Relevant Lines:
8021

💛  - Coveralls


Configurable scan options for nmap

Description:
Configurable scan options for nmap
I have seen many people struggling to set up the nmap device tracker.
This pr will allow to customize the options passed to nmap.
An example of how the Nmap scanner can be customized:
Add the capabilities to Nmap. Be sure to specify the full path to wherever you installed Nmap:
sudo setcap cap_net_raw,cap_net_admin,cap_net_bind_service+eip /usr/bin/nmap
And you can set up the device tracker as
- platform: nmap_tracker
  hosts: <IP_ADDRESS>-25
  scan_options: " --privileged -sP "

Checklist:
If user exposed functionality or configuration variables are added/changed:

[ ] Documentation added/updated in home-assistant.github.io

If the code communicates with devices, web services, or third-party tools:

[x] Local tests with tox run successfully. Your PR cannot be merged unless tests pass
[x] New dependencies have been added to the REQUIREMENTS variable (example).
[x] New dependencies are only imported inside functions that use them (example).
[x] New dependencies have been added to requirements_all.txt by running script/gen_requirements_all.py.
[x] New files were added to .coveragerc.

Please remember to document the new option, especially the default :-)


Can it support MultiPath TCP (MPTCP)?

Suppose I have a system A and a system B, both running Debian, and I set up tunnels tun1 and tun2 between them using this software. If both A and B activate the MPTCP module and initiate load balancing on tun1 and tun2, a problem arises. A single TCP stream can only travel through one tunnel, such as tun1, which may have limited bandwidth of only 1Mbps, leading to poor network performance. However, I have another 1Mbps available on tun2. If the tunnel was capable of supporting MPTCP, then the single TCP flow could utilize both tun1 and tun2 simultaneously. Would this setup be supported?

tinyfecvpn：

sends udp packet
encapsulats IP packet

there is nothing tinyfecVPN can utilize from MPTCP IMO.
In other words. MPTCP can run inside tinyfecVPN, but tinyfecVPN cannot run on top of MPTCP.


Drag and drop not working

I´m testing version 0.6 and notice that the drag and drop is not working anymore as it was in versions 0.4 and 0.5

Unfortunately, the drag&drop feature is currently broken on master:
https://issues.jboss.org/browse/UF-277
We will try to provide a fix asap.

David -
On Aug 1, 2016 8:04 AM, "carlosedubarreto"<EMAIL_ADDRESS>wrote:

I´m testing version 0.6 and notice that the drag and drop is not working
anymore as it was in versions 0.4 and 0.5
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/dashbuilder/dashbuilder/issues/215, or mute the
thread
https://github.com/notifications/unsubscribe-auth/ACUTj7jO3RLYaS2YxRP_8VUJcyTydYYVks5qbYxggaJpZM4JZRZ8
.

when you plan to fix this bug?

is there any workaround to dashboard(other than programming using API). This is a major blocker

You can use the new content management features (still under heavy development though, see => https://www.youtube.com/watch?v=51ETHDJsjtA). Actually, this new approach for creating dashboard will replace the old one.

Looks very good :). Is there a branch where I can try this out. Could you please share few other youtube links of the upcoming features. Thanks

Ongoing development features are hosted in master branch.
Navigation widgets => https://www.youtube.com/watch?v=eItjBB4j0CY
Custom Metric displayers => https://www.youtube.com/watch?v=Mto0qvjkNoI
Security management => https://www.youtube.com/watch?v=S4HCTuAmqGA


Phlow v1.1.1 is not working on my computer

private repos are not supported in the released version.
it's fixed in #81


Undocumented: orient2d returns -0, not +0

For all the cases I tested, orient2d returns -0, not +0 as I would have assumed, since the readme doesn't specify a sign. Is this always the case? If not, under what circumstances would it not be?
One interesting (although possibly out-of-scope) idea for remedying this asymmetry for collinear points would be to return +0 if b is between a and c, and -0 otherwise (or vice versa). That would allow distinguishing between 0º and 180º angles, which might be kinda cool. (Like for example, one use-case for that could be checking the convexity of a polygon... you can make only same-sign turns and 0º turns, but not 180º turns). Effectively that would mean the half-open interval [0º, 180º) would be positive-signed and [180º, 360º) would be negative-signed, which seems a bit more symmetric & informative than the current behavior of the open interval (0º, 180º) positive-signed and closed interval [180º, 360º] negative-signed. Food for thought 😄

It just hit me: I'm guessing this is a side-effect of your reversal of the Y-axis, since the original predicates code doesn't do this.

Closing as 2 wrongs make a right.


Hope to default to only showing thumbnail images on the list page, and only load the original image after clicking on the picture.

Describe the solution you'd like
After uploading the original image, the page loading becomes very slow. If loading thumbnail images, the speed will be faster and the experience will be better.
Type of feature
User Experience (UX)
Additional context
No response

Duplicate of https://github.com/usememos/memos/issues/3685