Implement full AppImage packaging support including AppRun entry point, .desktop launcher, icon asset, and recursive shared library collection via collect_so_files.sh. The Makefile build target now generates a portable Linux executable by assembling the directory structure, copying the binary to AppImage/usr/bin/r, running the dependency collector, and invoking appimagetool to produce a self-contained AppImage binary. Also update .gitignore to exclude the AppImage build directory and add shell scripts to the ignore list.
The diff adds a tip about creating bash files for environment variables and symlinking them for easy access, along with new configuration sections for OpenAI (using gpt-4o-mini) and Grok (using grok-2 with strict mode disabled) API setups in the README documentation.
The fix changes the glob pattern from a literal dot to a wildcard asterisk when the target directory is ".", enabling recursive matching of files in subdirectories during the build process.
The change adds a conditional check in `tool_function_directory_rglob` that converts a target_dir of "." to "*", enabling the recursive glob to match files in nested subdirectories rather than only the current directory's immediate contents.
Replace hardcoded global API URL variables with getter functions that check the R_BASE_URL environment variable, falling back to the static defaults. Introduce a joinpath utility in utils.h to safely concatenate a base URL with a path segment, handling trailing slashes and leading path slashes. Remove conditional compilation blocks for RD and OLLAMA backends, consolidating all API URL logic into the new get_completions_api_url and get_models_api_url functions. Update all call sites in openai.h to use the new getter functions instead of direct global variable access.
- Remove the initial commit placeholder progress message from Makefile
- Add `!tools` command to REPL that prints available tools descriptions
- Include tools.h header and integrate tools_descriptions() function
- Switch default RD backend from DeepInfra/Llama to Anthropic/Claude models
- Update advanced_model and fast_model to claude-3-5-haiku-20241022
- Change completions_api_url to Anthropic API endpoint
- Enable verbose mode by default (is_verbose = true)
- Update README to reflect new Claude/Ollama focus and remove old download links
Introduce a new `file_version_history` table to the SQLite schema and implement the `db_store_file_version` function that reads a file's current content and inserts a version record before overwriting it. The `tool_function_write_file` now calls this backup function prior to opening the file for writing, ensuring every write operation creates a recoverable snapshot.
Add build_mingw target using x86_64-w64-mingw32-gcc cross-compiler with
dedicated MinGW flags and publish step. Introduce Dockerfile with Ubuntu
base image installing all required build dependencies (gcc, make, readline,
ncurses, curl, openssl, json-c, sqlite3, python3-dev). Add compose.yml for
convenient Docker-based development shell with mounted working directory.
Extend Makefile with docker, docker_make, docker_run, run_mingw targets and
suppress error output on publish commands for build and build_free targets.
Introduce conditional compilation via OLLAMA preprocessor flag to switch between OpenAI and Ollama API endpoints, model names, and URLs. Add `build_free` and `run_free` Makefile targets for the Ollama variant. Enhance REPL with `!models` command to list available models, improve error handling in `openai_process_chat_message`, and fix history line addition logic.
The change inserts a `printf("%s", output)` call inside the `tool_function_linux_terminal` function, immediately after reallocating the output buffer and before appending new data. This enables real-time display of captured process output to the console as chunks are received, rather than only returning the final aggregated string. The modification affects the core execution loop in `tools.h` where command output is accumulated from the process stream.
Add explicit system("clear") call and newline in handle_sigint to visually reset the terminal display before showing the double-Ctrl+C exit message, ensuring clean output regardless of prior screen state.
Add file path completion support alongside existing command completion in the readline-based input system. Include <glob.h> header and implement line_file_generator function that uses glob pattern matching to suggest file paths based on partial input. Modify line_command_completion to detect file path context (non-command input after start position) and delegate to the new file generator, enabling tab-completion of filenames and directories in the shell-like interface.
- Add SIGINT handler that exits on two Ctrl+C presses within 1 second
- Introduce --free flag to switch auth type to AUTH_TYPE_FREE via auth_free()
- Implement "model" REPL command to print current prompt model name
- Register index_source_directory tool description and function in tools.h
Add a new `message_add_object` function in messages.h that appends a json_object to the global message list. Modify openai_chat in openai.h to call this function after processing a chat completion, ensuring the assistant's response object is stored. Also comment out the previous `message_add_tool_call` call to avoid duplicate message storage when tool calls are present, and add a missing `continue` in main.c's repl loop after the dump command to prevent fallthrough.
- Added rpylib_prompt and rpylib_system functions to rpylib.c for user and system role OpenAI chat
- Removed build_free target from Makefile and added publish step for rpylib.so build