Update custom-domain doc to reflect Hetzner edge decision #47
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "update-custom-domain-doc"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Replace stale Cloudflare Tunnel spike recommendation with the actual Hetzner edge node implementation. Also includes minor view/config cleanup that was staged.
Changes
docs/custom-domain.md— rewrote to reflect Hetzner edge decision: architecture diagram, DNS table with live IP, remaining work items. Removed spike analysis (decision is made).app/views/links/_link.html.erb— link card title navigates to actual URL instead of palinks show pageapp/views/links/show.html.erb— same: title links directly to URLconfig/environments/development.rb— removed stalepalinks-devhost entryTest Plan
Review Checklist
Related Notes
PR #47 Review
DOMAIN REVIEW
Tech stack identified: Ruby on Rails (ERB views, Rails config), Markdown documentation, Mermaid diagrams.
docs/custom-domain.md -- The rewrite is clean. The 163-line spike analysis is correctly replaced with a concise 45-line implementation doc. The architecture diagram accurately reflects the Hetzner edge node pattern (Caddy + Tailscale mesh). The DNS table includes the live IP
178.156.129.142. The "Remaining Work" section lists actionable next steps. Cross-reference topal-e-platform/docs/hetzner-edge.mdis a good practice.app/views/links/_link.html.erb -- Changed
link_to link.title, link_path(link)tolink_to link.title, link.url. The URL field is validated at the model level (URI::DEFAULT_PARSER.make_regexp(%w[http https])) sojavascript:protocol XSS is not a risk. Railslink_toalso escapes HTML attributes. No security concern here.app/views/links/show.html.erb -- The "Visit" button (
link_to "Visit", @link.url, target: "_blank", rel: "noopener noreferrer") was removed and replaced with the title linking directly to the URL. Two observations below in NITS.config/environments/development.rb -- Removed
palinks-dev.tail5b443a.ts.nethost entry. This was added by PR #46 and is now determined to be stale. Clean removal.BLOCKERS
None.
The changes are documentation, view-layer navigation, and config cleanup. There is no new functionality that would require new tests -- the link card navigation change is a one-line
link_totarget swap, and the model already validates URLs. The test gap (no view/system tests for link rendering) predates this PR.NITS
Missing
target="_blank"on external links -- Both_link.html.erb(line 13) andshow.html.erb(line 4) now link to external URLs withouttarget: "_blank". Clicking a link title navigates the user away from palinks entirely. The previous show page had a "Visit" button withtarget: "_blank", rel: "noopener noreferrer"for exactly this reason. Consider addingtarget: "_blank", rel: "noopener noreferrer"to preserve the "stay on palinks" behavior:This is non-blocking since the previous behavior (linking to the show page) also required a click-through, but it is a UX regression from the "Visit" button pattern.
Show page lost its dedicated "Visit" action -- The show page previously had both the title (plain text) and a prominent "Visit" button. Now the title IS the link and the "Visit" button is gone. The URL is still displayed as text below (
link-detail-url), but the explicit call-to-action button is lost. This may be intentional simplification. Non-blocking.IP address in docs --
178.156.129.142is hardcoded in the DNS table. This is fine for operational documentation, but item 5 in "Remaining Work" (delegate to Hetzner DNS for IaC) would address this long-term. No action needed now.SOP COMPLIANCE
One note: the Test Plan has an unchecked item ("Verify link cards navigate to external URLs in browser"). This is worth confirming before merge but is not a blocker for code review.
PROCESS OBSERVATIONS
palinks-devhost removal undoes work from PR #46 (merged one commit ago). This suggests the host entry was short-lived. Consider whether the host was needed at all, or if there is a naming convention issue to resolve upstream.VERDICT: APPROVED