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).
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)
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
- 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
- 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
Production build broke because our custom lint rule was compiled. The
credo linter is not available and not necessary in production.
Solution: create separate directory for dev tools.
Production build broke because our custom lint rule was compiled. The
credo linter is not available and not necessary in production.
Solution: create separate directory for dev tools.
1. Rename goto_engineering_post_page/2 to visit_engineering_path/2 for
better accuracy (used for both post pages and tag pages)
2. Simplify Makefile test target by removing explicit ecto.create and
ecto.migrate commands (mix test handles migrations automatically)
3. Update blog_test.exs header comment to reflect actual changes made
4. Move Sandbox alias to top level in data_case.ex
1. Rename goto_engineering_post_page/2 to visit_engineering_path/2 for
better accuracy (used for both post pages and tag pages)
2. Simplify Makefile test target by removing explicit ecto.create and
ecto.migrate commands (mix test handles migrations automatically)
3. Update blog_test.exs header comment to reflect actual changes made
4. Move Sandbox alias to top level in data_case.ex
- Add Accept: application/json headers to all API endpoint tests
- Add GET /blog/releases/tag/:tag HTML page test
- Add GET /api/blog/*/tag/:tag JSON API tests for both blogs
- Fix feed.xml assertions to check body first, then content type
- Add Accept: application/json headers to all API endpoint tests
- Add GET /blog/releases/tag/:tag HTML page test
- Add GET /api/blog/*/tag/:tag JSON API tests for both blogs
- Fix feed.xml assertions to check body first, then content type