Skip to content

feat(merge): cherry-pick alpha.4 from bliss-upstream into main#2

Merged
nixpt merged 183 commits into
mainfrom
agent/foreman/s189-bliss-alpha4-cherrypick
May 18, 2026
Merged

feat(merge): cherry-pick alpha.4 from bliss-upstream into main#2
nixpt merged 183 commits into
mainfrom
agent/foreman/s189-bliss-alpha4-cherrypick

Conversation

@nixpt
Copy link
Copy Markdown
Owner

@nixpt nixpt commented May 18, 2026

Summary

Brings bliss-engine main from 0.2.990.3.0-alpha.4 by merging the bliss-upstream staging branch (which itself just synced 167 commits from DioxusLabs/blitz main — merge commit b7018453). Rename-aware merge: all upstream blitz-*bliss-* identifiers and package names; both sides' additions preserved.

Phase 1 of this arc was the bliss-upstream sync (commit b7018453 on bliss-upstream branch). This PR is Phase 2 — the cherry-pick into main.

Workflow

  1. Branched off main as agent/foreman/s189-bliss-alpha4-cherrypick.
  2. git merge bliss-upstream -X find-renames=30% — rename detection mapped packages/blitz-*packages/bliss-* automatically for the bulk of files.
  3. 34 modify/delete conflicts → bulk git rm to preserve bliss's deliberate deletions (apps/, examples/{seven_guis,wasm_hello,counter,todomvc,wgpu_texture}/, wpt/, packages/dioxus-native*/).
  4. 7 Cargo.toml conflicts → hand-merged: bliss naming + =0.3.0-alpha.4 pins + alpha.4 dep versions + drop dioxus-native workspace entries.
  5. 18 source-file conflicts → resolved via delegated agent: bliss-prefix identifiers everywhere, additive merge of HEAD's exo additions (script_engine, event_sink, events_enabled, BlissShellEvent, script, form) with upstream's alpha.4 additions (AbortSignal, decode_font_bytes, build_single_font_ctx, AppleStandardKeybinding, UserSelect-aware drag, BlissPointerId rename, two-lifetime BlissDomPainter, CustomWidgetSceneMap, KeyboardOrTextInputEvent).
  6. Cleanup: removed upstream-added files in bliss-deleted directories that the merge created without conflict.
  7. Two leftover bliss-rename misses fixed: packages/bliss-html/Cargo.toml had stale blitz-dom/tracing feature ref; packages/bliss-dom/src/lib.rs had duplicate mod script declarations + duplicate script::* re-exports.

Test plan

  • cargo check --workspace clean: exit 0, 0 errors
  • All bliss packages compile: bliss-dom, bliss-paint, bliss-html, bliss-shell, bliss, bliss-net, bliss-traits, accesskit_xplat, debug_timer, stylo_taffy
  • Optional: smoke test downstream consumers when consuming from exosphere (super-surfer / voyager-tui / crush-ide / ant-cli reverse-dep chain) — pending captain ratify; exosphere vendor/bliss-engine submodule pin can bump in a follow-up after this merges

Diff stats

60 files changed, 4,519 insertions / 1,970 deletions. Most of the line count is in bliss-dom (document/events/layout/mutator/stylo modules) where alpha.4's additive changes landed.

Notable

  • One pre-existing warning (stylo_taffy macro unused_variables under no-tracing default): also present on bliss main before this merge. Will be fixed by an optional bliss-engine#2 follow-up that backports the macro-arg-consume fix already shipped to feat(stylo_taffy): eliminate panic paths, add tracing feature + test suite DioxusLabs/blitz#443.
  • blitz-mustang stays workspace-disabled on bliss-upstream (same as in commit b7018453); not in main workspace, so no impact here.
  • Captain's hard-fork doctrine validated: bliss-upstream branch as staging area is the right shape. Future blitz syncs follow the same pattern.

🤖 Generated with Claude Code

kokoISnoTarget and others added 30 commits February 6, 2026 21:28
When nodes are removed:
- Clear hover_node_id if it was set to the node being remove
- Clear active_node_id if it was set to the node being removed
- Remove snapshots for removed nodes to prevent stale snapshot panics

Co-Authored-By: Nico Burns <nico@nicoburns.com>
Signed-off-by: Nico Burns <nico@nicoburns.com>
Signed-off-by: Nico Burns <nico@nicoburns.com>
Signed-off-by: Nico Burns <nico@nicoburns.com>
Signed-off-by: Nico Burns <nico@nicoburns.com>
Signed-off-by: Nico Burns <nico@nicoburns.com>
Signed-off-by: Nico Burns <nico@nicoburns.com>
Signed-off-by: Nico Burns <nico@nicoburns.com>
Signed-off-by: Nico Burns <nico@nicoburns.com>
…ioxusLabs#360)

wasted work when the early exit fires. (Also keeps the variable
definition next to its usage)

Use GenericTextIdent::zero() instead of manually constructing the
default so verbosely

Changed unwrap_or to unwrap_or_else to avoid eagerly constructing the
default value on every call
* Move text_indent computation down to right before it's use to avoid
wasted work when the early exit fires. (Also keeps the variable
definition next to its usage)

Use GenericTextIdent::zero() instead of manually constructing the
default so verbosely

Changed unwrap_or to unwrap_or_else to avoid eagerly constructing the
default value on every call

* Show errors in the UI

I opened a page, has mistyped the url and wondered why nothing happened,
until I checked the logs.

Admittedly this is not nice, but it's something and a base for
discussion.

* PR feedback
* Implement the view-source menu-item from DioxusLabs#363

This allows to, well, view the source code of the current document.

Trade-Off: We store the entire source as a Signal<String> ... an
alternative would be to refetch it.

* PR feedback
Co-authored-by: Austin M. Reppert <austinmreppert@protonmail.com>
* Implement the view-source menu-item from DioxusLabs#363

This allows to, well, view the source code of the current document.

Trade-Off: We store the entire source as a Signal<String> ... an
alternative would be to refetch it.

* Implement the "capture screenshot" menu-item from DioxusLabs#363

* PR feedback

* Make rfd optional and only enable it on desktop platforms (hopefully...
just winged that, have no ios/android experience)

* Use async file dialog (fixes crash on macos)

Signed-off-by: Nico Burns <nico@nicoburns.com>

* Make rfd dependency optional

Signed-off-by: Nico Burns <nico@nicoburns.com>

---------

Signed-off-by: Nico Burns <nico@nicoburns.com>
Co-authored-by: Nico Burns <nico@nicoburns.com>
dx's style preprocessing seems to choke on the commented out code.
tonybierman and others added 28 commits May 13, 2026 22:42
…sLabs#440)

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Nico Burns <nico@nicoburns.com>
Signed-off-by: Nico Burns <nico@nicoburns.com>
Signed-off-by: Nico Burns <nico@nicoburns.com>
Signed-off-by: Nico Burns <nico@nicoburns.com>
* Upgrade to WGPU v29 + Vello with font embolden

* Use AnyRender that marks override textures as dirty

Signed-off-by: Nico Burns <nico@nicoburns.com>

* Implement custom wgpu textures for Vello Hybrid

* Upgrade to released version of vellos

* Use AnyRender 0.10 from crates.io

Signed-off-by: Nico Burns <nico@nicoburns.com>

---------

Signed-off-by: Nico Burns <nico@nicoburns.com>
Signed-off-by: Nico Burns <nico@nicoburns.com>
Signed-off-by: Nico Burns <nico@nicoburns.com>
Signed-off-by: Nico Burns <nico@nicoburns.com>
Signed-off-by: Nico Burns <nico@nicoburns.com>
Signed-off-by: Nico Burns <nico@nicoburns.com>
Signed-off-by: Nico Burns <nico@nicoburns.com>
Signed-off-by: Nico Burns <nico@nicoburns.com>
Signed-off-by: Nico Burns <nico@nicoburns.com>
Signed-off-by: Nico Burns <nico@nicoburns.com>
Signed-off-by: Nico Burns <nico@nicoburns.com>
Signed-off-by: Nico Burns <nico@nicoburns.com>
Signed-off-by: Nico Burns <nico@nicoburns.com>
Signed-off-by: Nico Burns <nico@nicoburns.com>
Signed-off-by: Nico Burns <nico@nicoburns.com>
Signed-off-by: Nico Burns <nico@nicoburns.com>
Signed-off-by: Nico Burns <nico@nicoburns.com>
Signed-off-by: Nico Burns <nico@nicoburns.com>
Signed-off-by: Nico Burns <nico@nicoburns.com>
Signed-off-by: Nico Burns <nico@nicoburns.com>
Sync upstream blitz into the bliss-upstream staging branch. 167 commits
pulled from DioxusLabs/blitz main between 2026-02-14 (last sync at
eeaa993) and 2026-05-18 (8ef723e). Net 12,155 insertions / 3,516
deletions across 154 files.

Highlights from the upstream window:
- 0.3.0-alpha.3 + alpha.4 version bumps; MSRV raised to 1.89
- Migration from direct vello workspace dep to anyrender_vello
  abstraction; vello_hybrid now default renderer
- Renderer precedence chain introduced
- New apps/browser/persistence subcrate; new examples seven_guis +
  wasm_hello
- AbortSignal carried on every sub-resource Request for document-scoped
  fetch cancellation
- decode_font_bytes + build_single_font_ctx helpers added
- 4 conflict resolutions (all clean additive):
  - Cargo.toml workspace.members: kept upstream's set + re-added
    packages/blitz-mustang (exo addition)
  - Cargo.toml workspace.dependencies: took upstream's =0.3.0-alpha.4
    pin scheme + re-added blitz-mustang line
  - blitz-dom/src/document.rs: kept both HEAD's script_engine +
    event_sink + events_enabled fields AND upstream's abort_signal
  - blitz-dom/src/lib.rs: deduped Point export, kept both HEAD's script
    + form re-exports AND upstream's decode_font_bytes +
    build_single_font_ctx
  - Cargo.lock: took upstream's version (deps changed too much to
    hand-merge; cargo will regenerate on next build)

## packages/blitz-mustang temporarily disabled

blitz-mustang (exo-side addition from 599ab15 "Port Mustang,
Scripting, and Forms") still imports use vello::Scene directly, but
upstream blitz removed the direct vello workspace dep in alpha.4 in
favor of the anyrender_vello abstraction. Commented out
packages/blitz-mustang from workspace.members and the workspace.dep
line to keep this sync buildable. Re-enable as a follow-up arc once
mustang migrates to anyrender_vello (or re-adds vello as an exo-only
workspace dep at a compatible version).

## Verification

cargo check --workspace clean on the merged tree — 0 errors, 13
workspace members (all blitz packages + dioxus-native +
dioxus-native-dom + wpt/runner + 5 examples + apps/{browser,readme}).
1m 24s cold build.

## Status

bliss-upstream branch is now current with blitz upstream + retains the
Port Mustang/Scripting/Forms additions on top (with mustang
temporarily-disabled at workspace level). Ready to push to
nixpt/bliss-engine for next session to evaluate cherry-pick into main.
Cherry-picks the alpha.4 state from DioxusLabs/blitz into bliss-engine
main via the bliss-upstream staging branch (synced in commit b701845).
Brings bliss main from 0.2.99 → 0.3.0-alpha.4 with all upstream changes
applied (rename-aware merge: blitz-* → bliss-* throughout) and all bliss
exo-specific additions preserved.

## Workflow

1. Foreman branched off main as agent/foreman/s189-bliss-alpha4-cherrypick.
2. `git merge bliss-upstream -X find-renames=30%` — rename detection
   successfully mapped most packages/blitz-X/ → packages/bliss-X/.
3. 34 modify/delete conflicts: bulk `git rm` to preserve bliss's
   deliberate deletions of apps/, examples/* subdirs, wpt/, and the
   dioxus-native* packages.
4. Top-level Cargo.toml + 5 per-package Cargo.toml conflicts: hand-merged
   to keep bliss naming + take alpha.4 version (=0.3.0-alpha.4 pin scheme)
   + take alpha.4 dep versions + drop dioxus-native workspace entries (not
   in bliss main).
5. 18 source-file conflicts resolved by delegated code agent: bliss-prefix
   identifiers everywhere, additive merge of HEAD's exo additions
   (script_engine, event_sink, events_enabled, BlissShellEvent vs
   BlitzShellEvent, etc.) with upstream's alpha.4 additions (AbortSignal,
   decode_font_bytes, build_single_font_ctx, AppleStandardKeybinding,
   UserSelect-aware drag, BlissPointerId rename, two-lifetime
   BlissDomPainter, CustomWidgetSceneMap, KeyboardOrTextInputEvent, etc.).
6. Post-resolution cleanup: removed upstream-added files in bliss-deleted
   directories that the merge created without conflict (apps/browser/*,
   examples/{seven_guis,wasm_hello,counter,todomvc,wgpu_texture}/*,
   packages/{blitz-mustang,dioxus-native,dioxus-native-dom}/*,
   wpt/runner/*, HOWTO_WASM.md, examples/{custom_widget.rs,rowspan.html},
   docs/architecture.mmd, .github/workflows/publish-browser.yml).
7. Two leftover bliss-rename misses: packages/bliss-html/Cargo.toml had
   stale blitz-dom/tracing feature ref; packages/bliss-dom/src/lib.rs had
   duplicate mod script declarations and duplicate script::* re-exports.
   Both fixed.

## Verification

`cargo check --workspace` clean: exit 0, 0 errors, 1 pre-existing
warning (stylo_taffy macro unused_variables under no-tracing default;
also present on bliss main before this merge; will be fixed by an
optional bliss-engine#2 follow-up that backports the macro-arg-consume
fix already shipped to DioxusLabs#443).

Bliss packages built green: bliss-dom, bliss-paint, bliss-html,
bliss-shell, bliss, bliss-net, bliss-traits, accesskit_xplat,
debug_timer, stylo_taffy. 5.16s incremental rebuild on top of the
warmed cache from the staging-branch verify.

## Net diff

60 files changed, 4,519 insertions, 1,970 deletions. Most of the line
count is in bliss-dom (the document/events/layout/mutator/stylo
modules) where alpha.4's additive changes landed.

## Open follow-ups (parked, not blocking)

- stylo_taffy macro warning (bliss-engine#2 candidate).
- DioxusLabs#443 still pending external review (independent).
- The blitz-mustang exo-side addition stays in workspace as a member but
  needs anyrender_vello migration before it builds — same status as
  bliss-upstream branch noted in commit b701845.

## Carry-forward note

Following Captain's hard-fork doctrine: `bliss-upstream` branch remains
the staging area for future blitz syncs. Next sync = same pattern (pull
blitz into bliss-upstream, then cherry-pick into main with rename
detection).
@nixpt nixpt merged commit 7ddf457 into main May 18, 2026
8 of 15 checks passed
@nixpt nixpt deleted the agent/foreman/s189-bliss-alpha4-cherrypick branch May 18, 2026 05:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.