forkit-connect 0.1.18 → 0.1.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/launcher.js +103 -42
  2. package/package.json +1 -1
package/dist/launcher.js CHANGED
@@ -695,14 +695,14 @@ function buildDiscovery(service) {
695
695
  }
696
696
  else if (draftPending) {
697
697
  statusLabel = 'Registration in progress';
698
- statusMeta = 'Forkit already started this privately. Continue it in Passports instead of starting over.';
698
+ statusMeta = 'Continue the existing private review before starting anything new.';
699
699
  statusTone = 'warn';
700
700
  actionLabel = 'Continue';
701
701
  actionTone = 'accent';
702
702
  }
703
703
  else if (registrationState === 'private_draft_required') {
704
704
  statusLabel = 'Finish privately first';
705
- statusMeta = registrationGuidance ?? 'Forkit needs one private review step before this passport can finish publishing.';
705
+ statusMeta = registrationGuidance ?? 'Complete one private review step before publishing.';
706
706
  statusTone = 'warn';
707
707
  actionLabel = 'Continue';
708
708
  actionTone = 'accent';
@@ -1366,6 +1366,9 @@ function renderLauncherHtml(launcherToken) {
1366
1366
  --launcher-accent-text: rgba(157, 238, 245, 0.92);
1367
1367
  --launcher-warning-text: rgba(255, 211, 178, 0.9);
1368
1368
  --launcher-shadow-strong: 0 28px 56px rgba(7, 10, 24, 0.42);
1369
+ --launcher-inbox-row-columns: 28px minmax(220px, 2.35fr) minmax(92px, 0.72fr) minmax(116px, 0.84fr) minmax(0, 1.08fr) 154px;
1370
+ --launcher-inbox-row-columns-compact: 28px minmax(0, 1.85fr) minmax(84px, 0.68fr) minmax(108px, 0.82fr) minmax(0, 0.98fr) 146px;
1371
+ --launcher-inbox-action-width: 154px;
1369
1372
  --traffic-intensity: 32;
1370
1373
  --traffic-speed: 12s;
1371
1374
  }
@@ -1906,7 +1909,7 @@ function renderLauncherHtml(launcherToken) {
1906
1909
 
1907
1910
  .quick-review-card {
1908
1911
  display: grid;
1909
- gap: 12px;
1912
+ gap: 10px;
1910
1913
  padding: 18px;
1911
1914
  border-radius: 26px;
1912
1915
  border: 1px solid var(--launcher-border-strong);
@@ -1925,6 +1928,10 @@ function renderLauncherHtml(launcherToken) {
1925
1928
  gap: 10px;
1926
1929
  }
1927
1930
 
1931
+ .quick-review-summary-grid {
1932
+ display: none;
1933
+ }
1934
+
1928
1935
  .review-summary-pill {
1929
1936
  display: grid;
1930
1937
  gap: 3px;
@@ -2031,17 +2038,18 @@ function renderLauncherHtml(launcherToken) {
2031
2038
 
2032
2039
  .quick-review-meta {
2033
2040
  margin: 0;
2034
- font-size: 0.8rem;
2035
- line-height: 1.35;
2036
- color: var(--launcher-text-muted);
2041
+ font-size: 0.84rem;
2042
+ line-height: 1.4;
2043
+ color: var(--launcher-text-primary);
2037
2044
  letter-spacing: 0.01em;
2045
+ font-weight: 500;
2038
2046
  }
2039
2047
 
2040
2048
  .quick-review-detail {
2041
2049
  margin: 0;
2042
- font-size: 0.86rem;
2043
- line-height: 1.45;
2044
- color: var(--launcher-text-secondary);
2050
+ font-size: 0.8rem;
2051
+ line-height: 1.4;
2052
+ color: var(--launcher-text-muted);
2045
2053
  }
2046
2054
 
2047
2055
  .quick-review-detail[hidden] {
@@ -2050,12 +2058,13 @@ function renderLauncherHtml(launcherToken) {
2050
2058
 
2051
2059
  .quick-review-status {
2052
2060
  border-radius: 16px;
2053
- padding: 10px 13px;
2061
+ padding: 9px 12px;
2054
2062
  border: 1px solid rgba(202, 188, 255, 0.12);
2055
2063
  background: var(--launcher-surface-muted);
2056
- color: var(--launcher-text-secondary);
2057
- font-size: 0.84rem;
2058
- line-height: 1.45;
2064
+ color: var(--launcher-text-primary);
2065
+ font-size: 0.8rem;
2066
+ line-height: 1.4;
2067
+ font-weight: 600;
2059
2068
  }
2060
2069
 
2061
2070
  .quick-review-status.ok {
@@ -4416,7 +4425,7 @@ function renderLauncherHtml(launcherToken) {
4416
4425
  .discovery-rows-head {
4417
4426
  margin-top: 14px;
4418
4427
  display: grid;
4419
- grid-template-columns: 28px minmax(260px, 2.5fr) minmax(110px, 0.78fr) minmax(150px, 0.96fr) minmax(190px, 1.18fr) auto;
4428
+ grid-template-columns: var(--launcher-inbox-row-columns);
4420
4429
  gap: 16px;
4421
4430
  padding: 0 14px;
4422
4431
  font-size: 0.86rem;
@@ -4439,7 +4448,7 @@ function renderLauncherHtml(launcherToken) {
4439
4448
 
4440
4449
  .discovery-item-row {
4441
4450
  display: grid;
4442
- grid-template-columns: 28px minmax(260px, 2.5fr) minmax(110px, 0.78fr) minmax(150px, 0.96fr) minmax(190px, 1.18fr) auto;
4451
+ grid-template-columns: var(--launcher-inbox-row-columns);
4443
4452
  gap: 16px;
4444
4453
  align-items: center;
4445
4454
  min-width: 0;
@@ -4601,6 +4610,8 @@ function renderLauncherHtml(launcherToken) {
4601
4610
  margin-top: 4px;
4602
4611
  font-size: 0.84rem;
4603
4612
  color: rgba(241, 235, 223, 0.62);
4613
+ line-height: 1.4;
4614
+ overflow-wrap: anywhere;
4604
4615
  }
4605
4616
 
4606
4617
  .discovery-type-pill {
@@ -4663,6 +4674,13 @@ function renderLauncherHtml(launcherToken) {
4663
4674
  white-space: nowrap;
4664
4675
  }
4665
4676
 
4677
+ .discovery-status-copy small {
4678
+ display: -webkit-box;
4679
+ -webkit-line-clamp: 2;
4680
+ -webkit-box-orient: vertical;
4681
+ overflow: hidden;
4682
+ }
4683
+
4666
4684
  .discovery-status-dot.ok { background: #3fd08f; box-shadow: 0 0 0 5px rgba(63, 208, 143, 0.12); }
4667
4685
  .discovery-status-dot.warn { background: #f59b52; box-shadow: 0 0 0 5px rgba(245, 155, 82, 0.12); }
4668
4686
  .discovery-status-dot.error { background: #4fa9ff; box-shadow: 0 0 0 5px rgba(79, 169, 255, 0.12); }
@@ -4673,6 +4691,9 @@ function renderLauncherHtml(launcherToken) {
4673
4691
  align-items: center;
4674
4692
  justify-content: flex-end;
4675
4693
  gap: 10px;
4694
+ width: var(--launcher-inbox-action-width);
4695
+ justify-self: end;
4696
+ flex: 0 0 auto;
4676
4697
  }
4677
4698
 
4678
4699
  .discovery-action-btn,
@@ -6357,7 +6378,8 @@ function renderLauncherHtml(launcherToken) {
6357
6378
  .discovery-filter-wrap,
6358
6379
  .discovery-search-wrap { flex: 1 1 0; }
6359
6380
  .discovery-rows-head,
6360
- .discovery-item-row { grid-template-columns: 28px minmax(0, 1.9fr) minmax(90px, 0.7fr) minmax(120px, 0.9fr) minmax(136px, 1fr) auto; }
6381
+ .discovery-item-row { grid-template-columns: var(--launcher-inbox-row-columns-compact); }
6382
+ .discovery-action-group { width: 146px; }
6361
6383
  .passport-overview-grid { grid-template-columns: 1fr; }
6362
6384
  .passport-stats { grid-template-columns: 1fr 1fr; }
6363
6385
  .runtime-layout { grid-template-columns: 1fr; }
@@ -6643,16 +6665,6 @@ function renderLauncherHtml(launcherToken) {
6643
6665
  </div>
6644
6666
  <p class="quick-review-meta" id="quick-review-meta">Model · Local</p>
6645
6667
  <p class="quick-review-detail" id="quick-review-detail" hidden>Nothing is registered automatically.</p>
6646
- <div class="review-summary-grid">
6647
- <div class="review-summary-pill">
6648
- <span class="review-summary-label">Action</span>
6649
- <span class="review-summary-value" id="quick-review-action-summary">Register on this account now</span>
6650
- </div>
6651
- <div class="review-summary-pill">
6652
- <span class="review-summary-label">Scope</span>
6653
- <span class="review-summary-value" id="quick-review-scope-summary">Account scope</span>
6654
- </div>
6655
- </div>
6656
6668
  <div class="review-recommendation-card">
6657
6669
  <p class="review-recommendation-kicker">Recommended next step</p>
6658
6670
  <h4 class="review-recommendation-title" id="quick-review-recommendation-title">Register solo</h4>
@@ -7939,10 +7951,10 @@ function renderLauncherHtml(launcherToken) {
7939
7951
  : 'Open runtime review to confirm health and connected models.';
7940
7952
  }
7941
7953
  if (item.statusLabel === 'Registration in progress') {
7942
- return 'Continue the existing private review instead of creating a second record.';
7954
+ return '';
7943
7955
  }
7944
7956
  if (item.statusLabel === 'Finish privately first') {
7945
- return 'One private review step is still required before publishing.';
7957
+ return '';
7946
7958
  }
7947
7959
  if (item.matchedPassportGaid && !item.passportGaid) {
7948
7960
  return 'A matching passport already exists. Reuse it first.';
@@ -7959,11 +7971,34 @@ function renderLauncherHtml(launcherToken) {
7959
7971
  function getQuickReviewStatusText(item) {
7960
7972
  if (!item) return 'Waiting for review.';
7961
7973
  const meta = typeof item.statusMeta === 'string' ? item.statusMeta.trim() : '';
7962
- if (!meta) return item.statusLabel;
7963
- if (item.kind === 'runtime' || item.statusTone === 'error' || item.statusLabel === 'Registration in progress' || item.statusLabel === 'Finish privately first') {
7964
- return item.statusLabel + ' · ' + meta;
7974
+ if (item.kind === 'runtime') {
7975
+ return meta || item.statusLabel;
7965
7976
  }
7966
- return item.statusLabel;
7977
+ if (item.statusLabel === 'Registration in progress') {
7978
+ return 'Continue the existing private review.';
7979
+ }
7980
+ if (item.statusLabel === 'Finish privately first') {
7981
+ return 'Private review is required before publishing.';
7982
+ }
7983
+ if (item.matchedPassportGaid && !item.passportGaid) {
7984
+ return 'A matching passport is ready to reuse.';
7985
+ }
7986
+ if (item.passportGaid) {
7987
+ return 'Passport already linked on Forkit.dev.';
7988
+ }
7989
+ if (item.actionLabel === 'Retry') {
7990
+ return 'Retry registration after the required fix is complete.';
7991
+ }
7992
+ return meta || item.statusLabel;
7993
+ }
7994
+
7995
+ function getQuickReviewChipMeta(item, total) {
7996
+ if (!item) return 'Everything looks clear';
7997
+ const precise = getQuickReviewStatusText(item);
7998
+ if (total > 1) {
7999
+ return precise + ' · ' + String(total) + ' items in inbox';
8000
+ }
8001
+ return precise;
7967
8002
  }
7968
8003
 
7969
8004
  function formatLauncherActionFeedback(result, fallbackMessage) {
@@ -8234,9 +8269,7 @@ function renderLauncherHtml(launcherToken) {
8234
8269
  setText('quick-review-chip-title', item.name);
8235
8270
  setText(
8236
8271
  'quick-review-chip-meta',
8237
- total > 1
8238
- ? (getReviewPrimaryLabel(item, 'solo') + ' · ' + String(total) + ' items need review')
8239
- : getReviewActionSummary(item, 'solo'),
8272
+ getQuickReviewChipMeta(item, total),
8240
8273
  );
8241
8274
  setText('quick-review-kicker', item.typeLabel || item.kind);
8242
8275
  setText('quick-review-title', item.name);
@@ -8707,16 +8740,44 @@ function renderLauncherHtml(launcherToken) {
8707
8740
  const normalizedUrl = String(avatarUrl || '').trim();
8708
8741
  if (initialsEl) initialsEl.textContent = initials || 'FC';
8709
8742
  if (!root || !image) return;
8710
- if (normalizedUrl) {
8711
- image.setAttribute('src', normalizedUrl);
8712
- image.hidden = false;
8713
- if (initialsEl) initialsEl.hidden = true;
8714
- root.classList.add('has-image');
8715
- } else {
8716
- image.removeAttribute('src');
8743
+ image.alt = initials ? (initials + ' profile photo') : 'Forkit Connect profile photo';
8744
+
8745
+ const showInitials = () => {
8717
8746
  image.hidden = true;
8747
+ image.removeAttribute('src');
8748
+ image.removeAttribute('data-avatar-url');
8718
8749
  if (initialsEl) initialsEl.hidden = false;
8719
8750
  root.classList.remove('has-image');
8751
+ };
8752
+
8753
+ const showPhoto = () => {
8754
+ image.hidden = false;
8755
+ if (initialsEl) initialsEl.hidden = true;
8756
+ root.classList.add('has-image');
8757
+ };
8758
+
8759
+ if (!normalizedUrl) {
8760
+ image.onload = null;
8761
+ image.onerror = null;
8762
+ showInitials();
8763
+ return;
8764
+ }
8765
+
8766
+ image.onload = () => {
8767
+ if (image.getAttribute('data-avatar-url') !== normalizedUrl) return;
8768
+ showPhoto();
8769
+ };
8770
+ image.onerror = () => {
8771
+ if (image.getAttribute('data-avatar-url') !== normalizedUrl) return;
8772
+ showInitials();
8773
+ };
8774
+ image.setAttribute('data-avatar-url', normalizedUrl);
8775
+ image.hidden = true;
8776
+ if (initialsEl) initialsEl.hidden = false;
8777
+ root.classList.remove('has-image');
8778
+ image.setAttribute('src', normalizedUrl);
8779
+ if (image.complete && image.naturalWidth > 0) {
8780
+ showPhoto();
8720
8781
  }
8721
8782
  }
8722
8783
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "forkit-connect",
3
- "version": "0.1.18",
3
+ "version": "0.1.19",
4
4
  "description": "Forkit Connect Local Engine - The Global AI Governance Fabric",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",