Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
6915bbf
build: remove linux deb and rpm release artifacts
shantur May 3, 2026
3e9c152
build: normalize release artifact filenames
shantur May 3, 2026
0168703
fix(ui): make idle session badges transient
shantur May 3, 2026
1f46092
build: bundle node runtime for desktop packages
shantur May 4, 2026
ecfbc9e
fix(electron): isolate packaged session storage
shantur May 4, 2026
0f72677
fix(tauri): refresh bundled resources on rebuild (#394)
pascalandr May 7, 2026
dd72c8a
Fix(ui): Support Markdown Math Rendering (#381)
jollyxenon May 7, 2026
3be5af4
feat(ui): allow tab reordering (#399)
shantur May 7, 2026
58ccdae
fix(ui): keep idle badges visible until viewed (#395)
pascalandr May 7, 2026
37b64e3
fix(ui): clear idle badges after viewed sessions
shantur May 7, 2026
3b04528
fix(server): honor workspace root in unrestricted browsing
shantur May 7, 2026
5356cce
docs: require detailed commit messages
shantur May 7, 2026
399a7d9
Disable NomadWorks for now
shantur May 7, 2026
a4bb223
feat(ui): add chat history search (#400)
shantur May 7, 2026
f810273
feat(ui): group model picker by provider
shantur May 7, 2026
e8b5137
fix(tauri): prefer bundled server entry in release (#405)
pascalandr May 8, 2026
faa24af
Add clone repository workspace flow (#397)
pascalandr May 8, 2026
7153169
fix(ui): keep update release link visible (#410)
pascalandr May 8, 2026
d344ef3
fix(ui): tighten home screen spacing
shantur May 9, 2026
c9dff33
feat(ui): show aggregated total tokens and cost for parent sessions i…
OfflinePing May 9, 2026
a0a8da9
fix(ui): hydrate full child sessions for usage totals
shantur May 9, 2026
6d120b0
fix(ui): align primary agent selection with OpenCode (#409)
jollyxenon May 9, 2026
8976d99
fix(ui): drain yolo permissions outside shell render (#424)
pascalandr May 10, 2026
4090989
fix(ui): ignore stale permission events after reply (#425)
pascalandr May 10, 2026
3425310
feat(ui): make message timeline hideable (#428)
pascalandr May 10, 2026
e0194ec
fix(ui): reconcile permission tool attachments (#426)
pascalandr May 10, 2026
9543292
fix(desktop): keep remote window server titles (#429)
shantur May 10, 2026
562c632
fix(ui): follow up idle badge behavior (#423)
pascalandr May 10, 2026
a3231c3
fix(ui): return to active projects from home (#411)
pascalandr May 10, 2026
efe3f50
Add session web preview mode (#430)
shantur May 10, 2026
8e6780c
fix(ui): align prompt attachment picker with drop behavior (#432)
shantur May 11, 2026
9165299
Refactor workspace startup and empty session states (#434)
shantur May 11, 2026
cf88dc0
Package CodeNomad OpenCode plugin (#433)
shantur May 12, 2026
ca076f4
fix(ui): remove active project return action
shantur May 12, 2026
d9af413
Improve prompt layout for narrow session panes (#437)
shantur May 12, 2026
533ccac
fix(ui): base timeline width on center pane
shantur May 12, 2026
5570929
Improve messages layouts on narrow screens (#438)
shantur May 12, 2026
0eca320
Use never release notes format
shantur May 14, 2026
779202d
Increment version to 0.16.0
shantur May 14, 2026
d3950df
Merge branch 'dev' of github.com:NeuralNomadsAI/CodeNomad into dev
shantur May 14, 2026
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
107 changes: 34 additions & 73 deletions .github/workflows/build-and-upload.yml
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,9 @@ jobs:
- name: Build macOS binaries (Electron)
run: npm run build:mac --workspace @neuralnomads/codenomad-electron-app

- name: Verify bundled Node resource (Electron macOS)
run: node scripts/verify-bundled-node.cjs packages/electron-app/release/mac/CodeNomad.app/Contents/Resources@darwin-x64 packages/electron-app/release/mac-arm64/CodeNomad.app/Contents/Resources@darwin-arm64

- name: Ad-hoc sign Electron macOS app bundles (seal resources)
shell: bash
run: |
Expand Down Expand Up @@ -162,7 +165,7 @@ jobs:
arch="arm64"
fi

out_zip="$release_root/CodeNomad-${VERSION_TO_USE}-mac-${arch}.zip"
out_zip="$release_root/CodeNomad-Electron-macos-${arch}-${VERSION_TO_USE}.zip"
rm -f "$out_zip"
echo "ditto -ck: $app -> $out_zip"
ditto -ck --sequesterRsrc --keepParent "$app" "$out_zip"
Expand All @@ -177,7 +180,7 @@ jobs:
tmp_dir=$(mktemp -d)
trap 'rm -rf "$tmp_dir"' EXIT

zips=(packages/electron-app/release/CodeNomad-*-mac-*.zip)
zips=(packages/electron-app/release/CodeNomad-Electron-macos-*.zip)
if [ "${#zips[@]}" -eq 0 ]; then
echo "No Electron macOS zip artifacts found to validate" >&2
exit 1
Expand Down Expand Up @@ -259,6 +262,9 @@ jobs:
- name: Build Windows binaries (Electron)
run: npm run build:win --workspace @neuralnomads/codenomad-electron-app

- name: Verify bundled Node resource (Electron Windows)
run: node scripts/verify-bundled-node.cjs packages/electron-app/electron/resources@win32-x64

- name: Upload release assets
if: ${{ inputs.upload && inputs.tag != '' }}
shell: pwsh
Expand Down Expand Up @@ -308,6 +314,9 @@ jobs:
- name: Build Linux binaries (Electron)
run: npm run build:linux --workspace @neuralnomads/codenomad-electron-app

- name: Verify bundled Node resource (Electron Linux)
run: node scripts/verify-bundled-node.cjs packages/electron-app/electron/resources@linux-x64

- name: Upload release assets
if: ${{ inputs.upload && inputs.tag != '' }}
run: |
Expand Down Expand Up @@ -364,6 +373,9 @@ jobs:
- name: Prebuild (Tauri)
run: npm run prebuild --workspace @codenomad/tauri-app

- name: Verify bundled Node resource (Tauri macOS x64)
run: node scripts/verify-bundled-node.cjs packages/tauri-app/src-tauri/resources@darwin-x64

- name: Ensure tauri native binary
working-directory: packages/tauri-app
run: |
Expand Down Expand Up @@ -391,7 +403,7 @@ jobs:
rm -rf "$ARTIFACT_DIR"
mkdir -p "$ARTIFACT_DIR"
if [ -d "$BUNDLE_ROOT/macos/CodeNomad.app" ]; then
ditto -ck --sequesterRsrc --keepParent "$BUNDLE_ROOT/macos/CodeNomad.app" "$ARTIFACT_DIR/CodeNomad-Tauri-${VERSION}-macos-x64.zip"
ditto -ck --sequesterRsrc --keepParent "$BUNDLE_ROOT/macos/CodeNomad.app" "$ARTIFACT_DIR/CodeNomad-Tauri-macos-x64-${VERSION}.zip"
fi

- name: Upload Actions artifacts (Tauri macOS)
Expand Down Expand Up @@ -448,6 +460,9 @@ jobs:
- name: Prebuild (Tauri)
run: npm run prebuild --workspace @codenomad/tauri-app

- name: Verify bundled Node resource (Tauri macOS arm64)
run: node scripts/verify-bundled-node.cjs packages/tauri-app/src-tauri/resources@darwin-arm64

- name: Ensure tauri native binary
working-directory: packages/tauri-app
run: |
Expand Down Expand Up @@ -475,7 +490,7 @@ jobs:
rm -rf "$ARTIFACT_DIR"
mkdir -p "$ARTIFACT_DIR"
if [ -d "$BUNDLE_ROOT/macos/CodeNomad.app" ]; then
ditto -ck --sequesterRsrc --keepParent "$BUNDLE_ROOT/macos/CodeNomad.app" "$ARTIFACT_DIR/CodeNomad-Tauri-${VERSION}-macos-arm64.zip"
ditto -ck --sequesterRsrc --keepParent "$BUNDLE_ROOT/macos/CodeNomad.app" "$ARTIFACT_DIR/CodeNomad-Tauri-macos-arm64-${VERSION}.zip"
fi

- name: Upload Actions artifacts (Tauri macOS arm64)
Expand Down Expand Up @@ -533,6 +548,9 @@ jobs:
- name: Prebuild (Tauri)
run: npm run prebuild --workspace @codenomad/tauri-app

- name: Verify bundled Node resource (Tauri Windows)
run: node scripts/verify-bundled-node.cjs packages/tauri-app/src-tauri/resources@win32-x64

- name: Ensure tauri native binary
shell: bash
working-directory: packages/tauri-app
Expand Down Expand Up @@ -563,7 +581,7 @@ jobs:
New-Item -ItemType Directory -Path $artifactDir | Out-Null
$exe = Get-ChildItem -Path $bundleRoot -Recurse -File -Filter *.exe | Select-Object -First 1
if ($null -ne $exe) {
$dest = Join-Path $artifactDir ("CodeNomad-Tauri-$env:VERSION-windows-x64.zip")
$dest = Join-Path $artifactDir ("CodeNomad-Tauri-windows-x64-$env:VERSION.zip")
Compress-Archive -Path $exe.Directory.FullName -DestinationPath $dest -Force
}

Expand Down Expand Up @@ -634,6 +652,9 @@ jobs:
- name: Prebuild (Tauri)
run: npm run prebuild --workspace @codenomad/tauri-app

- name: Verify bundled Node resource (Tauri Linux)
run: node scripts/verify-bundled-node.cjs packages/tauri-app/src-tauri/resources@linux-x64

- name: Ensure tauri native binary
working-directory: packages/tauri-app
run: |
Expand Down Expand Up @@ -667,17 +688,15 @@ jobs:
}

appimage=$(find_one "*.AppImage")
deb=$(find_one "*.deb")
rpm=$(find_one "*.rpm")
fallback_bin="$SEARCH_ROOT/release/codenomad-tauri"

if [ -z "$appimage" ] || [ -z "$deb" ] || [ -z "$rpm" ]; then
echo "Missing bundle(s): appimage=${appimage:-none} deb=${deb:-none} rpm=${rpm:-none}" >&2
if [ -z "$appimage" ] || [ ! -f "$fallback_bin" ]; then
echo "Missing bundle(s): appimage=${appimage:-none} binary=$fallback_bin" >&2
exit 1
fi

cp "$appimage" "$ARTIFACT_DIR/CodeNomad-Tauri-${VERSION}-linux-x64.AppImage"
cp "$deb" "$ARTIFACT_DIR/CodeNomad-Tauri-${VERSION}-linux-x64.deb"
cp "$rpm" "$ARTIFACT_DIR/CodeNomad-Tauri-${VERSION}-linux-x64.rpm"
cp "$appimage" "$ARTIFACT_DIR/CodeNomad-Tauri-linux-x64-${VERSION}.AppImage"
zip -j "$ARTIFACT_DIR/CodeNomad-Tauri-linux-x64-${VERSION}.zip" "$fallback_bin"

- name: Upload Actions artifacts (Tauri Linux)
if: ${{ inputs.upload_actions_artifacts }}
Expand Down Expand Up @@ -776,12 +795,12 @@ jobs:
rm -rf "$ARTIFACT_DIR"
mkdir -p "$ARTIFACT_DIR"
shopt -s nullglob globstar
first_artifact=$(find "$SEARCH_ROOT" -type f \( -name "*.AppImage" -o -name "*.deb" -o -name "*.rpm" -o -name "*.tar.gz" \) | head -n1)
first_artifact=$(find "$SEARCH_ROOT" -type f \( -name "*.AppImage" -o -name "*.tar.gz" \) | head -n1)
fallback_bin="$SEARCH_ROOT/release/codenomad-tauri"
if [ -n "$first_artifact" ]; then
zip -j "$ARTIFACT_DIR/CodeNomad-Tauri-${VERSION}-linux-x64.zip" "$first_artifact"
zip -j "$ARTIFACT_DIR/CodeNomad-Tauri-linux-arm64-${VERSION}.zip" "$first_artifact"
elif [ -f "$fallback_bin" ]; then
zip -j "$ARTIFACT_DIR/CodeNomad-Tauri-${VERSION}-linux-x64.zip" "$fallback_bin"
zip -j "$ARTIFACT_DIR/CodeNomad-Tauri-linux-arm64-${VERSION}.zip" "$fallback_bin"
else
echo "No bundled artifact found under $SEARCH_ROOT and no binary at $fallback_bin" >&2
exit 1
Expand All @@ -797,61 +816,3 @@ jobs:
echo "Uploading $file"
gh release upload "$TAG" "$file" --clobber
done


build-linux-rpm:
runs-on: ubuntu-24.04
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
VERSION: ${{ inputs.version }}
TAG: ${{ inputs.tag }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ inputs.ref || github.ref }}

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: npm

- name: Install rpm packaging dependencies
run: |
sudo apt-get update
sudo apt-get install -y rpm ruby ruby-dev build-essential
sudo gem install --no-document fpm

- name: Set workspace versions
if: ${{ inputs.set_versions && inputs.version != '' }}
run: npm version ${VERSION} --workspaces --include-workspace-root --no-git-tag-version --allow-same-version

- name: Install project dependencies
run: npm ci --workspaces --include=optional

- name: Ensure rollup native binary
run: npm install @rollup/rollup-linux-x64-gnu --no-save

- name: Build Linux RPM binaries
run: npm run build:linux-rpm --workspace @neuralnomads/codenomad-electron-app

- name: Upload RPM release assets
if: ${{ inputs.upload && inputs.tag != '' }}
run: |
set -euo pipefail
shopt -s nullglob
for file in packages/electron-app/release/*.rpm; do
[ -f "$file" ] || continue
echo "Uploading $file"
gh release upload "$TAG" "$file" --clobber
done

- name: Upload Actions artifacts (Electron Linux RPM)
if: ${{ inputs.upload_actions_artifacts }}
uses: actions/upload-artifact@v4
with:
name: ${{ inputs.actions_artifacts_name_prefix }}electron-linux-rpm
path: packages/electron-app/release/*.rpm
retention-days: ${{ inputs.actions_artifacts_retention_days }}
if-no-files-found: error
2 changes: 1 addition & 1 deletion .nomadworks/nomadworks.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# NomadWorks repository configuration
enabled: true
enabled: false
team_mode: full

defaults:
Expand Down
2 changes: 1 addition & 1 deletion .opencode/commands/release-notes.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@ description: Creates release notes
agent: build
---

Check how I do prepare release notes here - https://github.com/NeuralNomadsAI/CodeNomad/releases/tag/v0.7.0
Check how I do prepare release notes here - https://github.com/NeuralNomadsAI/CodeNomad/releases/tag/v0.15.0
Use the same format to create release notes from users perspective for new release by looking at changes from last tagged release to tip of branch
2 changes: 1 addition & 1 deletion .opencode/opencode.jsonc
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"$schema": "https://opencode.ai/config.json",
"plugin": [
"@neuralnomads/nomadworks@0.1.0-rc.10"
// "@neuralnomads/nomadworks@0.1.0-rc.10"
]
}
4 changes: 4 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,3 +47,7 @@ Behavior for agents:
## Tooling Preferences
- Use the `edit` tool for modifying existing files; prefer it over other editing methods.
- Use the `write` tool only when creating new files from scratch.

## Commit Message Guidelines
- When creating commits, use detailed commit messages: a concise conventional-style subject followed by body paragraphs that explain the user-visible behavior change, the implementation approach, important edge cases or platform considerations, and the validation or test coverage added.
- Prefer messages that explain why the change exists and how regressions are prevented, not just a list of touched files.
Loading
Loading