Docker image & e2e

Hello,
I'm making a docker image to build and test angular cli based applications.
For now my Dockerfile is :
FROM node:7

# Install angular-cli
# https://www.npmjs.com/package/angular-cli
RUN npm install -g<EMAIL_ADDRESS>
# Install watchman
# https://ember-cli.com/user-guide/#watchman
RUN npm install -g watchman

# Install typings
# https://github.com/typings/typings
RUN npm install -g typings

# Install Yarn
# https://yarnpkg.com/en/docs/install
RUN apt-key adv --fetch-keys http://dl.yarnpkg.com/debian/pubkey.gpg && \
echo "deb http://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \
apt-get update && apt-get install yarn

WORKDIR /workspace

It works pretty fine but ng e2e doesn't work, I've got this message for chrome :
webpack: Compiled successfully.
[14:41:30] I/direct - Using ChromeDriver directly...
[14:41:30] I/launcher - Running 1 instances of WebDriver
[14:41:30] E/launcher - Server terminated early with status 127
[14:41:30] E/launcher - Error: Server terminated early with status 127
    at /workspace/node_modules/selenium-webdriver/remote/index.js:242:20
    at ManagedPromise.invokeCallback_ (/workspace/node_modules/selenium-webdriver/lib/promise.js:1379:14)
    at TaskQueue.execute_ (/workspace/node_modules/selenium-webdriver/lib/promise.js:2913:14)
    at TaskQueue.executeNext_ (/workspace/node_modules/selenium-webdriver/lib/promise.js:2896:21)
    at asyncRun (/workspace/node_modules/selenium-webdriver/lib/promise.js:2775:27)
    at /workspace/node_modules/selenium-webdriver/lib/promise.js:639:7
    at process._tickCallback (internal/process/next_tick.js:103:7)
From: Task: WebDriver.createSession()
    at Function.createSession (/workspace/node_modules/selenium-webdriver/lib/webdriver.js:329:24)
    at Driver (/workspace/node_modules/selenium-webdriver/chrome.js:778:38)
    at Direct.getNewDriver (/workspace/node_modules/protractor/built/driverProviders/direct.js:70:26)
    at Runner.createBrowser (/workspace/node_modules/protractor/built/runner.js:198:43)
    at /workspace/node_modules/protractor/built/runner.js:277:30
    at _fulfilled (/workspace/node_modules/q/q.js:834:54)
    at self.promiseDispatch.done (/workspace/node_modules/q/q.js:863:30)
    at Promise.promise.promiseDispatch (/workspace/node_modules/q/q.js:796:13)
    at /workspace/node_modules/q/q.js:556:49
    at runSingle (/workspace/node_modules/q/q.js:137:13)
    at flush (/workspace/node_modules/q/q.js:125:13)
    at _combinedTickCallback (internal/process/next_tick.js:67:7)
    at process._tickCallback (internal/process/next_tick.js:98:9)
[14:41:30] E/launcher - Process exited with error code 199

And for firefox I have :
webpack: Compiled successfully.
[14:44:40] I/direct - Using FirefoxDriver directly...
[14:44:40] I/launcher - Running 1 instances of WebDriver
[14:44:41] I/update - chromedriver: file exists /workspace/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.26linux64.zip
[14:44:41] I/update - chromedriver: unzipping chromedriver_2.26linux64.zip
[14:44:41] I/update - chromedriver: setting permissions to 0755 for /workspace/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.26
[14:44:41] I/update - chromedriver: v2.26 up to date
[14:44:41] E/launcher - Could not locate Firefox on the current system
[14:44:41] E/launcher - Error: Could not locate Firefox on the current system
    at found.then.found (/workspace/node_modules/selenium-webdriver/firefox/binary.js:115:11)
From: Task: WebDriver.createSession()
    at Function.createSession (/workspace/node_modules/selenium-webdriver/lib/webdriver.js:329:24)
    at Driver (/workspace/node_modules/selenium-webdriver/firefox/index.js:386:38)
    at Direct.getNewDriver (/workspace/node_modules/protractor/built/driverProviders/direct.js:76:26)
    at Runner.createBrowser (/workspace/node_modules/protractor/built/runner.js:198:43)
    at /workspace/node_modules/protractor/built/runner.js:277:30
    at _fulfilled (/workspace/node_modules/q/q.js:834:54)
    at self.promiseDispatch.done (/workspace/node_modules/q/q.js:863:30)
    at Promise.promise.promiseDispatch (/workspace/node_modules/q/q.js:796:13)
    at /workspace/node_modules/q/q.js:556:49
    at runSingle (/workspace/node_modules/q/q.js:137:13)
    at flush (/workspace/node_modules/q/q.js:125:13)
    at _combinedTickCallback (internal/process/next_tick.js:67:7)
    at process._tickCallback (internal/process/next_tick.js:98:9)
[14:44:41] E/launcher - Process exited with error code 199

What am I missing ? For firefox, I guess I'm supposed to install it but node image is based on debian so there is iceweasel package instead of firefox.
What do you suggest ?
Thanks !

I used to have a Docker image (also based on node:7) with iceweasel installed. This worked with CLI versions up to beta.30. Since version 5 (which is the version used since beta.31) protractor uses the marionette driver by default for firefox which is not compatible with iceweasel. Also the webdriver update run by the CLI does not install the marionette driver (it's run with flag --gecko=false). Protractor has a config flag to use the legacy driver but it cannot be used when a custom command executor is used, which the CLI requires.
My fix is to install chrome in the image and configure protractor to run it with the --no-sandbox flag (see https://hub.docker.com/r/weboaks/node5-karma-protractor-chrome/). My docker file is
FROM node:7

# Install yarn
RUN \
  wget -q -O - https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
  echo "deb http://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list && \
  apt-get update && \
  apt-get install -y yarn

# Install Chromium & Xvfb
RUN \
  wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \
  echo "deb http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google.list && \
  apt-get update && \
  apt-get install -y google-chrome-stable xvfb && \
  rm -rf /var/lib/apt/lists/*

 # Install Angular CLI
 RUN yarn global add @angular/cli

Then there is also the issue that ng e2e does currently not work with yarn (see https://github.com/angular/angular-cli/pull/4597#issuecomment-279682911 for workaround).

I tried to use your chromium install but now I have this message :
webpack: Compiled successfully.
[08:31:08] I/direct - Using ChromeDriver directly...
[08:31:08] I/launcher - Running 1 instances of WebDriver
[08:31:08] I/update - chromedriver: file exists /workspace/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.26linux64.zip
[08:31:08] I/update - chromedriver: unzipping chromedriver_2.26linux64.zip
[08:31:08] E/launcher - ENOENT: no such file or directory, rename '/workspace/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver' -> '/workspace/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.26'
[08:31:08] E/launcher - Error: ENOENT: no such file or directory, rename '/workspace/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver' -> '/workspace/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_2.26'
    at Object.fs.renameSync (fs.js:774:18)
    at unzip (/workspace/node_modules/protractor/node_modules/webdriver-manager/lib/cmds/update.ts:229:6)
    at /workspace/node_modules/protractor/node_modules/webdriver-manager/lib/cmds/update.ts:199:7
    at _fulfilled (/workspace/node_modules/q/q.js:834:54)
    at self.promiseDispatch.done (/workspace/node_modules/q/q.js:863:30)
    at Promise.promise.promiseDispatch (/workspace/node_modules/q/q.js:796:13)
    at /workspace/node_modules/q/q.js:604:44
    at runSingle (/workspace/node_modules/q/q.js:137:13)
    at flush (/workspace/node_modules/q/q.js:125:13)
    at _combinedTickCallback (internal/process/next_tick.js:67:7)
    at process._tickCallback (internal/process/next_tick.js:98:9)
[08:31:08] E/launcher - Process exited with error code 199

There is an issue with ng e2e when using yarn to install dependencies. Its fixed in https://github.com/angular/angular-cli/commit/97bfb1253c1fd787fc2acdb8fb365212adb3e56d and I guess it will be in RC1. Meanwhile you have to do yarn run webdriver-manager -- update --standalone false --gecko false first and then run your e2e tests with ng e2e --webdriver-update false.

I tried to use your image, I've got this message :
webpack: Compiled successfully.
[23:34:48] I/direct - Using ChromeDriver directly...
[23:34:48] I/launcher - Running 1 instances of WebDriver
[23:35:49] E/launcher - unknown error: Chrome failed to start: exited abnormally
  (Driver info: chromedriver=2.26.436382 (70eb799287ce4c2208441fc057053a5b07ceabac),platform=Linux 4.9.8-moby x86_64)
[23:35:49] E/launcher - WebDriverError: unknown error: Chrome failed to start: exited abnormally
  (Driver info: chromedriver=2.26.436382 (70eb799287ce4c2208441fc057053a5b07ceabac),platform=Linux 4.9.8-moby x86_64)
    at Object.checkLegacyResponse (/workspace/node_modules/selenium-webdriver/lib/error.js:639:15)
    at parseHttpResponse (/workspace/node_modules/selenium-webdriver/http/index.js:538:13)
    at client_.send.then.response (/workspace/node_modules/selenium-webdriver/http/index.js:472:11)
    at ManagedPromise.invokeCallback_ (/workspace/node_modules/selenium-webdriver/lib/promise.js:1379:14)
    at TaskQueue.execute_ (/workspace/node_modules/selenium-webdriver/lib/promise.js:2913:14)
    at TaskQueue.executeNext_ (/workspace/node_modules/selenium-webdriver/lib/promise.js:2896:21)
    at asyncRun (/workspace/node_modules/selenium-webdriver/lib/promise.js:2820:25)
    at /workspace/node_modules/selenium-webdriver/lib/promise.js:639:7
    at process._tickCallback (internal/process/next_tick.js:103:7)
From: Task: WebDriver.createSession()
    at Function.createSession (/workspace/node_modules/selenium-webdriver/lib/webdriver.js:329:24)
    at Driver (/workspace/node_modules/selenium-webdriver/chrome.js:778:38)
    at Direct.getNewDriver (/workspace/node_modules/protractor/built/driverProviders/direct.js:70:26)
    at Runner.createBrowser (/workspace/node_modules/protractor/built/runner.js:198:43)
    at /workspace/node_modules/protractor/built/runner.js:277:30
    at _fulfilled (/workspace/node_modules/q/q.js:834:54)
    at self.promiseDispatch.done (/workspace/node_modules/q/q.js:863:30)
    at Promise.promise.promiseDispatch (/workspace/node_modules/q/q.js:796:13)
    at /workspace/node_modules/q/q.js:556:49
    at runSingle (/workspace/node_modules/q/q.js:137:13)
    at flush (/workspace/node_modules/q/q.js:125:13)
    at _combinedTickCallback (internal/process/next_tick.js:67:7)
    at process._tickCallback (internal/process/next_tick.js:98:9)
[23:35:49] E/launcher - Process exited with error code 199

I changed protractor.conf, i put :
capabilities: {
    'browserName': 'chrome',
    'chromeOptions': {
      args: ['--no-sandbox']
    }
}

In my package.json I have :
"scripts": {
    "e2e": "ng e2e --webdriver-update false",
    "pree2e": "yarn run webdriver-manager -- update --standalone false --gecko false"
}

And I run the command npm run e2e
Did I miss something ?

To launch Chrome in a headless environment you need a virtual display (sorry forgot about that...). You need to install Xvfb (which is done together with Chrome in my Dockerfile). You then do xvfb :99 -ac & and export DISPLAY=:99.0 before launching the tests. See https://github.com/hoatle/docker-angular-cli for a way to start Xvfb at container startup (they add an init.d script for Xvfb and start the deamon via a Docker entrypoint script).

Good answer by @dasch8, thanks!

@dasch8 This is not true anymore : https://developers.google.com/web/updates/2017/04/headless-chrome
No need for Xvfb now.

@Tenmak Thanks for the info!
For anyone interested, I built a relatively small Angular CI Docker image based on node:8-alpine.
The repo is here and the image is on GitLab's Docker registry: registry.gitlab.com/dasch8/angular-ci.

You're awesome. Thank you :)


Removed the Unique ID part

Unique ID was removed from the dependencies

Learn Build status updates of commit 6faba30:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

articles/defender-for-cloud/quickstart-onboard-gcp.md
:white_check_mark:Succeeded

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

#sign-off


Use parent get query or @key directive?

** Which Category is your question related to? **
GraphQL transform
** What AWS Services are you utilizing? **
AppSync, DynamoDB
** Provide additional details e.g. code snippets **
I have an Account object and Document object defined with a 1-to-many named connection with createdAt sortField.
type Account @model
{
  id: ID!
  # ...
  documents: [Document!]
    @connection(name: "AccountDocuments", sortField: "createdAt")
  # ...
}

and
type Document @model
{
  id: ID!
  account: Account!
    @connection(name: "AccountDocuments", sortField: "createdAt")
  createdAt: AWSDateTime
  # ...
}

In my UI, Documents is a separate tab so I'm running the getAccount query with the account details needed for the main tab on load.
query GetAccount($id: ID!) {
  getAccount(id: $id) {
    id
    # ... other fields needed
  }
}

When the Documents tab is selected I run the getAccount again but with only the documents.
query GetAccount($id: ID!) {
  getAccount(id: $id) {
    documents {
      items {
        id
        # ... fields needed
      }
    }
  }
}

I went with this approach because I don't think I need another @key if AppSync already has the access pattern to the data. Are there any implications like cost or performance to using the parent object to query for the children?
For this use case above, is it better to define a @key or just use what's already created from the @connection?

@aireater There is nothing wrong with using the parent/child relationship created by @connection as long as you do not try to change the structure of the @connection. We found that in practice users had trouble with @connection because it manages the GSI under the hood and then when you tried to change the structure of the @connection throws an errors because it is unable to move from state A -> state B even though the table definition is entirely valid, has it been created from scratch. The @key directive
I discuss how to move from a @connection to a @key in #1656 and perhaps that helps provide more context.


Fetching commits and trees from cache server...Failed.

When running git pull on os repo, I am getting following error
PS:4 [E:\o4\src] > git pull
Authenticating...Succeeded
Querying remote for config...Succeeded
Fetching commits and trees from cache server...Failed. Run 'gvfs log E:\o4' for more info.
Prefetching commits and trees failed: Failed to download prefetch packs
remote: This repository requires GVFS. Ensure the version of git you are using supports GVFS.
fatal: protocol error: bad pack header
Command took 4:21.045.
Attaching the log file. Please help me understand what the issue is.
gvfs_prefetch_20211020_003802.log

This error message means you have probably installed a version of Git that is not from the microsoft/git fork. Please run git version to verify.
To resolve the issue, install v2.33.0.vfs.0.0.


Add CustomERC721 with Delayed Reveal and Lazy Mint

Describe Changes

Adds new CustomERC721 contract with delayed reveal, lazy mint, and a countdown timer
Add tests for CustomERC721 for reveal and countdown logic
Add new deploy script for the new contract type
Set the new contract type in the registry
Update the drops price oracle on base to use the Uniswap V3 QuoterV2 contract https://docs.uniswap.org/contracts/v3/reference/deployments/base-deployments
Add new tests for the DropsPriceOracleBase
Add a MockQuoterV2 for tests

Here's an example on tenderly of the price conversion via QuoterV2 https://dashboard.tenderly.co/attar/holograph/simulator/70385181-2b22-4a5f-bdb6-96813a5b51fd?trace=<IP_ADDRESS>
Checklist before requesting a review

[ ] I have performed a self-review of my code
[ ] Code styles have been enforced
[ ] All Hardhat tests are passing

NOTE: Foundry tests are failing in CI/CD right now due to some issues we need to work out with Foundry / Anvil running in Github actions, but the tests are passing on local environments


4459  Added my tenzies game

#4459

Close #4459 >

Checklist:

[X] I have mentioned the issue number in my Pull Request.
[X] I have commented my code, particularly in hard-to-understand areas
[X] I have created a helpful and easy to understand README.md

@MohitGupta121 , @TusharKesarwani  please review it

@MohitGupta121 done the changes now there is only single project in this pr

@MohitGupta121  @TusharKesarwani now please review it now it has only 1 project i am sorry for my mistake

@MohitGupta121 @TusharKesarwani please review it

@MohitGupta121 now there is only single project please review it

@MohitGupta121 please review it

@TusharKesarwani  @MohitGupta121  kindly review it now it has only one game


NodeJS throws a secure crypto unusable, insecure Math.random not allowed error

I'm using the library inside a React Inertia project with server-side rendering, but i get the following error when trying to render the <SlateToReact /> component:
[09:31:43.471] ERROR (11326): secure crypto unusable, insecure Math.random not allowed
    request_id: "zfqx8bkyz5797njolcbra6dl"
    x-request-id: "zfqx8bkyz5797njolcbra6dl"
    err: {
      "type": "Error",
      "message": "secure crypto unusable, insecure Math.random not allowed",
      "stack":
          Error: secure crypto unusable, insecure Math.random not allowed
              at createError (file:///.../node_modules/.pnpm/@slate-serializers+react@2.1.6/node_modules/@slate-serializers/react/index.esm.js:1203:15)
              at detectPrng (file:///.../node_modules/.pnpm/@slate-serializers+react@2.1.6/node_modules/@slate-serializers/react/index.esm.js:1280:11)
              at factory (file:///.../node_modules/.pnpm/@slate-serializers+react@2.1.6/node_modules/@slate-serializers/react/index.esm.js:1284:20)
              at file:///.../node_modules/.pnpm/@slate-serializers+react@2.1.6/node_modules/@slate-serializers/react/index.esm.js:1293:12

I'm running on NodeJS 22.
I did some digging and it seems slate-serializers use ulid but this library hasn't been updated since 6 years already. There are obviously some forks like ulidx, but it needs some testing.

Thanks @Bricklou ! Also appreciate the suggestion of a library to replace it with - tests pass with this replacement so I am happy!


Service monitoring uses too many timeseries

I just started using the service collector but it's already ranked as the highest in cardinality.

This because each Windows service takes 8 time series just for the state alone.
wmi_service_state{name="axinstsv",state="continue pending"} 0
wmi_service_state{name="axinstsv",state="pause pending"} 0
wmi_service_state{name="axinstsv",state="paused"} 0
wmi_service_state{name="axinstsv",state="running"} 0
wmi_service_state{name="axinstsv",state="start pending"} 0
wmi_service_state{name="axinstsv",state="stop pending"} 0
wmi_service_state{name="axinstsv",state="stopped"} 1
wmi_service_state{name="axinstsv",state="unknown"} 0

Same thing for the start mode:
wmi_service_start_mode{name="winrm",start_mode="auto"} 1
wmi_service_start_mode{name="winrm",start_mode="boot"} 0
wmi_service_start_mode{name="winrm",start_mode="disabled"} 0
wmi_service_start_mode{name="winrm",start_mode="manual"} 0
wmi_service_start_mode{name="winrm",start_mode="system"} 0

And finally the largest one:
wmi_service_status{name="winrm",status="degraded"} 0
wmi_service_status{name="winrm",status="error"} 0
wmi_service_status{name="winrm",status="lost comm"} 0
wmi_service_status{name="winrm",status="no contact"} 0
wmi_service_status{name="winrm",status="nonrecover"} 0
wmi_service_status{name="winrm",status="ok"} 1
wmi_service_status{name="winrm",status="pred fail"} 0
wmi_service_status{name="winrm",status="service"} 0
wmi_service_status{name="winrm",status="starting"} 0
wmi_service_status{name="winrm",status="stopping"} 0
wmi_service_status{name="winrm",status="stressed"} 0
wmi_service_status{name="winrm",status="unknown"} 0

Proposal
This could be reduced to 3 time series per Windows service by giving each state a different number.
Total reduction of 22 time series per Window service. With and average of 200 Windows services this would reduce the total amount of time series with 4000 time series. Seems worth the trouble to me.
Start mode:
0 == auto
1 == boot
2 == disabled
3 == manual
4 == system
E.g. this service would be set to manual
wmi_service_start_mode{name="winrm"} 3

Using the above proposed method would also simplify an alert query where I would like to see all Windows services that are set to automatic but are not running.
wmi_service_state == 0 and wmi_service_startup_mode == 0

Is there any reasoning behind this that I'm missing?

Hi @basroovers,
Thanks for the analysis! And yes, it is rather heavy, and we currently log a warning about this if the service list isn't given a filter to keep this number down. More of a workaround than a solution, granted.
As for reasoning, the "0/1 gauge" pattern is quite common in Promtheus, and I believe this type of magic numbers are considered worse, in general. It's fair to question if this is the right choice here of course, as the impact is fairly large, as you point out.
@SuperQ, the systemd collector on the node_exporter has a similar structure (and yields ~1000 series per node without tuning on my machines), has there been any discussion on this type of format there, and what arguments presented?

Prometheus doesn't have any kind of first-class support for ENUMs. Doing queries against integers can be much more difficult. So the common pattern in Prometheus is to map ENUM values to labels and use a bit-mask approach.
For example, this is exactly how we translate SNMP ENUMs into Prometheus. You get the int value by default, but can select EnumAsStateSet or EnumAsInfo. The state set is the same as we're doing here. Each value gets a boolean label. This works well because you can much more easily do joins, don't have to worry about absent metrics. Info-style will only include the label value and a 1 value.
Info is fine for things that aren't meant to change. Like a device interface type. But state sets/bitmasks work better where you want to track the changing state over time.
I don't have a simple, quick document about why we prefer to use state sets over ENUM int values or having just the current state as a label. But it is the preferred method.

Another thing to note, with the labels as-is, the indexing of series is pretty optimal. The full combination of metrics for 200 nodes above is pretty trivial to handle with Prometheus. It's far more efficient for that tiny, under 20k series, setup. It might seem like a lot for other monitoring systems. But it's efficiently handled by Prometheus.

Thanks for explaining a bit of back story here. Very insightful.
May I just point that it's not only performance which might suffer but also the amount of storage needed when using the service collector for > 200 nodes (which I plan to do).
You could by the way still have the enum value as a label:
wmi_service_start_mode{name="winrm",state="running"} 3

That's still not any better, because state changes cause the series to appear and disappear.
For the storage side, constant-value series are handled by the best-case compression. This is extremely compressed. IIRC it's something on the order of 0.3 bytes/sample. And we're considering additional optimizations.  The example 15k series is something like 25MiB/day of data scraped at 15s intervals. It's mostly an indexing problem, not a series storage problem.
Prometheus typical compression for normal metrics is still around 1.3 bytes/sample. So even with this low amount of compression, 15k series is still around 110MiB/day.
Typically we start to get concerned with Prometheus series cardinality when you hit around 10 million series on a server.
Here's an example of a normal operating Prometheus server:

These numbers are not concerning.

Thanks for explaining. I'll close the issue.


Normalize callbacks

The callbacks for the async methods are not consistent both between and within raspi-i2c methods, depending on which i2c-bus method was called. These need to be wrapped and normalized

@bryan-m-hughes what are the inconsistencies here?

it's in writeByte and writeWord. If a register is not specified, we call i2cWrite under the hood, which calls it's callback with (err, bytesWritten, buffer), but if we do specify a register, we call writeByte under the hood which only calls back with (err). Same thing with the *Word variants


Could not find any dSYM оn fastlane 2.130.0

New Issue Checklist

[x] Updated fastlane to the latest version
[x] I read the Contribution Guidelines
[x] I read docs.fastlane.tools
[x] I searched for existing GitHub issues

Issue Description
Latest fastlane cannot download dSYMs from appstore connect, but it exists.
Command executed
lane :symbols do
    ENV['plist_version'] = "#{ver_major}.#{ver_minor}.#{build_num}"
    sh('find "../Pods/Target Support Files" -name Info.plist -exec /usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString $plist_version" {} \;')

    download_dsyms(version: ENV['plist_version'], build_number: ENV['plist_version'])
    upload_symbols_to_crashlytics(api_token: ENV["CRASHLYTICS_API_TOKEN"])
  end

Complete output when running fastlane, including the stack trace and command used

--- Step: download_dsyms ---
----------------------------
Login to App Store Connect (****)
Login successful
Looking for dSYM files for 'com.app.id' on platform ios v1.0.0 (1.0.0)
Could not find any dSYM for 1.0.0 (1.0.0)
-------------------
--- Step: is_ci ---
-------------------
--------------------------
--- Step: fastlane env ---
--------------------------
$ fastlane env
Generating fastlane environment output, this might take a few seconds...
✅ fastlane environment ✅
### Stack
| Key                         | Value                                       |
| --------------------------- | ------------------------------------------- |
| OS                          | 10.14.4                                     |
| Ruby                        | 2.3.1                                       |
| Bundler?                    | true                                        |
| Git                         | git version 2.20.1 (Apple Git-117)          |
| Installation Source         | ~/.rvm/gems/ruby-2.3.1/bin/fastlane         |
| Host                        | Mac OS X 10.14.4 (18E2034)                  |
| Ruby Lib Dir                | ~/.rvm/rubies/ruby-2.3.1/lib                |
| OpenSSL Version             | OpenSSL 1.0.2r  26 Feb 2019                 |
| Is contained                | false                                       |
| Is homebrew                 | false                                       |
| Is installed via Fabric.app | false                                       |
| Xcode Path                  | /Applications/Xcode.app/Contents/Developer/ |
| Xcode Version               | 10.2.1                                      |
### System Locale
| Variable | Value       |   |
| -------- | ----------- | - |
| LANG     | ru_RU.UTF-8 | ✅ |
| LC_ALL   |             |   |
| LANGUAGE |             |   |
### fastlane files:
`./Appfile`
```ruby
app_identifier "com.app.id"
apple_id "****"
itc_team_id "[REDACTED]"
team_id "[REDACTED]"
team_name "[REDACTED]"
```

### fastlane gems
| Gem      | Version | Update-Status |
| -------- | ------- | ------------- |
| fastlane | 2.130.0 | ✅ Up-To-Date  |
### Loaded fastlane plugins:
**No plugins Loaded**
Loaded gems
| Gem                       | Version      |
| ------------------------- | ------------ |
| did_you_mean              | 1.0.0        |
| bundler                   | 1.17.3       |
| CFPropertyList            | 3.0.1        |
| concurrent-ruby           | 1.1.5        |
| i18n                      | 0.9.5        |
| minitest                  | 5.11.3       |
| thread_safe               | 0.3.6        |
| tzinfo                    | 1.2.5        |
| activesupport             | <IP_ADDRESS>     |
| public_suffix             | 2.0.5        |
| addressable               | 2.7.0        |
| atomos                    | 0.1.3        |
| babosa                    | 1.0.2        |
| claide                    | 1.0.3        |
| fuzzy_match               | 2.0.4        |
| nap                       | 1.1.0        |
| cocoapods-core            | 1.7.5        |
| cocoapods-deintegrate     | 1.0.4        |
| cocoapods-downloader      | 1.2.2        |
| cocoapods-plugins         | 1.0.0        |
| cocoapods-search          | 1.0.0        |
| cocoapods-stats           | 1.1.0        |
| netrc                     | 0.11.0       |
| cocoapods-trunk           | 1.4.0        |
| cocoapods-try             | 1.1.0        |
| colored2                  | 3.1.2        |
| escape                    | 0.0.4        |
| fourflusher               | 2.3.1        |
| gh_inspector              | 1.1.3        |
| molinillo                 | 0.6.6        |
| ruby-macho                | 1.4.0        |
| nanaimo                   | 0.2.6        |
| xcodeproj                 | 1.12.0       |
| cocoapods                 | 1.7.5        |
| colored                   | 1.2          |
| highline                  | 1.7.10       |
| commander-fastlane        | 4.4.6        |
| declarative               | 0.0.10       |
| declarative-option        | 0.1.0        |
| digest-crc                | 0.4.1        |
| unf_ext                   | <IP_ADDRESS>      |
| unf                       | 0.1.4        |
| domain_name               | 0.5.20190701 |
| dotenv                    | 2.7.5        |
| emoji_regex               | 1.0.1        |
| excon                     | 0.66.0       |
| multipart-post            | 2.0.0        |
| faraday                   | 0.15.4       |
| http-cookie               | 1.0.3        |
| faraday-cookie_jar        | 0.0.6        |
| faraday_middleware        | 0.13.1       |
| fastimage                 | 2.1.5        |
| jwt                       | 2.1.0        |
| memoist                   | 0.16.0       |
| multi_json                | 1.13.1       |
| os                        | 1.0.1        |
| signet                    | 0.11.0       |
| googleauth                | 0.6.7        |
| httpclient                | 2.8.3        |
| mime-types-data           | 3.2019.0331  |
| mime-types                | 3.2.2        |
| uber                      | 0.1.0        |
| representable             | 3.0.4        |
| retriable                 | 3.1.2        |
| google-api-client         | 0.23.9       |
| google-cloud-env          | 1.2.1        |
| google-cloud-core         | 1.3.1        |
| google-cloud-storage      | 1.16.0       |
| json                      | 2.2.0        |
| mini_magick               | 4.9.5        |
| multi_xml                 | 0.6.0        |
| plist                     | 3.5.0        |
| rubyzip                   | 1.2.3        |
| security                  | 0.1.3        |
| naturally                 | 2.2.0        |
| simctl                    | 1.6.5        |
| slack-notifier            | 2.3.2        |
| terminal-notifier         | 2.0.0        |
| unicode-display_width     | 1.6.0        |
| terminal-table            | 1.8.0        |
| tty-screen                | 0.7.0        |
| tty-cursor                | 0.7.0        |
| tty-spinner               | 0.9.1        |
| word_wrap                 | 1.0.0        |
| rouge                     | 2.0.7        |
| xcpretty                  | 0.3.0        |
| xcpretty-travis-formatter | 1.0.0        |
| ffi                       | 1.11.1       |
| mustache                  | 1.1.0        |
| open4                     | 1.3.4        |
| redcarpet                 | 3.5.0        |
| rb-fsevent                | 0.10.3       |
| rb-inotify                | 0.10.0       |
| sass-listen               | 4.0.0        |
| sass                      | 3.7.4        |
| sqlite3                   | 1.4.1        |
| liferaft                  | 0.0.6        |
| xcinvoke                  | 0.3.0        |
| jazzy                     | 0.10.0       |

*generated on:* **2019-09-04**

Take notice that this output may contain sensitive information, or simply information that you don't want to make public.
Open https://github.com/fastlane/fastlane/issues/new to submit a new issue ✅
+------------------+-------------+
|          Lane Context          |
+------------------+-------------+
| DEFAULT_PLATFORM | ios         |
| PLATFORM_NAME    | ios         |
| LANE_NAME        | ios symbols |
+------------------+-------------+
bad URI(is not URI?):
+------+---------------------------------------------------------------+-------------+
|                                  fastlane summary                                  |
+------+---------------------------------------------------------------+-------------+
| Step | Action                                                        | Time (in s) |
+------+---------------------------------------------------------------+-------------+
| 1    | default_platform                                              | 0           |
| 2    | git_branch                                                    | 0           |
| 3    | awk -F '=' '/PRODUCT_BUNDLE_IDENTIFIER = com.mango/ {print $2 | 0           |
| 4    | is_ci                                                         | 0           |
| 5    | clear_derived_data                                            | 0           |
| 6    | is_ci                                                         | 0           |
| 7    | delete_keychain                                               | 0           |
| 8    | create_keychain                                               | 0           |
| 9    | update_app_identifier                                         | 0           |
| 8    | find "../Pods/Target Support Files" -name Info.plist -exec /u | 0           |
| 💥   | download_dsyms                                                | 5           |
| 10   | is_ci                                                         | 0           |
| 11   | fastlane env                                                  | 3           |
+------+---------------------------------------------------------------+-------------+
fastlane finished with errors
Looking for related GitHub issues on fastlane/fastlane...
➡  Facing bad [!] bad URI(is not URI?): issue.
https://github.com/fastlane/fastlane/issues/14916 [closed] 16 💬
2 weeks ago
➡  [download_dsyms] Do not attempt to download Dsyms if the dsym_url is missing
https://github.com/fastlane/fastlane/pull/15260 [closed] 3 💬
18 hours ago
➡  App Center deployment fails due to bad uri when app has spaces in the name
https://github.com/fastlane/fastlane/issues/14882 [closed] 2 💬
3 weeks ago
and 15 more at: https://github.com/fastlane/fastlane/search?q=bad URI(is not URI%3F)%3A &type=Issues&utf8=✓
🔗  You can ⌘ + double-click on links to open them directly in your browser.
/Users/user/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/uri/rfc3986_parser.rb:18:in rescue in split': [!] bad URI(is not URI?):  (URI::InvalidURIError) 	from /Users/user/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/uri/rfc3986_parser.rb:15:in split'
from /Users/user/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/uri/rfc3986_parser.rb:73:in parse' 	from /Users/user/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/uri/common.rb:227:in parse'
from /Users/user/.rvm/gems/ruby-2.3.1/gems/fastlane-2.130.0/fastlane/lib/fastlane/actions/download_dsyms.rb:146:in download_file' 	from /Users/user/.rvm/gems/ruby-2.3.1/gems/fastlane-2.130.0/fastlane/lib/fastlane/actions/download_dsyms.rb:128:in download'
from /Users/user/.rvm/gems/ruby-2.3.1/gems/fastlane-2.130.0/fastlane/lib/fastlane/actions/download_dsyms.rb:116:in block (2 levels) in run' 	from /Users/user/.rvm/gems/ruby-2.3.1/gems/fastlane-2.130.0/fastlane/lib/fastlane/actions/download_dsyms.rb:78:in each'
from /Users/user/.rvm/gems/ruby-2.3.1/gems/fastlane-2.130.0/fastlane/lib/fastlane/actions/download_dsyms.rb:78:in block in run' 	from /Users/user/.rvm/gems/ruby-2.3.1/gems/fastlane-2.130.0/fastlane/lib/fastlane/actions/download_dsyms.rb:62:in each'
from /Users/user/.rvm/gems/ruby-2.3.1/gems/fastlane-2.130.0/fastlane/lib/fastlane/actions/download_dsyms.rb:62:in run' 	from /Users/user/.rvm/gems/ruby-2.3.1/gems/fastlane-2.130.0/fastlane/lib/fastlane/runner.rb:256:in block (2 levels) in execute_action'
from /Users/user/.rvm/gems/ruby-2.3.1/gems/fastlane-2.130.0/fastlane/lib/fastlane/actions/actions_helper.rb:50:in execute_action' 	from /Users/user/.rvm/gems/ruby-2.3.1/gems/fastlane-2.130.0/fastlane/lib/fastlane/runner.rb:235:in block in execute_action'
from /Users/user/.rvm/gems/ruby-2.3.1/gems/fastlane-2.130.0/fastlane/lib/fastlane/runner.rb:227:in chdir' 	from /Users/user/.rvm/gems/ruby-2.3.1/gems/fastlane-2.130.0/fastlane/lib/fastlane/runner.rb:227:in execute_action'
from /Users/user/.rvm/gems/ruby-2.3.1/gems/fastlane-2.130.0/fastlane/lib/fastlane/runner.rb:157:in trigger_action_by_name' 	from /Users/user/.rvm/gems/ruby-2.3.1/gems/fastlane-2.130.0/fastlane/lib/fastlane/fast_file.rb:154:in method_missing'
from Fastfile:325:in block (2 levels) in parsing_binding' 	from /Users/user/.rvm/gems/ruby-2.3.1/gems/fastlane-2.130.0/fastlane/lib/fastlane/lane.rb:33:in call'
from /Users/user/.rvm/gems/ruby-2.3.1/gems/fastlane-2.130.0/fastlane/lib/fastlane/runner.rb:49:in block in execute' 	from /Users/user/.rvm/gems/ruby-2.3.1/gems/fastlane-2.130.0/fastlane/lib/fastlane/runner.rb:45:in chdir'
from /Users/user/.rvm/gems/ruby-2.3.1/gems/fastlane-2.130.0/fastlane/lib/fastlane/runner.rb:45:in execute' 	from /Users/user/.rvm/gems/ruby-2.3.1/gems/fastlane-2.130.0/fastlane/lib/fastlane/lane_manager.rb:56:in cruise_lane'
from /Users/user/.rvm/gems/ruby-2.3.1/gems/fastlane-2.130.0/fastlane/lib/fastlane/command_line_handler.rb:36:in handle' 	from /Users/user/.rvm/gems/ruby-2.3.1/gems/fastlane-2.130.0/fastlane/lib/fastlane/commands_generator.rb:108:in block (2 levels) in run'
from /Users/user/.rvm/gems/ruby-2.3.1/gems/commander-fastlane-4.4.6/lib/commander/command.rb:178:in call' 	from /Users/user/.rvm/gems/ruby-2.3.1/gems/commander-fastlane-4.4.6/lib/commander/command.rb:153:in run'
from /Users/user/.rvm/gems/ruby-2.3.1/gems/commander-fastlane-4.4.6/lib/commander/runner.rb:476:in run_active_command' 	from /Users/user/.rvm/gems/ruby-2.3.1/gems/fastlane-2.130.0/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb:76:in run!'
from /Users/user/.rvm/gems/ruby-2.3.1/gems/commander-fastlane-4.4.6/lib/commander/delegates.rb:15:in run!' 	from /Users/user/.rvm/gems/ruby-2.3.1/gems/fastlane-2.130.0/fastlane/lib/fastlane/commands_generator.rb:349:in run'
from /Users/user/.rvm/gems/ruby-2.3.1/gems/fastlane-2.130.0/fastlane/lib/fastlane/commands_generator.rb:41:in start' 	from /Users/user/.rvm/gems/ruby-2.3.1/gems/fastlane-2.130.0/fastlane/lib/fastlane/cli_tools_distributor.rb:119:in take_off'
from /Users/user/.rvm/gems/ruby-2.3.1/gems/fastlane-2.130.0/bin/fastlane:23:in <top (required)>' 	from /Users/user/.rvm/gems/ruby-2.3.1/bin/fastlane:23:in load'
from /Users/user/.rvm/gems/ruby-2.3.1/bin/fastlane:23:in <main>' 	from /Users/user/.rvm/gems/ruby-2.3.1/bin/ruby_executable_hooks:24:in eval'
from /Users/user/.rvm/gems/ruby-2.3.1/bin/ruby_executable_hooks:24:in `'

Does the same command with --verbose give more information?

Not much.
INFO [2019-09-04 14:31:12.96]: ----------------------------
INFO [2019-09-04 14:31:12.96]: --- Step: download_dsyms ---
INFO [2019-09-04 14:31:12.96]: ----------------------------
INFO [2019-09-04 14:31:13.11]: Login to App Store Connect (****)
Reading keychain entry, because either user or password were empty
Loading session from '/Users/user/.fastlane/spaceship/****/cookie'
Available session is not valid any more. Continuing with normal login.
Looking for App Store Connect Team with ID [REDACTED]
INFO [2019-09-04 14:31:16.27]: Login successful
INFO [2019-09-04 14:31:16.98]: Looking for dSYM files for 'com.app.id' on platform ios v1.x.x (1.x.x)
DEBUG [2019-09-04 14:31:19.05]: Found train (version): 1.x.y , comparing to supplied version: 1.x.x
DEBUG [2019-09-04 14:31:19.05]: Version 1.x.x doesn't match: 1.x.y
<lots of similar records>
DEBUG [2019-09-04 14:31:19.09]: Found train (version): 1.x.x , comparing to supplied version: 1.x.x
DEBUG [2019-09-04 14:31:19.61]: Found build version: 1.x.x , comparing to supplied build_number: 1.x.x
DEBUG [2019-09-04 14:31:19.61]: Build_version: 1.x.x matches 1.x.x, grabbing dsym_url
DEBUG [2019-09-04 14:31:20.56]: dsym_url:
ERROR [2019-09-04 14:31:20.56]: Could not find any dSYM for 1.x.x (1.x.x)
INFO [2019-09-04 14:31:20.56]: -------------------
INFO [2019-09-04 14:31:20.56]: --- Step: is_ci ---
INFO [2019-09-04 14:31:20.56]: -------------------
INFO [2019-09-04 14:31:20.57]: --------------------------
INFO [2019-09-04 14:31:20.57]: --- Step: fastlane env ---
INFO [2019-09-04 14:31:20.57]: --------------------------

Looks like dsym_url is empty

I've checked Appstore Connect and this version indeed does not have a download link, but it also says this build contains symbols. Previous builds contains the download link, but it was built with 2.123.0 and 2.129.0 versions.
Maybe some kind of regression occured?

We're also facing this issue - an old build of ours from App Store Connect doesn't have a dSYM URL so its bailing out. Working round this by using the min_version e.g. download_dsyms(min_version: "1.2.3") to ignore that build.

Looks like this was fixed anyhow with PR #15260 - thanks folks!

There hasn't been any activity on this issue recently. Due to the high number of incoming GitHub notifications, we have to clean some of the old issues, as many of them have already been resolved with the latest updates.
Please make sure to update to the latest fastlane version and check if that solves the issue. Let us know if that works for you by adding a comment 👍
Friendly reminder: contributions are always welcome! Check out CONTRIBUTING.md for more information on how to help with fastlane and feel free to tackle this issue yourself 💪

Your blog is simply amazing, congratulations on your great work!

Closing since https://github.com/fastlane/fastlane/pull/15260 was merged 👍


Devise auth

Devise added.
I am not sure this does all that we need at the moment, but the basics are there- a user model, registration and login. We need to connect the "forgot password" feature to an email service.
Also, we now need to connect users to food resources. I assume this is a users have_many food resources and a food resource belongs_to one user?  That will be a new branch, so I wanted to go ahead and submit this with the devise functionality.

Thanks @bthooper! This all sounds right.  My googling research suggested that all I need to do is commit my changes....Heck, it even says "add more commits by pushing to the devise_auth branch on bthooper/food_resources' right above..and i did...and it shows in my repo...but why not here? am I missing something???


Define button with text from string resource and icon(s) in XML

There is no way to define simple button with icon and label in XML with label coming from a string resource (I mainly for translation purpose).
The bootstrapText attribute do not accept string resource mixing with icons, only "hard coded" strings (I believe it is not possible on any text attribute on Android).
If you define both text and typicon/fontAwesomeIcon properties, text is ignored, only icon is rendered.
If you define both bootstrapText and typicon/fontAwesomeIcon properties, icon is ignored, only text is rendered.

Hi @JeremyReynaud,
If i understand you correctly, you can't set button label with text and icon in the same time through strings.xml resource.
Just checked BootstrapButton with
We {fa_heart} android bootstrap!
from strings.xml, and  everything works fine, button renders with text and icon.
Could you please provide code snippet where you facing with this issue?

Hi @redwerk,
Thanks for your answer! My bad, I was looking for a way to separate icon and text but I completely missed this easy way to do.
@jamie-beardedhen, I think you can close this issue, sorry.


Context Menu & Window Animation Added

Hi there!  Noticed that this PR has been open for a while with no activity.  If the intention is to contribute this upstream, could you please update the PR description with details about what this accomplishes and how it was achieved?  Then I'll be able to provide some guidance as to whether or not the change aligns with the goals for this package.  If the intention is not to merge this, I'll close it if it doesn't receive any more activity.


[RESTEASY-3033] reproduction of SSE deadlock

Reproduction scenario for RESTEASY-3033.
This is not a fix for the problem, it only reproduces the deadlock.

Replaced by #2962


ingester crash when cassandra used as backend.

Requirement - what kind of business use case are you trying to solve?
Trying to use cassandra as backend.
Problem - what in Jaeger blocks you from solving the requirement?
Collector is able to connect to kafka successfully but ingestor is throwing Keyspace error.
{"level":"info","ts":1559748969.7199175,"caller":"flags/service.go:113","msg":"Mounting metrics handler on admin server","route":"/metrics"}
{"level":"info","ts":1559748969.7204194,"caller":"flags/admin.go:108","msg":"Mounting health check on admin server","route":"/"}
{"level":"info","ts":1559748969.720643,"caller":"flags/admin.go:114","msg":"Starting admin HTTP server","http-port":14270}
{"level":"info","ts":1559748969.7206647,"caller":"flags/admin.go:100","msg":"Admin server started","http-port":14270,"health-status":"unavailable"}
2019/06/05 15:36:09 error: failed to connect to x.x.x.x:9042 due to error: Keyspace 'jaeger_v1_test' does not exist
2019/06/05 15:36:09 error: failed to connect to x.x.x.x:9042 due to error: Keyspace 'jaeger_v1_test' does not exist
2019/06/05 15:36:09 error: failed to connect to x.x.x.x:9042 due to error: Keyspace 'jaeger_v1_test' does not exist
2019/06/05 15:36:10 error: failed to connect to x.x.x.x:9042 due to error: Keyspace 'jaeger_v1_test' does not exist
2019/06/05 15:36:10 error: failed to connect to x.x.x.x:9042 due to error: Keyspace 'jaeger_v1_test' does not exist
2019/06/05 15:36:10 error: failed to connect to x.x.x.x:9042 due to error: Keyspace 'jaeger_v1_test' does not exist
{"level":"fatal","ts":1559748970.2888253,"caller":"ingester/main.go:63","msg":"Failed to init storage factory","error":"no connections were made when creating the session","stacktrace":"main.main.func1\n\t/home/travis/gopath/src/github.com/jaegertracing/jaeger/cmd/ingester/main.go:63\ngithub.com/jaegertracing/jaeger/vendor/github.com/spf13/cobra.(*Command).execute\n\t/home/travis/gopath/src/github.com/jaegertracing/jaeger/vendor/github.com/spf13/cobra/command.go:762\ngithub.com/jaegertracing/jaeger/vendor/github.com/spf13/cobra.(*Command).ExecuteC\n\t/home/travis/gopath/src/github.com/jaegertracing/jaeger/vendor/github.com/spf13/cobra/command.go:852\ngithub.com/jaegertracing/jaeger/vendor/github.com/spf13/cobra.(*Command).Execute\n\t/home/travis/gopath/src/github.com/jaegertracing/jaeger/vendor/github.com/spf13/cobra/command.go:800\nmain.main\n\t/home/travis/gopath/src/github.com/jaegertracing/jaeger/cmd/ingester/main.go:105\nruntime.main\n\t/home/travis/.gimme/versions/go1.12.1.linux.amd64/src/runtime/proc.go:200"}

My kubernetes yaml:
apiVersion: v1
kind: List
items:
- apiVersion: extensions/v1beta1
  kind: Deployment
  metadata:
    name: kafka-ingester-deployment
    labels:
      app: kafka-ingester
      app.kubernetes.io/name: kafka
      app.kubernetes.io/component: ingester
  spec:
    replicas: 1
    selector:
    strategy:
      type: Recreate
    template:
      metadata:
        labels:
          app: kafka-ingester
          app.kubernetes.io/name: kafka
          app.kubernetes.io/component: ingester
      spec:
        containers:
        - image: jaegertracing/jaeger-ingester:latest
          name: kafka-jaeger-ingester
          args: ["--log-level=debug", "--cassandra.servers=cassandra.default.svc.cluster.local:9042", "--kafka.consumer.brokers='x.x.x.x:9092,x.x.x.x:9092,x.x.x.x:9092'"]
          ports:
          - containerPort: 14270
            protocol: TCP
          - containerPort: 14271
            protocol: TCP
          env:
          - name: SPAN_STORAGE_TYPE
            value: "cassandra"
- apiVersion: v1
  kind: Service
  metadata:
    name: kafka-ingester-service
    labels:
      app: kafka-ingester
      app.kubernetes.io/name: kafka
      app.kubernetes.io/component: ingester
  spec:
    ports:
    - name: health-check
      port: 14270
      targetPort: 14270
    - name: metrics
      port: 14271
      targetPort: 14271
    selector:
      app: kafka-ingester
      app.kubernetes.io/name: kafka
      app.kubernetes.io/component: ingester
    type: NodePort

Not sure what I am doing wrong here.
Proposal - what do you suggest to solve the problem or improve the existing situation?

Any open questions to address

You need to create keyspace and DB schema using the provided script. It is described in Deployment documentation.

@yurishkuro Yes right my bad. Thanks for pointing it out.


Add support for exporting notes

Add the ability to include notes made in the export.
Relates to: https://github.com/bitwiseops/obsidian-kobo-highlights-import/issues/2

Nice! Thank you @OGKevin

@MichaelLepori Are you able to do a test again, before I merge the MR?

@MichaelLepori Cool, could you give https://github.com/OGKevin/obsidian-kobo-highlights-import/releases/tag/1.3.0-beta.0 a try please 🙏🏾

Hi OGKevin,
Oh Man....that's nice what you did!!
Hier the Result:
Why ist there a space more on the first line?
I tried Multiline on the Note of a Highlight:
2nd Question:
How does it work with the sorting?
The first example ist the last Highlight Note on the top.The second example ist the last Note at the end.
Have a nice weekend.
All the Best.
-- Michael Lepori
Il venerdì 16 settembre 2022 20:52:31 CEST, Kevin Hellemun<EMAIL_ADDRESS>ha scritto:

@MichaelLepori Cool, could you give https://github.com/OGKevin/obsidian-kobo-highlights-import/releases/tag/1.3.0-beta.0 a try please 🙏🏾
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you were mentioned.Message ID: @.***>

@MichaelLepori I think you wanted to send an attachment? I think that is not possible via email. You must do that via GitHub directly.
The code that touches ordering has no changes in this release 🤔
I don't see any order issues in my diff.
The way ordering is done is based on the chapter the note has been taken.
If you have 2 highlights within the same chapter, then the ordering can be incorrect 🤔
Is this what you are experiencing?

Yes, I sent you these Pictures:
Can you see those now?
Thank you.
Michael Lepori
Von meinem iPhone gesendet

Am 17.09.2022 um 10:38 schrieb Kevin Hellemun @.***>:

@MichaelLepori I think you wanted to send an attachment? I think that is not possible via email. You must do that via GitHub directly.
The code that touches ordering has no changes in this release 🤔
I don't see any order issues in my diff.
The way ordering is done is based on the chapter the note has been taken.
If you have 2 highlights within the same chapter, then the ordering can be incorrect 🤔
Is this what you are experiencing?
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you were mentioned.

@MichaelLepori Nope

@OGKevin I write hier on GitHub:
Hier the Result:

Why ist there a space more on the first line?

I tried Multiline on the Note of a Highlight.
2nd Question:
How does it work with the sorting?
The first example ist the last Highlight Note on the top.The second example ist the last Note at the end.

@MichaelLepori  The extra space should be fixed in https://github.com/OGKevin/obsidian-kobo-highlights-import/releases/tag/1.3.0-beta.1.
Regarding sorting, it sorts based on an internal ID that is stored in the database: https://github.com/OGKevin/obsidian-kobo-highlights-import/blob/025c83508560dcf84caf3e79a67d2559c73d5db1/src/database/Highlight.ts#L80-L81
For some reason, the ID of chapter27 is sorted above the ID of chapter1. The only way to find out why is to see what the values of the ContentID is.
If you would like, I can add debug logging in the next release that you can use to extract this information, and then we can figure out why the sorting is not working for this book.


How to use express middleware with prerender?

I want to add healthcheck express middleware to server.
Is there a way to achieve it?

Sorry for the delay! A plugin is a great way to implement a health check. You might do something like:
module.exports = {
  requestReceived: (req, res, next) => {
    if (req.prerender.url == '/healthcheck') {
      //do health check stuff
    } else {
      next();
    }
  }
}

Feel free to reopen if you have any questions about that.


Added support for Java 8 time classes.

@chrissalij-r @egprentice @PainterAndHacker @audax-shreyaspurohit @htmldoug
I added basic Java 8 support. I plan to refactor Joda out of the core of the library, but I wanted to provide a temporary minor release so people could make the transition to Java 8 time without having to make the upgrade to all shared libraries before taking advantage of basic support for this feature.

LGTM

LGTM


Cross ruler feature

in this feature i have created a crossRuler bool in linear gauge through which rulers are shifted to middle . The code has been changed in primary ruler paint and secondary ruler paint by doing half of the Offset and adjusting it in the middle of the gauge container.

How can i take pull from Geekyants/main in my main branch ?


Change AddLookup to AddQuery

AddLookup is required to differentiate from AddQuery if we want to have type constraints require that the expressions to be IQueryable<T>, but that only gives us compile-time safety during the creation of the model (which should happen on every application startup, and therefore fail quickly if you do something incorrectly). In exchange for that safety, it makes the API kind of janky in that you have to specify a different method for single return vs. multiple return.
To clarify, I want to change this:
schema.AddQuery("users", db => db.Users);
schema.AddLookup("user", new { id = 0 },
    (db, args) => db.Users.Where(u => u.Id == args.id));

into this:
schema.AddQuery("users", db => db.Users);
schema.AddQuery("user", new { id = 0 },
    (db, args) => db.Users.FirstOrDefault(u => u.Id == args.id));

This will require some more in-depth expression inspection and transformation, but I think the end result of a cleaner API will be worth it.

Maybe to match how people normally write queries, we could also change AddQuery to support ToList. For example:
schema.AddQuery("users", db => db.Users.ToList());

Apparently I already did this and completely forgot about it. I'm still leaving this open since the ToList portion hasn't been done (and I'm still not yet sure if I want to do it).

Instead of adding a ToList option to AddQuery so the API would match AddField, I instead did the opposite and added support for leaving off ToList in AddField. This way there's no unnecessary ToList boilerplate during the schema setup.


Friend app should be able to chat chat and have context from your gmail ($1000)

Is your feature request related to a problem? Please describe.
Users want to be able to chat with their emails. Gmail doesn't have native AI features and is not smart and doesn't do it well. We need to let people to connect to Gmail through a plugin and upload their emails into Friend app and that data should be used same way we currently use memories.
Describe the solution you'd like
You need to make a "Connect Gmail" plugin for Friend app, in which the user will be able to authorize their gmail app and export all the data and then import it into Friend app.
Mails should be imported properly and vectorized in the backend, when chatting the user should be able to ask questions about their email.
A new section of the app with your Gmails indexed, should be in there.
Question

A simple Gmail Chat API search works? instead of indexing all this stuff? or why not?

Learn how to create plugins here
Additional context
This is a paid task. Reward is $1000 in cash. Simply link your PR with this task and we will check it asap. Check how Contributions and bounties work here
If no one is assigned to this task, then no one is working on it. We don't lock bounty tasks unless you've created PRs before.

Can you kindly assign me to this challenge @kodjima33

Hello @kodjima33,
I am working on it.
I have experience with it and flutter.
can you assign for me?
Thank you

I suggest #533 and this work together.

This is 90% not a flutter task.
@ologunB @heidy00 let me know if you are still interested.

Hello,
Thank you for your suggestion.

Hello @josancamon19 ,
please contact with me via telegram.
https://t.me/vsheidy
This is my Telegram.

let's chat on discord https://discord.gg/9puRjM2g
@josancamon19

let's chat on discord https://discord.gg/9puRjM2g @josancamon19

I can add your discord.
vsheidy000
it is my username

@heidy00 u can work on it.

Can you kindly assign me to this challenge @kodjima33

Please assign it to me, I am close to finish it.

@Washyl @samarsheikh001 @ologunB haven't seen any code so far - can someone please do a PR, we will check and if it's good, will assign the issue?
For now, the issue is still unassigned due to lack of code here

🤔 should I...

Question: A simple Gmail Chat API search works? instead of indexing all this stuff? or why not?
Answer: Simple Gmail Chat API search should works, cause Gmail is so generous on rate-limiting1. So ver1 of this plugin should be use Gmail API to retrieve relevant emails ( messages in term of Gmail API ), so we don't need to index all of emails.

@beastoin yeah i think for initial implementation we can just use chat API
But eventually we definitely will need to index emails in app's database to give more context for ai

yes got it @kodjima33 , will draft a proposal soon.

@kodjima33  completed the plugin to chat with the email
On the implementation part for it,
🟢  supports gmail auth similar to notion-crm and webhooks to handle triggers
🟢  to support the chat with mail, found it best to have it trigger on chat message instead of memory so added chat-query as a capability in external integrations
🟢 The webhook is hooked up with langchain's mail toolkit for querying for mails. It also supports sending which can be added if required.
wanted to get feedback and info on how to submit and have this plugin added since it requires the webhook to be hosted aswell..
will be cleaning and making a pr shortly


482 copy instructions

See issue #482  Because handling of media files can be complicated, the stylesheets may provide support under certain circumstances. If the destination of the transformation is known within the stylesheets, we can infer the destination for media files as well, and a script with instructions for copying the media files can be created on request. If the expath file:copy function is available, the copy instructions can even be executed.
See new Section 3.4.1 "Copy instructions for media files" in the Reference Guide.

Withdrawn. The current-output-uri makes "fake chunk" obsolete.


Use less memory

Running shake-test benchmark depth=100 breadth=100 -j2 --no-report --clean memory peaks at 140Mb. That's much better than before now #28 is fixed, but still much higher than I'd like. Running :prof_ <as-above> +RTS -hy -xt -L50 shows:

Breaking that down with -hc -hyIO,PAP I see that the waitFor mechanism is responsible for all those bits. I have a plan to rewrite that to be simpler and more robust, which may have an impact:

The remaining data is all in -hc hy[], which produces:

General profiling and optimisation is always nice, but without concrete ideas to improve things, I don't see much value in a ticket. The plans I had with waitFor didn't really work out.


ppc assembly pack: always increment CTR IV as quadword

The kernel self-tests picked up an issue with CTR mode. The issue was detected with a test vector with an IV of FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD: after 3 increments it should wrap around to 0.
There are two paths that increment IVs: the bulk (8 at a time) path, and the individual path which is used when there are fewer than 8 AES blocks to process.
In the bulk path, the IV is incremented with vadduqm: "Vector Add Unsigned Quadword Modulo", which does 128-bit addition.
In the individual path, however, the IV is incremented with vadduwm: "Vector Add Unsigned Word Modulo", which instead does 4 32-bit additions. Thus the IV would instead become FFFFFFFFFFFFFFFFFFFFFFFF00000000, throwing off the result.
Use vadduqm.
This was probably a typo originally, what with q and w being adjacent.
CLA: trivial

I have tested this in the Linux kernel context where we have a copy of this file, but I haven't done any tests on the openssl userspace. I am happy to run some on hardware if you can tell me what commands to run.

Adding a test case to cover this would be good too.

Merged, thanks for the fix.

Are you sure this is right? The ctr32 function is supposed to only use the last 32 bits as the counter (hence ctr32). AES-GCM, in particular, wants this sort of counter. Rather, the 128-bit counter is stitched together out of ctr32 by CRYPTO_ctr128_encrypt_ctr32:
https://github.com/openssl/openssl/blob/master/crypto/modes/ctr128.c#L147

In the bulk path, the IV is incremented with vadduqm: "Vector Add Unsigned Quadword Modulo", which does 128-bit addition.

Which path are you referring to? I don't see any instances of vadduqm in this file other than the one added here.

Which path are you referring to? I don't see any instances of vadduqm in this file other than the one added here.

Aha. I think I see what happened. I'm guessing you're referring to these instructions, which are indeed vadduwm in OpenSSL:
https://github.com/openssl/openssl/blob/da8459d5cf8f62675c43982cb4505cf9465b4c63/crypto/aes/asm/aesp8-ppc.pl#L1474
However, the Linux kernel version has vadduqm. I gather it's trying to implement ctr128, not ctr32:
https://github.com/torvalds/linux/blob/72cf0b07418a9c8349aa9137194b1ccba6e54a9/drivers/crypto/vmx/aesp8-ppc.pl#L1499

Test-wise, I expect (but haven't confirmed) that, were one to run the Wycheproof AES-GCM tests on PPC after this change, the ones marked ConstructedIv would regress:
https://github.com/google/wycheproof/blob/master/testvectors/aes_gcm_test.json#L5
Conversely, while it doesn't cover the full wraparound case (might be worthwhile), I believe this test vector demonstrates that OpenSSL's ctr128 implementation does not exhibit the problem described in this PR:
https://github.com/openssl/openssl/blob/master/test/recipes/30-test_evp_data/evpciph.txt#L709

Oh that's fascinating - all I knew was that the crypto self-tests in the
kernel were failing, I had no idea about the different counter lengths!
I'll take your word for it that things are supposed to be implemented in
the way that they were for ctr32 - feel free to revert the commit.
On Mon, May 20, 2019 at 3:10 AM David Benjamin<EMAIL_ADDRESS>wrote:

Test-wise, I expect (but haven't confirmed) that, were one to run the
Wycheproof AES-GCM tests on PPC after this change, the ones marked
ConstructedIv would regress:
https://github.com/google/wycheproof/blob/master/testvectors/aes_gcm_test.json#L5
Conversely, while it doesn't cover the full wraparound case (might be
worthwhile), I believe this test vector demonstrates that OpenSSL's ctr128
implementation does not exhibit the problem described in this PR:
https://github.com/openssl/openssl/blob/master/test/recipes/30-test_evp_data/evpciph.txt#L709
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/openssl/openssl/pull/8942?email_source=notifications&email_token=AAZHSBNEG3E6F4MY2IRQTLLPWGCW5A5CNFSM4HNRIJM2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODVXGLDA#issuecomment-493774220,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAZHSBKBXAJKIDAGOLWIX6DPWGCW5ANCNFSM4HNRIJMQ
.

The PR to revert this is in #8958
Thanks @davidben for picking this up so quickly.


When the numbers start with 0 it showing incorrect string value.

Ruby considers all integers with leading zeros as octal. I like the detailed explanation in https://stackoverflow.com/questions/28545559/how-to-work-with-leading-zeros-in-integers.
> 00220
 => 144

> 0d0220
 => 220


Feature/durgod k320 support

Hello! I just added support for Durgod K320 Nebula RGB without required running Chroma SDK or Durgod Zeus Engine.

Can you reopen your PR? So that I can see the changes better. dev branch was behind master. I updated dev branch now.

Yes, sure


gs1.1: chore: fix various bugs

Depends on #120
Several significant issues:

!iwant || !ihave || !prune

we were never:

responding to ihave messages (with iwants)
responding to iwant messages (with actual messages)
sending prune messages when we overgrafted with a peer

This issue has been present since the birth of this library. In a very real sense, it has always been severely broken.

shortcircuit ihave/iwant handling

in the handleIWant case, this is just an optimization to avoid calculating a peer score when we don't need to
in the handleIHave case, it also does this, but more importantly, stops flood protection from being erroneously triggered on an empty control message. This would cause ihaves to be mosty ignored in practice, as every rpc would count towards ihave tracking.

call buildMessage early in _publish

This lets us cache the message with a signature attached. Important for sending gossip, we will want the gossip to include the signature if it was included in the original message.

Codecov Report

Merging #121 into gsv1.1 will increase coverage by 9.84%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           gsv1.1     #121      +/-   ##
==========================================
+ Coverage   81.81%   91.66%   +9.84%
==========================================
  Files           1        2       +1
  Lines          11       24      +13
==========================================
+ Hits            9       22      +13
  Misses          2        2

Impacted Files
Coverage Δ

.aegir.js
100.00% <0.00%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update defe6e9...f74b958. Read the comment docs.


Trying to use PhantomJS on Ubuntu with CircleCI

I'm trying to use PhantomJS on an Ubuntu CircleCI image, but I'm getting the following error:
phantomjs: error while loading shared libraries: libjpeg.so.8: cannot open shared object file: No such file or directory
I found an older issue related to this error, but there wasn't a solution posted there, just that on a clean install the problem went away. But when I run ldd phantomjs it says "not a dynamic executable". This error happens when I run phantomjs -v. Any ideas of how I can isolate what is causing this? I'm using Wraith with PhantomJS to do visual regression tests, but this error is occurring when I run phantomjs -v in the container, so I don't think it's related to Wraith. I'm downloading PhantomJS directly from https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.5.0-beta-linux-ubuntu-xenial-x86_64.tar.gz. Could it be because I'm trying to use a xenial release with Ubuntu 18.04 (bionic)? A version of the libjpeg library is installed; maybe i need to build it from source?

Development on this project has been suspended and it has been archived. Use Puppeteer and Headless Chrome instead.


Update API specification for creation and manipulation functions

Addresses a lot of detailed comments, mostly on function signatures and default dtypes.
Closes gh-85
Closes gh-107
Closes gh-151

From a grep, broadcast_to also takes the shape parameter as positional-only.

From a grep, broadcast_to also takes the shape parameter as positional-only.

Thanks, included now.

LGTM. Let's resolve the conflict.

Thanks Leo. Okay, let's get this in then


Link is broken

https://github.com/inforichland/PyCast/blob/dd3c2770cf89436ea622aa15a27c32477c70dbfe/src/shout.py#L12

the page was most recently archived here https://web.archive.org/web/20160305151936/http://www.jejik.com/articles/2007/02/a_simple_unix_linux_daemon_in_python/ before beginning to display 404 errors on March, 11 2016
running wget http://jejik.com seems to return a 500 server error.


Banch of fixes

I wanted to use this library, but when I installed it, I had a lot of problems

Picker was deprecated from react-native core repository
This pull was fixed picker problem, and I only added to readme that picker should be installed from @react-native-community/picker

Some components have an issues with Maximum update depth exceeded...

to fix this issue update lib/countryPicker.js:
componentDidUpdate() {
    if(this.props.selectedCountry !== this.state.selectedCountry) {
      this.setState({
        selectedCountry: this.props.selectedCountry,
      });
    }
  }

Also the core ability to use of library is to use countries and get dialCode on input wasn't worked

So I reworked it, added ability to use Country code or not via prop useCountryCode

Thx man, merged it into my fork and a bunch of other PRs as well. I'm thinking of maintaining that from now on. Will you be interested in helping out?

@ravi-poonia Is you fork published? I would be happy to help out. I don't think the current maintainer will revisit this repo at all.

I have published v1.0.0 and converted the source to typescript. Let me know if there is anything I can do to improve the change request process. Please submit new pull requests as the package as been more to https://github.com/rili-live/react-native-phone-input


How to use gen fields in outlines?

One aspect of guidance programs that I like are gen fields. Consider this:
import guidance
gpt = guidance.llms.Transformers('gpt2')

program = guidance('''
Given the description of a task, generate a python program that solves it, and the completes the unit test.

Description: {{description}}
Unit Test: {{unit_test}}
Code: {{gen 'code' do_sample=True temperature=0.5 max_tokens=300 stop='Description'}}
''', llm=gpt)

out = program(description='A function to create 10 fibonacci numbers', unit_test='xxxxxx')

And then we can extract the output as out['code'].
How can I do this intuitively in outlines? Does outlines plan to support a gen field syntax?

Would something like this work?
import outlines.models as models
import outlines.text as text

@text.prompt
def unit_test_prompt(description, unit_test):
    """Given the description of a task, generate a python program that solves it, and the completes the unit test.

    Description: {{description}}
    Unit Test: {{unit_test}}
    Code: {{gen 'code' do_sample=True temperature=0.5 max_tokens=300 stop='Description'}}
    """

prompt = unit_test_prompt("A function to create 10 fibonacci numbers", "xxxxxx")
complete = models.text_completion.transformers('gpt2')
out = complete(prompt)

Yes, this works. This is quite simple. Another requirement would be to sample multiple completions at once. I think this could be specified like:
"{{ gen 'code' samples=10 temperature=0.5}}"
...
out = complete(...)
...
codes = out['code']

codes should be a list because of samples > 1. Currently guidance does this incorrectly because it does generations in streams and multiple streams will interleave and the final answer (a single string) will look gibberish.

Should work with
out = complete(prompt, samples=10)

Then you just pass out to the next generator without specifying samples and it should be fine.

Then you just pass out to the next generator without specifying samples and it should be fine.

This could work.
Just to clarify, this gen field construct is not yet supported right? It doesn't work rn.

Just to clarify, this gen field construct is not yet supported right? It doesn't work rn.

If you're asking whether outlines has an infilling DSL like guidance or LMQL have, no. It would be however easy to implement. I sketched it here and you just reminded me to open an issue to track progress on this.

I envision a prompt template to actually have fields that are user provided or generated, aka via gen fields. Running a infilling model on it to generate outputs, and then later access them via a dictionary output.
I do not want anything more than that, I do not want if-else-then block creation inside the prompt (hence called a program in guidance) to modify the prompt at will. We should perhaps implement all the prompt modifying business using regular python functions + jinja templating.
I did not find @text.infilling yet in the API, but if you are proposing an API like that, it should be good to start with.

In tree based searches, for example if we want to solve the problem and guarantee a structured evaluation process, we can use the template:
Use these numbers and basic arithmetic to get 24

Input: {{input}}
Steps:
{{gen 'step1'}}
{{gen 'step2'}}
{{gen 'step3'}}
Output: {{gen 'ans'}}

One way to get the outputs, is to simply run a next token prediction and complete fields until \n.
The only way to get multiple combinations of step1, step2, step3, ans is to sample each of the given the previous, which can take $n^4$ iterations. If there is a way to get all these n^4 solutions in a faster way by vectorizing, batching, kv-caching that would helpful in creating System 2 solutions.

Yup you did. Indeed solving (1) will take be most RoI. I think users would want an (3) infilling api, to me it seems natural for text-completion tasks, can you show how one can do it in outlines in a simple fashion?
Same for (2) - Will successive calling of model.complete(prompt) take care of the unfilled fields? I assume I need to do prompt concatenations whereever required. I am trying to gauge to complexity or implementing this in outlines.

Try the following. You can step through the program and look at the shape of the outputs, (10,), (10,10), (10,10,10). If I didn't understand correctly and you just need 10 samples for the whole sequence then remove samples=10 in the second, third and fourth call to the model.
import outlines.models as models
import outlines.text as text
import numpy as np

@text.prompt
def arithmetic_prompt(input):
    """Use these numbers and basic arithmetic to get 24

     Input: {{input}}
     Steps: """

add = np.char.add
model = models.text_completion.openai("text-davinci-003")

prompt = arithmetic_prompt("input")
step_1 = model(prompt, stop_at=["\n"], samples=10)

prompt = add(add(prompt, step_1), "\nStep 2: ")
breakpoint()
step_2 = model(prompt, stop_at=["\n"], samples=10)

prompt = add(add(prompt, step_2), "\nStep 3: ")
step_3 = model(prompt, stop_at=["\n"], samples=10)

prompt = add(add(prompt, step_3), "\nOutput: ")
ans = model(prompt, samples=10)

I opened #182 to track the infilling DSL implementation. Feel free to take a stab at it.


using inside Link throws type error

just found this
Type 'string' is not assignable to type 'UrlObject | RouteImpl<string>'.ts(2322)
link.d.ts(81, 5): The expected type comes from property 'href' which is declared here on type 'IntrinsicAttributes & LinkRestProps & { href: UrlObject | RouteImpl<string>; }'

when doing something like this:
// ...
 <Link href={routes.home()} className="btn">
          Go back
</Link>
// ...

although this works
href={{ pathname: routes.home() }}

I think the docs should be updated or make the ReturnType of a route be the literal route name so nextjs doesn't complain

note that this also applies for dynamic routes, and as well the same fix of returning the literal path for a dynamic one like: route/123 as const could work

I don't get this error. My Link component expects href: Url type.

@zbeyens have you enabled experimental -> typedRoutes on your next config?

No, but here's my tsconfig, using "next": "^14.1.0"
{
  "compilerOptions": {
    /* Base Options: */
    "esModuleInterop": true,
    "skipLibCheck": true,
    "target": "es2022",
    "allowJs": true,
    "resolveJsonModule": true,
    "moduleDetection": "force",
    "isolatedModules": true,
    /* Strictness */
    "strict": false,
    "strictNullChecks": true,
    "noUncheckedIndexedAccess": false,
    "checkJs": false,
    "forceConsistentCasingInFileNames": true,
    /* Bundled projects */
    "lib": ["dom", "dom.iterable", "ES2022"],
    "noEmit": true,
    "module": "ESNext",
    "moduleResolution": "Bundler",
    "jsx": "preserve",
    "plugins": [
      {
        "name": "next",
      },
    ],
    "incremental": true,
    "downlevelIteration": true,
    /* Path Aliases */
    "baseUrl": "src",
    "paths": {
      "@/*": ["./*"],
      "@/images/*": ["../public/images/*"],
      "@contentlayer/generated": ["../.contentlayer/generated"],
    },
  },
  "include": [
    ".eslintrc.cjs",
    "next-env.d.ts",
    "**/*.ts",
    "**/*.tsx",
    "**/*.cjs",
    "**/*.mjs",
    ".next/types/**/*.ts",
    ".contentlayer/generated",
  ],
  "exclude": ["node_modules", "**/vault/**"],
}

Huh the package docs says we need to enable that flag but if it works for you the I guess that's good

The docs say to make sure the typedRoutes flag is NOT enabled

oh crap, my bad


Improvements on the Microsoft Docs - "Add IP address spaces to peered virtual networks"

[Enter feedback here]
The customer will and understand the risk/potential disruption and th eactions needed from the Docs to avoid any potential service down.
For the end users to better understand and leverage/apply the Docs to their operations, this part of below Docs should articulate:

changes of address space extension operation via VNet peering;
the necessary setting-up steps in the new address space extension operation via VNet peering (for instance, sync operation needs to be completed when adding a new SpokeVNet address space without removing and reestablishing peers with the existing VNet);
the risks and potential disruption if sync operation is not performed.The contents should be organized in a more obvious and logical way for end users to understand.

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

ID: 636aa53e-3ca0-7a30-fe16-7219f3e8d1a9
Version Independent ID: c503b39a-cd8a-669a-0882-27d8c13d3570
Content: Add IP address spaces to peered virtual networks - Azure Architecture Center
Content Source: docs/networking/prefixes/add-ip-space-peered-vnet.md
Service: architecture-center
Sub-service: azure-guide
GitHub Login: @randycampbell
Microsoft Alias: pnp

Thanks for the feedback! I have assigned the issue to the content author to investigate further and update the document as appropriate.

Thank you for your feedback.  We have created internal ticket 24181 to track and investigate this issue.

#please-close


React Counter App

Create a counter app in ReactJS.

I would like to contribute to this project. Please assign this to me

Please tell me where shall I create this app -
inside Web folder OR create a new folder inside Web folder for it?

Please tell me where shall I create this app -
inside Web folder OR create a new folder inside Web folder for it?

Create a new folder if possible. Keep it clean.

Please check PR


We could provide tab completion for this!

Bumping this from v0.14 to v1.0: this is still a cool feature, but I don't want to delay releasing some of the big tab completion improvements that we've done recently for these kinds of bells and whistles.


Question: Are you able to "force" sync/update back to the original cookiecutter template?

Hi there, I really like the look of this project - I have a question: Are you able to "force" sync/update back to the original cookiecutter template?
E.g. suppose I make a load of changes to my new repo, and I would like to now sync/update to the latest cookiecutter template commit, I was wondering if there was something like cruft sync or cruft update --force?
Many thanks for any help!

Currently no, but this sounds like a nice feature.
You could technically do cruft diff > patch.diff && git apply patch.diff to emulate some functionality.

Thanks very much for your help and that command @samj1912 - I also got cruft diff | git apply to work nicely.
Time dependent, I may be able to have a look adding this into cruft - although I don't really know where to start with such a PR if I'm honest, so any help/guidance/an example unittest to follow/... is grealty appreciated.
Many thanks again!

There's another project that does this: https://github.com/cjolowicz/retrocookie
I also have a script that I use for my template that I find works better, if is less featureful: https://github.com/Lightmatter/django-hydra/blob/develop/{{cookiecutter.repo_name}}/scripts/create_patch.sh


Feature Request - enabling multiple authentication methods simultaneously

A bit of background - we run a Rancher managed multi-tenant Kubernetes cluster in our environment. We are currently allowing user to authenticate against Rancher through OpenLDAP, but some of our internal clients had asked us whether they could use their Azure AD login instead.
We know Rancher has integrated with the Azure AD authentication plugin, but seems like we cannot have multiple different third-party authentication methods (the ones that are not local user authentication) available simultaneously.
Just wondering if there's any plan to develop this feature in the future, or there's a workaround to implement something similar?

You can technically enable it through the API and it will basically work.  It's disabled from the UI because there are a variety of UX issues  inherent in it..
For example a user logged in with LDAP will not be able to search for or get info any existing refer to AzureAD principals, and there's no UI for managing which N principals are tied to a single user.

sure-1853


Run | Debug CodeLens links disappear for each block

When having parametrized test in format:
it.each([...])('test name', () => {})

run | debug is not displayed

thx for reporting @dcrystalj
there is already a corresponding issue https://github.com/firsttris/vscode-jest-runner/issues/55
but i leave yours open as well since its about the CodeLens

fixed now


Environmental Variables & Readme Updates

Support multiple servers in the format of "[xxxx,xxxx]" or individual in the format of xxxxx

Did you test how the permissions behave with different Servers? Will a user having the required rank on server[0] be allowed to execute the command else where?
Also I think a legacy issue / bug : Do the helping slash commands even have permissions associated?


Check Enforcer EventHubs cut-over

This PR cuts Check Enforcer over to using Event Hubs to receive webhook notifications (indirectly via our Webhook Router).
Cutover for staging will take place on off this feature branch for validation purposes and will be done by changing the webhook URL for the Check Enforcer (staging) app to route within Webhook Router. Messages will temporarily flowing to Check Enforcer at which point we'll deploy the update (takes a few minutes) and then Check Enforcer will start processing the events via Event Hubs instead.
A subsequent update will remove the HTTP trigger from the function (once we are sure it isn't needed anymore). We'll probably run in staging for a while just to identify any teething problems and make sure we've got all we need in terms of telemetry.

/check-enforcer reset

/check-enforcer evaluate

/check-enforcer reset

/check-enforcer reset

/check-enforcer reset

/check-enforcer evaluate

/azp run

/azp run tools - check-enforcer,tools - webhook-router

/check-enforcer reset

/check-enforcer evaluate


Add JavaScript support (node.js).

JavaScript is very popular and is similar to python. There is node.js and Deno. Node.js is way more popular abut Deno is new an exciting. It does not look like Deno has its FFI flushed out yet.

Recently I have been trying to write/find a solution to tie a backend (typescript, TS) and frontend (TS) together. I've found a decent stack to achieve this, (ts, express, trpc, svelte).  This is all to provide types from the backend to the consumer.
However I have been tainted by nim, every time I write something on this TS backend I think in nim and then can't help but wonder if the thing I am doing would just be easier in nim.
Watching this +1
Are there plans to support TS definitions?
just as a side note (and to check my thinking)

why generate TS defs? so I can use them in my TS FE/consumer
why have TS defs in the FE? so avoid api errors between BE api from the FE written in TS
2.1 why is the FE written in TS? to leverage TS frameworks and packages and to make dev onboarding (TS) easier
why are there api errors? because the frontend has no understanding of the backend
why is there no understanding between the FE/BE? because they are separated by network (HTTP/WS)
why are they separated?  So I can have protected business logic and provide the customer with a decent user experience when they visit my website/app
5.1 why are you protecting business logic? to take economic rents -> end
why does user experience degrade doing this?  This is how http was set up and the nature of request and response -> requests are not known ahead of time.
6.1 why was http setup this way? developed this way over time -> end
6.2 why are req/res not known ahead of time? data can be changed from initial response and the number of combinations is not computable and can not easily be bound -> end

first thoughts from that

use an API schema language on top of the BE instead of generating target language

swagger/openAPI - is good but the implementation is huge and most backend swagger/openAPI require a load of markup
Graphql - Doesn't support maps structures, also is actually is kind of used to solve a different problem set it in be/fe communication.
rpc/grpc - I don't think this one maps from language X to language Y?

nim compiles to JS, use that that to generate api-> the FE world is moving to TS because it provides more safety over JS and you can not call (without mapping) JS from TS but you can call TS from JS (using generators)
Use karax or some other nim FE client -> I could use them but other API consumers might not be in nim

I appreciate that this is genny is a dynamically linked generator and what I've described is over rest but I don't think it is too off. Generate TS bindings -> pass bindings through a query wrapper.
If TS is a supported target by nim it might open up a huge audience for BE dev. Untyped languages are not great in the backend and AFAICS (opinion) other languages go/rust don't have a truely elegant solution to target the frontend
ps - some of this is probably wrong, I'm just airing thoughts also to go back to, thanks if you actually read this

Generating TypeScript bindings is not a bad idea if some one wants to do it. But only server side.
Generating rest APIs, anything that goes over HTTP or network is not were we want to take genny.
If you need an API generator (which could be really cool) you can make your own library or fork genny.


Added example .txt file for agentchat_langchain sample notebook

Why are these changes needed?
While running the agentchat_langchain example notebook, I encountered an error in the cell that attempts to use langchain.tools.file_management.ReadFileTool to read a file called Test.txt... that file does not exist in the directory, so I added it in order to make sure that future readers don't encounter that error and get confused.
Also added a helper function to the notebook which gets the correct file path.
Related issue number
Checks

[x] I've included any doc changes needed for https://microsoft.github.io/autogen/. See https://microsoft.github.io/autogen/docs/Contribute#documentation to build and test documentation locally.
[x] I've added tests (if relevant) corresponding to the changes introduced in this PR.
[x] I've made sure all auto checks have passed.

@jasondotparse please read the following Contributor License Agreement(CLA). If you agree with the CLA, please reply with the following information.
@microsoft-github-policy-service agree [company="{your company}"]

Options:

(default - no company specified) I have sole ownership of intellectual property rights to my Submissions and I am not making Submissions in the course of work for my employer.

@microsoft-github-policy-service agree

(when company given) I am making Submissions in the course of work for my employer (or my employer has intellectual property rights in my Submissions by contract or applicable law). I have permission from my employer to make Submissions and enter into this Agreement on behalf of my employer. By signing below, the defined term “You” includes me and my employer.

@microsoft-github-policy-service agree company="Microsoft"

Contributor License Agreement

@microsoft-github-policy-service agree

Is the same issue noted in #265 ?

Codecov Report

Merging #373 (4f4c2fe) into main (8c3401d) will decrease coverage by 0.28%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             main     #373      +/-   ##
==========================================
- Coverage   42.61%   42.34%   -0.28%
==========================================
  Files          21       21
  Lines        2527     2527
  Branches      566      566
==========================================
- Hits         1077     1070       -7
- Misses       1359     1365       +6
- Partials       91       92       +1

Flag
Coverage Δ

unittests
42.34% <ø> (-0.20%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.
see 1 file with indirect coverage changes

There is a minor formatting error: https://github.com/microsoft/autogen/actions/runs/6667771927/job/18121879951?pr=373 Could you please fix that? Then we can merge.

@jasondotparse this should be an easy fix. Does adding a new line in the end of test.txt break anything in the notebook?

Hey there, sorry for the slow reply, I've just got back from vacation. Will make the quick update tomorrow when I get back to my desk 👍

There is a minor formatting error: https://github.com/microsoft/autogen/actions/runs/6667771927/job/18121879951?pr=373 Could you please fix that? Then we can merge.

@jasondotparse this should be an easy fix. Does adding a new line in the end of test.txt break anything in the notebook?

Nope, doesn't break anything in the notebook. Updated.


Optimistically cache tarballs when packages change?

When you install<EMAIL_ADDRESS>then local-npm will cache and store 4.0.0 for future npm installs.
However, if 4.0.1 is published after you npm install, then local-npm will find out about it via the changes feed, but it will not download the actual tarballs.
So if you then go offline and try to npm install again, it will fail because local-npm knows that there is a newer version that matches your version range, but it hasn't been downloaded yet.
Question: should local-npm optimistically cache every version of Lodash that gets published, simply because you once installed<EMAIL_ADDRESS>Pros: more likely to work offline, less likely to cause unexpected errors, fits the "standard" pattern of caret- and tilde-versioning.
Cons: Potentially a lot of network traffic and a lot of wasted disk spaces for module versions that you might never use.

I npm install a lot while tethering. Even the existing changes feed make me nervous about going over my ridiculously low data cap.
I'd support optimistic tarball caching if it's configurable (and off by default).


It's not working well when using IIS Express host a Web Site on netcore1.0

It's not working well when using IIS Express host a Web Site on netcore1.0

The detailed error message is as attached.

For an ASP.NET Core project (in Visual Studio 2017), Visual Studio uses a special way to launch IIS Express,
https://blog.lextudio.com/how-visual-studio-launches-iis-express-to-debug-asp-net-core-apps-d7fd3677e3c3

A workaround can be used before I find a permanent fix.

Open a command prompt.
At this prompt, execute set LAUNCHER_PATH=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\Extensions\Microsoft\Web Tools\ProjectSystem\VSIISExeLauncher.exe
At this prompt, execute set LAUNCHER_ARGS=-p "C:\Program Files\dotnet\dotnet.exe" -a "exec \"C:\Users\lextm\documents\visual studio 2017\Projects\WebApplication2\WebApplication2\bin\Debug\netcoreapp1.0\WebApplication2.dll\"" -pidFile "C:\Users\lextm\AppData\Local\Temp\2\tmpFD6D.tmp" -wd "C:\Users\lextm\documents\visual studio 2017\Projects\WebApplication2\WebApplication2"
Launch Jexus Manager from this command prompt.

It is not a convenient way, as you have to change LAUNCHER_ARGS for different projects.

The new build will analyze the project (currently only .csproj is supported), and then attempt to host the site on IIS Express properly by using Visual Studio 2017 bits. Thus, VS2017 (15.2 and above) is required.