⚪ Bubble Card - A minimalist card collection for Home Assistant with a nice pop-up touch

A little earlier in this forum, in March 2025, I posted my Bubble-Card with a background graph. Using a Bubble-Card superimposed on a mini-graph-card presented a problem in terms of the simplicity of the code needed to achieve the desired effect.

So I decided to create a module for Bubble Card. Here’s how it works.

Bubble Graph Pro v2.3.3 — Push the boundaries of your dashboards!

Hi everyone! :rocket:

Today, I’m thrilled to share the most advanced version yet of my custom module for Bubble Card: Bubble Graph Pro (v2.3.3).

If you’re using Home Assistant, you already know that Bubble Card is a game-changer for aesthetics. But when it comes to graphs, the default options can feel a bit restrictive… That’s where this module comes in. I wanted to create the perfect marriage between Bubble’s sleek design and the analytical power of something like mini-graph-card.

What’s new in this version?

  • :chart_increasing: Smart AVG Aggregation: No more jagged curves or “gaps” in your data. The module calculates a mathematically smoothed average for a professional, clean look.
  • :rainbow: One-Click Presets: I’ve baked in smart color configurations for your everyday needs:
    • Indoor Temperature: Ultra-precise 8-point scale (from 14°C to 28°C).
    • Outdoor Temperature: High-contrast mapping for frost and heatwaves.
    • Energy & Power: Automatic Green/Yellow/Red gradients based on your usage.
    • Battery: Visual alerts that change as the charge drops.
  • :straight_ruler: Total Layout Control: You asked, I delivered. Paddings are now set to 0 by default. You decide, down to the pixel, exactly how much space to leave for your buttons.
  • :artist_palette: Tailored Aesthetics: Toggle the “Fill” on or off, adjust opacity, choose a fixed color or dynamic thresholds… the possibilities are endless.

Here’s the link to access this module

4 Likes

Bubble Card 3

v3.2.0-beta.5

Hi everyone!

This beta release took longer than I expected, but you won't be disappointed! By the way (again), if you missed the initial release notes, please read them before updating.

I'm repeating myself, but this release is probably the end of my endless optimization war against my beloved pop-ups. My goal was to get instant and smooth transitions, even on older devices, and this time I truly believe it couldn't be much better. This was tested on multiple Android and iOS devices, and if you still experienced slowness in the previous betas, this release should definitely feel a lot faster! :partying_face:

I also did my best to fix the remaining pop-up issues, fixed the missing editor fields since the HA 2026.5 release (I'm late, and sorry for that!), and improved sliders on Android too.

All these changes finally make Bubble Card much faster to load, and everything should feel snappier than ever :heart:

I can't wait for your (positive) feedback, and let's hope this beta will be the last one! :crossed_fingers:


How to test this beta?

The easiest way is to click on the button below, or go to HACS, search for Bubble Card, and click on it. Then, click the three dots icon in the top-right corner and select "Redownload". You'll be able to choose the beta version under "Need a different version?".

Open Bubble Card on Home Assistant Community Store (HACS).


And now, here is everything that is new in this beta:




:check_mark: Bug fixes and improvements

  • Fixed missing editor fields in Home Assistant 2026.5:
    Restored missing editor fields introduced in new Home Assistant release. #2391

  • Improved pop-up performance and animations (agaiiiin):
    Refactored pop-up animations, backdrop handling and layout updates to make transitions much smoother and more responsive, especially on older/slower devices.

  • Optimized pop-up rendering and style updates:
    Cached computed styles and deferred unnecessary layout reads during animations to improve framerate and reduce rendering overhead.

  • Fixed backdrop synchronization:
    Fixed synchronization issues when using custom styles.

  • Fixed scrolling and touch handling issues on Android:
    Fixed slider drag detection issues on Android. #2390 #2210 #2167

  • Improved hash navigation and focus handling:
    Refactored hash navigation event logic for pop-ups. #2386

  • Added extra protection in the pop-up editor:
    Added a security check to prevent cards from accidentally erasing the pop-up configuration. #2381

  • Fixed config issues when switching pop-up modes:
    Fixed a configuration error that could happen when switching from "Default" to "Bubble" pop-ups.

  • And more...




Bubble News :clinking_beer_mugs:


Over the past few years, I’ve been working on Bubble Card almost every day to make it the best it can be, and I still can’t believe how much it has grown in popularity. Watching the community getting this big and seeing so many people using my work has been incredibly rewarding :heart:

This is why I decided to create a Patreon as a way to offer something more for those who want to support me. Over the past few months, I’ve released 5 modules that are easily configurable in the editor, like any other feature:

  • Bubble Badges 2 - Unlimited badges on any sub-button or the main icon
  • Bubble Weather - Animated weather backgrounds with daily/hourly forecasts
  • Bubble Calendar Enhanced - Add time and date on buttons or calendar cards with customizable layout options
  • Bubble Neon - A dynamic theme that automatically assigns unique vibrant colors to each Bubble Card
  • Custom dropdown - Full control over labels, icons, and actions on select cards and sub-buttons
Bubble Weather Bubble Module 2
Bubble Module 3 Bubble Module 4

I’m also finally happy with my own dashboard, built entirely with Bubble Card and only new custom modules I've been working on for months! Like one that adds unique colors and styles to all cards, one for the weather, one for graphs, square cards, time... I’ll release more of these modules soon, with a detailed post on Patreon and a new YouTube video. I would love to know what you think!

Thank you so much for being part of this amazing community, your support always makes a huge difference! :heart:

Support my work on Patreon


I’ve been wanting to start my own YouTube channel for a while, focusing on tutorials around Home Assistant and Bubble Card, and I really hope you will enjoy my videos. Don’t hesitate to subscribe to help give my channel more visibility. Thank you in advance!

YouTube


I want to highlight that on the GitHub page, in the Discussions section, you can share and discover some amazing YAML examples from the community. Go check it out! Some of the creations are absolutely incredible!

Community creations


And if you are interested I've opened a Subreddit for Bubble Card where I post my progress on the project. Here it is:

Reddit Page


Also, if you ever want to grab me a fresh beer, here are some easy ways :clinking_beer_mugs:

Buy me a beer PayPal Patreon

2 Likes

I've noticed my dashboard has been a little sluggish lately so I passed it over to Gemini to take a look over and it's highlighted this :

Is the whole thing still rendered on load with Bubble Card popups?

Yes, it is. When you create a Bubble Card popup on a view (like your main - path: bubble view), Home Assistant still downloads, parses, and builds the Document Object Model (DOM) for every single card, sensor, and graph inside that popup the moment the main page loads.

Is this understanding correct? I thought bubble did some magic under the covers to limit this on page load? I can move my popups into subviews and lose the smooth animations but wanted to check before going through that effort, it could just be something else I've changed recently.

Have you tried with v3.2.0-beta.5? And have you migrated all your pop-ups in the editor?

Are you saying that statement would be true in previous versions to v3.2.0-beta.5 ? I'm on v3.1.6 currently. To be honest I've lost track a bit over recent months, what's the sign of a non-migrated popup that I can search for?

I wouldn't say it's currently too slow but sometimes I do get a bit of a meh animation which I guess I wouldn't be expecting on a Samsung S25+ or 2025 MBA. Sometimes the editor does just crash the whole page on my laptop though. It does seem a little better this afternoon since I moved out a couple of the heavier popups into subviews.

:loudspeaker: Announcement: Bubble Graph Pro v2.4.0 is out!

I am thrilled to announce the release of v2.4.0 for the Bubble Graph Pro module. This update is a major milestone: it is the "Harmony & Performance" edition, specifically designed for rock-solid stability and seamless visual integration.

:gem_stone: What’s new in v2.4.0?

After several rounds of intensive testing, this version focuses on the essentials to provide the smoothest experience possible:

  • :high_voltage: Total Neon Compatibility: Thanks to a surgical CSS rewrite, the module now works perfectly alongside Bubble Neon. Your gradients will now span the entire card without any structural interference.
  • :broom: Streamlined Code: Redundant functions have been removed to lighten the module and prevent layout conflicts within Home Assistant.

:rocket: Why upgrade to v2.4.0?

This version is the result of a push for simplicity. By returning to a "Ghost" layer structure, the graph acts as a pure background, letting the Bubble Card handle its own geometry.

Note to users: If you are looking for maximum stability for your mobile dashboards, v2.4.0 is the definitive version.


Bubble Graph Pro v2.4.0: Your data has never looked this elegant.

Download Link

2 Likes

For sometime, I've been trying to create a single card to use two blinds as a Group and Individually. Here is my effort, welcome any improvements.

styles: |
  ${(() => {
    const styleGroup = (start, end, background, borderColor) => {
      const first = card.querySelector(`.bubble-sub-button-${start}`);
      const last = card.querySelector(`.bubble-sub-button-${end}`);

      if (!first || !last) return;

      let parent = first.parentElement;

      while (parent && !parent.contains(last)) {
        parent = parent.parentElement;
      }

      if (!parent) return;

      parent.style.background = background;
      parent.style.border = `1px solid ${borderColor}`;
      parent.style.borderRadius = '18px';
      parent.style.padding = '4px 8px';
      parent.style.gap = '0px';
      parent.style.alignItems = 'center';
    };

    /* Button order:
       1 = top/main My
       2-5 = Side blind group
       6-9 = Front blind group
    */

    styleGroup(
      2,
      5,
      'color-mix(in srgb, var(--info-color) 22%, var(--card-background-color))',
      'color-mix(in srgb, var(--info-color) 40%, transparent)'
    );

    styleGroup(
      6,
      9,
      'color-mix(in srgb, var(--success-color) 22%, var(--card-background-color))',
      'color-mix(in srgb, var(--success-color) 40%, transparent)'
    );
  })()}

  .bubble-name-container {
    margin: 0 12px 0 1px !important;
    flex-grow: 0 !important;
    width: auto !important;
    max-width: 170px !important;
  }

  .bubble-sub-button-container {
    margin-left: 0 !important;
    gap: 8px !important;
  }

  .bubble-sub-button {
    background: transparent !important;
  }

  .bubble-sub-button-icon {
    --mdc-icon-size: 22px !important;
  }

  /* Stop icons */
  .bubble-sub-button-4 .bubble-sub-button-icon,
  .bubble-sub-button-8 .bubble-sub-button-icon {
    --mdc-icon-size: 25px !important;
  }

  .bubble-sub-button-2,
  .bubble-sub-button-6 {
    min-width: 42px !important;
  }

Bubble Card 3

v3.2.0-rc.1

Hi everyone!

Here we are! Bubble Card v3.2.0 is now finally a release candidate! :clinking_beer_mugs: This version adds some important improvements and bug fixes on top of beta.5. If you haven't updated yet, please make sure to read the beta.1 release notes. This is a massive update with a complete rewrite of the pop-up system, and a lot of great new features!

This RC is all about polish, stability, and making the experience even smoother. I've focused on fixing the remaining edge cases, improving performance a bit more (yeah, again :sweat_smile:), and adding a helpful migration dialog for users still using the old pop-up format.

This release also introduces a new "Performance mode" based on the beta.5 behavior with some additional improvements. That previous beta changed how the blur was applied to pop-ups, and some of you didn’t like that, so I’ve reverted it. This version is still lightning fast even without this new mode, but if you still notice some stuttering when opening your pop-ups, give this feature a try!


Let's hope this one is ready to go! :rocket:


How to test this release candidate?

The easiest way is to click on the button below, or go to HACS, search for Bubble Card, and click on it. Then, click the three dots icon in the top-right corner and select "Redownload". You'll be able to choose the release candidate version under "Need a different version?".

Open Bubble Card on Home Assistant Community Store (HACS).


And now, here is everything that is new in this release candidate:




:light_bulb: New features and enhancements

  • Added "Performance mode" for pop-ups:
    I've added a new "Performance mode" setting to optimize pop-up behavior on older or slower devices. In YAML: performance_mode: performance.

  • Migration notice for legacy pop-up cards:
    Added a helpful migration notification to guide users still using the old pop-up format to the new format (to avoid too many questions from users that aren't reading my changelogs :eyes:).




:check_mark: Bug fixes and improvements

  • Fixed pop-up and dashboard flickering:
    Refactored body scroll lock logic to eliminate flickering issues. #2400

  • Enhanced pop-up backdrop handling:
    Improved backdrop blur effects and synchronization.

  • Improved text scrolling performance:
    For smoother and faster text scrolling animations on cards.

  • Fixed slider dragging in some cases:
    Disabled the hold action on slider buttons as this was preventing dragging in some cases.

  • Enhanced style updates in pop-ups:
    Improved how styles are applied and updated in pop-ups for faster and more stable transitions.

  • And more...




Bubble News :clinking_beer_mugs:


Over the past few years, I’ve been working on Bubble Card almost every day to make it the best it can be, and I still can’t believe how much it has grown in popularity. Watching the community getting this big and seeing so many people using my work has been incredibly rewarding :heart:

This is why I decided to create a Patreon as a way to offer something more for those who want to support me. Over the past few months, I’ve released 5 modules that are easily configurable in the editor, like any other feature:

  • Bubble Badges 2 - Unlimited badges on any sub-button or the main icon
  • Bubble Weather - Animated weather backgrounds with daily/hourly forecasts
  • Bubble Calendar Enhanced - Add time and date on buttons or calendar cards with customizable layout options
  • Bubble Neon - A dynamic theme that automatically assigns unique vibrant colors to each Bubble Card
  • Custom dropdown - Full control over labels, icons, and actions on select cards and sub-buttons
Bubble Weather Bubble Module 2
Bubble Module 3 Bubble Module 4

I’m also finally happy with my own dashboard, built entirely with Bubble Card and only new custom modules I've been working on for months! Like one that adds unique colors and styles to all cards, one for the weather, one for graphs, square cards, time... I’ll release more of these modules soon, with a detailed post on Patreon and a new YouTube video. I would love to know what you think!

Thank you so much for being part of this amazing community, your support always makes a huge difference! :heart:

Support my work on Patreon


I’ve been wanting to start my own YouTube channel for a while, focusing on tutorials around Home Assistant and Bubble Card, and I really hope you will enjoy my videos. Don’t hesitate to subscribe to help give my channel more visibility. Thank you in advance!

YouTube


I want to highlight that on the GitHub page, in the Discussions section, you can share and discover some amazing YAML examples from the community. Go check it out! Some of the creations are absolutely incredible!

Community creations


And if you are interested I've opened a Subreddit for Bubble Card where I post my progress on the project. Here it is:

Reddit Page


Also, if you ever want to grab me a fresh beer, here are some easy ways :clinking_beer_mugs:

Buy me a beer PayPal Patreon

When can we expect your youtube to launch off :smiley:

Yeah... I really want to publish new videos and I already have one that is in the (early) work. But with these new releases I'm working on and the new HA versions that are breaking things these past few months, I barely have enough time to work on it.

But this will come! :clinking_beer_mugs:

Hi everyone!

Bubble Card v3.2.0 is now available! I've just published a very, very long release note in the link below. It took me about 10 hours to write, and I can't wait to get your feedback on this new major version.

Here is the link, go grab a coffee first:
Bubble Card v3.2.0 - Release notes

Enjoy, and thank you! :heart:

I noticed some breaking changes for me.
I somehow can't seem to scroll in my popups anymore. I have a 65px high scrollable vertical stack for my buttons, so that I have a sticky home button on the bottom. But after migrating I can't scroll.

It scrolls on desktop by manually sliding the sidebar, but on my iPhone it's stuck.

Any suggestions on how to bring the scroll back to iPhone? :slight_smile:

Old code example:

type: vertical-stack
cards:
  - type: custom:bubble-card
    card_type: pop-up
    hash: "#plant"
    button_type: name
    sub_button:
      main: []
      bottom: []
    name: Planter
    show_state: true
    icon: mdi:sprout
    tap_action:
      action: perform-action
      perform_action: light.turn_off
      target:
        entity_id: light.alle_lys
    button_action:
      tap_action:
        action: perform-action
        perform_action: light.turn_off
        target:
          entity_id: light.alle_lys
    styles: |-
      styles: |-
        ha-card {
          --bubble-pop-up-background-color: transparent;
          --bubble-pop-up-main-background-color: transparent;
        }

        .bubble-pop-up,
        .bubble-pop-up-container,
        .bubble-pop-up-background {
          top: 0 !important;
          margin-top: 0 !important;
          padding-top: 0 !important;
          background:
            linear-gradient(rgba(16, 38, 30, 0.82), rgba(16, 38, 30, 0.92)),
            url("/local/img/nature-popup-bg.png") !important;
          background-size: cover !important;
          background-position: center top !important;
          background-repeat: no-repeat !important;
        }

      .bubble-button-card-container {
        background: rgba(60, 94, 74, 0.72) !important;
        border: 1px solid rgba(168, 196, 154, 0.13) !important;
        box-shadow: inset 0 1px 0 rgba(255,255,255,0.05) !important;
      }

      .bubble-button-background {
        opacity: ${state !== '0' ? '1' : '0'} !important;
        background: ${state !== '0'
          ? 'linear-gradient(145deg, rgba(168,196,154,0.45), rgba(233,241,232,0.18))'
          : 'transparent'} !important;
      }

      .bubble-icon-container {
        background: ${state !== '0'
          ? 'rgba(233, 241, 232, 0.28)'
          : 'rgba(168, 196, 154, 0.16)'} !important;
        box-shadow: ${state !== '0'
          ? '0 0 16px rgba(233, 241, 232, 0.18)'
          : 'none'} !important;
      }

      .bubble-icon {
        color: ${state !== '0' ? '#F4F7F1' : '#EAD8B5'} !important;
      }

      .bubble-name {
        color: #EAD8B5 !important;
        font-weight: 700 !important;
      }

      .bubble-state {
        color: rgba(234, 216, 181, 0.72) !important;
      }
    card_layout: normal
    popup_mode: centered
  - type: custom:mod-card
    card_mod:
      style: |
        ha-card {
          height: 64vh;
          overflow-y: auto;
          overflow-x: hidden;
          padding: 0 4px 92px 4px;
          background: transparent;
          box-shadow: none;
          border: 0;
        }

        ha-card::-webkit-scrollbar {
          width: 5px;
        }

        ha-card::-webkit-scrollbar-thumb {
          background: rgba(234, 216, 181, 0.35);
          border-radius: 999px;
        }

        ha-card::-webkit-scrollbar-track {
          background: transparent;
        }
    card:
      type: vertical-stack
      cards:
        - sensors: {}
          colors: {}
          ranges: {}
          type: custom:nature-plant-card
          entity: plant.plante_kontor_2
          name: Agurk
        - sensors: {}
          colors: {}
          ranges: {}
          type: custom:nature-plant-card
          entity: plant.tomatplanter
          name: Tomater
  - type: custom:mod-card
    card_mod:
      style: |
        ha-card {
          position: sticky;
          bottom: 18px;
          z-index: 999;
          width: calc(100% - 44px);
          max-width: 390px;
          margin: 0 auto 18px auto;
          padding: 6px;
          border-radius: 30px;
          background: rgba(30, 58, 47, 0.82) !important;
          border: 1px solid rgba(168, 196, 154, 0.16);
          box-shadow:
            inset 0 1px 0 rgba(255,255,255,0.06),
            0 10px 28px rgba(0,0,0,0.22);
          backdrop-filter: blur(16px);
        }
    card:
      type: grid
      square: false
      columns: 1
      cards:
        - type: custom:paper-buttons-row
          buttons:
            - icon: mdi:home
              layout: icon
              name: Hjem
              tap_action:
                action: navigate
                navigation_path: "#home"
              styles:
                button:
                  background: rgba(168, 196, 154, 0.18)
                  border-radius: 24px
                  width: 92px
                  height: 44px
                  display: flex
                  align-items: center
                  justify-content: center
                icon:
                  color: "#EAD8B5"
                  margin-top: 0
                  "--mdc-icon-size": 24px

New migrated example:

type: custom:bubble-card
card_type: pop-up
hash: "#lys"
button_type: switch
sub_button:
  main: []
  bottom: []
entity: sensor.lights_on
name: Lys og Gardiner
show_state: true
icon: mdi:ceiling-light
tap_action:
  action: perform-action
  perform_action: light.turn_off
  target:
    entity_id: light.alle_lys
button_action:
  tap_action:
    action: perform-action
    perform_action: light.turn_off
    target:
      entity_id: light.alle_lys
styles: |-
  styles: |-
    ha-card {
      --bubble-pop-up-background-color: transparent;
      --bubble-pop-up-main-background-color: transparent;
    }

    .bubble-pop-up,
    .bubble-pop-up-container,
    .bubble-pop-up-background {
      top: 0 !important;
      margin-top: 0 !important;
      padding-top: 0 !important;
      background:
        linear-gradient(rgba(16, 38, 30, 0.82), rgba(16, 38, 30, 0.92)),
        url("/local/img/nature-popup-bg.png") !important;
      background-size: cover !important;
      background-position: center top !important;
      background-repeat: no-repeat !important;
    }

  .bubble-button-card-container {
    background: rgba(60, 94, 74, 0.72) !important;
    border: 1px solid rgba(168, 196, 154, 0.13) !important;
    box-shadow: inset 0 1px 0 rgba(255,255,255,0.05) !important;
  }

  .bubble-button-background {
    opacity: ${state !== '0' ? '1' : '0'} !important;
    background: ${state !== '0'
      ? 'linear-gradient(145deg, rgba(168,196,154,0.45), rgba(233,241,232,0.18))'
      : 'transparent'} !important;
  }

  .bubble-icon-container {
    background: ${state !== '0'
      ? 'rgba(233, 241, 232, 0.28)'
      : 'rgba(168, 196, 154, 0.16)'} !important;
    box-shadow: ${state !== '0'
      ? '0 0 16px rgba(233, 241, 232, 0.18)'
      : 'none'} !important;
  }

  .bubble-icon {
    color: ${state !== '0' ? '#F4F7F1' : '#EAD8B5'} !important;
  }

  .bubble-name {
    color: #EAD8B5 !important;
    font-weight: 700 !important;
  }

  .bubble-state {
    color: rgba(234, 216, 181, 0.72) !important;
  }
card_layout: normal
popup_mode: centered
with_bottom_offset: true
cards:
  - type: custom:layout-card
    layout_type: custom:vertical-layout
    layout:
      height: 64vh
      margin: 0vh 0vh 0vh 0vh
      padding: 0vh 0.4vh
    cards:
      - type: custom:simple-tabs
        background-color: rgba(60, 94, 74, 0.42)
        border-color: rgba(168, 196, 154, 0.18)
        text-color: rgba(234, 216, 181, 0.72)
        active-background: >-
          linear-gradient(145deg, rgba(168,196,154,0.45),
          rgba(233,241,232,0.18))
        active-text-color: "#EAD8B5"
        tabs:
          - title: 1. etg
            cards:
              - type: custom:decluttering-card
                template: seperator
                variables:
                  - name: 1. etasje
              - square: false
                type: grid
                cards:
                  - type: custom:decluttering-card
                    template: lysbryter_nature
                    variables:
                      - name: Gang
                      - icon: mdi:ceiling-light
                      - entity: light.tak_gang
                  - type: custom:decluttering-card
                    template: lysbryter_nature
                    variables:
                      - name: Kommode gang
                      - icon: mdi:lamp
                      - entity: light.gang_kommode_lampe
                  - type: custom:decluttering-card
                    template: lysbryter_nature
                    variables:
                      - name: Bod
                      - icon: mdi:ceiling-light
                      - entity: light.tak_bod
                  - type: custom:decluttering-card
                    template: lysbryter_nature
                    variables:
                      - name: Gjesterom
                      - icon: mdi:ceiling-light
                      - entity: light.taklampe_stort_gjesterom
                  - type: custom:decluttering-card
                    template: lys_slider_nature
                    variables:
                      - name: Bad
                      - icon: mdi:light-recessed
                      - entity: light.bad_1_etg
                  - type: custom:decluttering-card
                    template: lysbryter_nature
                    variables:
                      - name: Speil Bad
                      - icon: mdi:mirror-rectangle
                      - entity: light.speil_bad_1etg
                  - type: custom:decluttering-card
                    template: lysbryter_nature
                    variables:
                      - name: Soverom
                      - icon: mdi:ceiling-light
                      - entity: light.soverom
                  - type: custom:decluttering-card
                    template: lys_slider_nature
                    variables:
                      - name: Klesskap
                      - icon: mdi:wardrobe
                      - entity: light.bryter_klesskap
                  - type: custom:decluttering-card
                    template: lys_slider_nature
                    variables:
                      - name: Nattbord <br>André
                      - icon: mdi:wall-sconce
                      - entity: light.nattlampe_andre
                  - type: custom:decluttering-card
                    template: lys_slider_nature
                    variables:
                      - name: Nattbord <br>Martine
                      - icon: mdi:wall-sconce
                      - entity: light.nattlampe_martine
                  - type: custom:decluttering-card
                    template: lysbryter_nature
                    variables:
                      - name: Kontor
                      - icon: mdi:ceiling-light
                      - entity: light.taklampe_kontor
                  - type: custom:decluttering-card
                    template: lysbryter_nature
                    variables:
                      - name: Lyslenke Terasse
                      - icon: mdi:string-lights
                      - entity: light.lyslenke_terrasse
                  - type: conditional
                    conditions:
                      - condition: state
                        entity: light.trapp_julelys
                        state_not: unavailable
                    card:
                      type: custom:decluttering-card
                      template: lysbryter_nature
                      variables:
                        - navn: Trapp Julelys
                        - icon: mdi:pine-tree
                        - entity: light.trapp_julelys
                columns: 2
          - title: 2. etg
            cards:
              - type: custom:decluttering-card
                template: seperator
                variables:
                  - name: 2. etasje
              - square: false
                type: grid
                cards:
                  - type: custom:decluttering-card
                    template: lysbryter_nature
                    variables:
                      - name: Trapp
                      - icon: mdi:ceiling-light
                      - entity: light.taklampe_trapp
                  - type: custom:decluttering-card
                    template: lysbryter_nature
                    variables:
                      - name: Glasskap
                      - icon: mdi:glass-wine
                      - entity: light.glasskap
                  - type: custom:decluttering-card
                    template: lysbryter_nature
                    variables:
                      - name: Kjøkkenøy
                      - icon: mdi:ceiling-light
                      - entity: light.tak_kjokkenoy
                  - type: custom:decluttering-card
                    template: lysbryter_nature
                    variables:
                      - name: LED <br>Kjøkkenøy
                      - icon: mdi:led-strip-variant
                      - entity: light.led_kjokkenoy
                  - type: custom:decluttering-card
                    template: lysbryter_nature
                    variables:
                      - name: Lampe <br> Skjenk
                      - icon: mdi:lamp
                      - entity: light.lampe_skjenk
                  - type: custom:decluttering-card
                    template: lys_slider_nature
                    variables:
                      - name: Spisebord
                      - icon: mdi:vanity-light
                      - entity: light.spisebord
                  - type: conditional
                    conditions:
                      - condition: state
                        entity: light.juletre
                        state_not: unavailable
                    card:
                      type: custom:decluttering-card
                      template: lysbryter_nature
                      variables:
                        - name: Juletre
                        - icon: mdi:pine-tree
                        - entity: light.juletre
                  - type: custom:decluttering-card
                    template: lys_slider_nature
                    variables:
                      - name: TV-Stue
                      - icon: mdi:ceiling-light
                      - entity: light.tv_stue
                  - type: custom:decluttering-card
                    template: lysbryter_nature
                    variables:
                      - name: LED TV
                      - icon: mdi:television
                      - entity: light.led_tv
                  - type: custom:decluttering-card
                    template: lys_slider_nature
                    variables:
                      - name: Bad
                      - icon: mdi:light-recessed
                      - entity: light.bad_2_etg
                  - type: custom:decluttering-card
                    template: lysbryter_nature
                    variables:
                      - name: Speil Bad
                      - icon: mdi:mirror
                      - entity: light.speil_bad_2_etg
                columns: 2
          - title: Gardiner
            cards:
              - type: custom:decluttering-card
                template: seperator
                variables:
                  - name: Gardiner
              - square: false
                type: grid
                cards:
                  - type: custom:decluttering-card
                    template: lys_slider_nature
                    variables:
                      - name: Soverom
                      - icon: mdi:curtains
                      - entity: cover.gardiner_soverom
                  - type: custom:decluttering-card
                    template: lys_slider_nature
                    variables:
                      - name: Soverom
                      - icon: mdi:blinds
                      - entity: cover.rullegardin
                  - type: custom:decluttering-card
                    template: lys_slider_nature
                    variables:
                      - name: Kontor
                      - icon: mdi:blinds
                      - entity: cover.rullegardin_lite_gjesterom
                  - type: custom:decluttering-card
                    template: lys_slider_nature
                    variables:
                      - name: Gjesterom
                      - icon: mdi:blinds
                      - entity: cover.rullegardin_stort_gjesterom
                columns: 2
          - title: Dører
            card:
              type: markdown
              content: Home content
        tab_position: top
        hide_inactive_tab_titles: false
        remember_tab: "true"
  - type: custom:mod-card
    card_mod:
      style: |
        ha-card {
          position: sticky;
          bottom: 18px;
          z-index: 999;
          width: calc(100% - 44px);
          max-width: 390px;
          margin: 0 auto 18px auto;
          padding: 6px;
          border-radius: 30px;
          background: rgba(30, 58, 47, 0.82) !important;
          border: 1px solid rgba(168, 196, 154, 0.16);
          box-shadow:
            inset 0 1px 0 rgba(255,255,255,0.06),
            0 10px 28px rgba(0,0,0,0.22);
          backdrop-filter: blur(16px);
        }
    card:
      type: grid
      square: false
      columns: 1
      cards:
        - type: custom:paper-buttons-row
          buttons:
            - icon: mdi:home
              layout: icon
              name: Hjem
              tap_action:
                action: navigate
                navigation_path: "#home"
              styles:
                button:
                  background: rgba(168, 196, 154, 0.18)
                  border-radius: 24px
                  width: 92px
                  height: 44px
                  display: flex
                  align-items: center
                  justify-content: center
                icon:
                  color: "#EAD8B5"
                  margin-top: 0
                  "--mdc-icon-size": 24px

Seems like I can’t slide volume sliders eather

@Vintage89 Hi! Could you open two separate issues on GitHub? This is much easier for me, thank you so much in advance!

I will put it up after work. Thanks again for your great work :blush:

1 Like

I can confirm that after installing version 3.2 and migrating my Bubble Cards, scrolling in the pop-ups no longer works.
I’m using the latest version of Safari on iOS, and both iOS and Safari are fully up to date.
I'm not using any sticky buttons in the pop-ups.

Update: I just tested it again, and scrolling inside pop-ups also does not work in Safari on macOS.

I'm rolling back to 3.1 -- 3.2 brought a "migration" that fubars the layouts I had (not even custom ones, in some cases), and introduces a nag screen about migration.

All my popups got deleted, I actually liked having the vertical stack for easier management and the migration should've been optional.

Luckily I was able to roll back HA backup to get them back, guess can't do that again damn.

Hi! I'm aware of the migration issues in some particular cases, and I'm currently working on this! This was not reported during the beta phase and I will do my best to release a new version the sooner I can!

Also, currently the migration stays optional (while highly recommended to get the performance boost and the new editor), and your legacy pop-ups still works as before even in v3.2.0.

Also, if you could open new issues on GitHub with your YAML, this would help me a lot!

I'm sorry for this and let's hope I will be able to release a new version not too late!

1 Like

@doctorkb could you open an issue by using the link in the comment above, so that I can try to reproduce this? Thank you so much in advance!

@davidnestico this migration/removal issue will be fixed in the next release, I know that you're an "old Bubble Card user" but you should really give its chance to the new editor, all the feedback I got about it were really positive.

1 Like