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.
Files changed (50) hide show
  1. xed_tui-1.0.24/.github/FUNDING.yml +3 -0
  2. xed_tui-1.0.24/.github/ISSUE_TEMPLATE/bug_report.md +31 -0
  3. xed_tui-1.0.24/.github/ISSUE_TEMPLATE/feature_request.md +23 -0
  4. xed_tui-1.0.24/.github/ISSUE_TEMPLATE/question.md +13 -0
  5. xed_tui-1.0.24/.github/workflows/build-deb.yml +52 -0
  6. xed_tui-1.0.24/.github/workflows/ci.yml +40 -0
  7. xed_tui-1.0.24/.github/workflows/publish-npm.yml +42 -0
  8. xed_tui-1.0.24/.github/workflows/publish-pypi.yml +26 -0
  9. xed_tui-1.0.24/.github/workflows/update-homebrew.yml +53 -0
  10. xed_tui-1.0.24/.gitignore +25 -0
  11. xed_tui-1.0.24/AGENTS.md +104 -0
  12. xed_tui-1.0.24/CHANGELOG.md +86 -0
  13. xed_tui-1.0.24/CONTRIBUTING.md +52 -0
  14. xed_tui-1.0.24/LICENSE +21 -0
  15. xed_tui-1.0.24/PKG-INFO +146 -0
  16. xed_tui-1.0.24/README.md +120 -0
  17. xed_tui-1.0.24/aliases/xedtui/README.md +11 -0
  18. xed_tui-1.0.24/aliases/xedtui/pyproject.toml +17 -0
  19. xed_tui-1.0.24/de/AGENTS.md +104 -0
  20. xed_tui-1.0.24/de/CHANGELOG.md +76 -0
  21. xed_tui-1.0.24/de/CONTRIBUTING.md +52 -0
  22. xed_tui-1.0.24/de/README.md +123 -0
  23. xed_tui-1.0.24/de/docs/architecture.md +41 -0
  24. xed_tui-1.0.24/de/docs/keybindings.md +56 -0
  25. xed_tui-1.0.24/de/docs/quickstart.md +87 -0
  26. xed_tui-1.0.24/docs/CNAME +1 -0
  27. xed_tui-1.0.24/docs/architecture.md +41 -0
  28. xed_tui-1.0.24/docs/index.html +34 -0
  29. xed_tui-1.0.24/docs/install.sh +84 -0
  30. xed_tui-1.0.24/docs/keybindings.md +56 -0
  31. xed_tui-1.0.24/docs/quickstart.md +87 -0
  32. xed_tui-1.0.24/npm/bin/xed-tui.js +38 -0
  33. xed_tui-1.0.24/npm/lib/.gitkeep +2 -0
  34. xed_tui-1.0.24/npm/package.json +29 -0
  35. xed_tui-1.0.24/npm/scripts/postinstall.js +26 -0
  36. xed_tui-1.0.24/packaging/deb/DEBIAN/control +15 -0
  37. xed_tui-1.0.24/packaging/homebrew/xed-tui.rb +24 -0
  38. xed_tui-1.0.24/packaging/scoop/xed-tui.json +13 -0
  39. xed_tui-1.0.24/postbox/README.md +36 -0
  40. xed_tui-1.0.24/postbox/attachments/cron/.gitkeep +0 -0
  41. xed_tui-1.0.24/postbox/attachments/done/.gitkeep +0 -0
  42. xed_tui-1.0.24/postbox/attachments/todo/.gitkeep +0 -0
  43. xed_tui-1.0.24/postbox/cron.md +12 -0
  44. xed_tui-1.0.24/postbox/done.md +10 -0
  45. xed_tui-1.0.24/postbox/todo.md +10 -0
  46. xed_tui-1.0.24/pyproject.toml +42 -0
  47. xed_tui-1.0.24/src/.gitkeep +0 -0
  48. xed_tui-1.0.24/src/xed_tui/__init__.py +18 -0
  49. xed_tui-1.0.24/src/xed_tui/__main__.py +10 -0
  50. xed_tui-1.0.24/src/xed_tui/xed_tui_v1.py +2490 -0
@@ -0,0 +1,3 @@
1
+ github: []
2
+ # Weitere Funding-Optionen folgen
3
+ # custom: ["https://collective-context.org/sponsor"]
@@ -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
@@ -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.