Skip to content

Wallpaper/background CSS can get stuck in a partial state: "Background Image" layer disappears and cannot be restored by normal Doki commands #293

@oplotleni-glitch

Description

@oplotleni-glitch

Summary

Short version first. More technical details below.

Doki Theme can get stuck in a partially installed CSS state on Windows where:

  • /* EmptyEditor Image */ exists
  • /* Stickers */ exists
  • /* Background Image */ is missing

When that happens, the wallpaper / glass-like transparency effect disappears from the main workbench/editor area, while the empty-editor background and stickers still remain.

In this state, normal Doki recovery flows may fail to rebuild the missing Background Image layer.


Environment

  • VS Code: Stable on Windows
  • Doki Theme: unthrottled.doki-theme 88.1.18
  • OS: Windows

Visible behavior

The theme looked only partially broken:

  • stickers still worked
  • empty editor background still worked
  • the main wallpaper/transparency layer was gone

So the extension still appeared active, but one critical visual layer was missing.


Concrete broken state

In workbench.desktop.main.css, the broken state was:

  • /* EmptyEditor Image */ present
  • /* Stickers */ present
  • /* Background Image */ missing

In the working state, all three blocks were present.

The missing transparency effect mapped directly to the missing /* Background Image */ block.


Recovery actions that did not fix it

In my case, these did not restore the missing layer:

  • toggling doki.wallpaper.enabled
  • reloading the VS Code window
  • using Doki restore/install flows
  • reinstalling/reapplying wallpaper through normal commands

The config could indicate wallpaper was enabled, while the generated CSS still remained in the partial state above.


Technical observations

1. Wallpaper and empty-editor background are generated separately

From the installed extension code, these appear to be separate CSS generation paths, mainly around:

  • StickerService
  • buildWallpaperCss(...)
  • buildBackgroundCss(...)
  • buildCSSWithWallpaperAndBackground(...)

That matches the broken behavior: one layer can disappear while the other remains.

2. ConfigWatcher does not appear to watch the enable flags

It looks like ConfigWatcher reacts to changes such as:

  • doki.sticker.path
  • doki.sticker.css
  • doki.background.path
  • doki.wallpaper.path
  • doki.background.anchor

But not to:

  • doki.wallpaper.enabled
  • doki.background.enabled

If that reading is correct, toggling those settings may not trigger the rebuild users expect.

3. Recovery appears too dependent on current CSS markers

AutoInstaller seems to infer restore state from markers already present in the generated CSS, especially for wallpaper.

That makes recovery fragile once the CSS has already drifted into a partial state.

If /* Background Image */ is already missing, recovery may not reconstruct the full CSS state correctly.


Why this looks like a recovery/architecture bug

This did not look like an asset problem.

The issue was:

  • settings looked valid
  • some Doki layers were still installed
  • one critical Doki CSS block was missing
  • normal Doki commands did not fully restore it

That suggests the extension can enter a partially broken installed state and then fail to recover idempotently.


What fixed it manually

The issue was resolved only after manually restoring a Doki-compatible /* Background Image */ block into workbench.desktop.main.css.

As soon as that block was restored, the transparency/wallpaper effect came back.

That strongly suggests the problem is in CSS regeneration/recovery, not in the assets themselves.


Suggested fix direction

Possible directions:

  1. Make ConfigWatcher also react to:

    • doki.wallpaper.enabled
    • doki.background.enabled
  2. Make restore/install flows rebuild the full Doki CSS state from settings, instead of depending on the current CSS markers too heavily.

  3. Make restore/install operations idempotent:

    • if any expected Doki block is missing, rebuild the complete set
  4. Consider validating the expected full installed state:

    • Background Image
    • EmptyEditor Image
    • Stickers

instead of partially inferring state from whatever blocks remain.


Note

I am not claiming this is the only repro path, only that this partial state is possible and normal recovery did not repair it.

This report was drafted with AI assistance after a broken custom Doki setup and multiple recovery attempts. I reviewed it before posting, but I may not be able to answer detailed follow-up questions about the extension internals.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions