Tag Archives: mobile

For Sale – HTPC Gaming PC (i5, GTX1070, 8GB, 512GB)

Hey guys, I need to sell my PC as I really need to become more mobile. I put it together in April. Great small, and quiet machine packing some serious power in there. (check specification on picture)
I also have Dell U2515H Monitor (with box), Logitech Mx Master, CM MasterKeys Pro M, XboX One Controller (boxed). So if anyone would be interested in whole package we can create some good deal in here. Thanks!

Price and currency: 900
Delivery: Goods must be exchanged in person
Payment method: Bank transfer
Location: London Hounslow
Advertised elsewhere?: Not advertised elsewhere
Prefer goods collected?: I prefer the goods to be collected

______________________________________________________
This message is automatically inserted in all classifieds forum threads.
By replying to this thread you agree to abide by the trading rules detailed here.
Please be advised, all buyers and sellers should satisfy themselves that the other party is genuine by providing the following via private conversation to each other after negotiations are complete and prior to dispatching goods and making payment:

  • Landline telephone number. Make a call to check out the area code and number are correct, too
  • Name and address including postcode
  • Valid e-mail address

DO NOT proceed with a deal until you are completely satisfied with all details being correct. It’s in your best interest to check out these details yourself.

For Sale – HTPC Gaming PC (i5, GTX1070, 8GB, 512GB)

Hey guys, I need to sell my PC as I really need to become more mobile. I put it together in April. Great small, and quiet machine packing some serious power in there. (check specification on picture)
I also have Dell U2515H Monitor (with box), Logitech Mx Master, CM MasterKeys Pro M, XboX One Controller (boxed). So if anyone would be interested in whole package we can create some good deal in here. Thanks!

Price and currency: 900
Delivery: Goods must be exchanged in person
Payment method: Bank transfer
Location: London Hounslow
Advertised elsewhere?: Not advertised elsewhere
Prefer goods collected?: I prefer the goods to be collected

______________________________________________________
This message is automatically inserted in all classifieds forum threads.
By replying to this thread you agree to abide by the trading rules detailed here.
Please be advised, all buyers and sellers should satisfy themselves that the other party is genuine by providing the following via private conversation to each other after negotiations are complete and prior to dispatching goods and making payment:

  • Landline telephone number. Make a call to check out the area code and number are correct, too
  • Name and address including postcode
  • Valid e-mail address

DO NOT proceed with a deal until you are completely satisfied with all details being correct. It’s in your best interest to check out these details yourself.

Mobile data theft a risk from shared app libraries

Researchers said shared third-party libraries used by many mobile apps could increase the risk of mobile data theft through “intra-library collusion.”

The issue was detailed by Alastair Beresford, teaching fellow at Robinson College in Cambridge, England, and Vincent Taylor and Ivan Martinovic, a doctoral student and associate professor, respectively at Oxford University, in the paper, “Intra-Library Collusion: A Potential Privacy Nightmare on Smartphones.”

According to the researchers, the issue has often been overlooked because mobile security “has typically examined apps and third-party libraries in isolation.” However, they claim these shared libraries could cause more damage if used together for mobile data theft.

“This attack, which we call intra-library collusion, occurs when a single library embedded in more than one app on a device leverages the combined set of permissions available to it to pilfer sensitive user data,” the researchers wrote. “The possibility for intra-library collusion exists because libraries obtain the same privileges as their host app and popular libraries will likely be used by more than one app on a device.”

The team studied 30,000 smartphones and found that, because different apps are allowed different permissions, a malicious actor could combine the access granted to each app in order to build a user profile or perform mobile data theft.

Matthew Rose, ‎global director of application security strategy at Checkmarx, an application security software vendor headquartered in Israel, said there were a number of ways a shared library might be infected by a malicious actor.

“Typically third-party libraries are maintained by a group of people who maintain the code base. Since these libraries have many contributors it is sometimes difficult to have one person responsible for the entire library code base which can potentially allow malicious code to be inserted,” Rose told SearchSecurity. “There is also the question of these libraries inheriting functionality from other code bases so there are definite tradeoffs in terms of risk versus the utilization of existing third party libraries.”

The researchers said advertising libraries could be granted additional permissions to make this kind of attack more dangerous. The researchers wrote that libraries can track users without their consent.

The research focused on Android due to “the availability of data on lists of apps installed on Android devices,” but the team noted that they believe their insights would also hold true on iOS “due to similarities in access control and app deployment.”

Neither Google nor Apple responded to requests for comment at the time of this post.

Mobile data theft and permission creep

Unfortunately, the researchers had no easy answers for mitigating the threat of mobile data theft from intra-library collusion. The researchers noted that one approach would be to limit the permissions granted to these libraries, but doing so might hamper the ability of developers to monetize their apps, which “could serve as a deterrent to new app developers entering the market and thus the end users may ultimately suffer from reduced content.”

If the permission request is not in line with what you intend to use the app for then do not install it or grant the permissions.
Matthew Roseglobal director of application security strategy, Checkmarx

Additionally, the team suggested that the companies running the app stores or even nation states could enact policies or laws to detect and remove malicious third-party libraries, but each approach would be problematic. Detection would be difficult because apps can have legitimate reasons for sending data off-device, and enforcement may not scale beyond an app-by-app basis.

John Bambenek, threat intelligence manager at Fidelis Cybersecurity, said “it is very likely that a malicious library would remain undetected,” but noted there are easier paths to mobile data theft.

“In order to perform this attack, a malicious individual would need to create a library that then is used by multiple applications. They would then need to convince users to download an app [or multiple apps] with many permissions,” Bambenek told SearchSecurity. “In the real world, a malicious individual would just get a victim to install an application with a lot of permissions in the first place because it is more direct and easier. I wouldn’t expect this to be weaponized in the short-term by criminals.”

Rose said the more important issue was that “people need to be cognizant of what permissions a mobile app is asking for when they install it.” 

“Does the app really need to have access to your file system, geo location, or camera? Think about what the intended usage is for the mobile app and ask yourself if it is asking for more permissions than it actually needs,” Rose said. “If the permission request is not in line with what you intend to use the app for then do not install it or grant the permissions.”

Bambenek said developers also need to be careful to make sure it doesn’t appear their apps are attempting mobile data theft through permissions overreach.

“Mobile developers, and developers in general for that matter, need to always focus on secure coding and, in particular, least privilege,” Bambenek said. “Adopting a development model that writes code doing only what is necessary for it to do and little else would help greatly.”

For Sale – HTPC Gaming PC (i5, GTX1070, 8GB, 512GB)

Hey guys, I need to sell my PC as I really need to become more mobile. I put it together in April. Great small, and quiet machine packing some serious power in there. (check specification on picture)
I also have Dell U2515H Monitor (with box), Logitech Mx Master, CM MasterKeys Pro M, XboX One Controller (boxed). So if anyone would be interested in whole package we can create some good deal in here. Thanks!

Price and currency: 900
Delivery: Goods must be exchanged in person
Payment method: Bank transfer
Location: London Hounslow
Advertised elsewhere?: Not advertised elsewhere
Prefer goods collected?: I prefer the goods to be collected

______________________________________________________
This message is automatically inserted in all classifieds forum threads.
By replying to this thread you agree to abide by the trading rules detailed here.
Please be advised, all buyers and sellers should satisfy themselves that the other party is genuine by providing the following via private conversation to each other after negotiations are complete and prior to dispatching goods and making payment:

  • Landline telephone number. Make a call to check out the area code and number are correct, too
  • Name and address including postcode
  • Valid e-mail address

DO NOT proceed with a deal until you are completely satisfied with all details being correct. It’s in your best interest to check out these details yourself.

This Week on Windows: Remix 3D, Minecraft and more

We hope you enjoyed today’s episode of This Week on Windows! Head over here to catch up on our latest programs and deals for back to school, read our Windows 10 Tip on how to use Surface Dial with Paint 3D – or, keep reading for what’s new in the Windows Store.

In case you missed it:

<!–
!function(a,b){“use strict”;function c(){if(!e){e=!0;var a,c,d,f,g=-1!==navigator.appVersion.indexOf(“MSIE 10”),h=!!navigator.userAgent.match(/Trident.*rv:11./),i=b.querySelectorAll(“iframe.wp-embedded-content”);for(c=0;c<i.length;c++){if(d=i[c],!d.getAttribute(“data-secret”))f=Math.random().toString(36).substr(2,10),d.src+=”#?secret=”+f,d.setAttribute(“data-secret”,f);if(g||h)a=d.cloneNode(!0),a.removeAttribute(“security”),d.parentNode.replaceChild(a,d)}}}var d=!1,e=!1;if(b.querySelector)if(a.addEventListener)d=!0;if(a.wp=a.wp||{},!a.wp.receiveEmbedMessage)if(a.wp.receiveEmbedMessage=function(c){var d=c.data;if(d.secret||d.message||d.value)if(!/[^a-zA-Z0-9]/.test(d.secret)){var e,f,g,h,i,j=b.querySelectorAll(‘iframe[data-secret=”‘+d.secret+'”]’),k=b.querySelectorAll(‘blockquote[data-secret=”‘+d.secret+'”]’);for(e=0;e<k.length;e++)k[e].style.display=”none”;for(e=0;e1e3)g=1e3;else if(~~g<!]]>

<!–
!function(a,b){“use strict”;function c(){if(!e){e=!0;var a,c,d,f,g=-1!==navigator.appVersion.indexOf(“MSIE 10”),h=!!navigator.userAgent.match(/Trident.*rv:11./),i=b.querySelectorAll(“iframe.wp-embedded-content”);for(c=0;c<i.length;c++){if(d=i[c],!d.getAttribute(“data-secret”))f=Math.random().toString(36).substr(2,10),d.src+=”#?secret=”+f,d.setAttribute(“data-secret”,f);if(g||h)a=d.cloneNode(!0),a.removeAttribute(“security”),d.parentNode.replaceChild(a,d)}}}var d=!1,e=!1;if(b.querySelector)if(a.addEventListener)d=!0;if(a.wp=a.wp||{},!a.wp.receiveEmbedMessage)if(a.wp.receiveEmbedMessage=function(c){var d=c.data;if(d.secret||d.message||d.value)if(!/[^a-zA-Z0-9]/.test(d.secret)){var e,f,g,h,i,j=b.querySelectorAll(‘iframe[data-secret=”‘+d.secret+'”]’),k=b.querySelectorAll(‘blockquote[data-secret=”‘+d.secret+'”]’);for(e=0;e<k.length;e++)k[e].style.display=”none”;for(e=0;e1e3)g=1e3;else if(~~g<!]]>

See your 3D creations take life with the newest update to Remix 3D

Here’s what’s new in the Windows Store this week:

The Better Together Beta for Minecraft is here!

The Better Together Beta for Minecraft is here!

If you’re on a Windows 10 PC, your world expands to being able to play with friends across devices. The Better Together Update we announced at E3 2017 is designed to unify the console, mobile and Windows 10 PC versions of the game under one single Minecraft edition, which will include infinite worlds, the community Marketplace and community servers (which are coming to the beta later on!). It’ll introduce cross-platform support, allowing console, Windows 10 PC and mobile Minecrafters to play together for the first time! Who can participate? Players on Windows 10 PC, Android and soon Xbox One are welcome to jump into cross-platform play with other beta testers across all three devices. For the full announcement, head over to Minecraft.net!

Build the Car of Your Dreams in the Forza Motorsport 7 Garage

Forza

Welcome to week three of the Forza Motorsport 7 Garage, our weekly look at the 700+ cars coming to the game at launch. This week, in addition to announcing a massive collection of Japanese vehicles – 77 in total – we’re also turning the spotlight on the body customization options available to players in Forza Motorsport 7. For the first time in the Forza Motorsport series, we’re bringing wide-body kits to a number of cars in Forza Motorsport 7. In addition, numerous body-kit options from Forza Horizon 3 will also be available in Forza Motorsport 7, including Upgrade Heroes like the Nissan S14 and the 240SX SE announced today. Wheel options will be abundant in Forza Motorsport 7. In addition to bringing over a number of the new-entry wheels from Forza Horizon 3, we’re adding a selection of new race-inspired. Read more over at Xbox Wire!

Alien: Covenant

Alien

While on a colonizing mission in a distant corner of the galaxy, the ship Covenant stumbles upon a planet that appears to be an undiscovered paradise…but is actually home to something more terrifying than they ever could have imagined. Watch Alien: Covenant ($19.99 HD, $17.99 SD), now available in the Movies & TV section of the Windows Store two weeks before it comes to Blu-ray. For a limited time, win fun swag courtesy of #AlienCovenant! Learn more here.

New Minecraft Marketplace Content!

Minecraft marketplace

Today, we’re releasing even more new content created by our Marketplace partners Noxcrew, Eneija, Razzleberry Fox and Jigarbov: Infinity Dungeon EX map, Summer Festival Skin Pack, Survivors Skin Pack, Kings and Paupers Skin Pack, and the Sports Skin Pack! Anyone on Bedrock Engine platforms can download the new content for now (Windows 10 & mobile devices), but we’re bringing Xbox One and Nintendo Switch into the Bedrock ecosystem soon. To learn more, head over to Minecraft.net!

Have a great weekend!

Configure your app to start at log-in

For a long time, desktop PC users have been able to configure Win32 apps to start at startup or user log-in. This has also been possible for Desktop Bridge apps since the Windows 10 Anniversary Update (v10.0.14393.0). We’ve now extended this feature to allow regular Universal Windows Apps to take part in this also. This is available in Insider builds from Build 16226 onwards, along with the corresponding SDK. In this post, we’ll look at the code changes you need to make in your manifest and in your App class to handle the startup scenario, and how your app can work with the user to respect their choices.

Here’s a sample app, called TestStartup – the app offers a button to request enabling the startup behavior, and reports current status. Typically, you’d put this kind of option into a settings page of some kind in your app.

The first thing to note is that you must use the windows.startupTask Extension in your app manifest under the Extensions node, which is a child of the Application node. This is documented here. The same Extension declaration is used for both Desktop Bridge and regular UWP apps – but there are some differences.

  • Desktop Bridge is only available on Desktop, so it uses a Desktop-specific XML namespace. The new UWP implementation is designed for use generally on UWP, so it uses a general UAP namespace (contract version 5) – although to be clear, it is currently still only actually available on Desktop.
  • The Desktop Bridge EntryPoint must be “Windows.FullTrustApplication,” whereas for regular UWP it is the fully-qualified namespace name of your App class.
  • Desktop Bridge apps can set the Enabled attribute to true, which means that the app will start at startup without the user having to manually enable it. Conversely, for regular UWP apps this attribute is ignored, and the feature is implicitly set to “disabled.” Instead, the user must first launch the app, and the app must request to be enabled for startup activation.
  • For Desktop Bridge apps, multiple startupTask Extensions are permitted, each one can use a different Executable. Conversely, for regular UWP apps, you would have only one Executable and one startupTask Extension.
Desktop Bridge App UWP App

xmlns:desktop=&amp;quot;http://schemas.microsoft.com/
appx/manifest/desktop/windows10&amp;quot;


xmlns:uap5=&amp;quot;http://schemas.microsoft.com/
appx/manifest/uap/windows10/5&amp;quot;


&amp;lt;desktop:Extension
  Category=&amp;quot;windows.startupTask&amp;quot;
  Executable=&amp;quot;MyDesktopBridgeApp.exe&amp;quot;
  EntryPoint=&amp;quot;Windows.FullTrustApplication&amp;quot;&amp;gt;
  &amp;lt;desktop:StartupTask
    TaskId=&amp;quot;MyStartupId&amp;quot;
    Enabled=&amp;quot;false&amp;quot;
    DisplayName=&amp;quot;Lorem Ipsum&amp;quot; /&amp;gt;
&amp;lt;/desktop:Extension&amp;gt;


&amp;lt;uap5:Extension
  Category=&amp;quot;windows.startupTask&amp;quot;
  Executable=&amp;quot;TestStartup.exe&amp;quot;
  EntryPoint=&amp;quot;TestStartup.App&amp;quot;&amp;gt;
  &amp;lt;uap5:StartupTask
    TaskId=&amp;quot;MyStartupId&amp;quot;
    Enabled=&amp;quot;false&amp;quot;
    DisplayName=&amp;quot;Lorem Ipsum&amp;quot; /&amp;gt;
&amp;lt;/uap5:Extension&amp;gt;

For both Desktop Bridge apps and regular UWP apps, the user is always in control, and can change the Enabled state of your startup app at any time via the Startup tab in Task Manager:

Also for both app types, the app must be launched at least once before the user can change the Disabled/Enabled state. This is potentially slightly confusing: if the user doesn’t launch the app and then tries to change the state to Enabled in Task Manager, this will seem to be set. However, if they then close Task Manager and re-open it, they will see that the state is still Disabled. What’s happening here is that Task Manager is correctly persisting the user’s choice of the Enabled state – but this won’t actually allow the app to be activated at startup unless and until the app is launched at least once first – hence the reason it is reported as Disabled.

In your UWP code, you can request to be enabled for startup. To do this, use the StartupTask.GetAsync method to initialize a StartupTask object (documented here) – passing in the TaskId you specified in the manifest – and then call the RequestEnableAsync method. In the test app, we’re doing this in the Click handler for the button. The return value from the request is the new (possibly unchanged) StartupTaskState.


async private void requestButton_Click(object sender, RoutedEventArgs e)
{
    StartupTask startupTask = await StartupTask.GetAsync(&amp;quot;MyStartupId&amp;quot;);
    switch (startupTask.State)
    {
        case StartupTaskState.Disabled:
            // Task is disabled but can be enabled.
            StartupTaskState newState = await startupTask.RequestEnableAsync();
            Debug.WriteLine(&amp;quot;Request to enable startup, result = {0}&amp;quot;, newState);
            break;
        case StartupTaskState.DisabledByUser:
            // Task is disabled and user must enable it manually.
            MessageDialog dialog = new MessageDialog(
                &amp;quot;I know you don't want this app to run &amp;quot; +
                &amp;quot;as soon as you sign in, but if you change your mind, &amp;quot; +
                &amp;quot;you can enable this in the Startup tab in Task Manager.&amp;quot;,
                &amp;quot;TestStartup&amp;quot;);
            await dialog.ShowAsync();
            break;
        case StartupTaskState.DisabledByPolicy:
            Debug.WriteLine(
                &amp;quot;Startup disabled by group policy, or not supported on this device&amp;quot;);
            break;
        case StartupTaskState.Enabled:
            Debug.WriteLine(&amp;quot;Startup is enabled.&amp;quot;);
            break;
    }
}

Because Desktop Bridge apps have a Win32 component, they run with a lot more power than regular UWP apps generally. They can set their StartupTask(s) to be Enabled in the manifest and do not need to call the API. For regular UWP apps, the behavior is more constrained, specifically:

  • The default is Disabled, so in the normal case, the user must run the app at least once explicitly – this gives the app the opportunity to request to be enabled.
  • When the app calls RequestEnableAsync, this will show a user-prompt dialog for UWP apps (or if called from a UWP component in a Desktop Bridge app from the Windows 10 Fall Creators Update onwards).
  • StartupTask includes a Disable method. If the state is Enabled, the app can use the API to set it to Disabled. If the app then subsequently requests to enable again, this will also trigger the user prompt.
  • If the user disables (either via the user prompt, or via the Task Manager Startup tab), then the prompt is not shown again, regardless of any requests from the app. The app can of course devise its own user prompts, asking the user to make manual changes in Task Manager – but if the user has explicitly disabled your startup, you should probably respect their decision and stop pestering them. In the sample code above, the app is responding to DisabledByUser by popping its own message dialog – you can obviously do this if you want, but it should be emphasized that there’s a risk you’ll just annoy the user.
  • If the feature is disabled by local admin or group policy, then the user prompt is not shown, and startup cannot be enabled. The existing StartupTaskState enum has been extended with a new value, DisabledByPolicy. When the app sees DisabledByPolicy, it should avoid re-requesting that their task be enabled, because the request will never be approved until the policy changes.
  • Platforms other than Desktop that don’t support startup tasks also report DisabledByPolicy.

Where a request triggers a user-consent prompt (UWP apps only), the message includes the DisplayName you specified in your manifest. This prompt is not shown if the state is DisabledByUser or DisabledByPolicy.

If your app is enabled for startup activation, you should handle this case in your App class by overriding the OnActivated method. Check the IActivatedEventArgs.Kind to see if it is ActivationKind.StartupTask, and if so, case the IActivatedEventArgs to a StartupTaskActivatedEventArgs. From this, you can retrieve the TaskId, should you need it. In this test app, we’re simply passing on the ActivationKind as a string to MainPage.


protected override void OnActivated(IActivatedEventArgs args)
{
    Frame rootFrame = Window.Current.Content as Frame;
    if (rootFrame == null)
    {
        rootFrame = new Frame();
        Window.Current.Content = rootFrame;
    }

    string payload = string.Empty;
    if (args.Kind == ActivationKind.StartupTask)
    { 
        var startupArgs = args as StartupTaskActivatedEventArgs;
        payload = ActivationKind.StartupTask.ToString();
    }

    rootFrame.Navigate(typeof(MainPage), payload);
    Window.Current.Activate();
}

Then, the MainPage OnNavigatedTo override tests this incoming string and uses it to report status in the UI.


protected override void OnNavigatedTo(NavigationEventArgs e)
{
    string payload = e.Parameter as string;
    if (!string.IsNullOrEmpty(payload))
    {
        activationText.Text = payload;

        if (payload == &amp;quot;StartupTask&amp;quot;)
        {
            requestButton.IsEnabled = false;
            requestResult.Text = &amp;quot;Enabled&amp;quot;;
            SolidColorBrush brush = new SolidColorBrush(Colors.Gray);
            requestResult.Foreground = brush;
            requestPrompt.Foreground = brush;
        }
    }
}

Note that when your app starts at startup, it will start minimized in the taskbar. In this test app, when brought to normal window mode, the app reports the ActivationKind and StartupTaskState:

Using the windows.startupTask manifest Extension and the StartupTask.RequestEnableAsync API, your app can be configured to start at user log-in. This can be useful for apps which the user expects to use heavily, and the user has control over this – but it is still a feature that you should use carefully. You should not use the feature if you don’t reasonably expect the user to want it for your app – and you should avoid repeatedly prompting them once they’ve made their choice. The inclusion of a user-prompt puts the user firmly in control, which is an improvement over the older Win32 model.

Sample Code here.

How to Restart your App Programmatically

For some apps (especially games) it is not uncommon for the app to get into a state where it needs to restart – perhaps after a license update, after installing downloadable content, its caches have become corrupt or unwieldy, or for any other reason where the app needs to refresh state from scratch. In earlier releases, your only option would have been to prompt the user to close and relaunch, or to call CoreApplication.Exit – and both options provide sub-optimal user experience.

We have therefore introduced a new API that enables an app to request immediate termination and restart, and to pass arbitrary arguments into the fresh instance. In this post, we’ll look at how this works and how you can build it into your app. This is available now in Insider builds from Build 16226 onwards, along with the corresponding SDK.

Here’s a sample app, called TestRestart. 

The app provides a ListView of cities on the left, the currently-selected city on the right and a TextBox for providing arguments to the app when it is restarted. When the user taps the Request Restart button, the app will terminate and restart itself, passing in the supplied arguments. The new API, RequestRestartAsync, is exposed as a static method on the CoreApplication object. It takes a string parameter, which can be any string value you like – including input from the user or another external entity. If you do choose to accept input in this way, it is your responsibility to validate it correctly to make sure it conforms to whatever constraints you choose to impose. You should do this validation on input, before passing it to RequestRestartAsync. In this sample app, we’re expecting the user to type in the name of a city.


async private void DoRestartRequest()
{
    bool isValidPayload = false;
    string payload = restartArgs.Text;
    if (!string.IsNullOrEmpty(payload))
    {
        foreach (ImageViewModel imageItem in imageListView.Items)
        {
            if (imageItem.Name == payload)
            {
                isValidPayload = true;
                break;
            }
        }
    }

    if (isValidPayload)
    {
        AppRestartFailureReason result =
            await CoreApplication.RequestRestartAsync(payload);
        if (result == AppRestartFailureReason.NotInForeground ||
            result == AppRestartFailureReason.RestartPending ||
            result == AppRestartFailureReason.Other)
        {
            Debug.WriteLine(&amp;quot;RequestRestartAsync failed: {0}&amp;quot;, result);
        }
    }
}

To mitigate privacy concerns, an app is only permitted to restart itself if it is in the foreground at the time it makes the request. When the app restarts, it restarts with normal UI – that is, as a normal foreground window. If we were to permit a background task or minimized app to restart, the result would be unexpected to the user. This is why the API is framed as a request. If the request is denied, the app would need to handle the failure – perhaps by waiting until it is in the foreground and trying again. If you were to request a restart and then through some twist of logic managed to request it again before the system started the operation, then you’d get the RestartPending result, although this is an edge case. You’re unlikely to ever get the other result – unless something goes wrong in the platform.

Note that this is the only significant constraint, but you should use this API carefully. For example, you probably should not use it if your app was not originally launched by the user – for example, if it was launched as the result of a share or picker operation. Restarting in the middle of one of those contract operations would certainly confuse the user.

If the request is granted, the app is terminated and then restarted. There are many different ways to activate an app: in addition to a regular launch activation, apps can choose to support file activation, protocol activation, share or picker activation and so on. The list is documented here. For the restart case, the app will be activated as a regular launch – just as if the user had closed the app manually and tapped its tile to launch it again – but including the arbitrary arguments supplied earlier (if any).

In your App class, you should handle this by overriding the OnActivated method. Test the ActivationKind, and if it’s ActivationKind.Launch, then the incoming IActivatedEventArgs will be a LaunchActivatedEventArgs. From this, you can get hold of the incoming activation arguments. For a regular user-initiated launch, the Arguments will be empty, so if it’s not empty you could simply infer that this is a restart activation. You can also check the PreviousExecutionState, which for a restart operation will be set to Terminated.

Although the arguments might have originated from an untrusted source (eg, the user), you should have done the validation before requesting restart. If so, you can consider them trustworthy when you receive them in OnActivated.


protected override void OnActivated(IActivatedEventArgs args)
{
    switch (args.Kind)
    {
        case ActivationKind.Launch:
            LaunchActivatedEventArgs launchArgs = args as LaunchActivatedEventArgs;
            string argString = launchArgs.Arguments;

            Frame rootFrame = Window.Current.Content as Frame;
            if (rootFrame == null)
            {
                rootFrame = new Frame();
                Window.Current.Content = rootFrame;
            }
            rootFrame.Navigate(typeof(MainPage), argString);
            Window.Current.Activate();
            break;
    }
}

What you do with the incoming arguments is entirely up to you. In this app, we’re simply passing them on to the MainPage. In the MainPage in turn, we have an override of OnNavigatedTo which uses the string to select an item in the ListView:


protected override void OnNavigatedTo(NavigationEventArgs e)

{
    string payload = e.Parameter as string;
    if (!string.IsNullOrEmpty(payload))
    {
        foreach (ImageViewModel imageItem in imageListView.Items)
        {
            if (imageItem.Name == payload)
            {
                imageListView.SelectedItem = imageItem;
                break;
            }
        }
    }
}

As you can see, the CoreApplication.RequestRestartAsync method is a simple API. You can use it to terminate your app immediately, and have it restart as if by user action, with the additional option of passing in arbitrary arguments on activation.

Sample Code here.

This Week on Windows: Shark Week, Imagine Cup, Help Me Choose and more

We hope you enjoyed today’s episode of This Week on Windows! Head over here to catch up on the news out of Imagine Cup, check out our Windows 10 Tip on getting started with Windows Help Me Choose, dive into Shark Week – or, keep reading for what’s new in the Windows Store.

In case you missed it:

<!–
!function(a,b){“use strict”;function c(){if(!e){e=!0;var a,c,d,f,g=-1!==navigator.appVersion.indexOf(“MSIE 10”),h=!!navigator.userAgent.match(/Trident.*rv:11./),i=b.querySelectorAll(“iframe.wp-embedded-content”);for(c=0;c<i.length;c++){if(d=i[c],!d.getAttribute(“data-secret”))f=Math.random().toString(36).substr(2,10),d.src+=”#?secret=”+f,d.setAttribute(“data-secret”,f);if(g||h)a=d.cloneNode(!0),a.removeAttribute(“security”),d.parentNode.replaceChild(a,d)}}}var d=!1,e=!1;if(b.querySelector)if(a.addEventListener)d=!0;if(a.wp=a.wp||{},!a.wp.receiveEmbedMessage)if(a.wp.receiveEmbedMessage=function(c){var d=c.data;if(d.secret||d.message||d.value)if(!/[^a-zA-Z0-9]/.test(d.secret)){var e,f,g,h,i,j=b.querySelectorAll(‘iframe[data-secret=”‘+d.secret+'”]’),k=b.querySelectorAll(‘blockquote[data-secret=”‘+d.secret+'”]’);for(e=0;e<k.length;e++)k[e].style.display=”none”;for(e=0;e1e3)g=1e3;else if(~~g<!]]>

<!–
!function(a,b){“use strict”;function c(){if(!e){e=!0;var a,c,d,f,g=-1!==navigator.appVersion.indexOf(“MSIE 10”),h=!!navigator.userAgent.match(/Trident.*rv:11./),i=b.querySelectorAll(“iframe.wp-embedded-content”);for(c=0;c<i.length;c++){if(d=i[c],!d.getAttribute(“data-secret”))f=Math.random().toString(36).substr(2,10),d.src+=”#?secret=”+f,d.setAttribute(“data-secret”,f);if(g||h)a=d.cloneNode(!0),a.removeAttribute(“security”),d.parentNode.replaceChild(a,d)}}}var d=!1,e=!1;if(b.querySelector)if(a.addEventListener)d=!0;if(a.wp=a.wp||{},!a.wp.receiveEmbedMessage)if(a.wp.receiveEmbedMessage=function(c){var d=c.data;if(d.secret||d.message||d.value)if(!/[^a-zA-Z0-9]/.test(d.secret)){var e,f,g,h,i,j=b.querySelectorAll(‘iframe[data-secret=”‘+d.secret+'”]’),k=b.querySelectorAll(‘blockquote[data-secret=”‘+d.secret+'”]’);for(e=0;e<k.length;e++)k[e].style.display=”none”;for(e=0;e1e3)g=1e3;else if(~~g<!]]>

<!–
!function(a,b){“use strict”;function c(){if(!e){e=!0;var a,c,d,f,g=-1!==navigator.appVersion.indexOf(“MSIE 10”),h=!!navigator.userAgent.match(/Trident.*rv:11./),i=b.querySelectorAll(“iframe.wp-embedded-content”);for(c=0;c<i.length;c++){if(d=i[c],!d.getAttribute(“data-secret”))f=Math.random().toString(36).substr(2,10),d.src+=”#?secret=”+f,d.setAttribute(“data-secret”,f);if(g||h)a=d.cloneNode(!0),a.removeAttribute(“security”),d.parentNode.replaceChild(a,d)}}}var d=!1,e=!1;if(b.querySelector)if(a.addEventListener)d=!0;if(a.wp=a.wp||{},!a.wp.receiveEmbedMessage)if(a.wp.receiveEmbedMessage=function(c){var d=c.data;if(d.secret||d.message||d.value)if(!/[^a-zA-Z0-9]/.test(d.secret)){var e,f,g,h,i,j=b.querySelectorAll(‘iframe[data-secret=”‘+d.secret+'”]’),k=b.querySelectorAll(‘blockquote[data-secret=”‘+d.secret+'”]’);for(e=0;e<k.length;e++)k[e].style.display=”none”;for(e=0;e1e3)g=1e3;else if(~~g<!]]>

 

Here’s what’s new in the Windows Store this week:

Halo Wars 2: Serina & Spearbreaker Bundle

Halo Wars 2: Serina & Spearbreaker Bundle

The latest update to Halo Wars 2 features two exciting new story missions in Operation: Spearbreaker, and a beloved, digitally deceased but downloadably undeterred new Leader – the UNSC Spirit of Fire’s former AI Serina. Both Serina and the Operation: Spearbreaker story missions are available now for Windows 10 as part of the Halo Wars 2 Season Pass, as individual purchases at $5.99 USD each, or a special 2-pack version that includes both pieces of content for $9.99 USD.

Fable Fortune (Game Preview) – Buy for $11.99, through July 31

Fable Fortune (Game Preview)

Play as one of six unique Heroes in a collectible card game that combines the iconic world and characters of Albion with fast-paced and thrilling tactical gameplay. In Fable Fortune (Game Preview) ($14.99 Regular Price, $11.99 Sale Price through July 31) your destiny is on the cards! Starting today, Fable Fortune is 20% off through July 31, 2017.

Sci-Fi Sale in Books*

Sci-Fi Sale in Books

Summer is when we escape the rhythms of the rest of the year – and many of us dive into a great book to do that. The Science Fiction Sale in Books makes this easy and fun, with the ten top sci-fi titles on sale for just $2.99 through July 31.

Netflix – Ozark

Netflix - Ozark

Netflix (Free, with IAP options) brings a stellar cast – and a compelling plot – together in its new original series Ozark. Watch as financial adviser Jason Bateman drags his family from Chicago to the Missouri’s Ozark mountains, where he must launder $500 million in five years to appease a drug boss. Laura Linney co-stars as his wife in this compelling, not-to-be-missed new drama.

Have a great weekend!

*US only

Tracking your fitness goals just got easier with the Fitbit skill for Cortana

Earlier in May, we announced the public preview of the Cortana Skills Kit, which allows developers to easily create intelligent, personalized experiences for users of Cortana in the US*. Today, we’re pleased to share that the latest skill on Cortana is available, from our partners at Fitbit. With the new Fitbit skill for Cortana, you can easily monitor your health and fitness goals – just by asking Cortana. Users can access the Fitbit skill across devices and platforms, starting with Windows 10, Android and iOS and soon on the Harman Kardon Invoke speaker.

Fitbit is the leading global wearables brand with more than 50M registered users across the world. Fitbit’s health and fitness trackers and software are compatible across Windows 10, Android and iOS platforms, and offers the widest range of easy-to-use, smart and motivational tools that keep users engaged to meet their goals.

With the new Fitbit skill for Cortana, it’s now easier than ever for Fitbit users to monitor their health and fitness goals, sleep, stats and progress. Once you have connected your Fitbit account to Cortana, simply ask Cortana to get the information you need to stay inspired without having to pull up the Fitbit app or website. And because Cortana works across your Windows 10, Android and iOS devices, you can easily do so on the device closest to you.

You can say, “Hey Cortana, Ask Fitbit how am I doing today,” along with several other supported health and fitness prompts to learn about your daily progress. Cortana will not only read out your progress – like active minutes you’ve logged, how you slept last night, or the number of calories you’ve burned for any day within the previous week – but may also show you a short summary with all the handy information. If you’re tracking how you’re performing against your friends, you can say, “Hey Cortana, show me my leaderboard,” and Cortana will provide you with the extra motivation to keep you going. Cortana will also offer words of encouragement to inspire you to meet your goals, with responses that are tailored to the specific time of day. For example, if you inquire about your active minutes in the morning, you might be encouraged with “Today’s the day. Let’s do this.” Or, if you ask about your steps in the evening: “You are so there. I’d high five you if I could.”

Cortana understands natural language and makes it very easy to update Fitbit about your beverage and food intake without having to manually log the information.  You can say, “Hey Cortana, Tell Fitbit to log I had an omelet for breakfast,” or “Hey Cortana, Ask Fitbit to log I drank 12 ounces of water,” and Cortana will update your Fitbit account accordingly. Cortana provides you with the convenience of being able to log these activities through voice, helping you maintain a fuller view of your calorie intake – along with the impact on your overall health and fitness stats.

Cortana provides both voice and visual responses to users

There are many ways Cortana can help you engage with Fitbit. Here are a few you can try:

  • “Hey Cortana, ask Fitbit how much water I’ve had today”
  • “Hey Cortana, ask Fitbit how many calories do I have left to eat”
  • “Hey Cortana, ask Fitbit how many steps do I have left”
  • “Hey Cortana, ask Fitbit how many workouts I need to do this week”

To find out more, get started with the new Fitbit skill. Simply say “Hey Cortana, Open Fitbit,” and Cortana will ask you to connect your accounts by signing-in with your Fitbit username and password. You can then ask Cortana about your Fitbit activity. Happy stepping!

To learn more and discover the currently available skills, visit: microsoft.com/en-us/windows/cortana/cortana-skills/

*Available in US only. Other markets will be added over time.

Announcing Windows 10 Insider Preview Build 16251 for PC & Build 15235 for Mobile

Hello Windows Insiders!

Today we are excited to release Windows 10 Insider Preview Build 16251 for PC to Windows Insiders in the Fast ring! The same build will be available for Insiders who opted in to Skip Ahead. We are also releasing Windows 10 Mobile Insider Preview Build 15235 to Insiders in the Fast ring. We won’t have a new Windows Server Insider Preview build for Windows Insiders this week.

What’s New in Build 16251 For PC

Windows lets you link your phone and PC

You may remember at Build we talked about PCs and phones working better together. With Build 16251, we are introducing the first set of features that enable “linking” your phone to your PC. This build’s scenario is focused on cross-device web-browsing. Today, we’re asking for you Windows Insiders to help us test this experience out using your Android phones.  Support for iPhone is coming very soon, stay tuned.

To get started, after installing today’s new build on your PC, go to Settings > Phone and link your phone. Having you link your phone ensures that your sessions from your phone are continued only on to the PC that you’ve chosen. After adding your phone to be linked, you will receive an SMS from us directing you to install a test application called “Microsoft Apps” for Android that completes the link between your phone and PC and enables one of our first cross device browsing scenarios.

New Phones settings page

After you’ve linked your phone, just go to your phone and start browsing the web. When you are at a website you want to view on your PC, simply invoke the native share experience on your phone and share the website to the “Continue on PC” option. You might need to click the “…” or more to add this test app to your share menu.  Once invoked, it will first ask you to sign in with your Microsoft Account.  It is important you use the same account you are using on your PC.  Next it will ask you if you want to “Continue now” or “Continue later”. If you choose “Continue now”, the website will magically open on the linked PC.  If you choose to “Continue later”, the website will show up under Action Center for you to get to later when you’re ready. Try it out and let us to know of any issues you run into!

  

Get web search results in Cortana without opening your browser

Now you can view the results that Cortana has for you without launching the web browser. For some questions, the Cortana pane will expand automatically, quickly showing you exactly what you need to know.  It works with movies, celebrities, stock prices, weather, flight status – you name it! If Cortana doesn’t have a quick answer for your query, the pane won’t automatically expand. No worries! Just click the arrow next to the relevant web suggestion (or press the right arrow key) to see what the web has for you. We look forward to hearing your feedback, which you can file using the in-Cortana feedback button.

Use Cortana voice commands to lock, sign-out, shutdown, or turn off your PC

We have now enabled the ability for you to use Cortana to turn off, restart, lock, or sign-out of Windows. While previously announced, we haven’t fully enabled it via the cloud until now. So, in case your hands are busy at the moment, you don’t have to stop what you’re doing to turn off or lock your PC. Instead, you can say “Hey Cortana, turn off my PC” and Cortana will take care of it. In a similar fashion, you can use Cortana to restart your computer, sign-out, or lock your PC. Just use your voice and try out the following commands:

  • “Hey Cortana, restart PC.”
  • “Hey Cortana, turn off PC.”
  • “Hey Cortana, sign out.”
  • “Hey Cortana, lock PC.”

For some of these voice commands, such as the one for turning off your PC, Cortana may ask you for a verbal confirmation. You’ll have to respond to Cortana with a “Yes” for Cortana to complete the voice command.

 

In addition, you can also ask Cortana to execute the commands above on the Lock screen, but first you should enable Cortana on the Lock screen if you have not done so already.

You can enable Cortana on your Lock screen by opening Cortana’s settings and turning on this option:

If you have any feedback, be sure to send it our way via Feedback Hub!

NOTE: This is available only in English* (EN-US, EN-AU, EN-CA, EN-GB and EN-IN) markets.

Improved Boot Up Experience

Use sign-in info to apply settings after a restart or update: The advanced Windows Update feature to use your sign-in info to automatically finish setting your device after an update has been extended to regular reboots and shutdowns. When you log in and initiate a reboot or a shutdown through power options available on the Start Menu and various other locations, Windows will automatically setup your account after it’s has booted back up. 

This will help you sign-in faster and will restore your accessibility applications and any other application that has registered for application restart.

Command-line options:

  • shutdown /sg

Shutdown the computer. On the next boot, restart any registered applications.

  • shutdown /g

Full shutdown and restart the computer. After the system is rebooted, restart any registered applications.

Opt-out: Under the Privacy section of the Sign-in options page of your Settings, you can disable and re-enable using the option show below:

Note: The feature is only available on PCs that are not managed by enterprises. This includes home PCs that are sync’d to enterprise (work, school, etc.) email.

Input Improvements

  • We’ve adjusted the size of the onehanded touch keyboard to be a little bigger, as well as added a thicker border as padding around it so you’re less likely to accidentally tap outside the keyboard and dismiss it.
  • We’ve updated the new XAML touch keyboard to now support a full keyboard layout option for English (United States), English (Australia), French (France), Italian (Italy), German (Germany) and Spanish (Spain) languages. Appreciate everyone who shared feedback on the subject! To access this keyboard layout, tap the button in the top left of the touch keyboard.
  • As you launch and dismiss the touch keyboard, you’ll now notice an animation of it sliding in and out.
  • We’ve softened the sound of typing on the touch keyboard – thanks for your feedback!
  • We fixed an issue where the touch keyboard might get into a state where swiping across it would move the keyboard contents around.
  • We’ve updated the Japanese onehanded touch keyboard specific key labels to be written using the Yu-gothic UI font.
  • We fixed an issue where the Japanese touch keyboard might sometimes take multiple taps of the delete key to delete a selected character or phrase in certain text fields.
  • We fixed an issue where the touch keyboard’s options in Settings to disable suggestions and disable “add a space after I choose a text suggestion” didn’t work.
  • We’ve adjusted two-finger precision touchpad scrolling so it should feel a bit smoother now – please try it out in today’s build.
  • We fixed an issue where the Microsoft Pinyin IME candidate window wasn’t visible when Microsoft Edge was in full screen mode (F11).
  • We fixed an issue where Japanese IME status notification didn’t appear when the IME was turned on with Kana input method.
  • In addition to scrolling, pen can now also select and drag objects when barrel button (a button on the side of the pen) is pressed. This functionality was already available in Win32 apps and Microsoft Edge as of 16215, and today we’re expanding it to include all UWP apps as well. Please try it out in your favorite apps and let us know how the experience is working for you.
  • We fixed an issue where it wasn’t possible to use the pen to move a Win32 app window up and down by dragging the title bar.
  • We fixed an issue where the coordinates were slightly off when using the pen to point erase in the last few flights.

Microsoft Edge Improvements

  • Microsoft Edge will no longer re-scale sites when in Tablet Mode with narrow viewport width (such as in a snapped view or portrait orientation). This provides a more natural experience on modern responsive sites in tablet mode.
  • We fixed an issue from recent builds where the Copy Link option displayed in Microsoft Edge when you right-click a hyperlink wasn’t working.
  • We fixed numerous reliability issues in Microsoft Edge that will improve user experience with crashes and hangs within the app.
  • We fixed an issue in Microsoft Edge with PDF failing to open on refresh.
  • We fixed an issue in Microsoft Edge with PDF fitting to page for certain books.
  • We fixed an issue with Pinned Sites from Microsoft Edge where it wasn’t showing the right favicon on the taskbar.

PC Gaming Improvements

  • Some users may see Game Mode enabled in the Game Bar by default for some of their games.

What’s New in Build 15235 for Mobile

Switch to portrait mode orientation in Continuum

Are you an Windows Insider who is loving the convenience of Continuum by carrying your PC in your pocket? We have heard your VERY PASSIONATE feedback and just made it better. We’re excited to introduce portrait mode support for Continuum starting with this build of Windows 10 Mobile.

Without portrait mode support, the landscape rendering of Continuum from your phone on a portrait oriented monitor would look like this:

Now, it will look like this:

To enable this,  go to Settings > System > Display on your device and change the display orientation to “Portrait” and press apply.

If your phone is connected to a monitor via cable, your phone will ask you to disconnect and reconnect the cable to the external display and press ok to change the orientation to portrait. If your phone is connected to a monitor via Wi-Fi, your phone will ask you to disconnect and reconnect to your wireless display. Once this is done, your phone will remember the orientation and you will not have to repeat the setup process when connecting again to the same monitor.

General changes, improvements, and fixes for PC

  • We fixed an issue from the last flight where if you had display scaling set higher than 100%, you might encounter a bug where the hit targeting was offset when interacting with various parts of the shell. This was particularly noticeable in Action Center, where it might appear that nothing in Action Center could be clicked or tapped, but could also have been experienced in other UI around the system.
  • We fixed an issue resulting in IMAP email accounts such as Gmail, Yahoo, and Aol potentially not syncing in the Mail app in the last two builds.
  • We fixed the issue causing Windows Defender Security Center to be unable to configure and list items for Controlled folder access, Threat History and Exclusions due to a crash in the UI.
  • Narrator Scan Mode is now on by default for just the Edge app. You can continue to toggle Scan Mode on and off with Caps Lock + Space. We made this change based on your feedback. Please keep providing feedback with Caps Lock + EE.
  • We fixed a bug that resulting in poor text rendering on some machines when Magnifier was running with bitmap smoothing enabled. Please try it in today’s build and let us know if it seems better now.
  • We fixed an issue where the Windows Defender Security Center icon appeared unexpectedly stretched out when using a wide sized tile pinned to Start.
  • We fixed an issue where certain inbox apps might unexpectedly show a progress bar on their Start tiles for a short time after upgrading.
  • We fixed an issue resulting in explorer.exe using an unexpectedly high amount of CPU in recent flights when certain apps such as Microsoft Edge were running.
  • We fixed an issue where Groove Music’s mini view player would reset its position to default if you used File Explorer to open and start playing a new mp3 in Groove Music.
  • We fixed an issue resulting in some apps, such as Tweetium, not rendering the UI correctly and becoming difficult to use.
  • We fixed an issue resulting in the notification prompting you to enter tablet mode not working properly when you access in recent flights.
  • We’ve heard your feedback and have adjusted the My People emoji above the Taskbar to now be referred to simply as “My People notifications”. This terminology can be found in Taskbar Settings.
  • We fixed an issue where the mouse response might appear erratic on certain devices when playing games with Raw Input disabled. If you are a gamer and had noticed this issue, we’d appreciate you trying this in today’s build and letting us know if it’s improved.
  • We fixed an issue where the insertion point mouse cursor appeared white for some Insiders, making it invisible against the white background of many text boxes.
  • Some Insiders may have noticed the Windows Error Dialog had a new string in recent flights (“opening a portal to another dimension”). It was a placeholder while we decided what string we wanted to go with, and based on your feedback we’ve updated it to explain that the problem is being reported to Microsoft.
  • We fixed the issue with PC Games using the Origin overlay where the use of overlay may cause game movement to lock up.
  • TruePlay, formerly called Game Monitor, is a placeholder within the Windows UI. Your games cannot be affected at this time. We’ll have more to share soon.

Known issues for PC

  • If you installed Builds 16226-16237 and upgrade to this build, Storage Spaces will not work correctly. While Build 16241 contained a fix for the general reported issue with Storage Spaces in that build range, we discovered that the fix only applies for computers not already in the bad state, and need to do some extra work to return those already impacted to the good state. Special thanks to the Insiders that have helped us investigate this!
  • Trying to use the dictation hotkey (WIN + H) in UWP apps won’t work – you’ll see the UI come up and immediately dismiss. If you’d still like to use dictation, the microphone in the touch keyboard will work. You can right-click the Taskbar for an option to show the touch keyboard button if it’s not already visible.
  • We’re investigating your reports that after upgrading to the latest Insider Preview builds, some network settings are lost and revert to default settings. Static IP address configuration is reverted to DHCP. Networks which were marked as private are reverted to public. After the upgrade you will need to manually readjust your network settings back to your preferred settings.
  • Start, Action Center and notification toasts may at times have a background that is 100% transparent. A fix will be available in later flight – for now, if you encounter this issue, try ending ShellExperienceHost.exe via Task Manager or rebooting to resolve the issue.
  • Connecting to a VPN using a solution downloaded from the Windows Store may result in a system crash.
  • The battery flyout might show unexpected text for the % charged (specifically “%1!s!%2!s!% until fully charged”).

General changes, improvements, and fixes for Mobile

  • This build also includes all the improvements from KB4025342.
  • We fixed an issue where downloading large apps could report out of disk space when there is sufficient space available.
  • We fixed an issue where installing apps (particularly games) from the Windows Store would sometimes fail with “Error, see details”.
  • We fixed an issue where a device could not be unlocked after removing/turning off Windows Hello.
  • We fixed an issue where Cortana would not provide the region when saying “Your region is set to” and then “Is that right?”.
  • We fixed a Turkish localization issue where the string “We need to fix your Microsoft account before you can use shared experiences …” was shown in English.

Known issues for Mobile

  • There is a problem with the HP Elite X3 with wired docks where the portrait orientation setting is lost when the external display is disconnected and reconnected. A workaround for this is to reboot the phone after tapping the “OK” button instead of disconnecting and reconnecting. This workaround must be performed every time you connect to an external display you want to use with Continuum in portrait orientation.

Community & Team Updates

To celebrate our annual company-wide hackathon (the largest private hackathon in the world https://blogs.microsoft.com/jobs/one-week-microsoftlife), we’re releasing a new batch of Ninjacat backgrounds for Windows Insiders! In addition to the Tiger, we are introducing the Dragon and Dire Wolf! Download the zip file here including the assets to make your own!

No downtime for Hustle-As-A-Service,
Dona <3