Holochain Forum

Help us by testing your hApp over the Internet with Holoscape and sim2h!

Okay, for anyone who tried four times don’t give up! The fifth time worked for me. I successfully installed the bundle, but can’t get past that point. Every time I click on Install, it takes me back to the hApp Store.

  1. At the moment, I have not been successful at running the Peer Chat app.

  2. Another error messages (tried a few times). Will try again tomorrow.
    09%20AM

  3. Log error

  4. Javascript error
    19%20AM

@dhtnetwork, I believe all those issues are mainly caused by this prototype’s missing UX design :wink:

  1. The red EOF error in the install window is something that happens if there is an issue with the download. This is super simple code that won’t retry if there is a connection issue. Just reopening the details of that bundle is exactly how to combat this now. We might want to make this a bit more sophisticated if this happens a lot - but the real fix will be to use our real hApp store and get those files out of the DHT.

  2. After successful install of a bundle, it doesn’t show you anything. But the fact your screenshot shows Already installed means you’re good. You should find the hApps in the menu called hApps within Holoscape’s main menu you get when clicking on the system tray.

  3. I can’t see an error in your Log error screenshot. Holoscape will display this dialog after 60 seconds if the boot process isn’t finished by then. Did you maybe not respond to the passphrase dialog within 60 seconds? Or maybe you have accidentally closed the dialog. That would explain this as well.

But, yes: We need a proper UX revamp - the current state was me just quickly building MVP views. I’ve met with @ccxxoo yesterday, she is game to bring in her UX skills :star2:
In the mean time, I think we should create a screen-cast showing a quick walkthrough…

3 Likes

Yes! More screencasts! Always! :smile:

2 Likes

Hi @simwilso and @mikeg if you run into any issues with Holoscape and sim2h, feel free to report it there. Nico is observing the Holoscape thread so he can help troubleshoot any issues that arise.

Let us know your experience using Holoscape and sim2h.

I’m on mac 10.14.4 and was able to install holoscape v0.0.3-alpha and install identity manager and peer chat and access these hApps successfully.

Then when I tried to install HoloFuel hApp from a bundle file, it seemed to not install smoothly, so I restarted Holoscape and now I get stuck with error:

holochain process terminated with exit code 101

Now I can’t access any of the hApps in the system tray menu.

I tried uninstalling and installing but not sure how to remove configuration files from previous holoscape install.

Here is the log: https://hackmd.io/@ySAxTuSwS0GOIBNXZlPrsQ/BycCMSSsH

Thats my feedback/experience with holoscope so far.

Amazing work… it feels so close now.

@ThomasMiller, the conductor can’t start because of this:

Starting interfaces…
thread ‘main’ panicked at ‘called Result::unwrap() on an Err value: “Io Error: Address already in use (os error 48)”’, src/libcore/result.rs:1051:5

So one of the interfaces is configured to use an address (port) which is already in use. Could you post your conductor-config.toml from your config directory? On macOS you find it at ~/Library/Application Support/Holoscape-default. You can also have Holoscape open a finder there with Settings-default -> Reveal config directory.

Also, if you delete or rename that directory you will get a fresh installation.

If you have used a previous version that might have rendered your conductor config broken by assigning the same port to two different interfaces which would explain the error you’re experiencing.

2 Likes

Thanks @lucksus

That got me unstuck and allows me to keep exploring.

Here is the old version of the conductor-config.toml from my mac config directory

persistence_dir = '/Users/thomasmiller/Library/Application Support/Holoscape-default'
ui_bundles = []
ui_interfaces = []

[[agents]]
id = 'Personas & Profiles-agent'
keystore_file = '/Users/thomasmiller/Library/Application Support/Holoscape-default/storage/HcSCjgYchgGrepk4b7p6rzCfeMk87xjusp5BiC865ci7rEztmpqn4587v5w588a'
name = 'Personas & Profiles-agent'
public_address = 'HcSCjgYchgGrepk4b7p6rzCfeMk87xjusp5BiC865ci7rEztmpqn4587v5w588a'

[[agents]]
id = 'Peer Chat Public-agent'
keystore_file = '/Users/thomasmiller/Library/Application Support/Holoscape-default/storage/HcSCjiPahV6en9jhiw7jwMaARHwrsg5xv93p6UggxXW6T7dzn4rDe6a34B8RW6r'
name = 'Peer Chat Public-agent'
public_address = 'HcSCjiPahV6en9jhiw7jwMaARHwrsg5xv93p6UggxXW6T7dzn4rDe6a34B8RW6r'

[[agents]]
id = 'holofuel-agent'
keystore_file = '/Users/thomasmiller/Library/Application Support/Holoscape-default/storage/HcSCjVHCWjN6rfr9n5HaeNwjbtnqxqd3uB7NIoIOUheao5iiF5Ae45b5FmAPnsz'
name = 'holofuel-agent'
public_address = 'HcSCjVHCWjN6rfr9n5HaeNwjbtnqxqd3uB7NIoIOUheao5iiF5Ae45b5FmAPnsz'

[[bridges]]
callee_id = 'Personas & Profiles'
caller_id = 'Peer Chat Public'
handle = 'p-p-bridge'

[[dnas]]
file = '/Users/thomasmiller/Library/Application Support/Holoscape-default/dna/QmdDugxMbXLNoxiCY93Brnee3cQAReWoA73QyD6Jd9dLVC.dna.json'
hash = 'QmdDugxMbXLNoxiCY93Brnee3cQAReWoA73QyD6Jd9dLVC'
id = 'Personas & Profiles-dna'

[[dnas]]
file = '/Users/thomasmiller/Library/Application Support/Holoscape-default/dna/QmakmeiLMDFzN54CBUSk2UtvyYEUVdnLB6JPg2LLQ3TTrH.dna.json'
hash = 'QmakmeiLMDFzN54CBUSk2UtvyYEUVdnLB6JPg2LLQ3TTrH'
id = 'Peer Chat Public-dna'

[[dnas]]
file = '/Users/thomasmiller/Library/Application Support/Holoscape-default/dna/QmcnYu8B54tFnJUv68aB3imPRwLxqJH2DQzjkX9Dvxmsf9.dna.json'
hash = 'QmcnYu8B54tFnJUv68aB3imPRwLxqJH2DQzjkX9Dvxmsf9'
id = 'holofuel-dna'

[[instances]]
agent = 'Personas & Profiles-agent'
dna = 'Personas & Profiles-dna'
id = 'Personas & Profiles'

[instances.storage]
path = '/Users/thomasmiller/Library/Application Support/Holoscape-default/storage/Personas & Profiles'
type = 'pickle'

[[instances]]
agent = 'Peer Chat Public-agent'
dna = 'Peer Chat Public-dna'
id = 'Peer Chat Public'

[instances.storage]
path = '/Users/thomasmiller/Library/Application Support/Holoscape-default/storage/Peer Chat Public'
type = 'pickle'

[[instances]]
agent = 'holofuel-agent'
dna = 'holofuel-dna'
id = 'holofuel'

[instances.storage]
path = '/Users/thomasmiller/Library/Application Support/Holoscape-default/storage/holofuel'
type = 'pickle'

[[interfaces]]
admin = true
id = 'admin interface'
instances = []

[interfaces.driver]
port = 4435
type = 'websocket'

[[interfaces]]
admin = false
id = 'Peer Chat-interface'

[[interfaces.instances]]
alias = 'peer-chat-public'
id = 'Peer Chat Public'

[interfaces.driver]
port = 10000
type = 'websocket'

[[interfaces]]
admin = false
id = 'Identity Manager-interface'

[[interfaces.instances]]
alias = 'personas-profiles'
id = 'Personas & Profiles'

[interfaces.driver]
port = 10001
type = 'websocket'

[[interfaces]]
admin = true
id = 'HoloFuel-interface'
instances = []

[interfaces.driver]
port = 10000
type = 'websocket'

[logger]
state_dump = true
type = 'debug'
[[logger.rules.rules]]
exclude = true
pattern = '.*'

[[logger.rules.rules]]
exclude = false
pattern = '^lib3h'

[[logger.rules.rules]]
exclude = false
pattern = '^holochain'

[[logger.rules.rules]]
exclude = false
pattern = '^lib3h'

[network]
sim2h_url = 'wss://sim2h.holochain.org:9000'
type = 'sim2h'

[passphrase_service]
path = '/Users/thomasmiller/Library/Application Support/Holoscape-default/conductor_login.socket'
type = 'unixsocket'

[signals]
consistency = true
trace = true
1 Like

I’m still trying to install HoloFuel from the provided example bundle HoloFuel

As you can see in the screenshot, it installs the DNA however gets stuck when it moves to installing “holofuel-ui.zip”

Here is the current version of the conductor config file.

persistence_dir = '/Users/thomasmiller/Library/Application Support/Holoscape-default'
ui_bundles = []
ui_interfaces = []

[[agents]]
id = 'Passthrough-agent'
keystore_file = '/Users/thomasmiller/Library/Application Support/Holoscape-default/storage/HcSCJDvqRFotetwenywaKPCDjTf8v5wodcn4jGM8U7i4Mfex9RD4W6YFwrH8ohz'
name = 'Passthrough-agent'
public_address = 'HcSCJDvqRFotetwenywaKPCDjTf8v5wodcn4jGM8U7i4Mfex9RD4W6YFwrH8ohz'

[[agents]]
id = 'Personas & Profiles-agent'
keystore_file = '/Users/thomasmiller/Library/Application Support/Holoscape-default/storage/HcSCI4oItMfDsk8fzr85n58yumkVW9XmbWKd6FFiYvh9s9c93BEH8ccQ4Uatxvr'
name = 'Personas & Profiles-agent'
public_address = 'HcSCI4oItMfDsk8fzr85n58yumkVW9XmbWKd6FFiYvh9s9c93BEH8ccQ4Uatxvr'

[[agents]]
id = 'Peer Chat Public-agent'
keystore_file = '/Users/thomasmiller/Library/Application Support/Holoscape-default/storage/HcScj7Y48YcgRjereoty6z365genhRnzvXpcsvSD5Swvdqog8ggpboO4On7r8qz'
name = 'Peer Chat Public-agent'
public_address = 'HcScj7Y48YcgRjereoty6z365genhRnzvXpcsvSD5Swvdqog8ggpboO4On7r8qz'

[[agents]]
id = 'holofuel-agent'
keystore_file = '/Users/thomasmiller/Library/Application Support/Holoscape-default/storage/HcSCj9dk6AC55mdi93RKPRUHxobkmim4e3QE39FFEZNN9is6q9b5YEwvhVcn76z'
name = 'holofuel-agent'
public_address = 'HcSCj9dk6AC55mdi93RKPRUHxobkmim4e3QE39FFEZNN9is6q9b5YEwvhVcn76z'

[[bridges]]
callee_id = 'Personas & Profiles'
caller_id = 'Peer Chat Public'
handle = 'p-p-bridge'

[[dnas]]
file = '/Users/thomasmiller/Library/Application Support/Holoscape-default/dna/QmZ1z6SKKeG53RQWwma7k644GUaX2dj4v5HEEGTs8ScRyJ.dna.json'
hash = 'QmZ1z6SKKeG53RQWwma7k644GUaX2dj4v5HEEGTs8ScRyJ'
id = 'Passthrough-dna'

[[dnas]]
file = '/Users/thomasmiller/Library/Application Support/Holoscape-default/dna/QmcsksrxMz8hB35KPrf5uWqydAHHjnQRNcgyPbW4LkEPD8.dna.json'
hash = 'QmcsksrxMz8hB35KPrf5uWqydAHHjnQRNcgyPbW4LkEPD8'
id = 'Personas & Profiles-dna'

[[dnas]]
file = '/Users/thomasmiller/Library/Application Support/Holoscape-default/dna/QmakmeiLMDFzN54CBUSk2UtvyYEUVdnLB6JPg2LLQ3TTrH.dna.json'
hash = 'QmakmeiLMDFzN54CBUSk2UtvyYEUVdnLB6JPg2LLQ3TTrH'
id = 'Peer Chat Public-dna'

[[dnas]]
file = '/Users/thomasmiller/Library/Application Support/Holoscape-default/dna/QmcnYu8B54tFnJUv68aB3imPRwLxqJH2DQzjkX9Dvxmsf9.dna.json'
hash = 'QmcnYu8B54tFnJUv68aB3imPRwLxqJH2DQzjkX9Dvxmsf9'
id = 'holofuel-dna'

[[instances]]
agent = 'Passthrough-agent'
dna = 'Passthrough-dna'
id = 'Passthrough'

[instances.storage]
path = '/Users/thomasmiller/Library/Application Support/Holoscape-default/storage/Passthrough'
type = 'pickle'

[[instances]]
agent = 'Personas & Profiles-agent'
dna = 'Personas & Profiles-dna'
id = 'Personas & Profiles'

[instances.storage]
path = '/Users/thomasmiller/Library/Application Support/Holoscape-default/storage/Personas & Profiles'
type = 'pickle'

[[instances]]
agent = 'Peer Chat Public-agent'
dna = 'Peer Chat Public-dna'
id = 'Peer Chat Public'

[instances.storage]
path = '/Users/thomasmiller/Library/Application Support/Holoscape-default/storage/Peer Chat Public'
type = 'pickle'

[[instances]]
agent = 'holofuel-agent'
dna = 'holofuel-dna'
id = 'holofuel'

[instances.storage]
path = '/Users/thomasmiller/Library/Application Support/Holoscape-default/storage/holofuel'
type = 'pickle'

[[interfaces]]
admin = true
id = 'admin interface'
instances = []

[interfaces.driver]
port = 4435
type = 'websocket'

[[interfaces]]
admin = false
id = 'Passthrough Test hApp-interface'

[[interfaces.instances]]
alias = 'test-instance'
id = 'Passthrough'

[interfaces.driver]
port = 10000
type = 'websocket'

[[interfaces]]
admin = false
id = 'Peer Chat-interface'

[[interfaces.instances]]
alias = 'peer-chat-public'
id = 'Peer Chat Public'

[interfaces.driver]
port = 10001
type = 'websocket'

[[interfaces]]
admin = false
id = 'Identity Manager-interface'

[[interfaces.instances]]
alias = 'personas-profiles'
id = 'Personas & Profiles'

[interfaces.driver]
port = 10002
type = 'websocket'

[[interfaces]]
admin = true
id = 'HoloFuel-interface'
instances = []

[interfaces.driver]
port = 10000
type = 'websocket'

[logger]
state_dump = true
type = 'debug'
[[logger.rules.rules]]
exclude = true
pattern = '.*'

[[logger.rules.rules]]
exclude = false
pattern = '^lib3h'

[[logger.rules.rules]]
exclude = false
pattern = '^holochain'

[[logger.rules.rules]]
exclude = false
pattern = '^lib3h'

[network]
sim2h_url = 'wss://sim2h.holochain.org:9000'
type = 'sim2h'

[passphrase_service]
path = '/Users/thomasmiller/Library/Application Support/Holoscape-default/conductor_login.socket'
type = 'unixsocket'

[signals]
consistency = true
trace = true

Latest update: I got holofuel working with the install hApp from bundle file page after deleting/renaming Holoscape-default

But I guess the error happens when installing multiple UIs.

Does anyone have any documentation on how to bundle a hApp for holoscape?

I’m currently building a bundle file from scratch.

I know how to create the dna_hash and dna.json file the toml file points to (by running hc package)

However…

  1. Not sure what tool to use to create the ui_bundle_hash that is required under [[UIs]]
  2. Are there any other gotchas to zipping a ui build folder?

If anyone knows of a tutorial on this let me know otherwise I’m happy to compile my notes to flesh this tutorial out.

1 Like

Yes, that is the same bug that I thought was fixed in 0.0.3. Are you actually using that latest release, or are you running 0.0.2?

And yes, that only happens with bundles with two or more UIs. Holoscape is looking for the next free port and doesn’t (didn’t?) wait for the last assigned port to actually get used - hence the double assign.

Regarding your questions:

  1. That hash is not used so far and won’t be checked by Holoscape - you can leave it blank.
  2. The only assumption is that there is an index.html file at the root of the archive.

There is no tutorial out yet. If you want to start writing one I’d be more than happy to help you with any questions that come up. :slight_smile: That said, I would suggest to start easy since some pieces are still WIP (like the UI hash). We might need to iterate and don’t want you to have to rewrite a lot if we change something.

What I currently see as an important next step is to get hc run to interpret these bundle files and automatically create a development conductor from it. That should render bundle files a central artifact for hApp projects. Once that’s there, a tutorial describing the whole workflow would make a lot of sense!

1 Like

yeah I’m running 0.0.3 Alpha.

Thanks for the answers.

Yes I will help create this tutorial, will share a start on https://hackmd.io/ soon. :slight_smile:

1 Like

very cool, will try running this over the weekend

1 Like

@lucksus

I’ve gone ahead and created this tutorial that walks people through bundling the hApp created in the offical Hello Holo tutorial: https://hackmd.io/vbCUE9CoSNC1-62ak5hYYg

However, when I upload the bundle file it crashes… There were no errors so I shot this quick video to show what happens: http://somup.com/cqXDqKfbFB

1 Like

Looks great, @ThomasMiller. Thanks for writing this up!

Sorry for the late reply, and also sorry for the missing error output in Holoscape. There is one error in your bundle file: the instance_id under [[UIs.instance_references]] has to reference an ID of an instance within the bundle file. You got __gui there which is no instance ID but the ID of the UI. It should read:

[[UI.instance_references]]
ui_handle = "test-instance" #or whatever the hard-coded string in the UI code is
instance_id = "__cctuts" #ID of an instance described within this file.

That whole block is a sub-item of the UI definition with the ID __gui anways.

1 Like

Thanks @lucksus for pointing out how UI instances “actually” reference DNAs instances.

I feel there is another gotcha, and I was coming across this error before with previous attempts.

I package this complete hApp with UI as in the walkthrough, and somehow it creates a different hash to what I’m creating with “hc package”.

Hm, Holoscape runs hc hash -p <file> to calculate the hash of the file it got through the bundle. We recently made a change to hc that changes the default behavior to not include meta fields into the package (which caused problems). This definitely changes the hash of the file - but once it’s packaged it should be fine. So I’m not sure why you get different hashes, but one thing to try would be making sure it is the same version of hc that is used for packaging as well as the version that is used inside Holoscape.

I guess you are using the release binary of Holoscape which was packaged with holochain and hc v0.0.36-alpha1. You could either download the hc binary of that version here, or you clone the Holoscape repository and put your holochain and hc binaries (from https://holochain.love ?) into that directory and run Holoscape in development mode with npm start as described here.

I intend to have Holoscape v0.0.4 at least show which versions of holochain and hc are bundled with it - maybe even having an update button that downloads newer releases.

1 Like

Hi Nico, I’ve also asked another user to document their experience with Holoscape. I’ve submitted an issue with notes from this user.

Tried out the just-now released v0.0.4 for Mac.

  1. Installation was no different from any other (untrusted) Mac app. :tada:

  2. Basic Chat could not be installed due to the “Hash of found file is different” problem:

  3. After having installed one app successfully (I started with the Peer Chat), this prompt showed underneath all app pages, regardless of whether I had installed it or not.

  4. After an app has finished installing, everything is cleared out except the app’s listing. This confused me several times, as I was wondering if something had gone wrong. Some sort of confirmation prompt here would be nice. (I’m guessing this is where the prompt mentioned in (3) is supposed to show up!)

  5. All apps except Basic Chat installed and ran without issues :muscle:

2 Likes

Hi @erlend_sh Thank you for testing and providing feedback on your experience.

Yes, @ThomasMiller and @erlend_sh, there was a bug in hc's hash calculation which was mistakenly changing the DNA if no properties were given (just hc hash, no hc hash --property x=1). This got fixed recently in v0.0.40-alpha1.

  1. This new version should fix your problem @ThomasMiller - that is, your workflow should be fine and not show a hash mismatch anymore if you use all the newest builds.
  2. That fix is exactly what broke the installation of Basic Chat which had the old/wrong DNA hash in its bundle. That got fixed now as well - thanks for pointing this out @erlend_sh! Please try again, it should work now. And if it does, we can chat over there :slight_smile:
1 Like