205 Commits

Author SHA1 Message Date
35019f3da1
feat: add cmd/cullbak for culling backup directories 2026-04-05 19:10:52 -06:00
28dda029c6
wip: ipcohort: move atomics to gitdataset 2026-04-05 19:10:52 -06:00
1444d4c7d1
wip: feat: add net/gitdataset for data that updates via git 2026-04-05 19:10:52 -06:00
9d55cde644
f: net/formmailer 2026-04-05 19:10:52 -06:00
0cb0ee5d9b
wip: feat: add net/formmailer for web forms with bot protection 2026-04-05 19:10:51 -06:00
dfb3f2bbb3
f: ipcohort / blacklist 2026-04-05 19:10:51 -06:00
9ec6fe4a70
feat: add net/ipcohort (for blacklisting, whitelisting, etc) 2026-04-05 19:10:51 -06:00
44b6d65acf
feat: add net/gitshallow (for incremental updates to data repos) 2026-04-05 19:10:51 -06:00
e514203335
feat: add cmd/smtp-test for debugging smtp auth and delivery 2026-04-05 19:10:51 -06:00
d74698831b
wip: add more middleware examples 2026-04-05 19:10:51 -06:00
d5f0722fe1
feat(calendar): parse reminder durations 2026-04-05 19:10:51 -06:00
b9b225f483
wip(calendar): rework field access 2026-04-05 19:10:51 -06:00
02889a4af0
f: feat(calendar): calculate fixed and floating yearl and monthly events 2026-04-05 19:10:51 -06:00
0400880e76
f: feat(calendar): calculate fixed and floating yearl and monthly events 2026-04-05 19:10:51 -06:00
9b9ce5c9f8
wip: feat(calendar): calculate fixed and floating yearl and monthly events 2026-04-05 19:10:51 -06:00
063f892179
f(ai): add WithFormat to change format without changing Generate signature 2026-04-05 19:10:51 -06:00
37242d64ed
f(ai): add WithModel to change model on-the-fly 2026-04-05 19:10:51 -06:00
82b9f0c8f3
f(ai): fix interface / add type guard 2026-04-05 19:10:51 -06:00
7cd2624442
feat(ai): add Ollama and OpenAI helpers 2026-04-05 19:10:51 -06:00
a4f830deb6
feat: add cmd/smbtest for debugging smb connection issues 2026-04-05 19:10:51 -06:00
128723ac2a
ref(cmd/monorelease): fix tag and version output, start flagset 2026-04-05 19:10:51 -06:00
94d3f77ef5
WIP: feat(cmd/monorelease): fix versioning 2026-04-05 19:10:51 -06:00
efbc2c61b0
WIP: feat(cmd/monorelease): better table 2026-04-05 19:10:51 -06:00
6ecb04696a
WIP: feat(cmd/monorelease): show table 2026-04-05 19:10:51 -06:00
8c1301a0da
WIP: feat(cmd/monorelease): show bins 2026-04-05 19:10:51 -06:00
849f606bbc
WIP: feat: add cmd/monorelease for checking version info 2026-04-05 19:10:51 -06:00
4e33d6d169
feat: add tools/gitver for monorepo versioning 2026-04-05 19:10:51 -06:00
68a8a00f11
feat: add ./scripts/concat-for-context.sh to reduce total file count 2026-04-05 19:10:51 -06:00
7553221fae
doc: add PROMPT.md for Ai context 2026-04-05 19:10:51 -06:00
ccb504f62d
feat: add cmd/api-example as server boilerplate 2026-04-05 19:10:51 -06:00
7f46ef6102
f: cmd/cli-example 2026-04-05 19:10:51 -06:00
43c09a9ad1
feat: add cmd/cli-example for reference, and Ai context 2026-04-05 19:10:51 -06:00
4a9c331ef9
Fix INSERT INTO _migrations ordering in create and fixup
The create subcommand generated .up.sql files with INSERT INTO
_migrations as the FIRST statement, before the actual DDL. If the
DDL fails, the migration is incorrectly marked as applied. Move the
INSERT to be the LAST statement, matching how .down.sql already puts
DELETE FROM _migrations last.

Also fix the automatic fixup logic to append (not prepend) missing
INSERT statements to existing .up.sql files.

Fixes #86
cmd/sql-migrate/v2.1.3
2026-03-30 15:58:21 -06:00
87b666ffd3
chore(cmd/sql-migrate): add .goreleaser.yaml cmd/sql-migrate/v2.1.2 2026-03-28 17:16:40 -06:00
a4c4deabfa
chore(tools/monorel): re-init .goreleaser.yaml tools/monorel/v0.6.7 2026-03-28 17:15:38 -06:00
9d11500cd6
feat(monorel): separate Windows builds and full goamd64 v1-v4 matrix
Go 1.23+ changed Windows target naming so x86_64 builds now carry a
micro-architecture suffix (e.g. _v2).  Update the goreleaser YAML
generator and monorel's own .goreleaser.yaml to match:

- Remove windows from defaultGoos/almostAllGoos; emit a dedicated
  <name>-windows build entry per binary.  Windows is kept in a separate
  build because it does not support ARM v6/v7, so it cannot share the
  same goarch matrix as non-Windows builds.
- Add defaultWindowsGoarch [amd64, arm64] and almostAllWindowsGoarch
  [386, amd64, arm64] for the Windows-specific architecture lists.
- Promote defaultGoamd64 from [v1, v2] to [v1, v2, v3, v4] so the
  full amd64 micro-architecture matrix is always generated.
- Update the archive name_template to include
  {{ if .Amd64 }}_{{ .Amd64 }}{{ end }} after x86_64.
- Include both <name> and <name>-windows in archive ids.
- Regenerate tools/monorel/.goreleaser.yaml and
  cmd/sql-migrate/.goreleaser.yaml with the new format.
2026-03-28 17:15:33 -06:00
690cf90d67
chore(cmd/sql-migrate): add .goreleaser.yaml 2026-03-23 11:43:08 -06:00
1f61095873
feat(sql-migrate): add sync subcommand
Adds `sql-migrate sync` which outputs a shell script that refreshes
the local migrations.log from the DB by running _migrations.sql.
Uses `|| true` so a fresh DB with no _migrations table yields an
empty log (all migrations pending) rather than an error.

Usage:
  sql-migrate -d ./db/migrations sync | sh
  sql-migrate -d ./db/migrations up | sh
cmd/sql-migrate/v2.1.0
2026-03-23 11:42:23 -06:00
b50696f64d feat(sql-migrate): skip +-prefixed files in migrations directory (refs #68) cmd/sql-migrate/v2.0.4 2026-03-23 11:39:49 -06:00
3487702bf7 fix(sql-migrate): use 6-digit zero-padded number in init migration filename (refs #68) 2026-03-23 11:39:49 -06:00
4895012d67 fix(sql-migrate): use portable SQL in _migrations table (closes #37) 2026-03-23 11:39:49 -06:00
a854fef67e
test(auth/csvauth): regression test for Authenticate token deadlock
Guards against the v1.2.4 bug (fixed in c32acd5) where Authenticate
held a.mux via defer for its full duration, then called
loadAndVerifyToken which also tries to acquire a.mux — deadlock on
every token auth request.

TestAuthenticateTokenNoDeadlock exercises both the bare-token
("", token) and named-username ("api", token) forms with a 1s
timeout, so a regression fails fast rather than hanging the suite.
2026-03-23 00:26:16 -06:00
a4cb1e3bfd
doc: clarify how to create users and tokens
Signed-off-by: AJ ONeal <aj@therootcompany.com>
2026-03-19 21:17:57 -06:00
0d99234914
ref!(auth/jwt): variadic requiredScopes in NewAccessTokenValidator
Distinguishes the two validator constructors by signature:
- NewIDTokenValidator(iss, aud, azp []string) — allowlist semantics
- NewAccessTokenValidator(iss, aud []string, requiredScopes ...string) — requirement semantics

Variadic scopes read naturally at the call site:
  NewAccessTokenValidator(issuers, audiences, "openid", "profile")

Three-state semantics preserved:
  no args        → scope not checked
  []string{}...  → scope must be present (any value)
  "openid", ...  → scope must contain all listed values

Also removes the old gracePeriod parameter from both constructors
(was 0 at all call sites; set GracePeriod on the struct directly
if a non-default value is needed).

Adds TestCov_NewAccessTokenValidator_Scopes covering all three cases.
auth/jwt/v0.9.1
2026-03-17 08:00:45 -06:00
26bdc0a3db
ref!(auth/jwt): full modern rewrite auth/jwt/v0.9.0 2026-03-17 07:49:53 -06:00
117ed8cc9b
feat(auth/jwt): add jwk fetch and jwt verify auth/jwt/v0.6.5 2026-03-17 07:10:25 -06:00
ba674a673d
doc(tools/monorel): move usage summary to doc.go tools/monorel/v0.6.6 2026-03-08 17:21:55 -06:00
f2302d2f24
chore(monorel): add MPL-2.0 license header 2026-03-08 17:21:55 -06:00
eaa3636a35
feat(monorel): add version output with ldflags support 2026-03-08 17:21:55 -06:00
92e1ae9992
docs(monorel): add README tools/monorel/v0.6.5 2026-03-08 15:55:11 -06:00