retold-remote 0.0.5 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/css/retold-remote.css +3 -0
  2. package/docs/README.md +181 -0
  3. package/docs/_cover.md +14 -0
  4. package/docs/_sidebar.md +10 -0
  5. package/docs/_topbar.md +3 -0
  6. package/docs/audio-viewer.md +133 -0
  7. package/docs/ebook-reader.md +90 -0
  8. package/docs/image-viewer.md +90 -0
  9. package/docs/server-setup.md +262 -0
  10. package/docs/video-viewer.md +134 -0
  11. package/html/docs.html +59 -0
  12. package/html/index.html +1 -1
  13. package/package.json +20 -6
  14. package/source/Pict-Application-RetoldRemote.js +122 -2
  15. package/source/RetoldRemote-ExtensionMaps.js +33 -0
  16. package/source/cli/RetoldRemote-Server-Setup.js +211 -67
  17. package/source/cli/commands/RetoldRemote-Command-Serve.js +5 -26
  18. package/source/providers/Pict-Provider-AISortManager.js +456 -0
  19. package/source/providers/Pict-Provider-CollectionManager.js +1200 -0
  20. package/source/providers/Pict-Provider-FormattingUtilities.js +109 -0
  21. package/source/providers/Pict-Provider-GalleryFilterSort.js +2 -11
  22. package/source/providers/Pict-Provider-GalleryNavigation.js +187 -409
  23. package/source/providers/Pict-Provider-RetoldRemoteIcons.js +52 -0
  24. package/source/providers/Pict-Provider-ToastNotification.js +96 -0
  25. package/source/providers/keyboard-handlers/KeyHandler-AudioExplorer.js +88 -0
  26. package/source/providers/keyboard-handlers/KeyHandler-Gallery.js +190 -0
  27. package/source/providers/keyboard-handlers/KeyHandler-Sidebar.js +65 -0
  28. package/source/providers/keyboard-handlers/KeyHandler-VideoExplorer.js +57 -0
  29. package/source/providers/keyboard-handlers/KeyHandler-Viewer.js +197 -0
  30. package/source/server/RetoldRemote-AISortService.js +879 -0
  31. package/source/server/RetoldRemote-ArchiveService.js +2 -12
  32. package/source/server/RetoldRemote-AudioWaveformService.js +7 -16
  33. package/source/server/RetoldRemote-CollectionService.js +843 -0
  34. package/source/server/RetoldRemote-EbookService.js +7 -16
  35. package/source/server/RetoldRemote-FileOperationService.js +560 -0
  36. package/source/server/RetoldRemote-MediaService.js +15 -14
  37. package/source/server/RetoldRemote-MetadataCache.js +411 -0
  38. package/source/server/RetoldRemote-ParimeCache.js +349 -0
  39. package/source/server/RetoldRemote-ThumbnailCache.js +52 -20
  40. package/source/server/RetoldRemote-VideoFrameService.js +7 -15
  41. package/source/views/PictView-Remote-AudioExplorer.js +10 -43
  42. package/source/views/PictView-Remote-CollectionsPanel.js +1486 -0
  43. package/source/views/PictView-Remote-Gallery.js +237 -44
  44. package/source/views/PictView-Remote-ImageViewer.js +1 -34
  45. package/source/views/PictView-Remote-Layout.js +411 -20
  46. package/source/views/PictView-Remote-MediaViewer.js +311 -28
  47. package/source/views/PictView-Remote-SettingsPanel.js +275 -133
  48. package/source/views/PictView-Remote-TopBar.js +701 -14
  49. package/source/views/PictView-Remote-VLCSetup.js +8 -39
  50. package/source/views/PictView-Remote-VideoExplorer.js +20 -54
  51. package/web-application/css/docuserve.css +73 -0
  52. package/web-application/css/retold-remote.css +3 -0
  53. package/web-application/docs/README.md +181 -0
  54. package/web-application/docs/_cover.md +14 -0
  55. package/web-application/docs/_sidebar.md +10 -0
  56. package/web-application/docs/_topbar.md +3 -0
  57. package/web-application/docs/audio-viewer.md +133 -0
  58. package/web-application/docs/ebook-reader.md +90 -0
  59. package/web-application/docs/image-viewer.md +90 -0
  60. package/web-application/docs/server-setup.md +262 -0
  61. package/web-application/docs/video-viewer.md +134 -0
  62. package/web-application/docs.html +59 -0
  63. package/web-application/index.html +1 -1
  64. package/web-application/js/pict-docuserve.min.js +58 -0
  65. package/web-application/js/pict.min.js +2 -2
  66. package/web-application/js/pict.min.js.map +1 -1
  67. package/web-application/retold-remote.js +2652 -970
  68. package/web-application/retold-remote.js.map +1 -1
  69. package/web-application/retold-remote.min.js +60 -13
  70. package/web-application/retold-remote.min.js.map +1 -1
  71. package/server.js +0 -43
@@ -0,0 +1,134 @@
1
+ # Video Viewer and Explorer
2
+
3
+ The video viewer provides an action menu for choosing how to interact with a video, inline browser playback, VLC streaming, and a frame explorer for scrubbing through video content visually.
4
+
5
+ ## Opening a Video
6
+
7
+ - **From the gallery**: select a video file and press `Enter`, or double-click it
8
+ - **Force any file as video**: press `2` in the gallery or viewer to open it in the video viewer regardless of extension
9
+
10
+ ## Video Action Menu
11
+
12
+ When a video is opened, an action menu appears instead of playing immediately. The menu shows the filename and a preview frame extracted from the video midpoint.
13
+
14
+ ### Menu Options
15
+
16
+ | Key | Option | Description |
17
+ |-----|--------|-------------|
18
+ | `Space` / `Enter` | **Play in Browser** | Plays the video inline with HTML5 `<video>` controls |
19
+ | `e` | **Explore Video Frames** | Opens the frame explorer (requires ffmpeg) |
20
+ | `t` | **Extract Thumbnail** | Extracts a single frame from the midpoint |
21
+ | `v` | **Stream with VLC** | Sends the file to VLC on the server machine |
22
+
23
+ The preview frame in the menu is loaded automatically from the server. If ffmpeg is not available, the Explore and Thumbnail options are hidden.
24
+
25
+ Navigation shortcuts still work while the menu is open:
26
+
27
+ | Key | Action |
28
+ |-----|--------|
29
+ | Right / `j` | Skip to next file |
30
+ | Left / `k` | Skip to previous file |
31
+ | `Esc` | Back to gallery |
32
+
33
+ ## In-Browser Playback
34
+
35
+ Pressing `Space` or `Enter` replaces the action menu with an HTML5 video player. The player has native browser controls for play/pause, seeking, volume, and fullscreen.
36
+
37
+ Below the player, a **stats bar** shows:
38
+
39
+ - **Duration** (formatted as mm:ss)
40
+ - **Resolution** (width x height)
41
+ - **Codec** (e.g., h264, hevc, vp9)
42
+ - **Bitrate** (in kbps or Mbps)
43
+ - **File Size** (formatted)
44
+
45
+ The stats bar also includes buttons to jump to the Video Explorer or stream with VLC.
46
+
47
+ ### Autoplay
48
+
49
+ Autoplay is off by default. Enable it in Settings > Gallery > Autoplay video. When enabled, videos begin playing as soon as the player loads.
50
+
51
+ ## Video Explorer
52
+
53
+ The video explorer extracts multiple frames from a video and displays them in a grid, letting you scrub through content visually without playing the video.
54
+
55
+ ### Opening the Explorer
56
+
57
+ - From the video action menu, press `e`
58
+ - From the video stats bar during playback, click "Explore Video"
59
+
60
+ ### Frame Grid
61
+
62
+ Frames are displayed in a responsive grid. Each frame card shows:
63
+
64
+ - The extracted frame image
65
+ - A timestamp label (e.g., "1:23")
66
+ - A frame index number
67
+
68
+ Double-click any frame to open it in a full-screen preview overlay.
69
+
70
+ ### Controls
71
+
72
+ At the top of the explorer:
73
+
74
+ | Control | Description |
75
+ |---------|-------------|
76
+ | Frame count dropdown | Choose 10, 20, 40, 60, or 100 frames (default: 20) |
77
+ | Full-res checkbox | Extract frames at 1920x1080 instead of 640x360 |
78
+ | Refresh button | Re-extract frames with current settings |
79
+
80
+ ### Info Bar
81
+
82
+ Below the controls, an info bar displays video metadata:
83
+
84
+ - Duration
85
+ - Resolution
86
+ - Codec
87
+ - File size
88
+ - Number of extracted frames
89
+
90
+ ### Timeline Bar
91
+
92
+ Below the frame grid, a timeline bar shows the video duration with markers at each extracted frame's position. The timeline also shows markers for any custom frames you extract.
93
+
94
+ **Click anywhere on the timeline** to extract a frame at that exact timestamp. The extracted frame appears in the grid in chronological order, styled with a dashed border to distinguish it from the evenly-spaced frames.
95
+
96
+ ### Frame Preview
97
+
98
+ Double-click any frame in the grid to open a full-screen preview overlay showing the frame at full size.
99
+
100
+ In the preview:
101
+
102
+ | Key | Action |
103
+ |-----|--------|
104
+ | Left / `k` | Previous frame |
105
+ | Right / `j` | Next frame |
106
+ | `Esc` | Close preview |
107
+
108
+ The Back button in the preview header also closes it. Navigation moves through all frames (regular and custom) in chronological order.
109
+
110
+ ### Keyboard Shortcuts
111
+
112
+ | Key | Action |
113
+ |-----|--------|
114
+ | `Esc` | Back to video viewer |
115
+
116
+ ## VLC Streaming
117
+
118
+ Press `v` from the action menu, stats bar, or viewer to send the current video to VLC running on the server. This is useful for files in formats the browser cannot play natively.
119
+
120
+ VLC protocol setup instructions are available in Settings > VLC Protocol Setup, with platform-specific guides for macOS, Windows, and Linux.
121
+
122
+ ## File Info Overlay
123
+
124
+ Press `i` while viewing a video to see metadata:
125
+
126
+ - Size, Duration, Resolution, Codec, Bitrate, Format, Modified date, Path
127
+
128
+ ## Supported Formats
129
+
130
+ **Natively recognized extensions**: mp4, webm, mov, mkv, avi, wmv, flv, m4v, ogv, mpg, mpeg, mpe, mpv, m2v, ts, mts, m2ts, vob, 3gp, 3g2, f4v, rm, rmvb, divx, asf, mxf, dv, nsv, nuv, y4m, wtv, swf, dat
131
+
132
+ **Browser playback support** varies by format. Most browsers play mp4 (h264), webm (vp8/vp9), and ogg natively. For other formats, use VLC streaming or the frame explorer.
133
+
134
+ **Force any file as video** by pressing `2` in the gallery or viewer to bypass extension detection. This is useful for misnamed files (e.g., `.avii` instead of `.avi`).
@@ -0,0 +1,59 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
7
+ <meta name="description" content="Retold Remote Documentation">
8
+
9
+ <title>Retold Remote - Documentation</title>
10
+
11
+ <!-- Docuserve base stylesheet -->
12
+ <link href="css/docuserve.css" rel="stylesheet">
13
+ <!-- PICT Dynamic View CSS Container -->
14
+ <style id="PICT-CSS"></style>
15
+
16
+ <!-- Load the PICT library -->
17
+ <script src="js/pict.min.js" type="text/javascript"></script>
18
+ <!-- Bootstrap the Application -->
19
+ <script type="text/javascript">
20
+ Pict.safeOnDocumentReady(function()
21
+ {
22
+ // Intercept AppData.Docuserve creation to inject DocsBaseURL
23
+ // before pict-docuserve starts fetching markdown files.
24
+ var _origInit = PictDocuserve.prototype.onAfterInitializeAsync;
25
+ PictDocuserve.prototype.onAfterInitializeAsync = function(fCallback)
26
+ {
27
+ var _appData = this.pict.AppData;
28
+ // One-shot setter: when onAfterInitializeAsync assigns
29
+ // AppData.Docuserve, modify DocsBaseURL before loadCatalog runs.
30
+ Object.defineProperty(_appData, 'Docuserve',
31
+ {
32
+ configurable: true,
33
+ enumerable: true,
34
+ set: function(pValue)
35
+ {
36
+ pValue.DocsBaseURL = 'docs/';
37
+ Object.defineProperty(_appData, 'Docuserve',
38
+ {
39
+ configurable: true,
40
+ enumerable: true,
41
+ writable: true,
42
+ value: pValue
43
+ });
44
+ }
45
+ });
46
+ return _origInit.call(this, fCallback);
47
+ };
48
+ Pict.safeLoadPictApplication(PictDocuserve, 2);
49
+ });
50
+ </script>
51
+ </head>
52
+ <body>
53
+ <!-- The root container for the Pict application -->
54
+ <div id="Docuserve-Application-Container"></div>
55
+
56
+ <!-- Load the Docuserve PICT Application Bundle -->
57
+ <script src="js/pict-docuserve.min.js" type="text/javascript"></script>
58
+ </body>
59
+ </html>
@@ -2,7 +2,7 @@
2
2
  <html lang="en">
3
3
  <head>
4
4
  <meta charset="utf-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
6
6
  <title>Retold Remote</title>
7
7
  <link rel="stylesheet" href="css/retold-remote.css">
8
8
  <style id="PICT-CSS"></style>