Skip to content

Release: DocShards, Wallet UX, Villager Integration#14

Merged
DHEBP merged 16 commits into
mainfrom
dev
May 5, 2026
Merged

Release: DocShards, Wallet UX, Villager Integration#14
DHEBP merged 16 commits into
mainfrom
dev

Conversation

@DHEBP
Copy link
Copy Markdown
Owner

@DHEBP DHEBP commented May 5, 2026

Summary

This release brings major improvements to TELA app support, wallet UX, and platform compatibility.

TELA Platform

  • DocShards support — Complex TELA apps with sharded WASM and binary assets now load natively (Villager works!)
  • Native file picker — TELA dApps can now use file inputs through HOLOGRAM's native dialog
  • Embedded INDEX detection — Proper handling of .shards vs .tela.shards naming conventions
  • SC value decoding — Consistent hex string decoding in API responses

Wallet UX

  • Villager avatar integration — Your on-chain avatar displays in the sidebar; click to launch editor
  • Full transaction cost visibility — Approval modal now shows TOTAL COST with breakdown (burn + gas fees)
  • Seed/key reveal — Flow aligned with Engram wallet standards
  • Clear All modal — New option to clear recent wallets
  • Registration flow — Improved guidance for unregistered recipients
  • Pending state — Registration state preserved correctly

Platform

  • Linux WebKitGTK 4.1 — Support for modern distros (Ubuntu 24.04+, etc.)

Cleanup

  • Remove unused simulator status selector
  • Remove stale reveal styles
  • Align RevealSecretModal with design system

Test Plan

  • CI passes (Go build + test, Frontend build)
  • Villager.tela loads and functions correctly
  • Wallet approval shows burn + gas fees
  • Avatar displays in sidebar
  • File picker works in TELA apps

DHEBP added 16 commits April 28, 2026 15:36
…nses

- Add sc_response_normalizer.go to decode printable ASCII strings from
  DERO.GetSC while preserving numeric values and binary hashes
- Apply normalization to all GetSC exit paths (XSWD, Explorer, direct)
- Refactor InvokeSCFunction to delegate to InternalWalletCall scinvoke
  path, ensuring Studio and dApp calls use identical TX building
- Fix parseXSWDScArgs to handle both []interface{} and []map[string]interface{}
  input types and support uint64/int numeric values
- Add 0-transfer fallback in scinvoke to prevent index-out-of-range panic
  when no explicit transfers are provided
Normalize smart contract search results before Explorer renders them and move SC variable display decoding into a focused helper. This keeps scores numeric while allowing printable string values to display as text with raw hex still available.
Move seed and key reveal state into the modal lifecycle, require password confirmation for each reveal, and close the modal on wallet switch or wallet close. Add conditional native clipboard clearing via Wails and await clipboard writes for more reliable copy feedback.
- Use global modal-* classes from hologram.css
- Match original seed grid and key display patterns
- Move auto-hide timer to header row
- Make seed header compact (remove large warning icon)
- Tighten warning items for better fit
- Fix widow in key warning text
Remove old inline seed/key display selectors after moving reveal UI into RevealSecretModal so Wallet.svelte stays warning-free.
Remove a stale nested selector so Svelte dev/build logs stay clean.
Replace native confirm() with HOLOGRAM-styled confirmation modal for
clearing recent wallets. Add horizontal red gradient treatment matching
the notification banner language. Fix recent wallets list not refreshing
after opening/closing a wallet by centralizing refresh logic.
Update icon input placeholders and hints across BatchUpload, StudioInstallIndex,
and StudioUpdateIndex to recommend using on-chain icon DOC SCIDs instead of
external URLs. Suggests 100x100 SVG/PNG as optimal format.
Replace misleading auto-registration wording with accurate PoW-first guidance and improve -32098/account unregistered errors so senders and recipients get clear next-step instructions.
All current Linux distros (Ubuntu 24.04+, Debian 13, Fedora 40+, Arch)
have dropped webkit2gtk-4.0 / libsoup2 in favour of webkit2gtk-4.1 /
libsoup3. Wails v2 supports the new binding via the webkit2_41 build
tag, but HOLOGRAM was not setting it — leaving Linux contributors with
either a build failure (missing pkg-config target) or a runtime crash
from libsoup2/libsoup3 conflicts.

- Makefile: auto-apply -tags webkit2_41 on GOOS=linux for build, dev,
  and release targets via a WAILS_TAGS variable. Override with
  'make WAILS_TAGS=' to opt out for the legacy 4.0 binding.
- README.md / CONTRIBUTING.md: correct Ubuntu and Arch package names
  (libwebkit2gtk-4.1-dev, webkit2gtk-4.1), recommend Go from go.dev/dl
  over distro packages, link to the new Linux build guide.
- docs/LINUX-BUILD.md (new): canonical troubleshooting guide covering
  the libsoup split, OOM during 'make all' (GOFLAGS='-p=2'), vite port
  collisions, and outdated distro Go.
- .gitignore: allowlist docs/LINUX-BUILD.md alongside ARCHITECTURE.md
  and DESIGN-SYSTEM-RULEBOOK.md.

Resolves contributor friction reported on Debian (apt) and Arch
(pacman). The wailsapp/wails#3193 webkitgtk-6.0 upgrade is a Wails v3
roadmap item and is not required to support modern Linux on v2.
Keep broadcast registration transactions marked pending until on-chain confirmation so the wallet does not fall back to the new-wallet banner after the confirmation poll times out.
Implements internal handling for TELA applications that use embedded
INDEX contracts (DocShards) for large files like WASM binaries and
animation assets.

- Add detection of embedded .shards INDEX contracts in DOC references
- Implement recursive shard fetching and reassembly for embedded INDEXes
- Create in-memory HTTP server to serve assembled DocShards content
- Store content under both simple filename and full HTTP path for
  compatibility with different request patterns
- Add file input interceptor to bridge script for native file dialogs

Enables loading of complex TELA apps like villager.tela that use
sharded WASM (rive.wasm) and binary assets (rive files).
Implements native file dialog support for TELA dApps that need to
import files (images, data, etc.) through HTML file inputs.

- Add SelectFileWithContent Go method that opens native file dialog
  and returns base64-encoded file content
- Support MIME type and extension filtering
- Handle file size limits (50MB max)
- Add Wails bindings for frontend access

Works around iframe sandbox restrictions in Wails WebView that
prevent standard file inputs from functioning in TELA apps.
Enhances the wallet approval modal to clearly show all transaction
costs before the user approves, addressing visibility issues where
burn amounts and gas fees were not being surfaced.

- Add parseScPayload function to extract entrypoint and SC arguments
  from raw DERO RPC sc_rpc arrays
- Display TOTAL COST summing burn amounts, transfer amounts, and fees
- Show cost breakdown with individual Burn/Fees/Amount components
- Handle SC calls without explicit transfers (show 0 DERO explicitly)
- Capture top-level fees field in addition to per-transfer fees
- Add CSS styling for total and breakdown display

Users now see exactly what they're about to spend before approving
any smart contract transaction.
Adds Villager avatar display in the wallet anchor area and enables
launching the Villager editor by clicking on the avatar.

- Add GetSCVariable Go method for direct daemon SC key queries
- Update avatarService to use direct daemon RPC instead of XSWD
  for fetching avatar pixel data from Villager contract
- Make getAvatarUrl async to ensure custom pixels load before render
- Update handleAvatarClick to navigate to villager.tela and switch
  to Browser tab
- Update UI text to reflect Villager availability

The wallet anchor now shows the user's on-chain Villager avatar and
provides quick access to the avatar editor.
…tion

Fixes CI test failures by distinguishing between:
- isShardIndexDURL: matches .tela.shards (TELA naming convention)
- isEmbeddedShardsINDEX: matches .shards (embedded INDEX detection)

The original isShardIndexDURL function was modified incorrectly to
check for .shards instead of .tela.shards, breaking existing tests.
@DHEBP DHEBP merged commit d80697d into main May 5, 2026
4 checks passed
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.

1 participant