rollberry 0.1.0 → 0.1.2
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.
- package/CHANGELOG.md +44 -0
- package/CONTRIBUTING.md +53 -0
- package/LICENSE +21 -0
- package/README.md +126 -38
- package/SECURITY.md +23 -0
- package/dist/cli.js +0 -0
- package/package.json +23 -1
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on Keep a Changelog and the project stays on the `v0.x.x`
|
|
6
|
+
line until the CLI surface and capture behavior settle.
|
|
7
|
+
|
|
8
|
+
## [0.1.2] - 2026-03-15
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- `SECURITY.md`, `CONTRIBUTING.md`, GitHub issue forms, and a pull request
|
|
13
|
+
template.
|
|
14
|
+
- Contact guidance pointing users to https://co-r-e.com/contact where private
|
|
15
|
+
contact is required.
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
|
|
19
|
+
- MIT copyright holder is now `CORe Inc.`.
|
|
20
|
+
- Branch protection policy now also covers `develop` and `release/*`, with
|
|
21
|
+
`mokuwaki` as the only bypass user.
|
|
22
|
+
|
|
23
|
+
## [0.1.1] - 2026-03-15
|
|
24
|
+
|
|
25
|
+
### Added
|
|
26
|
+
|
|
27
|
+
- MIT license metadata and `LICENSE` file for open source distribution.
|
|
28
|
+
- GitHub Actions trusted publishing workflow for npm releases on `v*` tags.
|
|
29
|
+
- Maintainer release process documentation for `npx rollberry ...` distribution.
|
|
30
|
+
|
|
31
|
+
### Changed
|
|
32
|
+
|
|
33
|
+
- README rewritten around real `npx` usage, common capture examples, and
|
|
34
|
+
operational troubleshooting.
|
|
35
|
+
- Package metadata now includes repository, homepage, bug tracker, and keywords.
|
|
36
|
+
|
|
37
|
+
## [0.1.0] - 2026-03-15
|
|
38
|
+
|
|
39
|
+
### Added
|
|
40
|
+
|
|
41
|
+
- Initial public CLI release for smooth top-to-bottom page capture.
|
|
42
|
+
- `localhost`, `127.0.0.1`, and self-signed `https://localhost` support.
|
|
43
|
+
- Sidecar manifest and JSONL log output.
|
|
44
|
+
- Regression suite runner and fixture-backed integration tests.
|
package/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Contributing to Rollberry
|
|
2
|
+
|
|
3
|
+
Thank you for contributing to Rollberry.
|
|
4
|
+
|
|
5
|
+
## Before You Start
|
|
6
|
+
|
|
7
|
+
- Open an issue for bugs, feature requests, or larger changes before starting
|
|
8
|
+
implementation.
|
|
9
|
+
- For security issues, do not open a public issue. Use
|
|
10
|
+
https://co-r-e.com/contact instead.
|
|
11
|
+
- By contributing, you agree that your changes will be distributed under the
|
|
12
|
+
MIT license used by this repository.
|
|
13
|
+
|
|
14
|
+
## Development Setup
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
corepack pnpm install
|
|
18
|
+
corepack pnpm exec playwright install chromium
|
|
19
|
+
corepack pnpm check
|
|
20
|
+
corepack pnpm test
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Pull Request Expectations
|
|
24
|
+
|
|
25
|
+
- Keep changes focused and avoid mixing unrelated work.
|
|
26
|
+
- Update docs when CLI behavior or release/operational workflow changes.
|
|
27
|
+
- Add or update tests when behavior changes.
|
|
28
|
+
- Keep `README.md`, `CHANGELOG.md`, and sample config files aligned with the
|
|
29
|
+
code when relevant.
|
|
30
|
+
|
|
31
|
+
## Branch Protection and Reviews
|
|
32
|
+
|
|
33
|
+
The protected branches are:
|
|
34
|
+
|
|
35
|
+
- `main`
|
|
36
|
+
- `develop`
|
|
37
|
+
- `release/*`
|
|
38
|
+
|
|
39
|
+
For contributors other than `mokuwaki`:
|
|
40
|
+
|
|
41
|
+
- direct push is not allowed on protected branches
|
|
42
|
+
- merge requires at least one approval
|
|
43
|
+
- the latest push must still be approved by someone else
|
|
44
|
+
|
|
45
|
+
`mokuwaki` is the only configured bypass user for these protected branches.
|
|
46
|
+
|
|
47
|
+
## Release Notes
|
|
48
|
+
|
|
49
|
+
Rollberry remains on the `v0.x.x` line for now. Release prep should update:
|
|
50
|
+
|
|
51
|
+
- `package.json`
|
|
52
|
+
- `CHANGELOG.md`
|
|
53
|
+
- any user-facing docs affected by the release
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 CORe Inc.
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,21 +1,19 @@
|
|
|
1
1
|
# Rollberry
|
|
2
2
|
|
|
3
|
-
Rollberry
|
|
3
|
+
Rollberry is an MIT-licensed open source CLI for turning a web page into a
|
|
4
|
+
smooth top-to-bottom scroll video. It is built for real browser capture, works
|
|
5
|
+
with normal URLs and `localhost`, and is published for direct `npx` usage.
|
|
4
6
|
|
|
5
|
-
|
|
7
|
+
Maintained by CORe Inc.
|
|
6
8
|
|
|
7
|
-
|
|
8
|
-
- `ffmpeg` / `ffprobe`
|
|
9
|
-
- macOS を優先サポート
|
|
9
|
+
## Quick Start
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
Requirements:
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
corepack pnpm exec playwright install chromium
|
|
16
|
-
```
|
|
13
|
+
- Node.js `24.12.0+`
|
|
14
|
+
- `ffmpeg` and `ffprobe` available on `PATH`
|
|
17
15
|
|
|
18
|
-
|
|
16
|
+
Install nothing globally. Run it directly:
|
|
19
17
|
|
|
20
18
|
```bash
|
|
21
19
|
npx rollberry capture http://localhost:3000 \
|
|
@@ -27,55 +25,145 @@ npx rollberry capture http://localhost:3000 \
|
|
|
27
25
|
--hide-selector '#cookie-banner'
|
|
28
26
|
```
|
|
29
27
|
|
|
30
|
-
|
|
28
|
+
On the first run, if Playwright Chromium is missing, Rollberry installs it
|
|
29
|
+
automatically. `ffmpeg` is not auto-installed.
|
|
30
|
+
|
|
31
|
+
## What You Get
|
|
32
|
+
|
|
33
|
+
Each run writes:
|
|
34
|
+
|
|
35
|
+
- `video.mp4`: the rendered capture
|
|
36
|
+
- `video.manifest.json`: environment, options, result, and failure details
|
|
37
|
+
- `video.log.jsonl`: structured operational logs
|
|
38
|
+
|
|
39
|
+
You can override the sidecar paths with `--manifest` and `--log-file`.
|
|
40
|
+
|
|
41
|
+
## Common Examples
|
|
42
|
+
|
|
43
|
+
Capture a development site:
|
|
31
44
|
|
|
32
45
|
```bash
|
|
33
|
-
|
|
34
|
-
--out ./artifacts/demo.mp4 \
|
|
35
|
-
--viewport 1440x900 \
|
|
36
|
-
--fps 60 \
|
|
37
|
-
--duration auto \
|
|
38
|
-
--wait-for selector:body \
|
|
39
|
-
--hide-selector '#cookie-banner'
|
|
46
|
+
npx rollberry capture http://localhost:3000 --out ./artifacts/local.mp4
|
|
40
47
|
```
|
|
41
48
|
|
|
42
|
-
|
|
49
|
+
Capture a public site at a fixed duration:
|
|
43
50
|
|
|
44
51
|
```bash
|
|
45
|
-
|
|
52
|
+
npx rollberry capture https://playwright.dev \
|
|
53
|
+
--out ./artifacts/playwright.mp4 \
|
|
54
|
+
--duration 8 \
|
|
55
|
+
--fps 60
|
|
46
56
|
```
|
|
47
57
|
|
|
48
|
-
|
|
58
|
+
Wait for a selector and hide overlays:
|
|
49
59
|
|
|
50
|
-
|
|
60
|
+
```bash
|
|
61
|
+
npx rollberry capture https://example.com \
|
|
62
|
+
--wait-for selector:main \
|
|
63
|
+
--hide-selector '#cookie-banner' \
|
|
64
|
+
--hide-selector '.intercom-lightweight-app'
|
|
65
|
+
```
|
|
51
66
|
|
|
52
|
-
|
|
67
|
+
Dump raw frames for debugging:
|
|
53
68
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
69
|
+
```bash
|
|
70
|
+
npx rollberry capture http://localhost:3000 \
|
|
71
|
+
--out ./artifacts/debug.mp4 \
|
|
72
|
+
--debug-frames-dir ./artifacts/debug-frames
|
|
73
|
+
```
|
|
57
74
|
|
|
58
|
-
|
|
75
|
+
## CLI Options
|
|
76
|
+
|
|
77
|
+
```text
|
|
78
|
+
rollberry capture <url>
|
|
79
|
+
|
|
80
|
+
--out <file> Output MP4 path
|
|
81
|
+
--viewport <WxH> Viewport size, example: 1440x900
|
|
82
|
+
--fps <n> Frames per second
|
|
83
|
+
--duration <seconds|auto> Explicit seconds or auto
|
|
84
|
+
--motion <curve> ease-in-out-sine | linear
|
|
85
|
+
--timeout <ms> Navigation timeout
|
|
86
|
+
--wait-for <mode> load | selector:<css> | ms:<n>
|
|
87
|
+
--hide-selector <css> Hide CSS selector before capture
|
|
88
|
+
--debug-frames-dir <dir> Save raw PNG frames
|
|
89
|
+
--manifest <file> Manifest JSON output path
|
|
90
|
+
--log-file <file> Log JSONL output path
|
|
91
|
+
```
|
|
59
92
|
|
|
60
93
|
## Localhost Behavior
|
|
61
94
|
|
|
62
|
-
- `http://localhost
|
|
63
|
-
|
|
64
|
-
- `
|
|
65
|
-
-
|
|
95
|
+
- Supports `http://localhost:*`, `https://localhost:*`,
|
|
96
|
+
`http://127.0.0.1:*`, and `http://[::1]:*`
|
|
97
|
+
- Retries connection-refused errors until `--timeout`
|
|
98
|
+
- Accepts self-signed certificates for localhost targets only
|
|
99
|
+
- Does not start your dev server for you
|
|
100
|
+
|
|
101
|
+
## Troubleshooting
|
|
66
102
|
|
|
67
|
-
|
|
103
|
+
If `ffmpeg` is missing:
|
|
68
104
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
105
|
+
```bash
|
|
106
|
+
brew install ffmpeg
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
If capture fails, inspect:
|
|
110
|
+
|
|
111
|
+
- `*.manifest.json` for final status and error details
|
|
112
|
+
- `*.log.jsonl` for per-step structured logs
|
|
113
|
+
|
|
114
|
+
If a site keeps shifting during capture:
|
|
115
|
+
|
|
116
|
+
- wait for a stable selector with `--wait-for selector:...`
|
|
117
|
+
- hide chat widgets, cookie banners, and sticky overlays with `--hide-selector`
|
|
118
|
+
- keep dynamic dev-only overlays out of the page when possible
|
|
119
|
+
|
|
120
|
+
## Support and Contact
|
|
73
121
|
|
|
74
|
-
|
|
122
|
+
- General contact: https://co-r-e.com/contact
|
|
123
|
+
- Security issues: see [SECURITY.md](./SECURITY.md)
|
|
124
|
+
- Contribution guide: see [CONTRIBUTING.md](./CONTRIBUTING.md)
|
|
125
|
+
|
|
126
|
+
## Local Development
|
|
75
127
|
|
|
76
128
|
```bash
|
|
129
|
+
corepack pnpm install
|
|
130
|
+
corepack pnpm exec playwright install chromium
|
|
77
131
|
corepack pnpm check
|
|
78
132
|
corepack pnpm test
|
|
79
133
|
corepack pnpm build
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Run from the repository:
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
corepack pnpm dev -- capture http://localhost:3000 --out ./artifacts/demo.mp4
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Run the regression suite:
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
cp regression.sample.json regression.sites.json
|
|
80
146
|
corepack pnpm regression -- --config ./regression.sites.json
|
|
81
147
|
```
|
|
148
|
+
|
|
149
|
+
## Release Flow
|
|
150
|
+
|
|
151
|
+
Rollberry stays on the `v0.x.x` line for now.
|
|
152
|
+
|
|
153
|
+
1. Update `package.json` version and `CHANGELOG.md`
|
|
154
|
+
2. Commit the release prep
|
|
155
|
+
3. Create an annotated tag like `git tag -a v0.1.2 -m "Release v0.1.2"`
|
|
156
|
+
4. Push `main` and the tag to GitHub
|
|
157
|
+
5. GitHub Actions publishes to npm via trusted publishing
|
|
158
|
+
|
|
159
|
+
Trusted publishing setup expected by this repo:
|
|
160
|
+
|
|
161
|
+
- GitHub repository: `co-r-e/rollberry`
|
|
162
|
+
- Workflow filename: `.github/workflows/publish.yml`
|
|
163
|
+
- Trigger: push tag `v*`
|
|
164
|
+
- In npm package settings, add a trusted publisher that matches the repository
|
|
165
|
+
and workflow above
|
|
166
|
+
|
|
167
|
+
## License
|
|
168
|
+
|
|
169
|
+
[MIT](./LICENSE)
|
package/SECURITY.md
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Security Policy
|
|
2
|
+
|
|
3
|
+
## Supported Versions
|
|
4
|
+
|
|
5
|
+
Security fixes are provided for the latest published `v0.x.x` release and the
|
|
6
|
+
current `main` branch on a best-effort basis.
|
|
7
|
+
|
|
8
|
+
## Reporting a Vulnerability
|
|
9
|
+
|
|
10
|
+
Do not open a public GitHub issue for suspected security vulnerabilities.
|
|
11
|
+
|
|
12
|
+
Please contact us here instead:
|
|
13
|
+
|
|
14
|
+
- https://co-r-e.com/contact
|
|
15
|
+
|
|
16
|
+
Include as much detail as possible:
|
|
17
|
+
|
|
18
|
+
- affected version
|
|
19
|
+
- reproduction steps
|
|
20
|
+
- impact assessment
|
|
21
|
+
- proof of concept, if available
|
|
22
|
+
|
|
23
|
+
We will review the report privately and respond through the contact channel.
|
package/dist/cli.js
CHANGED
|
File without changes
|
package/package.json
CHANGED
|
@@ -1,12 +1,34 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rollberry",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "CLI to capture smooth top-to-bottom scroll videos from web pages, including localhost URLs.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "pnpm@10.15.0",
|
|
7
|
+
"author": "CORe Inc.",
|
|
8
|
+
"license": "MIT",
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "git+https://github.com/co-r-e/rollberry.git"
|
|
12
|
+
},
|
|
13
|
+
"homepage": "https://github.com/co-r-e/rollberry#readme",
|
|
14
|
+
"bugs": {
|
|
15
|
+
"url": "https://github.com/co-r-e/rollberry/issues"
|
|
16
|
+
},
|
|
17
|
+
"keywords": [
|
|
18
|
+
"cli",
|
|
19
|
+
"playwright",
|
|
20
|
+
"scroll",
|
|
21
|
+
"video",
|
|
22
|
+
"automation",
|
|
23
|
+
"localhost"
|
|
24
|
+
],
|
|
7
25
|
"files": [
|
|
8
26
|
"dist",
|
|
27
|
+
"CHANGELOG.md",
|
|
28
|
+
"CONTRIBUTING.md",
|
|
29
|
+
"LICENSE",
|
|
9
30
|
"README.md",
|
|
31
|
+
"SECURITY.md",
|
|
10
32
|
"regression.sample.json"
|
|
11
33
|
],
|
|
12
34
|
"bin": {
|