github dwall-rs/dwall nightly
Nightly Build 20261105

pre-release3 hours ago

🌙 Nightly Build

Build Date: 20261105
Commit: 70ac428

📝 Changes

  • refactor: improve color scheme and sun angle calculation logic (#623)
  • fix(scope): remove debug guard from OffsetDateTime constructor (#624)
  • feat(theme): add PNG image format support for customized themes (#625)
  • build(deps): bump log from 0.4.30 to 0.4.32 (#626)
  • build(deps): bump log from 0.4.32 to 0.4.33 (#628)
  • build(deps): bump tauri from 2.11.2 to 2.11.3 (#630)
  • build(deps): bump tauri-build from 2.6.2 to 2.6.3 (#631)
  • build(deps): bump open from 5.3.5 to 5.3.6 (#634)
  • build(deps): bump rand from 0.10.1 to 0.10.2 (#635)
  • build(deps): bump tauri from 2.11.3 to 2.11.5 (#636)
  • build(deps): bump open from 5.3.6 to 5.4.0 (#638)
  • Refactor according to the SRP (#643)
  • feat: add daily random theme selector with shuffle algorithm (#645)
  • fix: address the 2026-10-15 code review (P1/P2 checklist) (#655)
  • refactor(dwall): wait on WinRT operations through one bounded helper (#657)
  • chore(deps): follow tauri onto the windows 0.62 line (#658)
  • feat(dwall): support running the daemon without the settings window (#659)
  • fix(dwall): announce an existing auto-start entry before replacing it (#660)
  • fix(dwall): guarantee a windowless auto-start (#663)
  • docs: rewrite the documentation with sourced comparisons (#664)
  • fix(settings): offer to download a theme that is not on disk (#665)
  • fix(settings): maximize against the work area with a side taskbar (#666)
  • feat(settings): check pre-releases for updates (#668)
  • feat(library): offer downloads for themes that are not installed (#669)
  • feat(settings): expose the daemon's system light/dark switch (#670)
  • fix(settings): keep the system-theme switch and its documentation in step (#671)
  • feat(settings): let the title bar follow the app or the Windows theme (#672)
  • fix: survive persistent failures and reject invalid downloads (#675)
  • fix(dwall): share the monitor snapshot and fail a cycle that applied nothing (#676)
  • fix(settings): harden extraction, the thumbnail cache and the directory move (#677)
  • fix(logging,time,settings): bound log growth and expose the daemon error (#678)
  • fix(dwall,settings): pick up config changes promptly and stop only our daemon (#679)
  • fix(dwall): invalidate the theme and derived caches on their inputs (#681)
  • fix(settings): keep used thumbnails alive and clamp download progress (#682)
  • chore(docs): correct the daemon memory figures from measurements (#684)
  • perf(dwall): apply frame and light/dark changes at the instant they are due (#688)
  • feat(dwall): stop and report when automatic location is switched off (#689)
  • fix(dwall): match wallpaper frames by the angle between sun positions (#690)
  • feat(settings): check for updates once when the window opens (#691)
  • chore(deps): bump tauri-apps/tauri-action from 0.5.23 to 1.0.0 (#695)
  • chore(deps): bump actions/checkout from 4.4.0 to 7.0.1 (#698)
  • chore(deps): bump dorny/paths-filter from 3.0.4 to 4.0.3 (#699)
  • chore(deps): bump actions/setup-node from 4.4.0 to 7.1.0 (#697)
  • chore(deps): bump oven-sh/setup-bun from 1.2.2 to 2.2.0 (#700)
  • chore(deps): upgrade zip to 9 and single-instance to 2 (#701)
  • feat(settings): let the content area separate itself from the title bar (#702)
  • feat(settings): show the release notes in a dialog (#703)
  • chore(agents): split commits by change, and ask before pushing (#704)
  • refactor(stage): let the sun path be shown without a selection (#705)
  • feat(stage): show today's theme on the sun path in random mode (#706)
  • refactor(stage): lead random mode with the sun track (#707)
  • fix(stage): reveal the sun readout on hover, not permanently (#708)
  • fix(settings): keep listing custom themes when one is broken (#709)
  • fix(settings): stop the daemon without blocking the async runtime (#710)
  • fix: errors that may occur in some edge cases on the front end (#711)
  • chore(agents): require a branch per change and a pull request to main (#712)
  • fix(library): keep theme models stable so filtering does not remount the grid (#717)
  • fix(settings): stop the thumbnail cache walks truncating silently (#713)
  • fix(settings): validate renderer-supplied paths on the read commands (#716)
  • fix(settings): drop idle thumbnail download locks (#714)
  • fix(settings): fail closed when matching the daemon process (#715)
  • ci(cache): warm the ts and typegen builds the bindings check needs (#719)
  • chore(agents): name the automerge label and why branches stay behind (#718)
  • fix(settings): stage a directory move beside the destination (#721)
  • fix(settings): bound what a download may write to disk (#722)
  • fix(settings): encode the theme id before it becomes a URL (#729)
  • fix(settings): name the size limit that actually fired (#730)
  • fix(settings): refuse names Windows cannot write (#731)
  • fix(packaging): keep the user themes and configuration on uninstall (#732)
  • fix(settings): grant only the process permission the app uses (#733)
  • perf(settings): run the catalog commands off the main thread (#735)
  • perf(settings): drop the async runtime the window never awaits on (#736)
  • fix(lib): stop blocking selection and paste where they are needed (#738)
  • fix(style): hold the ambient animations still when motion is reduced (#737)
  • fix(layout): take hidden controls out of the tab order (#739)
  • fix(stage): make the wallpaper strip keyboard operable (#740)
  • fix(scope): make the monitor and unify-all cards keyboard operable (#741)
  • fix(library): make the theme tile keyboard operable (#742)
  • fix(settings): spawn the daemon launch on the Tauri runtime (#743)
  • ci(github): merge a pull request labelled after its checks ran (#744)
  • fix(library): show why the themes are missing and let it be retried (#745)
  • fix(scene): fall back when a wallpaper image will not decode (#746)
  • test: cover the high-risk gaps from the review (#751)
  • fix(layout): move focus into the library drawer and back out (#747)
  • fix(i18n): resolve the browser locale instead of matching it exactly (#748)
  • fix(i18n): translate the settings subtitle (#749)
  • chore(i18n): drop the commit keys nothing reads (#750)
  • test: cover the medium-risk gaps, and fix the release precedence they exposed (#753)
  • fix(settings): let the asset protocol read only the theme directories (#752)
  • chore(dev): move the dev server off the default Tauri port (#754)
  • chore(agents): write down the accessibility boundary and the label rule (#755)
  • fix(ui): guard the matcher read, settle the races and drop what nothing reads (#757)
  • fix(settings): bound downloads, clean up cancelled scratch files and log what was swallowed (#756)
  • fix(dwall): make the lock screen theme deterministic and bound the log file (#758)
  • chore(docs): mark the fixed review findings with their commits (#759)
  • test: cover the numeric core, the IPC shapes and the remaining test seams (#760)
  • fix(settings): run the debug daemon in a debug build (#761)
  • fix(dwall): detect a config rewrite the file timestamp cannot see (#762)
  • chore(docs): mark the fixed findings in the review sections 4 to 6 (#763)
  • perf(style): drop the i18n schemes no selectable language can use (#764)
  • chore(docs): record what the CSS audit actually found (#765)
  • refactor(settings): resolve monitor wallpapers in rust (#766)
  • fix(settings): resolve monitor themes in a deterministic order (#768)
  • ci: use the project biome instead of a global install (#767)
  • chore(deps): bump actions/cache from 5.1.0 to 6.1.0 (#771)
  • chore(deps): bump actions/github-script from 7.1.0 to 9.0.0 (#773)
  • chore(deps): bump mikepenz/release-changelog-builder-action from 4.2.2 to 6.4.0 (#775)
  • chore(deps): bump actions/cache/restore from 5.1.0 to 6.1.0 (#776)
  • ci: skip the merge step when the token is absent (#777)
  • chore(deps): update the frontend and cargo dependencies (#778)
  • chore(docs): say what dwall does instead of None (#779)
  • chore(docs): report the memory figure Task Manager shows (#780)
  • chore(docs): dwall can be a wallpaper-only tool too (#781)
  • chore(docs): explain why the frame is chosen by angle, not by clock (#782)
  • fix(dwall): reselect the random theme when the day changes (#783)
  • fix(settings): validate the configuration before writing it (#784)
  • fix(settings): fall back to a direct client when the proxy is unusable (#785)
  • fix(dwall): claim the single-instance mutex before rotating the log (#786)
  • fix(settings): bound the numeric fields to the values the config accepts (#787)
  • fix(dwall): keep the full LUID when resolving a monitor target (#788)
  • fix(settings): recover from a completed or oversized partial download (#789)
  • fix(theme): survive an unavailable localStorage at start-up (#790)
  • fix(settings): order monitors by the display position (#791)
  • fix(settings): switch to settings before showing the update target (#792)
  • fix(dwall): balance CoInitialize and release the COM interface first (#793)
  • fix(config): give each atomic write its own temporary file (#794)
  • fix(settings): do not mark a theme installed without its images (#795)
  • docs(headless): stop claiming cmd /c waits (#796)
  • docs(custom-themes): say the open library does not watch the directory (#797)
  • docs(comparison): describe per-monitor behaviour as implemented (#798)
  • fix(dwall): use the observer's elevation in the refraction model (#799)
  • chore(dwall): add the crate readme the manifest points at (#800)
  • fix(style): suppress every infinite animation under reduced motion (#801)
  • fix(stage): give the sun-path markers a visible focus ring and a larger hit area (#802)
  • fix(ui): keep error text selectable for copying (#803)
  • fix(ipc): type writeConfigFile as the void command it is (#804)
  • fix(stage): stop reporting an empty random pool as all themes (#805)
  • fix(ui): point the favicon at the asset that exists (#806)
  • fix(settings): snapshot the draft before awaiting the save (#807)
  • fix(dwall): compare both color-scheme values before skipping (#808)
  • fix(settings): move the themes directory back when the save fails (#809)
  • fix(settings): make the mirror template help match the resolver (#810)
  • fix(dwall): write the random selection through a temporary file (#811)
  • fix(config): sync the atomic write before renaming it (#812)
  • fix(dwall): report an invalid config from --once as exit 3 (#813)
  • chore(deps): drop the unused Tauri shell plugin (#814)
  • fix(settings): initialise logging after the single-instance check (#815)
  • fix(settings): clear the theme when the engine is stopped (#816)
  • docs(mirror): say the API release list is not proxied (#817)
  • fix(settings): reload the form after stopping the engine (#818)
  • chore(ui): remove unused UI kits (#819)
  • fix(dwall): keep COM initialized for the daemon's lifetime (#820)
  • chore(deps): bump tauri-plugin-single-instance from 2.5.4 to 2.5.5 (#821)
  • chore(deps): bump zip from 9.1.2 to 9.1.3 (#824)
  • chore(deps): bump tauri-plugin-dialog from 2.8.3 to 2.8.4 (#825)
  • chore(deps): bump tauri-plugin-updater from 2.14.0 to 2.14.1 (#823)
  • feat(settings): add a dark-on-battery option (#826)
  • fix(dwall): keep battery polling active after failed cycles (#827)
  • chore(deps): update the Rust lockfile (#828)
  • chore(deps): update frontend dependencies (#829)
  • feat(settings): add an on-battery wallpaper option (#830)
  • fix(dwall): clear the solar schedule state on battery wallpaper (#831)
  • fix(dwall): log one configuration change once (#837)
  • fix(layout): explain a stopped engine and link the location setting (#841)
  • fix(dwall): draw another theme when the drawn one cannot be applied (#833)
  • fix(stage): apply the theme the stage is showing (#834)
  • fix(stage): record the random pool that was actually saved (#835)
  • fix(dwall): log the idle lock-screen check at debug level (#836)
  • fix(ui): hand focus back to the trigger when a dialog closes (#838)
  • fix(ui): keep disabled switches out of the tab order (#839)
  • docs(readme): quote the memory figure Task Manager shows (#842)
  • docs(headless): point at the per-user install path (#843)
  • docs: document the on-battery wallpaper and dark mode (#845)
  • docs: say which builds compile the verbose log statements out (#846)
  • docs: scope the checksum claim to the daemon archive (#847)
  • fix(settings): verify that the daemon started, and that it stopped (#840)
  • fix(layout): keep the engine status altitude current (#832)
  • docs(headless): stop claiming a small interval costs no wakeups (#844)
  • fix(settings): restart a resumed download that no longer matches (#848)
  • fix(settings): do not retry a request the server rejected (#849)
  • fix(settings): bound a theme download at what a theme can be (#850)
  • fix(settings): keep unsaved edits when the engine is stopped (#851)
  • fix(settings): do not save 0,0 when manual coordinates are selected (#852)
  • perf(stage): decode wallpaper tiles only when they are near the viewport (#853)
  • docs(agents): the merged-branch cleanup keeps main and old (#854)
  • fix(settings): collect abandoned theme downloads (#855)
  • perf(dwall): stop resolving monitor names the daemon never reads (#856)
  • fix(stage): say why the candidate pool is empty (#857)
  • fix(i18n): drop the English from the Chinese labels and fix the apply wording (#858)
  • docs: list everything the daemon archive ships (#859)
  • docs: index the mirror-template page (#860)
  • docs: record that the full-size thumbnail fallback is intended (#861)
  • perf(dwall): hand out the monitor list as a shared snapshot (#862)
  • feat: let the user pause automatic colour-scheme switching (#863)
  • perf(dwall): resolve the probe's themes once instead of per instant (#864)
  • refactor(ui): render the lists with For and Index (#866)
  • fix(ui): stop the toast timer while it is hovered or focused (#867)
  • fix(scripts): refuse to measure while a daemon is running (#868)
  • refactor(settings): answer with the daemon own random-selection type (#869)

⚠️ This is a nightly build and may contain unstable features. Use at your own risk.

For stable releases, please check the releases page.

Don't miss a new dwall release

NewReleases is sending notifications on new releases.