10478 Commits
Author SHA1 Message Date
4ds-devandBurer 201e8b2de3 apps/cedit: menu for managing supported languages, universal language configs (#554)
Build system / Build (en_US) (push) Successful in 2m4s
Build system / Build (es_ES) (push) Successful in 2m10s
Build system / Build (ru_RU) (push) Successful in 2m15s
Build system / Publish Images (push) Successful in 2m15s
- all languages are configured via cedit.ini (the “edit” button in the “languages” menu)
- build/run/debug commands are also configured via cedit.ini
- new languages can be added via cedit.ini
- zator language has been added

---------

Co-authored-by: Burer <burer@kolibrios.org>
Reviewed-on: #554
Reviewed-by: Kiril Lipatov <lipatov.kiril@gmail.com>
Reviewed-by: Alexey Ryabov <alex@b00bl1k.ru>
Co-authored-by: 4ds-dev <4ds.dev@gmail.com>
2026-08-07 07:57:14 +00:00
Burer 0390ad41e4 apps/klavisha: move to iso (#635)
Build system / Build (es_ES) (push) Successful in 2m17s
Build system / Build (en_US) (push) Successful in 2m25s
Build system / Build (ru_RU) (push) Successful in 2m31s
Build system / Publish Images (push) Successful in 1m53s
Klavisha takes 11 sectors in IMG, and is included only in RU build.
I propose move it to ISO to free space on IMG and make it more consisntent.

Reviewed-on: #635
Reviewed-by: Mikhail Frolov <mixa.frolov2003@gmail.com>
Reviewed-by: Alexey <alex@b00bl1k.ru>
2026-08-07 07:44:31 +00:00
b00bl1kandBurer 2515d1fa37 drivers/serial: implement serial ports enumeration (#629)
Build system / Build (es_ES) (push) Successful in 3m22s
Build system / Build (en_US) (push) Successful in 3m31s
Build system / Build (ru_RU) (push) Successful in 3m39s
Build system / Publish Images (push) Successful in 2m15s
This PR adds a new enum_ports call to the serial driver's control API that lets user-mode programs list the serial ports currently registered in the system.

It also updates debug output strings, changes the USB FTDI driver's service procedure name, and removes duplicated code from the baud rate calculation.

Reviewed-on: #629
Reviewed-by: Mikhail Frolov <mixa.frolov2003@gmail.com>
Reviewed-by: Burer <burer@kolibrios.org>
Co-authored-by: Alexey Ryabov <alex@b00bl1k.ru>
2026-08-07 04:40:23 +00:00
Egor00f da0e6f492b libc.obj: export missed vfprintf (#634)
Build system / Build (en_US) (push) Successful in 2m36s
Build system / Build (es_ES) (push) Successful in 2m38s
Build system / Build (ru_RU) (push) Successful in 2m41s
Build system / Publish Images (push) Successful in 2m9s
The `vfprintf` function is declared in the header files, but is not exported in the library.

Reviewed-on: #634
Co-authored-by: Egor00f <y.yarin@inbox.ru>
2026-08-06 13:52:14 +00:00
Egor00f 3c2bdfb418 Обновить programs/develop/ktcc/libc.obj/source/stdio/puts.c
Test PR / Build (es_ES) (pull_request) Successful in 1m50s
Test PR / Build (ru_RU) (pull_request) Successful in 1m56s
Test PR / Build (en_US) (pull_request) Successful in 1m58s
Build system / Build (en_US) (push) Successful in 2m10s
Build system / Build (es_ES) (push) Successful in 2m13s
Build system / Build (ru_RU) (push) Successful in 2m17s
Build system / Publish Images (push) Successful in 2m22s
2026-08-05 17:24:27 +00:00
Egor00f 67770ec3f4 libc.obj: implement console output via SHELL (#354)
Test PR / Build (ru_RU) (pull_request) Successful in 1m49s
Test PR / Build (en_US) (pull_request) Successful in 1m54s
Test PR / Build (es_ES) (pull_request) Successful in 1m57s
Adding console I/O via the `SHELL`.

Demonstration of [http_tcp_demo.c](https://git.kolibrios.org/KolibriOS/kolibrios/src/branch/main/programs/develop/ktcc/libc.obj/samples/http_tcp_demo.c):
<video src="attachments/847d7d19-3d67-480d-80c8-6d678af61a43" title="Запись экрана от 2026-03-07 13-55-50.mp4" controls></video>

- [x] output
- [x] multithread
  - [x] add mutex
  - [x] multithread tests

Reviewed-on: #354
Reviewed-by: Mikhail Frolov <mixa.frolov2003@gmail.com>
Reviewed-by: Kiril Lipatov <lipatov.kiril@gmail.com>
Co-authored-by: Egor00f <y.yarin@inbox.ru>
2026-08-04 12:49:19 +05:00
Egor00f 76294451d2 libc.obj: implement console output via SHELL (#354)
Build system / Build (en_US) (push) Successful in 3m18s
Build system / Build (es_ES) (push) Successful in 3m21s
Build system / Build (ru_RU) (push) Successful in 2m28s
Build system / Publish Images (push) Successful in 2m39s
Adding console I/O via the `SHELL`.

Demonstration of [http_tcp_demo.c](https://git.kolibrios.org/KolibriOS/kolibrios/src/branch/main/programs/develop/ktcc/libc.obj/samples/http_tcp_demo.c):
<video src="attachments/847d7d19-3d67-480d-80c8-6d678af61a43" title="Запись экрана от 2026-03-07 13-55-50.mp4" controls></video>

- [x] output
- [x] multithread
  - [x] add mutex
  - [x] multithread tests

Reviewed-on: #354
Reviewed-by: Mikhail Frolov <mixa.frolov2003@gmail.com>
Reviewed-by: Kiril Lipatov <lipatov.kiril@gmail.com>
Co-authored-by: Egor00f <y.yarin@inbox.ru>
2026-08-04 07:10:36 +00:00
LeencyandClaude Opus 5 031fe62338 kernel/net: fix the TCP keepalive timer expiry handler (#621)
Build system / Build (es_ES) (push) Successful in 2m12s
Build system / Build (en_US) (push) Successful in 2m18s
Build system / Build (ru_RU) (push) Successful in 2m18s
Build system / Publish Images (push) Successful in 1m40s
Summary: the keepalive handler compared the wrong field against the TCB
state constants, and walked into freed memory when the socket it killed was
released by tcp_disconnect.

Details:
Two independent defects in the same branch of tcp_timer_640ms.

First, the state test read TCP_SOCKET.state. That field is the inherited
SOCKET.state, an SS_* bitmask, not the TCB state machine; comparing it
against TCPS_ESTABLISHED compared a bitmask against an enum and decided
nothing meaningful. The TCB state lives in t_state. The comparison is also
changed from `ja` to `jae`, so only embryonic connections -- those whose
handshake never completed within TCP_time_keep_init -- are torn down here.
A synchronized connection now always falls through to .dont_kill, where it
either gets a keepalive probe (SO_KEEPALIVE set) or simply rearms the timer,
as in BSD. Previously an idle but perfectly healthy connection could be
dropped without the application ever asking for keepalives.

Second, the kill path did

        push    eax
        call    tcp_disconnect
        pop     eax
        jmp     .loop

and .loop dereferences SOCKET.NextPtr of that socket. But tcp_disconnect
jumps straight to tcp_close for a not-yet-synchronized connection, and
tcp_close calls socket_free -- so NextPtr was read out of freed kernel heap
and the timer thread continued its walk down a dangling pointer. The
successor is now saved before the call and the loop resumes at .check_only,
which is exactly what the timed-wait branch at the end of the same loop
already does.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Reviewed-on: #621
Reviewed-by: hidnplayr <hidnplayr@gmail.com>
Reviewed-by: Mikhail Frolov <mixa.frolov2003@gmail.com>
2026-08-03 18:28:35 +00:00
LeencyandClaude Opus 5 8766bfc546 kernel/net: free TCP sockets closed before the handshake completes (#620)
Build system / Build (en_US) (push) Successful in 3m21s
Build system / Build (es_ES) (push) Successful in 3m23s
Build system / Build (ru_RU) (push) Successful in 1m37s
Build system / Publish Images (push) Successful in 2m16s
Summary: socket_close() skipped both tcp_disconnect and socket_free for any
TCP socket that was not yet in the SS_ISCONNECTED state, leaking the socket
structure and leaving it on the net_sockets list forever.

Details:
The SS_ISCONNECTED gate in socket_close covered only fully established
connections. A socket closed while in SYN_SENT, SYN_RECEIVED or LISTEN, or
one that never connected at all, fell through to a bare `ret`: it was
neither disconnected nor freed. The 4 KiB socket structure and its two ring
buffers stayed allocated, the socket kept its place on net_sockets, its
timers kept being decremented by tcp_timer_640ms, and SOCKET.TID kept
pointing at a thread that was about to exit. A browser or any other
application that opens connections which fail to establish (refused,
filtered, or simply cancelled by the user) leaked one socket per attempt.

The gate is not needed: tcp_disconnect dispatches on the TCB state itself
and jumps straight to tcp_close -- which calls socket_free -- whenever
t_state is below TCPS_ESTABLISHED. Dropping the test therefore routes the
not-yet-synchronized cases to exactly the cleanup they were missing, and
leaves the established path untouched. The SS_ISDISCONNECTING test is kept,
so a second close() on a socket already shutting down is still a no-op.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Reviewed-on: #620
Reviewed-by: hidnplayr <hidnplayr@gmail.com>
Reviewed-by: Mikhail Frolov <mixa.frolov2003@gmail.com>
2026-08-03 18:08:29 +00:00
hidnplayrandLeency 2db92868a9 Updated IPv4 routing to perform best guess instead of hardcoded default device, until we have full routing. (#613)
Build system / Build (ru_RU) (push) Successful in 2m8s
Build system / Build (en_US) (push) Successful in 2m12s
Build system / Build (es_ES) (push) Successful in 2m17s
Build system / Publish Images (push) Successful in 1m49s
#612

Reviewed-on: #613
Reviewed-by: Mikhail Frolov <mixa.frolov2003@gmail.com>
Reviewed-by: Kiril Lipatov <lipatov.kiril@gmail.com>
Co-authored-by: hidnplayr <hidnplayr@gmail.com>
2026-08-02 16:54:07 +00:00
IgorAandBurer 4bdee82489 apps/palitra: small improvements (#626)
Build system / Build (es_ES) (push) Successful in 2m15s
Build system / Build (ru_RU) (push) Successful in 2m20s
Build system / Build (en_US) (push) Successful in 2m27s
Build system / Publish Images (push) Successful in 2m56s
- redraw sliders while moving the mouse,
- slider redrawing optimized

Reviewed-on: #626
Reviewed-by: Kiril Lipatov <lipatov.kiril@gmail.com>
Reviewed-by: Burer <burer@kolibrios.org>
Co-authored-by: IgorA <aie85playm@gmail.com>
2026-08-02 14:00:20 +00:00
Burer b9fe23b7b2 drivers: add serial and usbftdi to img (#628)
Build system / Build (en_US) (push) Successful in 2m21s
Build system / Build (es_ES) (push) Successful in 2m6s
Build system / Build (ru_RU) (push) Successful in 2m5s
Build system / Publish Images (push) Successful in 1m52s
By the request of @b00bl1k.

Reviewed-on: #628
Reviewed-by: Mikhail Frolov <mixa.frolov2003@gmail.com>
Reviewed-by: b00bl1k <alex@b00bl1k.ru>
2026-08-02 09:01:07 +00:00
b00bl1k d33a03c2e4 kernel/AHCI: preserve ebx/esi/edi in ahci_irq_handler
Check kernel codestyle / Check kernel codestyle (pull_request) Successful in 18s
Test PR / Build (en_US) (pull_request) Successful in 2m12s
Test PR / Build (ru_RU) (pull_request) Successful in 2m15s
Test PR / Build (es_ES) (pull_request) Successful in 2m18s
Build system / Build (es_ES) (push) Successful in 2m20s
Build system / Build (en_US) (push) Successful in 2m23s
Build system / Build (ru_RU) (push) Successful in 2m25s
Build system / Publish Images (push) Successful in 2m23s
2026-08-01 15:58:09 +05:00
35f35b39e7 kernel/net: scale the window before clamping it in tcp_respond
Check kernel codestyle / Check kernel codestyle (pull_request) Successful in 20s
Test PR / Build (en_US) (pull_request) Successful in 1m51s
Test PR / Build (es_ES) (pull_request) Successful in 1m56s
Test PR / Build (ru_RU) (pull_request) Successful in 2m0s
Build system / Build (en_US) (push) Successful in 2m7s
Build system / Build (es_ES) (push) Successful in 2m13s
Build system / Build (ru_RU) (push) Successful in 2m21s
Build system / Publish Images (push) Successful in 1m46s
Summary: tcp_respond clamped the free receive space to 65535 and only then
applied RCV_SCALE, so scaled ACKs and keepalives advertised a window far
smaller than the one actually available.

Подробно:
The window field of a TCP header is 16 bits wide and, when window scaling is
in effect, carries the free space shifted right by RCV_SCALE. The two
operations therefore have to happen in that order: shift first, then clamp
the result to TCP_max_win.

tcp_respond did the opposite. With a receive buffer larger than 64 KiB and
RCV_SCALE = 2, free space of 128 KiB was first cut down to 65535 and then
shifted to 16383, announcing 64 KiB instead of the full 128 KiB. The larger
the buffer and the scale factor, the worse the under-advertisement -- the
window only ever shrank, so the effect was lost throughput rather than
corruption, but it silently defeated window scaling on exactly the responses
that carry the window most often.

tcp_output already gets this right (it compares against TCP_max_win shl
RCV_SCALE before writing the field); tcp_respond now agrees with it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-31 17:45:52 +00:00
LeencyandDoczom a020a2c434 kernel/net: fix wild write in tcp_set_persist
Check kernel codestyle / Check kernel codestyle (pull_request) Successful in 18s
Test PR / Build (es_ES) (pull_request) Successful in 2m27s
Test PR / Build (ru_RU) (pull_request) Successful in 2m31s
Test PR / Build (en_US) (pull_request) Successful in 2m34s
Build system / Build (en_US) (push) Successful in 2m10s
Build system / Build (es_ES) (push) Successful in 2m14s
Build system / Build (ru_RU) (push) Successful in 2m20s
Build system / Publish Images (push) Successful in 1m45s
tcp_set_persist takes the socket pointer in eax and uses ebx as a
scratch register to compute the RTO:

        mov     ebx, [eax + TCP_SOCKET.t_srtt]
        shr     ebx, 2
        add     ebx, [eax + TCP_SOCKET.t_rttvar]
        shr     ebx, 1
        mov     cl, [eax + TCP_SOCKET.t_rxtshift]
        shl     ebx, cl

By the time the persist timer is armed ebx therefore holds the timeout
value, not the socket. The flag store nevertheless went through ebx, so
it wrote to the linear address <RTO> + TCP_SOCKET.timer_flags -- an
unmapped low address -- instead of setting timer_flag_persist on the
socket.

Any TCP connection whose peer advertises a zero window takes this path
from tcp_output.enter_persist and faults the kernel:

        K : Page fault
        K : EBX : 0000000A
        K : EIP : 80037DF3   (tcp_set_persist, the flag store)
        K : Process - forced terminate PID: 00000005

Observed with NetSurf on a HTTP/2 connection to www.redhat.com, where
twelve multiplexed streams closed the receive window. Store the flag
through eax, which tcpt_rangeset leaves untouched.

Assisted-by: Claude Opus 5 <noreply@anthropic.com>
2026-07-31 17:32:55 +00:00
Leency 77d600c663 open: finally fix file association (#594)
Build system / Build (en_US) (push) Successful in 2m10s
Build system / Build (es_ES) (push) Successful in 2m21s
Build system / Build (ru_RU) (push) Successful in 2m21s
Build system / Publish Images (push) Successful in 3m16s
htm association with Netfurf never worked normally before!

Reviewed-on: #594
Reviewed-by: Burer <burer@kolibrios.org>
Reviewed-by: Mikhail Frolov <mixa.frolov2003@gmail.com>
Co-authored-by: leency <lipatov.kiril@gmail.com>
2026-07-30 02:34:26 +00:00
LeencyandClaude Opus 5 f7dd4033ba kernel/net: honour the window scale factor advertised by the peer (#619)
Build system / Build (es_ES) (push) Successful in 2m21s
Build system / Build (en_US) (push) Successful in 2m24s
Build system / Build (ru_RU) (push) Successful in 2m28s
Build system / Publish Images (push) Successful in 3m24s
Summary: the received window scale option was stored into SND_SCALE, which
the connection setup code then immediately overwrote with zero, so every
peer window was interpreted unscaled.

Details:
RFC 1323 negotiation is completed in two places -- the SYN_RECEIVED branch
and the active-open branch of tcp_input. Both do

        mov     ax, word[ebx + TCP_SOCKET.requested_s_scale]
        mov     word[ebx + TCP_SOCKET.SND_SCALE], ax

relying on the declared order of the four adjacent bytes SND_SCALE,
RCV_SCALE, requested_s_scale, request_r_scale to move both factors at once.
requested_s_scale, however, was never filled in: the option parser wrote the
peer's shift count into SND_SCALE directly, and that value was then clobbered
by the word move with the zero left in requested_s_scale by socket_alloc.

The result was that SND_SCALE ended up 0 on every connection while
TF_RCVD_SCALE was set, so a peer advertising, say, 64 KiB with a shift of 7
was read as advertising 512 bytes. Sending to any modern host was throttled
to a fraction of the real window.

The parser now stores into requested_s_scale, where the setup code expects
it, and clamps the value to TCP_max_winshift (14) as required by RFC 1323 --
a peer sending a larger shift must not be allowed to make our SND_WND
computation shift out of range.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Reviewed-on: #619
Reviewed-by: hidnplayr <hidnplayr@gmail.com>
Reviewed-by: Mikhail Frolov <mixa.frolov2003@gmail.com>
Co-authored-by: leency <lipatov.kiril@gmail.com>
2026-07-30 02:26:39 +00:00
b00bl1kandBurer 0ca124d6cb Update CONTRIBUTING guidelines (#598)
Build system / Build (en_US) (push) Successful in 2m12s
Build system / Build (ru_RU) (push) Successful in 2m20s
Build system / Build (es_ES) (push) Successful in 2m23s
Build system / Publish Images (push) Successful in 1m58s
It would be helpful for reviewers if contributors included an `Assisted-by` tag in commits prepared with the help of AI tools.

Reviewed-on: #598
Reviewed-by: Burer <burer@kolibrios.org>
Reviewed-by: Mikhail Frolov <mixa.frolov2003@gmail.com>
Reviewed-by: Gleb Zaharov <risdeveau@lair.moe>
Reviewed-by: Ivan B <1+dunkaist@noreply.localhost>
Co-authored-by: Alexey Ryabov <alex@b00bl1k.ru>
2026-07-25 07:35:46 +00:00
Burer 7365a98326 apps/cmm: take the c-- programs and the compiler config from their repositories (#585)
Build system / Build (es_ES) (push) Successful in 2m32s
Build system / Build (ru_RU) (push) Successful in 2m40s
Build system / Build (en_US) (push) Successful in 2m46s
Build system / Publish Images (push) Successful in 2m27s
Reviewed-on: #585
Reviewed-by: Kiril Lipatov <lipatov.kiril@gmail.com>
Reviewed-by: bad_Dr3dd0x <1702+bad_dr3dd0x@noreply.localhost>
2026-07-25 07:27:02 +00:00
Matou1306andBurer 9941a5dfc9 fs/ext: fix bug in ext_setFileEnd (#595)
Build system / Build (es_ES) (push) Successful in 2m15s
Build system / Build (en_US) (push) Successful in 2m19s
Build system / Build (ru_RU) (push) Successful in 2m22s
Build system / Publish Images (push) Successful in 2m28s
Discovered this bug when working on truncating a file with EXTENTS flag.
Basically ebx was getting cloberred which resulted in loading an incorrect address into eax.

Reviewed-on: #595
Reviewed-by: Burer <burer@kolibrios.org>
Reviewed-by: Mikhail Frolov <mixa.frolov2003@gmail.com>
Reviewed-by: Ivan B <1+dunkaist@noreply.localhost>
Co-authored-by: Matou <mathieubotros@gmail.com>
2026-07-25 06:31:49 +00:00
Leency 041029b406 kernel/AHCI: use IRQ instead of delay (#597)
Build system / Build (ru_RU) (push) Successful in 2m16s
Build system / Build (en_US) (push) Successful in 2m21s
Build system / Build (es_ES) (push) Successful in 2m24s
Build system / Publish Images (push) Successful in 1m53s
This change was proceeded by request of Rhimad, author of original AHCI driver.
Tested on real hardware.Reviewed-on: #597
Reviewed-by: Ivan B <1+dunkaist@noreply.localhost>
Reviewed-by: rgimad <3+rgimad@noreply.localhost>
2026-07-23 19:28:52 +00:00
LeencyandBurer 7c4d3f57e6 apps/bbench - CPU, graphics, memory and disk benchmark for KolibriOS (#561)
Build system / Build (en_US) (push) Successful in 2m19s
Build system / Build (es_ES) (push) Successful in 2m22s
Build system / Build (ru_RU) (push) Successful in 2m30s
Build system / Publish Images (push) Successful in 2m32s
- Add `bbench` to IMG and System Panel
  - Universal benchmark with 17 tests for CPU, graphics, memory and disk
  - Tests can be toggled and configured
  - Generates derailed reports in HTML
- Remove `MGB` and `FSPEED` from System Panel, move them from IMG to ISO

---------

Co-authored-by: Burer <burer@kolibrios.org>
Reviewed-on: #561
Reviewed-by: bad_Dr3dd0x <1702+bad_dr3dd0x@noreply.localhost>
Reviewed-by: Burer <burer@kolibrios.org>
Co-authored-by: leency <lipatov.kiril@gmail.com>
2026-07-23 13:51:18 +00:00
LeencyandBurer 00fb7afe33 libs/libimg: fix progressive jpeg 4:2:0 shear when width mod 16 = 8 (#590)
Build system / Build (en_US) (push) Successful in 3m5s
Build system / Build (es_ES) (push) Successful in 3m5s
Build system / Build (ru_RU) (push) Successful in 3m8s
Build system / Publish Images (push) Successful in 2m3s
Co-authored-by: Burer <burer@kolibrios.org>
Reviewed-on: #590
Reviewed-by: Burer <burer@kolibrios.org>
Reviewed-by: IgorA <22+igora@noreply.localhost>
Reviewed-by: Ivan B <1+dunkaist@noreply.localhost>
Co-authored-by: leency <lipatov.kiril@gmail.com>
2026-07-22 08:09:55 +00:00
LeencyandBurer db846b5eee AddDevice: class EF subclass 04 protocol 01
Test PR / Build (en_US) (pull_request) Successful in 1m54s
Test PR / Build (es_ES) (pull_request) Successful in 1m59s
Test PR / Build (ru_RU) (pull_request) Successful in 2m7s
Build system / Build (es_ES) (push) Successful in 2m6s
Build system / Build (ru_RU) (push) Successful in 2m15s
Build system / Build (en_US) (push) Successful in 2m20s
Build system / Publish Images (push) Successful in 2m32s
2026-07-21 17:51:53 +00:00
LeencyandBurer 686f18772a final update 2026-07-21 17:51:53 +00:00
LeencyandBurer 9b7292f3e7 update 2 2026-07-21 17:51:53 +00:00
LeencyandBurer e41362fb04 full support Huawei E3372h-153 modem 2026-07-21 17:51:53 +00:00
LeencyandBurer bbc0f1262c usbnet: upload drivers usbcdc and usbrndis 2026-07-21 17:51:53 +00:00
LeencyandBurer 5fb16b1d81 data/common: stl=/sys/3d/view3ds (#591)
Build system / Build (en_US) (push) Successful in 2m15s
Build system / Build (ru_RU) (push) Successful in 2m18s
Build system / Build (es_ES) (push) Successful in 2m22s
Build system / Publish Images (push) Successful in 2m22s
Reviewed-on: #591
Reviewed-by: hidnplayr <hidnplayr@gmail.com>
Reviewed-by: Burer <burer@kolibrios.org>
Co-authored-by: leency <lipatov.kiril@gmail.com>
2026-07-21 16:34:17 +00:00
LeencyandBurer 8a48f089d8 libs/http.obj: fix content_received overcount on chunked transfers (#569)
Build system / Build (en_US) (push) Successful in 2m25s
Build system / Build (ru_RU) (push) Successful in 2m27s
Build system / Build (es_ES) (push) Successful in 2m30s
Build system / Publish Images (push) Successful in 2m46s
For chunked responses HTTP_receive added the whole buffer tail to
content_received every time it consumed a chunkline. When several
chunks arrived in one TCP segment, the same bytes were counted once
per chunkline (observed: content_received = 42 MB for an 83 KB page);
the value only became exact at got_all_data. A client trusting the
counter mid-transfer read far past the buffer and page-faulted.
In plain buffered mode recompute the exact value from the pointers
instead: min(chunk_ptr, write_ptr) - content_ptr, the same formula
.got_all_data_chunked uses. Data below chunk_ptr is decoded and
contiguous; bytes in [chunk_ptr, write_ptr) are still raw (unconsumed
chunkline + partial chunk). Stream/ring modes keep the running add:
there data is consumed as it arrives, so the incremental count is
correct.

---------

Co-authored-by: Burer <burer@kolibrios.org>
Reviewed-on: #569
Reviewed-by: hidnplayr <hidnplayr@gmail.com>
Reviewed-by: Burer <burer@kolibrios.org>
Co-authored-by: leency <lipatov.kiril@gmail.com>
2026-07-21 10:02:50 +00:00
14162d4139 apps/kiv: loading icons from shared memory, libs/libimg: crop function (#573)
Build system / Build (en_US) (push) Successful in 2m20s
Build system / Build (ru_RU) (push) Successful in 2m27s
Build system / Build (es_ES) (push) Successful in 2m31s
Build system / Publish Images (push) Successful in 2m27s
add 3 icons: save as, edit in other app, crop
libimg: add new function 'img_crop'

---------

Co-authored-by: Burer <burer@kolibrios.org>
Co-authored-by: leency <lipatov.kiril@gmail.com>
Reviewed-on: #573
Reviewed-by: Kiril Lipatov <lipatov.kiril@gmail.com>
Reviewed-by: Burer <burer@kolibrios.org>
Co-authored-by: IgorA <aie85playm@gmail.com>
2026-07-21 07:55:52 +00:00
LeencyandBurer 3b854ef2c6 kernel: fix extended_primary_loader build (undefined low_memory_error)
Check kernel codestyle / Check kernel codestyle (pull_request) Successful in 36s
Test PR / Build (en_US) (pull_request) Successful in 3m8s
Test PR / Build (es_ES) (pull_request) Successful in 2m47s
Test PR / Build (ru_RU) (pull_request) Successful in 1m28s
Build system / Build (es_ES) (push) Successful in 2m23s
Build system / Build (en_US) (push) Successful in 2m27s
Build system / Build (ru_RU) (push) Successful in 2m33s
Build system / Publish Images (push) Successful in 2m21s
2026-07-21 07:39:19 +00:00
LeencyandBurer 2c5f6bc39a fixes 2026-07-21 07:39:19 +00:00
LeencyandBurer 09af6357d4 kernel: refine boot screen options, show message that <=8 MB memory is not enough 2026-07-21 07:39:19 +00:00
Leency 4b4bd9bdde tinygl lib: fix black-color artifacts
Test PR / Build (es_ES) (pull_request) Successful in 3m38s
Test PR / Build (en_US) (pull_request) Successful in 3m43s
Test PR / Build (ru_RU) (pull_request) Successful in 1m33s
Build system / Build (en_US) (push) Successful in 2m50s
Build system / Build (es_ES) (push) Successful in 2m55s
Build system / Build (ru_RU) (push) Successful in 2m57s
Build system / Publish Images (push) Successful in 2m25s
2026-07-19 19:28:52 +00:00
Burerandkolibri-bot f373a738d7 chore/submodules: bump cmm to upstream (#581)
Build system / Build (ru_RU) (push) Successful in 2m38s
Build system / Build (en_US) (push) Successful in 2m44s
Build system / Build (es_ES) (push) Successful in 2m51s
Build system / Publish Images (push) Successful in 2m18s
Co-authored-by: kolibri-bot <bot@kolibrios.org>
Reviewed-on: #581
Reviewed-by: Ivan B <1+dunkaist@noreply.localhost>
Reviewed-by: Kiril Lipatov <lipatov.kiril@gmail.com>
2026-07-19 16:23:45 +00:00
Burer c7f0da5cd6 ci/cd: check submodules hourly, and let the bump PR actually get tested (#577)
Build system / Build (en_US) (push) Successful in 2m12s
Build system / Build (ru_RU) (push) Successful in 2m16s
Build system / Build (es_ES) (push) Successful in 2m18s
Build system / Publish Images (push) Successful in 1m55s
Reviewed-on: #577
Reviewed-by: Ivan B <1+dunkaist@noreply.localhost>
Reviewed-by: Kiril Lipatov <lipatov.kiril@gmail.com>
2026-07-19 15:39:09 +00:00
LeencyandBurer 8c48f1d18b apps/fplay: major player updates, performance, usability and UI improvements, bugfixes (#560)
Build system / Build (en_US) (push) Successful in 2m55s
Build system / Build (es_ES) (push) Successful in 3m1s
Build system / Build (ru_RU) (push) Successful in 3m8s
Build system / Publish Images (push) Successful in 1m50s
Very briefly:
- feat: add playback timer and MP3 album art support
- feat: async file reading with adaptive cache for smoother playback
- feat: smart frame skipping (preserves sync, prevents lags on slow drives)
- feat: add OSD volume and Tab info overlay
- feat: mouse wheel volume control, and basic hotkeys
- feat: support >2GB files, automatic HW acceleration check
- fix: crash/memory corruption on videos without audio or with unknown duration
- fix: freeze issues and audio-video desync after seeking
- fix: correct playback speed for silent videos and playback of files with corrupted timestamps
- fix: auto-hide volume slider in narrow windows and restore window controls layout

---------

Co-authored-by: Burer <burer@kolibrios.org>
Reviewed-on: #560
Reviewed-by: Burer <burer@kolibrios.org>
Reviewed-by: Mikhail Frolov <mixa.frolov2003@gmail.com>
Co-authored-by: leency <lipatov.kiril@gmail.com>
2026-07-19 06:32:00 +00:00
LeencyandBurer bb58df2d87 apps/pcidev: calculate window height based on device count (#562)
Build system / Build (en_US) (push) Successful in 3m35s
Build system / Build (es_ES) (push) Successful in 3m50s
Build system / Build (ru_RU) (push) Successful in 3m53s
Build system / Publish Images (push) Successful in 3m30s
Currently: pcidev gets all screen height
After fix: pcidev pre-calculate window height based on device count

---------

Co-authored-by: Burer <burer@kolibrios.org>
Reviewed-on: #562
Reviewed-by: Burer <burer@kolibrios.org>
Reviewed-by: Mikhail Frolov <mixa.frolov2003@gmail.com>
Co-authored-by: leency <lipatov.kiril@gmail.com>
2026-07-19 06:18:32 +00:00
LeencyandBurer 3922240df3 libimg/png: fix page fault when unpacked image data ends at page boundary (#568)
Build system / Build (es_ES) (push) Successful in 3m35s
Build system / Build (ru_RU) (push) Successful in 3m42s
Build system / Build (en_US) (push) Successful in 3m48s
Build system / Publish Images (push) Successful in 2m13s
Co-authored-by: Burer <burer@kolibrios.org>
Reviewed-on: #568
Reviewed-by: Burer <burer@kolibrios.org>
Reviewed-by: IgorA <22+igora@noreply.localhost>
Co-authored-by: leency <lipatov.kiril@gmail.com>
2026-07-18 10:54:25 +00:00
Matou1306anddunkaist 42b2a07033 fs/ext: Implement features 64-bit, metadata_csum, and metadata_csum_seed (#506)
Build system / Build (en_US) (push) Successful in 2m13s
Build system / Build (ru_RU) (push) Successful in 2m15s
Build system / Build (es_ES) (push) Successful in 2m18s
Build system / Publish Images (push) Successful in 1m56s
Implemented reading filesystems with 64 bit feature for partitions < 16TB (for standard 4kb block size)

Reading support for all ext4 filesystems built with default features.
Mount filesystems with metadata_csum / metadata_csum_seed and check csum, in case it doesn't match the mount fails.

Reviewed-on: #506
Reviewed-by: Ivan B <1+dunkaist@noreply.localhost>
Reviewed-by: Mikhail Frolov <mixa.frolov2003@gmail.com>
Co-authored-by: Matou <mathieubotros@gmail.com>
2026-07-17 10:25:14 +00:00
LeencyandBurer 91be820f96 apps/updf: update 2.1 (#559)
Build system / Build (ru_RU) (push) Successful in 2m9s
Build system / Build (en_US) (push) Successful in 2m14s
Build system / Build (es_ES) (push) Successful in 2m16s
Build system / Publish Images (push) Successful in 3m9s
- Supersampling for crisp text, with automatic disabling on low-end CPUs (<1 GHz via fn 18.5)
- snap to a clear 100% (±7%)
- Zoom field in the toolbar with manual percentage input
- UI tweaks/bug fixes

---------

Co-authored-by: Burer <burer@kolibrios.org>
Reviewed-on: #559
Reviewed-by: Burer <burer@kolibrios.org>
Reviewed-by: Mikhail Frolov <mixa.frolov2003@gmail.com>
Co-authored-by: leency <lipatov.kiril@gmail.com>
2026-07-17 04:06:39 +00:00
Burer 7da3b2e5a4 apps/cmm: include compiler as submodule (#572)
Build system / Build (en_US) (push) Successful in 3m44s
Build system / Build (es_ES) (push) Successful in 3m43s
Build system / Build (ru_RU) (push) Successful in 3m46s
Build system / Publish Images (push) Successful in 1m47s
Reviewed-on: #572
Reviewed-by: Ivan B <1+dunkaist@noreply.localhost>
Reviewed-by: Gleb Zaharov <risdeveau@lair.moe>
Reviewed-by: Kiril Lipatov <lipatov.kiril@gmail.com>
2026-07-15 12:39:40 +00:00
LeencyandBurer 7cf136e214 apps/view3ds: add STL support based on convert_stl_3ds.inc by IgorA (#566)
Build system / Build (en_US) (push) Successful in 2m39s
Build system / Build (ru_RU) (push) Successful in 2m45s
Build system / Build (es_ES) (push) Successful in 2m47s
Build system / Publish Images (push) Successful in 1m49s
Reviewed-on: #566
Reviewed-by: IgorA <22+igora@noreply.localhost>
Reviewed-by: Mikhail Frolov <mixa.frolov2003@gmail.com>
Co-authored-by: leency <lipatov.kiril@gmail.com>
Co-committed-by: leency <lipatov.kiril@gmail.com>
2026-07-14 04:59:27 +00:00
LeencyandBurer e641f6c400 drivers/audio: add es1371, fix hang in infinity (#571)
Build system / Build (en_US) (push) Successful in 3m51s
Build system / Build (es_ES) (push) Successful in 4m6s
Build system / Build (ru_RU) (push) Successful in 4m16s
Build system / Publish Images (push) Successful in 2m59s
- add es1371 sound driver
- fix hang in infinity
- remove garbage ensoniq.asm
- add "Multimedia audio controller detected with PciId=VEN:DEV", same as vidintel does

Tested with 3 cards.

Reviewed-on: #571
Reviewed-by: Ivan B <1+dunkaist@noreply.localhost>
Reviewed-by: Mikhail Frolov <mixa.frolov2003@gmail.com>
Co-authored-by: leency <lipatov.kiril@gmail.com>
Co-committed-by: leency <lipatov.kiril@gmail.com>
2026-07-14 04:53:19 +00:00
LeencyandBurer d9b207867c data/icons.ini: transform format to icon2ext.ini (fix #226) (#534)
Build system / Build (en_US) (push) Successful in 2m37s
Build system / Build (ru_RU) (push) Successful in 2m38s
Build system / Publish Images (push) Successful in 2m19s
Build system / Build (es_ES) (push) Successful in 2m41s
Before:
```ini
doc=3
docx=3
exc=3
inf=3
log=3
ob07=3
ob7=3
odt=3
rtf=3
txt=3
wtx=3
```
Now:
```ini
3=doc,docx,exc,inf,log,ob07,odt,rtf,txt,wtx
```

Reviewed-on: #534
Reviewed-by: Mikhail Frolov <mixa.frolov2003@gmail.com>
Reviewed-by: Ivan B <1+dunkaist@noreply.localhost>
Reviewed-by: bad_Dr3dd0x <1702+bad_dr3dd0x@noreply.localhost>
Co-authored-by: leency <lipatov.kiril@gmail.com>
Co-committed-by: leency <lipatov.kiril@gmail.com>
2026-07-12 06:00:32 +00:00
LeencyandBurer 50d0d2e347 kernel/taskman: free leaked handle-table objects on process exit (#567)
Build system / Build (es_ES) (push) Successful in 2m9s
Build system / Build (en_US) (push) Successful in 2m13s
Build system / Build (ru_RU) (push) Successful in 2m16s
Build system / Publish Images (push) Successful in 1m45s
I wrote an autotest for Netsurf. After 130 test run the system could not
create any new process anymore. Now this is fixed. Result:
916 OK, 0 CRASH, 0 HANG

Futexes (sysfn 77) live in the per-process handle table (PROC.htab)
and are allocated from the kernel's small-object heap via
create_object. The only code path that ever frees one is
destroy_object, which runs solely on an explicit FUTEX_DESTROY call --
and real programs never make it: newlib-based applications create a
dozen or so futexes at startup for their internal locks (malloc,
stdio) and simply exit, expecting the kernel to clean up. Nothing
does: destroy_process tears down HDLLs and page tables but never
walks the handle table.

Each leaked futex pins 48 bytes of the kernel malloc arena, and that
arena is a single fixed 128 KB block (init_malloc has no grow path).
After roughly two thousand leaked handles -- a few hundred to a few
thousand application launches within one uptime -- kernel malloc()
starts failing system-wide. The first visible casualty is
load_library: it can no longer allocate a DLLDESCR, so every dll.obj
load in every new process fails from that point on ("cannot load
library"), which is easy to mistake for a userland problem.

Reproduced by repeatedly launching a newlib application: the arena
filled with ~1750 48-byte chunks carrying the 'FUTX' magic (confirmed
by dumping the live arena; mst.topsize had dropped to 32 bytes with
free physical memory and kernel heap space still abundant), and dll
loading died after ~130 launches.

Fix: in destroy_process, after destroy_all_hdlls, walk the process's
handle table and free every live object. Free slots hold small
free-list indices and the reserved stdin/stdout/stderr handles hold
small values, so a bounds check against OS_BASE skips them; live
slots hold kernel pointers and are additionally verified by the
'FUTX' magic. If other object kinds are ever added to the handle
table, they will need their own destructors here -- the magic check
makes this walk skip them safely rather than crash.

---------

Co-authored-by: Burer <burer@kolibrios.org>
Reviewed-on: #567
Reviewed-by: hidnplayr <hidnplayr@gmail.com>
Reviewed-by: Burer <burer@kolibrios.org>
Co-authored-by: leency <lipatov.kiril@gmail.com>
Co-committed-by: leency <lipatov.kiril@gmail.com>
2026-07-11 18:44:32 +00:00
LeencyandBurer c6b6615f84 data/icons18.png: reduce number of colors without visible degradation (#565)
Build system / Build (es_ES) (push) Successful in 2m7s
Build system / Publish Images (push) Successful in 2m3s
Build system / Build (en_US) (push) Successful in 2m14s
Build system / Build (ru_RU) (push) Successful in 2m17s
Colors count 1285 > 1045
Thanks Burer for creating decolor.htm tool

Reviewed-on: #565
Reviewed-by: Burer <burer@kolibrios.org>
Reviewed-by: bad_Dr3dd0x <1702+bad_dr3dd0x@noreply.localhost>
Co-authored-by: leency <lipatov.kiril@gmail.com>
Co-committed-by: leency <lipatov.kiril@gmail.com>
2026-07-11 16:36:27 +00:00
LeencyandBurer c8d95df883 kernel/timers: fix priority-inversion livelock in timer_hs/cancel_timer_hs (#564)
Build system / Build (es_ES) (push) Successful in 2m4s
Build system / Build (en_US) (push) Successful in 2m7s
Build system / Build (ru_RU) (push) Successful in 2m14s
Build system / Publish Images (push) Successful in 2m20s
I wrote an autotest that runs Netsurf a lot of times. While running this
test I always faced the hang issue. First thought was about network
and sockets but QEMU debug through telnet revealed the issue in timers.
Now there is no hang after this fix.

timer_hs and cancel_timer_hs hold the global timer-list lock
(lock_timer_list/unlock_timer_list) across a short critical section
of plain list-pointer stores, without disabling interrupts. If the
owning thread is preempted inside that window, it can never be
scheduled again while a higher-priority thread is runnable: the
scheduler is strictly priority-based and osloop's check_timers (top
priority) busy-waits for the same lock via change_task, which never
descends to a lower-priority ring while its own ring has a runnable
thread. The result is a permanent, whole-system livelock -- not a
one-off race, but a deterministic outcome whenever the preemption
lands inside the section.

Reproduced by driving thousands of blocking TCP connects (each one
calls timer_hs for its connect timeout) through a browser under QEMU,
where interrupts tend to land on translation-block boundaries right
after the lock's cmpxchg. Confirmed via the QEMU monitor: osloop
spinning forever in lock_timer_list while the lock owner sat, fully
preempted, one instruction into timer_hs's critical section.

Fix: wrap the lock/insert-or-remove/unlock sequence in
timer_hs and cancel_timer_hs with pushfd/cli ... popfd, making it
atomic with respect to preemption. The wait loop inside
lock_timer_list is unaffected -- change_task manages IF on its own,
so spinning there with interrupts off cannot itself hang anything.

Reviewed-on: #564
Reviewed-by: Ivan B <1+dunkaist@noreply.localhost>
Reviewed-by: hidnplayr <hidnplayr@gmail.com>
Co-authored-by: Kiril Lipatov <lipatov.kiril@gmail.com>
Co-committed-by: Kiril Lipatov <lipatov.kiril@gmail.com>
2026-07-11 14:33:15 +00:00
6d02b10132 apps/macros.inc: add new macro "format" (#538)
Build system / Build (es_ES) (push) Successful in 2m38s
Build system / Build (en_US) (push) Successful in 2m46s
Build system / Build (ru_RU) (push) Successful in 2m49s
Build system / Publish Images (push) Successful in 1m47s
A new macro "format" has been added, adding the implementation of MENUET01, MENUET02 and KX formats.
task: #245

---------

Co-authored-by: Burer <burer@kolibrios.org>
Reviewed-on: #538
Reviewed-by: Burer <burer@kolibrios.org>
Reviewed-by: Gleb Zaharov <risdeveau@lair.moe>
Co-authored-by: Mikhail Frolov <mixa.frolov2003@gmail.com>
Co-committed-by: Mikhail Frolov <mixa.frolov2003@gmail.com>
2026-07-10 15:01:24 +03:00