I lived in China, in Shanghai, near the French Concession, speak Mandarin, read 汉字，(not fluently, but HSK5-6), and have been to pretty much every province in China. About as privileged as you can be as an ex-pat, and I can still say, IMHO, it's pretty totalitarian.

Totalitarian: "relating to a system of government that is centralized and dictatorial and requires complete subservience to the state."

Is China centralized? Yes, it has a top down system, top-down industrial policy, top-down internet policy, state owned enterprises (30% of economy), state-owned media, etc.

Is China dictatorial? You can talk all you want about the Politburo Standing Committee sharing power, but Xi Jinping essentially holds total power (now for life with no term expiration), and even if Li Keqiang took power, we all know it was would be like Putin and Medvedev, with Xi still controlling, otherwise there would have been no reason for removing term limits for Xi. Xi controls the PLA loyalty, and he could arrest Li Keqiang or people from his faction if he wanted.

"you can live your life quite normally and happily."

As long as you don't stick out, or criticize the government. Ask the Hong Kongnese. Or if you prefer, ask Feng Ti Mo, who was invited for a cup of Tea with the gestapo because she sang the Chinese National Anthem in a way that displeased the government, and is now forced to carry Communist Youth League content on her streaming channels. Or ask Jack Ma, who offered a milquetoast criticism of out-of-date financial regulatory framework in China and found himself with a Tea date with the gestapo. (The analogy here would be Colin Kalpernick being held by the CIA, and then forced to make pro-Trump speeches at football openings, or Elon Musk criticizing the SEC, and being told the SpaceX IPO is cancelled)

In other words, sit down, shut up, keep your head down, and you'll be ok.

Oh, and woe unto you if you want to access internet outside of China, and waste time everyday trying to find which VPN server you can connect to that isn't blocked. The sum total knowledge of mankind is now available to most people on the planet, but foolishly blocked in the Mainland.

"In fact ethnic minorities generally get preferential treatment - e.g. looser restrictions, affirmative action in various places such as state examinations". Yes, and I hear and see Han complaining all the time about Uighurs, Tibetans, and Miao, etc getting preferential treatment on the Gaokao, which is very much like whites and asians in the US complaining about affirmative action.

But does that make up for the abuse? Does the US government setting up Affirmative Action programs make up for a terrible criminal justice system biased against African Americans, or police brutality against African Americans? So the Chinese government has affirmative action for ethnic minorities, that makes any other brutal suppression they do in Xinjiang, Tibet, Hong Kong, or Inner Mongolia A-OK?

Is repression over anyone criticizing the central government publicly (and being loud enough to be noticed) made up for by marvelous infrastructure projects? Is this the price of high speed rail? Is it not possible to have freedom to compare Xi Jinping with Winnie the Pooh, and also have High Speed Rail and Shiny new airports?

Look, I don't hate China, otherwise I wouldn't have traveled all over it, learned Mandarin, and lived there. But I criticize US government policy HARSHLY, especially foreign policy, and I believe people have a right to criticize their government, and that China would be a much better agent for positive change in the world if it could shed the legacy of Mao, and move on to become a more open society, even going back to Deng-era policies would be better than the neo-fascist/nationalism that Xi is promoting these days.

The last 4 years saw rising nationalism in the US, and it has also been rising in Europe and in China. This is not good. We're trying to tame out nationalist Trump-wing here, and IMHO, Xi's pursuit of stroking nationalist sentiment is creating additional danger.

It all needs to stop.