Affinity

Affinity is a companion gameplay mechanic in Fallout 4. Companions can develop personal connections to your character and some may ask for your help with quests of their own. Each companion has a distinct personality and values, actions or dialogue that please one companion may displease another.

Raising the affinity value grants additional dialogue into their history or the possibility of romance. Reaching maximum affinity with a companion will unlock a special perk. The affinity value is a hidden statistic, meaning its not possible to check your progress without console commands.

Scale
Typically, all companions begin at an affinity value of 0. If the affinity value reaches a certain positive level, they will "admire" you and often reveal new dialogue. Raising their affinity to the maximum value of 1000 will result in them "idolizing" you, at which point you are granted their companion perk.

Lowering the affinity into a negative value far enough will displease the companion, and they will issue a single warning to you, asking you to change your ways. If the affinity value drops further, they will become angry and refuse to travel with you. This decision is permanent.

For most companions, new dialogue will be triggered when the affinity value reaches 250, 500, 750 and 1000.

Reactions
There are four different reactions a companion can have towards your actions/dialogue that will affect their affinity value:

There is a romance affinity level with the humanoid companions, once you reach the highest affinity you have a choice to "flirt", then be "romantic". It requires a high charisma to succeed, but if you do succeed, that companion becomes a love interest. Sleeping in a bed with them nearby will also grant the Lover's Embrace perk.

Companion romances are not mutually exclusive; if a new companion is romanced, previously romanced partners will still confer the benefits of the Lover's Embrace. (However, some romanced partners will "dislike" flirting in their presence.)

A companion's reaction to most actions have a cooldown period, meaning it is not possible to perform the same action several times in a row to gain/lose affinity. For example, modifying several weapons in a row will only trigger one instance of approval from Paladin Danse. One (albeit time consuming) exploit around the cooldown is to save and reload after a companion's reaction. Reloading the game resets the cooldown and the action can be performed again to gain additional approval.

For a full list of what pleases or displeases a companion, see the respective companion page.

Companion perks
Those perks are acquired by reaching the maximum level of affinity with a companion. The perks obtained this way are permanently obtained, whether you keep travelling with the associated companion or not.