<?xml version="1.0"?>
<!--
  ~ Copyright (C) 2019 The Android Open Source Project
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
  ~ You may obtain a copy of the License at
  ~
  ~      http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->
<tutorialBundle
    name="What's New"
    resourceRoot="/"
    stepByStep="false"
    hideStepIndex="true"
    version="2025.1.1.00">
  <feature
      name="What's New in Narwhal">
    <tutorial
        key="whats-new"
        label=" What's New in Narwhal"
        icon="preview/product-icon.svg"
        remoteLink="https://d.android.com/r/studio-ui/whats-new-assistant/preview-release-notes/2025-1-1"
        remoteLinkLabel="Read in a browser">
      <description>
        <![CDATA[
          This panel describes some of the new features and behavior changes
          included in this update.
          <br><br>
          To open this panel again later, select <b>Help &gt; What's New in Android Studio</b>
          from the main menu.
          ]]>
      </description>
      <step label="Gemini in Android Studio now supports multimodal image attachments">
        <stepElement>
          <section>
            <![CDATA[
            <p>Now you can attach images directly to your Gemini prompts within Android
            Studio. Get instant insights on complex technical diagrams or use design mocks
            to generate corresponding code skeletons. This seamless integration of visual
            context into your AI-assisted workflow unlocks new levels of efficiency and
            creativity.</p>
            <br>
            <a href="https://d.android.com/r/studio-ui/build/gemini-image-attachments">Learn more</a>
            <br>
            ]]>
          </section>
        </stepElement>
      </step>
      <step label="Test and develop with app backup and restore">
        <stepElement>
          <section>
            <![CDATA[
            <p><a href="https://developer.android.com/identity/data/backup">Android Backup and
            Restore</a> enables your app to back up app data and restore it either on to a new
            device or after a fresh install. In Android Studio, you can now more easily generate a
            backup of your app data saved to local storage and restore that data on to a test device.
            </p>
            <p>
            This not only makes it much easier to test your app's support for backup and restore,
            but also accelerates your development workflow by helping you set up a new device, or
            install with the sample data and configurations you need to develop and debug your app.
            </p>
            <br>
            <a href="https://d.android.com/r/studio-ui/ide/test-backup-restore">Learn more</a>
            <br>
            ]]>
          </section>
        </stepElement>
      </step>
      <step label="Android Studio XR support available">
        <stepElement>
          <section>
          <![CDATA[
          <p>Android Studio Meerkat Feature Drop | 2024.3.2 includes support for developers building
          immersive experiences with Jetpack XR! This release introduces tools to help you
          experiment, deploy, and debug XR applications with greater efficiency.</p>
          <br>
          <ul>
            <li><b>XR Template:</b> Kickstart your XR development with a new project template
            specifically designed for Jetpack XR. This provides a solid foundation with code
            to begin your XR development journey.</li>
            <li><b>XR Emulator:</b> Test your XR applications without needing physical hardware!
            Create a standalone XR headset emulator using the AVD Manager to preview and debug
            your experiences in a virtual environment.</li>
            <li><b>Layout Inpsector for XR:</b> Debug and optimize your Compose UI layouts
            within the XR environment. The Layout Inspector now supports XR applications,
            providing insights into your app's structure and helping you identify potential
            issues.</li>
          </ul>
          <br>
          <p>Android Studio XR support is still in its early stages, and we have many more
          exciting features planned. Please share your feedback and submit feature requests
          to help us shape the future of XR development in Android Studio!</p>
          <br>
          <a href="https://d.android.com/r/studio-ui/build/studio-xr-support">Learn more</a>
          <br>
          ]]>
          </section>
        </stepElement>
      </step>
      <step label="Compose preview generation with Gemini">
        <stepElement>
          <section>
            <![CDATA[
            <p>
            <a href="https://d.android.com/develop/ui/compose/tooling/previews">Compose Preview</a>
            helps you visualize your composables during design time in Android Studio.
            To make it easier for you to include mock data as preview parameters, Android Studio
            supports an experimental feature: Compose preview generation with Gemini.</p>
            <p>To access this tool, right-click any composable and navigate to <b>Gemini >
            Generate "Composable Name" Preview</b>, or when the current file doesn't have any
            previews, right-click and navigate to <b>Gemini > Generate Compose Preview
            for this file</b>.</p>
            <p>While Gemini's generated code may not be perfect every time, it helps provide a
            valuable starting point to accelerate your development workflow.</p>
            <br>
            <a href="https://d.android.com/r/studio-ui/test/gemini-compose-preview">Learn more</a>
            <br>
            ]]>
          </section>
        </stepElement>
      </step>
      <step label="Compose Preview Screenshot Testing tool">
        <stepElement>
          <section>
            <![CDATA[
            <p>Use the Compose Preview Screenshot Testing tool to test your Compose UIs and
            prevent regressions. The new tool helps you generate HTML reports that let you
            visually detect any changes to your app's UI.
            </p>
            <br><br>
            <br>
            <a href="https://d.android.com/r/studio-ui/test/compose-screenshot-testing">Learn more</a>
            <br>
            ]]>
          </section>
        </stepElement>
      </step>
      <footerStep label="">
        <stepElement>
          <section>
            <![CDATA[
              <br><em>Last updated 03/10/2025</em><br>
            ]]>
          </section>
        </stepElement>
      </footerStep>
    </tutorial>
  </feature>
</tutorialBundle>