Skip to content

Fix terminal contrast, protect edits and session identity, and stabilize refresh (0.0.45) - #156

Merged
glenn-jocher merged 4 commits into
mainfrom
fix/terminal-theme-background
Sep 4, 2026
Merged

Fix terminal contrast, protect edits and session identity, and stabilize refresh (0.0.45)#156
glenn-jocher merged 4 commits into
mainfrom
fix/terminal-theme-background

Conversation

@glenn-jocher

@glenn-jocher glenn-jocher commented Sep 4, 2026

Copy link
Copy Markdown
Member

Fix terminal contrast and the confirmed application audit findings in release 0.0.45. Codex input remains readable after a theme switch, file/session actions protect unsaved work, and refreshing Git no longer inserts a status row that shifts the cards.

  • Enable xterm's existing minimum contrast handling and bump 0.0.44 → 0.0.45.
  • Preserve the exact worktree deletion approval; reject local and SSH saves when the file differs from the opened contents; prevent session restart/close, app close, and update installation from discarding dirty editor drafts.
  • Associate Codex conversations with the identity reported by their own PTY title, replacing directory-level polling that could claim another tab's conversation. Keep Kimi credentials owned by its CLI and remove Lite's provider-config key read/delete path.
  • Unmount inactive Markdown previews, cancel and bound explicit file-search traversal, advance zero-width regex matches, and move blocking filesystem/Git/usage operations onto the existing blocking runtime path.
  • Track rebuild completion at the launched command so failures can be retried while the shell retains its output. Use Base UI's emitted orientation attributes directly. Rotate the existing refresh/restart icons consistently, including provider updates.

Validation:

  • bun run check, bun test (20 tests), bun run build, cargo fmt --check, and cargo test (7 tests) pass locally.
  • Chromium and WebKit fixtures exercise the actual production components: unchanged Git card position throughout delayed refresh, rotating refresh icons, dirty-draft retention after save conflicts, zero-width regex navigation, canceled search requests, and the 10,000-entry search bound. The 54.5 KB Markdown fixture has zero hidden preview nodes; draft updates fall from roughly 60–86 ms to 1–2 ms in these fixtures.
  • Disposable Git worktree validation preserves changes written after a narrower deletion approval. Extracted native local/SSH save owners preserve newer disk contents; local checks also cover Unicode/CRLF, grown files, and deleted files.
  • Two real isolated Codex PTYs in the same folder resolve to their own conversations when the second tab receives the first prompt. Kimi status uses sign-in file existence (without opening it) plus the public CLI provider summary. Isolated empty, API-key, OAuth, and signed-out cases pass without exposing keys or modifying configuration.
  • The actual Unix rebuild command reports completion after a deliberate failure and retains its shell; completion parsing succeeds at every byte split. Existing terminal link-capture timing is preserved because dropping its leading scan could lose transient TUI links.

Browser fixtures use simulated native IPC; SSH script validation is local rather than an SSH end-to-end run. Save comparison detects pre-existing conflicts but does not lock out independent writers between comparison and replacement. Cross-platform compilation is covered by CI.

Hold merge for maintainer validation of the updated local Lite Dev 0.0.45 build.

🛠️ PR Summary

Made with ❤️ by Ultralytics Actions

🌟 Summary

Lite 0.0.45 improves terminal readability and protects unsaved work while stabilizing Codex session association, file search, Git refresh, provider status, and rebuild handling.

📊 Key Changes

  • Enabled xterm minimum contrast handling and updated the application version from 0.0.44 to 0.0.45.
  • Added dirty-editor safeguards for local and SSH saves, session restart/close, application close, closing all sessions, and update installation; saves now compare against the file contents originally opened.
  • Replaced directory-level Codex session discovery with PTY-title-based association, and changed Kimi authentication checks to use CLI-owned credentials and provider summaries without reading or deleting provider keys from Lite.
  • Added cancellation and a 10,000-entry limit to file-tree traversal, advanced zero-width regex search matches, unmounted inactive Markdown previews, and moved blocking filesystem, Git, and usage work to blocking runtime tasks.
  • Stabilized refresh and rebuild workflows with rotating refresh icons, direct Base UI orientation attributes, delayed Git status rendering, and rebuild completion tracking that keeps the shell open after success or failure.

🎯 Purpose & Impact

  • Unsaved editor drafts now block destructive session and application actions, while save conflicts are reported instead of overwriting newer on-disk contents.
  • Codex tabs resolve conversations from their own reported PTY identity, reducing incorrect associations between tabs using the same folder.
  • Large or canceled file searches stop safely and report when the 10,000-entry traversal limit is reached; inactive Markdown previews no longer remain mounted.
  • Git, filesystem, and usage operations run through the blocking runtime path, reducing their ability to block the application interface.
  • Rebuild sessions retain command output and can be retried after a failure; provider and refresh actions now show consistent rotating indicators.
📋 Skipped 1 file (lock files, generated, images, etc.)
  • src-tauri/Cargo.lock

@UltralyticsAssistant UltralyticsAssistant added App Ultralytics App issues bug Something isn't working fixed Bug has been resolved labels Sep 4, 2026
@UltralyticsAssistant

Copy link
Copy Markdown
Member

👋 Hello @glenn-jocher, thank you for submitting a ultralytics/lite 🚀 PR! This automated message confirms your contribution was received, and an Ultralytics engineer will assist with the review. To ensure a seamless integration of your work, please review the following checklist:

  • Define a Purpose: Clearly explain the purpose of your fix or feature in your PR description, and link to any relevant issues. Ensure your commit messages are clear, concise, and adhere to the project's conventions.
  • Synchronize with Source: Confirm your PR is synchronized with the ultralytics/lite main branch. If it's behind, update it by clicking the 'Update branch' button or by running git pull and git merge main locally.
  • Ensure CI Checks Pass: Verify all Ultralytics Continuous Integration (CI) checks are passing. If any checks fail, please address the issues.
  • Update Documentation: Update the relevant documentation for any new or modified features.
  • Add Tests: If applicable, include or update tests to cover your changes, and confirm that all tests are passing.
  • Sign the CLA: Please ensure you have signed our Contributor License Agreement if this is your first Ultralytics PR by writing "I have read the CLA Document and I sign the CLA" in a new message.
  • Minimize Changes: Limit your changes to the minimum necessary for your bug fix or feature addition. "It is not daily increase but daily decrease, hack away the unessential. The closer to the source, the less wastage there is." — Bruce Lee

For more guidance, please refer to our Contributing Guide. Don't hesitate to leave a comment if you have any questions. Thank you for contributing to Ultralytics! 🚀

@UltralyticsAssistant UltralyticsAssistant left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

🔍 PR Review

Made with ❤️ by Ultralytics Actions

Reviewed the version bump and xterm contrast configuration. No concrete correctness, compatibility, security, or performance issues found. LGTM.

📋 Skipped 1 file (lock files, generated, images, etc.)
  • src-tauri/Cargo.lock

@glenn-jocher glenn-jocher changed the title Fix terminal input contrast and release 0.0.45 Fix terminal contrast, protect edits and session identity, and stabilize refresh (0.0.45) Sep 4, 2026
@UltralyticsAssistant
UltralyticsAssistant dismissed their stale review September 4, 2026 22:36

Superseded by new review

@UltralyticsAssistant UltralyticsAssistant left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

🔍 PR Review 2

Made with ❤️ by Ultralytics Actions

Reviewed the current 12-file diff, including the changes since the prior LGTM. The contrast/version changes remain clean, and the editor protection, refresh, search, rebuild, and session-association paths are otherwise consistent. One Kimi OAuth status regression remains: provider list cannot detect managed /login accounts.

💬 Posted 1 inline comment
  • 💡 MEDIUM src-tauri/src/lib.rs:2823 This reports a valid Kimi OAuth login as unauthenticated: Kimi's managed OAuth account is intentionally omitted from kimi provider list, so an account configured through /login never produces a type= line. Settings will therefore show “Not set up” and offer sign-in even though Kimi is authenticated. Query the CLI's managed-auth status/auth snapshot instead of using the provider list for this check.
📋 Skipped 1 file (lock files, generated, images, etc.)
  • src-tauri/Cargo.lock

Comment thread src-tauri/src/lib.rs Outdated
Comment thread src-tauri/src/lib.rs Outdated

@UltralyticsAssistant UltralyticsAssistant left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

🔍 PR Review 3

Made with ❤️ by Ultralytics Actions

Since review 2, the Kimi authentication regression is addressed by the presence-only credential check and OAuth fallback handling. The remaining changes are otherwise consistent, but clearing a capped file search leaves a stale 10,000-entry warning visible; this is a bounded UI state bug.

💬 Posted 1 inline comment
  • 📝 LOW src/inspector.tsx:602 When a search reaches the 10,000-entry cap, limited is set to true; clearing the query only stops expansion and aborts the walk, so the unconditional banner at lines 786–790 remains while browsing the tree normally. Reset limited when !lowered (or render the banner only while a query is active).
📋 Skipped 1 file (lock files, generated, images, etc.)
  • src-tauri/Cargo.lock

Comment thread src/inspector.tsx Outdated
Comment thread src/inspector.tsx Outdated

@UltralyticsAssistant UltralyticsAssistant left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

🔍 PR Review 4

Made with ❤️ by Ultralytics Actions

Review 4: the stale file-search limit notice from review 3 is addressed, and the earlier Kimi authentication finding remains fixed. I found no new concrete correctness, security, data-loss, compatibility, or performance issues in the current diff. LGTM.

📋 Skipped 1 file (lock files, generated, images, etc.)
  • src-tauri/Cargo.lock

@glenn-jocher
glenn-jocher merged commit c41bd85 into main Sep 4, 2026
6 checks passed
@glenn-jocher
glenn-jocher deleted the fix/terminal-theme-background branch September 4, 2026 22:57
@UltralyticsAssistant

Copy link
Copy Markdown
Member

🎉 Fantastic work getting PR #156 merged, @glenn-jocher!

“Alone we can do so little; together we can do so much.” — Helen Keller

This release brings that spirit to Lite with safer unsaved-work handling, more reliable Codex session association, bounded file search, and smoother Git, provider, refresh, and rebuild workflows. Thank you for the thoughtful improvements in Lite 0.0.45!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

App Ultralytics App issues bug Something isn't working fixed Bug has been resolved

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants