Commit graph jonnybarnes.uk/resources/views
Author SHA1 Message Date
568ae78864
Add manual Micropub token generation for non-PKCE clients
iA Writer's IndieAuth client predates PKCE support in the spec, so it
can't complete the normal authorization flow. Add an admin form to
mint a token directly (reusing the existing TokenService), so it can
be pasted into clients that support manual token setup instead.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017USyUg8PwuoDcHP8pv5xjy
2026-09-13 10:40:27 +01:00
9e9fbdc127
Add admin-editable About page
Mirrors the existing Bio singleton pattern: a new `about` table/model,
admin CRUD at /admin/about, and a public page at /about linked from
both the header nav and the admin homepage. Content is wrapped in
.e-content so it lays out correctly within the site's CSS grid.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013bzYwaDD8p3XNDMYKvXKrs
2026-08-28 14:49:53 +01:00
9532aae37e
Bring back winter snow effect, gated by an admin setting
The site has flip-flopped on the snow effect every winter (add it,
remove it, repeat), meaning a PR round-trip each time. Instead, restore
the winter.js/is-land assets and gate them behind a new admin-toggleable
setting so the effect can be switched on/off from /admin/settings
without touching code.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0113BVPXDpEk9HPEqXvSG2WQ
2026-08-23 10:17:26 +01:00
e9d8f4c74b
Redesign theme toggle as a two-icon light/dark switch
Replace the single-icon popover with a dropdown of radio inputs with a
compact two-button toggle (light/dark), inspired by vale.rocks' design:
clicking an icon forces that theme, clicking the active icon again
returns to following the system preference. Keeps the existing
light-dark() colour-scheme mechanism and view-transition wipe
animation, and reuses the project's existing Fluent UI sun/moon icons.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fn4aNjE3ofpDM78F4qmdCV
2026-08-22 18:14:08 +01:00
be2bc267ad
Remove snow-fall 2026-08-22 17:39:31 +01:00
99f306ede1
Replace RSS icon with a JSON Feed icon in the header
The nav's feed link already points at the JSON feed, but was using
the feather RSS icon. Adds an SVG recreation of the official JSON
Feed mark (traced from jsonfeed.org's icon) and swaps it in, using a
single dark-green fill throughout so it stays legible against both
the light and dark theme backgrounds.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AXyzNvQZPQgBoSZwW7cLG8
2026-08-22 10:42:23 +01:00
714cd95d79
Drop RSS/Atom feeds, support JSON feeds only
Removes the RSS and Atom feed routes, controller methods, and views
for both the blog and notes feeds, keeping JSON (and JF2) as the only
supported feed formats. Also serves the JSON feeds with the
spec-required application/feed+json MIME type instead of the generic
application/json.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AXyzNvQZPQgBoSZwW7cLG8
2026-08-22 10:42:16 +01:00
6a0bb623fc
Restyle the Micropub tokens admin table
Breaks the table out of the centred content column to full page
width via a subgrid on <main> (adds a reusable .full-bleed utility),
and reworks the table itself to match a Claude Design mockup: a
rounded card wrapper, scope values as pill chips, a dotted status
pill, and proportional column widths. Colours use the site's
existing --primary-hue/light-dark() tokens so it stays correct in
both themes. The card scrolls horizontally on narrow viewports
instead of clipping content.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LHN7V9kyZxrsxaspMSqoGJ
2026-08-21 16:05:48 +01:00
30ec2ec0e8
Initial work on better admin page styling 2026-08-21 15:36:18 +01:00
faf8e5c1ec
Fix CSRF exemption and array-input crash on revocation/introspection
An Opus code review of the branch caught two real bugs the test suite
structurally couldn't see:

- /revocation and /introspect were never added to bootstrap/app.php's
  CSRF except list, so both were fully broken (403) for any real
  external client, despite every feature test passing — CSRF
  verification is short-circuited entirely while running tests.
  Verified live against the running app before and after the fix, and
  added a regression test that asserts against the actual configured
  exemptions rather than relying on request-time behavior that tests
  can't exercise.

- An array-shaped `token` param (e.g. token[]=a&token[]=b) crashed
  both endpoints with a 500, since this app promotes PHP warnings
  ("Array to string conversion") to exceptions. Fixed at the shared
  root, MicropubToken::findActive(), which also closes the same latent
  hole in VerifyMicropubToken's access_token param that predates this
  branch. Verified live and covered with regression tests.

Also applied the review's lower-severity findings: added the missing
introspection_endpoint Link header and metadata test assertions,
removed the now-dead is_string($scopes) array branch in the Micropub
handlers and media controller (scope is unconditionally a string from
the DB now, this guarded against a JWT-array-claim shape that can no
longer occur), dropped a redundant #[Table] model attribute, sized
token_hash to its actual 64-char length, and removed a one-off inline
style in the admin view.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014625MfkGZ7GVdbqKme4a8L
2026-08-13 17:03:43 +01:00
9d6cf6c815
Add admin page to list and revoke Micropub tokens
Gives a way to actually use the revocation capability built up over
the last few commits from the admin side, not just self-service via
the client. Lists client_id/scope/issue time per token (never the raw
token itself, since only its hash is stored) with a revoke button for
active ones.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014625MfkGZ7GVdbqKme4a8L
2026-08-13 16:18:52 +01:00
c420e19f08
Replace abandoned spatie/commonmark-highlighter with tempest/highlight
Swap the syntax highlighting library and its CSS theme (zenburn -> nord,
matching tempest's class names), add padding to code blocks, and commit
the missing compressed winter.js assets from the earlier asset rename.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-14 18:37:05 +01:00
f7e13976e0
Rename snow-fall.js asset to winter.js
Some ad/tracker blocklists were matching the "snow-fall" filename and blocking the script.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-14 18:01:57 +01:00
db09718a96
Switch Bridgy syndication from Micropub to webmention
Bridgy's Micropub endpoint required per-silo access tokens and posted
raw markdown content directly. Switch to Bridgy's webmention publish
endpoint instead: POST source/target to /publish/webmention and let
Bridgy re-fetch the note page, which now carries hidden verification
links for silos not yet syndicated. Removes the now-unused
config/bridgy.php and BRIDGY_MASTODON_TOKEN env var, and caps both
jobs to a single try since retries would send Bridgy a duplicate
publish webmention.
2026-07-14 17:36:25 +01:00
9f012b01e4
Upgrade to Laravel 13 2026-04-07 09:01:19 +01:00
9e788e0fe8
Images can be uploaded with alt text
This means associating images to notes via a pivot table, we also finish
off the migration of medai from S3.
2026-01-04 10:07:25 +00:00
6b4607e4f9
Small mobile layout tweaks 2025-12-11 19:58:17 +00:00
f85085c34f
Fix layout of note metadata
Especially the syndication links
2025-12-11 17:48:42 +00:00
a8cb30456c
Redesign v2025.1 2025-12-11 17:17:01 +00:00
363254d13c
Some fixes related to developing my Micropub client 2025-08-17 11:05:38 +01:00
7a58287b34
Remove references to short domain 2025-04-06 17:22:36 +01:00
328c9badb4
Remove snow fall
Some checks failed
PHP Unit / PHPUnit test suite (pull_request) Has been cancelled
Laravel Pint / Laravel Pint (pull_request) Has been cancelled
2025-04-06 14:33:45 +01:00
70e5b9bec7
Add snow fall to the site
Some checks failed
Laravel Pint / Laravel Pint (pull_request) Has been cancelled
PHP Unit / PHPUnit test suite (pull_request) Has been cancelled
Some tweaks to the node dependencies and compression script also done
2024-11-30 15:58:25 +00:00
84383ecd31
Apply the same fix to replies and reposts
Some checks failed
PHP Unit / PHPUnit test suite (pull_request) Has been cancelled
Laravel Pint / Laravel Pint (pull_request) Has been cancelled
2024-11-30 15:31:17 +00:00
1d59d57c2e
Fix showing author like on a note 2024-11-30 15:30:07 +00:00
37a8e4bba8
Load favicon from a favicon.png file if it exists
Some checks failed
Laravel Pint / Laravel Pint (pull_request) Has been cancelled
PHP Unit / PHPUnit test suite (pull_request) Has been cancelled
This means different people will be able to use their own avatar/favicon
2024-08-23 18:55:08 +01:00
9abe4a6110
Only link to gpg key if it exists in the filesystem
Some checks failed
PHP Unit / PHPUnit test suite (pull_request) Has been cancelled
Laravel Pint / Laravel Pint (pull_request) Has been cancelled
2024-08-23 18:27:20 +01:00
3e980b9a6a
Improve html links in the head regarding IndieAuth
One of them had a typo in
2024-06-22 18:40:41 +01:00
58b31bb4c1
Add Indieweb related link to the HTTP headers 2024-06-08 19:39:09 +01:00
5b2bfd5270
Auth endpoint
The IndieAuth endpoint should be added, currently adding the unt tests
2024-06-02 10:16:16 +01:00
cbbe87e23c
Setup support for syndicating to Bluesky 2024-03-23 21:19:54 +00:00
f770235e86
Use system fonts for better webperf 2024-02-23 16:35:48 +00:00
4f5f4132d6
Remove the snow effect we had added for xmas 2024-02-17 18:20:56 +00:00
ec17f65107
Simplify frontend assests and build steps
We just write the files directly in the public dir
Then change the npm scripts to lint and compress them directly
2023-12-21 17:57:48 +00:00
ba9330cdf1
Expose RSS feed
Though actually its the json feed 🤫
2023-12-19 17:12:49 +00:00
442c2061e8
Hopefully fix snow on prod 2023-12-17 14:55:36 +00:00
65a70a5440
Add some snow ❄️i
Also get to play with some web components
2023-12-17 14:15:45 +00:00
639064eb9e
Wrap search form in search element 2023-12-02 14:37:03 +00:00
302d4e6fdb
Small validation fixes
- prevent repeated IDs in mastodon icon SVG
  - fix missing offset attribute in mastodon icon SVG
  - remove un-needed role on <nav> element
  - add empty alt attribute to some social icons
2023-11-27 22:10:50 +00:00
92098a793e
feat: Add webmention counts and icons for replies, likes, and reposts.
- Add new SVG icons for the "reply", "like", and "repost" actions
- Update webmention info display in note template to include counts and icons for replies, likes, and reposts
- Add webmention counts to FrontPageController.php and modify queries in NotesController.php
- Modify WebMentionsTableSeeder.php to change URLs, commentable ID, and add new WebMentions
2023-11-25 16:08:07 +00:00
9124ac21ae
style: Revamp CSS styles for improved layout and readability
- Modify `public/assets/app.css` with updates to CSS variables, grid templates, and class styles
- Add class `pagination` to `<nav>` element in `resources/views/templates/pagination.blade.php`
- Update `public/assets/app.css.br` with changes
- Add flex layout and margin styles to `.h-feed`, `.h-entry`, and `.pagination` classes in `resources/css/layout.css`
2023-11-11 17:28:07 +00:00
03c8f20a8c
feat: Add Passkey support
- Added a button for logging in with Passkeys in `login.blade.php`
- Refactored the `register` method and added the `login` method in `auth.js`
- Made various modifications and additions to the passkey functionality in `PasskeysController.php`
- Added event listener for login-passkey element in `app.js`
- Modified the passkeys table schema and made modifications to `Passkey.php`
- Changed the redirect route in the `login` method of `AuthController.php`
- Made modifications and additions to the routes in `web.php`
- Added `"web-auth/webauthn-lib": "^4.7"` to the list of required packages in `composer.json`
- Changed the redirect URL in `AdminTest.php`
2023-10-27 20:22:40 +01:00
2fb8339d91
Admin can now hopefully add a passkey to their account 2023-09-25 18:31:38 +01:00
cadd58187a
Initial work on adding passkeys
Mostly starting to get some javascript set up
2023-08-25 13:43:51 +01:00
462c710295
fix: Use correct config variables post L10-config update
Specifically the header name had disappeared.
2023-06-11 16:54:56 +01:00
bebbfec510
chore: Refactor configuration files based on Laravel 10 skeleton 2023-06-09 18:31:53 +01:00
16c945b3a6
chore: Improve production mode stylesheet loading workflow
- Add production mode stylesheet link to master.blade.php file
2023-05-29 12:50:24 +01:00
57bd41febf
refactor: Refactor webpack config and asset handling
- Improve webpack performance and configuration
- Delete unnecessary CSS and binary files
- Adjust ESLint ignored files list
- Update package.json with webpack mode for dev and prod scripts
- Move app.css to app.js in master.blade.php
2023-05-08 21:56:05 +01:00
5f54517aa6
Remove mapbox links 2023-05-04 18:32:07 +01:00
58c5a7d443
Re-add search functionality 2023-04-11 21:44:55 +01:00