# Description of Changes
This pull request introduces dynamic document meta tag management and
improves URL routing and tool metadata handling in the frontend. The
most significant changes are the addition of a custom hook to update
document meta tags (including OpenGraph tags) based on the selected
tool, enhancements to the tool selection context for better URL
synchronization, and enrichment of the `Tool` type and tool registry
with more metadata.

**Dynamic document meta management:**

* Added a new `useDocumentMeta` hook that updates the page's `<title>`,
description, and OpenGraph meta tags based on the currently selected
tool, and restores the original values on cleanup.
(`frontend/src/hooks/useDocumentMeta.ts`)
* Integrated `useDocumentMeta` into `HomePageContent` so the document's
meta tags dynamically reflect the selected tool's metadata, improving
SEO and social sharing. (`frontend/src/pages/HomePage.tsx`)
[[1]](diffhunk://#diff-85c26b21681286c20e97a26a4912f0b91812776c9d4d0c54aa541fded2565c7eR2-R8)
[[2]](diffhunk://#diff-85c26b21681286c20e97a26a4912f0b91812776c9d4d0c54aa541fded2565c7eR17)
[[3]](diffhunk://#diff-85c26b21681286c20e97a26a4912f0b91812776c9d4d0c54aa541fded2565c7eR28-R37)

**Tool metadata and context improvements:**

* Enhanced the `Tool` type and tool registry to include `title` and
`description` fields, which are now translated and used throughout the
UI and meta tags. (`frontend/src/types/tool.ts`,
`frontend/src/hooks/useToolManagement.tsx`)
[[1]](diffhunk://#diff-0b557df7bd27ac90cd2f925ddd8ef8096ea2decfaee9a5c12a94dc7a03c64bfaR46)
[[2]](diffhunk://#diff-57f8a6b3e75ecaec10ad445b01afe8fccc376af6f8ad4d693c68cf98e8863273L116-R118)
* Updated the `ToolWorkflowContext` to use the new `Tool` type for
`selectedTool`, replacing the previous `ToolConfiguration` type.
(`frontend/src/contexts/ToolWorkflowContext.tsx`)
[[1]](diffhunk://#diff-9b36e2c06dddbcfba6cb66fd0b303b7860f88ca8b562bb2534af1ab50390d385L6-R8)
[[2]](diffhunk://#diff-9b36e2c06dddbcfba6cb66fd0b303b7860f88ca8b562bb2534af1ab50390d385L72-R72)

**URL routing and synchronization:**

* Implemented logic in `ToolWorkflowContext` to synchronize the selected
tool with the browser URL, initialize tool selection from the URL on
load, and handle browser navigation (back/forward) for tool selection.
(`frontend/src/contexts/ToolWorkflowContext.tsx`)
---

## Checklist

### General

- [ ] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md)
(if applicable)
- [ ] I have performed a self-review of my own code
- [ ] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### UI Changes (if applicable)

- [ ] Screenshots or videos demonstrating the UI changes are attached
(e.g., as comments or direct attachments in the PR)

### Testing (if applicable)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md#6-testing)
for more details.
This commit is contained in:
Anthony Stirling
2025-08-14 15:52:38 +01:00
committed by GitHub
parent 22db7bec76
commit 8149cb157c
103 changed files with 845 additions and 574 deletions
+14 -14
View File
@@ -347,7 +347,7 @@
"title": "Rotar",
"desc": "Rotar fácilmente sus PDFs"
},
"imageToPdf": {
"imageToPDF": {
"title": "Imagen a PDF",
"desc": "Convertir una imagen (PNG, JPEG, GIF) a PDF"
},
@@ -371,7 +371,7 @@
"title": "Cambiar permisos",
"desc": "Cambiar los permisos del documento PDF"
},
"removePages": {
"pageRemover": {
"title": "Eliminar",
"desc": "Eliminar páginas no deseadas del documento PDF"
},
@@ -383,7 +383,7 @@
"title": "Eliminar contraseña",
"desc": "Eliminar la contraseña del documento PDF"
},
"compressPdfs": {
"compress": {
"title": "Comprimir",
"desc": "Comprimir PDFs para reducir el tamaño del archivo"
},
@@ -479,7 +479,7 @@
"title": "Automatización",
"desc": "Ejecutar varias tareas a PDFs definiendo una secuencia de comandos"
},
"add-page-numbers": {
"addPageNumbers": {
"title": "Añadir números de página",
"desc": "Añadir números de página en un documento en una ubicación concreta"
},
@@ -487,7 +487,7 @@
"title": "Renombrar archivo PDF automáticamente",
"desc": "Renombrar automáticamente un archivo PDF según el encabezamiento detectado"
},
"adjust-contrast": {
"adjustContrast": {
"title": "Ajustar Color/Contraste",
"desc": "Ajustar Contraste, Saturación y Brillo de un PDF"
},
@@ -499,7 +499,7 @@
"title": "Auto Dividir Páginas",
"desc": "Auto Dividir PDF escaneado con código QR divsor de página escaneada físicamente"
},
"sanitizePdf": {
"sanitizePDF": {
"title": "Desinfectar",
"desc": "Eliminar scripts y otros elementos de los archivos PDF"
},
@@ -523,11 +523,11 @@
"title": "Obtener toda la información en PDF",
"desc": "Obtiene toda la información posible de archivos PDF"
},
"extractPage": {
"pageExtracter": {
"title": "Extraer página(s)",
"desc": "Extraer las páginas seleccionadas del PDF"
},
"PdfToSinglePage": {
"pdfToSinglePage": {
"title": "PDF a una sola página",
"desc": "Unir todas las páginas del PDF en una sola página"
},
@@ -543,11 +543,11 @@
"title": "Redacción Manual",
"desc": "Redacta un PDF basado en el texto seleccionado, dibuja formas y/o página(s) selecionada(s)"
},
"tableExtraxt": {
"PDFToCSV": {
"title": "PDF a CSV",
"desc": "Extraer Tablas de un PDF convirtiéndolas a CSV"
},
"autoSizeSplitPDF": {
"split-by-size-or-count": {
"title": "Auto dividir por tamaño/conteo",
"desc": "Divide un solo PDF en múltiples documentos según su tamaño, número de páginas, o número de documento"
},
@@ -563,11 +563,11 @@
"title": "Añadir Sello a PDF",
"desc": "Añadir texto o sello de imagen en ubicaciones específicas"
},
"removeImagePdf": {
"removeImage": {
"title": "Eliminar imagen",
"desc": "Eliminar imagen del PDF> para reducir el tamaño de archivo"
},
"splitPdfByChapters": {
"splitByChapters": {
"title": "Dividir PDF por capítulos",
"desc": "Divida un PDF en varios archivos según su estructura de capítulos."
},
@@ -575,7 +575,7 @@
"title": "Validar firma del PDF",
"desc": "Verifica firmas digitales y certificados en los documentos PDF"
},
"replaceColorPdf": {
"replace-color": {
"title": "Reemplazar e Invertir Color",
"desc": "Reemplaza el color del texto y el fondo en el PDF e invierte el color completo del PDF para reducir el tamaño del archivo"
}
@@ -1558,4 +1558,4 @@
}
}
}
}
}