# 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": "回転",
"desc": "PDFを回転します。"
},
"imageToPdf": {
"imageToPDF": {
"title": "画像をPDFに変換",
"desc": "画像 (PNG, JPEG, GIF) をPDFに変換します。"
},
@@ -371,7 +371,7 @@
"title": "権限の変更",
"desc": "PDFの権限を変更します。"
},
"removePages": {
"pageRemover": {
"title": "削除",
"desc": "PDFから不要なページを削除します。"
},
@@ -383,7 +383,7 @@
"title": "パスワードの削除",
"desc": "PDFからパスワードの削除します。"
},
"compressPdfs": {
"compress": {
"title": "圧縮",
"desc": "PDFを圧縮してファイルサイズを小さくします。"
},
@@ -479,7 +479,7 @@
"title": "パイプライン",
"desc": "パイプラインスクリプトを定義してPDF上で複数のアクションを実行します。"
},
"add-page-numbers": {
"addPageNumbers": {
"title": "ページ番号の追加",
"desc": "ドキュメント全体の設定された場所にページ番号を追加します。"
},
@@ -487,7 +487,7 @@
"title": "PDFファイル名の自動変更",
"desc": "検出されたヘッダーに基づいてPDFファイルの名前を自動的に変更します。"
},
"adjust-contrast": {
"adjustContrast": {
"title": "色/コントラストの調整",
"desc": "PDFのコントラスト、彩度、明るさを調整します。"
},
@@ -499,7 +499,7 @@
"title": "ページの自動分割",
"desc": "ページ分割用QRコードを使用したスキャンしたPDFを自動分割します。"
},
"sanitizePdf": {
"sanitizePDF": {
"title": "サニタイズ",
"desc": "PDFファイルからスクリプトやその他の要素を削除します。"
},
@@ -523,11 +523,11 @@
"title": "PDFのすべての情報を入手",
"desc": "PDFのあらゆる情報を取得します。"
},
"extractPage": {
"pageExtracter": {
"title": "ページの抽出",
"desc": "PDFから選択したページを抽出します。"
},
"PdfToSinglePage": {
"pdfToSinglePage": {
"title": "PDFを単一の大きなページに変換",
"desc": "PDFのすべてのページを1つの大きな単一ページに結合します"
},
@@ -543,11 +543,11 @@
"title": "手動墨消し",
"desc": "選択したテキスト、描画した図形、選択したページに基づいてPDFを墨消します。"
},
"tableExtraxt": {
"PDFToCSV": {
"title": "PDFをCSVに変換",
"desc": "PDFから表を抽出しCSVに変換します。"
},
"autoSizeSplitPDF": {
"split-by-size-or-count": {
"title": "サイズ・数による自動分割",
"desc": "サイズ・ページ数またはドキュメント数に基づいて、1つのPDFを複数のドキュメントに分割します。"
},
@@ -563,11 +563,11 @@
"title": "PDFにスタンプを追加",
"desc": "設定した位置にテキストや画像のスタンプを追加できます"
},
"removeImagePdf": {
"removeImage": {
"title": "画像の削除",
"desc": "PDFから画像を削除してファイルサイズを小さくします"
},
"splitPdfByChapters": {
"splitByChapters": {
"title": "PDFをチャプターごとに分割",
"desc": "チャプターの構造に基づいてPDFを複数のファイルに分割します"
},
@@ -575,7 +575,7 @@
"title": "PDF署名の検証",
"desc": "PDF文書のデジタル署名と証明書を検証します"
},
"replaceColorPdf": {
"replace-color": {
"title": "色の置換と反転",
"desc": "PDF内のテキストと背景の色を置き換え、PDFのフルカラーを反転してファイルサイズを縮小します。"
}
@@ -1558,4 +1558,4 @@
}
}
}
}
}