198 Commits

Author SHA1 Message Date
Firehose Bot
a9f3d013a7 experimental file that shows images in markdown 2026-06-26 20:50:37 +02:00
Firehose Bot
881fce5023 load images - blog post 2026-06-26 20:49:37 +02:00
Firehose Bot
38ca16bbca do not open editor - vim inside emacs is annoying 2026-06-26 16:12:50 +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
5d20a21499 Add init script for demo skill
Installs chrome and rodney
2026-05-18 22:06:20 +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
e53445fc1e demos did not convey needed feedback 2026-05-15 16:23:16 +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
47292dbb32 add npm 2026-05-15 14:59:42 +01:00
Firehose Bot
801fac5a41 Add npm install to Dockerfile for dokku 2026-05-15 14:58:26 +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
Firehose Bot
d6df39e90f Merge branch 'main' of ssh://gitea.apps.sustainabledelivery.com:3022/mostalive/firehose 2026-05-14 17:04:21 +01:00
86a924d92a setting up microprints transcript 2026-05-14 16:58:26 +01:00
Firehose Bot
dc8c92d189 Merge branch 'main' of ssh://gitea.apps.sustainabledelivery.com:3022/mostalive/firehose 2026-05-14 14:05:02 +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
fa4825d76d chromium in docker 2026-05-14 12:30:22 +01:00
237dcb48b2 Port DEMO skill from claude to pi
And particular for this project. I am now reading more markdown, making
smaller steps. So the installation instructions went to the README.

Hmm. having just written about init scripts, the installation may be
best moved to an init script in the skill directory.
2026-05-14 11:18:29 +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
Firehose Bot
b2d3bdef19 add scripts/show_drafts and scripts/scheduled for listing unpublished blog posts 2026-05-13 21:48:32 +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
Firehose Bot
a83634da36 refactor(Blogex.LinkValidator): simplify dead code and naming
- Drop redundant :ok return in _validate_links/2 (blog.ex)
- Remove dead HTML link regex from extract_links/1 (body is raw markdown)
- Rename slug_slug_end/1 to slug_end/1
- Simplify parse_blog_link/1 to return {blog_id, slug}, removing
  parse_query_fragment/1 and dead case branches
2026-05-07 13:24:11 +01:00
Firehose Bot
1f0423841a chore: add yaks for LinkValidator simplifications 2026-05-07 12:48:40 +01:00
Firehose Bot
83eb8f7d50 chore: commit misc untracked files (llm-metrics, mise.toml, block-agent-idea.html) 2026-05-07 11:57:24 +01:00
Firehose Bot
2b7cf0a3b9 chore: apply mix format to blogex test files and router 2026-05-07 11:57:17 +01:00
Firehose Bot
ab7a520e9e Add compile-time link validation for blog post internal links
- Add Blogex.LinkValidator module to validate /blog/{id}/{slug} semantics
- Add Blogex.LinkError exception with actionable error messages
- Integrate validation into Blogex.Blog via @before_compile callback
- Add unit tests (34) and integration tests (4) for link validation
- Add test fixtures (valid/invalid posts) in blogex/priv/blog/test/

Closes: validate-internal-link-semantics-in-blog-post-markdown-bodies-at-compile-time-h3hb
Closes: define-link-semantic-validation-logic-in-blogex-7syv
Closes: write-tests-for-link-semantic-validation-y30h
Closes: integrate-link-validation-into-blogexblog-compile-time-macro-1205
2026-05-07 11:56:54 +01:00