CMS changes landed in
[layout.php](/Users/tyemeclifford/Documents/GH/blog/themes/neon/layout.php),
[style.css](/Users/tyemeclifford/Documents/GH/blog/themes/neon/assets/style.css),
[app.js](/Users/tyemeclifford/Documents/GH/blog/themes/neon/assets/app.js),
and
[lone-embed.php](/Users/tyemeclifford/Documents/GH/blog/lone-embed.php):
skip link, named search/forms, current page state, live notices/empty
states, labelled media/embed controls, visible focus states, theme
control pressed states, and a focus-trapped/lightbox dialog with proper
ARIA.
Mac app changes landed in
[main.m](/Users/tyemeclifford/Documents/GH/blog/macclient/AppKitClient/main.m),
and I rebuilt
[TCMS](/Users/tyemeclifford/Documents/GH/blog/macclient/TCMS.app/Contents/MacOS/TCMS):
AppKit controls/tables/fields/previews now get accessibility
labels/help/value text, workspace sections are named, media/comment
tables expose useful context, and status messages are announced via
macOS accessibility notifications.
Manual content actions now confirm clearly:
Draft shows “Draft Saved”
Publish shows “Published”
Update shows “Updated”
Delete first asks “Delete Post/Page?” and then shows “Deleted” after the
API succeeds
Autosave stays quiet so it does not spam popups.
Updated:
[macclient/AppKitClient/main.m](/Users/tyemeclifford/Documents/GH/blog/macclient/AppKitClient/main.m)
[macclient/README.md](/Users/tyemeclifford/Documents/GH/blog/macclient/README.md)
[CHANGELOG.md](/Users/tyemeclifford/Documents/GH/blog/CHANGELOG.md)
What changed in
[main.m](/Users/tyemeclifford/Documents/GH/blog/macclient/AppKitClient/main.m):
Media list now paginates with Previous/Next and 10/25/50/100 per page.
Selecting an image loads an inline preview.
Selecting audio/video loads an AVPlayerView with native playback
controls.
Added an Open button and double-click support to open media in the
default Mac app.
Media file sizes now display as readable values like 1.4 MB.
I also updated
[build-app.sh](/Users/tyemeclifford/Documents/GH/blog/macclient/build-app.sh)
to link AVKit and AVFoundation, and to honor the app’s
CFBundleExecutable from Info.plist so the rebuilt bundle launches with
the expected TCMS executable.