GUI

GUI
Source snapshot: 9b4f8a3 (2026-09-23); retained QMail clone, including M7.
Working = implemented in this snapshot, not a new runtime/test certification.
Partial = an identified implementation/exposure gap; obsolete = retained compatibility only.
Entry points and static functions are selected navigation anchors; full lexical index: function-index.txt.
Used by / Tests list selected source references (including callback registration), not a proven dynamic call graph.
Tests were inspected, not executed; use tools/test.ps1 with isolated scratch data.
Old paths come from docs/path-map.txt; absent mappings denote additions after the move.

Application startup

Purpose
Parse desktop launch arguments and initialize the SDL/in-process application.
Files
src/app/main.c src/app/startup.c
Old paths
vendor/gui-3/src/app/main.c -> src/app/main.c src/host/startup.c -> src/app/startup.c
Public header
include/qmail/startup.h
Entry points
src/app/main.c:254 :: main() src/app/startup.c:42 :: qmail_startup_file_exists()
Important static functions
src/app/main.c:38 :: inproc_live_new_mail() src/app/main.c:47 :: print_version() src/app/startup.c:23 :: join_path() src/app/startup.c:37 :: ensure_directory()
Owns
Desktop process entry and startup policy.
Used by
src/app/desktop_api.c
Side effects
Updates UI state, allocates/renders resources and delegates user operations to desktop services; host calls can use OS/filesystem/process APIs.
Tests
tests/unit/desktop_api_test.c tests/unit/migration_test.c tests/unit/startup_test.c
Platforms
Windows; POSIX branches/dependencies where present. Linux/macOS runtime unverified in M13.
Status
working; Old Win32 chrome fallback was left in the archive, not a retained component.

Desktop API, service and SDK

Purpose
Provide typed desktop operations over the retained service/SDK layer and declare feature readiness.
Files
src/app/desktop_api.c src/app/desktop_api_more.c src/app/feature_catalog.c src/mail/service/qmail_service.c src/mail/sdk/qmail_sdk.c src/mail/sdk/qmail_sdk_transport.c
Old paths
src/desktop_api/desktop_api.c -> src/app/desktop_api.c src/desktop_api/desktop_api_more.c -> src/app/desktop_api_more.c src/desktop_api/feature_catalog.c -> src/app/feature_catalog.c vendor/core/src/qmail_service/qmail_service.c -> src/mail/service/qmail_service.c vendor/core/src/qmail_sdk/qmail_sdk.c -> src/mail/sdk/qmail_sdk.c vendor/core/src/qmail_sdk/qmail_sdk_transport.c -> src/mail/sdk/qmail_sdk_transport.c
Public header
include/qmail/desktop_api.h include/qmail/feature_catalog.h include/qmail_sdk/qmail_sdk.h include/qmail_service/qmail_service.h
Entry points
src/app/desktop_api.c:1737 :: qmail_desktop_api_send_email() src/mail/service/qmail_service.c:2544 :: qmail_svc_send_email() src/mail/sdk/qmail_sdk.c:2910 :: qmail_sdk_create() src/app/feature_catalog.c:9 :: qmail_desktop_feature_catalog() src/app/desktop_api.c:282 :: qmail_desktop_api_identity_lock() src/app/desktop_api_more.c:104 :: qmail_desktop_api_search_messages() src/mail/service/qmail_service.c:272 :: qmail_svc_messages_list() src/mail/sdk/qmail_sdk.c:2905 :: qmail_sdk_abi_version()
Important static functions
src/app/desktop_api.c:335 :: change_pw_file_read() src/app/desktop_api.c:358 :: change_pw_file_write() src/mail/service/qmail_service.c:255 :: qmail_svc_parse_email_id() src/mail/service/qmail_service.c:395 :: qmail_svc_parse_email_id_for_delete() src/mail/sdk/qmail_sdk.c:539 :: parse_envelope() src/mail/sdk/qmail_sdk.c:579 :: parse_params() src/app/desktop_api_more.c:37 :: clear_error() src/app/desktop_api_more.c:45 :: fail()
Owns
Desktop operation contract and feature readiness; domain rules remain in their groups.
Used by
src/app/client.c src/app/client_inproc.c src/app/main.c
Side effects
Updates UI state, allocates/renders resources and delegates user operations to desktop services; host calls can use OS/filesystem/process APIs.
Tests
tests/live/attachment_download_probe.c tests/live/contacts_probe.c tests/live/draft_probe.c tests/live/drd_profile_probe.c tests/live/get_message_probe.c tests/live/large_send_live_probe.c tests/live/mail_action_probe.c tests/live/object_transfer_probe.c
Platforms
Windows; POSIX branches/dependencies where present. Linux/macOS runtime unverified in M13.
Status
working

Client binding and JSON boundary

Purpose
Bind GUI client operations to desktop APIs, decode results and provide fake data for tests.
Files
src/app/client_inproc.c src/app/client.c src/gui/client/client.c src/gui/client/ops.c src/gui/client/ops_table.inc src/gui/client/load.c src/gui/client/servers.c src/gui/client/decode.c src/gui/client/decode_contacts.c src/gui/client/decode_drd.c src/gui/client/decode_setup.c src/gui/client/decode_transfer.c src/gui/client/decode_wallet.c src/gui/client/fake.c
Old paths
src/gui/client_inproc.c -> src/app/client_inproc.c src/gui/client.c -> src/app/client.c vendor/gui-3/src/client/client.c -> src/gui/client/client.c vendor/gui-3/src/client/ops.c -> src/gui/client/ops.c vendor/gui-3/src/client/ops_table.inc -> src/gui/client/ops_table.inc vendor/gui-3/src/client/load.c -> src/gui/client/load.c vendor/gui-3/src/client/servers.c -> src/gui/client/servers.c vendor/gui-3/src/client/decode.c -> src/gui/client/decode.c vendor/gui-3/src/client/decode_contacts.c -> src/gui/client/decode_contacts.c vendor/gui-3/src/client/decode_drd.c -> src/gui/client/decode_drd.c vendor/gui-3/src/client/decode_setup.c -> src/gui/client/decode_setup.c vendor/gui-3/src/client/decode_transfer.c -> src/gui/client/decode_transfer.c vendor/gui-3/src/client/decode_wallet.c -> src/gui/client/decode_wallet.c vendor/gui-3/src/client/fake.c -> src/gui/client/fake.c
Public header
include/qgui/client.h include/qmail/gui_client.h include/qmail/gui_inproc.h
Entry points
src/app/client_inproc.c:1822 :: qgui_client_inproc_init() src/gui/client/load.c:1042 :: qgui_client_load() src/app/client_inproc.c:1811 :: qgui_client_inproc_set_setup_progress() src/app/client.c:16 :: qmail_gui_client_attach() src/gui/client/client.c:73 :: qgui_client_stub_init() src/gui/client/ops.c:13 :: qgui_op_count() src/gui/client/load.c:112 :: qgui_client_send_with_progress() src/gui/client/servers.c:4 :: qgui_client_server_request() src/gui/client/decode.c:122 :: qgui_decode_time_label() src/gui/client/decode_contacts.c:47 :: qgui_client_decode_contacts() src/gui/client/decode_drd.c:54 :: qgui_client_base64url_encode() src/gui/client/decode_setup.c:48 :: qgui_client_decode_disclaimer()
Important static functions
src/app/client_inproc.c:659 :: inproc_download_attachment() src/app/client_inproc.c:781 :: inproc_save_draft() src/app/client.c:6 :: invalid() src/gui/client/load.c:22 :: load_rows_query() src/gui/client/load.c:54 :: load_rows() src/gui/client/fake.c:560 :: fake_task_status() src/gui/client/fake.c:574 :: fake_save_draft() src/gui/client/client.c:3 :: stub_health()
Owns
GUI operation table and in-process mapping.
Used by
src/app/main.c src/gui/server_adapter.c src/gui/client/client_rest.c src/gui/client/rest.c src/gui/host/jobs.c src/gui/logic/fake_state.c src/gui/logic/reduce.c
Side effects
Updates UI state, allocates/renders resources and delegates user operations to desktop services; host calls can use OS/filesystem/process APIs.
Tests
tests/gui/avatar_render_test.cpp tests/gui/server_gui_test.c tests/gui/test_headers.c tests/legacy/test_rest_live.c tests/unit/gui_client_test.c tests/unit/send_progress_test.c tests/unit/server_adapter_test.c tests/gui/client/test_decode.c
Platforms
Windows; POSIX branches/dependencies where present. Linux/macOS runtime unverified in M13.
Status
working

Reducer and view model

Purpose
Reduce events into application state and derive visible rows, menus and filters.
Files
src/gui/logic/address.c src/gui/logic/fake_state.c src/gui/logic/load.c src/gui/logic/menus.c src/gui/logic/query_defs.c src/gui/logic/reduce.c src/gui/logic/servers.c src/gui/logic/sounds.c src/gui/logic/state.c src/gui/logic/text_field.c src/gui/logic/viewmodel.c
Old paths
vendor/gui-3/src/logic/address.c -> src/gui/logic/address.c vendor/gui-3/src/logic/fake_state.c -> src/gui/logic/fake_state.c vendor/gui-3/src/logic/load.c -> src/gui/logic/load.c vendor/gui-3/src/logic/menus.c -> src/gui/logic/menus.c vendor/gui-3/src/logic/query_defs.c -> src/gui/logic/query_defs.c vendor/gui-3/src/logic/reduce.c -> src/gui/logic/reduce.c vendor/gui-3/src/logic/servers.c -> src/gui/logic/servers.c vendor/gui-3/src/logic/sounds.c -> src/gui/logic/sounds.c vendor/gui-3/src/logic/state.c -> src/gui/logic/state.c vendor/gui-3/src/logic/text_field.c -> src/gui/logic/text_field.c vendor/gui-3/src/logic/viewmodel.c -> src/gui/logic/viewmodel.c
Public header
include/qgui/client.h include/qgui/servers.h include/qgui/state.h include/qgui/types.h include/qgui/viewmodel.h
Entry points
src/gui/logic/reduce.c:4789 :: qgui_reduce() src/gui/logic/viewmodel.c:130 :: qgui_viewmodel_build() src/gui/logic/address.c:69 :: qgui_parse_address() src/gui/logic/fake_state.c:6 :: qgui_state_seed_from_client() src/gui/logic/load.c:81 :: qgui_state_apply_load() src/gui/logic/menus.c:101 :: qgui_menu_count() src/gui/logic/query_defs.c:42 :: qgui_chip_count() src/gui/logic/reduce.c:1783 :: qgui_row_picked() src/gui/logic/servers.c:6 :: qgui_servers_parse_uint() src/gui/logic/sounds.c:21 :: qgui_sound_count() src/gui/logic/state.c:6 :: qgui_mailbox_init() src/gui/logic/text_field.c:40 :: qgui_text_field_init()
Important static functions
src/gui/logic/address.c:46 :: parse_groups() src/gui/logic/reduce.c:567 :: selected_message() src/gui/logic/reduce.c:579 :: begin_pending_attachment_download() src/gui/logic/servers.c:59 :: capture_saved() src/gui/logic/address.c:19 :: word_to_code() src/gui/logic/load.c:11 :: apply_health() src/gui/logic/load.c:48 :: apply_rows() src/gui/logic/servers.c:19 :: field_set()
Owns
AppState transitions, query definitions and view model.
Used by
src/app/main.c src/gui/client/decode_contacts.c src/gui/client/decode_drd.c src/gui/client/fake.c src/gui/client/load.c src/gui/host/jobs.c src/gui/host/loop.c src/gui/host/titlebar.c
Side effects
Mutates application state and derives view data; host/client operations remain behind callbacks.
Tests
tests/gui/avatar_render_test.cpp tests/gui/server_gui_test.c tests/gui/test_headers.c tests/gui/theme_switch_test.c tests/unit/server_adapter_test.c tests/update/update_ux_test.c tests/gui/layout/test_columns.c tests/gui/layout/test_editor.c
Platforms
Windows; POSIX branches/dependencies where present. Linux/macOS runtime unverified in M13.
Status
working

Clay layout and vector icons

Purpose
Build screen structure, edit text and map hit targets; render UI icons from vector paths.
Files
src/gui/layout/layout.c src/gui/layout/widgets.c src/gui/layout/panes.c src/gui/layout/setup.c src/gui/layout/editor.c src/gui/layout/server_panes.c src/gui/layout/hits.c src/gui/layout/strings.c src/gui/layout/icons.h src/gui/render/icon_paths.h
Old paths
vendor/gui-3/src/layout/layout.c -> src/gui/layout/layout.c vendor/gui-3/src/layout/widgets.c -> src/gui/layout/widgets.c vendor/gui-3/src/layout/panes.c -> src/gui/layout/panes.c vendor/gui-3/src/layout/setup.c -> src/gui/layout/setup.c vendor/gui-3/src/layout/editor.c -> src/gui/layout/editor.c vendor/gui-3/src/layout/server_panes.c -> src/gui/layout/server_panes.c vendor/gui-3/src/layout/hits.c -> src/gui/layout/hits.c vendor/gui-3/src/layout/strings.c -> src/gui/layout/strings.c vendor/gui-3/src/layout/icons.h -> src/gui/layout/icons.h
Public header
include/qgui/layout.h
Entry points
src/gui/layout/layout.c:125 :: qgui_layout_create() src/gui/layout/widgets.c:226 :: qgui_layout_scrollbar_bounds() src/gui/layout/hits.c:365 :: qgui_layout_set_pointer()
Important static functions
src/gui/layout/widgets.c:366 :: status_label_c() src/gui/layout/widgets.c:402 :: status_label() src/gui/layout/server_panes.c:68 :: status_dot() src/gui/layout/server_panes.c:121 :: status_label() src/gui/layout/layout.c:14 :: qgui_clay_trace() src/gui/layout/layout.c:39 :: qgui_clay_error() src/gui/layout/panes.c:30 :: pane_header_begin() src/gui/layout/panes.c:35 :: small_button()
Owns
Screen layout, hit regions and icon geometry.
Used by
src/gui/host/loop.c
Side effects
Allocates layout state, emits draw/hit commands and updates editor state.
Tests
tests/gui/avatar_render_test.cpp tests/gui/server_gui_test.c tests/gui/layout/test_columns.c tests/gui/layout/test_editor.c tests/gui/layout/test_hits.c tests/gui/logic/test_virtual_list.c tests/gui/render/test_cbdf_pane.c tests/gui/render/test_frame_nonblank.c
Platforms
Windows; POSIX branches/dependencies where present. Linux/macOS runtime unverified in M13.
Status
working

SDL renderer

Purpose
Render Clay commands, text, avatars and theme textures through SDL.
Files
src/gui/render/render.cpp
Old paths
vendor/gui-3/src/render/render.cpp -> src/gui/render/render.cpp
Public header
include/qgui/host.h include/qgui/render.h
Entry points
src/gui/render/render.cpp:741 :: qgui_renderer_create() src/gui/render/render.cpp:897 :: qgui_renderer_destroy() src/gui/render/render.cpp:118 :: qgui_embedded_asset_bytes()
Important static functions
src/gui/render/render.cpp:126 :: resolve_family() src/gui/render/render.cpp:136 :: resolve_family_face()
Owns
GUI drawing backend and asset lookup; font locator owns font choice.
Used by
src/gui/host/host_ops.c src/gui/host/loop.c src/gui/host/titlebar.c src/gui/layout/layout.c src/gui/layout/widgets.c
Side effects
Allocates GPU/SDL/text resources, loads assets and emits drawing commands.
Tests
tests/gui/avatar_render_test.cpp tests/gui/server_gui_test.c tests/gui/layout/test_columns.c tests/gui/layout/test_editor.c tests/gui/layout/test_hits.c tests/gui/render/test_cbdf_pane.c tests/gui/render/test_font_fallback.c tests/gui/render/test_frame_nonblank.c
Platforms
Windows; POSIX branches/dependencies where present. Linux/macOS runtime unverified in M13.
Status
working

Desktop host

Purpose
Run event/work queues, settings, dialogs, clipboard, sound, logging and window chrome.
Files
src/gui/host/loop.c src/gui/host/host_ops.c src/gui/host/jobs.c src/gui/host/audio.c src/gui/host/log.c src/gui/host/titlebar.c
Old paths
vendor/gui-3/src/host/desktop/loop.c -> src/gui/host/loop.c vendor/gui-3/src/host/desktop/host_ops.c -> src/gui/host/host_ops.c vendor/gui-3/src/host/desktop/jobs.c -> src/gui/host/jobs.c vendor/gui-3/src/host/desktop/audio.c -> src/gui/host/audio.c vendor/gui-3/src/host/desktop/log.c -> src/gui/host/log.c vendor/gui-3/src/host/desktop/titlebar.c -> src/gui/host/titlebar.c
Public header
include/qgui/desktop.h include/qgui/host.h include/qmail/update_progress.h
Entry points
src/gui/host/loop.c:146 :: qgui_host_poll() src/gui/host/host_ops.c:87 :: qgui_host_stub_ops() src/gui/host/jobs.c:17 :: qgui_jobs_set_update_monitor() src/gui/host/audio.c:91 :: qgui_audio_probe() src/gui/host/log.c:27 :: qgui_log_open() src/gui/host/titlebar.c:30 :: qgui_titlebar_colorref()
Important static functions
src/gui/host/host_ops.c:199 :: desktop_downloads_dir() src/gui/host/loop.c:20 :: files_picked_cb() src/gui/host/loop.c:53 :: console_ctrl() src/gui/host/host_ops.c:14 :: stub_clipboard_set() src/gui/host/jobs.c:64 :: worker() src/gui/host/jobs.c:72 :: worker_body() src/gui/host/audio.c:44 :: embedded_sound_id() src/gui/host/audio.c:55 :: embedded_sound_open()
Owns
Desktop OS integration and settings key/value persistence.
Used by
src/app/main.c src/gui/host/core_proc.c src/gui/host/upgrade.c
Side effects
Updates UI state, allocates/renders resources and delegates user operations to desktop services; host calls can use OS/filesystem/process APIs.
Tests
tests/gui/avatar_render_test.cpp tests/gui/server_gui_test.c tests/gui/test_headers.c tests/gui/window_zoom_test.c tests/unit/embedded_sound_test.c tests/gui/host/test_p11_host.c tests/gui/host/test_p12_host.c tests/gui/layout/test_columns.c
Platforms
Windows; POSIX branches/dependencies where present. Linux/macOS runtime unverified in M13.
Status
working

Server discovery adapter

Purpose
Map DRD server discovery into the GUI server settings view.
Files
src/gui/server_adapter.c
Old paths
No changed-path mapping for these files.
Public header
include/qmail/gui_server_adapter.h
Entry points
src/gui/server_adapter.c:244 :: qmail_gui_server_request()
Important static functions
src/gui/server_adapter.c:19 :: parse_id() src/gui/server_adapter.c:13 :: failure()
Owns
GUI discovery result adaptation.
Used by
src/app/client_inproc.c
Side effects
Updates UI state, allocates/renders resources and delegates user operations to desktop services; host calls can use OS/filesystem/process APIs.
Tests
tests/unit/server_adapter_test.c
Platforms
Windows; POSIX branches/dependencies where present. Linux/macOS runtime unverified in M13.
Status
working

Common utilities

Purpose
Provide GUI strings, arena allocation and time helpers.
Files
src/gui/common/arena.c src/gui/common/str.c src/gui/common/time.c
Old paths
vendor/gui-3/src/common/arena.c -> src/gui/common/arena.c vendor/gui-3/src/common/str.c -> src/gui/common/str.c vendor/gui-3/src/common/time.c -> src/gui/common/time.c
Public header
include/qgui/types.h
Entry points
src/gui/common/arena.c:11 :: qgui_arena_create() src/gui/common/str.c:5 :: qgui_str_set() src/gui/common/time.c:11 :: qgui_sleep_ms()
Important static functions
None identified by lexical inspection; C++ methods and script helpers are outside the C static index.
Owns
GUI common utility implementations.
Used by
src/app/client_inproc.c src/app/main.c src/gui/server_adapter.c src/gui/client/client_rest.c src/gui/client/decode.c src/gui/client/decode_contacts.c src/gui/client/decode_drd.c src/gui/client/decode_setup.c
Side effects
Allocates arenas, writes string buffers and can sleep the calling thread.
Tests
tests/gui/server_gui_test.c tests/legacy/test_rest_live.c tests/gui/client/test_decode.c tests/gui/client/test_download.c tests/gui/host/test_p12_host.c tests/gui/layout/test_columns.c tests/gui/layout/test_editor.c tests/gui/logic/test_load.c
Platforms
Windows; POSIX branches/dependencies where present. Linux/macOS runtime unverified in M13.
Status
working

Legacy REST adapters

Purpose
Retain compatibility transport/process adapters for the frozen REST surface.
Files
src/gui/client/rest.c src/gui/client/client_rest.c src/gui/host/core_proc.c src/gui/host/sse.c
Old paths
vendor/gui-3/src/client/rest.c -> src/gui/client/rest.c vendor/gui-3/src/client/client_rest.c -> src/gui/client/client_rest.c vendor/gui-3/src/host/desktop/core_proc.c -> src/gui/host/core_proc.c vendor/gui-3/src/host/desktop/sse.c -> src/gui/host/sse.c
Public header
include/qgui/client.h include/qgui/desktop.h include/qgui/host.h
Entry points
src/gui/client/rest.c:613 :: qgui_transport_rest_last_status() src/gui/client/client_rest.c:1482 :: qgui_client_rest_last_error() src/gui/host/core_proc.c:53 :: qgui_core_read_port_file() src/gui/host/sse.c:248 :: qgui_sse_start()
Important static functions
src/gui/client/rest.c:392 :: rest_download_winhttp() src/gui/client/rest.c:551 :: rest_download() src/gui/client/client_rest.c:350 :: rest_save_draft_text() src/gui/client/client_rest.c:386 :: rest_update_status() src/gui/host/core_proc.c:28 :: read_port_file() src/gui/host/sse.c:200 :: sse_thread() src/gui/host/core_proc.c:61 :: make_token() src/gui/host/sse.c:59 :: post()
Owns
Legacy adapter implementation only.
Used by
src/app/main.c src/gui/client/load.c src/gui/host/loop.c src/gui/host/upgrade.c
Side effects
Updates UI state, allocates/renders resources and delegates user operations to desktop services; host calls can use OS/filesystem/process APIs.
Tests
tests/legacy/test_rest_live.c tests/gui/client/test_download.c tests/gui/client/test_ops.c tests/gui/host/test_p11_host.c
Platforms
Windows; POSIX branches/dependencies where present. Linux/macOS runtime unverified in M13.
Status
obsolete; Not the shipping in-process path; REST routes are frozen by M7.5. Presence in the source tree is not a supported core.exe deployment.