Compare commits

..
Author SHA1 Message Date
Aaron fde535d7c7 feat(filebrowser): add delete button to toolbar, fix FAT32 delete/rename with raw sector scanning
continuous-integration/drone/pr Build is failing
continuous-integration/drone/push Build is passing
- Add SYM_TRASH toolbar button wired to fb_delete_cb (was missing entirely)
- Filter '.' and '..' entries in fb_collect_cb so they never appear
- Rewrite deleteFile/deleteDir/renameFile to use raw sector scanning
  instead of getDirEntries linked-list indices (fixes  gap mismatch)
- Handle root directory correctly (use bootRecord^.rootCluster instead
  of assuming entry 0 is '.')
2026-03-11 19:28:49 +00:00
Aaron 1633a1e76c fix: FAT32 >1024 byte read/write truncation, VFS write notifications & dir watch
continuous-integration/drone/pr Build is failing
continuous-integration/drone/push Build is passing
- FAT32 writeFile: replace hardcoded spc=4 with bootRecord^.spc for
  cluster allocation and per-sector write loop
- FAT32 writeFile: update directory entry byteSize on disk after write
- FAT32 readFile: use dir^.byteSize instead of cluster-based estimate,
  fix off-by-one in read loop, remove spurious +sectorSize allocation
- VFS: fire VFS_OnMutation on sync/async writes (cache invalidate + watch)
- VFS: invalidate all cache entries for volume on mutation (relPath mismatch)
- VFS: add vfsParentDir helper, store VFSDir in file descriptors
- FDTable: add VFSDir field, free on close
- File browser: enable directory watch & poll timer, two-step new file
  creation (open + write), remove io.syslog import
- Linker: add --no-warn-execstack to suppress ld exit code 1 on warning
- Add core.strings.helpers unit (getFileExtension, fmtFileSize, sort)
2026-03-11 07:39:00 +00:00
Aaron b20b88abfd refactor: rename core.stringhelpers to core.strings.helpers
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2026-03-10 19:10:19 +00:00
Aaron 80f30d8e69 refactor: rename core.search to core.stringhelpers
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2026-03-10 19:07:13 +00:00
Aaron 587177f6bb remove debug file
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2026-03-10 18:56:55 +00:00
Aaron badcf8df5e removed unused icons
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2026-03-10 18:47:50 +00:00
Aaron 76eaf6c698 fix: replace raw mouse hook with LVGL long-press for file browser context menu
Removed driver.hid.mouse dependency that caused page fault on close.
Context menu now triggers via LV_EVENT_LONG_PRESSED on content rows.
Cleaned up onClose teardown ordering and removed debug syslog markers.
2026-03-10 18:47:09 +00:00
Aaron 2fb50a5366 feat: file dispatch system, file-type icons, multi-instance notepad
- Add extension-based dispatch to driver.storage.filedispatch with typed
  union (variant record THandlerKind = hkMagic/hkExtension)
- Extract file-type icon constants and mapping to core.gfx.fileicons
- Add core.search utility (getFileExtension, fmtFileSize, sortStringArray)
- Generate PUA bitmap icon fonts (32/64/128px) from Font Awesome via
  gen_file_icons.py + compile_icons.sh toolchain
- Integrate file dispatch into file browser (double-click triggers dispatch)
- Register notepad as handler for text file extensions
- Fix init order in app.mgr (filedispatch.init before app inits)
- Refactor notepad from singleton to multi-instance (up to 8 windows)
  using instance array, findStateByWid, and LVGL user_data on msgboxes
2026-03-10 18:47:08 +00:00
42 changed files with 70869 additions and 2890 deletions

No files matched your search

+1 -1
View File
@@ -6,7 +6,7 @@ ENV DEBIAN_FRONTEND=noninteractive
RUN dpkg --add-architecture i386 RUN dpkg --add-architecture i386
RUN apt-get update && apt-get install -y \ RUN apt-get update && apt-get install -y \
curl dos2unix wget git make nasm binutils xorriso grub-pc-bin gcc gcc-multilib \ curl dos2unix wget git make nasm binutils xorriso grub-pc-bin gcc gcc-multilib \
python3 python3-pip && \ python3 python3-pip python3-pil && \
apt-get clean my room apt-get clean my room
RUN pip3 install --no-cache-dir --break-system-packages "mkdocs>=1.6,<2" mkdocs-material RUN pip3 install --no-cache-dir --break-system-packages "mkdocs>=1.6,<2" mkdocs-material
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
-12
View File
@@ -106,12 +106,6 @@ function intToString(i : uint32) : pchar;
``` ```
Returns a heap-allocated decimal string representation of `i`. Returns a heap-allocated decimal string representation of `i`.
### int64ToString
```pascal
function int64ToString(i : int64) : pchar;
```
Returns a heap-allocated decimal string representation of the signed 64-bit integer `i`. Negative values are prefixed with `'-'`.
### hexStringToInt ### hexStringToInt
```pascal ```pascal
function hexStringToInt(str : pchar) : uint32; function hexStringToInt(str : pchar) : uint32;
@@ -124,12 +118,6 @@ function boolToString(b : boolean; ext : boolean) : pchar;
``` ```
Returns a heap-allocated string for the boolean `b`. When `ext` is `true`, returns `'true'` or `'false'`; when `false`, returns `'1'` or `'0'`. Returns a heap-allocated string for the boolean `b`. When `ext` is `true`, returns `'true'` or `'false'`; when `false`, returns `'1'` or `'0'`.
### doubleToStr
```pascal
function doubleToStr(d : Double) : pchar;
```
Returns a heap-allocated decimal string representation of the 64-bit floating-point value `d`. Integer values are emitted without a decimal point (e.g. `42`). Fractional values include up to 15 significant digits with trailing zeros removed. Very large or very small values use scientific notation (e.g. `1.5e+20`).
### UnitTest ### UnitTest
```pascal ```pascal
procedure UnitTest; procedure UnitTest;
File diff suppressed because it is too large. Load diff
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

+49056
View File
File diff suppressed because it is too large. Load diff
+3456
View File
File diff suppressed because it is too large. Load diff
+12576
View File
File diff suppressed because it is too large. Load diff
+2 -2
View File
@@ -30,8 +30,8 @@
#define LV_LIMITS_INCLUDE <limits.h> #define LV_LIMITS_INCLUDE <limits.h>
#define LV_STDARG_INCLUDE <stdarg.h> #define LV_STDARG_INCLUDE <stdarg.h>
/* Built-in memory pool: 256 KB should be plenty for our UI */ /* Built-in memory pool: 1 MB for complex UI (file browser etc.) */
#define LV_MEM_SIZE (256 * 1024U) #define LV_MEM_SIZE (1024 * 1024U)
#define LV_MEM_POOL_EXPAND_SIZE 0 #define LV_MEM_POOL_EXPAND_SIZE 0
#define LV_MEM_ADR 0 #define LV_MEM_ADR 0
-1
View File
@@ -136,7 +136,6 @@ nav:
- MD5: src/core/enc/core.enc.md5.md - MD5: src/core/enc/core.enc.md5.md
- SHA-1: src/core/enc/core.enc.sha1.md - SHA-1: src/core/enc/core.enc.sha1.md
- Formats: - Formats:
- JSON: src/core/fmt/core.fmt.json.md
- Targa (TGA): src/core/fmt/core.fmt.targa.md - Targa (TGA): src/core/fmt/core.fmt.targa.md
- Graphics: - Graphics:
- Color: src/core/gfx/core.gfx.color.md - Color: src/core/gfx/core.gfx.color.md
File diff suppressed because it is too large. Load diff
Loaded 20 of 42 files, more files were not shown because too many files have changed in this diff. Show more