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
Current section
221 Versions
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 | + existed — so 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…