packages feed

seihou-cli 0.11.0.0 → 0.11.0.1

raw patch · 3 files changed

+30/−18 lines, 3 filesdep ~seihou-corePVP ok

version bump matches the API change (PVP)

Dependency ranges changed: seihou-core

API changes (from Hackage documentation)

Files

help/modules.md view
@@ -85,7 +85,7 @@   seihou install <git-url>             Install modules, recipes, blueprints, or prompts from git   seihou run <module> --var k=v        Run a module to generate files   seihou update [target]                Update a recorded application and preserve user edits-  seihou remove <module>               Remove an applied module and its files+  seihou remove <module>               Remove a module; preserve project-owned seeds   seihou schema-upgrade ./my-module    Upgrade module.dhall to current schema  VERSIONING AND MIGRATIONS
seihou-cli.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.0 name: seihou-cli-version: 0.11.0.0+version: 0.11.0.1 synopsis: CLI for Seihou project scaffolding description:   Command-line interface for Seihou, a composable project scaffolding@@ -141,7 +141,7 @@     generic-lens >=2.2 && <3,     lens >=5.2 && <6,     process >=1.6 && <2,-    seihou-core ^>=0.11.0.0,+    seihou-core ^>=0.11.0.1,     streamly-core >=0.3 && <0.5,     temporary >=1.3 && <2,     text >=2.0 && <3,@@ -228,7 +228,7 @@     optparse-applicative >=0.18 && <1,     process >=1.6 && <2,     seihou-cli-internal,-    seihou-core ^>=0.11.0.0,+    seihou-core ^>=0.11.0.1,     temporary >=1.3 && <2,     text >=2.0 && <3,     time >=1.12 && <2,@@ -320,7 +320,7 @@     lens >=5.2 && <6,     process >=1.6 && <2,     seihou-cli-internal,-    seihou-core ^>=0.11.0.0,+    seihou-core ^>=0.11.0.1,     streamly-core >=0.3 && <0.5,     tasty >=1.4 && <2,     tasty-hspec >=1.2 && <2,
src-exe/Seihou/CLI/Commands.hs view
@@ -581,6 +581,8 @@                   pretty ("When re-running, Seihou uses the .seihou/manifest.json to detect" :: String),                   pretty ("new, modified, unchanged, and conflicting files. Conflicts are" :: String),                   pretty ("reported and block execution unless --force is used." :: String),+                  pretty ("Seeds are created once; edits and deletion survive even with --force." :: String),+                  pretty ("Lifecycle changes require seihou update <target>." :: String),                   line,                   pretty ("If an applied module's installed copy has advanced past the manifest's" :: String),                   pretty ("recorded version and ships migrations that move project files," :: String),@@ -613,7 +615,10 @@               vsep                 [ pretty ("Reconciles recorded module and recipe applications with newer source" :: String),                   pretty ("content. Saved inputs are reused, migrations are included automatically," :: String),-                  pretty ("user edits are three-way merged, and unchanged commands are skipped." :: String),+                  pretty ("managed edits are three-way merged, and unchanged commands are skipped." :: String),+                  pretty ("Managed-to-seed releases preserve project bytes and absence. Seeds" :: String),+                  pretty ("remain project-owned; seed-to-managed adoption requires explicit" :: String),+                  pretty ("keep/accept consent. Neither --force nor --json supplies that consent." :: String),                   line,                   pretty ("With no TARGET, updates every recorded application in manifest order." :: String),                   pretty ("Use --dry-run to preview or --json for a non-interactive machine result." :: String),@@ -634,15 +639,16 @@   info     (removeParser <**> helper)     ( fullDesc-        <> progDesc "Remove an applied module and delete its generated files"+        <> progDesc "Remove a module and retire its ownership"         <> footerDoc           ( Just $               vsep                 [ pretty ("Removes a module that was previously applied via 'seihou run' and" :: String),-                  pretty ("reverses its effects. Only modules with a 'removal' section" :: String),-                  pretty ("in their module.dhall can be removed." :: String),+                  pretty ("reverses its declared effects. Managed files require a removal" :: String),+                  pretty ("specification. Seed-only ownership can be retired without one; seed" :: String),+                  pretty ("files and their deliberate deletion are preserved, even with --force." :: String),                   line,-                  pretty ("Files that have been modified since generation are treated as" :: String),+                  pretty ("Managed files modified since generation are treated as" :: String),                   pretty ("conflicts. Use --force to delete them without prompting, or" :: String),                   pretty ("respond interactively to keep or delete each one." :: String),                   line,@@ -662,9 +668,9 @@   fmap Remove $     RemoveOpts       <$> argument moduleNameReader (metavar "MODULE" <> help "Module to remove")-      <*> optional (ApplicationId . T.pack <$> strOption (long "application" <> metavar "ID" <> help "Select a checkout-owning recorded application"))+      <*> optional (ApplicationId . T.pack <$> strOption (long "application" <> metavar "ID" <> help "Select the recorded application owning this instance"))       <*> switch (long "dry-run" <> help "Show removal plan without executing")-      <*> switch (long "force" <> help "Delete conflicted files without prompting")+      <*> switch (long "force" <> help "Delete conflicted managed files without prompting; preserve seeds")       <*> switch (long "verbose" <> short 'v' <> help "Show detailed progress messages")  varsInfo :: ParserInfo Command@@ -732,6 +738,7 @@               vsep                 [ pretty ("Reads .seihou/manifest.json in the current directory and displays" :: String),                   pretty ("applied modules, tracked files, and resolved variable values." :: String),+                  pretty ("Seed receipts are counted without reading project-owned content." :: String),                   pretty ("If no manifest exists, reports that and exits successfully." :: String),                   line,                   pretty ("Use --check-updates to also report which applied modules have newer" :: String),@@ -775,7 +782,8 @@               vsep                 [ pretty ("Compares tracked files in .seihou/manifest.json against the current" :: String),                   pretty ("disk state. Shows files that have been modified or deleted since the" :: String),-                  pretty ("last 'seihou run'. Does not load modules or resolve variables." :: String)+                  pretty ("last 'seihou run'. Does not load modules or resolve variables." :: String),+                  pretty ("Seed receipts are counted; their content and deletion are not compared." :: String)                 ]           )     )@@ -902,7 +910,7 @@         )       <*> switch (long "dry-run" <> help "Show plan without executing")       <*> switch (long "diff" <> help "Show diff against current disk state")-      <*> switch (long "force" <> help "Auto-resolve conflicts (accept new files)")+      <*> switch (long "force" <> help "Accept generated managed files on conflicts; preserve seeds")       <*> switch (long "no-commands" <> help "Skip shell command steps")       <*> optional (option (T.pack <$> str) (long "namespace" <> metavar "NS" <> help "Override namespace for config lookup"))       <*> optional (option (T.pack <$> str) (long "context" <> short 'c' <> metavar "CTX" <> help "Override context for config lookup"))@@ -933,10 +941,10 @@             varPair             (long "var" <> metavar "KEY=VALUE" <> help "Variable override (repeatable)")         )-      <*> switch (long "dry-run" <> help "Show the complete update plan without modifying managed state")+      <*> switch (long "dry-run" <> help "Show the complete update plan without modifying project state")       <*> switch (long "json" <> help "Emit one JSON document and disable prompts")       <*> switch (long "reconfigure" <> help "Ignore saved inputs and resolve them again")-      <*> switch (long "force" <> help "Use generated content for safe conflicts and retain edited orphans")+      <*> switch (long "force" <> help "Use generated content for managed conflicts; retain edited orphans; adoption still prompts")       <*> updateCommandFlags       <*> switch (long "commit" <> help "Commit successfully updated managed paths")       <*> optional (option (T.pack <$> str) (long "commit-message" <> metavar "MSG" <> help "Custom commit message (implies --commit)"))@@ -1404,7 +1412,9 @@       line,       pretty ("Conflict semantics mirror 'seihou remove': files whose disk hash differs" :: String),       pretty ("from the manifest are flagged. Without --force the engine refuses to" :: String),-      pretty ("overwrite them and exits non-zero. With --force, the migration proceeds." :: String),+      pretty ("overwrite them and exits non-zero. With --force, managed conflicts proceed." :: String),+      pretty ("Declarative migrations cannot mutate seed-owned paths, even with --force." :: String),+      pretty ("Shell commands are unsandboxed; authors must preserve project-owned seeds." :: String),       line,       pretty ("Examples:" :: String),       indent 2 $@@ -1959,6 +1969,8 @@                   pretty ("optionally applies the blueprint's baseModules as a starting scaffold," :: String),                   pretty ("renders the prompt template, and starts the configured" :: String),                   pretty ("provider." :: String),+                  pretty ("Baseline seeds are created once; edits and deletion survive --force." :: String),+                  pretty ("Lifecycle changes require seihou update <recorded-target>." :: String),                   line,                   pretty ("Variable resolution follows the same precedence as 'seihou run':" :: String),                   pretty ("CLI overrides > env > local config > namespace > context > global > defaults" :: String),@@ -1999,7 +2011,7 @@       <*> optional (option (T.pack <$> str) (long "namespace" <> metavar "NS" <> help "Override namespace for config lookup"))       <*> optional (option (T.pack <$> str) (long "context" <> short 'c' <> metavar "CTX" <> help "Override context for config lookup"))       <*> switch (long "verbose" <> short 'v' <> help "Show detailed progress messages")-      <*> switch (long "force" <> help "Auto-resolve baseline conflicts (accept new files)")+      <*> switch (long "force" <> help "Accept generated managed baseline files on conflicts; preserve seeds")       <*> switch (long "batch" <> help "Run a non-interactive CLI provider (automatic when stdin is not a terminal)")       <*> providerOption       <*> modelOption