Skip to content
This repository has been archived by the owner on Jul 22, 2022. It is now read-only.
/ radical-native Public archive

Extending Element (Riot Web) with native capabilities

License

Notifications You must be signed in to change notification settings

stoically/radical-native

Repository files navigation

Radical Native

Radical Native Matrix room #radical-webext:matrix.org

Extending Riot Web with native capabilities

Features

  • Search functionality in encrypted rooms using seshat
  • Secure OS key storage for pickle keys using keytar
  • OS global keyboard shortcuts (e.g. push to talk)
  • Tray icon

Supported Browsers

  • Firefox
  • Chrome

Install

1. Radical Native

  • Ubuntu/Debian: .deb
  • Arch: AUR
  • MacOS: .pkg
    • Note: Requires Ctrl+Click on the .pkg since the installer isn't signed yet
  • Windows: .exe

Hint: The event store is saved into the radical-native directory inside your local user data directory.

2. Radical Native Add-on

The Radical Native Firefox Add-on facilitates the communication between Riot Web and the Radical Native Binary.

Usage

  • Open any Riot website in your browser
  • Click the Radical Native icon in the toolbar (RAM icon)
  • Riot website should reload and the toolbar icon should have an "on" badge
  • Check Riot's "Settings > Security & Privacy > Message search > Manage", it should show ongoing work

Troubleshooting

  • Try to execute the radical-native binary directly - it should respond with "ready: true"
  • Check the Radical Native Add-on console for error logs: about:debugging#/runtime/this-firefox > Radical Native Inspect
  • If indexing gets stuck you can safely disable and enable it in the "Manage" dialog

Development

  • cargo install cargo-watch
  • Ubuntu/Debian: apt install libsqlcipher0 libsqlcipher-dev libsecret-1-dev
  • MacOS: brew install libsqlcipher
npm install
npm run dev

Firefox

  • Load the build located in build/firefox as Temporary Add-on via about:debugging#/runtime/this-firefox

Chrome

  • Load the build located in build/chrome as Unpacked extension via chrome://extensions/

Tests

# watcher
npm run test:watch

# once
npm run test

# once & coverage
npm run test:coverage

Attribution

Icon made by Freepik from www.flaticon.com