xed-tui 1.0.24__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.
- xed_tui-1.0.24/.github/FUNDING.yml +3 -0
- xed_tui-1.0.24/.github/ISSUE_TEMPLATE/bug_report.md +31 -0
- xed_tui-1.0.24/.github/ISSUE_TEMPLATE/feature_request.md +23 -0
- xed_tui-1.0.24/.github/ISSUE_TEMPLATE/question.md +13 -0
- xed_tui-1.0.24/.github/workflows/build-deb.yml +52 -0
- xed_tui-1.0.24/.github/workflows/ci.yml +40 -0
- xed_tui-1.0.24/.github/workflows/publish-npm.yml +42 -0
- xed_tui-1.0.24/.github/workflows/publish-pypi.yml +26 -0
- xed_tui-1.0.24/.github/workflows/update-homebrew.yml +53 -0
- xed_tui-1.0.24/.gitignore +25 -0
- xed_tui-1.0.24/AGENTS.md +104 -0
- xed_tui-1.0.24/CHANGELOG.md +86 -0
- xed_tui-1.0.24/CONTRIBUTING.md +52 -0
- xed_tui-1.0.24/LICENSE +21 -0
- xed_tui-1.0.24/PKG-INFO +146 -0
- xed_tui-1.0.24/README.md +120 -0
- xed_tui-1.0.24/aliases/xedtui/README.md +11 -0
- xed_tui-1.0.24/aliases/xedtui/pyproject.toml +17 -0
- xed_tui-1.0.24/de/AGENTS.md +104 -0
- xed_tui-1.0.24/de/CHANGELOG.md +76 -0
- xed_tui-1.0.24/de/CONTRIBUTING.md +52 -0
- xed_tui-1.0.24/de/README.md +123 -0
- xed_tui-1.0.24/de/docs/architecture.md +41 -0
- xed_tui-1.0.24/de/docs/keybindings.md +56 -0
- xed_tui-1.0.24/de/docs/quickstart.md +87 -0
- xed_tui-1.0.24/docs/CNAME +1 -0
- xed_tui-1.0.24/docs/architecture.md +41 -0
- xed_tui-1.0.24/docs/index.html +34 -0
- xed_tui-1.0.24/docs/install.sh +84 -0
- xed_tui-1.0.24/docs/keybindings.md +56 -0
- xed_tui-1.0.24/docs/quickstart.md +87 -0
- xed_tui-1.0.24/npm/bin/xed-tui.js +38 -0
- xed_tui-1.0.24/npm/lib/.gitkeep +2 -0
- xed_tui-1.0.24/npm/package.json +29 -0
- xed_tui-1.0.24/npm/scripts/postinstall.js +26 -0
- xed_tui-1.0.24/packaging/deb/DEBIAN/control +15 -0
- xed_tui-1.0.24/packaging/homebrew/xed-tui.rb +24 -0
- xed_tui-1.0.24/packaging/scoop/xed-tui.json +13 -0
- xed_tui-1.0.24/postbox/README.md +36 -0
- xed_tui-1.0.24/postbox/attachments/cron/.gitkeep +0 -0
- xed_tui-1.0.24/postbox/attachments/done/.gitkeep +0 -0
- xed_tui-1.0.24/postbox/attachments/todo/.gitkeep +0 -0
- xed_tui-1.0.24/postbox/cron.md +12 -0
- xed_tui-1.0.24/postbox/done.md +10 -0
- xed_tui-1.0.24/postbox/todo.md +10 -0
- xed_tui-1.0.24/pyproject.toml +42 -0
- xed_tui-1.0.24/src/.gitkeep +0 -0
- xed_tui-1.0.24/src/xed_tui/__init__.py +18 -0
- xed_tui-1.0.24/src/xed_tui/__main__.py +10 -0
- xed_tui-1.0.24/src/xed_tui/xed_tui_v1.py +2490 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Bug Report
|
|
3
|
+
about: "Report a bug — Fehler melden · All languages welcome / Alle Sprachen willkommen"
|
|
4
|
+
title: "[BUG] "
|
|
5
|
+
labels: bug
|
|
6
|
+
assignees: ''
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Description / Beschreibung
|
|
10
|
+
|
|
11
|
+
<!-- EN: What happened? / DE: Was ist passiert? -->
|
|
12
|
+
|
|
13
|
+
## Steps to reproduce / Schritte zur Reproduktion
|
|
14
|
+
|
|
15
|
+
1.
|
|
16
|
+
2.
|
|
17
|
+
3.
|
|
18
|
+
|
|
19
|
+
## Expected behavior / Erwartetes Verhalten
|
|
20
|
+
|
|
21
|
+
<!-- EN: What did you expect? / DE: Was hast du erwartet? -->
|
|
22
|
+
|
|
23
|
+
## Environment / Umgebung
|
|
24
|
+
|
|
25
|
+
- OS:
|
|
26
|
+
- Python version / Python-Version:
|
|
27
|
+
- XED /TUI version / Version:
|
|
28
|
+
|
|
29
|
+
## Additional context / Weitere Infos
|
|
30
|
+
|
|
31
|
+
<!-- Screenshots, logs, etc. -->
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Feature Request
|
|
3
|
+
about: "Suggest a feature — Feature vorschlagen · All languages welcome / Alle Sprachen willkommen"
|
|
4
|
+
title: "[FEATURE] "
|
|
5
|
+
labels: enhancement
|
|
6
|
+
assignees: ''
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Summary / Zusammenfassung
|
|
10
|
+
|
|
11
|
+
<!-- EN: What feature do you want? / DE: Welches Feature möchtest du? -->
|
|
12
|
+
|
|
13
|
+
## Problem it solves / Problem das es löst
|
|
14
|
+
|
|
15
|
+
<!-- EN: What problem does this solve? / DE: Welches Problem löst das? -->
|
|
16
|
+
|
|
17
|
+
## Proposed solution / Vorgeschlagene Lösung
|
|
18
|
+
|
|
19
|
+
<!-- EN: How should it work? / DE: Wie soll es funktionieren? -->
|
|
20
|
+
|
|
21
|
+
## Alternatives considered / Alternativen
|
|
22
|
+
|
|
23
|
+
<!-- EN: What else did you consider? / DE: Was hast du sonst überlegt? -->
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Question / Frage
|
|
3
|
+
about: "Ask a question — Frage stellen · All languages welcome / Alle Sprachen willkommen"
|
|
4
|
+
title: "[Q] "
|
|
5
|
+
labels: question
|
|
6
|
+
assignees: ''
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Question / Frage
|
|
10
|
+
|
|
11
|
+
<!-- EN: Ask away! / DE: Stell deine Frage! -->
|
|
12
|
+
|
|
13
|
+
<!-- Tip: For general discussions → https://github.com/XED-dev/TUI/discussions -->
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
name: Build .deb package
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*"
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
build:
|
|
10
|
+
name: Build xed-tui_*.deb
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
permissions:
|
|
13
|
+
contents: write # required to attach .deb to GitHub Release
|
|
14
|
+
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v4
|
|
17
|
+
|
|
18
|
+
- name: Set version from tag
|
|
19
|
+
run: echo "VERSION=${GITHUB_REF_NAME#v}" >> $GITHUB_ENV
|
|
20
|
+
|
|
21
|
+
- name: Assemble .deb tree
|
|
22
|
+
run: |
|
|
23
|
+
mkdir -p deb-build/DEBIAN
|
|
24
|
+
mkdir -p deb-build/usr/lib/xed-tui
|
|
25
|
+
mkdir -p deb-build/usr/bin
|
|
26
|
+
|
|
27
|
+
# Control file with version injected
|
|
28
|
+
sed "s/^Version:.*/Version: $VERSION/" \
|
|
29
|
+
packaging/deb/DEBIAN/control > deb-build/DEBIAN/control
|
|
30
|
+
|
|
31
|
+
# Python source
|
|
32
|
+
cp src/xed_tui/xed_tui_v1.py deb-build/usr/lib/xed-tui/
|
|
33
|
+
cp src/xed_tui/__init__.py deb-build/usr/lib/xed-tui/
|
|
34
|
+
cp src/xed_tui/__main__.py deb-build/usr/lib/xed-tui/
|
|
35
|
+
|
|
36
|
+
# Shell wrapper — printf avoids heredoc indentation (shebang must be column 0)
|
|
37
|
+
printf '#!/bin/sh\nexec python3 /usr/lib/xed-tui/__main__.py "$@"\n' \
|
|
38
|
+
> deb-build/usr/bin/xed-tui
|
|
39
|
+
chmod +x deb-build/usr/bin/xed-tui
|
|
40
|
+
|
|
41
|
+
- name: Build .deb
|
|
42
|
+
run: dpkg-deb --build deb-build "xed-tui_${VERSION}_all.deb"
|
|
43
|
+
|
|
44
|
+
- uses: actions/upload-artifact@v4
|
|
45
|
+
with:
|
|
46
|
+
name: deb-package
|
|
47
|
+
path: "*.deb"
|
|
48
|
+
|
|
49
|
+
- name: Attach .deb to GitHub Release
|
|
50
|
+
uses: softprops/action-gh-release@v2
|
|
51
|
+
with:
|
|
52
|
+
files: "*.deb"
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
lint:
|
|
11
|
+
name: Lint (ruff)
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
steps:
|
|
14
|
+
- uses: actions/checkout@v4
|
|
15
|
+
- uses: astral-sh/setup-uv@v5
|
|
16
|
+
- run: uv tool install ruff
|
|
17
|
+
- run: ruff check src/
|
|
18
|
+
|
|
19
|
+
smoke:
|
|
20
|
+
name: Smoke test
|
|
21
|
+
runs-on: ${{ matrix.os }}
|
|
22
|
+
strategy:
|
|
23
|
+
matrix:
|
|
24
|
+
os: [ubuntu-latest, macos-latest]
|
|
25
|
+
python: ["3.11", "3.13"]
|
|
26
|
+
steps:
|
|
27
|
+
- uses: actions/checkout@v4
|
|
28
|
+
|
|
29
|
+
- uses: actions/setup-python@v5
|
|
30
|
+
with:
|
|
31
|
+
python-version: ${{ matrix.python }}
|
|
32
|
+
|
|
33
|
+
- name: Install
|
|
34
|
+
run: pip install .
|
|
35
|
+
|
|
36
|
+
- name: --help exits cleanly
|
|
37
|
+
run: xed-tui --help
|
|
38
|
+
|
|
39
|
+
- name: Python module runs
|
|
40
|
+
run: python -m xed_tui --help
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
name: Publish to npm
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
# Disabled: npm adds no value for a Python-only curses tool.
|
|
5
|
+
# Primary distribution: pip/uv (PyPI) + brew + .deb
|
|
6
|
+
# Re-enable if a JS ecosystem use case emerges.
|
|
7
|
+
workflow_dispatch: # manual trigger only
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
publish:
|
|
11
|
+
name: Build & publish @xed-dev/tui to npm
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
|
|
14
|
+
steps:
|
|
15
|
+
- uses: actions/checkout@v4
|
|
16
|
+
|
|
17
|
+
- uses: actions/setup-node@v4
|
|
18
|
+
with:
|
|
19
|
+
node-version: "20"
|
|
20
|
+
registry-url: "https://registry.npmjs.org"
|
|
21
|
+
|
|
22
|
+
- name: Sync version tag → package.json
|
|
23
|
+
run: |
|
|
24
|
+
VERSION=${GITHUB_REF_NAME#v}
|
|
25
|
+
# Convert v1.022 → 1.022.0 for npm (semver requires 3 parts)
|
|
26
|
+
NPM_VERSION="${VERSION}.0"
|
|
27
|
+
cd npm
|
|
28
|
+
node -e "
|
|
29
|
+
const fs = require('fs');
|
|
30
|
+
const p = JSON.parse(fs.readFileSync('package.json', 'utf8'));
|
|
31
|
+
p.version = '${NPM_VERSION}';
|
|
32
|
+
fs.writeFileSync('package.json', JSON.stringify(p, null, 2) + '\n');
|
|
33
|
+
"
|
|
34
|
+
|
|
35
|
+
- name: Copy Python source into npm/lib/
|
|
36
|
+
run: cp src/xed_tui/xed_tui_v1.py npm/lib/xed_tui_v1.py
|
|
37
|
+
|
|
38
|
+
- name: Publish to npm
|
|
39
|
+
run: npm publish --access public
|
|
40
|
+
working-directory: npm
|
|
41
|
+
env:
|
|
42
|
+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
name: Publish to PyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*"
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
publish:
|
|
10
|
+
name: Build & publish to PyPI
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
permissions:
|
|
13
|
+
id-token: write # OIDC trusted publishing — no API token needed
|
|
14
|
+
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v4
|
|
17
|
+
|
|
18
|
+
- uses: astral-sh/setup-uv@v5
|
|
19
|
+
with:
|
|
20
|
+
enable-cache: true
|
|
21
|
+
|
|
22
|
+
- name: Build sdist + wheel
|
|
23
|
+
run: uv build
|
|
24
|
+
|
|
25
|
+
- name: Publish to PyPI
|
|
26
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
name: Update Homebrew Tap
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_run:
|
|
5
|
+
workflows: ["Publish to PyPI"]
|
|
6
|
+
types: [completed]
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
update-tap:
|
|
10
|
+
name: Bump xed-tui formula in homebrew-xed tap
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
# Only run if PyPI publish succeeded
|
|
13
|
+
if: ${{ github.event.workflow_run.conclusion == 'success' }}
|
|
14
|
+
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v4
|
|
17
|
+
|
|
18
|
+
- name: Fetch URL + SHA256 from PyPI JSON API
|
|
19
|
+
run: |
|
|
20
|
+
TAG="${{ github.event.workflow_run.head_branch }}"
|
|
21
|
+
VERSION="${TAG#v}"
|
|
22
|
+
# Retry up to 5× — PyPI may need a moment after publish
|
|
23
|
+
for i in 1 2 3 4 5; do
|
|
24
|
+
PYPI=$(curl -fsSL "https://pypi.org/pypi/xed-tui/json") && break
|
|
25
|
+
echo "Attempt $i: waiting for PyPI..."
|
|
26
|
+
sleep 60
|
|
27
|
+
done
|
|
28
|
+
# PyPI normalises versions (1.022 → 1.22), so always read from API
|
|
29
|
+
URL=$(echo "$PYPI" | python3 -c "import sys,json; d=json.load(sys.stdin); print([u['url'] for u in d['urls'] if u['url'].endswith('.tar.gz')][0])")
|
|
30
|
+
SHA=$(echo "$PYPI" | python3 -c "import sys,json; d=json.load(sys.stdin); print([u['digests']['sha256'] for u in d['urls'] if u['url'].endswith('.tar.gz')][0])")
|
|
31
|
+
PYPI_VERSION=$(echo "$PYPI" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d['info']['version'])")
|
|
32
|
+
echo "VERSION=$PYPI_VERSION" >> $GITHUB_ENV
|
|
33
|
+
echo "SHA256=$SHA" >> $GITHUB_ENV
|
|
34
|
+
echo "URL=$URL" >> $GITHUB_ENV
|
|
35
|
+
|
|
36
|
+
- name: Patch formula
|
|
37
|
+
run: |
|
|
38
|
+
sed -i \
|
|
39
|
+
-e "s|url \".*\"|url \"$URL\"|" \
|
|
40
|
+
-e "s|sha256 \".*\"|sha256 \"$SHA256\"|" \
|
|
41
|
+
packaging/homebrew/xed-tui.rb
|
|
42
|
+
|
|
43
|
+
- name: Push updated formula to homebrew-xed tap
|
|
44
|
+
uses: cpina/github-action-push-to-another-repository@main
|
|
45
|
+
env:
|
|
46
|
+
API_TOKEN_GITHUB: ${{ secrets.HOMEBREW_TAP_TOKEN }}
|
|
47
|
+
with:
|
|
48
|
+
source-directory: packaging/homebrew
|
|
49
|
+
destination-github-username: XED-dev
|
|
50
|
+
destination-repository-name: homebrew-xed
|
|
51
|
+
target-directory: Formula
|
|
52
|
+
target-branch: main
|
|
53
|
+
commit-message: "chore: bump xed-tui to ${{ env.VERSION }}"
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
CLAUDE.md
|
|
2
|
+
.claude/
|
|
3
|
+
|
|
4
|
+
# Python
|
|
5
|
+
*.pyc
|
|
6
|
+
*.pyo
|
|
7
|
+
__pycache__/
|
|
8
|
+
.venv/
|
|
9
|
+
.venv-*/
|
|
10
|
+
*.egg-info/
|
|
11
|
+
dist/
|
|
12
|
+
build/
|
|
13
|
+
|
|
14
|
+
# npm
|
|
15
|
+
node_modules/
|
|
16
|
+
npm/node_modules/
|
|
17
|
+
npm/lib/xed_tui_v1.py
|
|
18
|
+
|
|
19
|
+
# macOS
|
|
20
|
+
.DS_Store
|
|
21
|
+
|
|
22
|
+
# Build artifacts
|
|
23
|
+
*.deb
|
|
24
|
+
*.exe
|
|
25
|
+
*.zip
|
xed_tui-1.0.24/AGENTS.md
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# AGENTS.md — XED /TUI
|
|
2
|
+
> Required reading for all AI agents working in this repository.
|
|
3
|
+
> German source: `de/AGENTS.md` — this file is an AI translation.
|
|
4
|
+
> Last updated: March 2026
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## PROJECT
|
|
9
|
+
|
|
10
|
+
**XED /TUI** — a mutt-style session browser for Claude Code.
|
|
11
|
+
Terminal-first. No cloud service. No proprietary lock-in.
|
|
12
|
+
Built by [Collective Context (CC)](https://collective-context.org) · License: MIT
|
|
13
|
+
|
|
14
|
+
**Primary audience:** Developers, web agencies and freelancers in the DACH region —
|
|
15
|
+
and everyone using Claude Code in the terminal.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## RULES (non-negotiable)
|
|
20
|
+
|
|
21
|
+
1. **JAIL:** Write only within this repository — no access to other paths.
|
|
22
|
+
2. **NO SUDO.** Ever.
|
|
23
|
+
3. **NO TERMINAL COMMANDS WITHOUT EXPLICIT APPROVAL.**
|
|
24
|
+
Allowed without approval: Read tool + Write tool. Nothing else.
|
|
25
|
+
4. **NO CREDENTIALS IN CODE.** Use `os.environ[]` only.
|
|
26
|
+
5. **WAIT:** After every question, wait for a response. Never work ahead.
|
|
27
|
+
6. **When in doubt: STOP. Ask. Wait.**
|
|
28
|
+
7. **Always reference issues:** Every fix commit must include an issue number.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## LANGUAGE POLICY
|
|
33
|
+
|
|
34
|
+
**Source:** `de/` — always written first, in German.
|
|
35
|
+
**Release:** Root directory — AI-translated to English.
|
|
36
|
+
**Rule:** Never edit root-level docs directly.
|
|
37
|
+
Always update `de/` first, then translate.
|
|
38
|
+
|
|
39
|
+
**Translation command:**
|
|
40
|
+
```
|
|
41
|
+
"Translate de/README.md to English → README.md. Keep code blocks unchanged."
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
**Future languages** (same pattern):
|
|
45
|
+
- `fr/` — French (AI translation from EN or DE)
|
|
46
|
+
- `ja/` — Japanese
|
|
47
|
+
- `es/` — Spanish
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## WORKFLOW: Lab → Release
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
fb-data (private lab) XED-dev/TUI (public)
|
|
55
|
+
────────────────────────── ──────────────────────────
|
|
56
|
+
Daily development → Milestone reached → code sync
|
|
57
|
+
Write DE docs in de/ → AI translates → root (EN)
|
|
58
|
+
Community feedback via Issues
|
|
59
|
+
Issues → postbox/todo.md
|
|
60
|
+
→ flows back into the lab
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
**Code sync:** Only at milestones — no daily pushes.
|
|
64
|
+
**Docs sync:** With every content update, translate DE → EN and commit both together.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## POSTBOX
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
postbox/todo.md ← Community issues flowing into the lab
|
|
72
|
+
postbox/done.md ← Audit log: issue number → commit hash (required!)
|
|
73
|
+
postbox/cron.md ← Planned milestones + releases
|
|
74
|
+
postbox/attachments/ ← Complex feature specs
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
**No commit hash in done.md = task is not considered done.**
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## COMMIT FORMAT
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
feat: New features
|
|
85
|
+
fix: Bug fixes (#issue-number)
|
|
86
|
+
docs: Documentation (DE + EN always committed together)
|
|
87
|
+
release: New release tag
|
|
88
|
+
chore: Maintenance
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## ROLES
|
|
94
|
+
|
|
95
|
+
| Role | Who | Responsibility |
|
|
96
|
+
|---|---|---|
|
|
97
|
+
| **SysOps** | Maintainer | Approvals, prioritization, merge reviews |
|
|
98
|
+
| **Lab Agent** | Claude Code (fb-data) | Development, fixes |
|
|
99
|
+
| **Release Agent** | Claude Code (xed/) | Translation, docs, release commits |
|
|
100
|
+
| **Scanner** | Gemini CLI | Scans issues → writes to postbox/todo.md — NEVER fixes |
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
*Standard: https://agents.md (Linux Foundation) · Project: https://collective-context.org*
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
> German version: [de/CHANGELOG.md](de/CHANGELOG.md)
|
|
3
|
+
|
|
4
|
+
All notable changes are documented here.
|
|
5
|
+
Format: [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) · Versioning: `MAJOR.MINOR`
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## [1.0.24] — unreleased
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
- `install.sh` — one-command installer: `curl -fsSL https://tui.xed.dev/install.sh | bash`
|
|
13
|
+
- GitHub Pages at `https://tui.xed.dev` (CNAME + docs/)
|
|
14
|
+
- CI workflow: ruff linting + smoke test on Ubuntu/macOS × Python 3.11/3.13
|
|
15
|
+
|
|
16
|
+
### Changed
|
|
17
|
+
- Versioning: 3-part semver (`MAJOR.MINOR.PATCH`) — `pyproject.toml` reads `VERSION` from script via hatchling regex (single source of truth)
|
|
18
|
+
- Quickstart rewritten: 3-step flow mirroring Claude Code installation
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
- Renamed `xed-tui_v1.py` → `xed_tui_v1.py` (valid Python module name — removes `importlib.util` workaround)
|
|
22
|
+
- `termios`/`tty` conditional import for Windows compatibility (`print_paged` falls back to plain print)
|
|
23
|
+
- `.deb` shell wrapper shebang: replaced YAML heredoc with `printf` (leading whitespace bug)
|
|
24
|
+
- Removed npm from user-facing docs (workflow disabled)
|
|
25
|
+
|
|
26
|
+
## [1.0.23] — skipped
|
|
27
|
+
*Internal semver migration. Not published.*
|
|
28
|
+
|
|
29
|
+
## [1.22] — 2026-03-09
|
|
30
|
+
*Previously tagged as `v1.022` — PyPI normalized the version.*
|
|
31
|
+
|
|
32
|
+
### Added
|
|
33
|
+
- `Ctrl+E` — Settings overlay: configure editor (`auto` / `msedit` / `nano` / custom) and default app (`auto` / `typora` / custom)
|
|
34
|
+
- `[E]` respects `editor_pref` setting; `[O]` respects `open_pref` setting
|
|
35
|
+
- Settings persisted in `continue.json` across sessions and hot-reloads
|
|
36
|
+
- Help texts updated in all 5 languages (DE / EN / FR / JA / ES)
|
|
37
|
+
- Status bar: `[^E]Set` shortcut hint
|
|
38
|
+
|
|
39
|
+
## [1.021] — 2026-03-07
|
|
40
|
+
|
|
41
|
+
### Added
|
|
42
|
+
- Multi-language help overlay (DE / EN / FR / JA / ES), switchable with `←→` or number keys `1–5`
|
|
43
|
+
- Language preference persisted in `continue.json`
|
|
44
|
+
|
|
45
|
+
## [1.020] — 2026-03-06
|
|
46
|
+
|
|
47
|
+
### Added
|
|
48
|
+
- `[#]` Tags: per-session labels stored in `memory/tags.json`
|
|
49
|
+
- Tag filter: `/#tag` in search mode filters sessions by tag
|
|
50
|
+
- Token counter: `output_tokens` displayed as `42k` in sessions panel
|
|
51
|
+
|
|
52
|
+
## [1.018] — 2026-03-05
|
|
53
|
+
|
|
54
|
+
### Fixed
|
|
55
|
+
- Empty reader panel on startup when saved `focus != "threads"` (explicit `preview_reader()` before event loop)
|
|
56
|
+
|
|
57
|
+
## [1.017] — 2026-03-04
|
|
58
|
+
|
|
59
|
+
### Fixed
|
|
60
|
+
- `flush_table()`: column widths via visible length, ignoring Markdown markers
|
|
61
|
+
|
|
62
|
+
## [1.016] — 2026-03-03
|
|
63
|
+
|
|
64
|
+
### Added
|
|
65
|
+
- Markdown table rendering with box-drawing: `┌─┬─┐` / `│ cell │` / `└─┴─┘`
|
|
66
|
+
- `A_ITALIC` with ncurses 6.1+ fallback to underline
|
|
67
|
+
|
|
68
|
+
## [1.010] — 2026-02-28
|
|
69
|
+
|
|
70
|
+
### Added
|
|
71
|
+
- `--continue` / `Ctrl+R`: full state persisted to `~/.local/share/xed-tui/continue.json`
|
|
72
|
+
- Markdown rendering: h1/h2/h3, bold, inline code, italic, hrule, code blocks, tables, blockquotes
|
|
73
|
+
- Token counter, full-text search `[/]`, Notes-Sync (`.sync` sidecar)
|
|
74
|
+
- `[a]` Agent launch, `[r]` Resume-to-clipboard, Unicode input via `get_wch()`
|
|
75
|
+
|
|
76
|
+
## [1.001] — 2026-02-20
|
|
77
|
+
|
|
78
|
+
### Added
|
|
79
|
+
- Initial release: 4-panel curses TUI for Claude Code sessions (`~/.claude/projects/`)
|
|
80
|
+
- Projects, Sessions, Reader (JSONL → Markdown), Notes panels
|
|
81
|
+
- vim-style navigation, `[t]` title, `[d]` delete, `[e]` editor, `[c]` clipboard
|
|
82
|
+
- New note prefill with session transcript + `.sync` sidecar
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
*Development history: [fb-data](https://github.com/edikte/fb-data/commits/main/scripts/bin/XED-TUI/)*
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Contributing to XED /TUI
|
|
2
|
+
> German source: [de/CONTRIBUTING.md](de/CONTRIBUTING.md) — this file is an AI translation.
|
|
3
|
+
|
|
4
|
+
All languages welcome — English is the release language of this file.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## How to contribute
|
|
9
|
+
|
|
10
|
+
### Report a bug
|
|
11
|
+
→ [Issues → Bug Report](https://github.com/XED-dev/TUI/issues/new?template=bug_report.md)
|
|
12
|
+
|
|
13
|
+
Please include:
|
|
14
|
+
- OS + Python version
|
|
15
|
+
- What did you expect? What happened?
|
|
16
|
+
- How to reproduce?
|
|
17
|
+
|
|
18
|
+
### Suggest a feature
|
|
19
|
+
→ [Issues → Feature Request](https://github.com/XED-dev/TUI/issues/new?template=feature_request.md)
|
|
20
|
+
|
|
21
|
+
### Ask a question
|
|
22
|
+
→ [Discussions → Q&A](https://github.com/XED-dev/TUI/discussions)
|
|
23
|
+
|
|
24
|
+
### Contribute code
|
|
25
|
+
|
|
26
|
+
1. Open an issue and describe your idea
|
|
27
|
+
2. Wait for feedback from the maintainer
|
|
28
|
+
3. Fork + create a branch: `feature/my-feature`
|
|
29
|
+
4. Write code (comment in your native language — that's fine!)
|
|
30
|
+
5. Open a pull request referencing the issue
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Language policy
|
|
35
|
+
|
|
36
|
+
- **Code comments:** Any language — your native tongue is welcome
|
|
37
|
+
- **Docs (`de/`):** German (source files)
|
|
38
|
+
- **Docs (root):** English (AI translation)
|
|
39
|
+
- **Issues + Discussions:** Any language — we respond in English or German
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Development workflow
|
|
44
|
+
|
|
45
|
+
The daily lab is [fb-data (private)](https://github.com/edikte/fb-data).
|
|
46
|
+
Code flows into this repo at milestones.
|
|
47
|
+
|
|
48
|
+
Issues here → `postbox/todo.md` → lab → fix → release
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
*Collective Context (CC) · License: MIT*
|
xed_tui-1.0.24/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Collective Context (CC) — https://collective-context.org
|
|
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.
|