MCPcopy Index your code
hub / github.com/OutlineFoundation/outline-apps

github.com/OutlineFoundation/outline-apps @v1.10.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.10.1 ↗ · + Follow
714 symbols 1,542 edges 104 files 32 documented · 4% updated 5d agov1.10.1 · 2023-03-20★ 9,196457 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Outline Client

Build and Test Mattermost Reddit

Test coverage currently only tracks the Apple Libraries and core web view code:

codecov

The Outline Client is a cross-platform VPN or proxy client for Windows, macOS, iOS, Android, and ChromeOS. The Outline Client is designed for use with the Outline Server software, but it is fully compatible with any Shadowsocks server.

The client's user interface is implemented in Polymer 2.0. Platform support is provided by Cordova and Electron, with additional native components in this repository.

To join our Outline Community, sign up for the IFF Mattermost.

Requirements for all builds

All builds require Node 16 (lts/gallium), in addition to other per-platform requirements.

💡 NOTE: if you have nvm installed, run nvm use to switch to the correct node version!

After cloning this repo, install all node dependencies:

npm install

Building the shared web app

Outline clients share the same web app across all platforms. This code is located in the src/www directory. If you are making changes to the shared web app and do not need to test platform-specific functionality, you can test in a desktop browser by running:

npm run action src/www/start

The latter command will open a browser instance running the app. Browser platform development will use fake servers to test successful and unsuccessful connections.

The app logic is located in src/www/app. UI components are located in src/www/ui_components. If you want to work specifically on an individual UI element, try the storybook!:

npm run action src/www/storybook

💡 NOTE: the src part of the path is optional. npm run action www/start resolves to the same script.

💡 NOTE: every script in this repository can be run with npm run action - for a CLI-like experience, add something like

sh alias outline="npm run action"

(you can call it whatever you like)

to your shell, then try outline www/start!

Life of a Packet

How does the Outline Client work?

Accepting a server invite

Looking for instructions on how to accept a server invite?

Platform-specific development

Each platform is handled differently:

  1. Developing for Apple (MacOS and iOS)
  2. Developing for Android
  3. Developing for Electron (Windows and Linux)

Error reporting

To enable error reporting through Sentry for local builds, run:

export SENTRY_DSN=[Sentry development API key]
[platform-specific build command]

Release builds on CI are configured with a production Sentry API key.

Support

For support and to contact us, see: https://support.getoutline.org.

Extension points exported contracts — how you extend this code

OutlineEvent (Interface)
(no doc) [7 implementers]
src/www/model/events.ts
VpnTunnel (Interface)
(no doc) [2 implementers]
src/electron/vpn_tunnel.ts
NativeNetworking (Interface)
(no doc) [7 implementers]
src/www/app/net.ts
RoutingServiceRequest (Interface)
(no doc)
src/electron/routing_service.ts
Tunnel (Interface)
(no doc) [6 implementers]
src/www/app/tunnel.ts
RoutingServiceResponse (Interface)
(no doc)
src/electron/routing_service.ts
OutlineErrorReporter (Interface)
(no doc) [5 implementers]
src/www/app/error_reporter.ts
SerializableTunnel (Interface)
(no doc)
src/electron/tunnel_store.ts

Core symbols most depended-on inside this repo

subscribe
called by 26
src/www/model/events.ts
serversStorageV0ConfigToAccessKey
called by 25
src/www/app/outline_server_repository/index.ts
add
called by 24
src/www/model/server.ts
parse
called by 18
src/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/vpn/VpnTunnel.java
get
called by 17
src/www/app/settings.ts
set
called by 16
src/www/app/settings.ts
updateServerListItem
called by 14
src/www/app/app.ts
close
called by 14
src/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/log/SentryErrorReporter.java

Shape

Method 412
Class 158
Function 99
Interface 30
Enum 14
Struct 1

Languages

TypeScript76%
Java16%
Python7%
Go1%

Modules by API surface

src/www/model/errors.ts57 symbols
src/www/app/app.ts48 symbols
third_party/tap-windows6/buildtap.py44 symbols
src/cordova/android/OutlineAndroidLib/outline/src/main/java/org/outline/vpn/VpnTunnelService.java40 symbols
src/www/app/cordova_main.ts33 symbols
src/www/ui_components/app-root.js29 symbols
src/www/model/events.ts28 symbols
src/www/app/outline_server_repository/index.ts25 symbols
src/cordova/plugin/android/java/org/outline/OutlinePlugin.java22 symbols
src/electron/go_vpn_tunnel.ts21 symbols
src/electron/routing_service.ts20 symbols
src/www/app/electron_main.ts17 symbols

Dependencies from manifests, versioned

@babel/core7.12.10 · 1×
@babel/polyfill7.12.1 · 1×
@babel/preset-env7.12.11 · 1×
@commitlint/config-conventional16.2.4 · 1×
@jsdevtools/coverage-istanbul-loader3.0.5 · 1×
@material/mwc-button0.25.3 · 1×
@material/mwc-icon-button0.25.3 · 1×
@material/mwc-menu0.25.3 · 1×
@polymer/app-layout3.1.0 · 1×
@polymer/app-localize-behavior3.0.1 · 1×
@polymer/app-route3.0.2 · 1×
@polymer/decorators3.0.0 · 1×

For agents

$ claude mcp add outline-apps \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact