Skip to content

Commit 73fbd4d

Browse files
Clarify in-memory / download editing mode
1 parent d5493c3 commit 73fbd4d

File tree

3 files changed

+24
-8
lines changed

3 files changed

+24
-8
lines changed

README.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,17 @@ Create, annotate, and remix interactive videos on the web.
66

77
FrameTrail is an open-source platform for building non-linear, interactive video experiences. Add overlays, annotations, video links, and code snippets to any video — or create time-based presentations without video at all. All data is stored as portable JSON files with no database required.
88

9-
**No server required for viewing or editing.** FrameTrail runs entirely in the browser using the [File System Access API](https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API) for local file editing, or with an Apache+PHP backend for multi-user collaboration.
9+
**No server required for viewing or editing.** FrameTrail runs entirely in the browser using the [File System Access API](https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API) for local file editing, or with an Apache+PHP backend for multi-user collaboration. It also works in any browser — including Firefox and Safari — via an in-memory mode where edits can be exported as JSON.
1010

1111
---
1212

1313
## Features
1414

15-
### Two Ways to Run
15+
### Three Ways to Run
1616

1717
1. **Server mode** (Apache + PHP) — Full multi-user editing, file uploads, user management
1818
2. **Local folder mode** (Chrome/Edge) — Full editing without a server, using the File System Access API to read/write a local `_data` folder
19+
3. **In-memory mode** (all browsers) — Pass hypervideo data via init options; view and edit in-browser; export changes as JSON via Save As. Nothing persists past a page reload unless exported. Works in Firefox, Safari, and everywhere else.
1920

2021
### Editing
2122

@@ -50,8 +51,9 @@ FrameTrail supports a wide range of embeddable content:
5051

5152
### Browser Support
5253

53-
- **Desktop:** Chrome, Firefox, Edge (latest versions)
54+
- **Desktop:** Chrome, Firefox, Edge, Safari (latest versions)
5455
- **Local folder mode:** Chrome/Edge only (requires File System Access API)
56+
- **In-memory/download mode:** All browsers — Firefox and Safari get full view + edit + export
5557
- **Mobile:** Player works in server mode; editing is disabled
5658

5759
---

docs/ARCHITECTURE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,7 @@ FrameTrail uses a strategy pattern for data persistence. The `StorageManager` mo
295295
|---------|-------|-----------|
296296
| Server | `StorageAdapterServer` | HTTP/HTTPS with PHP backend responding at `_server/ajaxServer.php` |
297297
| Local | `StorageAdapterLocal` | File System Access API available (Chrome/Edge) and folder selected |
298-
| Download | `StorageAdapterDownload` | Supplemental — provides Save As/export in either mode |
298+
| Download | `StorageAdapterDownload` | Primary adapter when no server and no File System Access API (Firefox/Safari, or `file://` protocol). Stores data in memory; exports via Save As. Also available as a supplemental export tool in server and local modes. |
299299

300300
All adapters implement the same interface, so the rest of the application doesn't need to know which storage backend is active.
301301

docs/DEPLOYMENT.md

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Deploying FrameTrail
22

3-
This guide covers the three ways to run FrameTrail, how to build from source, and the release process.
3+
This guide covers the three ways to run FrameTrail (server, local folder, and in-memory), how to build from source, and the release process.
44

55
## Deployment Options
66

@@ -58,9 +58,23 @@ The `StorageAdapterLocal` class uses the File System Access API (`showDirectoryP
5858
- No PHP-based file processing (image optimization, video transcoding)
5959
- Browser must support File System Access API (Chrome/Edge only)
6060

61-
### Save As / Export
61+
### Option 3: In-Memory Mode (All Browsers)
62+
63+
No server, no file system access required. FrameTrail automatically falls back to this mode when running in Firefox, Safari, or any browser without the File System Access API and no PHP backend.
64+
65+
**Requirements:**
66+
- Any modern browser (Chrome, Firefox, Edge, Safari)
67+
68+
**How it works:**
69+
70+
The `StorageAdapterDownload` holds all data in memory. Hypervideo data is passed via init options at startup (see [Inline on a Page](#inline-on-a-page) below). Viewing and editing are fully functional. The Save button is disabled (since there is nowhere to persist); use **Save As** to export a JSON snapshot that can be reloaded later.
6271

63-
The `StorageAdapterDownload` is used as the fallback storage backend when no PHP server and no local folder are available (`storageMode: 'download'`). It stores all data in memory and exposes a Save As dialog that downloads a JSON snapshot of the current state.
72+
**Limitations:**
73+
- No persistence — changes are lost on page reload unless exported via Save As
74+
- No file uploads (media must be referenced by URL)
75+
- No multi-user collaboration
76+
77+
### Save As / Export
6478

6579
In server and local modes, Save As is also available as a supplemental export tool — useful for archiving or migrating content between instances.
6680

@@ -97,7 +111,7 @@ $(document).ready(function() {
97111

98112
### With Inline Data
99113

100-
When running in server mode, you can pass all hypervideo and resource data directly via init options, bypassing the `_data/` directory entirely. This is useful for embedding a specific hypervideo on a page without managing the data folder.
114+
You can pass all hypervideo and resource data directly via init options, bypassing the `_data/` directory entirely. This works in all three storage modes and is the primary approach for in-memory mode (Option 3) — embed FrameTrail on any page without any backend or data folder.
101115

102116
```javascript
103117
FrameTrail.init({

0 commit comments

Comments
 (0)