Where is Boosting applied in Gradient boosting techniques? In boosting, the primary idea is to re-adjust weights of training instances, so that subsequent models learn how to fit difficult-to-classify samples.

From Wikipedia Boosting (Machine Learning):
While boosting is not algorithmically constrained, most boosting
algorithms consist of iteratively learning weak classifiers with
respect to a distribution and adding them to a final strong
classifier. When they are added, they are weighted in a way that is
related to the weak learners' accuracy. After a weak learner is added,
the data weights are readjusted, known as "re-weighting".
Misclassified input data gain a higher weight and examples that are
classified correctly lose weight.[note 1] Thus, future weak learners
focus more on the examples that previous weak learners misclassified.

However, in Gradient Boosting, I do not see any reference of training instance re-weighting being mentioned. Also, there is no such parameter in the implementation on Scikit-Learn.
I do see a parameter called learning rate, that combines subsequent models, however, that seems to be fixed and not adjustable for each subsequent model.

Intuitively, the new model update, i.e., additive modelling step, in Algorithm 1 of Professor Friedman's work Greedy function approximation: A gradient boosting machine or in any similar step occurring other inceptions of the idea of so called stepwise-greedy learning is a boosting step as mentioned in the paper with the expression for $\rho_m$:
$$ F_m(x) = F_{m-1}(x) + \rho_m h_m(x)$$
Here, $\rho_m$ plays a role of reweighing and penalise the new additive model, because $\rho_m$ is learned from training the new "weak learner". Similar update occurs explicitly in trees in the same work's Algorithm 3 (tree boost), with an indicator function instead of $\rho_m$.
