superboard 0.1.0__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.
- superboard-0.1.0/.github/workflows/leak-scan.yml +31 -0
- superboard-0.1.0/.github/workflows/macos-smoke.yml +75 -0
- superboard-0.1.0/.github/workflows/publish-to-pypi.yml +98 -0
- superboard-0.1.0/.gitignore +25 -0
- superboard-0.1.0/LICENSE +21 -0
- superboard-0.1.0/PITCH.md +9 -0
- superboard-0.1.0/PKG-INFO +142 -0
- superboard-0.1.0/README.md +122 -0
- superboard-0.1.0/RELEASES.md +21 -0
- superboard-0.1.0/RELEASING.md +87 -0
- superboard-0.1.0/SECURITY.md +14 -0
- superboard-0.1.0/SUPPORT.md +10 -0
- superboard-0.1.0/docs/DEVELOPMENT.md +89 -0
- superboard-0.1.0/docs/USING-SUPERBOARD.md +187 -0
- superboard-0.1.0/docs/assets/superboard-hero.png +0 -0
- superboard-0.1.0/pyproject.toml +45 -0
- superboard-0.1.0/sandbox/inbox/board.md +55 -0
- superboard-0.1.0/scripts/hooks/pre-commit +20 -0
- superboard-0.1.0/scripts/hooks/pre-push +58 -0
- superboard-0.1.0/scripts/install-hooks.sh +30 -0
- superboard-0.1.0/scripts/leak_scan.py +255 -0
- superboard-0.1.0/scripts/record-installed-e2e.py +203 -0
- superboard-0.1.0/scripts/sandbox.sh +9 -0
- superboard-0.1.0/scripts/smoke-installed.sh +124 -0
- superboard-0.1.0/scripts/smoke-local.sh +32 -0
- superboard-0.1.0/scripts/testrig.sh +184 -0
- superboard-0.1.0/superboard/ARCHITEKTUR.md +221 -0
- superboard-0.1.0/superboard/CHANGELOG.md +405 -0
- superboard-0.1.0/superboard/__init__.py +6 -0
- superboard-0.1.0/superboard/__main__.py +225 -0
- superboard-0.1.0/superboard/actions.json +4 -0
- superboard-0.1.0/superboard/board.config.example.json +18 -0
- superboard-0.1.0/superboard/board_integrity.py +159 -0
- superboard-0.1.0/superboard/board_lint.py +307 -0
- superboard-0.1.0/superboard/board_ls.py +120 -0
- superboard-0.1.0/superboard/board_write.py +249 -0
- superboard-0.1.0/superboard/bump.py +248 -0
- superboard-0.1.0/superboard/claude_identity.py +86 -0
- superboard-0.1.0/superboard/config.py +92 -0
- superboard-0.1.0/superboard/conftest.py +87 -0
- superboard-0.1.0/superboard/contract.py +190 -0
- superboard-0.1.0/superboard/dev_radar.py +642 -0
- superboard-0.1.0/superboard/gc_runner.py +2475 -0
- superboard-0.1.0/superboard/git_state.py +83 -0
- superboard-0.1.0/superboard/guard_hook.py +174 -0
- superboard-0.1.0/superboard/icon.icns +0 -0
- superboard-0.1.0/superboard/icon.png +0 -0
- superboard-0.1.0/superboard/index.html +8248 -0
- superboard-0.1.0/superboard/make-icon.py +118 -0
- superboard-0.1.0/superboard/markers.py +59 -0
- superboard-0.1.0/superboard/migrate_diet.py +117 -0
- superboard-0.1.0/superboard/onboarding-showcase.html +32 -0
- superboard-0.1.0/superboard/onboarding.py +56 -0
- superboard-0.1.0/superboard/paths.py +58 -0
- superboard-0.1.0/superboard/pytest.ini +32 -0
- superboard-0.1.0/superboard/radar_watch.py +334 -0
- superboard-0.1.0/superboard/receipt.py +267 -0
- superboard-0.1.0/superboard/receipt_hook.py +60 -0
- superboard-0.1.0/superboard/registries.py +168 -0
- superboard-0.1.0/superboard/retro_scan.py +675 -0
- superboard-0.1.0/superboard/rituals.json +4 -0
- superboard-0.1.0/superboard/server.py +5194 -0
- superboard-0.1.0/superboard/sidecar.py +128 -0
- superboard-0.1.0/superboard/superboard-skill.md +118 -0
- superboard-0.1.0/superboard/sweep.py +620 -0
- superboard-0.1.0/superboard/terminal.py +336 -0
- superboard-0.1.0/superboard/test_board_integrity.py +106 -0
- superboard-0.1.0/superboard/test_board_lint.py +240 -0
- superboard-0.1.0/superboard/test_board_ls.py +138 -0
- superboard-0.1.0/superboard/test_board_write.py +92 -0
- superboard-0.1.0/superboard/test_bootstrap.py +240 -0
- superboard-0.1.0/superboard/test_bump.py +63 -0
- superboard-0.1.0/superboard/test_cache_consistency.py +386 -0
- superboard-0.1.0/superboard/test_codex_runner.py +542 -0
- superboard-0.1.0/superboard/test_english_product_text.py +198 -0
- superboard-0.1.0/superboard/test_extensions.py +77 -0
- superboard-0.1.0/superboard/test_first_run.py +295 -0
- superboard-0.1.0/superboard/test_guard_hook.py +143 -0
- superboard-0.1.0/superboard/test_leak_scan.py +52 -0
- superboard-0.1.0/superboard/test_make_icon.py +81 -0
- superboard-0.1.0/superboard/test_onboarding_close.py +77 -0
- superboard-0.1.0/superboard/test_paths.py +212 -0
- superboard-0.1.0/superboard/test_pixel_language.py +99 -0
- superboard-0.1.0/superboard/test_radar_watch.py +152 -0
- superboard-0.1.0/superboard/test_registries.py +97 -0
- superboard-0.1.0/superboard/test_retro_scan.py +433 -0
- superboard-0.1.0/superboard/test_server.py +5675 -0
- superboard-0.1.0/superboard/test_terminal.py +310 -0
- superboard-0.1.0/superboard/test_thread_search.py +264 -0
- superboard-0.1.0/superboard/test_ui_smoke.py +307 -0
- superboard-0.1.0/superboard/test_usage_summary.py +83 -0
- superboard-0.1.0/superboard/test_workflow_profile.py +79 -0
- superboard-0.1.0/superboard/thread_search.py +675 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# The backstop, not the gate.
|
|
2
|
+
#
|
|
3
|
+
# scripts/hooks/pre-push is what actually prevents a leak — it runs before the
|
|
4
|
+
# commits leave the machine. This runs after they arrive, so it cannot un-publish
|
|
5
|
+
# anything. What it buys is the case the hook cannot cover: a push from a clone
|
|
6
|
+
# where nobody ran install-hooks.sh, a --no-verify, a web edit, a contributor's
|
|
7
|
+
# fork. It is the smoke detector; the hook is not leaving the stove on.
|
|
8
|
+
#
|
|
9
|
+
# It scans the full history of the pushed ref, not just the tip, because that is
|
|
10
|
+
# what a clone can read — hence fetch-depth: 0. A shallow checkout would make the
|
|
11
|
+
# whole job say "clean" for the wrong reason.
|
|
12
|
+
name: leak scan
|
|
13
|
+
|
|
14
|
+
on:
|
|
15
|
+
push:
|
|
16
|
+
pull_request:
|
|
17
|
+
|
|
18
|
+
jobs:
|
|
19
|
+
leak-scan:
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
steps:
|
|
22
|
+
- uses: actions/checkout@v4
|
|
23
|
+
with:
|
|
24
|
+
fetch-depth: 0 # full history — the surface a clone actually sees
|
|
25
|
+
- uses: actions/setup-python@v5
|
|
26
|
+
with:
|
|
27
|
+
python-version: '3.13'
|
|
28
|
+
- name: working tree
|
|
29
|
+
run: python3 scripts/leak_scan.py
|
|
30
|
+
- name: history
|
|
31
|
+
run: python3 scripts/leak_scan.py --history HEAD
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
name: clean macOS smoke test
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
pull_request:
|
|
6
|
+
|
|
7
|
+
permissions:
|
|
8
|
+
contents: read
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
clean-macos:
|
|
12
|
+
name: macOS / Python ${{ matrix.python-version }}
|
|
13
|
+
runs-on: macos-latest
|
|
14
|
+
strategy:
|
|
15
|
+
fail-fast: false
|
|
16
|
+
matrix:
|
|
17
|
+
python-version: ["3.10", "3.13"]
|
|
18
|
+
|
|
19
|
+
steps:
|
|
20
|
+
- uses: actions/checkout@v4
|
|
21
|
+
|
|
22
|
+
- uses: actions/setup-python@v5
|
|
23
|
+
with:
|
|
24
|
+
python-version: ${{ matrix.python-version }}
|
|
25
|
+
|
|
26
|
+
- name: Build and install the wheel
|
|
27
|
+
shell: bash
|
|
28
|
+
run: |
|
|
29
|
+
set -euo pipefail
|
|
30
|
+
python -m pip install --upgrade pip
|
|
31
|
+
rm -rf dist
|
|
32
|
+
python -m pip wheel . --wheel-dir dist
|
|
33
|
+
test "$(ls dist/superboard-*.whl | wc -l)" -eq 1 || {
|
|
34
|
+
echo "::error::dist/ holds more than one wheel — cannot tell which is under test"
|
|
35
|
+
ls -la dist; exit 1
|
|
36
|
+
}
|
|
37
|
+
git rev-parse HEAD > dist/BUILD_SHA
|
|
38
|
+
python -m pip install --force-reinstall dist/superboard-*.whl
|
|
39
|
+
|
|
40
|
+
- name: Exercise a clean first start
|
|
41
|
+
shell: bash
|
|
42
|
+
env:
|
|
43
|
+
SB_SMOKE_ROOT: ${{ runner.temp }}
|
|
44
|
+
SB_SMOKE_LABEL: python-${{ matrix.python-version }}
|
|
45
|
+
run: |
|
|
46
|
+
set -euo pipefail
|
|
47
|
+
SB_SMOKE_PYTHON="$(command -v python)" scripts/smoke-installed.sh
|
|
48
|
+
|
|
49
|
+
- name: Record visible end-to-end proof
|
|
50
|
+
if: matrix.python-version == '3.13'
|
|
51
|
+
shell: bash
|
|
52
|
+
run: |
|
|
53
|
+
set -euo pipefail
|
|
54
|
+
python -m pip install playwright
|
|
55
|
+
python -m playwright install chromium
|
|
56
|
+
python scripts/record-installed-e2e.py --output evidence
|
|
57
|
+
|
|
58
|
+
- name: Upload visible proof
|
|
59
|
+
if: always() && matrix.python-version == '3.13'
|
|
60
|
+
uses: actions/upload-artifact@v4
|
|
61
|
+
with:
|
|
62
|
+
name: macos-visible-e2e-python-${{ matrix.python-version }}
|
|
63
|
+
path: evidence/
|
|
64
|
+
retention-days: 14
|
|
65
|
+
if-no-files-found: error
|
|
66
|
+
|
|
67
|
+
- name: Upload diagnostics on failure
|
|
68
|
+
if: failure()
|
|
69
|
+
uses: actions/upload-artifact@v4
|
|
70
|
+
with:
|
|
71
|
+
name: macos-smoke-python-${{ matrix.python-version }}
|
|
72
|
+
path: |
|
|
73
|
+
${{ runner.temp }}/superboard-python-${{ matrix.python-version }}.log
|
|
74
|
+
${{ runner.temp }}/superboard-collision-python-${{ matrix.python-version }}.log
|
|
75
|
+
${{ runner.temp }}/quick-capture-python-${{ matrix.python-version }}.json
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
name: publish to PyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*"
|
|
7
|
+
pull_request:
|
|
8
|
+
paths:
|
|
9
|
+
- ".github/workflows/publish-to-pypi.yml"
|
|
10
|
+
- "pyproject.toml"
|
|
11
|
+
- "RELEASES.md"
|
|
12
|
+
- "scripts/smoke-installed.sh"
|
|
13
|
+
- "superboard/**"
|
|
14
|
+
workflow_dispatch:
|
|
15
|
+
|
|
16
|
+
permissions:
|
|
17
|
+
contents: read
|
|
18
|
+
|
|
19
|
+
jobs:
|
|
20
|
+
build-and-smoke:
|
|
21
|
+
runs-on: ubuntu-latest
|
|
22
|
+
steps:
|
|
23
|
+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
24
|
+
with:
|
|
25
|
+
persist-credentials: false
|
|
26
|
+
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
|
|
27
|
+
with:
|
|
28
|
+
python-version: "3.13"
|
|
29
|
+
- name: Verify tag matches package version
|
|
30
|
+
if: startsWith(github.ref, 'refs/tags/v')
|
|
31
|
+
shell: bash
|
|
32
|
+
run: |
|
|
33
|
+
set -euo pipefail
|
|
34
|
+
package_version="$(python -c 'import tomllib; print(tomllib.load(open("pyproject.toml", "rb"))["project"]["version"])')"
|
|
35
|
+
test "${GITHUB_REF_NAME}" = "v${package_version}"
|
|
36
|
+
- name: Build distributions
|
|
37
|
+
run: python -m pip install --upgrade build twine && python -m build
|
|
38
|
+
- name: Check metadata
|
|
39
|
+
run: python -m twine check dist/*
|
|
40
|
+
- name: Install and smoke the exact wheel
|
|
41
|
+
shell: bash
|
|
42
|
+
env:
|
|
43
|
+
SB_SMOKE_ROOT: ${{ runner.temp }}
|
|
44
|
+
SB_SMOKE_LABEL: release
|
|
45
|
+
run: |
|
|
46
|
+
set -euo pipefail
|
|
47
|
+
python -m pip install --force-reinstall dist/superboard-*.whl
|
|
48
|
+
SB_SMOKE_PYTHON="$(command -v python)" scripts/smoke-installed.sh
|
|
49
|
+
- name: Store verified distributions
|
|
50
|
+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
51
|
+
with:
|
|
52
|
+
name: python-package-distributions
|
|
53
|
+
path: dist/
|
|
54
|
+
if-no-files-found: error
|
|
55
|
+
|
|
56
|
+
publish:
|
|
57
|
+
if: startsWith(github.ref, 'refs/tags/v')
|
|
58
|
+
needs: build-and-smoke
|
|
59
|
+
runs-on: ubuntu-latest
|
|
60
|
+
environment:
|
|
61
|
+
name: pypi
|
|
62
|
+
url: https://pypi.org/p/superboard
|
|
63
|
+
permissions:
|
|
64
|
+
id-token: write
|
|
65
|
+
steps:
|
|
66
|
+
- name: Download verified distributions
|
|
67
|
+
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
|
|
68
|
+
with:
|
|
69
|
+
name: python-package-distributions
|
|
70
|
+
path: dist/
|
|
71
|
+
- name: Publish to PyPI
|
|
72
|
+
uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # release/v1
|
|
73
|
+
|
|
74
|
+
github-release:
|
|
75
|
+
if: startsWith(github.ref, 'refs/tags/v')
|
|
76
|
+
needs: publish
|
|
77
|
+
runs-on: ubuntu-latest
|
|
78
|
+
permissions:
|
|
79
|
+
contents: write
|
|
80
|
+
steps:
|
|
81
|
+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
82
|
+
with:
|
|
83
|
+
persist-credentials: false
|
|
84
|
+
- name: Extract curated release notes
|
|
85
|
+
shell: bash
|
|
86
|
+
run: |
|
|
87
|
+
set -euo pipefail
|
|
88
|
+
version="${GITHUB_REF_NAME#v}"
|
|
89
|
+
awk -v heading="## [${version}]" '
|
|
90
|
+
index($0, heading) == 1 { found=1; next }
|
|
91
|
+
found && /^## \[/ { exit }
|
|
92
|
+
found { print }
|
|
93
|
+
' RELEASES.md > release-notes.md
|
|
94
|
+
test -s release-notes.md
|
|
95
|
+
- name: Create GitHub release after PyPI succeeds
|
|
96
|
+
env:
|
|
97
|
+
GH_TOKEN: ${{ github.token }}
|
|
98
|
+
run: gh release create "$GITHUB_REF_NAME" --repo "$GITHUB_REPOSITORY" --verify-tag --notes-file release-notes.md
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
__pycache__/
|
|
2
|
+
*.pyc
|
|
3
|
+
.pytest_cache/
|
|
4
|
+
.ruff_cache/
|
|
5
|
+
# runtime data (never belongs in the repo)
|
|
6
|
+
.superboard/
|
|
7
|
+
sandbox/.data/
|
|
8
|
+
sandbox/inbox/gc-threads/
|
|
9
|
+
sandbox/inbox/gc-receipts/
|
|
10
|
+
sandbox/inbox/board-archive.md
|
|
11
|
+
journal/
|
|
12
|
+
usage-log.jsonl
|
|
13
|
+
git-anchor.json
|
|
14
|
+
killed-runs.jsonl
|
|
15
|
+
killed/
|
|
16
|
+
thread-search.sqlite
|
|
17
|
+
board.config.json
|
|
18
|
+
dist/
|
|
19
|
+
# resolver artefact of `uv run --with …` during testing, not a project lock
|
|
20
|
+
uv.lock
|
|
21
|
+
.testrig/
|
|
22
|
+
# browser profile the UI smoke test creates next to the package
|
|
23
|
+
board-smoke/
|
|
24
|
+
# private leak-scan vocabulary (symlink into a private repo) — never publish
|
|
25
|
+
.leakpatterns
|
superboard-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Benjamin Meindl
|
|
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,9 @@
|
|
|
1
|
+
# Where this goes — the long version
|
|
2
|
+
|
|
3
|
+
Tuesday, 8:40. You sit down to three items — not forty. One is a two-option sheet with a recommendation and the single number that actually moves the decision. One is a draft parked at the exact point where your edits carry the most weight. One is a raw idea, deliberately untouched, because the system has learned that's the kind you want to shape yourself. Next to them, a short reading: two things that moved overnight that you'd genuinely want to see. Everything else was researched, built, filed, or consciously not started — each weighed in the open against priorities you set.
|
|
4
|
+
|
|
5
|
+
This didn't take years of working together. It took weeks. Coaching a great hire into this takes months; here the loop runs on days. There is a real onboarding period — it asks too much at first, you correct constantly, and the correcting is the investment. Then the questions change character: "Before I finish this — you killed a similar idea in March because it competed with the launch for your attention. Still true?"
|
|
6
|
+
|
|
7
|
+
And you can always see what it knows. Everything it has learned about working with you sits in plain files you can open and amend in a text editor. When a better model ships, you point it at your folder. By afternoon it works with you like before, but sharper. Flow doesn't reset.
|
|
8
|
+
|
|
9
|
+
Today, Superboard is a board. Step one of exactly this.
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: superboard
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: A personal task board where every to-do is a standing conversation thread with your agent.
|
|
5
|
+
Project-URL: Homepage, https://github.com/bmeindl/superboard
|
|
6
|
+
Project-URL: Documentation, https://github.com/bmeindl/superboard#readme
|
|
7
|
+
Project-URL: Issues, https://github.com/bmeindl/superboard/issues
|
|
8
|
+
Project-URL: Source, https://github.com/bmeindl/superboard
|
|
9
|
+
Author: Benjamin Meindl
|
|
10
|
+
License-Expression: MIT
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
Keywords: agent,claude,kanban,personal-task-host,todo
|
|
13
|
+
Classifier: Development Status :: 3 - Alpha
|
|
14
|
+
Classifier: Environment :: Web Environment
|
|
15
|
+
Classifier: Intended Audience :: End Users/Desktop
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Topic :: Office/Business :: Scheduling
|
|
18
|
+
Requires-Python: >=3.10
|
|
19
|
+
Description-Content-Type: text/markdown
|
|
20
|
+
|
|
21
|
+
# Superboard
|
|
22
|
+
|
|
23
|
+
**A local to-do board where every card can stay manual or become a standing
|
|
24
|
+
conversation with a coding agent.** Add ordinary work first; delegate research,
|
|
25
|
+
writing or changes when that helps. The underlying state stays in plain files
|
|
26
|
+
you own.
|
|
27
|
+
|
|
28
|
+
[](https://github.com/bmeindl/superboard/actions/workflows/leak-scan.yml)
|
|
29
|
+
|
|
30
|
+

|
|
31
|
+
|
|
32
|
+
```sh
|
|
33
|
+
uvx superboard ~/Superboard
|
|
34
|
+
# then open http://localhost:47822
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Already use Claude Code? Give it the whole setup job:
|
|
38
|
+
|
|
39
|
+
> Use <https://github.com/bmeindl/superboard> as the Superboard package I want.
|
|
40
|
+
> Read its README, explain what you will run, set it up in `~/Superboard`, start
|
|
41
|
+
> it, and open the local board for me. Do not clone the source into my workspace.
|
|
42
|
+
|
|
43
|
+
Claude Code still uses its existing host permissions and may ask before installing
|
|
44
|
+
`uv` or opening an application. The explicit terminal command above remains the
|
|
45
|
+
portable fallback.
|
|
46
|
+
|
|
47
|
+
## The one-minute version
|
|
48
|
+
|
|
49
|
+
1. Open the board. A fresh workspace separates **Getting started** from the empty
|
|
50
|
+
**My to-dos** area where normal work belongs.
|
|
51
|
+
2. Open **1 · Start here · Meet Superboard** and press **▶ Agent**. It opens the
|
|
52
|
+
local introduction when the runner can access your desktop; otherwise it returns
|
|
53
|
+
the local link. It answers questions in that card and tells you when to mark it done.
|
|
54
|
+
3. Use **2 · Set up this workspace**, then **3 · Add your first real to-do**.
|
|
55
|
+
The agent adapts the foundation and puts one genuine card under My to-dos.
|
|
56
|
+
4. The remaining cards each name one outcome—agent/model setup, Cockpit, email
|
|
57
|
+
digest, one routine, Off Duty, night rest or later thread learning—so you can
|
|
58
|
+
complete or skip them independently.
|
|
59
|
+
5. Add more work whenever. `Enter` creates a manual card; `Cmd/Ctrl+Enter` creates it and
|
|
60
|
+
starts the agent.
|
|
61
|
+
6. Finish onboarding. The final card archives the setup threads and removes the
|
|
62
|
+
Getting started category.
|
|
63
|
+
|
|
64
|
+
This is not a five-minute setup, and it does not pretend to be. A board becomes
|
|
65
|
+
genuinely useful over weeks, as your own threads accumulate.
|
|
66
|
+
|
|
67
|
+
There is no settings maze. Topics, actions, rituals, context, and skills are
|
|
68
|
+
workspace files. Ask the agent to change them; inspect the diff whenever you
|
|
69
|
+
want. Optional procedural skills can be copied from a separate catalogue one at
|
|
70
|
+
a time, previewed first, and then customized locally.
|
|
71
|
+
|
|
72
|
+
## What you need
|
|
73
|
+
|
|
74
|
+
- Python 3.10+ and `uv`/`uvx`. The release gates cover macOS and Ubuntu; Windows
|
|
75
|
+
has not been verified and is not supported in this alpha.
|
|
76
|
+
- Claude Code installed and authenticated for the supported default runner.
|
|
77
|
+
- Codex is an experimental macOS runner and uses the CLI bundled with ChatGPT.
|
|
78
|
+
OpenCode is not a supported runner in `0.1.0`.
|
|
79
|
+
- Provider usage: Superboard does not include model access or tokens.
|
|
80
|
+
|
|
81
|
+
The board still opens without an agent CLI, but hand-offs cannot run — and it
|
|
82
|
+
says so: the first screen carries the reason and the ▶ Agent buttons are marked
|
|
83
|
+
rather than silently inert.
|
|
84
|
+
|
|
85
|
+
## What an agent run can do
|
|
86
|
+
|
|
87
|
+
`▶ Agent` starts the selected CLI in auto mode. The run inherits that CLI's host
|
|
88
|
+
access and configured MCP/provider setup; when the task requires it, the agent can
|
|
89
|
+
edit or commit inside the workspace and may propose machine-wide or outside-workspace
|
|
90
|
+
actions. Superboard does not wrap the CLI in a second approval system. Tell the agent
|
|
91
|
+
what is off-limits, ask it to change its local operating rules, or ask for exact
|
|
92
|
+
terminal handoff commands when an interactive step is needed. The files and git diff
|
|
93
|
+
remain the review surface.
|
|
94
|
+
|
|
95
|
+
## Why local files?
|
|
96
|
+
|
|
97
|
+
Superboard has no cloud account, database, or sync service. The board, context,
|
|
98
|
+
and learned working rules stay inspectable and portable inside your workspace.
|
|
99
|
+
Changing agent providers does not mean abandoning what the workspace learned.
|
|
100
|
+
|
|
101
|
+
Each `▶ Agent` starts a fresh CLI process. Continuity comes from a resumable
|
|
102
|
+
provider session plus the durable board thread — not from a hidden Superboard
|
|
103
|
+
memory. A warm provider cache may reduce repeated tokens; a cold cache never
|
|
104
|
+
loses work.
|
|
105
|
+
|
|
106
|
+
## How it works
|
|
107
|
+
|
|
108
|
+
Superboard is the piece that holds your work and coordinates the agents doing it — a personal task host. The **board** is the visible surface — columns, cards, one glance. Each **card** is a task with its own standing thread: the full conversation between you and the agent working it, persistent across weeks. A **runner** executes — it picks up cards you've handed off, works headlessly, and reports back into the thread: results, or a short decision sheet when only you can decide. Underneath: plain local markdown files. No database, no account, no sync. The agent brings the intelligence; the files keep it honest.
|
|
109
|
+
|
|
110
|
+
## The first weeks
|
|
111
|
+
|
|
112
|
+
Superboard doesn't promise one-minute setup. It promises an honest onboarding — the kind you'd give a strong new hire. Week one, it asks too much: it doesn't know your projects, your people, or which decisions are yours alone. You correct it constantly, and the correcting is the investment — every correction lands in plain files it reads next time, and you can open any of them to see exactly what it thinks it knows. A few weeks in, the questions change character: less "what is this?", more "you killed a similar idea in March because it competed for your attention — still true?" And it compounds with what you already have: Superboard runs on top of your existing agent setup, and the more you bring — skills, context, working habits — the faster it gets good. Starting from zero works too; it just makes the first weeks matter more. Tools that promise instant magic tend to plateau fast. Superboard starts slower — and keeps compounding.
|
|
113
|
+
|
|
114
|
+
## Agentic first — it grows, and you grow it
|
|
115
|
+
|
|
116
|
+
The mechanics work on day one: board, runner, standing threads, decision sheets, a working skill set — extracted from a system used daily for months. The personalization is what takes weeks. And nothing about it is finished, by design: there is no feature backlog between you and the tool — when you want the cards to work differently, you don't file a request, you tell your agent to rebuild them. The whole system is plain files and readable code, small enough for an agent to navigate and change, with every change reviewable. From the first week it grows toward you: your skills, your rules, what it has learned about how you decide. Every install grows toward its owner — that divergence is the point, not a side effect. And it flows both ways: when your setup grows something good — a skill, a routine, a sharper way of asking — it's built to flow back through ordinary open-source contribution and become part of everyone's next start. That's open source applied to a tool whose job is to learn.
|
|
117
|
+
|
|
118
|
+
## Where this goes
|
|
119
|
+
|
|
120
|
+
Today, Superboard is a board. The direction is a working morning that starts with three prepared items instead of forty open loops — everything else researched, built, filed, or consciously not started while you were away, each weighed in the open against priorities you set. Questions that get sharper the longer you work together. And because everything it learns lives in inspectable files, changing models doesn't have to mean starting over. That's the target narrative, told honestly as direction — the full version is in [PITCH.md](https://github.com/bmeindl/superboard/blob/v0.1.0/PITCH.md). This board is step one of exactly it.
|
|
121
|
+
|
|
122
|
+
## Start here, then ask the agent
|
|
123
|
+
|
|
124
|
+
The board and its onboarding cards are the primary product documentation. The
|
|
125
|
+
README deliberately stops at orientation; users should not need to study a
|
|
126
|
+
manual before doing useful work.
|
|
127
|
+
|
|
128
|
+
- [Using Superboard](https://github.com/bmeindl/superboard/blob/v0.1.0/docs/USING-SUPERBOARD.md) — installation, workspace files,
|
|
129
|
+
onboarding behavior, customization, and restart rules.
|
|
130
|
+
- [Development and test rigs](https://github.com/bmeindl/superboard/blob/v0.1.0/docs/DEVELOPMENT.md) — sandbox, fresh-wheel test,
|
|
131
|
+
and privacy gates.
|
|
132
|
+
- [Architecture](https://github.com/bmeindl/superboard/blob/v0.1.0/superboard/ARCHITEKTUR.md) — contracts and trust boundaries for
|
|
133
|
+
agents and contributors.
|
|
134
|
+
- [Product direction](https://github.com/bmeindl/superboard/blob/v0.1.0/PITCH.md) · [Support posture](https://github.com/bmeindl/superboard/blob/v0.1.0/SUPPORT.md)
|
|
135
|
+
|
|
136
|
+
Superboard is alpha-stage personal tooling, not a hosted multi-user project
|
|
137
|
+
manager or a supported service. The point is a small, understandable frame that
|
|
138
|
+
your own agent and workspace can grow into.
|
|
139
|
+
|
|
140
|
+
## License
|
|
141
|
+
|
|
142
|
+
MIT — see [LICENSE](https://github.com/bmeindl/superboard/blob/v0.1.0/LICENSE).
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# Superboard
|
|
2
|
+
|
|
3
|
+
**A local to-do board where every card can stay manual or become a standing
|
|
4
|
+
conversation with a coding agent.** Add ordinary work first; delegate research,
|
|
5
|
+
writing or changes when that helps. The underlying state stays in plain files
|
|
6
|
+
you own.
|
|
7
|
+
|
|
8
|
+
[](https://github.com/bmeindl/superboard/actions/workflows/leak-scan.yml)
|
|
9
|
+
|
|
10
|
+

|
|
11
|
+
|
|
12
|
+
```sh
|
|
13
|
+
uvx superboard ~/Superboard
|
|
14
|
+
# then open http://localhost:47822
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Already use Claude Code? Give it the whole setup job:
|
|
18
|
+
|
|
19
|
+
> Use <https://github.com/bmeindl/superboard> as the Superboard package I want.
|
|
20
|
+
> Read its README, explain what you will run, set it up in `~/Superboard`, start
|
|
21
|
+
> it, and open the local board for me. Do not clone the source into my workspace.
|
|
22
|
+
|
|
23
|
+
Claude Code still uses its existing host permissions and may ask before installing
|
|
24
|
+
`uv` or opening an application. The explicit terminal command above remains the
|
|
25
|
+
portable fallback.
|
|
26
|
+
|
|
27
|
+
## The one-minute version
|
|
28
|
+
|
|
29
|
+
1. Open the board. A fresh workspace separates **Getting started** from the empty
|
|
30
|
+
**My to-dos** area where normal work belongs.
|
|
31
|
+
2. Open **1 · Start here · Meet Superboard** and press **▶ Agent**. It opens the
|
|
32
|
+
local introduction when the runner can access your desktop; otherwise it returns
|
|
33
|
+
the local link. It answers questions in that card and tells you when to mark it done.
|
|
34
|
+
3. Use **2 · Set up this workspace**, then **3 · Add your first real to-do**.
|
|
35
|
+
The agent adapts the foundation and puts one genuine card under My to-dos.
|
|
36
|
+
4. The remaining cards each name one outcome—agent/model setup, Cockpit, email
|
|
37
|
+
digest, one routine, Off Duty, night rest or later thread learning—so you can
|
|
38
|
+
complete or skip them independently.
|
|
39
|
+
5. Add more work whenever. `Enter` creates a manual card; `Cmd/Ctrl+Enter` creates it and
|
|
40
|
+
starts the agent.
|
|
41
|
+
6. Finish onboarding. The final card archives the setup threads and removes the
|
|
42
|
+
Getting started category.
|
|
43
|
+
|
|
44
|
+
This is not a five-minute setup, and it does not pretend to be. A board becomes
|
|
45
|
+
genuinely useful over weeks, as your own threads accumulate.
|
|
46
|
+
|
|
47
|
+
There is no settings maze. Topics, actions, rituals, context, and skills are
|
|
48
|
+
workspace files. Ask the agent to change them; inspect the diff whenever you
|
|
49
|
+
want. Optional procedural skills can be copied from a separate catalogue one at
|
|
50
|
+
a time, previewed first, and then customized locally.
|
|
51
|
+
|
|
52
|
+
## What you need
|
|
53
|
+
|
|
54
|
+
- Python 3.10+ and `uv`/`uvx`. The release gates cover macOS and Ubuntu; Windows
|
|
55
|
+
has not been verified and is not supported in this alpha.
|
|
56
|
+
- Claude Code installed and authenticated for the supported default runner.
|
|
57
|
+
- Codex is an experimental macOS runner and uses the CLI bundled with ChatGPT.
|
|
58
|
+
OpenCode is not a supported runner in `0.1.0`.
|
|
59
|
+
- Provider usage: Superboard does not include model access or tokens.
|
|
60
|
+
|
|
61
|
+
The board still opens without an agent CLI, but hand-offs cannot run — and it
|
|
62
|
+
says so: the first screen carries the reason and the ▶ Agent buttons are marked
|
|
63
|
+
rather than silently inert.
|
|
64
|
+
|
|
65
|
+
## What an agent run can do
|
|
66
|
+
|
|
67
|
+
`▶ Agent` starts the selected CLI in auto mode. The run inherits that CLI's host
|
|
68
|
+
access and configured MCP/provider setup; when the task requires it, the agent can
|
|
69
|
+
edit or commit inside the workspace and may propose machine-wide or outside-workspace
|
|
70
|
+
actions. Superboard does not wrap the CLI in a second approval system. Tell the agent
|
|
71
|
+
what is off-limits, ask it to change its local operating rules, or ask for exact
|
|
72
|
+
terminal handoff commands when an interactive step is needed. The files and git diff
|
|
73
|
+
remain the review surface.
|
|
74
|
+
|
|
75
|
+
## Why local files?
|
|
76
|
+
|
|
77
|
+
Superboard has no cloud account, database, or sync service. The board, context,
|
|
78
|
+
and learned working rules stay inspectable and portable inside your workspace.
|
|
79
|
+
Changing agent providers does not mean abandoning what the workspace learned.
|
|
80
|
+
|
|
81
|
+
Each `▶ Agent` starts a fresh CLI process. Continuity comes from a resumable
|
|
82
|
+
provider session plus the durable board thread — not from a hidden Superboard
|
|
83
|
+
memory. A warm provider cache may reduce repeated tokens; a cold cache never
|
|
84
|
+
loses work.
|
|
85
|
+
|
|
86
|
+
## How it works
|
|
87
|
+
|
|
88
|
+
Superboard is the piece that holds your work and coordinates the agents doing it — a personal task host. The **board** is the visible surface — columns, cards, one glance. Each **card** is a task with its own standing thread: the full conversation between you and the agent working it, persistent across weeks. A **runner** executes — it picks up cards you've handed off, works headlessly, and reports back into the thread: results, or a short decision sheet when only you can decide. Underneath: plain local markdown files. No database, no account, no sync. The agent brings the intelligence; the files keep it honest.
|
|
89
|
+
|
|
90
|
+
## The first weeks
|
|
91
|
+
|
|
92
|
+
Superboard doesn't promise one-minute setup. It promises an honest onboarding — the kind you'd give a strong new hire. Week one, it asks too much: it doesn't know your projects, your people, or which decisions are yours alone. You correct it constantly, and the correcting is the investment — every correction lands in plain files it reads next time, and you can open any of them to see exactly what it thinks it knows. A few weeks in, the questions change character: less "what is this?", more "you killed a similar idea in March because it competed for your attention — still true?" And it compounds with what you already have: Superboard runs on top of your existing agent setup, and the more you bring — skills, context, working habits — the faster it gets good. Starting from zero works too; it just makes the first weeks matter more. Tools that promise instant magic tend to plateau fast. Superboard starts slower — and keeps compounding.
|
|
93
|
+
|
|
94
|
+
## Agentic first — it grows, and you grow it
|
|
95
|
+
|
|
96
|
+
The mechanics work on day one: board, runner, standing threads, decision sheets, a working skill set — extracted from a system used daily for months. The personalization is what takes weeks. And nothing about it is finished, by design: there is no feature backlog between you and the tool — when you want the cards to work differently, you don't file a request, you tell your agent to rebuild them. The whole system is plain files and readable code, small enough for an agent to navigate and change, with every change reviewable. From the first week it grows toward you: your skills, your rules, what it has learned about how you decide. Every install grows toward its owner — that divergence is the point, not a side effect. And it flows both ways: when your setup grows something good — a skill, a routine, a sharper way of asking — it's built to flow back through ordinary open-source contribution and become part of everyone's next start. That's open source applied to a tool whose job is to learn.
|
|
97
|
+
|
|
98
|
+
## Where this goes
|
|
99
|
+
|
|
100
|
+
Today, Superboard is a board. The direction is a working morning that starts with three prepared items instead of forty open loops — everything else researched, built, filed, or consciously not started while you were away, each weighed in the open against priorities you set. Questions that get sharper the longer you work together. And because everything it learns lives in inspectable files, changing models doesn't have to mean starting over. That's the target narrative, told honestly as direction — the full version is in [PITCH.md](https://github.com/bmeindl/superboard/blob/v0.1.0/PITCH.md). This board is step one of exactly it.
|
|
101
|
+
|
|
102
|
+
## Start here, then ask the agent
|
|
103
|
+
|
|
104
|
+
The board and its onboarding cards are the primary product documentation. The
|
|
105
|
+
README deliberately stops at orientation; users should not need to study a
|
|
106
|
+
manual before doing useful work.
|
|
107
|
+
|
|
108
|
+
- [Using Superboard](https://github.com/bmeindl/superboard/blob/v0.1.0/docs/USING-SUPERBOARD.md) — installation, workspace files,
|
|
109
|
+
onboarding behavior, customization, and restart rules.
|
|
110
|
+
- [Development and test rigs](https://github.com/bmeindl/superboard/blob/v0.1.0/docs/DEVELOPMENT.md) — sandbox, fresh-wheel test,
|
|
111
|
+
and privacy gates.
|
|
112
|
+
- [Architecture](https://github.com/bmeindl/superboard/blob/v0.1.0/superboard/ARCHITEKTUR.md) — contracts and trust boundaries for
|
|
113
|
+
agents and contributors.
|
|
114
|
+
- [Product direction](https://github.com/bmeindl/superboard/blob/v0.1.0/PITCH.md) · [Support posture](https://github.com/bmeindl/superboard/blob/v0.1.0/SUPPORT.md)
|
|
115
|
+
|
|
116
|
+
Superboard is alpha-stage personal tooling, not a hosted multi-user project
|
|
117
|
+
manager or a supported service. The point is a small, understandable frame that
|
|
118
|
+
your own agent and workspace can grow into.
|
|
119
|
+
|
|
120
|
+
## License
|
|
121
|
+
|
|
122
|
+
MIT — see [LICENSE](https://github.com/bmeindl/superboard/blob/v0.1.0/LICENSE).
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Releases
|
|
2
|
+
|
|
3
|
+
Public version history of Superboard. The public number (`pyproject.toml`, what PyPI
|
|
4
|
+
and `uvx` show) moves only at deliberate releases and follows the usual reading:
|
|
5
|
+
patch = fixes, minor = something new, major = something you should read about
|
|
6
|
+
before upgrading. `Build` names the internal board stand that ships inside a release
|
|
7
|
+
— that number counts every change by size and is not a stability promise.
|
|
8
|
+
`CHANGELOG.md` inside the package is that internal build history.
|
|
9
|
+
|
|
10
|
+
## [0.1.0] — 2026-08-26 · first public alpha
|
|
11
|
+
|
|
12
|
+
- A local Now / Next / Backlog board where an ordinary to-do can stay manual or
|
|
13
|
+
become a standing conversation with an agent.
|
|
14
|
+
- Thirteen concrete onboarding cards sit separately from an empty My to-dos area;
|
|
15
|
+
the agent-led introduction, first genuine task, runner setup, help, Cockpit
|
|
16
|
+
actions, and optional routines each have one clear outcome.
|
|
17
|
+
- Claude Code is the supported default runner; Codex on macOS is experimental.
|
|
18
|
+
- Plain Markdown and JSON remain the source of truth—no hosted account, database,
|
|
19
|
+
or bundled model access.
|
|
20
|
+
- Release gates cover the exact wheel, macOS and Ubuntu smoke tests, a real-agent
|
|
21
|
+
confirmation journey, and private-vocabulary leak scans.
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# Releasing Superboard
|
|
2
|
+
|
|
3
|
+
**This is guidance, not law — a living document.** It collects what we currently
|
|
4
|
+
think a good release looks like: the technical steps and the product checks around
|
|
5
|
+
them. Read it before a release, pick what applies with judgment, skip what does not
|
|
6
|
+
(say so in the release notes' working thread), and — the one real rule — **leave it
|
|
7
|
+
better than you found it**: every release that teaches something edits this file in
|
|
8
|
+
the same commit. The owner takes the calls marked **OWNER**.
|
|
9
|
+
|
|
10
|
+
Why guidance: a public release is a *promise*, not a version bump. The internal board
|
|
11
|
+
counts every change by size (`Build 6.x`, see `superboard/CHANGELOG.md`); the public
|
|
12
|
+
number (`pyproject.toml`, `RELEASES.md`) moves only when we consciously say "this is
|
|
13
|
+
what a stranger gets now".
|
|
14
|
+
|
|
15
|
+
## 0 · Decide that a release is due
|
|
16
|
+
|
|
17
|
+
- **OWNER** picks the number and the step: patch = fixes only · minor = something new
|
|
18
|
+
a user notices · major = something to read before upgrading.
|
|
19
|
+
- Write down, in one sentence, what this release is *for* — it becomes the first line
|
|
20
|
+
of the release notes.
|
|
21
|
+
|
|
22
|
+
## 1 · Bring the public projection up to date
|
|
23
|
+
|
|
24
|
+
- From the origin board, run its port status (`port_to_superboard.py`): classify every
|
|
25
|
+
reported file as launch-relevant, intentionally divergent, superseded, or deferred.
|
|
26
|
+
Port launch-relevant changes and record the rest; a raw count is not a release gate.
|
|
27
|
+
- Compare both build numbers before `sync-version`. Run it only when the origin is
|
|
28
|
+
actually ahead; never use it to downgrade a candidate with independent fixes.
|
|
29
|
+
- Run `scripts/leak_scan.py --history` on purpose; the hooks are a backstop.
|
|
30
|
+
|
|
31
|
+
## 2 · Test what a stranger actually gets
|
|
32
|
+
|
|
33
|
+
- Fresh install from a clean environment using the *built artifact*, not the source
|
|
34
|
+
tree: `scripts/testrig.sh fresh`.
|
|
35
|
+
- Installed smoke: `scripts/smoke-installed.sh`, plus green macOS smoke on the release
|
|
36
|
+
commit.
|
|
37
|
+
- **E2E by hand:** empty workspace → first run → first item → agent reply →
|
|
38
|
+
thread → archive. `scripts/record-installed-e2e.py` records the proof.
|
|
39
|
+
- Every supported OS/Python claimed in the README gets at least the smoke; remove
|
|
40
|
+
untested claims.
|
|
41
|
+
|
|
42
|
+
## 3 · Product surface — does the outside still match the inside?
|
|
43
|
+
|
|
44
|
+
- Read the README top to bottom as a stranger and run every command verbatim.
|
|
45
|
+
- Compare screenshots and demos with the E2E proof. Changed UI means re-recording.
|
|
46
|
+
- Recheck `PITCH.md`, `SUPPORT.md`, package metadata, and the sandbox.
|
|
47
|
+
|
|
48
|
+
## 4 · Write the release
|
|
49
|
+
|
|
50
|
+
- From the origin board: `port_to_superboard.py release <x.y.z>` sets the public
|
|
51
|
+
version and prepares the `RELEASES.md` entry.
|
|
52
|
+
- Curate the notes into 3–8 user-facing lines; delete the raw internal headings.
|
|
53
|
+
- **OWNER** reads the notes and README diff. This is the go/no-go.
|
|
54
|
+
|
|
55
|
+
## 5 · Publish
|
|
56
|
+
|
|
57
|
+
- Before the first release, create the GitHub `pypi` environment with required manual
|
|
58
|
+
approval and register a PyPI pending publisher for the GitHub owner reported by
|
|
59
|
+
`gh repo view --json nameWithOwner`, repository `superboard`, workflow
|
|
60
|
+
`publish-to-pypi.yml`, environment `pypi`.
|
|
61
|
+
- Commit (`chore(release): v<x.y.z>`), tag `v<x.y.z>`, and push only after the explicit
|
|
62
|
+
go. Never push directly to main.
|
|
63
|
+
- Use a public no-reply identity for commit and annotated-tag metadata. The history
|
|
64
|
+
leak gate scans commit objects as well as blobs; inspect its author/committer output.
|
|
65
|
+
- The tag workflow builds, checks, installs, smokes, and publishes the same artifact via
|
|
66
|
+
Trusted Publishing. Never use a local PyPI token.
|
|
67
|
+
- Verify from outside: clean environment, `uvx superboard --version`, first run,
|
|
68
|
+
PyPI page, GitHub release page, README images and links.
|
|
69
|
+
|
|
70
|
+
## 6 · After
|
|
71
|
+
|
|
72
|
+
- Announce through the launch channels selected for this release.
|
|
73
|
+
- Watch the first days for issues, install failures, and CI failures.
|
|
74
|
+
- Put anything learned about the ritual back into this file.
|
|
75
|
+
|
|
76
|
+
## Hard lines
|
|
77
|
+
|
|
78
|
+
No release with an unresolved launch-relevant port item, a red installed smoke, or a
|
|
79
|
+
README claim nobody verified this round.
|
|
80
|
+
|
|
81
|
+
## Changelog of this document
|
|
82
|
+
|
|
83
|
+
- 2026-08-25 · first version; deliberately expected to evolve after the first release.
|
|
84
|
+
- 2026-08-26 · added the concrete pending-publisher identity, approval environment,
|
|
85
|
+
and same-artifact build/smoke/publish contract.
|
|
86
|
+
- 2026-08-26 · added commit-metadata privacy and curated GitHub release notes after
|
|
87
|
+
the final launch challenge found that clean blobs were not the whole public surface.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Security policy
|
|
2
|
+
|
|
3
|
+
Superboard is an alpha desktop tool that runs local agent CLIs with the permissions
|
|
4
|
+
of the account and machine that start it. Review the workspace instructions before
|
|
5
|
+
using auto mode, and do not put secrets in `board.md` or a public issue.
|
|
6
|
+
|
|
7
|
+
## Reporting a vulnerability
|
|
8
|
+
|
|
9
|
+
Please use the repository's **Security → Advisories → Report a vulnerability** flow on GitHub.
|
|
10
|
+
Include the affected version, reproduction steps, and the impact. Do not open a public
|
|
11
|
+
issue until the report has been assessed.
|
|
12
|
+
|
|
13
|
+
Security reports for the current `0.1.x` alpha line are accepted. Fix timelines depend
|
|
14
|
+
on severity; there is no separate long-term-support branch yet.
|