buninu-linux 0.7.1 → 0.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -46,7 +46,7 @@
46
46
  + Also has mouse click, wheel, and cursor drawing
47
47
  + Simplified browser works: @sanohiro/casty in chroot debian
48
48
  + (Use at your own risk: We haven't fully examined its code)
49
- + Playing YouTube with sound(experimental)
49
+ + Playing YouTube with sound (experimental); see [Playing YouTube with sound](#playing-youtube-with-sound-experimental)
50
50
  + See [Commands inside `/bin`](#commands-inside-bin) for browser usage instructions
51
51
 
52
52
  ---
@@ -373,7 +373,7 @@ If `Enter` is not recognized in a particular terminal, try `Ctrl-J` or
373
373
  - Be careful not to run markdown files from strangers
374
374
  * Otherwise it can run any command on your PC
375
375
  - `jsmdcui --cdp-maze` runs a self-solving maze game
376
- * Run `bunterm` first to show its Emojis
376
+ * Run `bunterm 2` first to show its Emojis
377
377
 
378
378
  ### Multitasking modes
379
379
 
@@ -480,11 +480,13 @@ syntax, interactive controls, builtins, and current compatibility details.
480
480
  ### Showing images
481
481
 
482
482
  The Linux text console cannot draw pictures, so first start `bunterm`, the
483
- graphical terminal on the framebuffer, and run the image commands inside it:
483
+ graphical terminal on the framebuffer, and run the image commands inside it.
484
+ Start it on another virtual console so tty1 keeps the `bun-repl>` prompt for
485
+ hardware setup (`Ctrl+Alt+F1` goes back to it):
484
486
 
485
487
  ```sh
486
- # Start the graphical terminal on this virtual console (or name one: bunterm /dev/tty1)
487
- bunterm
488
+ # Start the graphical terminal on VT 2 (same as bunterm /dev/tty2)
489
+ bunterm 2
488
490
 
489
491
  # Show an image with the kitty graphics protocol (jsgotty --viu)
490
492
  showimg /buninu/icon.png
@@ -497,7 +499,8 @@ buninu-help
497
499
  jsmdcui --allow-url README.md
498
500
 
499
501
  # The mouse works in bunterm; --no-mouse leaves /dev/input alone
500
- bunterm -e jsmdcui --allow-url README.md
502
+ # (VT 3, since VT 2 already has the bunterm started above)
503
+ bunterm 3 -e jsmdcui --allow-url README.md
501
504
  ```
502
505
 
503
506
  `bunterm` draws with Skia (CanvasKit) and understands the kitty graphics
@@ -534,6 +537,67 @@ bun x @drxiaozhi/jspinyin
534
537
  OSC 52, and `Ctrl-V` pastes it in jsmdcui or jspinyin, since jsmdcui reads
535
538
  from `xclip` first by default.
536
539
 
540
+ ### Playing YouTube with sound (experimental)
541
+
542
+ [jspulse](https://www.npmjs.com/package/@drxiaozhi/jspulse) is a
543
+ PulseAudio-compatible sound server written for Bun. It runs natively in
544
+ Buninu, outside any chroot, and plays through ALSA. Chromium-based programs
545
+ such as `casty` inside the Debian chroot connect to it over `127.0.0.1`,
546
+ because a chroot shares Buninu's network. Several programs can play at once.
547
+
548
+ This assumes the Debian chroot and `casty` from
549
+ [Commands inside /bin](#commands-inside-bin) are already set up, with the
550
+ chroot shell on tty2. `bun x` needs network access; see
551
+ [Basic configuration](#basic-configuration).
552
+
553
+ 1. **Load the sound drivers.** Press `Ctrl+Alt+F1` to go to the `bun-repl>`
554
+ prompt on tty1 and run:
555
+
556
+ ```js
557
+ cfg.sound
558
+ ```
559
+
560
+ 2. **Open a native Buninu terminal.** Still on tty1, enter the Buninu shell
561
+ with `start()`, then open another virtual console from that shell (see
562
+ [Multitasking modes](#multitasking-modes)). Run the next two steps there,
563
+ *not* inside the chroot:
564
+
565
+ ```js
566
+ start()
567
+ ```
568
+
569
+ ```sh
570
+ bunterm 3
571
+ ```
572
+
573
+ 3. **Set the volume, then test the speakers.** Setting a volume also unmutes
574
+ the output, so the 3-second test tone is guaranteed to be audible. Adjust
575
+ the percentage afterwards if it is too quiet or too loud:
576
+
577
+ ```sh
578
+ bun x @drxiaozhi/jspulse --volume 50
579
+ bun x @drxiaozhi/jspulse --play
580
+ ```
581
+
582
+ 4. **Start the sound server.** It keeps running in the foreground, so leave
583
+ this terminal as it is; `Ctrl+C` stops it:
584
+
585
+ ```sh
586
+ bun x @drxiaozhi/jspulse --alsa
587
+ ```
588
+
589
+ 5. **Start casty with sound.** Press `Ctrl+Alt+F2` to return to the chroot
590
+ shell, point PulseAudio clients at jspulse, and start casty:
591
+
592
+ ```sh
593
+ export PULSE_SERVER=127.0.0.1
594
+ cd ~/casty/bin
595
+ bun casty.js https://www.youtube.com
596
+ ```
597
+
598
+ If there is no sound, check step 4's terminal for errors, and make sure
599
+ `PULSE_SERVER` was exported in the same shell that started casty.
600
+
537
601
  ## Commands inside /bin
538
602
 
539
603
  | command | does | manual |
@@ -581,14 +645,14 @@ umount -R /mnt
581
645
  bun x bunproot --git clone https://github.com/jjtseng93/bunproot
582
646
 
583
647
  # Read bunproot's Git manual without ANSI formatting in jmi
584
- bunterm
648
+ bunterm 2
585
649
  bun x bunproot --git --readme | stripansi | jmi
586
650
 
587
651
 
588
652
 
589
653
  # Download and enter an x64 Debian rootfs
590
654
  # Make sure you have run this already:
591
- # bunterm --font-size 13
655
+ # bunterm 2 --font-size 13
592
656
  bun x bunproot --git --yes clone https://github.com/jjtseng93/js-udocker
593
657
  cd js-udocker
594
658
  bun udocker.js pull --platform=linux/amd64 debian:13
@@ -618,10 +682,8 @@ git clone https://github.com/jjtseng93/casty
618
682
  cd casty/bin
619
683
  # When clicking around, don’t release the mouse button immediately after pressing it, to make sure the mouse-down event is triggered
620
684
  bun casty.js buninu.org
621
- # Playing YouTube with sound(experimental)
622
- # make sure you have run `cfg.sound` in bun-repl
623
- # follow the dumped instructions
624
- bun x bunproot --setup.pulse
685
+ # For sound in casty (YouTube), start jspulse first:
686
+ # see "Playing YouTube with sound (experimental)" under "Using Buninu Linux"
625
687
 
626
688
 
627
689
  # Download and enter an x64 Alpine minirootfs
@@ -668,9 +730,9 @@ tar xvf /tmp/buninu.tar -C /tmp/buninu-copy
668
730
  # Add z to create a gzip-compressed archive
669
731
  tar czvf /tmp/buninu.tar.gz README.md package.json
670
732
 
671
- # On a virtual console: a graphical terminal with CJK, emoji and images
672
- bunterm
673
- bunterm /dev/tty1 --font-size 13 -e bun /buninu/apps/jsmdcui/src/index.js --demo
733
+ # On another virtual console: a graphical terminal with CJK, emoji and images
734
+ bunterm 2
735
+ bunterm /dev/tty3 --font-size 13 -e bun /buninu/apps/jsmdcui/src/index.js --demo
674
736
  ```
675
737
 
676
738
  The graphics stack behind `bunterm` — the framebuffer module, CanvasKit,
@@ -1200,6 +1262,7 @@ for the userspace session.
1200
1262
  * [Using Bun Modern Shell](#using-bun-modern-shell)
1201
1263
  * [Showing images](#showing-images)
1202
1264
  * [Clipboard](#clipboard)
1265
+ * [Playing YouTube with sound (experimental)](#playing-youtube-with-sound-experimental)
1203
1266
  - [Commands inside /bin](#commands-inside-bin)
1204
1267
  - [Environment and dependencies](#environment-and-dependencies)
1205
1268
  * [Build environment](#build-environment)
package/build-uki.sh CHANGED
@@ -14,11 +14,7 @@ fi
14
14
  ./scripts/pack-initramfs.sh
15
15
 
16
16
  mkdir -p build vda/EFI/BOOT
17
- printf '%s\n' \
18
- 'NAME="Buninu Linux"' \
19
- 'ID=buninu-linux' \
20
- 'PRETTY_NAME="Buninu Linux 1"' \
21
- 'VERSION_ID=1' > build/os-release
17
+ # build/os-release is written by pack-initramfs.sh from package.json.
22
18
  # Bun itself is PID 1: no native bootstrap. `-e import('/init.js')` avoids the
23
19
  # entry-file open that would readlink /proc/self/fd/N before /proc exists;
24
20
  # init.js mounts /proc, /sys, /dev and /tmp as its first action.
@@ -1,5 +1,18 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.4.18 - 2026-09-29
4
+
5
+ - Sync jsgotty to 1.1.14: Kitty for Windows
6
+ - Sync bunmsh to 0.3.10: Fix several posix/gnu/external builtin commands
7
+
8
+ ## 0.4.17 - 2026-09-26
9
+
10
+ - readme: Add homepage URL
11
+
12
+ ## 0.4.16 - 2026-09-22
13
+
14
+ - Update homepage to <https://buninu.org>
15
+
3
16
  ## 0.4.15 - 2026-09-22
4
17
 
5
18
  ### Changed
@@ -23,6 +23,7 @@ npx buninu
23
23
  > (`--local`, bunmsh) has no job control yet, so use the browser terminal when
24
24
  > you need to background a job.
25
25
 
26
+ - Homepage: <https://buninu.org>
26
27
  - Source: [github.com/jjtseng93/buninu](https://github.com/jjtseng93/buninu)
27
28
 
28
29
  - Core components:
@@ -2,6 +2,21 @@
2
2
 
3
3
  All notable user-visible changes to bunmsh are documented here.
4
4
 
5
+ ## [0.3.10] - 2026-09-29
6
+
7
+ ### Fixed
8
+
9
+ - Match system utilities when handling multiple operands: `printf` repeats its
10
+ format for remaining arguments; `ln` links multiple sources into a directory;
11
+ `head`, `tail`, `wc`, and `cut` process each file separately; and `md5sum` and
12
+ `sha256sum` print one labelled digest per file. `wc` also prints a total for
13
+ multiple files. Reference tests compare these results with system commands.
14
+
15
+ - Make `grep -r PATTERN` without an explicit path search the current directory,
16
+ as system `grep` does, instead of reading a locked standard-input stream.
17
+ Reference tests cover recursive matches, line numbers, no matches, and quiet
18
+ mode.
19
+
5
20
  ## [0.3.9] - 2026-09-22
6
21
 
7
22
  ### Fixed
@@ -32,8 +32,12 @@ pseudo-terminal tests.
32
32
 
33
33
  ### Grammar and execution
34
34
 
35
- - Background jobs (`&`), job control, coprocesses, and asynchronous command
36
- lists are not implemented.
35
+ - A final, standalone, unquoted `&` starts a single external command in the
36
+ background (trailing comments and newlines are allowed). Stdin is ignored;
37
+ stdout/stderr are inherited, and the process is exposed in `Bun.sha.procs`.
38
+ Background pipelines, builtins, functions, and all redirections are rejected
39
+ before files are opened. General asynchronous command lists, job control,
40
+ and coprocesses are not implemented.
37
41
  - Brace command groups, `select`, arithmetic commands, and `[[ ... ]]` are
38
42
  not implemented.
39
43
  - Functions and subshells cover practical cases but do not yet reproduce every
@@ -959,7 +959,8 @@ Create hard or symbolic links.
959
959
  ### Usage
960
960
 
961
961
  ```sh
962
- ln [-sfT] TARGET LINK
962
+ ln [-sf] TARGET LINK
963
+ ln [-sf] TARGET ... DIRECTORY
963
964
  ```
964
965
 
965
966
  ### Options and forms
@@ -967,6 +968,7 @@ ln [-sfT] TARGET LINK
967
968
  - `-s`: Create a symbolic link.
968
969
  - `-f`: Replace an existing destination.
969
970
  - `-T`: Treat the destination as a normal path, not a directory.
971
+ - Multiple targets may be linked into an existing directory.
970
972
 
971
973
  ### Example
972
974
 
@@ -5,7 +5,8 @@ Create hard or symbolic links.
5
5
  ### Usage
6
6
 
7
7
  ```sh
8
- ln [-sfT] TARGET LINK
8
+ ln [-sf] TARGET LINK
9
+ ln [-sf] TARGET ... DIRECTORY
9
10
  ```
10
11
 
11
12
  ### Options and forms
@@ -13,6 +14,7 @@ ln [-sfT] TARGET LINK
13
14
  - `-s`: Create a symbolic link.
14
15
  - `-f`: Replace an existing destination.
15
16
  - `-T`: Treat the destination as a normal path, not a directory.
17
+ - Multiple targets may be linked into an existing directory.
16
18
 
17
19
  ### Example
18
20
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bunmsh",
3
- "version": "0.3.9",
3
+ "version": "0.3.10",
4
4
  "description": "Cross-platform command shell for Bun JavaScript",
5
5
  "license": "MIT",
6
6
  "type": "module",