approvalui 0.1.1__tar.gz

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 (34) hide show
  1. approvalui-0.1.1/.github/ISSUE_TEMPLATE/bug_report.md +42 -0
  2. approvalui-0.1.1/.github/ISSUE_TEMPLATE/feature_request.md +23 -0
  3. approvalui-0.1.1/.github/PULL_REQUEST_TEMPLATE.md +19 -0
  4. approvalui-0.1.1/.github/workflows/ci.yml +54 -0
  5. approvalui-0.1.1/.github/workflows/release.yml +48 -0
  6. approvalui-0.1.1/.gitignore +47 -0
  7. approvalui-0.1.1/CHANGELOG.md +29 -0
  8. approvalui-0.1.1/CODE_OF_CONDUCT.md +25 -0
  9. approvalui-0.1.1/CONTRIBUTING.md +41 -0
  10. approvalui-0.1.1/LICENSE +21 -0
  11. approvalui-0.1.1/PKG-INFO +178 -0
  12. approvalui-0.1.1/README.md +129 -0
  13. approvalui-0.1.1/SECURITY.md +19 -0
  14. approvalui-0.1.1/SKILL.md +48 -0
  15. approvalui-0.1.1/docs/_config.yml +4 -0
  16. approvalui-0.1.1/docs/advanced.md +53 -0
  17. approvalui-0.1.1/docs/architecture.md +55 -0
  18. approvalui-0.1.1/docs/assets/approvalui-demo.gif +0 -0
  19. approvalui-0.1.1/docs/assets/approvalui-screenshot.png +0 -0
  20. approvalui-0.1.1/docs/examples/claude.md +33 -0
  21. approvalui-0.1.1/docs/examples/codex.md +34 -0
  22. approvalui-0.1.1/docs/examples/kimi.md +34 -0
  23. approvalui-0.1.1/docs/index.md +43 -0
  24. approvalui-0.1.1/docs/troubleshooting.md +39 -0
  25. approvalui-0.1.1/example/README.md +19 -0
  26. approvalui-0.1.1/example/approval.html +78 -0
  27. approvalui-0.1.1/example/fixes.json +13 -0
  28. approvalui-0.1.1/example/screenshot.svg +8 -0
  29. approvalui-0.1.1/pyproject.toml +75 -0
  30. approvalui-0.1.1/src/approvalui/__init__.py +7 -0
  31. approvalui-0.1.1/src/approvalui/__main__.py +10 -0
  32. approvalui-0.1.1/src/approvalui/_core.py +177 -0
  33. approvalui-0.1.1/src/approvalui/cli.py +59 -0
  34. approvalui-0.1.1/tests/test_approvalui.py +132 -0
@@ -0,0 +1,42 @@
1
+ ---
2
+ name: Bug report
3
+ about: Report a problem with ApprovalUI
4
+ title: "[BUG] "
5
+ labels: bug
6
+ assignees: ''
7
+ ---
8
+
9
+ ## Describe the bug
10
+
11
+ A clear and concise description of what the bug is.
12
+
13
+ ## To reproduce
14
+
15
+ Steps to reproduce the behavior:
16
+
17
+ 1. Run `approvalui ...`
18
+ 2. Open `approval.html`
19
+ 3. See error
20
+
21
+ ## Expected behavior
22
+
23
+ What you expected to happen.
24
+
25
+ ## Input JSON
26
+
27
+ ```json
28
+ {
29
+ "title": "...",
30
+ "items": []
31
+ }
32
+ ```
33
+
34
+ ## Environment
35
+
36
+ - OS:
37
+ - Python version:
38
+ - ApprovalUI version:
39
+
40
+ ## Additional context
41
+
42
+ Add any other context, screenshots, or browser console errors here.
@@ -0,0 +1,23 @@
1
+ ---
2
+ name: Feature request
3
+ about: Suggest an idea for ApprovalUI
4
+ title: "[FEATURE] "
5
+ labels: enhancement
6
+ assignees: ''
7
+ ---
8
+
9
+ ## Is your feature request related to a problem?
10
+
11
+ A clear and concise description of what the problem is.
12
+
13
+ ## Describe the solution you'd like
14
+
15
+ What should ApprovalUI do?
16
+
17
+ ## Describe alternatives you've considered
18
+
19
+ Any alternative solutions or features you've considered.
20
+
21
+ ## Additional context
22
+
23
+ Add any other context or screenshots here.
@@ -0,0 +1,19 @@
1
+ ## What changed
2
+
3
+ Briefly describe the change.
4
+
5
+ ## Why
6
+
7
+ What problem does this solve?
8
+
9
+ ## How to test
10
+
11
+ - `pytest`
12
+ - `ruff check src tests`
13
+ - `mypy src`
14
+
15
+ ## Checklist
16
+
17
+ - [ ] Tests pass
18
+ - [ ] Lint passes
19
+ - [ ] README or docs updated if needed
@@ -0,0 +1,54 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ jobs:
10
+ lint:
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - uses: actions/checkout@v4
14
+
15
+ - name: Set up Python
16
+ uses: actions/setup-python@v5
17
+ with:
18
+ python-version: "3.12"
19
+
20
+ - name: Install dev dependencies
21
+ run: |
22
+ python -m pip install --upgrade pip
23
+ pip install -e ".[dev]"
24
+
25
+ - name: Lint with ruff
26
+ run: ruff check src tests
27
+
28
+ - name: Check formatting with ruff
29
+ run: ruff format --check src tests
30
+
31
+ - name: Type check with mypy
32
+ run: mypy src
33
+
34
+ test:
35
+ runs-on: ubuntu-latest
36
+ strategy:
37
+ matrix:
38
+ python-version: ["3.10", "3.11", "3.12", "3.13"]
39
+
40
+ steps:
41
+ - uses: actions/checkout@v4
42
+
43
+ - name: Set up Python ${{ matrix.python-version }}
44
+ uses: actions/setup-python@v5
45
+ with:
46
+ python-version: ${{ matrix.python-version }}
47
+
48
+ - name: Install package and dev dependencies
49
+ run: |
50
+ python -m pip install --upgrade pip
51
+ pip install -e ".[dev]"
52
+
53
+ - name: Run tests
54
+ run: pytest
@@ -0,0 +1,48 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+
8
+ jobs:
9
+ build-and-publish:
10
+ runs-on: ubuntu-latest
11
+ environment:
12
+ name: pypi
13
+ url: https://pypi.org/p/approvalui
14
+ permissions:
15
+ contents: write
16
+ id-token: write
17
+ steps:
18
+ - uses: actions/checkout@v4
19
+
20
+ - name: Set up Python
21
+ uses: actions/setup-python@v5
22
+ with:
23
+ python-version: "3.12"
24
+
25
+ - name: Install build tools
26
+ run: |
27
+ python -m pip install --upgrade pip
28
+ pip install build
29
+
30
+ - name: Build distributions
31
+ run: python -m build
32
+
33
+ - name: Check for PyPI token
34
+ id: pypi
35
+ env:
36
+ PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }}
37
+ run: |
38
+ if [ -n "$PYPI_TOKEN" ]; then
39
+ echo "has_token=true" >> "$GITHUB_OUTPUT"
40
+ else
41
+ echo "has_token=false" >> "$GITHUB_OUTPUT"
42
+ fi
43
+
44
+ - name: Publish to PyPI
45
+ if: steps.pypi.outputs.has_token == 'true'
46
+ uses: pypa/gh-action-pypi-publish@release/v1
47
+ with:
48
+ password: ${{ secrets.PYPI_TOKEN }}
@@ -0,0 +1,47 @@
1
+ # macOS
2
+ .DS_Store
3
+
4
+ # Python
5
+ __pycache__/
6
+ *.py[cod]
7
+ *$py.class
8
+ *.so
9
+ .Python
10
+ build/
11
+ develop-eggs/
12
+ dist/
13
+ downloads/
14
+ eggs/
15
+ .eggs/
16
+ lib/
17
+ lib64/
18
+ parts/
19
+ sdist/
20
+ var/
21
+ wheels/
22
+ *.egg-info/
23
+ .installed.cfg
24
+ *.egg
25
+ MANIFEST
26
+
27
+ # Virtual environments
28
+ .env
29
+ .venv
30
+ env/
31
+ venv/
32
+ ENV/
33
+
34
+ # IDEs
35
+ .idea/
36
+ .vscode/
37
+ *.swp
38
+ *.swo
39
+ *~
40
+
41
+ # pytest
42
+ .pytest_cache/
43
+ .coverage
44
+ htmlcov/
45
+
46
+ # Generated example output (kept in repo for demos)
47
+ # example/approval.html
@@ -0,0 +1,29 @@
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](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [0.1.1] - 2026-06-17
11
+
12
+ ### Added
13
+
14
+ - GitHub Pages docs site with demo GIF and agent examples.
15
+ - PyPI publishing via GitHub Actions.
16
+
17
+ ## [0.1.0] - 2026-06-15
18
+
19
+ ### Added
20
+
21
+ - Initial release: `agent-ui-approval` CLI that renders a self-contained HTML approval page from a JSON spec.
22
+ - Approve/reject per item with optional comments.
23
+ - Generate and copy structured review text.
24
+ - Example spec and generated page in `example/`.
25
+ - Floom `SKILL.md` for agent integration.
26
+
27
+ [Unreleased]: https://github.com/floomhq/approvalui/compare/v0.1.1...HEAD
28
+ [0.1.1]: https://github.com/floomhq/approvalui/compare/v0.1.0...v0.1.1
29
+ [0.1.0]: https://github.com/floomhq/approvalui/releases/tag/v0.1.0
@@ -0,0 +1,25 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.
6
+
7
+ ## Our Standards
8
+
9
+ Examples of behavior that contributes to a positive environment:
10
+
11
+ - Being respectful of differing viewpoints and experiences.
12
+ - Giving and gracefully accepting constructive feedback.
13
+ - Focusing on what is best for the community and users.
14
+
15
+ Examples of unacceptable behavior:
16
+
17
+ - Trolling, insulting or derogatory comments, and personal or political attacks.
18
+ - Public or private harassment.
19
+ - Publishing others' private information without permission.
20
+
21
+ ## Enforcement
22
+
23
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the maintainers at **security@floom.dev**. All complaints will be reviewed and investigated promptly.
24
+
25
+ This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org), version 2.1.
@@ -0,0 +1,41 @@
1
+ # Contributing
2
+
3
+ Thanks for helping make Agent UI Approval better.
4
+
5
+ ## Quick start
6
+
7
+ 1. Fork the repo and clone your fork.
8
+ 2. Create a virtual environment:
9
+ ```bash
10
+ python3 -m venv .venv
11
+ source .venv/bin/activate
12
+ ```
13
+ 3. Install in editable mode with dev dependencies:
14
+ ```bash
15
+ pip install -e ".[dev]"
16
+ ```
17
+ 4. Run the tests:
18
+ ```bash
19
+ pytest
20
+ ```
21
+
22
+ ## What to contribute
23
+
24
+ - Bug fixes for JSON parsing or HTML generation.
25
+ - Tests for edge cases in the spec format.
26
+ - Documentation improvements.
27
+ - UI/UX improvements to the generated approval page.
28
+
29
+ ## Guidelines
30
+
31
+ - Keep the tool small and focused.
32
+ - Add tests for any new behavior.
33
+ - Update the README if you change the JSON spec or CLI.
34
+ - One logical change per pull request.
35
+
36
+ ## Reporting issues
37
+
38
+ Open an issue with:
39
+ - The command you ran.
40
+ - The input JSON (or a minimal version of it).
41
+ - What you expected vs. what happened.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Agent UI Approval contributors
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.
@@ -0,0 +1,178 @@
1
+ Metadata-Version: 2.4
2
+ Name: approvalui
3
+ Version: 0.1.1
4
+ Summary: Generate a clickable HTML approval page for reviewing UI fixes inside terminal-based AI agents.
5
+ Project-URL: Homepage, https://github.com/floomhq/approvalui
6
+ Project-URL: Repository, https://github.com/floomhq/approvalui
7
+ Project-URL: Issues, https://github.com/floomhq/approvalui/issues
8
+ Project-URL: Changelog, https://github.com/floomhq/approvalui/blob/main/CHANGELOG.md
9
+ Author: Federico de Ponte
10
+ License: MIT License
11
+
12
+ Copyright (c) 2026 Agent UI Approval contributors
13
+
14
+ Permission is hereby granted, free of charge, to any person obtaining a copy
15
+ of this software and associated documentation files (the "Software"), to deal
16
+ in the Software without restriction, including without limitation the rights
17
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
18
+ copies of the Software, and to permit persons to whom the Software is
19
+ furnished to do so, subject to the following conditions:
20
+
21
+ The above copyright notice and this permission notice shall be included in all
22
+ copies or substantial portions of the Software.
23
+
24
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
25
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
26
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
27
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
28
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
29
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
30
+ SOFTWARE.
31
+ License-File: LICENSE
32
+ Keywords: agent,ai,approval,claude,codex,terminal,ui
33
+ Classifier: Development Status :: 3 - Alpha
34
+ Classifier: Intended Audience :: Developers
35
+ Classifier: License :: OSI Approved :: MIT License
36
+ Classifier: Operating System :: OS Independent
37
+ Classifier: Programming Language :: Python :: 3
38
+ Classifier: Programming Language :: Python :: 3.10
39
+ Classifier: Programming Language :: Python :: 3.11
40
+ Classifier: Programming Language :: Python :: 3.12
41
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
42
+ Classifier: Topic :: Utilities
43
+ Requires-Python: >=3.10
44
+ Provides-Extra: dev
45
+ Requires-Dist: mypy>=1.0; extra == 'dev'
46
+ Requires-Dist: pytest>=7.0; extra == 'dev'
47
+ Requires-Dist: ruff>=0.4.0; extra == 'dev'
48
+ Description-Content-Type: text/markdown
49
+
50
+ # ApprovalUI
51
+
52
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
53
+ [![Python 3.10+](https://img.shields.io/badge/Python-3.10%2B-blue.svg)](pyproject.toml)
54
+ [![Tests](https://github.com/floomhq/approvalui/actions/workflows/ci.yml/badge.svg)](https://github.com/floomhq/approvalui/actions)
55
+ [![PyPI](https://img.shields.io/pypi/v/approvalui.svg)](https://pypi.org/project/approvalui/)
56
+
57
+ A tiny open-source loop for reviewing UI fixes inside terminal-based AI agents.
58
+
59
+ Terminal agents are great for code. They are bad at UI feedback, because UI feedback needs eyes, not paragraphs.
60
+
61
+ ApprovalUI renders a clickable HTML approval page from a simple JSON spec. You open it in a browser, tick approve or reject per item, generate a review, and paste it back into the agent.
62
+
63
+ Binary signal. Screenshot attached. No drift.
64
+
65
+ ![ApprovalUI demo](docs/assets/approvalui-demo.gif)
66
+
67
+ ---
68
+
69
+ ## Why
70
+
71
+ When you iterate on frontend with a terminal agent, the feedback loop is verbal:
72
+
73
+ > “The divider looks weird — can you make it full height?”
74
+
75
+ The agent reads text, not pixels. You end up describing the same fix five times.
76
+
77
+ ApprovalUI short-circuits that loop. The agent writes a structured spec of the fixes, you review them visually, and the page gives you a structured text block to paste back.
78
+
79
+ Works with Claude Code, Codex, Kimi, or any terminal agent that can write JSON and open a browser.
80
+
81
+ ---
82
+
83
+ ## How it works
84
+
85
+ 1. The agent writes a JSON spec describing each UI fix: title, issue number, screenshot, root cause.
86
+ 2. `approvalui` turns the spec into a self-contained HTML page.
87
+ 3. You open the page, review each item, tick **Approve** or **Reject**, add comments.
88
+ 4. Click **Generate review** to get a structured text block you paste back into the agent.
89
+
90
+ ---
91
+
92
+ ## Install
93
+
94
+ ```bash
95
+ pip install approvalui
96
+ ```
97
+
98
+ Or clone and install in editable mode:
99
+
100
+ ```bash
101
+ git clone https://github.com/floomhq/approvalui.git
102
+ cd approvalui
103
+ pip install -e ".[dev]"
104
+ ```
105
+
106
+ ---
107
+
108
+ ## Quick start
109
+
110
+ ```bash
111
+ approvalui example/fixes.json example/approval.html
112
+ open example/approval.html
113
+ ```
114
+
115
+ Tick approve or reject, add a comment, and click **Generate review**.
116
+
117
+ ---
118
+
119
+ ## JSON spec format
120
+
121
+ ```json
122
+ {
123
+ "title": "Workeros — Fix Approval",
124
+ "instructions": "Tick the ones you approve, click Generate review, paste it back to me.",
125
+ "items": [
126
+ {
127
+ "id": 1218,
128
+ "title": "Brain split-view divider now runs FULL HEIGHT to the bottom",
129
+ "status": "pending",
130
+ "root_cause": "wrapper used min-h-full so Collection height:100% could not resolve",
131
+ "screenshot": "screenshot.svg"
132
+ }
133
+ ]
134
+ }
135
+ ```
136
+
137
+ Only `id` and `title` are required. `root_cause`, `screenshot`, and `instructions` are optional.
138
+
139
+ ---
140
+
141
+ ## Generated review format
142
+
143
+ ```text
144
+ [APPROVE] #1218 — Brain split-view divider now runs FULL HEIGHT to the bottom
145
+ [REJECT] #1219 — Sidebar scrolls horizontally on mobile — comment: still broken on iPhone SE
146
+ ```
147
+
148
+ ---
149
+
150
+ ## Documentation
151
+
152
+ - [Docs site](https://floomhq.github.io/approvalui/)
153
+ - [Architecture](docs/architecture.md)
154
+ - [Advanced usage](docs/advanced.md)
155
+ - [Troubleshooting](docs/troubleshooting.md)
156
+ - [Claude Code example](docs/examples/claude.md)
157
+ - [Codex example](docs/examples/codex.md)
158
+ - [Kimi example](docs/examples/kimi.md)
159
+
160
+ ---
161
+
162
+ ## Files
163
+
164
+ - `src/approvalui/` — the Python package.
165
+ - `example/` — sample spec, screenshot placeholder, and generated page.
166
+ - `SKILL.md` — Floom skill instructions for agent integration.
167
+
168
+ ---
169
+
170
+ ## Contributing
171
+
172
+ See [CONTRIBUTING.md](CONTRIBUTING.md).
173
+
174
+ ---
175
+
176
+ ## License
177
+
178
+ MIT. See [LICENSE](LICENSE).
@@ -0,0 +1,129 @@
1
+ # ApprovalUI
2
+
3
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
4
+ [![Python 3.10+](https://img.shields.io/badge/Python-3.10%2B-blue.svg)](pyproject.toml)
5
+ [![Tests](https://github.com/floomhq/approvalui/actions/workflows/ci.yml/badge.svg)](https://github.com/floomhq/approvalui/actions)
6
+ [![PyPI](https://img.shields.io/pypi/v/approvalui.svg)](https://pypi.org/project/approvalui/)
7
+
8
+ A tiny open-source loop for reviewing UI fixes inside terminal-based AI agents.
9
+
10
+ Terminal agents are great for code. They are bad at UI feedback, because UI feedback needs eyes, not paragraphs.
11
+
12
+ ApprovalUI renders a clickable HTML approval page from a simple JSON spec. You open it in a browser, tick approve or reject per item, generate a review, and paste it back into the agent.
13
+
14
+ Binary signal. Screenshot attached. No drift.
15
+
16
+ ![ApprovalUI demo](docs/assets/approvalui-demo.gif)
17
+
18
+ ---
19
+
20
+ ## Why
21
+
22
+ When you iterate on frontend with a terminal agent, the feedback loop is verbal:
23
+
24
+ > “The divider looks weird — can you make it full height?”
25
+
26
+ The agent reads text, not pixels. You end up describing the same fix five times.
27
+
28
+ ApprovalUI short-circuits that loop. The agent writes a structured spec of the fixes, you review them visually, and the page gives you a structured text block to paste back.
29
+
30
+ Works with Claude Code, Codex, Kimi, or any terminal agent that can write JSON and open a browser.
31
+
32
+ ---
33
+
34
+ ## How it works
35
+
36
+ 1. The agent writes a JSON spec describing each UI fix: title, issue number, screenshot, root cause.
37
+ 2. `approvalui` turns the spec into a self-contained HTML page.
38
+ 3. You open the page, review each item, tick **Approve** or **Reject**, add comments.
39
+ 4. Click **Generate review** to get a structured text block you paste back into the agent.
40
+
41
+ ---
42
+
43
+ ## Install
44
+
45
+ ```bash
46
+ pip install approvalui
47
+ ```
48
+
49
+ Or clone and install in editable mode:
50
+
51
+ ```bash
52
+ git clone https://github.com/floomhq/approvalui.git
53
+ cd approvalui
54
+ pip install -e ".[dev]"
55
+ ```
56
+
57
+ ---
58
+
59
+ ## Quick start
60
+
61
+ ```bash
62
+ approvalui example/fixes.json example/approval.html
63
+ open example/approval.html
64
+ ```
65
+
66
+ Tick approve or reject, add a comment, and click **Generate review**.
67
+
68
+ ---
69
+
70
+ ## JSON spec format
71
+
72
+ ```json
73
+ {
74
+ "title": "Workeros — Fix Approval",
75
+ "instructions": "Tick the ones you approve, click Generate review, paste it back to me.",
76
+ "items": [
77
+ {
78
+ "id": 1218,
79
+ "title": "Brain split-view divider now runs FULL HEIGHT to the bottom",
80
+ "status": "pending",
81
+ "root_cause": "wrapper used min-h-full so Collection height:100% could not resolve",
82
+ "screenshot": "screenshot.svg"
83
+ }
84
+ ]
85
+ }
86
+ ```
87
+
88
+ Only `id` and `title` are required. `root_cause`, `screenshot`, and `instructions` are optional.
89
+
90
+ ---
91
+
92
+ ## Generated review format
93
+
94
+ ```text
95
+ [APPROVE] #1218 — Brain split-view divider now runs FULL HEIGHT to the bottom
96
+ [REJECT] #1219 — Sidebar scrolls horizontally on mobile — comment: still broken on iPhone SE
97
+ ```
98
+
99
+ ---
100
+
101
+ ## Documentation
102
+
103
+ - [Docs site](https://floomhq.github.io/approvalui/)
104
+ - [Architecture](docs/architecture.md)
105
+ - [Advanced usage](docs/advanced.md)
106
+ - [Troubleshooting](docs/troubleshooting.md)
107
+ - [Claude Code example](docs/examples/claude.md)
108
+ - [Codex example](docs/examples/codex.md)
109
+ - [Kimi example](docs/examples/kimi.md)
110
+
111
+ ---
112
+
113
+ ## Files
114
+
115
+ - `src/approvalui/` — the Python package.
116
+ - `example/` — sample spec, screenshot placeholder, and generated page.
117
+ - `SKILL.md` — Floom skill instructions for agent integration.
118
+
119
+ ---
120
+
121
+ ## Contributing
122
+
123
+ See [CONTRIBUTING.md](CONTRIBUTING.md).
124
+
125
+ ---
126
+
127
+ ## License
128
+
129
+ MIT. See [LICENSE](LICENSE).
@@ -0,0 +1,19 @@
1
+ # Security Policy
2
+
3
+ ## Supported versions
4
+
5
+ Only the latest release on the `main` branch is actively supported with security updates.
6
+
7
+ | Version | Supported |
8
+ | ------- | ------------------ |
9
+ | 0.1.x | :white_check_mark: |
10
+
11
+ ## Reporting a vulnerability
12
+
13
+ If you discover a security issue, please email **security@floom.dev** with:
14
+
15
+ - A description of the vulnerability.
16
+ - Steps to reproduce it.
17
+ - The affected version or commit.
18
+
19
+ We will respond within 5 business days and coordinate a fix and disclosure.