Packages

phoenix_kit

1.7.131
1.7.207 1.7.206 1.7.205 1.7.204 1.7.203 1.7.202 1.7.201 1.7.200 1.7.199 1.7.198 1.7.197 1.7.196 1.7.194 1.7.193 1.7.192 1.7.191 1.7.190 1.7.189 1.7.187 1.7.186 1.7.185 1.7.184 1.7.183 1.7.182 1.7.181 1.7.180 1.7.179 1.7.178 1.7.177 1.7.176 1.7.175 1.7.174 1.7.173 1.7.172 1.7.171 1.7.170 1.7.169 1.7.168 1.7.167 1.7.166 1.7.165 1.7.164 1.7.162 1.7.161 1.7.160 1.7.159 1.7.157 1.7.156 1.7.155 1.7.154 1.7.153 1.7.152 1.7.151 1.7.150 1.7.149 1.7.146 1.7.145 1.7.144 1.7.143 1.7.138 1.7.133 1.7.132 1.7.131 1.7.130 1.7.128 1.7.126 1.7.125 1.7.121 1.7.120 1.7.119 1.7.118 1.7.117 1.7.116 1.7.115 1.7.114 1.7.113 1.7.112 1.7.111 1.7.110 1.7.109 1.7.108 1.7.107 1.7.106 1.7.105 1.7.104 1.7.103 1.7.102 1.7.101 1.7.100 1.7.99 1.7.98 1.7.97 1.7.96 1.7.95 1.7.94 1.7.93 1.7.92 1.7.91 1.7.90 1.7.89 1.7.88 1.7.87 1.7.86 1.7.85 1.7.84 1.7.83 1.7.82 1.7.81 1.7.80 1.7.79 1.7.78 1.7.77 1.7.76 1.7.75 1.7.74 1.7.71 1.7.70 1.7.69 1.7.66 1.7.65 1.7.64 1.7.63 1.7.62 1.7.61 1.7.59 1.7.58 1.7.57 1.7.56 1.7.55 1.7.54 1.7.53 1.7.52 1.7.51 1.7.49 1.7.44 1.7.43 1.7.42 1.7.41 1.7.39 1.7.38 1.7.37 1.7.36 1.7.34 1.7.33 1.7.31 1.7.30 1.7.29 1.7.28 1.7.27 1.7.26 1.7.25 1.7.24 1.7.23 1.7.22 1.7.21 1.7.20 1.7.19 1.7.18 1.7.17 1.7.16 1.7.15 1.7.14 1.7.13 1.7.12 1.7.11 1.7.10 1.7.9 1.7.8 1.7.7 1.7.6 1.7.5 1.7.4 1.7.3 1.7.2 1.7.1 1.7.0 1.6.20 1.6.19 1.6.18 1.6.17 1.6.16 1.6.15 1.6.14 1.6.13 1.6.12 1.6.11 1.6.10 1.6.9 1.6.8 1.6.7 1.6.6 1.6.5 1.6.4 1.6.3 1.5.2 1.5.1 1.5.0 1.4.9 1.4.8 1.4.7 1.4.6 1.4.5 1.4.4 1.4.3 1.4.2 1.4.1 1.4.0 1.3.2 1.3.1 1.3.0 1.2.10 1.2.9 1.2.8 1.2.7 1.2.5 1.2.4 1.2.2 1.2.1 1.2.0 1.1.0 1.0.0

A foundation for building Elixir Phoenix apps — SaaS, social networks, ERP systems, marketplaces, and more

Current section

221 Versions

Jump to

Compare versions

12 files changed
+330 additions
-14 deletions
unknownCHANGELOG.md
File is too large to be displayed (100 KB limit).
  @@ -1,6 +1,6 @@
1 1 {<<"links">>,[{<<"GitHub">>,<<"https://github.com/BeamLabEU/phoenix_kit">>}]}.
2 2 {<<"name">>,<<"phoenix_kit">>}.
3 - {<<"version">>,<<"1.7.130">>}.
3 + {<<"version">>,<<"1.7.131">>}.
4 4 {<<"description">>,
5 5 <<65,32,102,111,117,110,100,97,116,105,111,110,32,102,111,114,32,98,117,105,
6 6 108,100,105,110,103,32,69,108,105,120,105,114,32,80,104,111,101,110,105,
  @@ -481,6 +481,7 @@
481 481 <<"lib/phoenix_kit/migrations/postgres/v34.ex">>,
482 482 <<"lib/phoenix_kit/migrations/postgres/v104.ex">>,
483 483 <<"lib/phoenix_kit/migrations/postgres/v44.ex">>,
484 + <<"lib/phoenix_kit/migrations/postgres/v129.ex">>,
484 485 <<"lib/phoenix_kit/migrations/postgres/v36.ex">>,
485 486 <<"lib/phoenix_kit/migrations/postgres/v69.ex">>,
486 487 <<"lib/phoenix_kit/migrations/postgres/v46.ex">>,
  @@ -539,6 +540,7 @@
539 540 <<"lib/phoenix_kit/migrations/postgres/v17.ex">>,
540 541 <<"lib/phoenix_kit/migrations/postgres/v87.ex">>,
541 542 <<"lib/phoenix_kit/migrations/postgres/v70.ex">>,
543 + <<"lib/phoenix_kit/migrations/postgres/v130.ex">>,
542 544 <<"lib/phoenix_kit/migrations/postgres/v71.ex">>,
543 545 <<"lib/phoenix_kit/migrations/postgres/v86.ex">>,
544 546 <<"lib/phoenix_kit/migrations/postgres/v01.ex">>,
  @@ -777,7 +779,7 @@
777 779 [{<<"name">>,<<"etcher">>},
778 780 {<<"app">>,<<"etcher">>},
779 781 {<<"optional">>,false},
780 - {<<"requirement">>,<<"~> 0.5.5">>},
782 + {<<"requirement">>,<<"~> 0.6.5">>},
781 783 {<<"repository">>,<<"hexpm">>}],
782 784 [{<<"name">>,<<"aws_regions">>},
783 785 {<<"app">>,<<"aws_regions">>},
  @@ -280,14 +280,21 @@ defmodule PhoenixKit.Modules.AI.TranslateWorker do
280 280 @doc false
281 281 @spec retryable?(term()) :: boolean()
282 282 def retryable?({:ai_error, :request_timeout}), do: true
283 - # PhoenixKit.AI's HTTP client surfaces a request timeout as `:timeout`
284 - # ({:error, :timeout} → {:ai_error, :timeout} here). A timeout is transient
285 - # — retry rather than discard, so a one-off slow/hung provider call re-runs.
283 + # `PhoenixKitAI.Completion` normalizes a transport timeout to `:request_timeout`
284 + # (above) before it reaches this worker. The bare `:timeout` below is a
285 + # defensive fallback for any provider/path that surfaces the raw atom instead —
286 + # a timeout is transient, so retry rather than discard.
286 287 def retryable?({:ai_error, :timeout}), do: true
287 288 def retryable?({:ai_error, :rate_limited}), do: true
288 289 def retryable?({:ai_error, {:connection_error, _}}), do: true
289 290 def retryable?({:ai_error, {:exit, _}}), do: true
290 291
292 + # Defense-in-depth: the built-in OpenRouter client maps HTTP 429 to the
293 + # `:rate_limited` atom (handled as `{:snooze, 30}` in `do_translate/1`, before
294 + # this is consulted). A custom/future provider that instead surfaces a bare
295 + # `{:api_error, 429}` should still retry — 429 is the canonical retry-after.
296 + def retryable?({:ai_error, {:api_error, 429}}), do: true
297 +
291 298 def retryable?({:ai_error, {:api_error, status}})
292 299 when status in [500, 502, 503, 504, 522, 524, 529],
293 300 do: true
  @@ -23,7 +23,7 @@ defmodule PhoenixKit.Annotations.Annotation do
23 23 @primary_key {:uuid, UUIDv7, autogenerate: true}
24 24 @foreign_key_type UUIDv7
25 25
26 - @kinds ~w(rectangle circle polygon freehand callout text dimension line)
26 + @kinds ~w(rectangle circle polygon freehand callout text dimension line marker)
27 27
28 28 @type t :: %__MODULE__{
29 29 uuid: UUIDv7.t() | nil,
  @@ -529,7 +529,21 @@ defmodule PhoenixKit.Migrations.Postgres do
529 529 - Replaces unique index with partial index (slug-mode only, WHERE slug IS NOT NULL)
530 530 - Adds unique index on `(group_uuid, post_date, post_time)` for timestamp-mode posts
531 531
532 - ### V128 - Assignee on projects (and sub-projects) ⚡ LATEST
532 + ### V130 - Marker annotation kind ⚡ LATEST
533 + - Widens `phoenix_kit_annotations_kind_check` to allow `'marker'` (the Etcher
534 + highlighter tool). Markers persist via `annotations-changed` but skip the
535 + composer (no title/comment)without this the insert is rejected and the
536 + marker silently fails to save. Idempotent DROP-then-ADD per prefixed table.
537 +
538 + ### V129 - Add missing subscription_type_uuid column
539 + - Adds `subscription_type_uuid` (UUID, FK to `phoenix_kit_subscription_types(uuid)`
540 + `ON DELETE SET NULL`) + a partial index to `phoenix_kit_subscriptions`. The
541 + column the billing `Subscription` schema uses was only ever *renamed* in V65
542 + (`plan_uuid` → `subscription_type_uuid`), never added, and `plan_uuid` never
543 + existedso on a fresh build the column was absent and subscription
544 + inserts/queries raised `undefined_column`. Idempotent.
545 +
546 + ### V128 - Assignee on projects (and sub-projects)
533 547 - Adds `assigned_team_uuid` / `assigned_department_uuid` / `assigned_person_uuid`
534 548 (FKs to the staff tables, `ON DELETE SET NULL`) to `phoenix_kit_projects`,
535 549 with a `num_nonnulls(...) <= 1` single-assignee CHECK + a partial index per
  @@ -1107,7 +1121,7 @@ defmodule PhoenixKit.Migrations.Postgres do
1107 1121 use Ecto.Migration
1108 1122
1109 1123 @initial_version 1
1110 - @current_version 128
1124 + @current_version 130
1111 1125 @default_prefix "public"
1112 1126
1113 1127 @doc false
Loading more files…