Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 13 additions & 13 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -8,23 +8,23 @@
# breaking-change regressions (e.g. pydantic 2.13 alias serialization).

# Default fallback: project owner reviews everything not matched below.
* @TechMatrix-labs
* @Pythoughts-labs

# Dependency surfaces: explicit owner.
pyproject.toml @TechMatrix-labs
uv.lock @TechMatrix-labs
**/pyproject.toml @TechMatrix-labs
**/uv.lock @TechMatrix-labs
package.json @TechMatrix-labs
package-lock.json @TechMatrix-labs
**/package.json @TechMatrix-labs
**/package-lock.json @TechMatrix-labs
pyproject.toml @Pythoughts-labs
uv.lock @Pythoughts-labs
**/pyproject.toml @Pythoughts-labs
**/uv.lock @Pythoughts-labs
package.json @Pythoughts-labs
package-lock.json @Pythoughts-labs
**/package.json @Pythoughts-labs
**/package-lock.json @Pythoughts-labs

# Telemetry & monitoring config — contractual changes need a closer look.
src/pythinker_code/telemetry/ @TechMatrix-labs
docs/en/reference/telemetry.md @TechMatrix-labs
src/pythinker_code/telemetry/ @Pythoughts-labs
docs/en/reference/telemetry.md @Pythoughts-labs

# CI workflows — branch protection / required-status-check changes shouldn't
# slip in unnoticed.
.github/workflows/ @TechMatrix-labs
.github/CODEOWNERS @TechMatrix-labs
.github/workflows/ @Pythoughts-labs
.github/CODEOWNERS @Pythoughts-labs
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/1-bug-report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ body:
value: |
Thank you for submitting a bug report! It helps make Pythinker Code better for everyone.

If you need help or support using Pythinker Code, and are not reporting a bug, please post on [pythinker-code/discussions](https://github.com/TechMatrix-labs/pythinker-code/discussions), where you can ask questions or engage with others on ideas for how to improve Pythinker Code.
If you need help or support using Pythinker Code, and are not reporting a bug, please post on [pythinker-code/discussions](https://github.com/Pythoughts-labs/pythinker-code/discussions), where you can ask questions or engage with others on ideas for how to improve Pythinker Code.

Make sure you are running the latest version of Pythinker Code (`uv tool upgrade pythinker-code` to upgrade). The bug you are experiencing may already have been fixed.

Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
blank_issues_enabled: true
contact_links:
- name: Questions and General Discussion
url: https://github.com/TechMatrix-labs/pythinker-code/discussions
url: https://github.com/Pythoughts-labs/pythinker-code/discussions
about: Have questions? Welcome to open a discussion!
4 changes: 2 additions & 2 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ Thank you for your contribution to Pythinker Code!
Please make sure you already discussed the feature or bugfix you are proposing in an issue with the maintainers.
Please understand that if you have not gotten confirmation from the maintainers, your pull request may be closed or ignored without further review due to limited bandwidth.

See https://github.com/TechMatrix-labs/pythinker-code/blob/main/CONTRIBUTING.md for more.
See https://github.com/Pythoughts-labs/pythinker-code/blob/main/CONTRIBUTING.md for more.
-->

## Related Issue
Expand All @@ -18,7 +18,7 @@ Resolve #(issue_number)

## Checklist

- [ ] I have read the [CONTRIBUTING](https://github.com/TechMatrix-labs/pythinker-code/blob/main/CONTRIBUTING.md) document.
- [ ] I have read the [CONTRIBUTING](https://github.com/Pythoughts-labs/pythinker-code/blob/main/CONTRIBUTING.md) document.
- [ ] I have linked the related issue, if any.
- [ ] I have added tests that prove my fix is effective or that my feature works.
- [ ] I have run `make gen-changelog` to update the changelog.
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/dispatch-pythinker-home-sync.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ jobs:
permissions:
contents: read
env:
DISPATCH_OWNER: TechMatrix-labs
DISPATCH_OWNER: Pythoughts-labs
DISPATCH_REPO: pythinker-home
steps:
# Mint a short-lived installation token for the org-owned
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ permissions:
contents: read

env:
IMAGE_NAME: ghcr.io/techmatrix-labs/pythinker-code
IMAGE_NAME: ghcr.io/pythoughts-labs/pythinker-code
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"

# One run per tag/ref; never cancel a tag/dispatch run because each one may
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/docs-pages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ env:
jobs:
deploy:
# Only run on the original repository, not on forks
if: github.repository == 'TechMatrix-labs/pythinker-code'
if: github.repository == 'Pythoughts-labs/pythinker-code'
runs-on: ubuntu-latest
environment:
name: github-pages
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/homebrew-tap.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
permissions:
contents: read
env:
TAP_OWNER: TechMatrix-labs
TAP_OWNER: Pythoughts-labs
TAP_REPO: homebrew-pythinker
steps:
- name: Checkout source repo
Expand Down Expand Up @@ -155,14 +155,14 @@ jobs:
cat > README.md <<EOF
# homebrew-pythinker

Homebrew tap for [Pythinker Code](https://github.com/TechMatrix-labs/pythinker-code).
Homebrew tap for [Pythinker Code](https://github.com/Pythoughts-labs/pythinker-code).

\`\`\`sh
brew install TechMatrix-labs/pythinker/pythinker-code
brew install Pythoughts-labs/pythinker/pythinker-code
\`\`\`

This tap is auto-updated by the
[homebrew-tap.yml](https://github.com/TechMatrix-labs/pythinker-code/blob/main/.github/workflows/homebrew-tap.yml)
[homebrew-tap.yml](https://github.com/Pythoughts-labs/pythinker-code/blob/main/.github/workflows/homebrew-tap.yml)
workflow on every \`v*.*.*\` tag. Do not hand-edit \`Formula/*\` — your
edits will be overwritten on the next release.
EOF
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/promote-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ jobs:
"pythinker-${version}-x86_64-apple-darwin-onedir.tar.gz.sha256"
)
pypi_url="https://pypi.org/pypi/pythinker-code/${version}/json"
homebrew_formula_url="https://raw.githubusercontent.com/TechMatrix-labs/homebrew-pythinker/main/Formula/pythinker-code.rb"
homebrew_formula_url="https://raw.githubusercontent.com/Pythoughts-labs/homebrew-pythinker/main/Formula/pythinker-code.rb"
# The budget must comfortably exceed the slowest platform build, since
# this job runs on the tag push in parallel with them. The long pole is
# linux-installer's emulated arm64 .deb/.rpm step: on the 0.26.0 release
Expand Down Expand Up @@ -168,7 +168,7 @@ jobs:
env:
APP_ID: ${{ secrets.PYTHINKER_RELEASE_BOT_APP_ID }}
APP_PRIVATE_KEY: ${{ secrets.PYTHINKER_RELEASE_BOT_APP_PRIVATE_KEY }}
DISPATCH_OWNER: TechMatrix-labs
DISPATCH_OWNER: Pythoughts-labs
DISPATCH_REPO: pythinker-home
run: |
set -euo pipefail
Expand Down Expand Up @@ -213,7 +213,7 @@ jobs:
DISPATCH_TOKEN: ${{ steps.app-token.outputs.token }}
SOURCE_REPO: ${{ github.repository }}
RELEASE_TAG: ${{ steps.tag.outputs.tag }}
DISPATCH_OWNER: TechMatrix-labs
DISPATCH_OWNER: Pythoughts-labs
DISPATCH_REPO: pythinker-home
run: |
set -euo pipefail
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/scoop-bucket.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
permissions:
contents: read
env:
BUCKET_OWNER: TechMatrix-labs
BUCKET_OWNER: Pythoughts-labs
BUCKET_REPO: scoop-pythinker
steps:
- name: Checkout source repo
Expand Down Expand Up @@ -129,15 +129,15 @@ jobs:
cat > README.md <<'EOF'
# scoop-pythinker

Scoop bucket for [Pythinker Code](https://github.com/TechMatrix-labs/pythinker-code).
Scoop bucket for [Pythinker Code](https://github.com/Pythoughts-labs/pythinker-code).

```pwsh
scoop bucket add pythinker https://github.com/TechMatrix-labs/scoop-pythinker
scoop bucket add pythinker https://github.com/Pythoughts-labs/scoop-pythinker
scoop install pythinker-code
```

This bucket is auto-updated by the
[scoop-bucket.yml](https://github.com/TechMatrix-labs/pythinker-code/blob/main/.github/workflows/scoop-bucket.yml)
[scoop-bucket.yml](https://github.com/Pythoughts-labs/pythinker-code/blob/main/.github/workflows/scoop-bucket.yml)
workflow on every semver release tag. Do not hand-edit `bucket/*` — your
edits will be overwritten on the next release.
EOF
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/winget.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ jobs:
if (-not $env:WINGET_TOKEN) {
throw "WINGET_SUBMIT_TOKEN is not configured"
}
$installerUrl = "https://github.com/TechMatrix-labs/pythinker-code/releases/download/v$env:VERSION/PythinkerSetup-$env:VERSION.exe"
$installerUrl = "https://github.com/Pythoughts-labs/pythinker-code/releases/download/v$env:VERSION/PythinkerSetup-$env:VERSION.exe"
$wingetCreateUrl = "https://github.com/microsoft/winget-create/releases/download/v1.12.8.0/wingetcreate.exe"
$wingetCreateSha256 = "8BD738851B524885410112678E3771B341C5C716DE60FBBECB88AB0A363ED85D"
Invoke-WebRequest -Uri $wingetCreateUrl -OutFile wingetcreate.exe
Expand All @@ -55,7 +55,7 @@ jobs:
}
# PackageIdentifier must match the existing winget-pkgs entry; create it
# once manually via `wingetcreate new` before the first automated update.
.\wingetcreate.exe update TechMatrixLabs.PythinkerCode `
.\wingetcreate.exe update PythoughtsLabs.PythinkerCode `
--version $env:VERSION `
--urls "$installerUrl" `
--submit `
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ src/pythinker_code/vis/static/
graphify-out/
graphify-out*/
src/pythinker_code/.understand-anything/
# understand-anything knowledge graph (any location)
.understand-anything/
.graphify_*.json
.graphify_*.txt
tests_ai/report.json
Expand Down
17 changes: 12 additions & 5 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,21 @@ GitHub Releases page; `0.8.0` is the new starting line.

## Unreleased

## 0.28.0 (2026-05-31)

### What changed in this release

- **Repository moved to the Pythoughts-labs GitHub org.** All GitHub URLs, install scripts, CI configuration, and the default `/feedback` repository now point to `github.com/Pythoughts-labs/pythinker-code`; existing configs that still reference the previous owner are auto-migrated to the new default.
- **Broadened distribution channels for releases.** Releases now include best-effort Docker/GHCR, Scoop, Nix, and manual WinGet distribution plumbing with channel-native update markers where the installer format supports them.
- **Release preparation now uses a version single source of truth.** `scripts/release.py` rewrites derived release files from `pyproject.toml`, verifies version lockstep on every PR, enforces the frozen `pythinker-review==0.1.0` pin, and managed-channel installs now show channel-native update guidance instead of trying to self-update.
- CI and release workflows now run on Node.js 24-backed GitHub Actions, pin action revisions to immutable commits, and preflight optional website/tap GitHub App credentials with clear errors or notices instead of opaque token failures.
- Release pipeline: migrate the pythinker-home website-sync dispatch to the org-owned `pythinker-release-bot` GitHub App and fail loud on an empty token; retire the dead pythinker-core API-docs gh-pages publish step; add exponential backoff to the native install scripts and fix the Windows installer's release-pagination cliff.
- **Node.js 24 CI with pinned, credential-checked workflows.** CI and release workflows now run on Node.js 24-backed GitHub Actions, pin action revisions to immutable commits, and preflight optional website/tap GitHub App credentials with clear errors or notices instead of opaque token failures.
- **Release pipeline hardening.** Migrate the pythinker-home website-sync dispatch to the org-owned `pythinker-release-bot` GitHub App and fail loud on an empty token; retire the dead pythinker-core API-docs gh-pages publish step; add exponential backoff to the native install scripts and fix the Windows installer's release-pagination cliff.
- **Redesigned startup welcome banner.** The banner now uses a cleaner footer-chip layout: the "What's new / Update available" chip sits on the panel's bottom border, the headline/strapline/help lines align beside the robot logo, and the info grid drops its vertical separator. The robot art and palette are unchanged.
- **Terminal-aware rendering for minimal and CI terminals.** The shell UI adapts to the terminal — ASCII glyph fallbacks for `TERM=dumb` and legacy Windows code pages, reduced-motion mode (`PYTHINKER_REDUCED_MOTION`), and `NO_COLOR`/`CLICOLOR` support that strips color cleanly — so output stays readable in CI logs, SSH panes, and bare terminals.
- **Windows updates avoid encoded PowerShell.** Native updates now launch the signed Inno installer directly with Restart Manager flags instead of a `powershell.exe -EncodedCommand` helper, reducing antivirus command-line heuristic false positives. Windows bootstrap installs use visible `/SILENT` progress instead of fully suppressed setup, and the installer build signs bundled PE files plus Inno's setup/uninstaller/temp copies when signing credentials are configured.

Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.28.0`, or use the native installer for your OS (see the README install table).

## 0.27.0 (2026-05-31)

### What changed in this release
Expand Down Expand Up @@ -88,7 +95,7 @@ Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.25.0`,
- **Complete native installer `Fetch` fix.** The 0.23.0 release bundled trafilatura's data files but missed `justext`'s stoplists directory, so the `Fetch` tool still crashed with `FileNotFoundError: ./_MEIxxxx/justext/stoplists` on `.exe`, `.deb`, and `.rpm` installs. All three installer specs now bundle both `trafilatura` and `justext` data files. PyPI / `pip install` was unaffected.
- **Atomic "latest" release gating.** The GitHub Release is no longer marked "latest" until every platform asset (4 archives, 1 `.exe`, 4 `.deb`/`.rpm`) is attached. A dispatch workflow polls for completeness before flipping the flag, so `/releases/latest` and the in-app updater no longer serve a partially-built release during the publish window.
- **Smarter `/update` command.** `run_update_prompt` now routes through `do_update(check_only=True)` to get a fresh PyPI version before showing the update modal, and verifies that the expected binary asset for your platform exists on the GitHub Release before initiating a native upgrade.
- **Repository transferred to TechMatrix-labs.** All GitHub URLs, install script references, and CI configuration now point to `github.com/TechMatrix-labs/pythinker-code`.
- **Repository transferred to Pythoughts-labs.** All GitHub URLs, install script references, and CI configuration now point to `github.com/Pythoughts-labs/pythinker-code`.

Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.24.0`, or use the native installer for your OS (see the README install table).

Expand Down Expand Up @@ -201,8 +208,8 @@ Upgrade with `pythinker update`, `pip install --upgrade pythinker-code==0.14.0`,

### What changed in this release

- **Native installers for macOS and Linux.** `brew install TechMatrix-labs/pythinker/pythinker-code` (Homebrew tap) covers both macOS (Intel + Apple Silicon) and Linux brew installs from a single auto-generated formula. Debian/Ubuntu users get `pythinker-code_x.y.z_<arch>.deb` and Fedora/RHEL/openSUSE users get `pythinker-code-x.y.z.<arch>.rpm`, both attached to every GitHub Release for `x86_64` and `aarch64`. Together with the Windows `PythinkerSetup-x.y.z.exe` shipped in 0.12.0, Pythinker now ships native installers for every supported platform — no Python, Node, or `uv` prerequisite.
- **Cross-OS curl-bash native installer.** `curl -fsSL https://raw.githubusercontent.com/TechMatrix-labs/pythinker-code/main/scripts/install-native.sh | bash` detects your OS + arch, downloads the matching PyInstaller-frozen tarball from the latest Release, verifies its SHA-256, and lands the binary at `~/.local/bin/pythinker`. Supports `linux-x86_64`, `linux-aarch64`, and `macos-arm64`. Honors `--version`, `--prefix`, and `NO_COLOR`.
- **Native installers for macOS and Linux.** `brew install Pythoughts-labs/pythinker/pythinker-code` (Homebrew tap) covers both macOS (Intel + Apple Silicon) and Linux brew installs from a single auto-generated formula. Debian/Ubuntu users get `pythinker-code_x.y.z_<arch>.deb` and Fedora/RHEL/openSUSE users get `pythinker-code-x.y.z.<arch>.rpm`, both attached to every GitHub Release for `x86_64` and `aarch64`. Together with the Windows `PythinkerSetup-x.y.z.exe` shipped in 0.12.0, Pythinker now ships native installers for every supported platform — no Python, Node, or `uv` prerequisite.
- **Cross-OS curl-bash native installer.** `curl -fsSL https://raw.githubusercontent.com/Pythoughts-labs/pythinker-code/main/scripts/install-native.sh | bash` detects your OS + arch, downloads the matching PyInstaller-frozen tarball from the latest Release, verifies its SHA-256, and lands the binary at `~/.local/bin/pythinker`. Supports `linux-x86_64`, `linux-aarch64`, and `macos-arm64`. Honors `--version`, `--prefix`, and `NO_COLOR`.
- **Homebrew tap auto-published on every release.** A new `.github/workflows/homebrew-tap.yml` waits for the PyPI publish to land, runs an in-tree formula generator (replaces the unmaintained `homebrew-pypi-poet` — see release notes for the why), and pushes `Formula/pythinker-code.rb` to the `homebrew-pythinker` tap repo. 132 transitive deps are enumerated automatically — no hand-curation per release.
- **Tag-triggered Linux package pipeline.** A new `.github/workflows/linux-installer.yml` matrix-builds `.deb` and `.rpm` for `x86_64` and `aarch64` (the latter via QEMU on `ubuntu-latest`), then uploads all six artifacts to the GitHub Release via `softprops/action-gh-release@v2`.
- **Frozen-binary data-files fix.** The PyInstaller specs for both the Windows and Linux pipelines now call `collect_data_files(pkg, include_py_files=False)` per package, so `pythinker_code/prompts/*.md`, `agents/default/*.yaml`, `tools/*/description.md`, `skills/*/SKILL.md`, and similar package resources are bundled into `_internal/`. Without this fix the frozen binary crashed the first time it tried to load `init.md` or an agent yaml. The Windows installer that shipped in 0.12.0 is affected; users on that build should upgrade to 0.13.0.
Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Thank you for being interested in contributing to Pythinker CLI!

We welcome all kinds of contributions, including bug fixes, features, document improvements, typo fixes, etc. To maintain a high-quality codebase and user experience, we provide the following guidelines for contributions:

1. We only merge pull requests that align with our roadmap. For any pull request that introduces changes larger than 100 lines of code, we highly recommend discussing with us by [raising an issue](https://github.com/TechMatrix-labs/pythinker-code/issues) or in an existing issue before you start working on it. Otherwise your pull request may be closed or ignored without review.
1. We only merge pull requests that align with our roadmap. For any pull request that introduces changes larger than 100 lines of code, we highly recommend discussing with us by [raising an issue](https://github.com/Pythoughts-labs/pythinker-code/issues) or in an existing issue before you start working on it. Otherwise your pull request may be closed or ignored without review.
2. We insist on high code quality. Please ensure your code is as good as, if not better than, the code written by frontier coding agents. Changes may be requested before your pull request can be merged.

## Prek hooks
Expand Down
Loading
Loading