Skip to content

feat: tab completion bell chime and sound driver cleanup#207

Merged
ryanbreen merged 3 commits intomainfrom
feat/audio-bell-and-fixes
Feb 13, 2026
Merged

feat: tab completion bell chime and sound driver cleanup#207
ryanbreen merged 3 commits intomainfrom
feat/audio-bell-and-fixes

Conversation

@ryanbreen
Copy link
Owner

Summary

  • Add terminal bell to bsh shell that plays a short 880 Hz (A5) chime on ambiguous or empty tab completions, using lazy audio init and fixed-point sine synthesis
  • Remove debug logging from the VirtIO MMIO sound driver added during initial bring-up
  • Fix VirtIO sound format/rate enum values to match spec (S16=5, RATE_44100=6)

Test plan

  • ARM64 kernel builds clean (zero warnings, zero errors)
  • x86_64 kernel builds clean (zero warnings, zero errors)
  • Tested tones program plays audio through QEMU
  • Tested tab completion bell plays on multiple matches
  • Tested tab completion bell plays on no matches

🤖 Generated with Claude Code

ryanbreen and others added 3 commits February 13, 2026 05:12
Add tab completion that includes JS builtins (Promise, JSON, Math, etc.),
registered native functions (exec, cd, pwd, etc.), and user-defined globals
alongside PATH executables. Also fix arrow keys (Up/Down/Left/Right), Home,
End, and Delete by generating VT100 escape sequences in the ARM64 virtio-input
keyboard handler — these keycodes were previously silently dropped.

Co-Authored-By: Ryan Breen <ryanbreen@gmail.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…cleanup

Audio support:
- VirtIO sound drivers for PCI (x86_64) and MMIO (ARM64)
- Audio syscalls (AudioInit 420, AudioWrite 421) wired into both architectures
- libbreenix audio module with init/write wrappers
- Tones demo program generating PCM sine waves
- QEMU coreaudio backend configured in run.sh

Syscall unification:
- Remove ARM64-only syscall/io.rs; ARM64 now shares handlers.rs with x86_64
- cfg-gate x86_64-specific code (fork, exec, keyboard) inside handlers.rs
- Replace Cpu::halt_with_interrupts() and Cpu::without_interrupts() with
  arch-agnostic wrappers (arch_halt_with_interrupts, arch_without_interrupts)
- Fix copy_from_user to use validate_user_buffer for broader address validation
- Update ARM64 dispatch table to route I/O syscalls through shared handlers

ELF loader cleanup:
- Convert per-page serial_println! noise to log::trace! (invisible at default
  log levels); summary messages downgraded to log::debug!

Co-Authored-By: Ryan Breen <ryanbreen@gmail.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add terminal bell to bsh that plays a short 880 Hz chime on ambiguous
or empty tab completions. Uses lazy audio init and fixed-point sine
synthesis. Also removes debug logging from the MMIO sound driver and
fixes VirtIO sound format/rate enum values (S16=5, RATE_44100=6).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@ryanbreen ryanbreen merged commit 16ea806 into main Feb 13, 2026
3 of 4 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