Skip to content

Config refactoring - #10

Merged
ddon merged 2 commits into
BeamLabEU:devfrom
construct-d:dev
Sep 3, 2025
Merged

Config refactoring#10
ddon merged 2 commits into
BeamLabEU:devfrom
construct-d:dev

Conversation

@construct-d

Copy link
Copy Markdown
Contributor

No description provided.

@ddon
ddon merged commit 9b33b0f into BeamLabEU:devSep 3, 2025
ddon pushed a commit that referenced this pull request Nov 12, 2025
…ty-011CV2TD7xEtrKhPmWXNWKbY
Fix timing attack vulnerability in magic link authentication
mdon added a commit to mdon/phoenix_kit that referenced this pull request May 5, 2026
…follow-up)
Closes NITPICK BeamLabEU#10 from CLAUDE_REVIEW.md on PR BeamLabEU#511. The lenient `:ok`
return on the missing-state branch of verify_oauth_state/2 dated from
an older flow that didn't always save state before redirect; that flow
is gone (every connect_oauth event now calls save_oauth_state/2 first
at integration_form.ex:227). A missing state at callback time now
implies either someone bypassed connect_oauth or the row was mutated
between authorize and callback — both are CSRF-relevant. Returns
{:error, :state_mismatch} on that branch with an updated comment
explaining why.
No tests exercised the lenient branch (verified via grep). The
{:error, :state_mismatch} return shape is already handled by the
caller's existing mismatch case.
FOLLOW_UP.md updated to reflect the closure (moves from Skipped to
Fixed Batch 1; NITPICK BeamLabEU#6 stays Open pending Max's decision).
ddon pushed a commit that referenced this pull request May 12, 2026
Code (PR #537 review items addressed):
- #1 BUG-MEDIUM: wrap `Annotations.delete/1` in `Repo.transaction/1` so
comment-cascade + annotation-delete are atomic. Extracted into
`delete_in_transaction/1` to keep the body flat (credo depth).
- #2 BUG-MEDIUM: sweep stale `resource_type = "annotation"` claims
across 3 moduledocs (annotation.ex, v115.ex, etcher_adapter.ex). The
implementation anchors comments to the file with
`metadata.annotation_uuid` — docs now match reality.
- #5 BUG-LOW: narrow `delete_linked_comments` rescue to expected
exception classes ([DBConnection.OwnershipError, Postgrex.Error,
ArgumentError]) so logic bugs surface instead of being swallowed.
- #11 IMPROVEMENT-LOW: drop `normalize/1` — `Ecto.Changeset.cast/3`
handles both atom- and string-keyed maps natively; the helper added
silent failure-mode risk on typo'd keys.
- #12 IMPROVEMENT-LOW: drop in-repo `Code.ensure_loaded?(PhoenixKit.Annotations)`
guard in MediaBrowser — Annotations is a core module, can't be
missing.
- #19 NITPICK: drop `PhoenixKit.Modules.Storage` from
AnnotationComposer's `@compile no_warn_undefined` (it's core, not
optional — rename should fail loudly).
- #20 NITPICK: simplify `AnnotationComposerPosition.destroyed` guard.
- #21 NITPICK: fix misleading "Etcher's bootstrap uses `||` to preserve
pre-existing slots" comment — PhoenixKit's JS owns the slots.
- #8 IMPROVEMENT-MEDIUM: gettext-wrap ~17 user-facing strings in
AnnotationComposer (flash messages + heex literals + ARIA labels).
Credo / dialyzer:
- Alias `PhoenixKit.Annotations`, `PhoenixKit.Modules.Storage`,
`PhoenixKit.Modules.Storage.EtcherAdapter`, `Storage.File` so the
six "nested modules could be aliased" findings clear.
- Convert `first_attachment_thumbnail/1`'s single-clause `with` to
`case` (credo readability).
- Add PhoenixKitComments-targeted entries to .dialyzer_ignore.exs for
the annotations context + composer (optional sibling package,
guarded at runtime).
- mix.lock picks up `etcher 0.1.0` via deps.get.
mix precommit: compile → format → credo --strict → dialyzer all clean.
Deferred to original author (Alex): #3 (race), #4 (upload rollback),
#6 (authz), #7 (schema-as-source), #9 (geometry validation), #10
(configurable component id), #13/#14 (locale-aware date + traverse_errors),
plus cosmetics #15-18, #22, #23. Disposition table in CLAUDE_REVIEW.md
updated separately.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
ddon pushed a commit that referenced this pull request Jul 14, 2026
Ships the core migration that creates the phoenix_kit_crm_party_roles table
backing phoenix_kit_crm's supplier/client party roles (merged in
phoenix_kit_crm PR #10). Without it the CRM party-roles feature crashes at
runtime — the release-blocking finding from that PR's post-merge review.
Polymorphic role edge (a CRM company or contact holds supplier/client/partner
roles); no FK on roleable_uuid (polymorphic target); unique on
(roleable_type, roleable_uuid, role). Idempotent; rebased onto current main
(V147). Full migration-chain integration test passes (V03->V148).
ddon added a commit that referenced this pull request Jul 14, 2026
V148: phoenix_kit_crm_party_roles table (unblocks phoenix_kit_crm #10)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@construct-d@ddon