refactor(init): move convenience exports behind clearer public submodule boundaries #549

Closed
opened 2026-04-29 18:40:24 +00:00 by barrettruth · 0 comments
barrettruth commented 2026-04-29 18:40:24 +00:00

Problem

lua/forge/init.lua is much smaller than before, but it still exports helpers whose logical home is elsewhere. That keeps the public API flatter and less intention-revealing than it should be.

Examples include formatting helpers and template-related helpers that are clearer behind explicit domain submodules than under the root forge table.

Scope

Define and implement clearer public ownership for root-exported helpers by sharpening submodule facades such as:

  • forge.pr
  • forge.issue
  • forge.repo
  • forge.format
  • other small public facades if needed

init.lua should remain a thin public assembly layer, with compatibility shims only where needed.

Non-goals

  • no broad filesystem move of unrelated modules
  • no internal-callsite cleanup mixed in unless required by the new facade shape
  • no intentional behavior change

Dependency

This should follow the internal direct-import cleanup so the public surface decision is not entangled with internal ownership cleanup.

## Problem `lua/forge/init.lua` is much smaller than before, but it still exports helpers whose logical home is elsewhere. That keeps the public API flatter and less intention-revealing than it should be. Examples include formatting helpers and template-related helpers that are clearer behind explicit domain submodules than under the root `forge` table. ## Scope Define and implement clearer public ownership for root-exported helpers by sharpening submodule facades such as: - `forge.pr` - `forge.issue` - `forge.repo` - `forge.format` - other small public facades if needed `init.lua` should remain a thin public assembly layer, with compatibility shims only where needed. ## Non-goals - no broad filesystem move of unrelated modules - no internal-callsite cleanup mixed in unless required by the new facade shape - no intentional behavior change ## Dependency This should follow the internal direct-import cleanup so the public surface decision is not entangled with internal ownership cleanup.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
barrettruth/forge.nvim#549
No description provided.