Skip to content

BusyBoxVi and Neatvi - #51

Merged
KenVanHoeylandt merged 12 commits into
mainfrom
busybox-vi-and-neatvi
Oct 3, 2026
Merged

KenVanHoeylandt merged 12 commits into
mainfrom
busybox-vi-and-neatvi

Conversation

@KenVanHoeylandt

@KenVanHoeylandt KenVanHoeylandt commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

Summary by CodeRabbit

  • New Features
    • Added Neatvi, a terminal text editor with vi and ex modes, syntax highlighting, undo and redo, and support for multiple files.
    • Added BusyBox vi as another terminal editing option.
  • Improvements
    • SDK builds now use the platform configuration bundled with the SDK. Non-POSIX SDKs must include this configuration; SDKs missing it are refreshed.
    • The Tactility tool now updates from the selected SDK release and caches SDK metadata by version.
    • App release metadata now supports RAM requirements and required device IDs.
  • App Updates
    • Updated version information for multiple apps, including Calculator, Doom, and Snake.

@coderabbitai

coderabbitai Bot commented Oct 1, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 628ffb3a-813c-4795-9beb-87e4ad6d2bb1
📥 Commits

Reviewing files that changed from the base of the PR and between f5c5b0d and 1251b84.

📒 Files selected for processing (3)
  • Apps/Neatvi/main/Source/ex.c
  • Apps/Neatvi/main/Source/term.c
  • Apps/Neatvi/main/Source/vi.h
🚧 Files skipped from review as they are similar to previous changes (3)
  • Apps/Neatvi/main/Source/vi.h
  • Apps/Neatvi/main/Source/term.c
  • Apps/Neatvi/main/Source/ex.c

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

The changes add BusyBox vi and Neatvi as apps, with editor implementations, app manifests, build configuration, and documentation. They also update SDK metadata and SDK configuration handling, add device and RAM requirements to release output, and correct script paths in release workflows. Nineteen existing app manifests receive version updates.

Priority: ⬇️ Low

Merge Risk: ⚪ Minimal · up to 1251b

The documented mapping reset works, and the changed quit path still completes cleanup. No actionable merge-blocking risk remains.

Security Architecture Review

Security architecture risk: 🔵 Low · up to f5c5b

The editors keep external command execution disabled, and publishing credentials retain their existing authority. The new save paths have file-integrity risks during storage failures. Runtime filesystem isolation remains unverified.

Retained concerns

  • Medium · reliability · observed: The newly introduced editors overwrite existing files without preserving a recoverable pre-save version. A write failure after partial progress can leave modified contents on disk; BusyBox additionally truncates to the partial byte count before checking completeness. Both editors ignore ftruncate failure, so an unsuccessful shortening operation can still be accepted as a completed save. This weakens persistence integrity and rollback for files the editor process can modify.
Security review details

Security Blast Radius

  • inferred — The demonstrated editor exposure comprises files accessible to the invoking app process, selected through file arguments or editor commands. Terminal and startup-command input can control those operations. The maximum cross-app, device, or host filesystem scope cannot be determined without runtime identity and permission enforcement evidence; remote attacker reachability is not established.

Trust Boundaries and Controls

  • observed — Publication still passes the existing CDN credentials to the same uploader implementation, relocated without content changes. The uploader writes to the tactility bucket under apps/{sdk_version}/ and uploads apps.json last. The action path change does not itself add credential authority.

Resilience and Maintainability Implications

  • observed — SDK configuration is now associated with the requested SDK version. Local SDK validation and configuration copying reject missing ESP32 configuration, and a failed non-local SDK preparation prevents the build action from proceeding.

Hardening Proposals

  • proposed — Define a recoverable save protocol for supported filesystems: preserve the prior file until replacement succeeds, check truncation and close results, and retain modified state on every failed persistence step. Where atomic replacement is unavailable, use an explicit backup or recovery mechanism.
  • proposed — Make SDK repair ownership explicit with unique staging directories and serialization for each version/platform cache, plus a recoverable commit step that preserves the old cache until replacement is installed.
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 18.66% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 477 functions across 28 files. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title names BusyBoxVi and Neatvi, the two editor apps added by this pull request.
  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Autopilot is currently an internal CodeRabbit preview.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4


ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 4694cf92-4ead-4247-9cd2-cc76d9f363ca

📥 Commits

Reviewing files that changed from the base of the PR and between 3aa8df0 and a075732.

📒 Files selected for processing (63)
  • .github/actions/publish-apps/action.yml
  • .github/actions/release-apps/action.yml
  • .gitignore
  • Apps/Brainfuck/manifest.properties
  • Apps/Breakout/manifest.properties
  • Apps/BusyBoxVi/CMakeLists.txt
  • Apps/BusyBoxVi/LICENSE
  • Apps/BusyBoxVi/README.md
  • Apps/BusyBoxVi/main/CMakeLists.txt
  • Apps/BusyBoxVi/main/Include/libbb.h
  • Apps/BusyBoxVi/main/Source/libbb.c
  • Apps/BusyBoxVi/main/Source/main.c
  • Apps/BusyBoxVi/main/Source/read_key.c
  • Apps/BusyBoxVi/main/Source/vi.c
  • Apps/BusyBoxVi/manifest.properties
  • Apps/Calculator/manifest.properties
  • Apps/Diceware/manifest.properties
  • Apps/Doom/manifest.properties
  • Apps/EpubReader/manifest.properties
  • Apps/EspNowBridge/manifest.properties
  • Apps/GPIO/manifest.properties
  • Apps/GraphicsDemo/manifest.properties
  • Apps/HelloWorld/manifest.properties
  • Apps/M5UnitTest/manifest.properties
  • Apps/Magic8Ball/manifest.properties
  • Apps/MediaKeys/manifest.properties
  • Apps/MystifyDemo/manifest.properties
  • Apps/Neatvi/CMakeLists.txt
  • Apps/Neatvi/LICENSE
  • Apps/Neatvi/README.md
  • Apps/Neatvi/main/CMakeLists.txt
  • Apps/Neatvi/main/Source/README.neatvi
  • Apps/Neatvi/main/Source/conf.c
  • Apps/Neatvi/main/Source/conf.h
  • Apps/Neatvi/main/Source/dir.c
  • Apps/Neatvi/main/Source/ex.c
  • Apps/Neatvi/main/Source/kmap.h
  • Apps/Neatvi/main/Source/lbuf.c
  • Apps/Neatvi/main/Source/led.c
  • Apps/Neatvi/main/Source/mot.c
  • Apps/Neatvi/main/Source/reg.c
  • Apps/Neatvi/main/Source/regex.c
  • Apps/Neatvi/main/Source/regex.h
  • Apps/Neatvi/main/Source/ren.c
  • Apps/Neatvi/main/Source/rset.c
  • Apps/Neatvi/main/Source/rstr.c
  • Apps/Neatvi/main/Source/sbuf.c
  • Apps/Neatvi/main/Source/syn.c
  • Apps/Neatvi/main/Source/tactility.c
  • Apps/Neatvi/main/Source/tag.c
  • Apps/Neatvi/main/Source/term.c
  • Apps/Neatvi/main/Source/uc.c
  • Apps/Neatvi/main/Source/vi.c
  • Apps/Neatvi/main/Source/vi.h
  • Apps/Neatvi/manifest.properties
  • Apps/SerialConsole/manifest.properties
  • Apps/Snake/manifest.properties
  • Apps/TamaTac/manifest.properties
  • Apps/TodoList/manifest.properties
  • Apps/TwoEleven/manifest.properties
  • Scripts/release.py
  • Scripts/upload-app-files.py
  • tactility.py

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

Comment thread Apps/BusyBoxVi/main/Source/libbb.c
Comment thread Apps/Neatvi/main/Source/ex.c
Comment thread Apps/Neatvi/main/Source/ex.c
Comment thread Apps/Neatvi/main/Source/ex.c Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1


ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: af6e1f7e-7196-4767-9752-2e5a87a0ff82

📥 Commits

Reviewing files that changed from the base of the PR and between a075732 and 9d18222.

📒 Files selected for processing (4)
  • Apps/BusyBoxVi/main/Source/libbb.c
  • Apps/BusyBoxVi/main/Source/main.c
  • Apps/Neatvi/main/Source/conf.c
  • Apps/Neatvi/main/Source/ex.c
🚧 Files skipped from review as they are similar to previous changes (1)
  • Apps/Neatvi/main/Source/ex.c

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

Comment thread Apps/BusyBoxVi/main/Source/libbb.c

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1


ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: f82a9bf0-7709-42c1-9619-3223a9cd8053

📥 Commits

Reviewing files that changed from the base of the PR and between 9d18222 and 932323a.

📒 Files selected for processing (2)
  • Apps/BusyBoxVi/main/Source/main.c
  • Apps/BusyBoxVi/main/Source/vi.c

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

Comment thread Apps/BusyBoxVi/main/Source/main.c

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2


ℹ️ Review info
⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 69222b6f-f374-4af8-95aa-2177b3a28a8d
📥 Commits

Reviewing files that changed from the base of the PR and between 932323a and f5c5b0d.

📒 Files selected for processing (2)
  • Apps/BusyBoxVi/main/Source/vi.c
  • Apps/Neatvi/main/Source/vi.c

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

Comment thread Apps/Neatvi/main/Source/vi.c
Comment thread Apps/Neatvi/main/Source/vi.c
@KenVanHoeylandt KenVanHoeylandt changed the title Busybox vi and neatvi BusyBoxVi and Neatvi Oct 3, 2026
@KenVanHoeylandt
KenVanHoeylandt merged commit 9c05145 into main Oct 3, 2026
25 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant