Skip to content

macOS native compatibility + cross-platform CI smoke checks - #2

Merged
comfuture merged 15 commits into
masterfrom
feat/macos-compat
Feb 10, 2026
Merged

macOS native compatibility + cross-platform CI smoke checks#2
comfuture merged 15 commits into
masterfrom
feat/macos-compat

Conversation

@comfuture

@comfuture comfuture commented Feb 10, 2026

Copy link
Copy Markdown
Owner

Why

This branch makes local macOS native build/run viable for the legacy server and adds CI coverage to verify build/smoke behavior across major GitHub-hosted runner types.

Changes

  • macOS compatibility fixes in legacy C build/runtime path
    • add missing function declarations used by clang
    • adjust qsort comparator signature to standard const void * form
    • include missing <ctype.h> in src/command8.c
    • rename isnumber to is_number_str to avoid libc symbol conflict on macOS
    • add Darwin-specific Makefile warning policy relaxation for legacy patterns
  • startup stability fix
    • guard load_family() against missing player/family/family_list to prevent early segfault
  • documentation
    • extend README.md with macOS compatibility notes and platform-specific compile/run commands
  • CI workflow
    • add .github/workflows/ci.yml
    • run on push for all branches
    • matrix runners: ubuntu-latest, ubuntu-22.04-arm, windows-latest, macos-latest
    • per runner: build + server smoke test (tests/smoke/session_smoke.py)
  • CI follow-up hardening
    • macOS checkout switched to manual sparse-checkout to avoid illegal byte sequence failures at checkout time
    • ARM runner smoke text-hint assertion made configurable; ubuntu-22.04-arm runs with hint check disabled while preserving boot/session validation
    • remove Linux cp949 forced input-charset flag that caused gcc conversion failure on ubuntu runners
    • set Windows smoke MUHAN_HOME to MSYS path and print server log on session smoke failure
    • randomize smoke port in all runners to reduce false failures from port collisions

New Commits Since PR Opened

  • cb3e755 ci: avoid mac checkout byte-sequence failures and relax arm hint check
  • 59a3162 ci: fix linux charset build break and windows smoke path
  • ac2b4b5 ci: randomize smoke port and print logs on scenario failure

Validation

  • Verified on macOS locally:
    • native build success (make -C src CC=cc)
    • server boot smoke success (process alive + session smoke script pass)
  • Branch pushed to origin/feat/macos-compat.

@gemini-code-assist

Copy link
Copy Markdown

Summary of Changes

Hello @comfuture, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly enhances the project's portability and stability by enabling native compilation and execution on macOS for the legacy server, while also establishing a robust cross-platform CI pipeline. The changes address long-standing compatibility issues with modern compilers and operating systems, ensuring a more reliable development and testing environment. Additionally, critical startup stability has been improved, and comprehensive documentation has been added to guide users through platform-specific setup and execution.

Highlights

  • macOS Compatibility: Implemented several fixes to ensure the legacy C build and runtime path are compatible with macOS, including adding missing function declarations, adjusting qsort comparator signatures, including ctype.h, renaming 'isnumber' to avoid conflicts, and relaxing Makefile warning policies for Darwin.
  • Startup Stability: Added a guard to the load_family() function to prevent early segmentation faults caused by missing player/family/family_list data during server startup.
  • Documentation: Extended the README.md file to include detailed notes on macOS compatibility and platform-specific compile and run commands for both macOS and Linux environments.
  • Cross-Platform CI Workflow: Introduced a new GitHub Actions CI workflow (.github/workflows/ci.yml) to perform build and server smoke tests across various GitHub-hosted runner types, including ubuntu-latest, ubuntu-22.04-arm, windows-latest, and macos-latest.
Changelog
  • README.md
    • Added a new section detailing macOS compatibility patches.
    • Included platform-specific compile and run commands for macOS and Linux.
  • docker/legacy-runtime.Dockerfile
    • Created a new Dockerfile for the legacy runtime, installing Python and ca-certificates for smoke/debug sessions.
  • docs/revive/baseline.md
    • Added a new document outlining the Muhan Revival baseline, including filesystem status, resource normalization outputs, and known compile blockers.
  • resources_utf8/bin/COPYRIGHT
    • Added the COPYRIGHT file in UTF-8 encoding.
  • resources_utf8/bin/INSTALL
    • Added the INSTALL file in UTF-8 encoding.
  • resources_utf8/bin/MANIFEST
    • Added the MANIFEST file in UTF-8 encoding.
  • resources_utf8/bin/README
    • Added the README file in UTF-8 encoding.
  • resources_utf8/bin/frp.doc
    • Added the frp.doc file in UTF-8 encoding.
  • resources_utf8/docs/board_make
    • Added the board_make documentation file in UTF-8 encoding.
  • resources_utf8/docs/cmd_ital
    • Added the cmd_ital documentation file in UTF-8 encoding.
  • resources_utf8/docs/cmd_list
    • Added the cmd_list documentation file in UTF-8 encoding.
  • resources_utf8/docs/cmd_tdel
    • Added the cmd_tdel documentation file in UTF-8 encoding.
  • resources_utf8/docs/crt_expg
    • Added the crt_expg documentation file in UTF-8 encoding.
  • resources_utf8/docs/crt_flag
    • Added the crt_flag documentation file in UTF-8 encoding.
  • resources_utf8/docs/crt_make
    • Added the crt_make documentation file in UTF-8 encoding.
  • resources_utf8/docs/crt_talk
    • Added the crt_talk documentation file in UTF-8 encoding.
  • resources_utf8/docs/dm.doc
    • Added the dm.doc documentation file in UTF-8 encoding.
  • resources_utf8/docs/dm_cmnd
    • Added the dm_cmnd documentation file in UTF-8 encoding.
  • resources_utf8/docs/dm_intro
    • Added the dm_intro documentation file in UTF-8 encoding.
  • resources_utf8/docs/obj_flag
    • Added the obj_flag documentation file in UTF-8 encoding.
  • resources_utf8/docs/obj_make
    • Added the obj_make documentation file in UTF-8 encoding.
  • resources_utf8/docs/rom_comb
    • Added the rom_comb documentation file in UTF-8 encoding.
  • resources_utf8/docs/rom_flag
    • Added the rom_flag documentation file in UTF-8 encoding.
  • resources_utf8/docs/rom_make
    • Added the rom_make documentation file in UTF-8 encoding.
  • resources_utf8/docs/rom_stor
    • Added the rom_stor documentation file in UTF-8 encoding.
  • resources_utf8/docs/rom_xflg
    • Added the rom_xflg documentation file in UTF-8 encoding.
  • resources_utf8/help/Titles
    • Added the Titles help file in UTF-8 encoding.
  • resources_utf8/help/char
    • Added the char help file in UTF-8 encoding.
  • resources_utf8/help/dm_helpf
    • Added the dm_helpf help file in UTF-8 encoding.
  • resources_utf8/help/dm_helpfile
    • Added the dm_helpfile help file in UTF-8 encoding.
  • resources_utf8/help/dmhelp
    • Added the dmhelp help file in UTF-8 encoding.
  • resources_utf8/help/exp
    • Added the exp help file in UTF-8 encoding.
  • resources_utf8/help/help.1
    • Added the help.1 file in UTF-8 encoding.
  • resources_utf8/help/help.10
    • Added the help.10 file in UTF-8 encoding.
  • resources_utf8/help/help.100
    • Added the help.100 file in UTF-8 encoding.
  • resources_utf8/help/help.101
    • Added the help.101 file in UTF-8 encoding.
  • resources_utf8/help/help.102
    • Added the help.102 file in UTF-8 encoding.
  • resources_utf8/help/help.103
    • Added the help.103 file in UTF-8 encoding.
  • resources_utf8/help/help.104
    • Added the help.104 file in UTF-8 encoding.
  • resources_utf8/help/help.105
    • Added the help.105 file in UTF-8 encoding.
  • resources_utf8/help/help.106
    • Added the help.106 file in UTF-8 encoding.
  • resources_utf8/help/help.107
    • Added the help.107 file in UTF-8 encoding.
  • resources_utf8/help/help.108
    • Added the help.108 file in UTF-8 encoding.
  • resources_utf8/help/help.109
    • Added the help.109 file in UTF-8 encoding.
  • resources_utf8/help/help.11
    • Added the help.11 file in UTF-8 encoding.
  • resources_utf8/help/help.110
    • Added the help.110 file in UTF-8 encoding.
  • resources_utf8/help/help.111
    • Added the help.111 file in UTF-8 encoding.
  • resources_utf8/help/help.112
    • Added the help.112 file in UTF-8 encoding.
  • resources_utf8/help/help.113
    • Added the help.113 file in UTF-8 encoding.
  • resources_utf8/help/help.114
    • Added the help.114 file in UTF-8 encoding.
  • resources_utf8/help/help.115
    • Added the help.115 file in UTF-8 encoding.
  • resources_utf8/help/help.116
    • Added the help.116 file in UTF-8 encoding.
  • resources_utf8/help/help.117
    • Added the help.117 file in UTF-8 encoding.
  • resources_utf8/help/help.118
    • Added the help.118 file in UTF-8 encoding.
  • resources_utf8/help/help.119
    • Added the help.119 file in UTF-8 encoding.
  • resources_utf8/help/help.12
    • Added the help.12 file in UTF-8 encoding.
  • resources_utf8/help/help.120
    • Added the help.120 file in UTF-8 encoding.
  • resources_utf8/help/help.121
    • Added the help.121 file in UTF-8 encoding.
  • resources_utf8/help/help.122
    • Added the help.122 file in UTF-8 encoding.
  • resources_utf8/help/help.123
    • Added the help.123 file in UTF-8 encoding.
  • resources_utf8/help/help.124
    • Added the help.124 file in UTF-8 encoding.
  • resources_utf8/help/help.125
    • Added the help.125 file in UTF-8 encoding.
  • resources_utf8/help/help.126
    • Added the help.126 file in UTF-8 encoding.
  • resources_utf8/help/help.127
    • Added the help.127 file in UTF-8 encoding.
  • resources_utf8/help/help.128
    • Added the help.128 file in UTF-8 encoding.
  • resources_utf8/help/help.130
    • Added the help.130 file in UTF-8 encoding.
  • resources_utf8/help/help.131
    • Added the help.131 file in UTF-8 encoding.
  • resources_utf8/help/help.132
    • Added the help.132 file in UTF-8 encoding.
  • resources_utf8/help/help.133
    • Added the help.133 file in UTF-8 encoding.
  • resources_utf8/help/help.134
    • Added the help.134 file in UTF-8 encoding.
  • resources_utf8/help/help.135
    • Added the help.135 file in UTF-8 encoding.
  • resources_utf8/help/help.136
    • Added the help.136 file in UTF-8 encoding.
  • resources_utf8/help/help.137
    • Added the help.137 file in UTF-8 encoding.
  • resources_utf8/help/help.138
    • Added the help.138 file in UTF-8 encoding.
  • resources_utf8/help/help.139
    • Added the help.139 file in UTF-8 encoding.
  • resources_utf8/help/help.14
    • Added the help.14 file in UTF-8 encoding.
  • resources_utf8/help/help.140
    • Added the help.140 file in UTF-8 encoding.
  • resources_utf8/help/help.141
    • Added the help.141 file in UTF-8 encoding.
  • resources_utf8/help/help.142
    • Added the help.142 file in UTF-8 encoding.
  • resources_utf8/help/help.143
    • Added the help.143 file in UTF-8 encoding.
  • resources_utf8/help/help.144
    • Added the help.144 file in UTF-8 encoding.
  • resources_utf8/help/help.145
    • Added the help.145 file in UTF-8 encoding.
  • resources_utf8/help/help.146
    • Added the help.146 file in UTF-8 encoding.
  • resources_utf8/help/help.148
    • Added the help.148 file in UTF-8 encoding.
  • resources_utf8/help/help.149
    • Added the help.149 file in UTF-8 encoding.
  • resources_utf8/help/help.15
    • Added the help.15 file in UTF-8 encoding.
  • resources_utf8/help/help.150
    • Added the help.150 file in UTF-8 encoding.
  • resources_utf8/help/help.151
    • Added the help.151 file in UTF-8 encoding.
  • resources_utf8/help/help.16
    • Added the help.16 file in UTF-8 encoding.
  • resources_utf8/help/help.17
    • Added the help.17 file in UTF-8 encoding.
  • resources_utf8/help/help.18
    • Added the help.18 file in UTF-8 encoding.
  • resources_utf8/help/help.19
    • Added the help.19 file in UTF-8 encoding.
  • resources_utf8/help/help.2
    • Added the help.2 file in UTF-8 encoding.
  • resources_utf8/help/help.20
    • Added the help.20 file in UTF-8 encoding.
  • resources_utf8/help/help.21
    • Added the help.21 file in UTF-8 encoding.
  • resources_utf8/help/help.22
    • Added the help.22 file in UTF-8 encoding.
  • resources_utf8/help/help.23
    • Added the help.23 file in UTF-8 encoding.
  • resources_utf8/help/help.24
    • Added the help.24 file in UTF-8 encoding.
  • resources_utf8/help/help.25
    • Added the help.25 file in UTF-8 encoding.
  • resources_utf8/help/help.26
    • Added the help.26 file in UTF-8 encoding.
  • resources_utf8/help/help.27
    • Added the help.27 file in UTF-8 encoding.
  • resources_utf8/help/help.28
    • Added the help.28 file in UTF-8 encoding.
  • resources_utf8/help/help.29
    • Added the help.29 file in UTF-8 encoding.
  • resources_utf8/help/help.3
    • Added the help.3 file in UTF-8 encoding.
  • resources_utf8/help/help.30
    • Added the help.30 file in UTF-8 encoding.
  • resources_utf8/help/help.32
    • Added the help.32 file in UTF-8 encoding.
  • resources_utf8/help/help.33
    • Added the help.33 file in UTF-8 encoding.
  • resources_utf8/help/help.34
    • Added the help.34 file in UTF-8 encoding.
  • resources_utf8/help/help.35
    • Added the help.35 file in UTF-8 encoding.
  • resources_utf8/help/help.36
    • Added the help.36 file in UTF-8 encoding.
  • resources_utf8/help/help.37
    • Added the help.37 file in UTF-8 encoding.
  • resources_utf8/help/help.38
    • Added the help.38 file in UTF-8 encoding.
  • resources_utf8/help/help.39
    • Added the help.39 file in UTF-8 encoding.
  • resources_utf8/help/help.4
    • Added the help.4 file in UTF-8 encoding.
  • resources_utf8/help/help.40
    • Added the help.40 file in UTF-8 encoding.
  • resources_utf8/help/help.41
    • Added the help.41 file in UTF-8 encoding.
  • resources_utf8/help/help.42
    • Added the help.42 file in UTF-8 encoding.
  • resources_utf8/help/help.43
    • Added the help.43 file in UTF-8 encoding.
  • resources_utf8/help/help.44
    • Added the help.44 file in UTF-8 encoding.
  • resources_utf8/help/help.45
    • Added the help.45 file in UTF-8 encoding.
  • resources_utf8/help/help.46
    • Added the help.46 file in UTF-8 encoding.
  • resources_utf8/help/help.47
    • Added the help.47 file in UTF-8 encoding.
  • resources_utf8/help/help.48
    • Added the help.48 file in UTF-8 encoding.
  • resources_utf8/help/help.49
    • Added the help.49 file in UTF-8 encoding.
  • resources_utf8/help/help.5
    • Added the help.5 file in UTF-8 encoding.
  • resources_utf8/help/help.50
    • Added the help.50 file in UTF-8 encoding.
  • resources_utf8/help/help.51
    • Added the help.51 file in UTF-8 encoding.
  • resources_utf8/help/help.52
    • Added the help.52 file in UTF-8 encoding.
  • resources_utf8/help/help.53
    • Added the help.53 file in UTF-8 encoding.
  • resources_utf8/help/help.54
    • Added the help.54 file in UTF-8 encoding.
  • resources_utf8/help/help.55
    • Added the help.55 file in UTF-8 encoding.
  • resources_utf8/help/help.56
    • Added the help.56 file in UTF-8 encoding.
  • resources_utf8/help/help.57
    • Added the help.57 file in UTF-8 encoding.
  • resources_utf8/help/help.58
    • Added the help.58 file in UTF-8 encoding.
  • resources_utf8/help/help.59
    • Added the help.59 file in UTF-8 encoding.
  • resources_utf8/help/help.6
    • Added the help.6 file in UTF-8 encoding.
  • resources_utf8/help/help.60
    • Added the help.60 file in UTF-8 encoding.
  • resources_utf8/help/help.61
    • Added the help.61 file in UTF-8 encoding.
  • resources_utf8/help/help.62
    • Added the help.62 file in UTF-8 encoding.
  • resources_utf8/help/help.63
    • Added the help.63 file in UTF-8 encoding.
  • resources_utf8/help/help.64
    • Added the help.64 file in UTF-8 encoding.
  • resources_utf8/help/help.65
    • Added the help.65 file in UTF-8 encoding.
  • resources_utf8/help/help.66
    • Added the help.66 file in UTF-8 encoding.
  • resources_utf8/help/help.67
    • Added the help.67 file in UTF-8 encoding.
  • resources_utf8/help/help.68
    • Added the help.68 file in UTF-8 encoding.
  • resources_utf8/help/help.69
    • Added the help.69 file in UTF-8 encoding.
  • resources_utf8/help/help.7
    • Added the help.7 file in UTF-8 encoding.
  • resources_utf8/help/help.70
    • Added the help.70 file in UTF-8 encoding.
  • resources_utf8/help/help.71
    • Added the help.71 file in UTF-8 encoding.
  • resources_utf8/help/help.72
    • Added the help.72 file in UTF-8 encoding.
  • resources_utf8/help/help.73
    • Added the help.73 file in UTF-8 encoding.
  • resources_utf8/help/help.74
    • Added the help.74 file in UTF-8 encoding.
  • resources_utf8/help/help.75
    • Added the help.75 file in UTF-8 encoding.
  • resources_utf8/help/help.76
    • Added the help.76 file in UTF-8 encoding.
  • resources_utf8/help/help.77
    • Added the help.77 file in UTF-8 encoding.
  • resources_utf8/help/help.79
    • Added the help.79 file in UTF-8 encoding.
  • resources_utf8/help/help.8
    • Added the help.8 file in UTF-8 encoding.
  • resources_utf8/help/help.80
    • Added the help.80 file in UTF-8 encoding.
  • resources_utf8/help/help.81
    • Added the help.81 file in UTF-8 encoding.
  • resources_utf8/help/help.82
    • Added the help.82 file in UTF-8 encoding.
  • resources_utf8/help/help.83
    • Added the help.83 file in UTF-8 encoding.
  • resources_utf8/help/help.84
    • Added the help.84 file in UTF-8 encoding.
  • resources_utf8/help/help.85
    • Added the help.85 file in UTF-8 encoding.
  • resources_utf8/help/help.86
    • Added the help.86 file in UTF-8 encoding.
  • resources_utf8/help/help.87
    • Added the help.87 file in UTF-8 encoding.
  • resources_utf8/help/help.88
    • Added the help.88 file in UTF-8 encoding.
  • resources_utf8/help/help.89
    • Added the help.89 file in UTF-8 encoding.
  • resources_utf8/help/help.9
    • Added the help.9 file in UTF-8 encoding.
  • resources_utf8/help/help.90
    • Added the help.90 file in UTF-8 encoding.
  • resources_utf8/help/help.91
    • Added the help.91 file in UTF-8 encoding.
  • resources_utf8/help/help.92
    • Added the help.92 file in UTF-8 encoding.
  • resources_utf8/help/help.94
    • Added the help.94 file in UTF-8 encoding.
  • resources_utf8/help/help.95
    • Added the help.95 file in UTF-8 encoding.
  • resources_utf8/help/help.96
    • Added the help.96 file in UTF-8 encoding.
  • resources_utf8/help/help.97
    • Added the help.97 file in UTF-8 encoding.
  • resources_utf8/help/help.98
    • Added the help.98 file in UTF-8 encoding.
  • resources_utf8/help/help.99
    • Added the help.99 file in UTF-8 encoding.
  • resources_utf8/help/help109.bak
    • Added the help109.bak file in UTF-8 encoding.
  • resources_utf8/help/helpfile
    • Added the helpfile in UTF-8 encoding.
  • resources_utf8/help/helpfile.old
    • Added the helpfile.old in UTF-8 encoding.
  • resources_utf8/help/helpfiles
    • Added the helpfiles in UTF-8 encoding.
  • resources_utf8/help/knowaura
    • Added the knowaura help file in UTF-8 encoding.
  • resources_utf8/help/mflags
    • Added the mflags help file in UTF-8 encoding.
  • resources_utf8/help/oflags
    • Added the oflags help file in UTF-8 encoding.
  • resources_utf8/help/oset
    • Added the oset help file in UTF-8 encoding.
  • resources_utf8/help/otypes
    • Added the otypes help file in UTF-8 encoding.
  • resources_utf8/help/pers
    • Added the pers help file in UTF-8 encoding.
  • resources_utf8/help/pflags
    • Added the pflags help file in UTF-8 encoding.
  • resources_utf8/help/policy
    • Added the policy help file in UTF-8 encoding.
  • resources_utf8/help/pot
    • Added the pot help file in UTF-8 encoding.
  • resources_utf8/help/pset
    • Added the pset help file in UTF-8 encoding.
  • resources_utf8/help/quest
    • Added the quest help file in UTF-8 encoding.
  • resources_utf8/help/realms
    • Added the realms help file in UTF-8 encoding.
  • resources_utf8/help/rflags
    • Added the rflags help file in UTF-8 encoding.
  • resources_utf8/help/scrolls
    • Added the scrolls help file in UTF-8 encoding.
  • resources_utf8/help/sflags
    • Added the sflags help file in UTF-8 encoding.
  • resources_utf8/help/spell.0
    • Added the spell.0 help file in UTF-8 encoding.
  • resources_utf8/help/spell.1
    • Added the spell.1 help file in UTF-8 encoding.
  • resources_utf8/help/spell.10
    • Added the spell.10 help file in UTF-8 encoding.
  • resources_utf8/help/spell.11
    • Added the spell.11 help file in UTF-8 encoding.
  • resources_utf8/help/spell.12
    • Added the spell.12 help file in UTF-8 encoding.
  • resources_utf8/help/spell.13
    • Added the spell.13 help file in UTF-8 encoding.
  • resources_utf8/help/spell.14
    • Added the spell.14 help file in UTF-8 encoding.
  • resources_utf8/help/spell.15
    • Added the spell.15 help file in UTF-8 encoding.
  • resources_utf8/help/spell.16
    • Added the spell.16 help file in UTF-8 encoding.
  • resources_utf8/help/spell.17
    • Added the spell.17 help file in UTF-8 encoding.
  • resources_utf8/help/spell.18
    • Added the spell.18 help file in UTF-8 encoding.
  • resources_utf8/help/spell.19
    • Added the spell.19 help file in UTF-8 encoding.
  • resources_utf8/help/spell.2
    • Added the spell.2 help file in UTF-8 encoding.
  • resources_utf8/help/spell.21
    • Added the spell.21 help file in UTF-8 encoding.
  • resources_utf8/help/spell.22
    • Added the spell.22 help file in UTF-8 encoding.
  • resources_utf8/help/spell.23
    • Added the spell.23 help file in UTF-8 encoding.
  • resources_utf8/help/spell.24
    • Added the spell.24 help file in UTF-8 encoding.
  • resources_utf8/help/spell.25
    • Added the spell.25 help file in UTF-8 encoding.
  • resources_utf8/help/spell.26
    • Added the spell.26 help file in UTF-8 encoding.
  • resources_utf8/help/spell.27
    • Added the spell.27 help file in UTF-8 encoding.
  • resources_utf8/help/spell.28
    • Added the spell.28 help file in UTF-8 encoding.
  • resources_utf8/help/spell.29
    • Added the spell.29 help file in UTF-8 encoding.
  • resources_utf8/help/spell.3
    • Added the spell.3 help file in UTF-8 encoding.
  • resources_utf8/help/spell.30
    • Added the spell.30 help file in UTF-8 encoding.
  • resources_utf8/help/spell.31
    • Added the spell.31 help file in UTF-8 encoding.
  • resources_utf8/help/spell.32
    • Added the spell.32 help file in UTF-8 encoding.
  • resources_utf8/help/spell.33
    • Added the spell.33 help file in UTF-8 encoding.
  • resources_utf8/help/spell.34
    • Added the spell.34 help file in UTF-8 encoding.
  • resources_utf8/help/spell.35
    • Added the spell.35 help file in UTF-8 encoding.
  • resources_utf8/help/spell.36
    • Added the spell.36 help file in UTF-8 encoding.
  • resources_utf8/help/spell.37
    • Added the spell.37 help file in UTF-8 encoding.
  • resources_utf8/help/spell.38
    • Added the spell.38 help file in UTF-8 encoding.
  • resources_utf8/help/spell.39
    • Added the spell.39 help file in UTF-8 encoding.
  • resources_utf8/help/spell.4
    • Added the spell.4 help file in UTF-8 encoding.
  • resources_utf8/help/spell.40
    • Added the spell.40 help file in UTF-8 encoding.
  • resources_utf8/help/spell.41
    • Added the spell.41 help file in UTF-8 encoding.
  • resources_utf8/help/spell.42
    • Added the spell.42 help file in UTF-8 encoding.
  • resources_utf8/help/spell.43
    • Added the spell.43 help file in UTF-8 encoding.
  • resources_utf8/help/spell.44
    • Added the spell.44 help file in UTF-8 encoding.
  • resources_utf8/help/spell.45
    • Added the spell.45 help file in UTF-8 encoding.
  • resources_utf8/help/spell.46
    • Added the spell.46 help file in UTF-8 encoding.
  • resources_utf8/help/spell.48
    • Added the spell.48 help file in UTF-8 encoding.
  • resources_utf8/help/spell.49
    • Added the spell.49 help file in UTF-8 encoding.
  • resources_utf8/help/spell.5
    • Added the spell.5 help file in UTF-8 encoding.
  • resources_utf8/help/spell.50
    • Added the spell.50 help file in UTF-8 encoding.
  • resources_utf8/help/spell.51
    • Added the spell.51 help file in UTF-8 encoding.
  • resources_utf8/help/spell.52
    • Added the spell.52 help file in UTF-8 encoding.
  • resources_utf8/help/spell.53
    • Added the spell.53 help file in UTF-8 encoding.
  • resources_utf8/help/spell.55
    • Added the spell.55 help file in UTF-8 encoding.
  • resources_utf8/help/spell.6
    • Added the spell.6 help file in UTF-8 encoding.
  • resources_utf8/help/spell.7
    • Added the spell.7 help file in UTF-8 encoding.
  • resources_utf8/help/spell.8
    • Added the spell.8 help file in UTF-8 encoding.
  • resources_utf8/help/spell.9
    • Added the spell.9 help file in UTF-8 encoding.
  • resources_utf8/help/spellfil
    • Added the spellfil help file in UTF-8 encoding.
  • resources_utf8/help/spellfile
    • Added the spellfile help file in UTF-8 encoding.
  • resources_utf8/help/star
    • Added the star help file in UTF-8 encoding.
  • resources_utf8/help/wear
    • Added the wear help file in UTF-8 encoding.
  • resources_utf8/help/welcome
    • Added the welcome help file in UTF-8 encoding.
  • resources_utf8/help/welcome.sav
    • Added the welcome.sav help file in UTF-8 encoding.
  • resources_utf8/help/welcome.save
    • Added the welcome.save help file in UTF-8 encoding.
  • resources_utf8/help/xflags
    • Added the xflags help file in UTF-8 encoding.
  • resources_utf8/help/xtraps
    • Added the xtraps help file in UTF-8 encoding.
  • resources_utf8/log/DM_news
    • Added the DM_news log file in UTF-8 encoding.
  • resources_utf8/log/README
    • Added the README log file in UTF-8 encoding.
  • resources_utf8/log/SUICIDE
    • Added the SUICIDE log file in UTF-8 encoding.
  • resources_utf8/log/log
    • Added the log file in UTF-8 encoding.
  • resources_utf8/log/log_dm
    • Added the log_dm file in UTF-8 encoding.
  • resources_utf8/log/log_dmcmd
    • Added the log_dmcmd file in UTF-8 encoding.
  • resources_utf8/log/log_fl
    • Added the log_fl file in UTF-8 encoding.
  • resources_utf8/log/news
    • Added the news log file in UTF-8 encoding.
  • resources_utf8/log/teleport
    • Added the teleport log file in UTF-8 encoding.
  • resources_utf8/objmon/Celduin_sign
    • Added the Celduin_sign object/monster description file in UTF-8 encoding.
  • resources_utf8/objmon/Christmas_Tree
    • Added the Christmas_Tree object/monster description file in UTF-8 encoding.
  • resources_utf8/objmon/DM_handbook
    • Added the DM_handbook object/monster description file in UTF-8 encoding.
  • resources_utf8/objmon/How_to_get_a_map
    • Added the How_to_get_a_map object/monster description file in UTF-8 encoding.
  • resources_utf8/objmon/The_book_of_custom_equipment
    • Added The_book_of_custom_equipment object/monster description file in UTF-8 encoding.
  • resources_utf8/objmon/arena_map
    • Added the arena_map object/monster description file in UTF-8 encoding.
  • resources_utf8/objmon/black_board
    • Added the black_board object/monster description file in UTF-8 encoding.
  • resources_utf8/objmon/bloody_sign
    • Added the bloody_sign object/monster description file in UTF-8 encoding.
  • resources_utf8/objmon/board_note
    • Added the board_note object/monster description file in UTF-8 encoding.
  • resources_utf8/objmon/book_of_knowledge
    • Added the book_of_knowledge object/monster description file in UTF-8 encoding.
  • resources_utf8/objmon/book_of_knowledge.save
    • Added the book_of_knowledge.save object/monster description file in UTF-8 encoding.
  • resources_utf8/objmon/book_of_maze_muddle
    • Added the book_of_maze_muddle object/monster description file in UTF-8 encoding.
  • resources_utf8/objmon/bulletin_board
    • Added the bulletin_board object/monster description file in UTF-8 encoding.
  • resources_utf8/objmon/celduin_sign__4eb75435
    • Added the celduin_sign__4eb75435 object/monster description file in UTF-8 encoding.
  • resources_utf8/objmon/computer_printout
    • Added the computer_printout object/monster description file in UTF-8 encoding.
  • resources_utf8/objmon/confidential_papers
    • Added the confidential_papers object/monster description file in UTF-8 encoding.
  • resources_utf8/objmon/construction_note
    • Added the construction_note object/monster description file in UTF-8 encoding.
  • resources_utf8/objmon/construction_sign
    • Added the construction_sign object/monster description file in UTF-8 encoding.
  • resources_utf8/objmon/ddesc/마왕_99
    • Added the '마왕_99' monster death description file in UTF-8 encoding.
  • resources_utf8/objmon/ddesc/변신귀_40
    • Added the '변신귀_40' monster death description file in UTF-8 encoding.
  • resources_utf8/objmon/ddesc/부활한_악의_제왕99
    • Added the '부활한_악의_제왕99' monster death description file in UTF-8 encoding.
  • resources_utf8/objmon/ddesc/부활한_악의_제왕_99
    • Added the '부활한_악의_제왕_99' monster death description file in UTF-8 encoding.
  • resources_utf8/objmon/ddesc/사당귀신_60
    • Added the '사당귀신_60' monster death description file in UTF-8 encoding.
  • resources_utf8/objmon/ddesc/식인귀_48
    • Added the '식인귀_48' monster death description file in UTF-8 encoding.
  • resources_utf8/objmon/ddesc/악의_제왕_98
    • Added the '악의_제왕_98' monster death description file in UTF-8 encoding.
  • resources_utf8/objmon/ddesc/여포_120
    • Added the '여포_120' monster death description file in UTF-8 encoding.
  • resources_utf8/objmon/ddesc/우물요괴_48
    • Added the '우물요괴_48' monster death description file in UTF-8 encoding.
  • resources_utf8/objmon/ddesc/제우스_127
    • Added the '제우스_127' monster death description file in UTF-8 encoding.
Ignored Files
  • Ignored by pattern: .github/workflows/** (1)
    • .github/workflows/ci.yml
Activity
  • The author validated the changes locally on macOS, confirming successful native build and server boot smoke tests.
  • The branch was pushed to origin/feat/macos-compat, indicating readiness for review and integration.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces significant improvements for macOS compatibility and adds cross-platform CI checks, which is a great step forward for the project's health. The changes also include a large number of restored resource and documentation files. My review focuses on these newly added files. I've identified some areas for improvement, mainly related to documentation accuracy and Docker image optimization. I've left specific comments with suggestions to address these points.

Comment on lines +52 to +53
SFEARS 51 /* Fear */
STRANO 52 /* Cause blindness */

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

The comments for STRANO and SBLIND seem to be swapped or incorrect. A spell named SBLIND is expected to cause blindness, but its comment says "Transport object". Conversely, STRANO's comment is "Cause blindness". This is very confusing and might indicate a bug. Please verify the functionality and correct the spell names or comments for clarity.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

검토 감사합니다. 이 항목은 리소스 원문/게임 데이터 정의 또는 과거 문서 원문 정합성 범주로, 이번 PR(빌드/실행 호환 및 CI 안정화) 범위에서 제외합니다. 별도 데이터 정제 PR에서 다루겠습니다.

Comment on lines +25 to +31
XPBARD 24 Cleric
XPCLER 25 Fighter
XPFGHT 26 Mage
XPMAGE 27 Paladin
XPPALA 28 Ranger
XPRNGR 29 Thief
XPTHEF 30 Bard

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

The comments for the class-selective exit flags appear to be shifted. For example, XPBARD is commented as Cleric when it should likely be Bard. Please review and correct these comments to match the corresponding flags.

XPBARD		24	 Bard
XPCLER		25	 Cleric
XPFGHT		26	 Fighter
XPMAGE		27	 Mage
XPPALA		28	 Paladin
XPRNGR		29	 Ranger
XPTHEF		30	 Thief

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

검토 감사합니다. 이 항목은 리소스 원문/게임 데이터 정의 또는 과거 문서 원문 정합성 범주로, 이번 PR(빌드/실행 호환 및 CI 안정화) 범위에서 제외합니다. 별도 데이터 정제 PR에서 다루겠습니다.

Comment on lines +1 to +9
FROM --platform=linux/amd64 rust:1.77

WORKDIR /work
ENV MUHAN_HOME=/work

# Keep runtime tooling explicit for smoke/debug sessions.
RUN apt-get update \
&& apt-get install -y --no-install-recommends python3 ca-certificates \
&& rm -rf /var/lib/apt/lists/*

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The base image rust:1.77 is quite large for a runtime environment, which can increase image size and CI execution time. Consider using a smaller base image like debian:bullseye-slim and installing only the necessary tools (Rust, Python 3, etc.). This will result in a more optimized and faster runtime image.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

검토 감사합니다. 이 항목은 리소스 원문/게임 데이터 정의 또는 과거 문서 원문 정합성 범주로, 이번 PR(빌드/실행 호환 및 CI 안정화) 범위에서 제외합니다. 별도 데이터 정제 PR에서 다루겠습니다.

Comment on lines +22 to +23
The files are also assumed to in the current work directory,
or a relative path to the current working directory.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

These two lines are a duplicate of lines 20-21. Please remove them to improve clarity.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

검토 감사합니다. 이 항목은 리소스 원문/게임 데이터 정의 또는 과거 문서 원문 정합성 범주로, 이번 PR(빌드/실행 호환 및 CI 안정화) 범위에서 제외합니다. 별도 데이터 정제 PR에서 다루겠습니다.

The global cast command allows a dm to cast a spell on all the
currently logged in players (excluding players under dm invis.)
Gcastallows a dm to cast: protect, bless, resist-magic, resist-fire,
detect-magic, detect-invisibbilty, fly, levitatate,know alignment,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

There are a couple of typos on this line:

  • detect-invisibbilty should be detect-invisibility.
  • levitatate should be levitate.
     detect-magic, detect-invisibility, fly, levitate, know alignment,

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

검토 감사합니다. 이 항목은 리소스 원문/게임 데이터 정의 또는 과거 문서 원문 정합성 범주로, 이번 PR(빌드/실행 호환 및 CI 안정화) 범위에서 제외합니다. 별도 데이터 정제 PR에서 다루겠습니다.

�� / ���� / �� / ��ȯ
+-------------------------------------------------------------------+
���:
�� / �̾߱� / �׷츻 / �аŸ��� / ���� / ��� / ���ź�

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The backslash \ characters appear to be typos and should probably be forward slashes / to separate the commands, for consistency with the rest of the file.

  / ̾߱ / ׷츻 / аŸ /  /  / ź

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

검토 감사합니다. 이 항목은 리소스 원문/게임 데이터 정의 또는 과거 문서 원문 정합성 범주로, 이번 PR(빌드/실행 호환 및 CI 안정화) 범위에서 제외합니다. 별도 데이터 정제 PR에서 다루겠습니다.

���ɾ� ����:
[===================]
���: �̵�:
��\�̾߱�\�׷츻\����\���\���ź� �� / ���� / ���й� / ��

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The backslash \ characters appear to be typos and should probably be forward slashes / to separate the commands, for consistency with the rest of the file.

 /̾߱/׷츻///ź    /  / й / 

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

검토 감사합니다. 이 항목은 리소스 원문/게임 데이터 정의 또는 과거 문서 원문 정합성 범주로, 이번 PR(빌드/실행 호환 및 CI 안정화) 범위에서 제외합니다. 별도 데이터 정제 PR에서 다루겠습니다.

SLOCAT 47 /* Locate player */
SDREXP 48 /* Drain energy (exp) */
SRMDIS 49 /* Cure disease */
SRMBLD 50 /* Remove blindess */

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

There is a typo in blindess. It should be blindness.

SRMBLD          50      /* Remove blindness */

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

검토 감사합니다. 이 항목은 리소스 원문/게임 데이터 정의 또는 과거 문서 원문 정합성 범주로, 이번 PR(빌드/실행 호환 및 CI 안정화) 범위에서 제외합니다. 별도 데이터 정제 PR에서 다루겠습니다.

@chatgpt-codex-connector

Copy link
Copy Markdown

💡 Codex Review

raw = run_git("ls-tree", "-r", "-z", "HEAD")
entries = [e for e in raw.split(b"\x00") if e]

P1 Badge Exclude generated trees from blob extraction input

The extractor currently walks every blob in HEAD (git ls-tree -r -z HEAD), which now includes the generated resources_utf8/ and resources_manifest/ trees added by this commit. Re-running the documented regeneration command (./tools/revive/extract-legacy-blobs.sh resources_utf8 resources_manifest) therefore re-ingests prior outputs and creates nested outputs like resources_utf8/resources_utf8/..., inflating and destabilizing path-alias.v1.tsv/resource-map.v1.json instead of reproducing the baseline artifacts. This breaks idempotency of the recovery workflow and can corrupt resolver parity inputs.

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@comfuture

Copy link
Copy Markdown
Owner Author

Addressed one actionable review item in this PR scope:\n- Fixed legacy extractor idempotency by excluding generated output roots from input traversal in generated_entries=3824 (commit ).\n\nI replied in-thread for comments that are out of scope for this PR (resource/game-data definition and legacy document content).

@comfuture

Copy link
Copy Markdown
Owner Author

Correction: actionable fix commit is 6de0183 (tools/revive/extract-legacy-blobs.sh idempotency safeguard).

# Conflicts:
#	README.md
#	src/Makefile
#	src/command4.c
#	tests/smoke/session_smoke.py
#	tools/revive/extract-legacy-blobs.sh
@comfuture
comfuture merged commit 12beb61 into master Feb 10, 2026
5 checks passed
@comfuture
comfuture deleted the feat/macos-compat branch February 10, 2026 07:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant