チェンジログ
何が新しいの?
プラットフォームのすべての改良 それが出荷される
· kamo-shared-library
ドメインは、それをタイプすることによってではなく、それを証明することによって要求されます
3つのルールは、一緒に感心するだけ。 **ドメインの主張を主張しない** FQDNは世界的にもユニークなものだったので、 "acme.com" をロックアウトする最初の組織 - を含む 実際に acme.com を所有している会社, 全く方法がなかった. 何も証明していない人は、誰かにドメインを否定できない できます。 組織全体で行を複製することは法的です。 1 以内の繰り返し 組織はまだ拒否されます。それは意味のない間違いだから 競争の主張よりも. **検証済みのドメイン ルートのみ。** FindByDomain は、現在オーナーシップが必要です verified トップレベルの行で、ホストは制御を証明した組織に行きます そのDNSは、誰が最初に入力したかではなく、 初めてのペアリングがなければ ルールはオープンドアになります: いくつかの銀行.comを主張し、待って. エイリアスが継承する 親の検証 — TXT チャレンジは apex でのみ発行され、 これは explicit の親の参加を d.parent.ownershipVerified と見なさない、 Hibernate がクエリ全体で内部の結合として放射し、すべてのものをドロップする apex 行。 **検証は、ドメインを他のすべての人に取ります。** setOwnershipVerified revokes 同じFQDNが保持されているので、ほとんどのホルダーが1つあります。 時間。 これは礼儀ではありません:2つの検証された行はルーテーブルであり、 解決者は、データベースが最初に返したトラフィックを渡します。 ログイン 昨年ドメインを検証した組織であり、それ以来、それが崩壊する 誰が所有しているかのメールを受信し続ける。 敗者DNS認証 それらにもはやポイントしないホスト名を記述するので、それで行きます。 重複を許可すると、1行と1行を想定したすべてのルックアップを破棄します。 これらはクラッシュではなく、 hijack: ドメイン名にマッチした upsertDomain で、 その後、呼び出し組織に見つけたものを再割り当てるので、 upsert 別の組織のドメインを離れてから静かに取られた。 お問い合わせ 組織・スコープ 残り — FindByDomain, updateSslInfoByDomain, transferDomainOwnership — シングル ホールダーを通過します。 検証された行とそれ以外の場合は、最低IDを取るので、ドメインの所有者は、 2つのリクエスト間の変更 投げたオプションの結合として左 ******************** は、スキーマが現在許可しているデータをデータに保存します.
· SecurityService
パーメンバー型ホーム画面のデフォルトを運ぶ
POST/PUT /security-models と PUT /master-model を読み込み、 /applied-modelの設定で、シェルは「/」でメンバーの土地がどこにいるかを決めることができます。 別の applicationHomeScreenDefaults は 3 つ以上の位置ではなく呼び出します サービスメソッドの引数は、すでに15分かかります。 従順なキーは左にあります リセットではなく、セキュリティモデルを知らずに投稿するクライアント このフィールドは、ランチャーパッドのモデルのメンバー全員をサイレントに渡すことができません 戻る - またはそれを取り除く。 /applied-modelは、同様に、途中で正規化します。 お問い合わせ CHILD ORG OWNERSHIPは、ホーム画面を保持しているため、この前に書かれた行のnull列 出荷、または認識されていないもの、起動パッドとして読み込みます。 クライアント独自の フォールバックは同じ値なので、2つは不一致できません.
· kamo-shared-library
会員種別が「/」に分類されるセキュリティモデル
ChildOrgSecurityModelの3列 — DEFAULT MEMBER HOME SCREEN, メニュー DEFAULT ORG OWNER HOME SCREEN 株式会社ドリテック 各保有者 HOME SCREEN DEFAULT または REQUIRES CHILD ORG OWNERSHIP; 2 番目の値 そのメンバーが自分の組織を所有するまでのランチャーパッド。 3つのメンバータイプが3つの異なるジョブであるため、3つではなく3つ: 同じモデルのルーチンは、自分の作成にプッシュされたプレーンメンバーを望んでいます チームメンバーとオーナーが直進する間、組織。 スプリット ミラーAPPLIES TO MEMBERS / TEAM MEMBERS / OWNERS VARCHARは、元の列ではなく、保存された列ごとに元のリラベル 3つ目のオプションは、どこにでも差し込みますが、終了です。 setHomeScreenDefaults は setAllowRootSubdomains の形状のターゲティングセッターです。 updateModel の 3 つ以上の位置パラメータではなく、既に取得 15日。 Null は "この 1 だけを残す" を意味します。 他の人を静かにリセットすることはできません。 normalizeHomeScreenDefault は、オープンに失敗し、テストされます: 正確な文字列のみ 代替がメンバーのホーム画面を取るので、要件をオンにします 事故で、チポやストールのクライアントは、決してそれを行うことができない必要があります.
· InitializerService
The three per-member-type home-screen columns on a security model
CHILD ORG SECURITY MODELS が DEFAULT MEMBER HOME SCREEN を買収 DEFAULT TEAM MEMBER HOME SCREEN および DEFAULT ORG OWNER HOME SCREEN SCREEN SCREEN SCREEN SCREEN SCREEN SCREEN SCREEN SCREEN SCREEN 東京 各保有者 HOME SCREEN デファルト (ランチャーパッド) または REQUIRES CHILD ORG OWNERSHIP、 そのメンバーが自分の組織を所有するまで、それを保持します。 DEFAULT句は、ADD COLUMNではなく、ロードベアリング部分です。 列は NULL ではなく、プロパティは空ではないので、デフォルトはすべてのバックフィルです 同じステートメントの既存のセキュリティモデル — は意図せず 従順な値、他の方法のデフォルトは起動パッドを離れた取るので すべてのモデルのメンバーから、このランの瞬間。 注文(0) 通常の理由: これらのフィールドを運ぶ共有ライブラリのエンティティティは、 すべてのJavaサービスで読み込まれるので、以前のランナーは「コロン」で死ぬことはありません 最近注文されたマイグレーションの前に存在します。 SET NOT NULL ステートメントは、Hibernate の ddl-auto が作成されたケースを修復します。 最初に、エンティティティティティティティティのカラムの定義から、制約なしの列。 それぞれは、SET NOT NULL が拒否されるため、独自のヌルクリアの UPDATE によって優先されます。 任意の行がまだnullを保持している間 — 注文するテストピン.
· kamo-internal
あなたが使用しているもの以外にも、スキャンが見つかったものの1つのリスト
/network/createのブランドセクションは、同じ形状の3つのバンドになります。 あなたのウェブサイトが左にあるもの、あなたの組織が正しいものを使用しています。 ロゴ。 同じ候補にTWOレール、各スロットにランクされている 別々 — 4つのロゴを持つ会社が8つ登場し、 質問は間違った方法の丸みを置いていました。 会員は、レールを見ないし、尋ねる 「これらが私の完全なロゴである」; 彼らは自分のマークを見て、「1を 全部です。 そのため、サイトのロゴの1つのリストです。各行は両方を運ぶ 宛先 — フルに設定, シンプルに設定 — と各行はベクトルまたはイメージをマーク, 見ることができないロゴファイルについての1つの事だから そして、単純なスロットが気にしているのが1つです。 マーク、フィルタリングなし: 非表示 シンプルなスロットから、会社のロゴを正確にサイトに隠しました スキャンは最もよく機能しました。 アップ/ダウンの矢印でリストの手順は、そこにどのくらいのことを言う ですから「ここにあるロゴ」は、見てみると答えます。 背景は裏返されます。 12ステップのウィザードは、サインイン壁紙を収集し、 1ページのリライトを落としました。スキャンはすでに会社のヒーローを見つけました それを置くためにどこでもimageryそして提供して下さい。 同じバンド:スキャンされたimagery 左、アップロードおよび右側の実行順序は、下水路の選択と スタンプを押すと何か。 色は提供されるのではなく採用されます。 完成したスキャンは、見つかったペアを設定します。 そして、ピッカーは住んでいます。 ガードはリスク全体なので、純粋であり、 scanAutoApply.ts でテスト: スキャン結果 1 回、色を超えて クリエーターは、異なるサイトの後にスキャンするなど、タッチしました。 詳細はこちら: - 「誰がこのためにいるか」は、そこにいるまで、含まれて先頭にあふれています お問い合わせ 型の前に空のカードをレンダーしていた コンプライアンスのすべての質問を解決するモデルのために、そして再び選ばれました。 - ライブプレビューは、FULLロゴ、上記のコンテンツエリアの左上に表示されます サインイン画面が置くテキストをモックします。 上記のバーはナビゲーションです 棒とマークを表示 — と 2 つのスロットは簡単に混合するので、プレビュー クリエーターは、彼らが満たされたものを伝えることができる唯一の場所です。 - 「コンパクトロゴ」は、どこからでも読み込まれる「シンプルロゴ」であり、ここで取得 ウィザードを始め 内部識別子は単独で残されます。 - 「ショートネーム」は「組織名(ショートバージョン)」です。 - ウェブサイトは、不在を離れるのではなく、あなたが1を必要としないことを普通に言う メッセージを運ぶ赤い小惑星の.
· kamo-internal
パーメンバー型デフォルトホーム画面
セキュリティモデルでは、その3つのメンバータイプの土地のそれぞれが "/" を開きます。 2つの値:HOME SCREEN DEFAULTは、誰もが常に持っている打ち上げパッドです と、REQUIRES CHILD ORG OWNERSHIP そのメンバーが所有するまでそれを見守る 自分の組織 — "/" は /network/create ではなく、 組織ネットワークリンクは、トップバーを1つまで残します。 3つの列ではなく、APPLIES TO MEMBERS/ TEAM MEMBERS/ OWNERSは、同じモデルがルーチンに押し込まれたプレーンメンバーを望んでいるので、 チームメンバーやオーナーが仕事をしている間、自分の組織を作る。 ルールは純粋で、app/lib/homeScreenGate.ts でテストされます。どのカラムが適用されるか、 組織を所有する数(組織の所有者) 内部は 1 つを作成していません。 — 同じ exclusion FirstOrgCta を作る)。 失敗する すべてのステップで開きます。 厳密な文字列だけがゲートを閉じます。null列、 認識されていない値、失敗した応用モデルフェッチと到達不能なmy-networks 「いいえ」として読み込まれるのは、誰かのホーム画面を背負って、 答えないリクエストは、やりたいことではありません。 1つのコンテキストは、両方のホックではなく、navsとページの上にマウント 場所: NavTop および Launchpad はすべてのページの負荷の同じ答えを必要とし、 2つのコピーは2つのラウンドトリップを費やし、1つの長さを解約することができます。 起動パッドは意図的にそれで待つことはありません - すべてのメンバーの家を保持 /applied-model fetch の背後にあるページで、簡単なフラッシュが便利です。 間違った取引.
· kamo-internal
無料で作成 Orgが3ステップウィジェットになる
CreateOrgForm 全体に埋め込まれたウィジェット — 5 つのセクション、ブランド プレビュー、読みやすさメーター - 約1,400pxのペイン内にある 756px. HomeGridの行はminmax(単位、自動)であり、`auto`は安全弁です 天井ではなく、コンテンツを縮小できないペインは行を成長させる: 「ウィジェット」は、ページの長いフォームとしてレンダリングされます。 いつも通りに説明した高速パスです。 3つのステップ — タイプ、名前、 アドレス、レビュー — 実際に作成と送信をブロックするフィールドだけを尋ねる toWizardFormData が作成者に対して常に送信したのと同じです。 これらの手順を省略しました。 ブランディング、アプリ、コンプライアンスは、次いで終了します。 新しい org's Getting 開始ウィザード. /network/createは変更されず、まだ要求します 目の前に広がる。 タイプステップは、カードグリッドではなく、SEARCHです。 ウィジェットの密なレイアウトでグリッド 1行につき1枚のカードなので、30分分分分分分分分分分分分分分分が18百分 カードのピクセル - ストレッチ、再び、プラットフォームが成長すると悪化します。 検索すると、ステップは4種類または100種類で固定高さになります。 詳細はこちら: - WidgetFrameは、オプションのmaxHeightPxをとり、このウィジェットはそれ自身を渡す paneHeightPx(halfRows) なので、パインは、メンバーがそれを与え、スクロールするサイズです 成長するよりもむしろ。 オプションで、他のウィジェットは動作を変更しません。 WidgetComponentProps は、可能にするために半分の利益を得る。 - エイリアスのプレビューは、カモCRM.com/o/<alias>を両方の面で表示 つまり、文字列自体をビルドするのではなく、ひとつのヘルパーを介して。 ディスプレー のみ — ルーティングはホスト名で、 /o/ ルートがないため、workspaceUrl と /api/org/current は非接触で非接触であり、起動はまだ土地を造られます 内部。<ホスト>。 カスタムドメインはそのまま表示されます。 - /branch-types/creatable fetch とその解析は 1 つの共有モジュールに移動し、 両方のタイプピッカーがそれを必要とし、それはまた親の運びますのでホック、 サブドメインブランチコンテキスト。 ライブ重複を解決する: OrgTypePicker ビルド BranchTypeData は 2 回と 2 つのコピーは既に配列の coercion に漂流しました。 - ワークスペースUrl は CreateOrgForm から動くので、ウィジェットはワークスペースをビルドできます。 ページの全体をインポートせずにリンクします。 - "フルページを開く" ジャンプの次の/リンク。 check-client-navigation 見逃せない regex が 1 つのラインの <a および href を必要とするので未加工アンカー。 ガード、tsc、および4,039テストグリーン;辞書キーは最初に押しました.
· kamo-internal
設定ランディングページで開始カードを取得する
/settings/wizard にリンクする必須グループカードを追加します。 makeCard idiomは、その兄弟によって使用される。 既に押された辞書のキー メニュー
· kamo-internal
レポートフォームでAIにSENDを切り替える
「何を報告しているのか」の列で右揃え、ウィンドウ毎回オフ 開いている — クラスターの資格情報を保持しているマシンでセッションを開始します。 最後の位置を記憶したスイッチは、最終的に誰も何かを送信しないだろう 送信する。 手でそれを提出する レポートをまっすぐに: 進行中, 送信した演算子で読みます。 MANAGE SYSTEM BUGS の所有者にのみ起動し、サーバーから解決する PlatformRightsContext — checkRight は TENANT 権利の背骨であり、 応答できません。 すぐにプラットフォームのために、すべてのプラットフォームからスイッチを隠していると尋ねる プラットフォーム管理者。 それはどちらかの方法でクロームです: SecurityServiceのエンドポイントは座っています クラスの@RequirePlatformRight で、403 で他の誰かを拒否します。 バグ ID と NOTHING ELSE をリクエストします。 フォームにはプロンプトボックスはありません。 モデルピッカーとスクリーンショットピッカーなしなので、サーバーはそれらすべてを選択します。 ここにペイロードを組み立てると、ブラウザにそれらの選択肢を置くことになります。 権利を保持しているメンバーは、それらを編集することができます。 ハンドオフは、アップロードの後に実行されます。 走る瞬間に取り付けられたものは何でもあり、早めに開始されたセッションは 半報告書から作業 それでもそのステータスを適用するディスパッチ レポートは、ボタンが再び押下され、レポーターがボタンを押下した時点で進行中です まだ新しいものを編集するだけかもしれない: ウィンドウは、最後に書いたものを記憶し、 冗長リザーブをスキップするか、保存されたレポートが保存されたレポートが保存できたことを報告する 保存されず、実際に失敗したことを思い出させない.
· SecurityService
レポートフォームからAIに送信
MANAGE SYSTEM BUGSの所有者は、レポートバグのAIスイッチにSENDを取得します ウィンドウ、およびそれを手で提出して、レポートをセッションにせずに 間のトリアージ ダイアログ。 新たなエンドポイントは、NO BODY をとりません。 フォームにプロンプトがない 箱、モデル ピッカー無しおよびスクリーンショット ピッカー無し、従って指示、モデル、 努力、スクリーンショット、ステータスは、ここで選択したすべてのものです。 ゲートを過ぎた発信者は、ダイアログが何も表現できません。 スイッチは、表面よりも厳密に狭くなります。 それから行く dispatch() が変更されていないので、スロットル、前の監査行 ネットワークコール、スクリーンショットの所有権チェックは同じものではなく、秒です ステップで保つためにコピーします。 クラスレベルのガード ダイアログ すでに座っています。 コンソールは他の誰からもスイッチを隠しますが、 クローム: 権利のないメンバーによってフラグで提出されたレポート 403 をここで拒否し、セッションに達しません。 「すでに閲覧済み」は、パーメンバーの事実であり、全員に書き込むことはできません。 PlatformRightsResolverは「このメンバーがそれを保持する」と答えます。 そのため、ディスパッチを尋ねたオペレータに読み取りが記録されます。 ネットワークコールは、後からではなく(2分かかりますし、失敗することができます)、 IN PROGRESSは、他のマネージャーのニューバッジをすべて取り消すものです.
· kamo-internal
/settings/wizardで設定ウィザードを開始
ニンが組織のエディタにウィザードのステップを移動させる 会員は既に登録済みです。 各ステップは、ライブorgからその値をシードします データ(useOrgContext、GET /api/security/org/{id}、/api/security/features、または useAppliedModel を適宜使用し、既に所有しているエンドポイントに保存します。 「保存&続行」の設定;「このステップをスキップ」のレコードの進捗をなく 執筆. - orgSettingsSave.ts: ペイロード型 (StepSavePayloads) と a 一般的なsaveStep(key, orgId, value) ディスパッチは、`never`/`any` なしでタイプされます。 - orgDetails.ts: 薄いテーマのorgフィールドの共有フェッチ 組織クラスは(連絡先、ラベル、説明など)持ちません。 - wizardSteps.tsx / StepRail.tsx / page.tsx:ステップテーブル、常に- クリック可能なレールとシェル(BrandScanProvider、保存中にインサート)。 - IdentityStep ドロップ メニュー コントロール — 設定 -> ドメイン/行動&ラベリング領域 今. - 背景ステップは、既存の+新しいスロットを一緒に追跡します。 /backgrounds/commit は、すべての注文を置換し、新しいだけコミットする 既存のスライドショーを削除しました。 - コンプライアンスWizard.ts: ワイドな getComplianceStepUi のパラメーター 実際に読み込まれる5つのフィールドなので、 コンプライアンス・ステップはそれを呼び出します useAppliedModel の設定は、 create-time BranchTypeData の代わりに行います。 - api.ts:ラベルのセーバーによって再使用のためのエクスポートされたbuildCustomLabels.
· kamo-internal
/copilotヒーローとスキャンコードの両方がカメレオンマークを運ぶ
最後の2つのサイトでしたが、新しいsrcは変更できませんでした。 作品は、ラスターが不透明の正方形だった透明な127x102シルエットです。 コピロットヘロ。 `objectFit: カバー` は平方の両側からスノウをクロップします タイルなので、マークは、インセットラッパー内部に `contain`ed —`fill` は、 パッディングボックスなので、インセットはプレート自体に住んでいません。 プレートも得ます 半透明の塗りつぶし: アイコンになるのに使用され、埋め込まれていないものは境界を取り除き、 ドロップシャドウは何も裏切っていません。 QrFrame, 両方のコード. 2つの修正: ・マークは白で、QRコードは白で印刷されます。 出荷したように コードから打ち抜かれた穴に座る目に見えないロゴ。 `brightness(0)` に <image> を黒に動かし、ノックアウトを透明に残します。 それは持っています CSS であること — imageSettings は <image href> をレンダーし、外部の SVG を参照 その方法は、色を継承しない独立した文書です。 - 48x39、48x48ではありません。 その上でqrcode.reactハードコード保存AspectRatio="none" 要素なので、ボックスはアスペクト比と正方形の1はマークをスカッシュしました。 ザ・オブ・ザ・ より狭い箱はまた 3.5% の下のコードの ~2.9% への excavated の穴を縮めます レベルMが失く、まだスキャンできるものの前後にありました。 これらの正確なプロップでQRCodeSVGをレンダリングし、それをラスタライズすることによって検証:マーク 中央にはっきり読んで、発掘はファインダーパターンをクリアしません。 どちらのコードもインストールするだけでなく、共有されたホワイトプレートに1つの共有フレームです。 そして、QrFrame独自のドキュメントは、電話サイトを個別にスタイリングするのに抵抗すると言う.
· kamo-internal
レールと自宅のchameleon SVG用のモバイルアプリマークをスワップ
ラスター。 KamoMobileAppのアートワークをベクトルとして描画できるようになりました。 マークが何であるかであるため、SVGとしてチェックイン:シングルホワイトシルエットと 透明なノックアウト。 最初に2次元精度でsvgoを通過し、 このトレースのジオメトリをロスレス化し、675 KBから106 KB(~23 KB)までのファイルを取り込む 一度圧縮されたワイヤーの上に) — 輸出は、すべての1つに6つの小数を運ぶ 〜5kトレースセグメント。 火星から運ばれない2つのこと: - ボックス。 viewBox は 127x102 なので、正方形の幅/高さのスカッシュです。 それぞれ 3つのコールサイトは、グリフの光学高さを保つために大きさで分類される127:102箱を得ます パッド入りのPNGがいたところ。 -次/画像の最適化。 "unoptimized` を 3 つすべてに: / next/image は再サンプルできません ベクトルなので、リクエストなしでは、同じバイトを戻すラウンドトリップです。 CopilotHeroとQRセンターは、自分のサイズで icon.png を使用しています.
· kamo-internal
My Free Orgウィジェットを作成する
同じ CreateOrgForm を /network/create ページに渡します。 ウィジェットのレイアウト、ホームランチャーパッドウィジェット(org.create)としてゲート CREATE FREE ORG WIDGET リードエグジビションジャパン 最後登録:立派な招待状です。 タイムクリティカルなペインではありません。 ゲートなし — 組織を創り出すことはない アプリと5つの権利は、決定全体です。 また、CREATE FREE ORG WIDGETと4つのポリシーの子供たちを映し出す ハンド維持されたTSの権利階層(205 -> 210エッジ)、 widgetPolicy.test.ts の 5 右形状のアサーションは、すべての 登録ウィジェット.
· KlusterServices
VSコードセッションタブでAIに送信し、コンソールウィンドウではなく
後方セッションと手VSコードのセッションIDが始まります。 ターミナルウィンドウでCLIを実行する代わりに: 代わりに URI にプロンプトを渡すことはトラップです: 拡張子呼び出し setInputText は送信されず、戻りを合成することは不可能です。 KDEのロッカーはXのつかみを保持します。 ALREADY RUNNINGのセッションは残らない ハンドオフは、機械で誰とでも動作させるものです。 推論よりもむしろ測定された4つのこと: - cwd は realpath(workspaceFolders[0]) でなければならず、この使用した一般的な親でない お問い合わせ パネルのホストは最初のフォルダにルーティングし、リストだけ そこで見つかるセッションなので、他のセッションは見えない ウィンドウで開くことを意味し、ハンドオフは空のタブを開きます。 その他 リポジトリは --add-dir ではなく --add-dir によって到達可能になります。 - --add-dir は VARIADIC であり、プロンプトを食べていました、従ってセッションはと上がりました 空の作曲家。 ディレクトリリストは最初に、その後のフラグで閉じます。 - 起動はハンドル、またはマークされた "(アイドル — 起動するプロンプトを送信)" を印刷できません。 どちらでも、メッセージが到着したことがないため、両方が止まり、その両方が オペレータの前で開くよりも空のタブとして。 - パネルは背景の代理店を所有し、終了する1つは居住者を、そう保ちます 作業が終わったら、時計師が止まります。 タブを再開してから再開します セッションは通常、会話全体がそのままです。 確認はセッション ID によってアドレスを付けられたトランスクリプトで、削除されます。 報告されたJSON-escaped-needle検索は、障害としてディスパッチを配信しました.
· kamo-internal
/network/create は 1 ページです。 12 ステップは /settings/wizard に移動します
CreateOrgForm.tsx は、タスク 7/8 から構築された 2 つのレイアウト(ページ/ウィジェット)を持つ 1 つのコンポーネントです。 CreateOrgFieldsモデル、フィールドグループ、OrgBrandPreview page.tsx は、 周囲のフル幅のシェル。 古いウィザードの9つのステップファイルとステップ/ステップアイコンの移動 app/settings/wizard に、Task 12 が開始された構成に再配線する ウィザード; BranchTypeStep, MemberInfoStep, ReviewStep, StepNavigation, CancelModal と sessionStorage-backed useWizardForm hook は一ページ作成が持っているので、直立的に退職されます ドラフトを保存するために、左右に何も移動しない手順はありません。 ../ui/*、../brandscan/*、.././types で示された移動されたファイルのすべての相対的な輸入、 .././validation, ././appSelection, ./././complianceWizard または ./././hooks/* が書き込まれる コンポーネント/ui とコンポーネント/ブランドが滞在するので、絶対 @/app/network/create/... フォーム 置く(フィールドコンポーネントを存続させる)と、ディレクトリを1つだけ解決する ステップの古い場所。 hooks/useWizardForm.ts は削除されるのではなくトリムされます: tests /submitWizard.test.ts はインポート newWizardデータから緑と未編集を維持しなければならないので、そのファイルは1つのエクスポートを保持します (そして、必要な INITIAL DATA) は、もはや呼び出し元を持たないすべてのものをドロップします。 フィールドコンポーネントを配線する前にレビューで見つかった2つの修正: - CreateOrgForm の onChange はレンダー全体で参照的に安定しています(requestScan は読み込みます) useCallback の依存関係の代わりに ref — OrgTypePicker と IdentityFields 各リスト onChange useEffect の依存配列で、すべての完成したブランドに、Scan 独自のアイデンティティの変更をリクエスト スキャンは、実際の入力変更だけでなく、すべてのスキャンに両方の効果を再燃させました。 - DropZoneは、実際の無効なプロップ(tabIndex=-1、ガードされたハンドラ、そのファイル上で無効にされたネイティブを取ります インプットボタンとフォールバックボタン)は、祖先のポインタを指す代わりに、 キーボードの活発化のために何もしません;BrandFieldsのロゴ スロットによってワイヤーで縛られるのでロックされた形態 キーボードユーザーもロックアウトします。 /network/create?fresh=1 は、FirstOrgCta.tsx とネットワーク/page.tsx で /network/create がプレーンになりました。 1ページのフォームは、リザーブではなく、すべてのマウントの初期作成OrgFields() から始まります。 sessionStorage ドラフトなので、パラムは何も残っていない.
· kamo-internal
再使用可能なフィールドグループとライブブランドプレビュー
BranchTypeStep、BasicsStep、LogoStep、ColorStep、 AppsStepとAgeRestrictions5つの制御フィールドコンポーネントにステップ (OrgTypePicker、IdentityFields、BrandFields、AppSwitchs、CompenseFields) /network/create-as-one-page と Launchpad ウィジェットの両方がレンダリングできます。 後ろのステップフラミング(ヘッダー、スキップボタン、ナビゲーション)を残します。 追加する OrgBrandPreview、previewPalette() によって駆動されるライブブランドミニチュア、 Pattern-checks は、スタイルに達する前に、任意の作成者権限のある色をチェックします。 属性とプラットフォームのCSS変数に戻ります。 IdentityFields と OrgTypePicker は、ミドルタスクの調整を行いました。 ************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************ 並行: OrgTypePicker は親 org の subdomain-branch をキャプチャします。 ブランチタイプのコンテクスト、IdentityFields は webAliasPossible() ではなく、Web-alias パスを提供 正式に利用できるだけ。 メニュー プラン.
· kamo-internal
注目の境界線で設定ウィザードボタンを始める
起動パッドのエントリ ポイントをセットアップウィザードに追加します。: 所有者のみ、権利ゲート "Getting Started Configuration Wizard (x/9 手順が完了)" を読み込み、 最初に私のウィジェットの前の丸薬の列で. org-owner + 右 + まで null をレンダー loaded-summary + not-finished gate が解決するので、所有者に決してフラッシュしません 組織は既にセットアップを終えました。 境界線は連続的な円錐勾配を運びます 組織自身の --color-primary の呼吸箱影と sheen は、 好ましい感情の下で(視覚的に2トン滞在中)アニメーションを停止します.
· kamo-internal
スタートウィザードのステップモデルとクライアント
クライアント側ステップモデル(app/lib/orgSetupWizard.ts)、薄いAPIを追加 GET/PUT/DELETE /api/security/org-setup-wizard のクライアント (app/lib/orgSetupWizardApi.ts) と、OrgSetupWizard は、 wizardページと Launchpad ボタンは両方ビルドします。 純粋な論理の生命 app/lib ではなく、app/settings/** ではなく、 app/hooks/** は、vitest の allowlist には含まれていません。 isWizardFinished は、サーバーの完了によってのみ決定されます。 完了した手順をカウントすることで、起動パッドボタンが残っているので、 ステップリストが成長した後でも既に終了した組織。 normalizeSummary は未知の入力および低下のステップ キーの合計です クライアントは認識しません。 useOrgSetupWizard は `loaded` を別々に保ちます `summary` なので、 Launchpad ボタンは実際の回答まで何もレンダリングしません 知られている.
· SecurityService
開始ウィザードの背後にある進捗サービスとエンドポイントを追加します
Org-scoped GET/PUT/DELETEアンダー/api/security/org-setup-wizard nineのトラック 組織の立ち上げ手順が完了しました。 読み込みは行を作成しず、 completeAt は、最後の優れたステップ ランドが一度保存されたラッチ セットです。 後から成長するステップとステップリストの両方を補完するので、完成した組織の 起動パッドボタンは再登場しません.
· kamo-internal
選択した会話に最大化されたペインズーム
最大のビューで会話を切り替えると、8pxのnudgeと180msのフェードでした。 パンが単に塗り直していたように見えるものは何もありません。 今のところ どこかで受け取るように読みます: 着信の会話は、サイズの下で6%から出てくる パンに短い上昇と土地で, 初期の不透明なので、それはしばらくの間読みやすい それでも移動し、その旅行のほとんどをフロントに費やし、その後、落ち着きます。 形状は、z-stack ではなく、選択されている。 ナビゲーター行のクリック 新しいウィンドウに焦点を合わせるので、着信は外出先を覆い、決定する 両方の半分: - 着信は、ペインに成長するかもしれませんが、それを過ぎません。 最大のシェルは 固定要素ビューポートのサイズとドキュメントのピン数 オーバーフローなので、ビューポートの外に1つの塗料をオーバーシュートする到着。 - 外出はフルサイズとフェードのみを保持しています。 着信がまだある間 パンと外出を覆わないスケールは、背後にある唯一のことです なので、MAXIMIZEDウィンドウの周りのバックドロップの縁を開けるのも縮小します。 深みのないフリッカー。 着信が不透明だからフェードフリーです それが消える前に長く。 そのカバレッジルールは、味がないので、それはテストです:外出のフェードは必須です 着信者を追い抜く。 2つのピンは、それらまで見えない制約 ブレーク — 到着は過去1をスケールアップし、スワップフェーズ内で終了します。 役割を退職し、そうでなければ、それを中退させるだろう. 減らされた動きは保ちます 明白なcrossfade。 誤って小さめの事を修正:180msの段階で200ms使用される到着、 決済対象20msをクリアしたので、.
· kamo-internal
3列ウィジェットとウィジェットの最小サイズ
ワイドンウィジェットWidth へ 1 | 2 | 3 | 'full' とウィジェットの定義を聞かせて minWidth/minHeight を宣言します。 widgetMinSize(定義) が変換する PaneSize フロア (または何も宣言されていない場合 null) に、両方を与える 一つだけ宣言しても床を軸にします。 独自のデフォルトサイズの床。 レジストリからすべての消費者がサイズを基準にフロアするスレッド またはペインのサイズを変更します: useHomePanes' sizeOf/setSize、PaneChromeのドラッグ& キーボードリサイズパス(全3つのクランプコール)、SortableCard、ホーム ページのソート可能なグリッドウィジェットレンダーサイトと設定ページレイアウト プレビュー。 ページのピン留めウィジェットバンド。 tsx は目的に触れない 常に widgetDefaultSize でレンダーし、保存されていない 好み、従って宣言されたデフォルトは既に自身の床を満たします。 レジストリ内のウィジェットは、まだ幅3または最小を宣言しません。 後工程 これにより、ボキャブラリーと機械のワイヤが広がります.
· kamo-internal
手でトレースされたロゴをタッチし、変換されたファイルをダウンロード
Raster-to-vectorコンバーターとシンプルなロゴスロットの4つのこと。 **ラスターオプションのスクロールバーは3倍幅です。** 4pxはターゲットが難しい と、ルールは webkit だけだったので、Firefox はスタイルバーが全くなかった。 scrollbarWidth/scrollbarColor は、同じインテントを持ちます。 **透明な背景を持つソースは、単独で残っています。** 使用される点眼器 透明ピクセルのカラーを忠実に返す: キャンバスストアは、アルファをあらかじめ置き換えるので、 それらのすべてが(0, 0, 0)として読み戻り、いずれかを選ぶと、パイプラインの背景 ブラックだった。 その後、ロゴの暗い部分を行き、削除しました。 今すぐ透明性をクリック ピックの代わりにそう言う。 マッチングサーバー側の修正はベクターサービスです。 **杖とブラシ、それぞれを追加または削除することができます。** 自動除去は2つの事間違いを得ます 頻繁に arguing が必要: 囲まれた部分に漏れる背景 背景の色を分かち合い、色を分かち合うデザイン。 ザ・オブ・ザ・ wand は 1 回のクリックで全体的に連続した領域をとります。ブラシはドラッグオーバーするものは何でもかかります。 すべての操作は、ORIGINALの作物に対して解決します。 つまり、 領域のアルファが残らない領域をゼロにすることで、すべての領域で「+」が可能に しかし、元の色はまだあります。 また、オプスを再生できるので、 修正を破棄せずに再実行後の設定をnudging。 塗料の編集 ローカル 即時のフィードバック; 解決された結果だけがワイヤーを交差させ、アルファだけ 数百バイトの8ビットグレースケールPNGとしてマスク。 **シンプルなロゴの横にあるダウンロードボタン**なので、メンバーはSVGをコンバータに保つことができます 生成 — 多くの場合、自分のロゴのベクトルコピーだけを持っている、それ以外の場合のみ到達可能 閲覧できないバケットから。 拡張子はバイトのスニッフィングから来る、ない 保存された名前: そのスロットは、すべてのアップロードを固定ロゴに書き込みます。 svg キーはタイプに関係なく、 theme.kamocrm.com は .svg の .svg の名前からこの前にロゴを設定する PNG バイトを提供しています コンバーターが存在します。 クロスオリジンだから、リンクするのではなく、空白にフェッチ `<a download>` は無視され、保存する代わりにファイルを開きます.
· kamo-internal
1ページフィールドセットとドロップされたステップを置き換えるデフォルト
CreateOrgFields は、新しい単一ページ /network/create フォームが実際に尋ねるものです。 for: ブランチタイプ、名前、エイリアス、アプリスイッチ、オプションの便利な機能 フィールド。 toWizardFormData は十二段階のウィザードが使われるすべてのものをすべて満たします 収集するが、このページは、それぞれをスキップする正確にを使用して、表示されません 送信するために使用されるステップ(bindPhone/bindEmail true、空白の連絡先/ラベル、透かし FULL、ブランド・ソース・カンパニー)は、ここで作成したorgは、 必要なものだけに満たされた人によって古い方法を作りました。 withBranchType は、選択したオプションで parentAliasId を指すこともできます。 モデルは実際に提供します(許可されるとき最初にROOT、他のモデルは最初の習慣を提供します エイリアス) — 12ステップのウィザードは、これはBasicsStep が作成者に影響を与える 火を燃やさないし、これに等しいことなく、OrgReadinessブロック このページのフィールドに永遠には、唯一のブランチタイプについて尋ねることはありません 親オプションはROOTです.
· kamo-shared-library
My Free Orgウィジェットの権利とWizardの進捗状況の作成
RoleRightType 288-292(CREATE FREE ORG WIDGETとその4 ADDED/OPTIONAL/を追加) CREATE CHILD ORG (131) を空にし、必要なポリシーの子供)。 追加する OrgSetupWizardStep、はじめる設定を取り戻す9つのステップ列 メニュー org setup wizard progress タスク 2 の表 また、RoleRightHierarchyTest のピン留めされた分類の形状 (278/205/35/38 -> 283/210/36/37): CREATE CHILD ORG はスタンドアローンの根本で、最初の ここで子は、rootsWithChildren Bucket に移動し、このファイルの一致 各ウィジェットの出荷をそのテストで記録する独自の確立された慣習.
· kamo-internal
パーペイン最小サイズ、読み取り時やドラッグ時に適用されます
スレッドオプション `min?: PaneSize | null` を lockPaneSize で、2 resize-deltaヘルパー、および2つの優先読み取り/書き込み機能 純粋な進水パッドのペイン モデル。 後方互換性: 既存のすべての発信者 引数を省略し、クランプPaneSizeが落ちるので、今日の行動を保ちます グリッド全体に戻る ******************** 床 時 なし 最低1枚のパンは供給されます。 フロアは、requirePaneSizeの StoreD値だけでなく、 ドラッグハンドラなので、パインの前に記録されたメンバーの好みは 最低(またはそれが上げられた前に)は、読み上げ時に引き戻されます.
· SecurityService
再検証にリアルタイム予算をかける
エンドポイントは、いかなる種類の制限もありません。 *** レジスタ画面 再送信ボタンを有効にする前に要求されたのはここを読んでいなかった — ボディはJSONの3つの分野およびサーバーで捜す何も要求しませんです ペイロード — そのため、コントロールはボタンをゲートし、リクエストではなく、スクリプトをゲート このURLで直接投稿することは、すでに無制限でした。 VerificationResendRateLimiter は、サーバー自身の予算に置き換えます。 シングルSET NXで撮影した60秒のクールダウンで、レースのレプリカはどちらもできません アドレスごとの5/hourおよび15/day、および公共IPごとの20/hour勝ちます。 チェックイン org とユーザのルックアップとサブミットされたアドレスにキーをつけるので、 プローブは、アカウントが存在しているかどうかの予算を費やし、429は存在しない エンドポイントの注意を払っているアカウント存在の不透明になる "これが アカウントが存在します。 IP ウィンドウは、非公開アドレスでスキップされます: 途方もない すべての登録者のための1つの共有キーに崩壊します。 Redis-backed 理由 このサービスは、レプリカを実行し、Redisの不足で開く失敗します。 Retry-After と retryAfterSeconds で 429 の rejection が返されるので、 画面は、自分で推測するよりも、この時計に対してカウントダウンすることができます.
· InitializerService
開始ウィザードのorg setup wizard progressを作成
· kamo-internal
Org の年は任意で、unset は absent としてレンダリングします
必要なサーバーに何もない — カラムは無効です。 parser は null に空の値をマップし、patchOrganization はキーのみを適用します。 PUT ボディの言及なので "yearEst": null は非審美的です。 唯一の門は このウィザードの ValidBasics は、1 年までの基本的なステップ全体をブロックしました。 ピックアップ 実際の顧客の豊富な回答はありません(新しいLLC、分割スパン 中年半ば、単に知らない人)、だから門は彼らに教えた 発明する。 フィールドはアスタリスクフリーラベルを保持し、同じを獲得します 「オプション」 FieldHint は、すでにステップの他のすべてのオプションフィールドにいます。 誰かがフィールドに気づいた理由は、既に終了できませんでした。 org DTOは一年をパースし、ベア **************** と coercion は BEFORE のオプショナルティティーを、従って数(null) == 0 およびあらゆる org 無し動かします 年はゼロに創設されました。 ディスプレイが見えないので サイトは真理を守って 0 は偽りです — で「第 0 」として解釈されています 代わりに `!= null` をチェックした最初のサイト。 初期処理 null と "" を返す undefined は、組織の同じ方法を正規化します。 fromJSON で、 実際に到着するnullを認めるネットワーク/テーマDTO。 `{org.yearEst &&<Fact/>}` を使用した2つの表示サイトは、 falsy-and レンダーは、引き出しに 0 を塗りました。 ザ・オブ・ザ・ 設定フォームは parseYearEst で保存をルーティングするので、空白のボックスはクリア JSON.stringify を null に変えるのではなく、目的上の値.
· kamo-internal
メンバーは、自分の目にするタブだけを表示
3つのメンバーセットの表面は、何も意味できない人々に開いていました お問い合わせ 各ゲートは、MEMBER Type または org のアプリで、CheckRight では決してありません。 checkRight は活動的な神モードの下のあらゆる権利のためにtrueを、そしてページを戻します canViewOtherMemberAccount ORsは、何もしない権利で、 メニュー getMemberType() デフォルトは 'MEMBER' です。 そのため、各々は、型のあるセッションで閉じられません。 まだ解決していません。 プラン&ビリング:チームメンバーのみ。 プラン、サブスクリプション、請求書、 支払方法および座席はすべてビジネスに属しています。 プレーンメンバー タブは会社のお金を示すので、それらのどれもを保持していました。 ツイート VIEWERは、他のページを開く所有者が管理を維持するので、 パス。 /settingsカードは同じ方法でゲートされます。タブを開くカード カードではなく、それの横にある委員会と同じくらい、レンダリングが悪くなります。 Ringtones & Alerts: NavTopの電話アイコンと同じ条件でゲート 同じ&&&の2つのコピーではなく1つの関数(hasPhoneAccess)です。 subtab は何もないが、アイコンが開く電話の構成です。 どの着信音、デバイス、大声、つまり電話のないメンバーがいる これまで聞いたことのないものを変えることができないハンドコントロール。 可聴周波、ビデオ そしてイベントの音は無接触です:それらは会議装置であり、アプリは所有します すべてのメンバーが持っている通知音。 リーガル&コンプライアンス:チームメンバーと、DocsとHRアプリの両方のorg。 新しい条件をインライン化するよりもむしろ、それらは法的BadgeAppliesToに折り目が付いて、 NavTopの署名ボタンとバッジの背後にあるカウントプロバイダ シェア。 そのボタンは、このタブに直接リンクするので、4番目のコピーの 条件は、自分の目的地を生きて、メンバーを自分の目的地にドロップすることを可能にします 説明なしのプロファイル。プロバイダは同じ条件で静かに行きます 代わりに STOMP サブスクリプションと 60 秒の poll を数える 工事で 0 です.
