MCPcopy Index your code
hub / github.com/FlashpointProject/launcher

github.com/FlashpointProject/launcher @14.0.3

Chat with this repo
repository ↗ · DeepWiki ↗ · release 14.0.3 ↗ · + Follow
1,611 symbols 4,699 edges 312 files 201 documented · 12%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Flashpoint Launcher

The launcher for Flashpoint Archive (the non-profit web preservation project).

Screenshot

Status

Release Status Build Status Coverage Status Crowdin

Links

  • Documentation - Documentation for Configuation, Development and Extensions information of the Flashpoint Launcher.
  • Flashpoint Archive - Download Flashpoint here (the launcher is bundled with it)
  • Donate - Funds go towards the Flashpoint Archive non-profit to sustain archival efforts, not to fund developers of the launcher.

About

The Flashpoint Launcher (FPL) is a desktop application made for browsing, storing and launching other applications (games, animations, web apps etc.). It is specifically made for Flashpoint Archive, a non-profit with the goal of furthering archival and accessibility efforts for games, animations and other digital interactive experiences on the web.

See the docs folder for more information on setting up Flashpoint and Extension authoring.

Extension API Documentation: https://flashpointproject.github.io/launcher_ApiDocs/

Building from source

External Dependencies

Dependencies

  • Git (for downloading and updating the source code and sub-modules)
  • Node & NPM (for building and running the source code)

Linux Dependencies

  • libgtk-3-0
  • libnss3

Follow Development Setup, using master branch for a stable release or develop for the latest features. After setup is complete, run npm run release to generate release builds in /dist.

Install by running sudo apt install libgtk-3-0 libnss3

Development Setup

  1. Clone the repository with git clone --branch develop --recurse-submodules https://github.com/FlashpointProject/launcher.git launcher (where launcher is the path of the directory you want to be the root of the repository).

  2. Navigate to the root of the repository and run npm install - this will download and install all the dependencies from npm (it may take a few minutes).

  3. Run npm run build or npm run watch (at the root of the repository). This will compile the source code and such so the launcher can be executed. If watch is used, it will rebuild the launcher automatically when a source code or static file is changed.

  4. Run npm run start (at the root of the repository) to start the launcher. It is recommended to do this in a second command prompt / terminal.

  5. Optional - It is highly recommended to set the launcher's "Flashpoint folder". This is where the launcher will read and write most data to and from. You can set the "Flashpoint folder" path at the "Config" tab in the launcher. Make sure the background of the text field is green (this means the path is valid) and don't forget to hit "Save and Exit"!

Notes:

  • You will need to run npm install whenever a dependency is added or upgraded in package.json.
  • The launcher is changing rapidly and does not always support older "Flashpoint folders". Sometimes it does not even support the most recent one.
  • It is recommended to have a separate "Flashpoint folder" for launcher development than normal usage.

Package Scripts

Short descriptions of what the scripts in package.json do:

  • build - Build the launcher (build main & renderer and copy static files to ./build/)
  • watch - Build the launcher and incrementally rebuild it when the source or static files change
  • pack - Pack the latest build (and put the packaged file with the executable electron app in ./dist/)
  • snapshot - Build then pack the launcher (same as running build then pack)
  • release - Build then pack the launcher in release mode (same as snapshot but it also creates installers, build artifacts etc.)
  • start - Run the latest build of the launcher
  • test - Run the test suite (to find out if anything covered by the tests has been broken)
  • lint - Run the linter

pack / snapshot / release will by default pack for the OS and architecture of the machine that runs it.

To pack for a specific OS / architecture use the handy package scripts (such as pack:linux or release:win32) or set the environment variables PACK_PLATFORM / PACK_ARCH.

Troubleshooting

"Not allowed to load local resource" Error

If this error appears in the electron applications console, it is probably because the file it is looking for does not exist. To solve this, run npm run build

Example: Not allowed to load local resource: file:///<ProjectPath>/build/renderer/index.html

Extension points exported contracts — how you extend this code

IGameMiddleware (Interface)
(no doc) [6 implementers]
typings/flashpoint-launcher.d.ts
IObjectParserError (Interface)
Interface for ObjectParserError. [2 implementers]
src/shared/utils/ObjectParser.ts
CallableCopy (Interface)
A callable object that has the same argument types as T (and void as the return type).
src/back/util/EventAggregator.ts
IDataFactory (Interface)
(no doc)
tests/util/types.ts
Window (Interface)
(no doc)
typings/globals.d.ts
FileFilter (Interface)
See Electron docs for explanations. http://electronjs.org/docs/api/structures/file-filter
typings/flashpoint-launcher.d.ts
Callable (Interface)
Callable object, A is the arguments, R is the return value
src/shared/memoize.ts
IEventQueue (Interface)
(no doc) [2 implementers]
src/back/util/EventQueue.ts

Core symbols most depended-on inside this repo

prop
called by 309
src/shared/utils/ObjectParser.ts
push
called by 309
src/back/util/EventQueue.ts
map
called by 198
src/shared/utils/ObjectParser.ts
str
called by 194
src/shared/utils/Coerce.ts
register
called by 171
src/back/SocketServer.ts
setState
called by 169
src/back/ManagedChildProcess.ts
request
called by 135
src/back/SocketServer.ts
broadcast
called by 108
src/back/SocketServer.ts

Shape

Function 979
Method 420
Class 138
Interface 50
Enum 24

Languages

TypeScript100%
Python1%

Modules by API surface

src/back/util/map.ts39 symbols
src/back/index.ts39 symbols
src/back/extensions/ApiImplementation.ts36 symbols
src/shared/utils/ObjectParser.ts34 symbols
src/shared/Util.ts34 symbols
src/back/util/misc.ts28 symbols
src/renderer/components/pages/DeveloperPage.tsx26 symbols
src/renderer/components/SearchBar.tsx26 symbols
src/back/SocketServer.ts26 symbols
src/back/Downloader.ts26 symbols
src/renderer/components/app.tsx25 symbols
src/renderer/components/RightBrowseSidebar.tsx25 symbols

For agents

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

⬇ download graph artifact