• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

amacgregor / amgr_phx / 40b04d507a2c297fbaab2d8ad45779a09e713540

22 Feb 2026 02:28PM UTC coverage: 5.74% (-0.09%) from 5.828%
40b04d507a2c297fbaab2d8ad45779a09e713540

push

github

web-flow
Upgrade Phoenix 1.7/1.8 and LiveView 1.0 with verified routes (#36)

- Bump phoenix ~> 1.7.21, phoenix_live_view ~> 1.0, phoenix_html ~> 4.0
- Add phoenix_html_helpers, phoenix_view as explicit dependencies
- Rename all .leex templates to .heex with HEEx attribute syntax
- Create Layouts component module replacing LayoutView for layouts
- Rewrite amgr_web.ex core macros (html/0, verified_routes/0, html_helpers/0)
- Replace live_redirect with <.link navigate={}> in .heex templates
- Migrate all Routes.*_path helpers to ~p verified routes sigil
- Replace get_flash with Phoenix.Flash.get
- Update router put_root_layout to new html: tuple syntax
- Bump Fly.io VM memory from 256mb to 512mb (OTP 26 baseline)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

4 of 17 new or added lines in 8 files covered. (23.53%)

5 existing lines in 5 files now uncovered.

38 of 662 relevant lines covered (5.74%)

0.1 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/lib/amgr_web/controllers/robot_controller.ex
1
defmodule AmgrWeb.RobotController do
2
  use AmgrWeb, :controller
3

4
  def robots(conn, _params) do
5
    conn
6
    |> put_resp_content_type("text")
7
    |> render("robots.txt", %{env: Application.get_env(:amgr, :app_env)})
×
8
  end
9

10
  @sizes [
11
    [size: "36x36", density: "0.75"],
12
    [size: "48x48", density: "1.0"],
13
    [size: "72x72", density: "1.5"],
14
    [size: "144x144", density: "2.0"],
15
    [size: "192x192", density: "3.0"]
16
  ]
17

18
  def site_webmanifest(conn, _params) do
19
    json(conn, %{
×
20
      name: "allanmacgregor.com",
21
      short_name: "AMGR",
22
      icons:
23
        for [size: size, density: density] <- @sizes do
×
24
          %{
NEW
25
            src: "/images/android-chrome-#{size}.png",
×
26
            sizes: size,
27
            density: density,
28
            type: "image/png"
29
          }
30
        end,
31
      theme_color: "#663399",
32
      display: "minimal-ui",
33
      background_color: "#ffffff"
34
    })
35
  end
36

37
  def browserconfig(conn, _params) do
38
    conn
39
    |> put_resp_content_type("application/xml")
40
    |> render("browserconfig.xml", %{conn: conn})
×
41
  end
42

43
  def rss(conn, _params) do
44
    conn
45
    |> put_resp_content_type("application/xml")
46
    |> render("rss.xml", %{conn: conn})
×
47
  end
48
end
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc