text:
Adding a custom audience fails when activation or expiration are not supplied

We are using the following code in order to add a custom audience using fetchAndJoin:
                    FetchAndJoinCustomAudienceRequest request =
                            new FetchAndJoinCustomAudienceRequest.Builder(
                                    Uri.parse(urlFetchAndJoin)
                            )
                                    .setName(name)
                                    .setActivationTime(activationTime)
                                    .setExpirationTime(expirationTime)
                                    .build();

                    Log.i(TAG, "Executing Fetch and Join request");
                    customAudienceManager.fetchAndJoinCustomAudience(
                            request,
                            executor,
                            new OutcomeReceiver<Object, Exception>() {
                                @Override
                                public void onResult(Object ignoredResult) {
                                    Log.i(TAG, "Fetch and join executed successfully");
                                    completer.set(null);
                                }

                                @Override
                                public void onError(Exception error) {
                                    Log.e(TAG, "Failed while doing fetch and join", error);
                                    completer.setException(error);
                                }
                            });

                    return "fetchAndJoinCustomAudience";
                });

The code works fine when setting activation and expiration times.
When removing one of these settings:
  setActivationTime(activationTime)
  setExpirationTime(expirationTime)

The command fails with the following exception:
2023-12-14 19:17:18.621  4263-4436  adservices.fledge       com.google.android.adservices.api    D  Error encountered in fetchCustomAudience execution
                                                                                java.io.InvalidObjectException: Fused custom audience is incomplete.
                                                                                at com.android.adservices.service.customaudience.FetchCustomAudienceImpl.lambda$validateResponse$1(FetchCustomAudienceImpl.java:378)
                                                                                at com.android.adservices.service.customaudience.FetchCustomAudienceImpl.$r8$lambda$FassehbCbH4RDs2Nc7fIx7_F_sw(FetchCustomAudienceImpl.java:0)
                                                                                at com.android.adservices.service.customaudience.FetchCustomAudienceImpl$$ExternalSyntheticLambda4.call(R8$$SyntheticClass:0)
                                                                                at com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:131)
                                                                                at com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:74)
                                                                                at com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:82)
                                                                                at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
                                                                                at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
                                                                                at java.lang.Thread.run(Thread.java:1012)

It seems like the above behavior is not as described in the documents:

The CustomAudienceFetchRequest object allows the API caller to define some information for the Custom Audience by using the optional properties shown in the example above.
If specified these values cannot be overwritten by the buyer response received by the buyer.

Custom Audiences do have some require fields, defined in our developer guide. In this case, if you do not set activation or expiration time in the fetch request, they must be specified in the custom audience defined in the respsonse.
I will update our documentation to make this more clear.

Hi @cshmerling,
pls note:

I do add a custom activation and expiration to the response.
When I send the request from the client (Android App) it works with activation and expiration and when removing it, it then fails.

So it seems like there is a mismatch between the docs and the behavior: activation and expiration seems to be mandatory on the client side and without it the request fails.

I think this is still an open issue. So either the code should be adjusted or the documents..

Ah, I might have misunderstood the steps you ran- after you removed setting the expiration and activation times in the initial request, I thought the response did not have those fields as they would be ignored.
So you are saying that even if those fields are included in the response, you get this error? My only guess at that point would be the timestamps might not be valid, can you let me know what was included in the response?

@cshmerling this is the use case:

We DO NOT send expiration & activation from the Android App as shown above in code.
We DO send activation & expiration on the response.

The expected behavior: Use the server side activation and expiration values.
The current behavior: We get the exception described above.
This is how the actual response looks like:
{
   "name":"running-shoes",
   "activationTimestamp":1700376470000,
   "expirationTimestamp":1702968470000,
   "user_bidding_signals":{
      "signal1":"value"
   },
   "trusted_bidding_data":{
      "trusted_bidding_uri":"https://audience.dsp.youappi.com/trusted",
      "trusted_bidding_keys":[
         "k1",
         "k2"
      ]
   },
   "bidding_logic_uri":"https://audience.dsp.youappi.com/logic",
   "daily_update_uri":"https://audience.dsp.youappi.com/daily",
   "ads":[
      {
         "render_uri":"https://audience.dsp.youappi.com/render",
         "metadata":{

         },
         "ad_filters":{
            "frequency_cap":{
               "win":[
                  {
                     "ad_counter_key":1,
                     "max_count":2,
                     "interval_in_seconds":60
                  }
               ],
               "view":[
                  {
                     "ad_counter_key":2,
                     "max_count":10,
                     "interval_in_seconds":3600
                  }
               ]
            },
            "app_install":{
               "package_names":[
                  "package.name.one",
                  "package.name.two"
               ]
            }
         }
      }
   ]
}

@cshmerling please also note: when we add the activation/expiration to the Android App, all seems to work as expected.
The reason this issues is specifically important for us is that we are a Bidder company working with MMPs. And we would like to make sure we have the capability of controlling some aspects of the fetchAndJoin operation from the server side.

Your expected behavior is correct- however, it looks like a mismatch between field names provided by the server and expected value. For activation/expiration time, please use
 "activation_time":
 "expiration_time":

Milliseconds are the correct unit.
Let me know if that doesn't work, and I can follow up on the issue.

Hi @cshmerling , thanks for the correction. Things look better now. It would have been great if the docs contained the correct names.. :)

authors: cshmerling guybashan

repo: android/privacy-sandbox-samples


text:
Datum und Uhrzeit der Mitteilung ist immer aktuelle Zeit

Vielen Dank für Deine tolle Arbeit. Mir ist etwas aufgefallen.
Man kann (zumindest bei mir) nicht sehen wann die Mitteilung gekommen, bzw. die Nachricht ausgelöst wurde. Jede Nachricht die ich bekomme trägt die aktuelle Zeit, sprich man sieht immer das Datum und die Zeit die gerade ist wenn man die Nachricht öffnet. Da ich Nachts aber nur extrem kritische Nachrichten tatsächlich mit Ton empfange und alle anderen lautlos, weiß ich bei den lautlosen nicht genau wann das Problem aufgetreten ist, dazu muss ich dann im direkt in Uptime Kuma. Kann man das noch anpassen?  Das wäre super, Danke. Gruß Olaf

Hi Olaf, hast du wie im letzten Changelog beschrieben die Environment variable mit der Zeitzone gelöscht?
Es gab da nämlich ein Bug

Moin Sebastian,
hatte ich nicht gelesen. Habe die Zeitzone gelöscht und es passt jetzt. Danke für die schnelle Rückmeldung.
Schönes WE

Kein Problem und gern geschehen.

source: gharchive/issue

license: MIT

license_type: permissive

license_source: github-api


text:
Custom MediaSources, resolving MediaItems from remote API, and metadata updates

I've searched around extensively on this repository, on the ExoPlayer repository, on stack overflow, and I've been browsing through the source to determine the best course of action for my use case but I haven't really found much, and I've run into issues or gaps in the explanation on the information I have found.
The use case I have seems like it calls for custom media sources, for the most part it isn't complex, it's a case of loading the media based upon an internal URI system. But there are some additional complexities when it comes to the type of media to load.
Key details:

I'm using ExoPlayer as my player implementation under Media3
I am aiming to treat Media3 (and the underlying ExoPlayer) as my single source of truth for playback, i.e. all information shown in the player UI and media notification should come from Media3 and the media metadata. (With the notification being automatic out of the box in media3).
The content I am loading comes from a remote datastore API, I am aiming to encapsulate this within the Media3/ExoPlayer part of my app. In other words, As far as my app UI is concerned, it just needs to add a MediaItem that uses request metadata to point to one of my internal URIs (something like mydatastorescheme://podcast/{id}) and the rest is handled opaquely inside the Media code.
I have many different types of content to load, all audio, but things like podcasts, audio books, live radio, etc.

In Media3 we have the MediaSession callback with the required onAddMediaItems function. This function works fine for loading the correct audio URLs and metadata for a particular bit of content referenced by one of my internal URIs. e.g. I can take the request metadata, lookup in my system what mydatastorescheme://podcast/1234 is, get its title, description, presenter name, audio stream URL, etc and I can fill out a MediaItem with that information.
However this approach seems somewhat naive and could balloon out a bit when it comes to supporting a wide variety of content types as simple as it is initially. I encountered a roadblock here when it comes to live radio streams, as the MediaItem is immutable and I have a need to hit another part of my API at scheduled times in order to update certain parts about the metadata (i.e. what radio program is currently airing, who is presenting, etc). This lead me down the path of looking more at the integration with ExoPlayer and creating custom media sources.
I've been attempting to set this up for the last few days with limited success and with some uncertainty over whether I'm using things in the right way.
The first problem I'm tackling is loading simple, on demand content with unchanging metadata (like the podcast example above). I've looked at both MediaSource factories and DataSource factories for achieving this (particularly the ResolvingDataSource). There's a few different roadblocks I've run into with trying each of these approaches:

Using the DefaultMediaSourceFactory with a ResolvingDataSource doesn't work to resolve my content before creating a media source as the media sources are created before the data source is used, the DefaultMediaSourceFactory also aborts if the local configuration of the MediaItem is null, which it is for me at this stage since the RequestMetadata still needs to be resolved.
It would be wrong to simply put my internal URL from the RequestMetadata into the local configuration, as the type of the media is still unknown at this point, so the DefaultMediaSourceFactory wouldn't be able to correctly select the right MediaSource and would just fall through to the default ProgressiveMediaSource.
Using a CompositeMediaSource I am able to set up a loader to resolve my internal URI to an actual MediaItem with local configuration and metadata, I can then pass this to DefaultMediaSourceFactory to get a MediaSource which I can prepare as a child of my CompositeMediaSource. However, I'm not certain if this is an ideal approach (using a media source factory inside another media source), I've seen a question asked about this without really getting an answer on it specifically (here: https://github.com/androidx/media/issues/17)
Using the CompositeMediaSource approach I can get the audio content playing but the metadata doesn't seem to update. From tracing through the code execution it seems like the block that builds new metadata from incoming playback info (in ExoPlayer::updatePlaybackInfo) isn't getting run due to either mediaItemTransitioned being false or the staticMetadata being the same across the previous and new playback info objects. My setup is very similar to that seen in the above linked question. In onChildSourceInfoRefreshed I'm simply calling refreshSourceInfo with the new timeline as seen in some built-in composite media sources like WrappingMediaSource. I'm unsure why this doesn't carry through and update the metadata in the player.
Essentially I'm hoping to reuse as much of the existing media source setup as possible, just wrap it, but I have a need to perform some network operations before deciding upon which media source to go with, the MediaSource.Factory seems like an ideal place for this except that it must immediately return a value.

If I can get that working then the next step would be working out what's required (likely in another custom MediaSource) to load a stream for playback, then call an API at specific times to fetch the metadata for the next airing program (API has the current and next available with timestamps for the start and end times of each). This feels like it's a job for periods on a timeline? But the mechanism through which to make those schedules API calls and surface the metadata is still unclear to me.
The documentation doesn't really have much info in it for worked examples on customized Media Sources, and resolving media lazily from an internal API seems to be a common-ish question just with different nuances. I read through another example of this here: https://github.com/google/ExoPlayer/issues/5883 though it still leaves some questions unanswered (such as my questions above on the use of a factory inside a media source, or the issue with metadata now flowing through from the added child source to the player.
If I could get some guidance on these questions or if this is completely the wrong direction some guidance of what the right direction is, then that would be much appreciated.

I think you're hitting a couple of different existing issues/feature requests:

https://github.com/androidx/media/issues/33
https://github.com/google/ExoPlayer/issues/3165

To specifically answer some of the parts of your post:

I encountered a roadblock here when it comes to live radio streams, as the MediaItem is immutable and I have a need to hit another part of my API at scheduled times in order to update certain parts about the metadata (i.e. what radio program is currently airing, who is presenting, etc).

I think this would be resolved by #33? (without needing a custom media source)

Using the DefaultMediaSourceFactory with a ResolvingDataSource doesn't work to resolve my content before creating a media source as the media sources are created before the data source is used, the DefaultMediaSourceFactory also aborts if the local configuration of the MediaItem is null, which it is for me at this stage since the RequestMetadata still needs to be resolved.

If you want to use ResolvingDataSource I think you should either always put your custom URI in the MediaItem.localConfiguration.uri (before you even pass the MediaItem to MediaController), or move it there during MediaSession.Callback.onAddMediaItems. This means that MediaItem.localConfiguration.uri will be non-null when it hits the MediaSource.Factory and is passed to ResolvingDataSource, at which point you can transform it to the real URI.

It would be wrong to simply put my internal URL from the RequestMetadata into the local configuration, as the type of the media is still unknown at this point, so the DefaultMediaSourceFactory wouldn't be able to correctly select the right MediaSource and would just fall through to the default ProgressiveMediaSource.

This reflects a limitation of DefaultMediaSourceFactory, rather than something inherently 'wrong' imo. Improving this is tracked by #3165. Given this limitation, and the fact you're able to run all your resolution code inside MediaSession.Callback.onAddMediaItems, that seems like possibly the best approach until #3165 is implemented? If I read your post properly, the only part missing when you followed this approach is updating the metadata during playback (note that ICY metadata from internet radio will get updated during playback).

The documentation doesn't really have much info in it for worked examples on customized Media Sources

This is sort of intended - customising MediaSource implementations is very fiddly, and we don't expect many developers to need to go down this route. It should only really be needed if you're trying to support a completely different streaming format (e.g. something like HLS or DASH, but different), or something with very fiddly metadata like server-side ad insertion. Just adding an async resolution layer (as you're trying to do here) shouldn't need a custom MediaSource.

Is there an expected resolution timeframe for #33? I can populate my MediaItem in onAddMediaItems with my best available metadata at the time of adding (i.e. podcast episode name and show name for a podcast, radio station name for a radio station), this would also allow the DefaultMediaSourceFactory to correctly pick up HLS streams. But within the next 1-3 months I will have to ensure that the metadata is updated with information about the current program/presenter, sometimes the current track, chapters in audiobooks, etc and as far as I'm aware we don't have this information coming through a mechanism like ICY, only via an API.

Is there an expected resolution timeframe for https://github.com/androidx/media/issues/33?

I'm afraid we don't have a timeline for this.

Picking up another comment you made on https://github.com/google/ExoPlayer/issues/11031:

Regarding the topic of metadata during playback. The docs mention a mechanism for receiving this metadata by "adding a MetadataOutput to the player" but provides no further information on how to do that. https://exoplayer.dev/retrieving-metadata.html#during-playback, if there is a mechanism through which other customizations can write to such a MetadataOutput would that be an appropriate solution to support the live radio case?

This documentation is a little stale, apologies: MetadataOutput has been merged into Player.Listener. I will update the docs.

So, in the absence of #33 and #3165, is there any other mechanism for sideloading the pushing of metadata updates to the player that doesn't get too fiddly? A way to manually trigger Player.Listener updates? or a custom MetadataRenderer? or a thin wrapping MediaSource that injects information into the Timeline.Periods?
Or at this stage does this need to be handled separately to Media3 (i.e. updating the app player UI and OS Media Notification without reference to the MediaMetadata coming from the Player)

I've just fixed a small mistake in my comment above, where I originally said:

If you want to use ResolvingDataSource I think you should either always put your custom URI in the MediaItem.localConfiguration.uri (before you even pass the MediaItem to MediaController), or move it there during MediaSession.Callback.onAddMediaItems. This means that MediaItem.localConfiguration.uri will be non-null when it hits the MediaSource.Factory and is passed to ResolvingDataSource, at which point you can transform it to the real URI.

This missed the fact that MediaItem.localConfiguration.uri is not transferred from MediaController to the session, so you have to move the URI from MediaItem.requestMetadata to MediaItem.localConfiguration.uri during MediaSession.Callback.onAddMediaItems - sorry for that.

A way to manually trigger Player.Listener updates?

I have not tested this, but you may be able to use ForwardingPlayer to achieve this. You would subclass ForwardingPlayer and hook the addListener method to add your own wrapper around the listener, such that you can manually invoke onMediaMetadataChanged whenever you like. You would then pass this ForwardingPlayer subclass to new MediaSession.Builder(...). This should result in your manual metadata changes propagating to the media session, and subsequently ending up in notifications etc. If you get this working it would be great if you could reply with your findings on #33.
For consistency, you will need to ensure that you also change the result of Player.getMediaMetadata when you invoke onMediaMetadataChanged. See general notes on maintaining consistency when subclassing ForwardingPlayer here: https://exoplayer.dev/customization.html#intercepting-method-calls-with-forwardingplayer
One thing to note: When you override ForwardingPlayer.addListener, you should delegate to super.addListener and not directly to delegate.addListener. This will ensure that the correct Player instance (your ForwardingPlayer subclass) is passed to Player.Listener.onEvents.

you may be able to use ForwardingPlayer to achieve this

This works. People are doing this: #256, #246

Thank you, I'll try that approach in the next week and report back

Closing because I think the question has been answered and the pending feature requests are tracked elsewhere.

I know I said next week in my comment previously but priorities ended up shifting a bit and I haven't had much of a chance to look at this.
Taking a look now I assume the approach is to override the getMediaMetadata() method in the ForwardingPlayer to return the desired metadata, and also triggering appropriate calls to onMetadata() in any ForwardingListeners added to the player to assist with UI/Notification updates. Does this sound correct and in line with the expected usage of ForwardingPlayer?
I assume that since the linked issue #246 is still open there is still a need for some additional invalidation in order to force the media notification to pull updated metadata? or forcing the media notification to check for new metadata is currently not possible?

Taking a look now I assume the approach is to override the getMediaMetadata() method in the ForwardingPlayer to return the desired metadata

Yep, this sounds right.

and also triggering appropriate calls to onMetadata() in any ForwardingListeners added to the player to assist with UI/Notification updates.

You will want to trigger onMediaMetadataChanged(), not onMetadata() - it is documented as follows:

Called when the value of getMediaMetadata changes.

Also ForwardingPlayer.ForwardingListener is private, so I wouldn't expect you to interact with that type directly. You should just be able to interact with the Player.Listener type, and as described above in https://github.com/androidx/media/issues/258#issuecomment-1453449978 you can get a reference to Player.Listener instances being added to your ForwadingPlayer subclass by overriding ForwardingPlayer.addListener.

Hey @icbaker,
Thanks for the suggestion with the ForwardingPlayer. I've implemented it, in order to update the media item (audio stream) metadata from a different source other than the initial or in-stream metadata.
So far it works quite well, but somehow the ICY metadata keeps getting delivered to listers that attach to the MediaController build from the Session which uses the ForwardingPlayer. (The notification e.g. only shows the metadata I propagate and not the ICY metadata)
I assumed that the ForwardingPlayer subclass which is passed to new MediaSession.Builder(...), would be the MediaController I get with MediaController.Builder(context, mediaSessionToken), but that doesn't seem to be the case.
Am I getting something wrong here?

@icbaker Yes, totally right.
The icy metadata is quite limited and we try to present only the richer information from an external API, but we might need the icy metadata as a trigger, though. So we can't totally block any icy onMediaMetadataChanged calls from within the actual player.
The idea based on your suggestion was, catch onMediaMetadataChanged calls in the ForwardingPlayer (maybe use them as a trigger to fetch 'richer' metadata from an api) and then call onMediaMetadataChanged with custom metadata on every attached listener.

Thanks - this sounds slightly different to the original question in this thread. Rather than re-opening a new issue, would you mind filing a new issue (you can just copy the content from your two comments here), and I'll follow up there. It would also be helpful to include a code snippet showing exactly how you've 'intercepted' the onMediaMetadataChanged call inside your ForwardingPlayer subclass.

authors: 6rism0 icbaker marcbaechinger sampengilly

repo: androidx/media


text:
Make a bunch of properties and functions accessible for extending cla…

See the bug report  #137

Please see my replies on https://github.com/google/ExoPlayer/pull/10423 for why we are unlikely to accept this PR in its current form.

source: gharchive/pull-request

authors: icbaker tzugen


text:
Make performance test results consistent

It's hard to tell what's going on in the performance test results.

Some of the file names appear to have a relationship with --width, e.g. wf_8_distr.time, but then I see things like wf_50_distr.time or p3b4_10_distr.time.
Underscores seem to play multiple roles in file names. If you split wf_64_distr.time by underscores, the test name is clearly the first element of the result. But in web-index_p3_2gram_2_distr.time, the test name is the first... 3 elements?
Some files appear abandoned in version control. e.g. _distr.time, maybe some subdirectories?
Some *.time files have more than just the output of time. They frequently have STDERR from kill, or messages like Files ../evaluation//intermediary//wf_seq_output and /tmp/distr_output/0 are identical.

I don't have a strong preference for the result format, but it would help if both the file names and contents were consistent.

Thanks for these comments!

Some of the file names appear to have a relationship with --width, e.g. wf_8_distr.time, but then I see things like wf_50_distr.time or p3b4_10_distr.time.

Some of these are very old files and results. I will delete them :)

Underscores seem to play multiple roles in file names. If you split wf_64_distr.time by underscores, the test name is clearly the first element of the result. But in web-index_p3_2gram_2_distr.time, the test name is the first... 3 elements?

That's a good point, I guess from now on we can have a convention (for the old files I am parsing from the right).

Some *.time files have more than just the output of time. They frequently have STDERR from kill, or messages like Files ../evaluation//intermediary//wf_seq_output and /tmp/distr_output/0 are identical.

This is a very good point. Actually all .time files have the pash logging information so that we can extract information from it. For example, PaSh outputs more fine grained time information (separated for compilation, optimization, execution, etc). Until know we have been using that information to plot performance results. Maybe from now on we can fix this to be slightly different, however I think that we might need pash logging information again. Do you have any ideas of how to solve this? Maybe we can just change the output file names to .log instead of .time?

Thanks for these comments!

Some of the file names appear to have a relationship with --width, e.g. wf_8_distr.time, but then I see things like wf_50_distr.time or p3b4_10_distr.time.

Some of these are very old files and results. I will delete them :)

Underscores seem to play multiple roles in file names. If you split wf_64_distr.time by underscores, the test name is clearly the first element of the result. But in web-index_p3_2gram_2_distr.time, the test name is the first... 3 elements?

That's a good point, I guess from now on we can have a convention (for the old files I am parsing from the right).

Some *.time files have more than just the output of time. They frequently have STDERR from kill, or messages like Files ../evaluation//intermediary//wf_seq_output and /tmp/distr_output/0 are identical.

This is a very good point. Actually all .time files have the pash logging information so that we can extract information from it. For example, PaSh outputs more fine grained time information (separated for compilation, optimization, execution, etc). Until know we have been using that information to plot performance results. Maybe from now on we can fix this to be slightly different, however I think that we might need pash logging information again. Do you have any ideas of how to solve this? Maybe we can just change the output file names to .log instead of .time?

New bullet:

baseline_sort has _seq and _small_seq variants whereas other datasets have only _seq.

authors: angelhof zyrolasting

repo: andromeda/pash


text:
Add plugin style initialization file for zsh

This little file will allows zsh user to just source a single file to set up homeshick in their shell.
Furthermore you can now easily install homeshick as a plugin with a zsh plugin managers.
For example with zplug you can now add the following to your zshrc:
export HOMESHICK_DIR="$HOME/.zplug/repos/andsens/homeshick/"
zplug "andsens/homeshick"

Any feedback welcome.

I don't particularly like having a file with that name in the root when it is really only intended for zplug. How would you install this? It doesn't seem to follow the guide: https://github.com/zplug/zplug/blob/master/doc/guide/How-to-make-zsh-plugins.md

The example you link is only for autoload plugins.
I used zplug only as an example and all I was hoping to do is allow zsh user to run homeshick with completion by sourcing only a single file.

I have finally found the time to take a closer look at this. I'm not completely sure what you mean by your last comment.
Regardless, I think a integrations/ folder is the way to go, let me know if the file in its current form would work for zplug.

authors: FlorianFranzen andsens

repo: andsens/homeshick

license: mit

license_source: bigquery


text:
Minor Translation Fixes

Translated some untranslated strings and fixed minor errors.

This fix will go into the next release, but you can already replace the es-es.json file, if you want to test your translation.


text:
🛑 Fundsub landing page is down

In 19caea2, Fundsub landing page (https://www.fundsub.io) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Fundsub landing page is back up in 816626d.

repo: anduintransaction/upptime


text:
Div around inputs causing layout issue

Hi, Thanks for a great library 👍
I have encountered an issue with append/prepend fields where rendered inputs are causing a layout problem.

Because the inputs are wrapped in a
 this results in the field being truncated visually and not filling the available space. The following shows a normal input above an append/prepend input.

Can the inputs be wrapped in a <React.Fragment> to prevent this side effect?

Hi, thanks for checking my library! Could you show me your JSX also? The input inside TextInputGroup is not wrapped with
 in my source code actually, let me investigate more after seeing your code.

Here is a snippet of JSX for the input that is causing the issue.
Accounting scheme(s)

      <InputGroup>
        <TextInput name='accountingScheme' value={this.state.accountingScheme} required
          onChange={this.handleChange}
        />
        <InputGroupAddon addonType='append'>
          <Button id='SchemeInfo' type='button'>
            <svg className='icon' width='20' height='20'><use xlinkHref='#info' href='#info'></use></svg>
          </Button>
          <UncontrolledTooltip placement='right' target='SchemeInfo'>
            Use this box to record details of any Tax accounting schemes that you use
          </UncontrolledTooltip>
        </InputGroupAddon>
      </InputGroup>

The Button, InputGroup, InputGroupAddon, UncontrolledTooltip components are all from reactstrap.

Oh I see, I thought you were using the TextInputGroup from my library, sure I will make the change and let you know today!

@ducksoupdev I've updated the package

Thanks for the prompt fix. Awesome 👍


text:
Accessing the method in the default parameters

I have a fairly un-RESTful API I'd like to use. The API only supports POST requests of a complex query object that returns a JSON report object. For example:
A POST to /reports/portfolio/runFundsReport' of this object:
{  queryDefinition:'',   filterDefinition: ', asOf:'datestring'  }
Is the equivalent of an "get :all, '/funds'" mapping.
I've successfully implemented the :all method like this:
post :all, "/reports/portfolio/runFundsReport", :defaults => {queryDefinition:query,
  		  									      restrictionExpression:'${(!like(report.field3, "Coinvestment"))}',
  												asOf:DateTime.now.strftime('%Y-%m-%d')}

Now I need to implement the :find method by putting the ID in the restrictionExpression. How do you reference the parameter passed in the argument to Model.find(123) to the defaults? Or can you?

This is what I have so far:

query = "strange report format language goes here"

post :all, "/reports/portfolio/runFundsReport", :defaults => {queryDefinition:query,
  		  									restrictionExpression:'${(!like(report.field3, "Coinvestment"))}',
  											asOf:DateTime.now.strftime('%Y-%m-%d')}

post :find, "/reports/portfolio/runFundsReport", :defaults => {queryDefinition:query,
  		  										restrictionExpression:'${(report.field9 == ' + id + ')}',
  												asOf:DateTime.now.strftime('%Y-%m-%d')}

Note the attempt to use 'id' in the defaults parameters in the :find mapping. I'm guessing that since the parameter to find isn't pulled out and added to the parameters until the first few lines of prepare_parms in request.rb that the ID isn't available to be mapped like this. Which leaves me with Funds.find(id:12345) instead of just Funds.find(12345)? I suppose I could create my own find() that masks that.

I figured out my own problem. By reading request.rb closely I figured out that it calls the request callback AFTER it calls prepare_params which means the argument to find() is inserted as :id in the post_params.  Using that and the response callback I can successfully modify the request and response. This is what I ended up with for anyone attempting this themselves:
module FMAPI

  module Models

  	class Funds < Flexirest::Base

  		# This before_request adds the correct POST arguments for each method to retrieve the correct result from the backend.

		before_request do |name, request|
			# Since the request filter happens AFTER the prepare_params call we can successfully trap the id argument in the find call and and put it into the restrictionExpression argument
			if name == :find
				id = request.post_params.delete(:id)
				request.post_params[:restrictionExpression] = '${(report.field9 == ' + id.to_s + ')}'
				request.post_params[:queryDefinition] = '<complex query language>'
				request.post_params[:asOf] = DateTime.now.strftime('%Y-%m-%d')
			elsif name == :all
				request.post_params[:restrictionExpression] = '${(!like(report.field3, "Coinvestment"))}'
				request.post_params[:queryDefinition] = ''
				request.post_params[:asOf] = DateTime.now.strftime('%Y-%m-%d')
			end
		end

		# The backend returns a complex object so we have to dig out the actual values we are interested in
		after_request do |name, response|
			if name == :find
				# get the body, parse it, and extract out the first entry in the values array
				body = response.body.blank? ? {} : JSON.parse(response.body)
				response.body = body['values'][0].to_json
			elsif name == :all
				# get the body, parse it, and pull out the embedded values array
				body = response.body.blank? ? {} : JSON.parse(response.body)
				response.body = body['values'].to_json
			end
		end

  		post :all,  "/reports/portfolio/runFundsReport"
		post :find, "/reports/portfolio/runFundsReport"

  	end

  end

end

The only thing I'd like to optimize is to have have to re-encode the JSON in the after_request just to pass the HAL tests since it expects a string and not already parsed JSON. But at least it works.

repo: andyjeffries/flexirest


text:
CVE-2019-19844 potentials

Hi,
After CVE-2019-19844 was announced I had a look through our internal Django project and dependencies to check it wasn't affected and wanted to make sure there weren't any attack angles.
Here is the potential misbehaving line in this project https://github.com/anexia-it/django-rest-passwordreset/blob/d6d46fcc3dd54f46ca60957bdb21cade563eeac5/django_rest_passwordreset/views.py#L147 - a database search with __iexact  which can match with a different address under the conditions in the CVE.
It seems to be mitigated by
https://github.com/anexia-it/django-rest-passwordreset/blob/d6d46fcc3dd54f46ca60957bdb21cade563eeac5/django_rest_passwordreset/views.py#L180 as the destination email is fetched from the DB and so the token to the user's  actual email address.
To completely resolve the issues described in the CVE you'll need to do a _unicode_ci_compare after the data is returned from the DB to filter out the addresses that should have been matched by __iexact.
Let me know if you want me to try to write a patch for this.

Hi,
thank you for raising this issue. I'm no longer maintaining this library, but @anx-hnezbeda is as far as I know :) Anyway, as I am the original author of the linked code I'd like to give my 2 cents ;)
Basically you are correct, the issue is mitigated as we create a new token in the database which is related to the user, and not just the e-mail address. Sending the token (via e-mail, text message, whatever other protocol the dev wants to use) is not handled by the library itself, but via whatever implementation the dev decides to use when listening to the reset_password_token_created signal.

Hi, what's the status on this one? It seems important... Thx!

repo: anexia-it/django-rest-passwordreset


text:
Issue pulling in multiple languages

Hi,
I'm using latest version from package.json "gatsby-source-prismic": "^3.0.0",
I have two locales in Prismic: Finnish & English (UK) which are locales "fi" and "en-gb".
My gatbsy-config looks like so:
{
      resolve: `gatsby-source-prismic`,
      options: {
        repositoryName: `${process.env.PRISMIC_REPOSITORY}`,
        accessToken: `${process.env.PRISMIC_API_KEY}`,
        //linkResolver: ({ node, key, value }) => post => `/${post.uid}`,
        schemas: {
          homepage: require("./src/schemas/homepage.json"),
        },
        lang: "*",
      },
    },

When I query the graphql I can see the en-gb content like so:
query MyQuery {
  allPrismicHomepage {
    edges {
      node {
        id
      }
    }
  }
}

Returns:
{
  "data": {
    "allPrismicHomepage": {
      "edges": [
        {
          "node": {
            "id": "<SNIP>"
          }
        }
      ]
    }
  }
}

Any ideas :D? I am certain the content is there.

Sorry, the content was deleted... :facepalm:

repo: angeloashmore/gatsby-source-prismic


text:
New feature: Two factor authentication

This pull request contains multiple improvements inside the whole application, two factor authentication implementation, a profile page and a general cleanup for the auth module and validated the HTML structure overall.

Profile page added
Quickfix: Handle case for next.url
2FA template and quickfixes
Quickfix: Adjusted margins to profile and 2fa
Quickfix: Improved comments
2FA connected to DB
2FA implemented to login
Validated HTML structures

Properly handle next.url in case of needed inside auth module
Properly handle g.user in proper case once user has logged in.


text:
Fully support coroutines

First I want to thank you a lot for this library ! Scoped Storage is such a mess, and you provide a lot of help. 🙏
What feature you want to suggest?
Expose suspending functions that return the result of the operation without using callbacks. It would be usefull for DDD / Clean architecture where Structured Concurrency is much needed.
Your solution
A simple example, the API would be something like
suspend fun DocumentFile.copyFolderTo(
    context: Context,
    targetParentFolder: DocumentFile,
    skipEmptyFiles: Boolean = true,
    newFolderNameInTargetPath: String? = null,
    // No callbacks since it makes no sense in suspending functions
) : FolderResult // Sealed class with Success/Failed for example or whatever

Your current alternative
Far from perfect, but at least it suspends until work is finished and I get the success status as a Boolean
suspend fun doStuff(uri: Uri): Boolean = withContext(Dispatchers.IO) {
    val sourceDocumentFile = DocumentFile.fromTreeUri(application, uri) ?: return false

    return suspendCancellableCoroutine { cont ->
        sourceDocumentFile.copyFolderTo(
            context = application,
            targetParentFolder = DocumentFile.fromFile(internalApplicationFolderFile),
            callback = object : FolderCallback() {
                override fun onCompleted(result: Result) {
                    cont.resume(true)
                }

                override fun onFailed(errorCode: ErrorCode) {
                    cont.resume(false)
                }
            }
        )
    }
}

Thanks for the idea. That would be a cool stuff in this library. Refactoring existing callback style in the project may require major version upgrade because of the breaking changes. I will release the support in v2.0.0 along with Kotlin version upgrade.

Hi, i've just released v2.0.0 which supports Kotlin Flow. Pls check it out.

authors: NinoDLC anggrayudi

repo: anggrayudi/SimpleStorage


text:
How to start?

I'm trying to get a DB2 database up with your image from https://registry.hub.docker.com/u/angoca/db2-sample/.
The instructions say to start it with docker run, but that doesn't do anything, it's just bash. How do I get a database up and connect to it?

This is an image that has db2 installed, an instance has been created and the sample db was also created.
You can access the sample database by doing:

Changing the session to db2inst1 user
Starting the instance if it is not started: db2start
Connecting to the sample database: db2 connect to sample

If you want to have the interactive mode, you just type db2 (or db2 -t for sentences terminated by semi colon).
Please let me know if the image works correctly.

I tried the db2inst1 image, and have had no luck starting up db2 afterward.  So I ran sudo docker run -i -t angoca/db2inst1 /bin/bash, and then tried to su - db2inst1, db2start.  It throws an exception: SQL1042C  An unexpected system error occurred.  I tried googling that exception and one of the suggestions was to switch back to root and try to run db2iupdt.  But that throws the same exception.

Have you tried in privilege mode? --privileged=true
sudo docker run -i -t --privileged=true --name="db2inst1" -p 50000:50000 angoca/db2inst1

Please check the other image documentation, in order to validate the environment: https://registry.hub.docker.com/u/angoca/db2-instance/

I did, but I needed to mount a volume as well: sudo docker run -i -t --privileged=true --name="db2inst1" -p 50000:50000 -v /db2:/home angoca/db2-instance.  Thank you for your help!

i pull the angoca/db2-instance:lastest image ,and follow the steps as
https://hub.docker.com/r/angoca/db2-instance/  told.
now i want to manually create database,so i tried

docker run -it --privileged=true --name=db2 -p 50000:50000 -v /db2/home:/home angoca/db2-instance

./createInstance  (in container)

sodu db2inst1

$ db2

the forth command shows
db2: command not found'

then i tried "db2start",it still  shows "not found" error
am i missing something?

Hi Snecker,
In order to run db2 commands, it is necessary to have the db2profile. In your case, you change to the instance user without loading the profile. It lacked the dash option in the su command. The correct one is:
su - db2inst1

In any case, if the DB2 profile is not loaded, you can loaded manually by using the source command (or dot)
. ~db2inst1/sqllib/db2profile

Remember to put a whitespace after the dot.
For more details, you can check the test usage of this image in Travis-CI: https://travis-ci.org/angoca/db2-docker-travis/builds/130736866

@angoca
it works! thank you

When I use the db2-sample image on a local Docker (latest Mac build), I can start db2start fine (using all the advice in this thread). The docker instance stays up and running because it is associated with a pseudo terminal and a bash session that doesn't exit.
I'd like to export the docker image to dockercloud so that I can deploy and execute the DB2 server from my own node choice (here Softlayer).
I can load and deploy the docker image (for db2-sample) to my Softlayer docker node. I can start it.
However, I can't find a way to keep it running because, I believe, dockercloud does not support the pseudo-terminal connection. Therefore, the docker image terminates as soon as the dockercloud run session concludes.
Is there a way to start the database in the image (like db2start does) but with a process that does not daemonize itself and so never appears to terminate?
Rather than asking questions about how I think my goal may be reached, the direct question is, "how does one use this db2-sample docker image on dockercloud so that it stays up and running with a started db2 instance listening to port 50000?"

I have faced the same problem, and I have not found a solution for this. I have tried different strategies to have a open image (created from a Dockerfile) but none of them have worked.
At this time, I do not have any proposal to help you.

authors: angoca functionalprogrammer ksrinivs64 lonniev snecker


text:
How to use function in filter row

In old version of angular gantt (may 2014), filterRow worked with a function but not with current (or I don't understand how to use it).
Example : http://plnkr.co/edit/nsUbtj6DlaMwQ5qVojuX
Enter for example "kickoff" in the text input : the simple list will be filtered but not the gantt chart...

You can ignore it... api.rows.refresh() works fine...

How have you managed to use "api.rows.refresh()"?
Thanks.

@VincentLemordant Please read the docs, almost each of your question have an answer in the docs. If you still don't have the answer after reading the doc, please just read it again. And then, ask questions.

authors: Toilal VincentLemordant julienmeyer

repo: angular-gantt/angular-gantt


text:
Focus is lost when showSelectionBarFromValue-option changes

Steps to reproduce

Make a slider with a set showSelectionBarFromValue.
Add a line that changes that attribute in a watcher which watches the value of the slider.
Focus the slider and use the keyboard to manipulate the slider.

Expected behaviour
Changing the showSelectionBarFromValue (or any other options this might be a problem for) should not cause loss of focus for the slider.
Actual behaviour
The watcher triggers and focus is lost from the slider when the showSelectionBarFromValue is changed. One has to focus something else and the refocus the slider to regain focus. But changing it again causes loss of focus.

Could you please provide a demo showing the issue? However, if it is what I think, then it's "normal": when an option is changed, the slider is fully re-rendered and thus the focus is lost...

Closing as there was no answers for 10 days.

Ah, sorry! I had completely forgot about this issue, my bad!
I tried creating a demo, but I unfortunately was not able to reproduce a functioning Listener in your demo Fiddle.
Your explanation sounds likely, and seems to explain the issue I'm experiencing. I understand that this might be normal behaviour, but is it necessary for the options to work? I would think allowing people to update options without losing focus would be a nice feature, as a developer (such as myself) might want to show some dynamic data, like for an example a point on the range, that at times change.
I'll give creating a demo one more try, and edit here if I get it working.

Yes I totally understand your issue. However, I think that for now redrawing the slider when an option change is the safest/easiest way to handle that.
For your specific issue, a specific behavior could be added to refocus the correct element after a rerender if one was focused before. Do you want to provide a pull request for it, I can help and guide you if you want?

Even if I'm not really active anymore on this project, I'm still enthusiast so I already wrote a solution... 😄 I could reproduce your issue but not exactly like you described: after rerender, the element is still focus but can't be moved with the slider... Where you totally losing the focus? If yes, on which browser?

authors: ValentinH dagerikhl

repo: angular-slider/angularjs-slider


text:
4angular.js:9199 Error: [$compile:ctreq] Controller 'uiTreeNodes', required by directive 'uiTreeNode', can't be found!

Hello
i try to install angular-ui-tree
i have this version of angular : v1.2.4
i try with basic example : https://jimliu.github.io/angular-ui-tree/tree.html
i call angular-ui-tree.js
my code is like this : https://jsfiddle.net/freak13/9xhgp2ez/
but i have an error
4angular.js:9199 Error: [$compile:ctreq] Controller 'uiTreeNodes', required by directive 'uiTreeNode', can't be found!

You fiddle not working at all. It is not throwing [$compile:ctreq] Controller 'uiTreeNodes', required by directive 'uiTreeNode', can't be found!.

This is probably because the scripts aren't included locally in the fiddle.  My suspicion is @noog has his local code, which is different from this fiddle altogether.  But ya that fiddle doesn't work because the scripts are not actually there, you can see it throwing 404 errors.
This can probably be closed due to inactivity and lack of response from @noog

Closing this issue due to inactivity. See #815 for more information.
Please create a new issue is this still occurs with the current version of the component.

authors: derek-adair jacobscarter noog stripathix

repo: angular-ui-tree/angular-ui-tree


text:
Footer template duplicating  ui-grid 3.0

When using a custom footer and using the ui-selection directive for ui-grid 3.0  the footer is being duplicated inside of the selection column.

I believe this is no longer occurring - could you confirm?  My plunker: http://plnkr.co/edit/yYLCBBmBB30ljOaxsdst?p=preview

Believed to be fixed in recent changes, no updates from information request, assuming is resolved and closing.

repo: angular-ui/ng-grid


text:
group rowHeader unexpectedly disappears

This plunker is based on the complex grouping tutorial:
http://plnkr.co/edit/3lAuYzzGBwaQ3PJRSvh8?p=preview
I have disabled the custom columnsProcessor in the plunker. Now when I expand a group the expand button column is hidden. If I enable to columnsProcessor (event with all of the functionality disabled), the problem goes away.

If we change treeRowHeaderAlwaysVisible to true, then the problem goes away.  But that isn't really what we want.
If we take the simple tutorial, and set treeRowHeaderAlwaysVisible to false, then the problem arrives: http://plnkr.co/edit/FHKMyWSZC530QVRNgz2T?p=preview

This is still a problem. On the 209 tutorial, remove grouping on both grouped columns, then group by "state".


text:
ui-mask in a directive with parsers/formatters

I'm trying to integrate AngularJS ui-mask and $parser/$formatters in the same directory in way to have a complete directive to handle all my date inputs. I don't know if the problem is with ui-mask but my parser/formatter definition work right when in a separated directory...
Here is my plunk: https://plnkr.co/edit/DOA7h7XxrvngsMAIzc5P?p=preview
If for example I write "01/01/1985" I would like to have "473385600000" in the output.
Can you help me please?

Well, I've founded a solution that I leave here just in case: https://plnkr.co/edit/uKHApunRK9muCGCE5uXx?p=preview

repo: angular-ui/ui-mask


text:
Make it easier to customize

Right now, I just exposed everything via the directive controller. Although this gives you a LOT of control, it requires you to make your own secondary directive. For now, I actually think this isn't the most terrible thing in the world (because you have a LOT of control over how you want your template to get generated, have no obfuscation around the <textarea>, can customize almost any and all behavior, etc).
That said, I'd be curious to explore an automatic way of translating element attributes into controller property overrides. So <textarea ui-mention find-choices="doSomething"> automatically gets mapped onto the controller instead of the default one. This may involve using bindToController however I was struggling with trying to get it to work and had no real success.

This directive is riddled with bugs, but has a nice API : https://github.com/aurbano/smart-area

I don't like the api. Hard coded to Twitter and you have big configuration objects as a property, something I have been think about moving away from

Your module is really easy to understand and use.. until the moment I want to some processing with the "selected mentions" in my outer controller / directive... hmm .
So far all I got is the resulting text , something like
hello , @[steve rodriguez:hi] , @[kyle corn:123] , @[megan burgerpants:ab-] hurray !
Let me see if I can do something. Thanks for the cool module

@phuyem the $mention object contains any additional data you might need, including meta data. I think we could iterate on whether the model should contain a human-readable string, a tagged string, or an object with everything all tied together, but I feel like the raw being the model and all other stuff treated as meta-data (available through $mention) works well enough. In addition, if you have multiple mentions next to each other you can assign their $mention object to something other that name:
<textarea ng-model="post.text" ui-mention="post.metadata"> (I think).

Actually, I did modify your code for our PRODUCTION to something similar to the way ui-tinymce boostrap :
 <textarea
            ui-mention="uiMentionOptions"                        >
     </textarea>

and from MY controller:
                // ui mention options
                $scope.uiMentionOptions = {
                    minLength: 1,
                    srcFn:
                        //_.throttle(
                        function (match, mentions) {
                        var params = {action: 'searchUsers', q: match[1], limit: 6};

                        return  UserService. remote('GET', params, null, true).then(function(response){
                            return response.data;
                        });
                        //return scope.choices;

                    },
                        //300),
                    encodeFn :  function (mention) {
                        return '' +           $scope.uiMentionOptions.labelFn(mention)  + '' ;
                    },
                    labelFn :  function (mention) {
                        return mention.displayName ;
                    },

                };

So this way, I can interact with your ui-mention directly from my controller (where many things are workign together there)  without creating a new directive

@amcdnl smart-area rocks! 10 times better than this crap.

authors: ProLoser amcdnl phuyem victorhazbun

repo: angular-ui/ui-mention


text:
Css .ui-select-choices-row:hover making it hard to read dropdown items

Bug description: When we take the mouse over a drop-down item that is already selected (blue background). The background turns grey. This makes the text hard to read.
select.css:
Changed the following to fix it temporarily
.ui-select-choices-row:hover {
background-color: #3875d7;
color: #fff;
}
Version of Angular, UI-Select, and Bootstrap/Select2/Selectize CSS
Angular:1.3.15
UI-Select:0.16.1
Bootstrap/Select2/Selectize CSS (if applicable): theme = Select2 0.16.0

Can you post a plunkr and repro steps? Maybe a screenshot? I can't seem to see it in the examples: http://angular-ui.github.io/ui-select/demo-basic.html

This is how it looks when I select it -

When I do a mouse over the currently selected option I can't read the text because of the css -

And when I take the mouse over a different option, both get highlighted -

Can you create a plunkr? I still can't see this happening in http://angular-ui.github.io/ui-select/demo-basic.html
Maybe you are using a different version of select2.css to the examples?

I also have this problem. thank for @pawankeer ,your  temporarily solution can fix my bug.

+1

@jacksonrdlc can you post a plunkr or similar? A +1 isn't very useful here and no one has posted a repro sample yet.

@user378230 @pawankeer , Here's a plunker that reproduces the issue: http://plnkr.co/edit/xTHmqhXY8I8OZMXZUuMt?p=preview
Here's what I'm finding out:
All <li> options are assigned a .ui-select-choices-row css class. When an item is selected, the .select2-highlighted class is added and applies the blue background.  On hover over any choice element, this activates .ui-select-choices-row:hover and applies the gray background (i'm seeing #f5f5f5 in my version).  In our problem scenario, it is this class that overwrites the blue background with the gray one (regardless if it selected or not). You can inspect the element with your browser's debugger tools for these classes and toggle the hover action.
My solution:  Load the select2.css script AFTER the ui-select's css script.  I believe this is an order of precedence issue with css which in this scenario the code that appears later would override the previous if both have the same specificity: http://stackoverflow.com/questions/25105736/what-is-the-order-of-precedence-for-css.  In the plunker example above, I deliberately loaded the select2.css script first.

@alfredcalayag Looking at the examples select2.css is already loaded after select.css (ui-select) so your plunkr has been created incorrectly. Thanks for finding out the problem though, it will help future users! :+1:
Closing this as a usage issue.
Future users:
Please load select2.css after select.css (or submit a PR with a proper fix).

@user378230 yes, that's correct.  I changed the loading order (incorrectly) to explicitly to reproduce the issue and share.  Thanks and hope this was helpful.

authors: alfredcalayag bigbigworld jacksonrdlc pawankeer user378230

repo: angular-ui/ui-select


text:
cli compiler output to console is leaking some shady characters

🐞 Bug report

[ ] new
[X ] build
[X ] serve
[ ] test
...

Description
Not much to explain here, check out the screenshot for the best description you can get.
🔬 Minimal Reproduction
Don't know how.
🌍 Your Environment

Angular CLI: 12.1.1
Node: 16.6.1 (Unsupported)
Package Manager: npm 7.20.3
OS: win32 x64

Angular: 12.1.1
... animations, cdk, cli, common, compiler, compiler-cli, core
... forms, language-service, localize, material
... platform-browser, platform-browser-dynamic, router

Package                         Version
---------------------------------------------------------
@angular-devkit/architect       0.1201.1
@angular-devkit/build-angular   12.1.1
@angular-devkit/core            12.1.1
@angular-devkit/schematics      12.1.1
@angular/flex-layout            12.0.0-beta.34
@schematics/angular             12.1.1
ng-packagr                      12.1.2
rxjs                            6.6.7
typescript                      4.2.4

I'm not  sure when this started happening. just noticed it today.

@webmandman without a reproduction it will be hard to get to the bottom of this.
What is the output when stdout is redirected to a file where colors are not supporter?
ng build > log.txt

Initial Chunk Files               | Names         |      Size
main.4f450971069e8eee718f.js      | main          | 852.69 kB
styles.db00f66c52ad028dbac8.css   | styles        | 580.38 kB
polyfills.fe8ebe19d7929be49c0e.js | polyfills     |  45.11 kB
runtime.1aff551df05176b47fc2.js   | runtime       |   2.86 kB

                                  | Initial Total |   1.45 MB

Lazy Chunk Files                  | Names         |      Size
434.feffaf2160477170fee3.js       | -             | 604.08 kB
370.c90e7893940b51d8ed30.js       | -             | 512.75 kB
653.ae81570389d29565b9cd.js       | -             | 113.78 kB
601.f683e4a9b535fc3f5bba.js       | -             | 112.59 kB
905.bdc962704af2d4ba299a.js       | -             |  77.74 kB
115.2e963c062eaacc1af0d1.js       | -             |  16.54 kB
4.71d518719e4f2389cd91.js         | -             |  10.10 kB
common.37e91decca098d3a4bc0.js    | common        |   9.55 kB
224.1cbb0757c739564fd98f.js       | -             |   2.94 kB

Build at: 2021-08-20T09:31:55.903Z - Hash: 11399ebe269932e19bc5 - Time: 88441ms

now that I'm seeing this output, looks like the 39m0m is a line ending character that is wrapping  into the next line.

Sorry I won't be able to reproduce this repo. I tried to reproduce it in a new angular app, but all seems fine.

Thanks for reporting this issue. However, you didn't provide sufficient information for us to understand and reproduce the problem. Please check out our submission guidelines to understand why we can't act on issues that are lacking important information.
If the problem persists, please file a new issue and ensure you provide all of the required information when filling out the issue template.

repo: angular/angular-cli


text:
bootstrap.css failed to decode downloaded font OTS parsing error: invalid version tag

Please provide us with the following information:

OS?
Windows 8.1
Versions.
angular-cli: 1.0.0-beta.15
node: 6.3.0
os: win32x64
npm:3.10.3
Repro steps.
Trying to use bootstrap.css only from bootstrap package.

npm install bootstrap --save
updated angular-cli.json with:
"styles": [
"../node_modules/bootstrap/dist/css/bootstrap.css"
],

The log given by the failure.
Log from chrome console.
2016-08-07T23%3A59:1 Failed to decode downloaded font: http://localhost/448c34a56d699c29117adc64c43affeb.woff2
2016-09-29 10:56:10.687 2016-08-07T23%3A59:1 OTS parsing error: invalid version tag
2016-09-29 10:56:10.985 2016-08-07T23%3A59:1 Failed to decode downloaded font: http://localhost/fa2772327f55d8198301fdb8bcfc8158.woff
2016-09-29 10:56:10.985 2016-08-07T23%3A59:1 OTS parsing error: invalid version tag
Mention any other details that might be useful.
during ng build, files like 448c34a56d699c29117adc64c43affeb.woff2 are built in dist directory

@daftster did you use IIS?
i was having that issue and solve by edit web.config
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="AngularJS" stopProcessing="true">
                    <match url="assets\/*|/*.js|/*.css|/*.map|/*.woff2|/*.woff|/*.svg|/*.ttf|/*.eot|index.html" />
                    <action type="None" />
                </rule>
                <rule name="AngularJS2">
                    <match url=".*" />
                    <action type="Rewrite" url="index.html" />
                </rule>
            </rules>
        </rewrite>
        <staticContent>
            <remove fileExtension=".woff" />
            <remove fileExtension=".eot" />
            <remove fileExtension=".ttf" />
            <remove fileExtension=".svg" />

            <mimeMap fileExtension=".eot" mimeType="application/vnd.ms-fontobject" />
            <mimeMap fileExtension=".ttf" mimeType="application/font-sfnt" />
            <mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
            <mimeMap fileExtension=".woff" mimeType="application/font-woff" />
            <mimeMap fileExtension=".woff2" mimeType="application/font-woff2" />
        </staticContent>
    </system.webServer>
</configuration>

angular-cli: 1.0.0-beta.18
node: 6.8.1
os: darwin x64
Same issue here on Mac OS X. Fonts are delivered from dev server as content-type: 'text/html'. BTW, this has nothing to do with IIS, since content is served using ng server command

angular-cli: 1.0.0-beta.19-3
node: 6.9.1
os: win32 ia32
I am having the same issue. I use IIS, but it doesn't seem to be related as web.config changes have no effect.

If anyone needs a workaround, this is what I've done.

Copy bootstrap fonts to src/assets/fonts
Add following CSS to app.component.css

/* Workaround for issue: https://github.com/angular/angular-cli/issues/2424 */
@font-face {
  font-family: 'Glyphicons Halflings';

  src: url('assets/fonts/glyphicons-halflings-regular.eot');
  src: url('assets/fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('assets/fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('assets/fonts/glyphicons-halflings-regular.woff') format('woff'), url('assets/fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('assets/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
}

Following the css bootstrap3 tutorial (below), except using the code snippet instead of the one provided, I was able to get glyphicons to work.
<button type="button" class="btn btn-default" aria-label="Left Align">

</button>

Bootstrap tutorial:
https://github.com/angular/angular-cli/blob/master/docs/documentation/stories/include-bootstrap.md

Closing as this seems to be fixed, from @delasteve comment.

angular-cli: 12.0
node: 8.1.3
os: windows10 x64
Failed to decode downloaded font: http://localhost:4200/MaterialIcons-Regular.642aa7b0b9a5d6804ac6.woff2
dashboard:1 OTS parsing error: invalid version tag
dashboard:1 Failed to decode downloaded font: http://localhost:4200/MaterialIcons-Regular.3eac1f077c11eca36e5c.woff
dashboard:1 OTS parsing error: invalid version tag
dashboard:1 Failed to decode downloaded font: http://localhost:4200/MaterialIcons-Regular.4f16b06c1373d360e33e.ttf
dashboard:1 OTS parsing error: invalid version tag

I am having the same issue. I'm use ng server commadn.

authors: RainingNight andrelmp daftster delasteve hansl jnorkus mjaric


text:
Add A "remove component (ng rm c )" option in Angular CLI

Command
add
Description
In the Angular Cli isn't possible to remove a component from the poject by CLI .
If i have to remove a component, i need to delete the folder, and manually remove all the imports from the files where i used the component.
Describe the solution you'd like
It could be the same as the generate component feature but instead of creating a new one, it should delete one from the project, and all relative links.
It could be ng rm c
I would like to contribute myself to this feature because is something i was considering for a long time. Thank you so much.
Describe alternatives you've considered
No response

Duplicate of https://github.com/angular/angular-cli/issues/24703


text:
Angular AOT compilation failing. compiler.AnimationParser is not a constructor

Please provide us with the following information:

OS?

Windows 7, 8 or 10. Linux (which distribution). Mac OSX (Yosemite? El Capitan?)
Windows 10

Versions.

Please run ng --version. If there's nothing outputted, please run in a Terminal: node --version and paste the result here:

angular-cli: 1.0.0-beta.19-3
node: 6.9.1
os: win32 x64
Repro steps.

Was this an app that wasn't created using the CLI? What change did you do on your code? etc.

Yes, this app was created without CLI. I don't think I have actually used CLI to do anything, but it ended up in my package.json when I was updating it with release candidates and Angular 2.0.0 etc.
The log given by the failure.

Normally this include a stack trace and some more information.

Mention any other details that might be useful.
I am trying to use Angular AOT. When I tried to rollup, I was getting errors with ng2-bootstrap module not exporting. In one of the comment threads I saw something about needing the latest version of angular-cli. I installed angular-cli on the command line and now I am getting this error before rollup when trying to just trying to initiate AOT compilation...
TypeError: compiler.AnimationParser is not a constructor     at Function.CodeGenerator.create (C:\Projects\NeilKellyClient4\node_modules\@angular\compiler-cli\src\codegen.js:108:400)     at codegen (C:\Projects\NeilKellyClient4\node_modules\@angular\compiler-cli\src\main.js:7:36)     at Object.main (C:\Projects\NeilKellyClient4\node_modules\@angular\tsc-wrapped\src\main.js:37:16)     at Object.<anonymous> (C:\Projects\NeilKellyClient4\node_modules\@angular\compiler-cli\src\main.js:16:9)     at Module._compile (module.js:570:32)     at Object.Module._extensions..js (module.js:579:10)     at Module.load (module.js:487:32)     at tryModuleLoad (module.js:446:12)     at Function.Module._load (module.js:438:3)     at Module.runMain (module.js:604:10) Compilation failed

Thanks! We'll be in touch soon.

Nevermind I confused angular-cli with @angular/compiler-cli

I've just met very similar failure while aot compilation. can you give more info about how is this fixed
I'm running ngc -p my-aot-ts-config.json and my stack trace is following
TypeError: compiler.AnimationParser is not a constructor
at Function.CodeGenerator.create (D:\Projects\Angular2SandBox\node_modules@angular\compiler-cli\src\codegen.js:108:400)
at codegen (D:\Projects\Angular2SandBox\node_modules@angular\compiler-cli\src\main.js:7:36)
at Object.main (D:\Projects\Angular2SandBox\node_modules@angular\tsc-wrapped\src\main.js:37:16)
at Object. (D:\Projects\Angular2SandBox\node_modules@angular\compiler-cli\src\main.js:16:9)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.runMain (module.js:604:10)
Compilation failed

I also have that error:

ngc -p release/tsconfig-aot.json

TypeError: compiler.AnimationParser is not a constructor
at Function.CodeGenerator.create (/volumes1/workarea/Telematics/Jade/trunk/src/frontend/JadeDashboard/src/node_modules/@angular/compiler-cli/src/codegen.js:108:400)
at codegen (/volumes1/workarea/Telematics/Jade/trunk/src/frontend/JadeDashboard/src/node_modules/@angular/compiler-cli/src/main.js:7:36)
at Object.main (/volumes1/workarea/Telematics/Jade/trunk/src/frontend/JadeDashboard/src/node_modules/@angular/tsc-wrapped/src/main.js:37:16)
at Object. (/volumes1/workarea/Telematics/Jade/trunk/src/frontend/JadeDashboard/src/node_modules/@angular/compiler-cli/src/main.js:16:9)
at Module._compile (module.js:541:32)
at Object.Module._extensions..js (module.js:550:10)
at Module.load (module.js:458:32)
at tryModuleLoad (module.js:417:12)
at Function.Module._load (module.js:409:3)
at Module.runMain (module.js:575:10)
Compilation failed

@shybzzz @estabij  Yeah I had the error but it was with compiler-cli not angular-cli. (I'm not using Angular-cli for anything yet.) The way I got rid of it was using 2.2.0 for all the angular packages including compiler-cli. Then I don't know if this was necessary but I deleted the node_modules and then npm install to reload fresh everything and it worked.

update to version 2.2.1 solves the problem

authors: dicbrus estabij quiringk shybzzz


text:
feat: add utilities for typescript ast

'ast-utils.ts' provides typescript ast utility functions

LGTM. @alxhub do you want to review too?

LGTM. @alxhub ?

@emma-mens: Can you rebase this on top of master? I can help you

authors: emma-mens hansl


text:
test(@angular/cli): disable analytics gathering during CLI E2E

Currently, analytics is enabled which causes a lot of noise in our analytics report.

``


text:
fix: use explicit Number() instead of unary plus

Probably not important for the experienced js developers but it's more readable for newcomers (at least for me!).

I signed it!

Hi @RoPP, thank you for the PR. LGTM.

lgtm as well, thank you!

authors: RoPP filipesilva jkuri


text:
Remove ember-addon keyword from package.json

Searching for "ember-addon" on npmjs.org shows the angular-cli package due to it being declared in the keywords.

This PR changes the keywords to be Angular specific so this stops happening. Cheers!

I signed it!


text:
fix(@angular/cli): update copy-webpack-plugin to 4.1.1

This release picks up a ReDoS security patch in minimatch: https://nodesecurity.io/advisories/minimatch_regular-expression-denial-of-service

LGTM, thanks for updating this 👍

I'll make sure that at an absolute minimum, all the releases in contrib that relate to security get a pull request here as well.

That's much appreciated, honestly. You can ping me as well and I'll add make one. Is there a place where you list these contrib security releases, twitter maybe?

https://twitter.com/WebpackContrib


text:
angular中文版本，特性描述——代码拆分翻译出错

在angular中文版本的特性介绍中，代码拆分翻译和英文的意思不一致。
----------翻译原文-------
速度与性能
代码生成
Angular会把你的模板转换成代码，针对现代JavaScript虚拟机进行高度优化，轻松获得框架提供的高生产率，同时又能保留所有手写代码的优点。
统一平台
在服务端渲染应用的首屏，像只有HTML和CSS的页面那样几乎瞬间展现，支持node.js、.NET、PHP，以及其它服务器，为通过SEO来优化站点铺平了道路。
代码拆分
在服务端渲染应用的首屏，像只有HTML和CSS的页面那样几乎瞬间展现，支持node.js、.NET、PHP，以及其它服务器，为通过SEO来优化站点铺平了道路。
----------翻译原文-------
翻译还是不错的，感谢你们!使我能够快速学习angular~
我的github   zhouchangsheng

已改正。

authors: asnowwolf zhouchangsheng

repo: angular/angular-cn


text:
Merge pull request #1 from angular/aio

同步
注意：

新版本的文档位于aio分支下，master分支下是老版本的文档。
原则上不再接受对老版本的PR。

请先用你的 github 注册邮箱签署 CLA

多谢。但这个提交已经不适用于当前版本。


text:
how to reload ng-repeat data using angularjs and asp.net

How would you pass data code to angularjs variable. its working fine when the page loads. But when I click the button, for filter data. The server side does not load data.
protected void btnSearch_Click1(object sender, EventArgs e)
        {
string Query = "Select * from tblstudent WHERE student_name = 'Adeel'";
 var getstudentattendance = DbAccess.GetResult(Query);

      studentattendancejson = JsonConvert.SerializeObject(getstudentattendance, Formatting.Indented);
}

script type="text/javascript">
            var app = angular.module('myApp', []);
            app.controller('myCtrl', ['$scope', '$filter', function ($scope, $filter) {
                $scope.currentPage = 0;
                $scope.pageSize = 100;
                $scope.data = [];
                $scope.q = '';

                $scope.studentinformation = <%= studentattendancejson %>
                $scope.getData = function () {

                    return $filter('filter')($scope.studentinformation, $scope.q)

                }
                $scope.numberOfPages = function () {
                    return Math.ceil($scope.getData().length / $scope.pageSize);
                }

            }]);

            app.filter('startFrom', function () {
                return function (input, start) {
                    start = +start; //parse to int
                    return input.slice(start);
                }
            });

        </script>

                                                    {{info.student_name}}
                                                    {{info.father_name}}
                                                    {{info.class_name}}
                                                    {{info.attendancedate | date:'dd-MM-yyyy'}}
                                                     <button type="button" class="btn btn-success btn-circle">
                                                      <button type="button" class="btn btn-danger btn-circle">
                                                      <button type="button" class="btn btn-warning btn-circle">

[](https://i.stack.imgur.com/BFQmx.jpg)

This sounds like a general support question. Please, use one of the appropriate support channels for these types of questions.
GitHub issues are reserved for bug reports and feature requests.
Thx!

authors: addikhann gkalpak


text:
Make use of jQuery configurable

See discussion at https://github.com/angular/angular.js/issues/556#issuecomment-2446164
It would be useful to be able to tell angular to always use jqlite (even when jquery is present) or maybe even specify which jquery instance to use (since there can be multiple).

This is now resolved as of 09ee82d84dcbea4a6e8d85903af82dcd087a78a7

authors: IgorMinar mzgol


text:
chore(eslint): enable quotes: ["error", "single"]

What kind of change does this PR introduce? (Bug fix, feature, docs update, ...)
Chore
What is the current behavior? (You can also link to an open issue here)
Quote type is not validated; most of the codebase uses single quotes but random places use double quotes.
What is the new behavior (if this is a feature change)?
String delimiters are enforced to be single quotes everywhere except the e2e tests generated by dgeni.
Does this PR introduce a breaking change?
No
Please check if the PR fulfills these requirements

[z] The commit message follows our guidelines: https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit-message-format
[x] Tests for the changes have been added (for bug fixes / features)
[x] Docs have been added / updated (for bug fixes / features)

Other information:
Most of this PR has been auto-generated via eslint . --fix; examples had to be fixed manually, though as we can't autofix JSDoc.
--
The quotes rule had to be disabled for e2e tests generated from ngdoc
because dgeni templates use double quotes as string delimiters.
Since we can't have guarantees that dgeni template wrappers will follow
the same JS code style the Angular 1 repo uses, we should find a way
to enforce our ESLint setup only for the parts in this repo, perhaps
via prepending a generated /* eslint-enable OUR_RULES */ pragma.

LGTM

authors: gkalpak mgol


text:
make mat-step-header header scrollable

Please describe the feature you would like to request.
I would like to see the mat-step-header made scrollable in a similar fashion to mat-tab.  IOf you have multiple steps on a smaller resolution or inside a container with a specific width the steps simply overflow over the edge and would be better if you have a left/right scroll button on either side of the header like the mat-tab
What is the use-case or motivation for this proposal?
I have several apps that use the material stepper (specifically the horizontal stepper) where there are many steps in the flow, the stepper is usually displayed inside a mat-card with a specific width (responsive to difference screen sizes)
On smaller screen sizes where there are more steps than permitted on the screen the step headers simply overflow off the screen
Is there anything else we should know?
This is a screen shot of one example on a large mobile (width: 425px)

The same thing is a P5 here #12166. This feature is pretty important. They have done a GOOD JOB.

Have you found any work around for this @StickNitro ?
I am having around 10 steps and facing same issue !

I found a workaround, add this style to your code
.mat-horizontal-stepper-header-container
{
  overflow: auto;
}
.mat-horizontal-stepper-header
{
  min-width: fit-content;
}

See the working example here: Stackblitz
(In this example I put the CSS code in the main style file. However, in a real project you can put in under to component styles)

I found a workaround, add this style to your code
.mat-horizontal-stepper-header-container
{
  overflow-x: auto;
}
.mat-horizontal-stepper-header
{
  min-width: fit-content;
}

See the working example here: Stackblitz (In this example I put the CSS code in the main style file. However, in a real project you can put in under to component styles)

Only works i think at styles.scss, I've tried at component level even with !importat doesn´t works

repo: angular/components


text:
Angular 2 select wrong screen blur

Bug, feature request, or proposal:
Bug
What is the expected behavior?
When clicking the md-select to pick an option, the screen becomes darker and the options need to be focused and not blurred
What is the current behavior?
When clicking hte md-select to pick an option the screen becomes darker and the options along with it

What are the steps to reproduce?
I actually have no idae how to reproduce, my app is quite big, but the select is inside a sidenav content,
and the app is RTL.
What is the use-case or motivation for changing an existing behavior?
Fix select user experience in such cases
Which versions of Angular, Material, OS, browsers are affected?
Angular 2.3.0
Material beta 11
Tested on Chrome, Firefox
Is there anything else we should know?
RTL app

This seems similar to https://github.com/angular/material2/issues/2136. Can you try removing the @angular/material from the node_modules and reinstalling?

Removed the @angular/material folder, reinstalled the  @angular/material package, restarted my application, issue still exists

Double check if you are not using custom built theme. If you do - try rebuilding it.

Thanks @crownz yep it was the theme. I updated the theme to the new version theme css file, and it now works as excepted.

authors: crisbeto crownz theunreal


text:
Please hide -ms-reveal

Bug, feature request, or proposal:
Please hide -ms-reveal.
What is the expected behavior?
Password field shouldn't have 2 reveal Buttons.
What is the current behavior?

What are the steps to reproduce?
Look at Material Demo Site
Which versions of Angular, Material, OS, TypeScript, browsers are affected?
MSEdge: 41.16299.15.0
Material: 5.0.0-rc0-3ca801a

@mmalerba do you think we should bake this into the input?

authors: jelbourn wuchtig


text:
Add error message to timeouts.md

I am getting this error on my slow CI machine. My tests work on my dev machine.
A Jasmine spec timed out. Resetting the WebDriver Control Flow.
The last active task was:
Protractor.waitForAngular()
    at [object Object].webdriver.WebDriver.schedule (/usr/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:345:15)
    at [object Object].Protractor.executeAsyncScript_ (/usr/lib/node_modules/protractor/lib/protractor.js:247:26)
    at [object Object].Protractor.waitForAngular (/usr/lib/node_modules/protractor/lib/protractor.js:270:15)

I've read https://github.com/angular/protractor/blob/master/docs/timeouts.md but it is unclear to me which type of timeout this is: "Waiting for Angular" or "Spec Timeout"?
Would you please add this specific error message to timeouts.md?

It's "Waiting for Angular"

authors: ksmyth sjelin

repo: angular/protractor


text:
browser.getSession() method does not exist on IE11/Windows 7

I am using Protractor 1.6.1 and can use any internetexplorer driver version.
IE Version: 11.0.9600.16428
[launcher] Error: TypeError: Object internet explorer has no method 'getSession'
    at config.onComplete (/Users/Owen/Development/automation/test/angular_automation/configs/sauce/s_web_address.conf.js:38:13)
    at Object.jasmineNodeOpts.onComplete [as callback_] (/usr/local/lib/node_modules/protractor/lib/frameworks/jasmine.js:70:13)
    at Object.TerminalReporter.reportRunnerResults (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/reporter.js:70:31)
    at [object Object].jasmine.NestedResults.totalCount [as reportRunnerResults] (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:1901:39)
    at [object Object].jasmine.Runner.finishCallback (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:2273:21)
    at [object Object].onComplete (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:2257:10)
    at [object Object].jasmine.Queue.next_ (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:2219:14)
    at onComplete (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:2205:18)
    at [object Object].jasmine.Suite.finish (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:2606:5)
    at [object Object].onComplete (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:2650:10)
    at [object Object].jasmine.Queue.next_ (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:2219:14)
    at onComplete (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:2205:18)
    at [object Object].jasmine.Spec.finish (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:2477:5)
    at [object Object].onComplete (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:2504:10)
    at [object Object].jasmine.Queue.next_ (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:2219:14)
    at [object Object]._onTimeout (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:2199:18)
    at Timer.listOnTimeout [as ontimeout] (timers.js:112:15)
[launcher] Process exited with error code 100

We test against windows 11, so this is not a general issue. It looks like the cause of your problem is from s_web_address.conf.js - could you share that code?
Could you also try upgrading to the latest version of Protractor and see if you are still having issues?

var config = {
  sauceUser: process.env.SAUCE_USER_NAME,
  sauceKey: process.env.SAUCE_API_KEY,
  specs: [
  '../../scripts/website/web_address/web_address.js'
  ],
  capabilities: {
    'browserName': browser,
    'platform': platform,
    'platformVersion': platformVersion,
    'version': version,
    'name': 'Web - My Account - Address Update',
    'tags': ['web', 'account', 'address', 'profile', 'update'],
    'passed': true,
    'screen-resolution': '1920x1200'
  },
  onPrepare: function() {
    require('jasmine-reporters');
    jasmine.getEnv().addReporter(new jasmine.JUnitXmlReporter('../../xmloutput', true, true));
    global.isAngularSite = function(flag){
      browser.ignoreSynchronization = !flag;
    };
  },
  onComplete: function(runner, log) {
    console.log('Automation Tests Complete.');
    browser.driver.getSession().then(function(session) {
      console.log("SauceOnDemandSessionID=" + session.getId() + " job-name=Web - My Account - Address Update");
    });
  },
  jasmineNodeOpts: {
    'defaultTimeoutInterval': 60000}
}

After further investigation, this actually may not be related to any specific browser, it seems to be happening to Chrome all of sudden. This may be related to SauceLabs Cloud instances. Just received this error:
[launcher] Error: TypeError: Object chrome has no method 'getSession'
    at config.onComplete (/Users/Owen/Development/automation/test/angular_automation/configs/sauce/s_web_profile_account.conf.js:38:13)
    at Object.jasmineNodeOpts.onComplete [as callback_] (/usr/local/lib/node_modules/protractor/lib/frameworks/jasmine.js:70:13)
    at Object.TerminalReporter.reportRunnerResults (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/reporter.js:70:31)
    at [object Object].jasmine.NestedResults.totalCount [as reportRunnerResults] (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:1901:39)
    at [object Object].jasmine.Runner.finishCallback (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:2273:21)
    at [object Object].onComplete (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:2257:10)
    at [object Object].jasmine.Queue.next_ (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:2219:14)
    at onComplete (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:2205:18)
    at [object Object].jasmine.Suite.finish (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:2606:5)
    at [object Object].onComplete (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:2650:10)
    at [object Object].jasmine.Queue.next_ (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:2219:14)
    at onComplete (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:2205:18)
    at [object Object].jasmine.Spec.finish (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:2477:5)
    at [object Object].onComplete (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:2504:10)
    at [object Object].jasmine.Queue.next_ (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:2219:14)
    at [object Object]._onTimeout (/usr/local/lib/node_modules/protractor/node_modules/minijasminenode/lib/jasmine-1.3.1.js:2199:18)
    at Timer.listOnTimeout [as ontimeout] (timers.js:112:15)
[launcher] Process exited with error code 100

I resolved this by moving the browser.getSession() method into the actual spec. This is not ideal, but luckily my current automation setup allows me to do so, since I only run one spec per conf file.
This should still be investigated, although it is probably a SauceLab issue with their instances.

authors: gologox juliemr


text:
Something wrong on Raspberry Pi 's official OS: Rasbian

OS:
Raspberry Pi 's official OS: Rasbian
NodeJS:
Installing Node.js via package manager
Debian and Ubuntu based Linux distributions
armhf (ARM 32-bit hard-float, ARMv7 and up: arm-linux-gnueabihf)
node version: 7.5.0
npm version: 4.1.2
Git:
Then, I git clone angular quickstart
and npm install
last npm start
Error Log:
0 info it worked if it ends with ok
1 verbose cli [ '/usr/bin/nodejs', '/usr/bin/npm', 'start' ]
2 info using npm@4.1.2
3 info using node@v7.5.0
4 verbose run-script [ 'prestart', 'start', 'poststart' ]
5 info lifecycle GoldenTimes-front-end@1.0.0~prestart: GoldenTimes-front-end@1.0.0
6 verbose lifecycle GoldenTimes-front-end@1.0.0~prestart: unsafe-perm in lifecycle true
7 verbose lifecycle GoldenTimes-front-end@1.0.0~prestart: PATH: /usr/lib/node_modules/npm/bin/node-gyp-bin:/home/pi/Downloads/GoldenTimes/GoldenTimes-front-end/node_modules/.bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games
8 verbose lifecycle GoldenTimes-front-end@1.0.0~prestart: CWD: /home/pi/Downloads/GoldenTimes/GoldenTimes-front-end
9 silly lifecycle GoldenTimes-front-end@1.0.0~prestart: Args: [ '-c', 'npm run build' ]
10 silly lifecycle GoldenTimes-front-end@1.0.0~prestart: Returned: code: 1  signal: null
11 info lifecycle GoldenTimes-front-end@1.0.0~prestart: Failed to exec prestart script
12 verbose stack Error: GoldenTimes-front-end@1.0.0 prestart: `npm run build`
12 verbose stack Exit status 1
12 verbose stack     at EventEmitter.<anonymous> (/usr/lib/node_modules/npm/lib/utils/lifecycle.js:279:16)
12 verbose stack     at emitTwo (events.js:106:13)
12 verbose stack     at EventEmitter.emit (events.js:192:7)
12 verbose stack     at ChildProcess.<anonymous> (/usr/lib/node_modules/npm/lib/utils/spawn.js:40:14)
12 verbose stack     at emitTwo (events.js:106:13)
12 verbose stack     at ChildProcess.emit (events.js:192:7)
12 verbose stack     at maybeClose (internal/child_process.js:890:16)
12 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
13 verbose pkgid GoldenTimes-front-end@1.0.0
14 verbose cwd /home/pi/Downloads/GoldenTimes/GoldenTimes-front-end
15 error Linux 4.4.11-v7+
16 error argv "/usr/bin/nodejs" "/usr/bin/npm" "start"
17 error node v7.5.0
18 error npm  v4.1.2
19 error code ELIFECYCLE
20 error GoldenTimes-front-end@1.0.0 prestart: `npm run build`
20 error Exit status 1
21 error Failed at the GoldenTimes-front-end@1.0.0 prestart script 'npm run build'.
21 error Make sure you have the latest version of node.js and npm installed.
21 error If you do, this is most likely a problem with the GoldenTimes-front-end package,
21 error not with npm itself.
21 error Tell the author that this fails on your system:
21 error     npm run build
21 error You can get information on how to open an issue for this project with:
21 error     npm bugs GoldenTimes-front-end
21 error Or if that isn't available, you can get their info via:
21 error     npm owner ls GoldenTimes-front-end
21 error There is likely additional logging output above.
22 verbose exit [ 1, true ]

I reset all of things, it will work well.

repo: angular/quickstart


text:
Platform specific link paths

Hello, I've been using dotbot to manage my dotfiles for some time now.
It has worked great thus far, since most applications read from a common configuration directory on all platforms. Sublime Text however, uses different directories depending on what platform you're on.
Would it be feasible to add support for different destination paths depending on your OS?
In Python there's sys.platform which contains a string representing the platform Python is running on.
As for configuration syntax, I'm not sure.
YAML has a construct where you can map keys to values, see example 2.6, but since dotbot maps links "the other way", the syntax wouldn't make sense (and is syntactically incorrect):
- link:
    {
     linux: ~/.config/sublime-text-3,
     darwin: ~/Library/Application Support/Sublime Text 3,
     win32: ~/Sublime Text 3
    }: Sublime Text 3/

If you flip the target and destination, I think it looks decent and you would still be able to configure links independently of the OS/platform. It would obviously break all existing configuration files, however.
- link:
    Sublime Text 3/:
      linux: ~/.config/sublime-text-3,
      darwin: ~/Library/Application Support/Sublime Text 3,
      win32: ~/Sublime Text 3
    vim/: ~/.vim

What do you think?

Cool idea. Yeah, the from: to vs to: from change isn't a big deal, but yeah, it would break backwards compatibility, so a change like this would have to wait until 2.x.
This is kinda sorta possible already (https://github.com/anishathalye/dotbot/pull/11#issuecomment-73082152), but it's not the cleanest way of doing it.

I'll throw in another vote for this feature with a slight twist. It would be nice to not only be able to have os-specific links, but also install config files for some applications only on the systems that support them, for example only installing my hammerspoon config if I'm on a Mac.
I think the config example above is along the lines of what I am thinking. If a platform isn't listed, the link won't be created on that platform and you would need a way to specify a default in some cases. for example:
- link:
  ~/.bashrc:
    platforms:
      - name: default
        path: bashrc
      - name: debian
        path: bashrc-debian
  ~/.hammerspoon:
    platforms:
      - name: darwin
        path: hammerspoon

Apparently this can also be solved with the shell conditions feature (https://github.com/anishathalye/dotbot/issues/143):
For your example @sjthespian
- link:
  ~/.bashrc:
    path: bashrc
    if: '[ ! -f "/etc/debian_version" ]'
  ~/.bashrc:
    path: bashrc-debian
    if: '[ -f "/etc/debian_version" ]'
  ~/.hammerspoon:
    path: hammerspoon
    if: '[[ "$(uname)" == "Darwin" ]]'

Does that sound right?

@robobenklein That's perfect, I didn't realize it supported conditionals! I just gave it a try and this works for me. This actually means I can combine all my yaml files and let the system figure it out. Thanks!!
    # Mac files
    ~/.hammerspoon:
      path: hammerspoon
      if: '[ -f "/Applications/Hammerspoon.app" ]'
    ~/bin/it2cmd:
      path: bin/it2cmd
      if: '[ -f "/Applications/iTerm.app" ]'

Glad that works! If you notice any other issues please let me know because I plan to clean it up and make a PR for it soon!

@robobenklein The way you've written it is great, as you can pass arbitrary commands to it. For example, I can install files on my home systems only with something like:
- linkif:
    #
    # Home
    ~/.bashrc.d/dosomething.sh:
      create: true
      path: bashrc.d/dosoemthing.sh
      if: 'hostname -f | grep myhomedomain.com > /dev/null'

Of course, even better would be to use:
      if: '[[ $(hostname -f) =~ myhomedomain.com$ ]]'

(which also works)

I think the link/if feature, along with defaults (so you can have a windows section of link, followed by a macOS section of link) is a decent way of supporting platform-specific link paths, so I'm going to close this issue.

authors: ToJa92 anishathalye robobenklein sjthespian

repo: anishathalye/dotbot


text:
Dataframe plot generated won't display in iPython Notebook on next session.

Executing the notebook in the initial session, and saving in Jupyter (and VSCode as well) looks fine:

But when the same notebook is opened again, it only shows the first most data frame log (That is, only the df = Rover.read_csv("stocks.csv") cell).

Hey @Ashvith, unfortunately, I'm not able to reproduce. Are there any errors in the JavaScript console?

Tried the following activities after executing the notebook once:

Quit Jupyter notebook safely, Hit Ctrl + S, and reopened the .ipynb file.
Killed Jupyter notebook forcibly, by closing the terminal halfway, and reopened the .ipynb file.

The charts were preserved in both instances. However, when I used VSCode, that's where things started to get messed up. It looks like when I open (running not necessary, just saving is enough to trigger), and try opening it again on either of the notebook IDEs, it stays blank. In rare cases, some of the charts are preserved randomly, while some are missing.
VSCode is probably causing this issue to show up in itself, as well as Jupyter.

Hey @Ashvith, unfortunately, I'm not able to reproduce. Are there any errors in the JavaScript console?

Yes, there are some errors as well as warnings in the browser.

I haven't tried running notebooks in VSCode, but it sounds like saving may be removing output from the ipynb file. I'd try comparing the file before and after to see if that's the case.
Also, from what I can tell, the errors/warnings don't seem related to Vega.

Closing this issue, I think the VSCode Jupyter extension is messing up something on the inside. When I open the Developer Tool for VSCode, I get this:

From that log, my guess is Vega is being loaded before require.js, causing it to error on this line. I'm not sure if there's another pattern Vega Ruby could use to avoid that, but it seems like different behavior than running it directly in Jupyter.

Cleaning up issues

authors: Ashvith ankane

repo: ankane/rover