Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
c895632
Add C API shared library (dasher.h / CAPI.cpp)
willwade May 19, 2026
5e653ea
fixing gh actions build
willwade May 19, 2026
51f8588
Make Realize() and NewFrame() public in DasherInterfaceBase
willwade May 19, 2026
1e9b1df
provide explicit data directory support.
willwade May 19, 2026
50e500d
added color utility functions to the C API..
willwade May 19, 2026
a6d4bab
add tests
willwade May 19, 2026
aacad4c
Update FileLogger.cpp
willwade May 19, 2026
a2c075c
fix readme
willwade May 19, 2026
1697c8b
make make ScanFiles search recursively so will find alphabets etc
willwade May 19, 2026
e5babbc
Add legacy colour XML parser and fix colorToARGB for 0-1 range
willwade May 19, 2026
ef98c5f
Add dasher_key_event for switch/keyboard/button input
willwade May 19, 2026
2215a2c
Add parameter schema, palette/alphabet enumeration, and settings save
willwade May 19, 2026
3510a23
Param grouping , user dir seperation, error reporting, pallete accesor
willwade May 19, 2026
738d331
fix test
willwade May 19, 2026
dfa2e7a
Migrating some of Sebastians DasherSettings excel sheet into Paramete…
willwade May 19, 2026
a608d1e
Add settings manifest and generator
willwade May 19, 2026
59af0a7
Add CMake generation for Parameters.cpp
willwade May 19, 2026
c090891
add Parameter code gen - and i10n support
willwade May 19, 2026
59de2aa
add italian and spanish portugese-brazil, pt-PT
willwade May 20, 2026
7e72fdc
adding subgroups for filtering in UI projects
willwade May 20, 2026
49577fb
adding some catch
willwade May 20, 2026
ef4472b
update settings based on the 5 tabs we are inventing
willwade May 20, 2026
f948681
fix uiType for dropdown string params
willwade May 20, 2026
8ffacfc
adding greek
willwade May 20, 2026
4550fa2
fix uiType values to match C++ UIControlType enum (Enum not dropdown)
willwade May 20, 2026
750c75d
read group from Parameter_Value instead of hardcoded parameterGroup s…
willwade May 20, 2026
1bf2ce4
GetPermittedValues: always include current value in results for strin…
willwade May 20, 2026
19fb96d
Fix GetPermittedValues: use m_pSettingsStore for current value lookup
willwade May 20, 2026
c74c210
Qualify Settings::PARAM_STRING in GetPermittedValues
willwade May 20, 2026
e845c8b
adding more euro langs
willwade May 20, 2026
207d5b7
add other langs
willwade May 20, 2026
f319bfa
Add output callback to C API for Direct Mode support
willwade May 20, 2026
8498828
Add WorldAlphabets alphabet generator script and generated files
willwade May 20, 2026
dcdbf56
Replace char-frequency training with real AAC conversational text fro…
willwade May 20, 2026
ebb1af8
Remove superseded generate_alphabets.py (replaced by generate_trainin…
willwade May 20, 2026
fd27dfe
added training credit to Keith
willwade May 20, 2026
08ee0d0
Fix null pointer crashes on macOS startup
willwade Jun 7, 2026
d0b5d4f
Add game mode C API: enter, leave, active
willwade Jun 8, 2026
b433f49
Add game mode text file and fallback lookup
willwade Jun 8, 2026
562a019
Add gamemode_english_GB.txt for legacy English alphabets
willwade Jun 8, 2026
69ddb9e
Add message callback to C API for engine warnings/errors
willwade Jun 8, 2026
0fca9ec
Fix crash in WordGeneratorBase::GetSymbols - restore MIT logic
willwade Jun 8, 2026
d9a9f9d
Fix GetSymbols build - use SymbolIsSpaceCharacter instead of GetSpace…
willwade Jun 8, 2026
d7127b3
Fix bounds check in SymbolIsSpaceCharacter/SymbolPrintsNewLineCharacter
willwade Jun 8, 2026
adb7123
Add bounds checks to all m_vCharacters accessors in AlphInfo
willwade Jun 8, 2026
bb23dc7
Add game state C API: target text, correct count, target length, wron…
willwade Jun 8, 2026
d884efe
Fix incomplete type: include GameModule.h and AlphInfo.h in CAPI.cpp
willwade Jun 8, 2026
9d03c12
Add canvas text suppression API + debug logging for game mode spaces
willwade Jun 8, 2026
d296186
Fix space symbols: parse unicode attribute from textCharAction in AlphIO
willwade Jun 8, 2026
bf64a64
Fix crash: initialize m_strTarget in ChunkGenerated
willwade Jun 8, 2026
6d2fb29
Debug: log game node coordinates
willwade Jun 8, 2026
d1fdd0a
Debug: log HandleNodePopulated calls
willwade Jun 8, 2026
b44370b
Fix arrow: force model rebuild with NF_GAME on EnterGameMode
willwade Jun 8, 2026
b66bbdf
Debug: log EnterGameMode, HandleNodePopulated, HandleGameNodeDraw
willwade Jun 8, 2026
09cc916
Debug: log OnGameNodeDraw broadcasts with listener count
willwade Jun 8, 2026
106a6f6
Debug: log DisjointRender and second OnGameNodeDraw path
willwade Jun 8, 2026
1b55e72
Fix arrow: initialize m_pView to nullptr so HandleViewChange actually…
willwade Jun 8, 2026
e57290f
Fix duplicate broadcast line from debug cleanup
willwade Jun 8, 2026
6374448
Fix game help params: use Slider UI type instead of None
willwade Jun 8, 2026
bb12154
Add min/max/step to game help params for proper slider UI
willwade Jun 8, 2026
f6e67dc
Add uiType/min/max/step for visible numeric params (fonts, LM, game, …
willwade Jun 8, 2026
b67cb01
Add proper UI controls for all remaining numeric params (sliders, ste…
willwade Jun 8, 2026
7f1bcf0
Guard against empty children in NextScheduledStep to prevent crash
willwade Jun 9, 2026
cb5edb4
Add LMRegistry: plugin-style factory for language models
willwade Jun 9, 2026
07b84e2
Add adaptive LM settings: paramKeys in LMDescriptor + CAPI lookup
willwade Jun 9, 2026
b370e8d
Update LM_REGISTRY.md with paramKeys docs
willwade Jun 9, 2026
a049c0a
Fix CTW crash: typo (< instead of <<) in GetProbs iterator
willwade Jun 9, 2026
1646c4f
Map tier expert/advanced to advancedSetting flag in generated Paramet…
willwade Jun 9, 2026
7c6efef
Suppress canvas text messages when frontend message callback is regis…
willwade Jun 9, 2026
023015f
add c api docs
willwade Jun 9, 2026
7b185cd
Add dasher_reset() CAPI — clears output and resets model to initial s…
willwade Jun 9, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
36 changes: 29 additions & 7 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -31,16 +31,38 @@
*.out
*.app

# Build Files
Build
# Build directories
build/
Build/
out/

# Eclipse
# Build logs
build_log.txt

# IDE
.autotools
.cproject
.project

.gradle/
.idea

# Visual Studio Code
.idea/
.ionide/
.vs/
.vscode/
*.user
*.suo
*.sln
*.vcxproj*

# OS
.DS_Store
Thumbs.db

# Backup files
CMakeLists.txt.capi
do_build.cmd

# Runtime settings files
Data/dasher_settings.xml
*.settings.xml
dasher_settings.xml
dasher.log
75 changes: 75 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,28 @@ endif()
set(PUGIXML_BUILD_TESTS OFF CACHE BOOL "" FORCE)
add_subdirectory("${CMAKE_CURRENT_LIST_DIR}/Thirdparty/pugixml" EXCLUDE_FROM_ALL)

###############################
# Code Generation: Parameters.cpp from settings_manifest.json
###############################

set(PARAMETERS_MANIFEST "${CMAKE_CURRENT_LIST_DIR}/settings_manifest.json")
set(PARAMETERS_GENERATOR "${CMAKE_CURRENT_LIST_DIR}/Scripts/generate_parameters.py")
set(PARAMETERS_OUTPUT "${CMAKE_CURRENT_LIST_DIR}/src/DasherCore/Parameters.cpp")

find_package(Python3 COMPONENTS Interpreter)

if(Python3_Interpreter_FOUND)
add_custom_command(
OUTPUT ${PARAMETERS_OUTPUT}
COMMAND ${Python3_EXECUTABLE} ${PARAMETERS_GENERATOR}
DEPENDS ${PARAMETERS_MANIFEST} ${PARAMETERS_GENERATOR}
COMMENT "Generating Parameters.cpp from settings_manifest.json"
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
)
else()
message(WARNING "Python3 not found. Parameters.cpp will not be auto-regenerated from settings_manifest.json. Edit the JSON and run: python3 Scripts/generate_parameters.py")
endif()

###############################
# Building Core Dasher Library
###############################
Expand All @@ -44,10 +66,63 @@ ADD_library(DasherCore STATIC
${SOURCE_FILES}
)

set_target_properties(DasherCore PROPERTIES
POSITION_INDEPENDENT_CODE ON
)

target_include_directories(DasherCore PUBLIC ${CMAKE_CURRENT_LIST_DIR}/src/)

add_dependencies(DasherCore pugixml)
target_link_libraries(DasherCore pugixml)

source_group(TREE ${CMAKE_CURRENT_LIST_DIR}/src/ FILES ${HEADER_FILES} ${SOURCE_FILES})
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT DasherCore)

###############################
# C API shared library
###############################

option(BUILD_CAPI "Build the C API shared library (dasher.dll / libdasher.so)" ON)

if(BUILD_CAPI)
add_library(dasher SHARED
${CMAKE_CURRENT_LIST_DIR}/src/CAPI.cpp
)

target_include_directories(dasher PRIVATE
${CMAKE_CURRENT_LIST_DIR}/src/
)

target_link_libraries(dasher PRIVATE DasherCore)

if(WIN32)
target_compile_definitions(dasher PRIVATE DASHER_BUILDING)
endif()

set_target_properties(dasher PROPERTIES
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
)

# C API Tests
option(BUILD_TESTS "Build the C API unit tests" ON)
if(BUILD_TESTS)
add_executable(dasher_test
${CMAKE_CURRENT_LIST_DIR}/tests/test_capi.cpp
)

target_include_directories(dasher_test PRIVATE
${CMAKE_CURRENT_LIST_DIR}/src/
)

target_link_libraries(dasher_test PRIVATE dasher)

# Allow setting test data directory
if(TEST_DATA_DIR)
target_compile_definitions(dasher_test PRIVATE TEST_DATA_DIR="${TEST_DATA_DIR}")
endif()

add_test(NAME dasher_capi_tests COMMAND dasher_test)
endif()
endif()
Loading
Loading