c8b32cc1a1
Merge pull request 'chore: Go 1.26 modernization' ( #17 ) from chore/go-1.26-modernization into main
2026-02-24 18:01:41 +00:00
Claude
2b09a26507
chore: use slices.Contains for linear search
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 15:54:39 +00:00
Claude
eb186027a0
chore: use range-over-integer (Go 1.22+)
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 15:53:09 +00:00
Claude
d60e87dac8
chore: use min()/max() builtins (Go 1.21+)
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 15:52:06 +00:00
Claude
ff530d9898
chore: sort.Slice → slices.SortFunc
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 15:45:48 +00:00
Claude
13ed6d3f76
chore: use %w for error wrapping
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 15:39:19 +00:00
Claude
d570c87efc
chore: fmt.Errorf(static) → errors.New
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 15:38:38 +00:00
Claude
09c25b9975
chore: replace interface{} with any (Go 1.18+ alias)
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 15:38:00 +00:00
Claude
674e3c3c9a
docs: archive cli-sdk-expansion plan, remove duplicate job-runner
...
Move completed cli-sdk-expansion plan to docs/plans/completed/ with
summary. Remove duplicate core-ide-job-runner plans (canonical copy
lives in core/cli).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 13:51:21 +00:00
Snider
3587d0ce27
test: add coverage for lab, session, sigil, repos, plugin packages
...
Brings 5 packages from low/zero coverage to solid test suites:
- pkg/lab: 0% → 100% (Store pub/sub, Config env loading)
- pkg/session: 0% → 89.9% (transcript parser, HTML renderer, search, video)
- pkg/io/sigil: 43.8% → 98.5% (XOR/ShuffleMask obfuscators, ChaCha20-Poly1305)
- pkg/repos: 18.9% → 81.9% (registry, topo sort, directory scan, org detection)
- pkg/plugin: 54.8% → 67.1% (installer error paths, Remove, registry Load/Save)
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-24 13:29:15 +00:00
Snider
5a92bd652b
chore: bump forge.lthn.ai dep versions to latest tags
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-23 06:49:46 +00:00
Snider
85493ae779
chore: add Go repo norms (badges, contributing, lint, taskfile, editorconfig)
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-23 06:45:52 +00:00
Snider
e959a9aaaf
chore: refresh go.sum after upstream tag updates
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-23 06:35:19 +00:00
Snider
3f162db925
docs: archive Q/K Bone Orientation plan as completed
...
7 tasks across 4 repos (go-inference, go-mlx, go-ml, LEM).
+917 lines, all tests passing, pushed to forge.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-23 00:39:09 +00:00
Snider
12ff432d6b
docs: archive completed plans with summaries
...
Move completed plan documents to docs/plans/completed/ with
concise completion summaries alongside the originals.
Archived: MCP integration, Go API design/plan, CLI meta-package design.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 23:46:13 +00:00
Claude
b5032bea32
chore: refresh go.sum after upstream tag updates
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 23:36:25 +00:00
Snider
97a561c809
feat(qa): restore docblock check via go-devops import
...
Now that go-devops imports core/cli (not core/go/pkg/cli),
the circular dependency is resolved. Restore the docblock
coverage check using qa.CheckDocblockCoverage().
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-22 23:31:46 +00:00
Snider
9323eeb1fa
chore: remove tracked ELF binary, add to .gitignore
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 23:10:27 +00:00
Snider
57ad74d4e2
refactor: delete pkg/cli, migrate imports to core/cli
...
pkg/cli now lives in forge.lthn.ai/core/cli as its own module.
All cmd/gocmd imports updated. qa docblock check stubbed pending
go-devops circular dependency resolution.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 23:08:03 +00:00
Claude
1734acaae0
chore: migrate Snider deps from github.com to forge.lthn.ai
...
Update Borg dependency path from github.com/Snider/Borg to
forge.lthn.ai/Snider/Borg across go.mod and imports.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 21:40:25 +00:00
Snider
aca479de75
chore: bump go directive to 1.26.0
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-22 20:33:48 +00:00
Snider
7f2470b135
chore: pin forge deps to v0.0.1 tags for Go 1.26 compat
...
Go 1.26 rejects non-semver version strings (like 'main') in go.mod.
Tags v0.0.1 now exist on all forge repos — workspace still overrides
for local development.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-22 20:15:06 +00:00
Snider
dcd705ff46
chore: use workspace-resolved versions, drop replace directives
...
Forge module versions now use main branch resolution via ~/Code/go.work
workspace. Removes local replace directives — the central go.work handles
all cross-repo resolution during development.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-22 19:49:36 +00:00
Snider
138927baa5
docs: update plans to reflect WithCommands lifecycle pattern
...
- Rewrite cli-meta-package-design to document current state:
WithCommands(), completed migrations, no init()/blank imports
- Add completion status note to MCP integration plan
- Update pkg-batch2-analysis RegisterCommands → WithCommands
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 22:13:22 +00:00
Snider
2a90ae65b7
refactor(cli): register commands through Core framework lifecycle
...
Replace the RegisterCommands/attachRegisteredCommands side-channel with
WithCommands(), which wraps command registration functions as framework
services. Commands now participate in the Core lifecycle via OnStartup,
receiving the root cobra.Command through Core.App.
Main() accepts variadic framework.Option so binaries pass their commands
explicitly — no init(), no blank imports, no global state.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 22:06:40 +00:00
Snider
8e7fb0e5a3
feat: absorb Go tooling commands from CLI
...
cmd/gocmd/ provides: fmt, test, fuzz, qa, cov, tools wrappers.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 21:45:52 +00:00
Snider
d091fa6202
chore: resolve go-crypt from forge, remove local replace
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 19:11:03 +00:00
Snider
58ca902320
feat(cli): add Viewport for scrollable content (logs, diffs, docs)
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 18:13:37 +00:00
Snider
a0660e5802
feat(cli): add TextInput with placeholder, masking, validation
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 18:13:07 +00:00
Snider
fcdccdbe87
feat(cli): add InteractiveList with keyboard navigation and terminal fallback
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 18:12:37 +00:00
Snider
c2418a2737
feat(cli): stub Form, FilePicker, Tabs with simple fallbacks
...
Interfaces defined for future charmbracelet/huh upgrade.
Current implementations use sequential prompts.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 18:10:33 +00:00
Snider
175ad1e361
feat(cli): add ProgressBar with Increment, Set, SetMessage, Done
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 18:10:01 +00:00
Snider
50afecea6d
feat(cli): add Spinner with async handle (Update, Done, Fail)
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 18:09:40 +00:00
Snider
92a2260e21
feat(cli): add RunTUI escape hatch with Model/Msg/Cmd/KeyMsg types
...
Wraps bubbletea v1 behind our own interface so domain packages
never import charmbracelet directly.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 18:08:35 +00:00
Snider
e3fdbe9809
docs: add CLI SDK expansion implementation plan (Phase 0)
...
9-task plan for adding charmbracelet TUI primitives to go/pkg/cli:
Spinner, ProgressBar, RunTUI, List, TextInput, Viewport, and stubs
for Form/FilePicker/Tabs. All charm deps stay inside pkg/cli —
domain packages import only forge.lthn.ai/core/go/pkg/cli.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 18:02:19 +00:00
Snider
e66115f036
docs: CLI meta-package restructure design
...
Domain repos own their commands via self-registration. cli/ becomes
a thin assembly repo shipping variant binaries (core, core-ci,
core-mlx, core-ops). go/pkg/cli wraps cobra + charmbracelet as the
single import for all CLI concerns.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 17:55:53 +00:00
Snider
2aff7a3503
docs: add go-forge design and implementation plan
...
Full-coverage Forgejo API client (450 endpoints, 229 types).
Generic Resource[T,C,U] for 91% CRUD + codegen from swagger.v1.json.
20-task plan across 6 waves.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 15:18:27 +00:00
Snider
d7e5215618
docs: add core.help implementation plan
...
5 tasks: Hugo scaffold, KB scanning, --target hugo sync,
pipeline testing, BunnyCDN deployment config.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 02:13:14 +00:00
Snider
1e8a4131db
docs: add core.help website design document
...
Hugo + Docsy static site aggregating docs from 39 repos.
Pipeline: core docs sync → Hugo build → BunnyCDN deploy.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 02:08:40 +00:00
Snider
df011ee42b
feat: support .core/repos.yaml and explicit repo paths
...
- FindRegistry() now checks .core/repos.yaml alongside repos.yaml
- Repo.Path field accepts explicit path from YAML for repos outside base_path
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 01:58:08 +00:00
Snider
2d355f9223
docs: mark go-api Phase 3 complete in design doc
...
Phase 3 adds OpenAPI 3.1 runtime spec generation, MCP-to-REST bridge,
SDK codegen for 11 languages, and CLI commands. 176 tests in go-api.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 01:33:24 +00:00
Snider
db0c0adb65
docs: mark go-api Phase 2 complete — all 4 waves done
...
Wave 4 adds WithPprof, WithExpvar, WithTracing (OpenTelemetry).
143 tests passing across 21 With*() options. Phase 2 roadmap fully delivered.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 00:26:42 +00:00
Snider
ce12778561
docs: mark go-api Wave 3 complete in design doc
...
Wave 3 adds WithHTTPSign, WithSSE, WithLocation, WithI18n, WithGraphQL.
128 tests passing, 5 commits on forge.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-21 00:15:02 +00:00
Snider
44122f9ca6
docs: mark go-api Wave 2 complete in design doc
...
Wave 2 adds WithBrotli, WithCache, WithSessions, WithAuthz.
102 tests passing, 4 commits on forge.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-20 23:52:18 +00:00
Snider
b2e046f4c5
docs(go-api): mark Wave 1 complete — secure, slog, timeout, gzip, static
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-20 23:25:20 +00:00
Snider
3135352b2f
docs: add Authentik + Traefik integration plan
...
10 tasks covering DevOps deployment (enable Authentik on de2,
add to prod playbook, configure OIDC app) and go-api middleware
(header extraction, JWT validation, RequireAuth/RequireGroup helpers).
~220 LOC, 16 new tests.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-20 16:30:52 +00:00
Snider
2bae1148bb
docs(go-api): add Authentik integration and auth layers to design
...
Adds forward auth (Traefik) and direct OIDC validation modes,
auth layers diagram, deployment notes, and coreos/go-oidc dependency.
Authentik added to Wave 1 plugin roadmap.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-20 16:23:02 +00:00
Snider
cffd9d3929
docs(go-api): add GraphQL to Phase 2 roadmap
...
gqlgen (99designs) endpoint at /graphql with playground.
ResolverGroup interface for subsystem opt-in alongside RouteGroup.
Four-protocol access: REST + GraphQL + WebSocket + MCP.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-20 16:18:49 +00:00
Snider
cb0408db1d
docs(go-api): add Phase 2 gin plugin roadmap
...
19 gin-contrib plugins mapped to With*() options across 4 waves:
security, performance, content/streaming, and observability.
Phase 1 marked as implemented with test counts.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-20 16:16:42 +00:00
Snider
e7f8ecb078
docs: add go-api implementation plan
...
10 sequential TDD tasks covering response envelope, RouteGroup interface,
Engine with options, middleware (auth/CORS/request-id), WebSocket
integration, Swagger UI, docs, Forge repo creation, and first
subsystem integration in go-ml.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-20 15:40:36 +00:00