Commit Graph

117 Commits

Author SHA1 Message Date
Carter Li 56f4dc00a2 Logo (Spin): adds a logo that turns in step with --watch
The builtin logo, or a text file in logo syntax, drawn as an extruded slab:
the front is the art as it is, the back is the art mirrored, and the side
walls are shaded with block glyphs. Rendering is pure: no terminal, no
input, no timer.

`--logo-type spin` hands every frame to the normal logo pipeline, so the
modules are laid out beside it exactly as they are for any other type, and
the first frame without --watch is byte-identical to the same art printed
as a builtin logo.

The rotation is driven by the `--watch` loop: `ffSpinTick()` runs once per
refresh and `ffLogoPrint()` is called only when it reports a step, so the
logo and the modules can never drift apart, and a build that never uses the
type costs one comparison per refresh.

Speed is set either as degrees per frame (--logo-spin-speed-per-frame,
default 10) or as seconds per revolution (--logo-spin-speed-per-round,
read from the clock and winning over the former when both are given). Both
take negative values to turn the other way, and --logo-spin-angle picks the
frame to start from.
2026-11-04 15:37:18 +08:00
arxhr007 d697197a8b Format: fixes substring with an end index outside of the string
`{1~20,30}` printed the placeholder as is, because the `,end` part was only
checked when the start index was inside the string. `{1~20}` printed nothing.
Parse and check the whole range first, so that a valid range that lies outside
of the string gives an empty result.
2026-10-31 22:40:07 +08:00
arxhr007 d6c15e1cec Format: fixes integer wraparound when parsing numbers
Numbers that don't fit in 32 bits were truncated, so `{4294967297}` was read
as `{1}`, `{4294967296}` as the next argument, and `{$4294967297}` as the
first constant. The same applied to the start, end and length of `~`, `:`, `<`,
`>` and `|`. Clamp them instead, so that they stay out of range.

Also avoid negating INT32_MIN for the ellipsis length of `{1:-2147483648}`,
which is a signed integer overflow.
2026-10-31 22:08:40 +08:00
arxhr007 d4dd15763f Format: fixes skipping nested conditionals
When a `{?arg}` / `{/arg}` conditional is skipped, the end of the skipped part
was the next `{?}` / `{/}` in the format string, even if it closed a
conditional nested in it. The text after the nested conditional was printed
and the real closing `{?}` / `{/}` was reported as an invalid placeholder.
A literal `{{?}}` inside the skipped part also ended it.

Skip to the `{?}` / `{/}` that matches the opening one, like the printing path
already does.
2026-10-31 17:26:01 +08:00
Don Yin ad62e3d1f5 Format: fixes substring ends before the start of the string (#2669)
* Format: fix substring ends before the start of the string

Closes #2668

Signed-off-by: Don Yin <Don_Yin@outlook.com>

* Doc: moves changelog entry to Unreleased [ci skip]

I moved the unreleased fix out of the 2.70.0 section.

Signed-off-by: Don Yin <Don_Yin@outlook.com>

---------

Signed-off-by: Don Yin <Don_Yin@outlook.com>
2026-10-26 00:34:50 -05:00
berce bfe74b8437 Logo: treat a "$" ending a line or the logo as a plain dollar (#2667)
Fixes #2666
2026-10-23 02:28:06 -05:00
Carter Li 73ebe95120 GPU (Pci): hardens the parser; adds tests 2026-10-13 09:17:26 +08:00
Carter Li 132e69b580 Percent: clamps bar width to 0% ~ 100% 2026-10-10 14:00:30 +08:00
Jami Kettunen a3f46d9742 CPU (Linux): make Snapdragon X1/X2 detection more correct (#2625)
Use the previously discussed soc_id which have public values in EDK2.

The so far used toplevel devicetree compatible values weren't as precise
and some logic (x1, x2p, x2e) simply was dead code.

Also drops the CPU test due to reading soc_id sysfs file, could be
adapted if still wanted around.
2026-09-28 21:06:21 -05:00
Carter Li 537635cd9c Logo: adds option logo.position: auto 2026-09-25 09:51:34 +08:00
Carter Li 80a931a87f CPU (Linux): fixes Snapdragon X2 series model detection
Fixes #2611
2026-09-25 08:46:13 +08:00
李通洲 bba45429ae Global: fixes issues found by AI 2026-09-24 21:27:51 +08:00
李通洲 7f3209181e Global: adds general cache layer 2026-09-22 00:45:40 +08:00
Carter Li 6842ae0757 Common (Format): fixes module format strings mishandling a value that carries more than one leading ANSI escape sequence 2026-09-21 14:22:14 +08:00
李通洲 ecbf218d6e Chore: fixes compiling errors 2026-09-18 15:01:11 +08:00
李通洲 6ff7f2772b Tests: adds more UTs 2026-09-17 20:11:25 +08:00
李通洲 d1b747192f Logo (Image): adds animation (gif / apng) support 2026-09-16 20:48:02 +08:00
李通洲 b96d7e7bec Networking: supports chunked response & custom port number 2026-09-16 14:49:50 +08:00
Carter Li fbf79ac6fe FFstrbuf: improves empty-string handling
for ffStrbufMatchSeparatedNS and ffStrbufSeparatedContainNS

Fixes #2585
2026-09-15 10:43:25 +08:00
李通洲 858d3749f4 FFstrbuf: adds FF_STRBUF_STATIC 2026-08-14 18:27:53 +08:00
Carter Li 2af56232a4 FFlist: adds FF_LIST_INSERT_AT and FF_LIST_REMOVE_AT 2026-08-04 15:08:50 +08:00
Carter Li 1c3f0eb7c0 FFstrbuf: adds integer overflow checks to EnsureFreeNoCheck and EnsureFixedLengthFree 2026-07-28 14:51:37 +08:00
李通洲 61656a1a7a Global: replaces __attribute__ to C23 [[attribute]] 2026-07-11 08:14:21 +08:00
李通洲 6358bd7844 FFstrbuf: optimises ffStrbufEnsureFreeNoCheck 2026-07-07 19:15:36 +08:00
Carter Li c20b532c7a Common (Format): adds | for center aligning 2026-06-02 16:03:04 +08:00
Carter Li 3c59161aca Common (Format): handles ANSI escapes when padding/truncating variable strings
Fixes #2364
2026-06-02 15:55:10 +08:00
Carter Li e73adc27a0 Common: fixes wcwidth handling 2026-06-02 15:05:13 +08:00
李通洲 8fbc29a70c Common (strutil): fixes unit tests 2026-05-28 22:41:47 +08:00
Carter Li d1bf208a92 Chore: renames stringUtils to strutil 2026-05-28 15:58:08 +08:00
Carter Li 88c3b7d118 Common (stringUtil): adds ffUtf8CharLenWidth 2026-05-26 16:11:30 +08:00
Carter Li dbb060eb62 Global: addresses AI's comments 2026-04-21 19:43:11 +08:00
李通洲 c7ecc33b64 Global: removes FFlist::elementSize
Improves performance of module Sound and PhysicalMemory
2026-04-14 15:47:26 +08:00
李通洲 831659966f Style: adds Cpp11BracedListStyle: Block 2026-03-31 14:20:21 +08:00
李通洲 5f261702a9 Style: adds BreakBeforeCloseBracketBracedList: true 2026-03-31 14:20:21 +08:00
李通洲 e0eba8ce21 Chore: run clang-format
```bash
find . -type f \( -name "*.c" -o -name "*.h" -o -name "*.cpp" -o -name "*.hpp" \) ! -path "src/3rdparty/*" -print0 | xargs -0 clang-format -i
```
2026-03-29 10:03:32 +08:00
李通洲 fe0f292cec FFstrbuf: adds new ffStrbufDecodeHexEscapeSequences 2026-03-25 14:13:03 +08:00
李通洲 ea6ad4ac86 Global (Windows): prefers NTAPI for querying registry values 2026-03-13 13:27:58 +08:00
李通洲 420d1cf804 FFstrbuf: updates ffStrbufSet* that they won't reserve extra space 2026-01-09 20:13:59 +08:00
李通洲 c9c9a58f59 Colors: supports @<color-index> 2026-01-08 14:10:47 +08:00
Carter Li d60b25e424 Refactor: renames src/util to src/common 2026-01-06 09:48:38 +08:00
李通洲 1e43e35857 Chore: merges common/* into util/* 2026-01-05 17:54:41 +08:00
Carter Li b64b93fc4a Util (mallocHelper): implements ffMallocUsableSize and uses it 2025-12-20 09:26:37 +08:00
李通洲 3079b44f63 FFstrbuf: adds more functions to match separated strings
1. ffStrbufMatchSeparatedIgnCaseNS
2. ffStrbufSeparatedContainNS
3. ffStrbufSeparatedContainNS
2025-09-19 14:34:27 +08:00
李通洲 54d8b0a95d Global: adds configurable trailing zeros for double formatting 2025-09-02 14:12:58 +08:00
Carter Li 1f1d7cf936 FFstrbuf: handles double rounding and zero representation in formatter 2025-08-20 10:10:30 +08:00
李通洲 a7eecf6fc7 FFstrbuf: improves double formatting precision handling 2025-08-19 16:03:04 +08:00
李通洲 dcbf76b233 FFstrbuf: adds number appending functions 2025-08-19 15:00:30 +08:00
李通洲 61f2823903 Global: fixes -ffast-math compatibility
Unifies unset double handling using `-DBL_MAX` sentinel

Fixes #1894
2025-08-14 10:01:34 +08:00
李通洲 a0174e8666 Global: add new unit related options
1. `--<module>-space-before-unit`
2. `--duration-abbreviation`
3. various code refactoring and cleanups
2025-07-30 15:03:23 +08:00
Carter Li 77dd18466b FFstrbuf: add function ffStrbufAppendUtf32CodePoint 2025-07-29 16:36:21 +08:00