Skip to content

Main 0.6#284

Open
zippy wants to merge 27 commits intodevelopfrom
main-0.6
Open

Main 0.6#284
zippy wants to merge 27 commits intodevelopfrom
main-0.6

Conversation

@zippy
Copy link
Collaborator

@zippy zippy commented Jan 20, 2026

Updates to Holochain 0.6.0, includes pinning shoelace to make it work with old UI.

zippy added 2 commits January 20, 2026 15:15
Upgrade mewsfeed from Holochain 0.4.1 to 0.6, including HDK/HDI API
changes, manifest updates, and dependency upgrades.

Rust changes:
- Update HDK to 0.6.0, HDI to 0.7.0
- Change agent_latest_pubkey to agent_initial_pubkey
- Add GetOptions parameter to all delete_link calls
- Change get_link_details to get_links_details
- Update profiles/elements libraries to 0.600.0 branch
- Add hc_zome_input crate for local/network optionality

UI changes:
- Update @holochain/client to 0.20.0
- Update @holochain-open-dev/profiles to 0.600.0
- Update @shoelace-style/shoelace to 2.20.0
- Add wrapInput() helper for zome calls with local/network option
- Add networkMode store for global local/network preference
- Update all zome calls to use wrapInput()

Manifest changes:
- Update manifest_version from "1" to "0"
- Rename bundled to path in DNA/hApp manifests

Nix changes:
- Update holonix ref to main-0.6
- Update to nodejs_22

Known issues:
- Profile dialog CSS styling not working correctly with profiles-context
  web component (buttons/inputs appear unstyled)
Shoelace 2.20.x causes DaisyUI component styles to not apply correctly
inside profiles-context web component slots. Pinning to 2.11.0 resolves
the issue with profile dialog form styling (inputs, buttons).

Uses npm overrides to ensure all dependencies use the pinned version.
@zippy zippy requested review from jost-s and mattyg January 20, 2026 21:26
@zippy zippy changed the base branch from main-0.4 to develop January 20, 2026 21:29
zippy added 25 commits January 20, 2026 16:43
…send button feedback

- Guard refetch calls in DiscoverCreators and RandomMewWithTagList to prevent
  calling get_batch_mews_with_context with null input
- Wrap reactive proxy with toRaw() in RandomMewWithTagList to fix structuredClone error
- Bump @holochain-open-dev/profiles to 0.601.3 (fixes AgentAvatar undefined .status)
- Add loading spinner to Send Mew button during publish
- Fix TypeScript error for profiles store subscription
Add FishyAppClient support for zero-arc browser extension nodes:
- Add @zippy/fishy-client dependency
- Create fishy/ module with ZeroArcProfilesClient
- Detect fishy extension in client.ts setup
- Use ZeroArcProfilesClient for profiles when running as fishy
- Force local:false in zomeCall wrapInput/getLocalOption for fishy
- Add __GATEWAY_URL__ vite define
Three calls in AgentProfile.vue incorrectly passed route.params.agentPubKey
(a base64 string) instead of agentPubKey.value (decoded Uint8Array) to
wrapInput(): get_joining_timestamp_for_agent, count_creators_for_follower,
count_followers_for_creator.
… of stores

Vue's ref() deeply wraps objects in reactive Proxies. The ProfilesStore
contains a LazyHoloHashMap (from @holochain/client@0.20.4-rc.0) which
uses HoloHashB64Map (extends Map) internally. When Lit's StoreSubscriber
called store.profiles.get(agentPubKey) through Vue's reactive proxy,
the proxy trap chain broke LazyHoloHashMap's internal method dispatch,
causing get() to return undefined instead of creating and returning the
lazy-fetched profile store. This meant the subscriber never subscribed,
and agent-avatar rendered as a permanent gray skeleton for all remote
agents.

The fix uses shallowRef() instead of ref() for profilesStore and client
in App.vue. shallowRef only tracks .value assignment without deeply
proxying the inner object, so Lit web components receive the raw
ProfilesStore with a working LazyHoloHashMap.

Additional changes:
- BaseSiteMenu: explicitly pass :store prop to agent-avatar and inject
  profilesStore (previously relied solely on Lit context propagation)
- BaseAgentProfileLinkAvatar: add v-if="profilesStore" guard to prevent
  rendering before store is available
- Upgrade @holochain-open-dev/profiles to 0.601.3 which adds a null
  guard in AgentAvatar.render to prevent crash on undefined store value
- Switch from @zippy/fishy-client to @holo-host/web-conductor-client
- Rename ui/src/fishy/ directory to ui/src/hwc/
- FishyAppClient -> WebConductorAppClient
- waitForFishy -> waitForHolochain, isFishy -> isWebConductor
- IS_FISHY -> IS_HWC, gatewayUrl -> linkerUrl
- __GATEWAY_URL__ -> __LINKER_URL__ build constant
Remove @holo-host/web-sdk (old Chaperone-based Holo hosting) and wire up
the joining service from HWC's feat/joining-client branch. When the
JOINING_SERVICE_URL env var is set at build time, WebConductorAppClient
will use it to join via the service (obtaining linker URLs, membrane
proofs, and hApp bundle). When unset, the existing direct-linker flow
is used unchanged.

- Remove setupHolo(), IS_HOLO_HOSTED, WebSdkApi imports, start:holo script
- Add @holo-host/joining-service dependency
- Re-export JoiningClient, JoiningError, GatewayProxy from hwc/index.ts
- Add __JOINING_SERVICE_URL__ vite define
- Clean up env.d.ts (remove VITE_IS_HOLO_HOSTED, VITE_CHAPERONE_SERVER_URL)
Wire onChallenge callback through setupHolochain to
WebConductorAppClient so the joining service can present
verification challenges (email code, invite code, etc.)
to the user via a modal dialog.
Add deploy/ directory with orchestration script for full end-to-end
mewsfeed deployment: UI on Cloudflare Pages, joining service on
Cloudflare Worker (invite_code auth), linker with white_list auth
tunneled via ngrok, and two always-on conductors.

- deploy.sh: subcommands for setup, build, deploy-cloud, start-local,
  stop-local, seed-kv, status, all
- Cloudflare worker entry with KvUrlProvider wired up for linker URL
  resolution from Workers KV
- Config template with all deployment parameters
- Replace outdated Holo Hosting README section with link to DEPLOY.md
…nnel support

- Add JoiningClaimsDialog to collect invite codes before joining
- Update App.vue with HWC extension detection gate and claims flow
- Overhaul NetworkInfo to show linker connection status (HTTP/WS/Auth)
- Switch web-conductor-client to joining-client package
- Replace ngrok with cloudflared as default tunnel provider
- Add restart-tunnel command and conductor already-running check
- Convert wrangler.toml to wrangler.example.toml template (gitignored)
- Fix wrangler CLI v3 syntax and add workers subdomain config
Prevent UI components from flooding the conductor with zome calls
before cells are confirmed responsive. Adds a cellsReady composable
that gates all TanStack Query calls via the enabled option, showing
skeletons until the ping check succeeds. NetworkInfo is now visible
immediately without waiting for cells.
Add start:hwc and start:hwc:joining npm scripts for local HWC browser
extension development. Includes local-dev.sh orchestration script that
starts local bootstrap/relay, conductors, and linker. Fix web-conductor
client dependency path and add linkerUrl query param support for direct
connections.
Replace JoiningClaimsDialog.vue and JoiningChallengeDialog.vue with
connectWithJoiningUI() from @holo-host/web-conductor-client/ui, which
uses Shoelace-styled Lit web components from @holo-host/joining-service.

- Remove 290 lines of Vue dialog code
- Simplify App.vue setup (no more manual claims retry logic)
- Switch tsconfig moduleResolution to "bundler" for exports map support
- Add lit as dependency (peer dep of joining-service UI components)
Add LOCAL_DEV_CONFIG_FILE env var to local-dev.sh so a custom
joining-service config JSON can be passed directly, skipping the
auto-generated config from env vars. Resolves relative paths to
absolute before passing to the joining service subprocess.

Also add a sample config (local-dev.config.example.json) for
email_code auth with SendGrid + hc_auth.
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