144 Commits

Author SHA1 Message Date
855b6cb590 Add RSS subscribe links with icon across blog pages, footer, and head
- Add <.rss_icon> inline SVG component in core_components.ex
- Inject RSS <link> tags into <head> on blog pages for auto-discovery
- Show RSS icon next to blog title on index and tag pages
- Show RSS icon on post pages next to back-link
- Add Subscribe section in footer with links to both feeds
- Wire feed URL through blog controller (index, show, tag actions)

174 tests pass, credo clean.
2026-07-08 17:00:11 +01:00
10c02f5c6a add description 2026-07-07 13:48:41 +01:00
c8864c5b3b fixed test - clicking on line instead of parts in svg 2026-07-07 13:33:50 +01:00
6b5329bd75 moralistic programming 2026-07-07 13:32:55 +01:00
Firehose Bot
51ba85d492 upgrade nimble_publisher to 2.0 for mdex_native (replaces deprecated earmark) 2026-07-06 18:18:12 +01:00
Firehose Bot
39973c3414 fix microprints_live tests: syntax error, brittle selectors, and layout assertions
- Add missing 'do' keyword on describe block (SyntaxError)
- Replace brittle SVG rect DOM selector with direct render_click event
  trigger to avoid AmbiguousError from multi-segment rects
- Fix layout test: render/1 returns LV inner HTML only, not the
  layout wrapper — check for content actually present in output
2026-07-06 18:09:26 +01:00
Firehose Bot
2ba8457b14 Reapply "Fix dashboard dark mode readability by using theme-aware text colors"
This reverts commit 76255c7641176ed1108a771c8722e55eb004dbb1.
2026-07-06 17:02:13 +01:00
Firehose Bot
76255c7641 Revert "Fix dashboard dark mode readability by using theme-aware text colors"
This reverts commit 2a0634b82036cd2945c09de5da27116df4e9a8a6.
2026-07-06 11:54:56 +01:00
Firehose Bot
2a0634b820 Fix dashboard dark mode readability by using theme-aware text colors
- Use  and  instead of hardcoded zinc colors in EditorDashboardLive
- Apply same fix to MicroprintsLive description paragraph
- All titles now respect the active theme and remain readable in both light and dark modes
2026-07-06 11:14:13 +01:00
Firehose Bot
2be39c3273 Fix demo user confirmation to allow password login
The seeds file was creating an unconfirmed user and then setting a password,
which conflicts with Phoenix's auth system (magic link login is not allowed
for unconfirmed users with passwords).

This fix ensures the demo user is confirmed before setting their password,
so they can log in via both magic link and password.

Demo credentials: demo@example.com / password123!
2026-07-06 10:55:15 +01:00
Firehose Bot
ccb52be9db Add app layout to live_session for dashboard menu
Fix the dashboard missing menu by explicitly setting layout: {FirehoseWeb.Layouts, :app} in the live_session.
This ensures the navigation menu is rendered on the authenticated editor dashboard LiveView.
2026-07-06 10:37:08 +01:00
Firehose Bot
fe156ef81e Add Dashboard nav link for authenticated users
- Add conditional "Dashboard" link in navbar that shows when a user is logged in
- Tests verify the link is hidden for unauthenticated users and visible when authenticated
- Investigation reports for Q1 (drafts/scheduled), Q2 (RSS), Q3 (email subs)
2026-07-06 09:11:13 +01:00
Firehose Bot
f6229ebf77 Drag and drop images for blog posts 2026-07-03 14:05:34 +01:00
Firehose Bot
98d0debb43 add file location 2026-06-28 10:16:02 +02:00
Firehose Bot
85be71fe1a add intro 2026-06-27 10:27:21 +02:00
Firehose Bot
e63c2abff2 an example would be handy right about now 2026-06-27 10:20:53 +02:00
Firehose Bot
881fce5023 load images - blog post 2026-06-26 20:49:37 +02:00
Firehose Bot
9d2565a8b4 Merge branch 'main' of dokku:firehose.apps.sustainabledelivery.com 2026-06-20 22:07:22 +01:00
Firehose Bot
817a227309 publish 2026-06-20 22:06:41 +01:00
Firehose Bot
eb3af61884 blog post about explaining image models 2026-06-20 22:05:03 +01:00
Firehose Bot
ef51fdcfff Merge branch 'main' of ssh://gitea.apps.sustainabledelivery.com:3022/mostalive/firehose 2026-06-20 17:48:45 +01:00
Firehose Bot
3859c836e5 publish AI zombies retro actively 2026-06-20 17:48:27 +01:00
1cf5a39acd fix up quotes 2026-05-21 13:00:33 +01:00
1d5358d215 add Further Reading section 2026-05-21 12:16:49 +01:00
Firehose Bot
6b201e7e63 Set up Playwright for browser testing
- Playwright config for local browsers (Firefox by default) and Docker Chrome
- docker-compose.chrome.yml for browserless/chrome container (arm64)
- 4 connectivity smoke tests (home, contact, blog pages)
- 3 auth tests (redirect, login, logout) with auth helpers
- Custom fixtures with remote CDP connect support
- Shell scripts for start/stop/full Docker Chrome workflow
- Makefile targets: playwright, playwright-docker, playwright-full
2026-05-18 23:12:42 +01:00
Firehose Bot
a4bca75946 Fix credo quote-sigil warning in microprints_live_test.exs
Replace double-quoted string with escaped quotes in element selector
with a ~s sigil to satisfy Credo's 'More than 3 quotes found inside
string literal' readability check.

Includes formatting changes from mix format (ran via make check).
2026-05-18 21:35:28 +01:00
Firehose Bot
a9e746d520 scroll and highlight selected line
added line numbers to source view, fixed css selectors
2026-05-18 21:31:01 +01:00
Firehose Bot
790d2f0e1d Remember microprint state on reload 2026-05-18 20:17:38 +01:00
Firehose Bot
7afe5c1fe8 test(microprints): make expand-switch test resilient to file changes
Remove hardcoded module names (FirehoseWeb.MicroprintsLive,
Firehose.Application) from the expand-switch test. Now verifies:
- Each file's source renders when expanded (generic defmodule check)
- Source content differs between files (catches stale content bug)
- Button states update correctly (collapse/expand)
2026-05-18 18:09:55 +01:00
Firehose Bot
7c06204ac2 fix(microprints): fix source viewer showing stale content when switching files
The source_viewer component used static DOM IDs (id='source-viewer')
with phx-update='ignore'. When switching expanded files, LiveView
reused the same DOM element but phx-update='ignore' prevented content
from being updated, showing the previous file's source.

- Override source_viewer/1 in MicroprintsLive with unique per-file IDs
  generated via :erlang.phash2(file_path)
- Add test verifying expand-switch shows correct source content
- Add test for highlight/expand coupling (collapse when highlighting
  a different file)
- All 160 tests pass
2026-05-18 18:04:47 +01:00
Firehose Bot
36bdc0610e fix(microprints): collapse expanded file when highlighting a different file
- Add test in microprints_live_test.exs that documents the uncoupled state bug
- Fix handle_event("highlight_line") to collapse expanded_path when
  highlighting a line in a different file
- All 159 tests pass
2026-05-18 17:28:30 +01:00
Firehose Bot
eb97015dc0 Merge branch 'main' of ssh://gitea.apps.sustainabledelivery.com:3022/mostalive/firehose 2026-05-18 16:53:09 +01:00
eec0ff67b3 fix(microprints): pass unique id to source_viewer to fix DOM state
- source_viewer now receives id="source-viewer-#{path}" for unique DOM ids
- Fixes stale content bug when switching between expanded files
2026-05-15 16:21:11 +01:00
43aaa6bdbe fix(microprints): always show microprint SVG, source below when expanded
Layout: button → microprint (always) → source viewer (conditional)
2026-05-15 16:21:11 +01:00
aaf4c6a2c7 refactor(microprints): move expand/collapse button above microprint
- Button is now on top of the card, matching qwan-tracker layout
- Microprint SVG shown when collapsed, source viewer when expanded
- Fixes DOM confusion from duplicate source-viewer IDs by only
  rendering one source_viewer at a time
2026-05-15 16:21:11 +01:00
3434042aed fix(microprints): resolve absolute paths correctly for source viewer
- Use Path.expand(Path.join(app_root, path)) to correctly resolve both
  app files (lib/...) and blogex files (../blogex/...)
- Previously Path.join alone did not resolve '..' components, causing
  all source viewers to show the wrong file content
2026-05-15 16:21:11 +01:00
f01cdf918a fix(microprints): limit page to 2 most recently modified files
- Sort source files by mtime (newest first) and take only the first 2
- This limits the page scope for easier testing/investigation
- Temporary limit; will be 10 most recently changed files later
- Updated tests to work with the 2-file limit
2026-05-15 16:21:11 +01:00
Firehose Bot
fc583f19be microprints as https dep 2026-05-15 11:53:36 +01:00
Firehose Bot
5a9940c082 publish init script blog post 2026-05-15 11:43:59 +01:00
Firehose Bot
99e25d175e Add init.sh script and its' draft blog post 2026-05-15 11:12:15 +01:00
86a924d92a setting up microprints transcript 2026-05-14 16:58:26 +01:00
54651d2349 Add highlight.js syntax highlighting to source viewer
- Install highlight.js via npm with 8 language definitions
- SourceViewer hook applies syntax highlighting on mount/update
- Atom One Dark theme for dark mode, Atom One Light for light mode
- Add hooks directory, package.json, and package-lock.json
- Add demo document and screenshots
- Add rodney-docker.md documentation
- Ignore .rodney/ chrome data directory
2026-05-14 13:17:10 +01:00
7a50f2d4e7 WIP microprints source now showing
also added go to install showboat and rodney for the next steps.

microprints work in qwan tracker, but not in firehose. some of the
rendering is in the project, maybe the library should provide sample
webpages.
2026-05-14 11:15:37 +01:00
061787e897 Feature: OG Social media cards
Not Original Gangsta, but ObjectGraph

Reason: images were showing on LinkedIn, but small.
2026-05-10 21:34:07 +01:00
Firehose Bot
764585c642 Merge branch 'main' of dokku:firehose.apps.sustainabledelivery.com 2026-05-08 11:52:18 +01:00
Firehose Bot
987e567683 Merge branch 'main' of ssh://gitea.apps.sustainabledelivery.com:3022/mostalive/firehose 2026-05-08 11:07:13 +01:00
Firehose Bot
468911c610 ai zombies draft 2026-05-08 11:06:58 +01:00
77b1972204 add mimemail dep 2026-05-07 17:05:52 +01:00
5d8337c3e6 typo 2026-05-07 17:02:00 +01:00
b45e2af4dc configure mail 2026-05-07 16:34:55 +01:00