フランス語史
内的な歴史 > To Early Old French

In approximate order:
Spread and dissolution of palatalization:
A protected /j/ (not preceded by a vowel), stemming from an initial /j/ or from a /dj/, /ɡj/, or /ɡ(eˌi)/ when preceded by a consonant, becomes /dʒ/.
A /j/ followed by another consonant tends to palatalize that consonant; these consonants may have been brought together by intertonic loss. (E.g. medietate > /mejetate/ > /mejtʲate/ > 'moitié'. peior > /pejro/ > /piejrʲe/ > 'pire', but impeiorare > /empejrare/ > /empejrʲare/ > /empejriɛr/ > OF 'empoirier' "to worsen".)
Palatalized sounds lose their palatal quality and eject a /j/ into the end of the preceding syllable, when open; also into the beginning of the following syllable when it is stressed, open, and front (i.e. /a/ or /e/ ). Hence * cugitare > /kujetare/ > /kujdare/ > /kujdʲare/ >> /kujdiɛr/ OF 'cuidier' "to think". mansionata > /mazʲonada/ > /mazʲnada/ > /majzʲnjɛðə/ > OF 'maisniée' "household".
/tʃ/ and /dʒ/ (including those from later sources, see below) eject a following /j/ normally, but do not eject any preceding /j/.
Double /ssʲ/ < /ssj/ and from various other combinations also ejects a preceding /j/.
Single /dz/ ejects such a /j/, but not double /tts/, evidently since it is a double sound and causes the previous syllable to close; see comment above, under lenition.
Actual palatal /lʲ/ and /nʲ/ (as opposed to the merely patalized varieties of the other sounds) retain their palatal nature and don't emit preceding /j/.  Or rather, palatal /lʲ/ does not eject a preceding /j/ (or else, it is always absorbed, even when depalatalized); palatal /nʲ/ emits a preceding /j/ when depalatalized, even if the preceding syllable is closed, e.g. jungit > *yōnyet > /dʒoɲt/ > /dʒojnt/ 'joint'.
Palatal /rʲ/ ejects a preceding /j/ as normal, but the /j/ metathesizes when a /a/ precedes, hence operariu > /obrarʲo/ > /obrjaro/ (not [*/obrajro/]) >> 'ouvrier' "worker".
Second diphthongization: diphthongization of /e/, /o/, /a/ to /ei/, /ou/, /ae/ in stressed, open syllables, not followed by a palatal sound (not in all Gallo-Romance). (Later on, /ei/ > /oi/, /ou/ > /eu/, /ae/ > /e/; see below.)
Second unstressed vowel loss: Loss of all vowels except /a/ in unstressed, final syllables; addition of a final, supporting /e/ when necessary, to avoid words with impermissible final clusters.
Second lenition: Same changes as in first lenition, applied again (not in all Gallo-Romance). NOTE: Losses of unstressed vowels may have blocked this change from happening.
Palatalization of /ka/ > /tʃa/, /ɡa/ > /dʒa/.
Further vocalic changes (part 1):
/ae/ > /ɛ/ (but > /jɛ/ after a palatal, and > /aj/ before nasals when not after a palatal).
/au/ > /ɔ/.
Further consonant changes:
Geminate stops become single stops.
Final stops and fricatives become devoiced.
/dz/ > /z/, when not final.
A /t/ is inserted between palatal /ɲ/, /ʎ/ and following /s/ (doles > 'duels' "you hurt" but colligis > *colyes > 'cuelz, cueuz' "you gather"; jungis > *yōnyes > 'joinz' "you join"; filius > 'filz' "son").
Palatal /ɲ/ , /ʎ/ are depalatalized to /n/ , /l/ when final or following a consonant.
In first-person verb forms, they may remain palatal when final due to the influence of the palatalized subjunctives.
/ɲ/ > /jn/ when depalatalizing, but /ʎ/ > /l/, without a yod. (*veclus > /vɛlʲo/ > /viɛlʲo/ > 'viel' "old" but cuneum > /konʲo/ > 'coin'. balneum > /banjo/ > 'bain' but montanea > /montanja/ > 'montagne'.)
Further vocalic changes (part 2):
/jej/ > /i/, /woj/ > /uj/. (placere > /plajdzjejr/ > 'plaisir'; nocte > /nuojt/ > 'nuit'.)
Diphthongs are consistently rendered as falling diphthongs, i.e. the major stress is on the first element, including for /ie/, /ue/, /ui/, etc. in contrast with the normal Spanish pronunciation.