Packages

phoenix_kit

1.7.196
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

22 files changed
+191 additions
-13 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.194">>}.
3 + {<<"version">>,<<"1.7.196">>}.
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,
  @@ -593,6 +593,7 @@
593 593 <<"lib/phoenix_kit/migrations/postgres/v97.ex">>,
594 594 <<"lib/phoenix_kit/migrations/postgres/v60.ex">>,
595 595 <<"lib/phoenix_kit/migrations/postgres/v120.ex">>,
596 + <<"lib/phoenix_kit/migrations/postgres/v150.ex">>,
596 597 <<"lib/phoenix_kit/migrations/postgres/v10.ex">>,
597 598 <<"lib/phoenix_kit/migrations/postgres/v118.ex">>,
598 599 <<"lib/phoenix_kit/migrations/postgres/v147.ex">>,
  @@ -348,7 +348,10 @@ defmodule PhoenixKit.Integrations.Providers do
348 348 options: nil
349 349 }
350 350 ],
351 - capabilities: [:ai_completions, :ai_embeddings],
351 + # `:image_generation` — OpenRouter's catalog includes real image-gen
352 + # models (Gemini image, GPT-image-1, etc.) at the standard
353 + # OpenAI-compatible `/images/generations` path.
354 + capabilities: [:ai_completions, :ai_embeddings, :image_generation],
352 355 instructions: [
353 356 %{
354 357 title: gettext("Create an OpenRouter account"),
  @@ -529,7 +532,12 @@ defmodule PhoenixKit.Integrations.Providers do
529 532 # `:realtime_voice` gates the xAI-only streaming TTS panel in
530 533 # phoenix_kit_ai's Playground (Xai.Realtime, WebSocket-based — not
531 534 # reachable through the shared REST completions path).
532 - capabilities: [:ai_completions, :realtime_voice],
535 + # `:image_generation` — xAI's `POST /v1/images/generations` returns
536 + # the same `data: [{url | b64_json}]` envelope OpenAI's does,
537 + # despite `grok-imagine-image[-quality]` being invisible to the
538 + # shared `/models`-based picker's `:image_gen` filter without the
539 + # xAI-specific no-modality fallback that filter already has.
540 + capabilities: [:ai_completions, :realtime_voice, :image_generation],
533 541 instructions: [
534 542 %{
535 543 title: gettext("Create an xAI account"),
  @@ -529,7 +529,13 @@ 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 - ### V149 - Catalogue item-supplier sourcing info + CRM xref ⚡ LATEST
532 + ### V150 - Readable device name on session tokens ⚡ LATEST
533 + - Adds nullable `browser` + `os` to `phoenix_kit_users_tokens`, parsed
534 + from the User-Agent at login, so the Active Sessions list and admin
535 + all-sessions view show a device name for every session without the
536 + known-devices/geo machinery (which stays gated behind new-login alerts).
537 +
538 + ### V149 - Catalogue item-supplier sourcing info + CRM xref
533 539 - Adds `phoenix_kit_cat_item_supplier_info` (per-item, per-supplier SKU /
534 540 unit cost / currency / lead time / MOQ; `supplier_uuid` soft ref to a
535 541 CRM party or local `cat_supplier`) and a soft `crm_company_uuid` xref on
  @@ -1303,7 +1309,7 @@ defmodule PhoenixKit.Migrations.Postgres do
1303 1309 alias PhoenixKit.Migrations.Postgres.Helpers
1304 1310
1305 1311 @initial_version 1
1306 - @current_version 149
1312 + @current_version 150
1307 1313 @default_prefix "public"
1308 1314
1309 1315 # First version whose SQL references uuid_generate_v7(). Chains that
  @@ -0,0 +1,46 @@
1 + defmodule PhoenixKit.Migrations.Postgres.V150 do
2 + @moduledoc """
3 + V150: Readable device name on session tokens.
4 +
5 + Adds nullable `browser` and `os` columns to `phoenix_kit_users_tokens`,
6 + parsed from the User-Agent at login (V43 already stores the hashed UA for
7 + fingerprint matching — the raw string, and thus the readable name, was
8 + never kept). Storing the parsed name lets the user's Active Sessions list
9 + and the admin all-sessions view show "Safari on iOS" for every session,
10 + independent of the `new_login_alert_enabled` setting (which gates the
11 + richer, more sensitive geo-location via known-devices).
12 +
13 + Existing sessions predate the columns and show as "Unknown device" until
14 + their next sign-in — the raw UA was never stored, so there's nothing to
15 + backfill.
16 + """
17 +
18 + use Ecto.Migration
19 +
20 + def up(opts) do
21 + prefix = Map.get(opts, :prefix, "public")
22 + p = prefix_str(prefix)
23 +
24 + alter table(:phoenix_kit_users_tokens, prefix: prefix) do
25 + add_if_not_exists(:browser, :string, size: 100)
26 + add_if_not_exists(:os, :string, size: 100)
27 + end
28 +
29 + execute("COMMENT ON TABLE #{p}phoenix_kit IS '150'")
30 + end
31 +
32 + def down(opts) do
33 + prefix = Map.get(opts, :prefix, "public")
34 + p = prefix_str(prefix)
35 +
36 + alter table(:phoenix_kit_users_tokens, prefix: prefix) do
37 + remove_if_exists(:browser, :string)
38 + remove_if_exists(:os, :string)
39 + end
40 +
41 + execute("COMMENT ON TABLE #{p}phoenix_kit IS '149'")
42 + end
43 +
44 + defp prefix_str("public"), do: "public."
45 + defp prefix_str(prefix), do: "#{prefix}."
46 + end
Loading more files…