diff --git a/.gitattributes b/.gitattributes
index bb403ca..ce2f17d 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,9 +1,21 @@
-.github export-ignore
-.gitignore export-ignore
-.gitattributes export-ignore
-build.xml export-ignore
-composer.lock export-ignore
-phpunit.xml.* export-ignore
-scripts export-ignore
-tests export-ignore
-README.MD export-ignore
\ No newline at end of file
+# Shared line endings and binary files
+* text=auto eol=lf
+
+# Never convert line endings in binary files
+*.png binary
+*.jpg binary
+*.jpeg binary
+*.gif binary
+*.webp binary
+*.ico binary
+
+.github/ export-ignore
+.gitignore export-ignore
+.gitattributes export-ignore
+build.xml export-ignore
+composer.lock export-ignore
+phpunit.xml.* export-ignore
+scripts/ export-ignore
+tests/ export-ignore
+README.md export-ignore
+docs/images/ export-ignore
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
new file mode 100644
index 0000000..9495b9e
--- /dev/null
+++ b/.github/workflows/lint.yml
@@ -0,0 +1,38 @@
+name: Lint
+
+# PHP syntax check on the lowest PHP version this extension supports and the
+# newest one phpBB 3.3 supports. tests.yml runs phpBB's own checks (code
+# sniffer, EPV) on phpBB 3.3 with PHP 8.3.
+on:
+ push:
+ branches:
+ - master
+ pull_request:
+ branches:
+ - master
+
+permissions:
+ contents: read
+
+jobs:
+ lint:
+ name: PHP ${{ matrix.php }} lint
+ runs-on: ubuntu-24.04
+ strategy:
+ matrix:
+ php: ['8.3', '8.4']
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Set up PHP ${{ matrix.php }}
+ uses: shivammathur/setup-php@v2
+ with:
+ php-version: ${{ matrix.php }}
+ coverage: none
+ tools: composer:v2
+
+ - name: PHP syntax check
+ run: find . -name '*.php' -not -path './.git/*' -not -path './vendor/*' -print0 | xargs -0 -n1 php -l
+
+ - name: Validate composer.json
+ run: composer validate --no-check-all --no-check-publish
diff --git a/.gitignore b/.gitignore
index 81def00..03dba9f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,2 @@
-/build/
+/build/
/vendor/
\ No newline at end of file
diff --git a/README.MD b/README.MD
deleted file mode 100644
index 9b8d6c8..0000000
--- a/README.MD
+++ /dev/null
@@ -1,16 +0,0 @@
-# Print All Posts
-
-Allows users, if they have the print topic permission for the forum the topic is located, to be able to print view all posts in a topic.
-
-## Installation
-
-1. Copy the extension to: `/ext/phpbbmodders/printallposts`
-2. In the ACP, go to: **Customise → Manage extensions**
-3. Enable the **Print All Posts** extension
-
-## Automated testing
-[](https://github.com/phpbbmodders/printallposts/actions/workflows/tests.yml)
-
-## License
-
-Licensed under the [GNU General Public License v2](license.txt)
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..24cd80a
--- /dev/null
+++ b/README.md
@@ -0,0 +1,62 @@
+# Print All Posts
+
+[](https://github.com/phpbbmodders/printallposts/actions/workflows/tests.yml) [](https://github.com/phpbbmodders/printallposts/actions/workflows/lint.yml)
+
+Lets users who can print topics in a forum print every post in a topic on one page.
+
+## Features
+
+- Adds a **Print all** link to the **Topic tools** menu, next to phpBB's own **Print view**. It opens in a new tab.
+- phpBB's print view shows one page of posts at a time. **Print all** shows every post in the topic on a single printable page.
+- Uses phpBB's existing **Can print topic** forum permission. Users without it don't see the link and can't open the page.
+
+## Screenshots
+
+
+
+  Print all in the Topic tools menu |
+  Every post on one printable page |
+
+
+
+Click a screenshot for the full size.
+
+## Requirements
+
+- phpBB 3.3.19 or later
+- PHP 8.3.36 or later
+
+## Installation
+
+1. Copy the extension to `/ext/phpbbmodders/printallposts`
+2. In the Administration Control Panel, go to **Customise → Manage extensions**
+3. Enable the **Print all posts in a topic** extension
+
+### Upgrading from `rmcgirr83/printallposts`
+
+This extension used to be Rich McGirr's `rmcgirr83/printallposts`. To move to this version:
+
+1. Disable the old **Print all posts in a topic** extension in the ACP. Do **not** delete its data.
+2. Upload this version to `/ext/phpbbmodders/printallposts` and enable it. The new version won't enable while the old one is still on, and it removes the old extension's entry from the extension list when it is enabled.
+3. Delete the `/ext/rmcgirr83/printallposts` folder and purge the board cache.
+
+If you disable the old extension from the command line (`bin/phpbbcli.php`) instead of the ACP, run `bin/phpbbcli.php cache:purge` before enabling the new one; the command-line disable doesn't clear the cache.
+
+## Contributing
+
+Contributions are welcome!
+
+- **Bug reports**: [Open an issue](https://github.com/phpbbmodders/printallposts/issues).
+- **Everything else** (questions, feature requests, ideas, general discussion): [Use Discussions](https://github.com/orgs/phpbbmodders/discussions), or the [community forum](https://www.phpbbmodders.com/community/).
+- Pull requests are welcome for bug fixes or discussed features.
+
+## Acknowledgments
+
+- Extension by Rich McGirr ([RMcGirr83](https://github.com/rmcgirr83)).
+- Documentation assisted by [Claude](https://www.anthropic.com/claude).
+
+## License
+
+This extension is licensed under the **GNU General Public License v2.0**.
+
+See [license.txt](license.txt) for more information.
diff --git a/composer.json b/composer.json
index 3bad85b..7f2a735 100644
--- a/composer.json
+++ b/composer.json
@@ -1,43 +1,43 @@
-{
- "name": "phpbbmodders/printallposts",
- "type": "phpbb-extension",
- "description": "Allows users, if they have the print topic permission for the forum the topic is located, to be able to print view all posts in a topic.",
- "homepage": "https://www.phpbbmodders.com/",
- "version": "1.0.4",
- "time": "2026-10-22",
- "keywords": [
- "phpbb",
- "extension",
- "print all posts in a topic",
- "communication"
- ],
- "license": "GPL-2.0-only",
- "authors": [
- {
- "name": "phpBB Modders",
- "email": "board@phpbbmodders.com",
- "homepage": "https://www.phpbbmodders.com/",
- "role": "Extension Developer"
- },
- {
- "name": "Rich McGirr",
- "role": "Past Developer"
- }
- ],
- "require": {
- "php": ">=8.3.36",
- "composer/installers": "~1.0.0"
- },
- "extra": {
- "display-name": "Print all posts in a topic",
- "soft-require": {
- "phpbb/phpbb": ">=3.3.19,<4.0.0@dev"
- },
- "version-check": {
- "host": "www.phpbb.com",
- "directory": "/customise/db/extension/print_all_posts_in_a_topic",
- "filename": "version_check",
- "ssl": true
- }
- }
+{
+ "name": "phpbbmodders/printallposts",
+ "type": "phpbb-extension",
+ "description": "Lets users who can print topics in a forum print every post in a topic on one page.",
+ "homepage": "https://www.phpbbmodders.com/",
+ "version": "1.0.4",
+ "time": "2026-10-22",
+ "keywords": [
+ "phpbb",
+ "extension",
+ "print all posts in a topic",
+ "communication"
+ ],
+ "license": "GPL-2.0-only",
+ "authors": [
+ {
+ "name": "phpBB Modders",
+ "email": "board@phpbbmodders.com",
+ "homepage": "https://www.phpbbmodders.com/",
+ "role": "Extension Developer"
+ },
+ {
+ "name": "Rich McGirr",
+ "role": "Past Developer"
+ }
+ ],
+ "require": {
+ "php": ">=8.3.36",
+ "composer/installers": "~1.0.0"
+ },
+ "extra": {
+ "display-name": "Print all posts in a topic",
+ "soft-require": {
+ "phpbb/phpbb": ">=3.3.19,<4.0.0@dev"
+ },
+ "version-check": {
+ "host": "www.phpbb.com",
+ "directory": "/customise/db/extension/print_all_posts_in_a_topic",
+ "filename": "version_check",
+ "ssl": true
+ }
+ }
}
\ No newline at end of file
diff --git a/docs/images/screenshots/printallposts-print.png b/docs/images/screenshots/printallposts-print.png
new file mode 100644
index 0000000..12093ef
Binary files /dev/null and b/docs/images/screenshots/printallposts-print.png differ
diff --git a/docs/images/screenshots/printallposts-topic-tools.png b/docs/images/screenshots/printallposts-topic-tools.png
new file mode 100644
index 0000000..ae2c6cc
Binary files /dev/null and b/docs/images/screenshots/printallposts-topic-tools.png differ
diff --git a/styles/prosilver/template/event/viewtopic_topic_tools_after.html b/styles/prosilver/template/event/viewtopic_topic_tools_after.html
index 93dbe1b..737f56c 100644
--- a/styles/prosilver/template/event/viewtopic_topic_tools_after.html
+++ b/styles/prosilver/template/event/viewtopic_topic_tools_after.html
@@ -1,7 +1,7 @@
-{% if U_PRINTALLPOSTS %}
-
-
- {{ lang('PRINT_ALL_POSTS') }}
-
-
+{% if U_PRINTALLPOSTS %}
+
+
+ {{ lang('PRINT_ALL_POSTS') }}
+
+
{% endif %}
\ No newline at end of file