larkway 0.3.6 → 0.3.8

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.
@@ -10,7 +10,7 @@
10
10
  <script>
11
11
  // Token injected by the server when it renders index.html.
12
12
  // If the placeholder survives (file served raw), app.js falls back to ?token=.
13
- window.__LARKWAY_TOKEN__ = "__LARKWAY_TOKEN__";
13
+ window.__LK_BOOT_TOKEN__ = "__LARKWAY_TOKEN__";
14
14
  </script>
15
15
  </head>
16
16
  <body class="lk-root">
@@ -28,27 +28,16 @@
28
28
  <span class="brand-word">Larkway</span>
29
29
  <span class="brand-sub">看板</span>
30
30
  <span class="brand-ver" id="brand-ver" title="Larkway 版本"></span>
31
+ <span class="ctx-static" id="ctx-static-badge">
32
+ <span class="ctx-dot"></span>本机<span class="ctx-host" id="ctx-host"></span>
33
+ </span>
31
34
  </div>
32
35
 
33
- <!-- 中:绝对居中分段控件(本机 可改 / 公司中心库 只读) -->
34
- <nav class="context-switch" id="context-switch" aria-label="上下文切换">
35
- <button class="ctx-btn is-active" data-mode="local" id="ctx-local" type="button">
36
- 本机 <span class="ctx-hint">可改</span>
37
- </button>
38
- <button class="ctx-btn" data-mode="central" id="ctx-central" type="button" disabled>
39
- 公司中心库 <span class="ctx-hint">只读</span>
40
- </button>
41
- </nav>
42
-
43
36
  <!-- 右:本机服务指示器(LkServiceIndicator,renderServiceIndicator 注入)
44
37
  —— 它统一承担顶栏的服务/状态呈现;旧的整机 status-pill 已并入此处。 -->
45
38
  <div class="bridge-indicator" id="bridge-indicator" title="本机服务状态"></div>
46
39
  </header>
47
40
 
48
- <!-- 来源条:连接中心库后,在主体上方显示「来自 <仓库>@<分支> · 最近同步 N 分钟前」+ 同步入口。
49
- 由 app.js renderCentralSourceBar() 注入内容;仅 central 已连接态显示。 -->
50
- <div class="central-source-bar" id="central-source-bar" hidden></div>
51
-
52
41
  <!-- ───────────────────────── 主体:300px 名册侧栏 + 1fr 详情 ───────────────────────── -->
53
42
  <main class="layout">
54
43
  <!-- 左:助手名册 -->
@@ -76,7 +65,7 @@
76
65
  </li>
77
66
  </ul>
78
67
 
79
- <!-- 底部:添加新助手(indigo)+ 从公司中心库拉取(中心可用时由 app.js 显示) -->
68
+ <!-- 底部:添加新助手(indigo) -->
80
69
  <div class="sidebar-actions" id="sidebar-actions">
81
70
  <button class="btn btn-add" id="btn-add" type="button">
82
71
  <svg class="icon icon-sm" viewBox="0 0 24 24" aria-hidden="true">
@@ -84,14 +73,6 @@
84
73
  </svg>
85
74
  添加新助手
86
75
  </button>
87
- <button class="btn btn-block" id="btn-sync" type="button">
88
- <svg class="icon icon-sm" viewBox="0 0 24 24" aria-hidden="true">
89
- <path d="M12 3v12" />
90
- <path d="m8 11 4 4 4-4" />
91
- <path d="M4 21h16" />
92
- </svg>
93
- 从公司中心库拉取
94
- </button>
95
76
  </div>
96
77
  </aside>
97
78
 
@@ -119,19 +100,6 @@
119
100
  </div>
120
101
  </div>
121
102
 
122
- <!-- 连接公司中心库 modal(form → connecting → connected/failed) -->
123
- <div class="modal-backdrop" id="connect-backdrop" hidden>
124
- <div
125
- class="modal connect-modal"
126
- id="connect-modal"
127
- role="dialog"
128
- aria-modal="true"
129
- aria-labelledby="connect-header"
130
- >
131
- <!-- 整张卡内容由 app.js renderConnectFlow() 注入(各 phase 自带 header/footer) -->
132
- </div>
133
- </div>
134
-
135
103
  <!-- 同步预览 modal -->
136
104
  <div class="modal-backdrop" id="modal-backdrop" hidden>
137
105
  <div class="modal" id="modal" role="dialog" aria-modal="true" aria-labelledby="modal-header">
@@ -971,12 +971,6 @@ body {
971
971
  radial-gradient(135% 90% at 50% -10%, color-mix(in oklab, var(--br) 6%, transparent) 0%, transparent 58%),
972
972
  var(--surface);
973
973
  }
974
- .lk-ed--ro {
975
- /* 只读:更克制,微光改成中性灰 */
976
- background:
977
- radial-gradient(135% 90% at 50% -10%, color-mix(in oklab, var(--faint) 9%, transparent) 0%, transparent 58%),
978
- var(--surface);
979
- }
980
974
  .lk-ed__inner {
981
975
  width: 100%;
982
976
  max-width: 580px;
@@ -998,11 +992,6 @@ body {
998
992
  border: 1px solid var(--br-edge);
999
993
  color: var(--br-text);
1000
994
  }
1001
- .lk-ed--ro .lk-ed__eyebrow {
1002
- background: var(--bg);
1003
- border-color: var(--border);
1004
- color: var(--muted);
1005
- }
1006
995
  .lk-ed__eyebrow svg {
1007
996
  width: 14px;
1008
997
  height: 14px;
@@ -1119,11 +1108,6 @@ body {
1119
1108
  border: 1px solid var(--br-edge);
1120
1109
  color: var(--br);
1121
1110
  }
1122
- .lk-ed--ro .lk-ed__chip {
1123
- background: var(--bg);
1124
- border-color: var(--border);
1125
- color: var(--muted);
1126
- }
1127
1111
  .lk-ed__chip svg {
1128
1112
  width: 21px;
1129
1113
  height: 21px;
@@ -1144,9 +1128,6 @@ body {
1144
1128
  align-items: center;
1145
1129
  justify-content: center;
1146
1130
  }
1147
- .lk-ed--ro .lk-ed__chip-no {
1148
- background: var(--faint);
1149
- }
1150
1131
  .lk-ed__step-t {
1151
1132
  font-size: 13.5px;
1152
1133
  font-weight: 700;
@@ -2050,185 +2031,12 @@ textarea.input {
2050
2031
  line-height: 1.65;
2051
2032
  }
2052
2033
 
2053
- /* ===========================================================================
2054
- promote section
2055
- =========================================================================== */
2056
- .promote-actions {
2057
- display: flex;
2058
- gap: 10px;
2059
- margin-top: 14px;
2060
- flex-wrap: wrap;
2061
- }
2062
- .promote-hint {
2063
- margin-top: 12px;
2064
- font-size: 12.5px;
2065
- color: var(--muted);
2066
- display: flex;
2067
- align-items: flex-start;
2068
- gap: 7px;
2069
- line-height: 1.5;
2070
- }
2071
- .promote-hint .icon {
2072
- color: var(--destructive-strong);
2073
- flex-shrink: 0;
2074
- margin-top: 1px;
2075
- }
2076
- /* 未连接引导条(LkPromoteCard 未连接态):indigo 提示 + 「去连接」按钮 */
2077
- .promote-connect-hint {
2078
- margin-top: 14px;
2079
- display: flex;
2080
- align-items: center;
2081
- gap: 9px;
2082
- padding: 11px 14px;
2083
- border-radius: 10px;
2084
- background: var(--br-soft);
2085
- border: 1px solid var(--br-edge);
2086
- font-size: 13px;
2087
- color: #334155;
2088
- line-height: 1.5;
2089
- }
2090
- .promote-connect-hint .icon {
2091
- color: var(--br);
2092
- flex-shrink: 0;
2093
- }
2094
- .promote-connect-hint > button {
2095
- margin-left: auto;
2096
- flex-shrink: 0;
2097
- white-space: nowrap;
2098
- }
2099
- /* 晋升内联结果面板(成功 / 失败):包裹 badge + 正文 + 按钮 */
2100
- .promote-result-panel {
2101
- display: flex;
2102
- gap: 13px;
2103
- margin-top: 14px;
2104
- padding: 15px 16px;
2105
- border-radius: 12px;
2106
- }
2107
- .promote-result-panel .prp-badge {
2108
- flex-shrink: 0;
2109
- width: 34px;
2110
- height: 34px;
2111
- border-radius: 10px;
2112
- background: #fff;
2113
- display: inline-flex;
2114
- align-items: center;
2115
- justify-content: center;
2116
- }
2117
- .promote-result-panel .prp-body {
2118
- min-width: 0;
2119
- flex: 1;
2120
- }
2121
- .promote-result-panel .prp-title {
2122
- font-size: 14.5px;
2123
- font-weight: 700;
2124
- line-height: 1.35;
2125
- }
2126
- .promote-result-panel .prp-desc {
2127
- font-size: 13px;
2128
- color: #334155;
2129
- line-height: 1.55;
2130
- margin: 3px 0 0;
2131
- }
2132
- .promote-result-panel .prp-meta {
2133
- display: flex;
2134
- align-items: center;
2135
- gap: 8px;
2136
- margin-top: 8px;
2137
- font-size: 12px;
2138
- color: var(--muted);
2139
- flex-wrap: wrap;
2140
- }
2141
- .promote-result-panel .prp-actions {
2142
- display: flex;
2143
- gap: 9px;
2144
- flex-wrap: wrap;
2145
- margin-top: 12px;
2146
- }
2147
- /* 同步弹窗 header 升级:indigo 徽章 + 右侧 x 关闭按钮 */
2148
- .modal-header-sync {
2149
- padding: 22px 26px 0;
2150
- }
2151
- .modal-header-sync-row {
2152
- display: flex;
2153
- align-items: center;
2154
- justify-content: space-between;
2155
- }
2156
- .modal-header-sync h3 {
2157
- margin: 0;
2158
- font-size: 18px;
2159
- font-weight: 700;
2160
- color: var(--text);
2161
- display: flex;
2162
- align-items: center;
2163
- gap: 9px;
2164
- }
2165
- .modal-header-sync .sync-icon-badge {
2166
- width: 30px;
2167
- height: 30px;
2168
- border-radius: 9px;
2169
- background: var(--br-soft);
2170
- border: 1px solid var(--br-edge);
2171
- color: var(--br);
2172
- display: inline-flex;
2173
- align-items: center;
2174
- justify-content: center;
2175
- flex-shrink: 0;
2176
- }
2177
- .modal-header-sync .sync-close-btn {
2178
- display: inline-flex;
2179
- padding: 6px;
2180
- border: none;
2181
- border-radius: 8px;
2182
- background: transparent;
2183
- color: var(--muted);
2184
- cursor: pointer;
2185
- flex-shrink: 0;
2186
- }
2187
- .modal-header-sync .sync-close-btn:hover {
2188
- background: var(--bg);
2189
- color: var(--text);
2190
- }
2191
- .modal-header-sync p {
2192
- margin: 8px 0 0;
2193
- font-size: 13.5px;
2194
- color: var(--muted);
2195
- line-height: 1.55;
2196
- }
2197
2034
  .btn-sm {
2198
2035
  padding: 7px 14px;
2199
2036
  font-size: 13px;
2200
2037
  border-radius: 9px;
2201
2038
  }
2202
2039
 
2203
- /* ===========================================================================
2204
- sync group(modal)
2205
- =========================================================================== */
2206
- .sync-group {
2207
- margin-bottom: 14px;
2208
- }
2209
- .sync-label {
2210
- font-size: 13px;
2211
- font-weight: 700;
2212
- display: block;
2213
- margin-bottom: 5px;
2214
- }
2215
- .sync-ok {
2216
- color: #15803d;
2217
- }
2218
- .sync-warn {
2219
- color: #b45309;
2220
- }
2221
- .sync-dim {
2222
- color: var(--muted);
2223
- }
2224
- .sync-list {
2225
- list-style: disc;
2226
- padding-left: 22px;
2227
- margin: 0;
2228
- font-family: ui-monospace, "Cascadia Code", monospace;
2229
- font-size: 13px;
2230
- }
2231
-
2232
2040
  /* ===========================================================================
2233
2041
  buttons
2234
2042
  =========================================================================== */
@@ -3730,295 +3538,6 @@ textarea.input {
3730
3538
  flex-direction: column;
3731
3539
  }
3732
3540
 
3733
- /* ===========================================================================
3734
- 公司中心库 tab(centralConnect / centralTab / centralSync 复刻)
3735
- 配色铁律:连接 / 同步 = indigo(--br);移除告警 = amber;不可逆外发 = 红。
3736
- 中心库存「配置」不是「进程」→ 不显在线 / 心跳,只显「谁晋升的 · 多久前更新」。
3737
- =========================================================================== */
3738
-
3739
- /* ── 来源条(LkSyncBar):来自 <仓库>@<分支> · 最近同步 N 分钟前 + 同步入口 ── */
3740
- .central-source-bar {
3741
- display: flex;
3742
- align-items: center;
3743
- gap: 14px;
3744
- flex-wrap: wrap;
3745
- padding: 12px 24px;
3746
- background: var(--surface);
3747
- border-bottom: 1px solid var(--border);
3748
- flex-shrink: 0;
3749
- }
3750
- .central-source-bar[hidden] {
3751
- display: none;
3752
- }
3753
- .csb-from {
3754
- display: inline-flex;
3755
- align-items: center;
3756
- gap: 8px;
3757
- min-width: 0;
3758
- font-size: 13px;
3759
- color: var(--muted);
3760
- }
3761
- .csb-from .icon {
3762
- color: var(--faint);
3763
- flex-shrink: 0;
3764
- }
3765
- .csb-repo {
3766
- color: var(--text);
3767
- font-family: ui-monospace, "Cascadia Code", monospace;
3768
- font-weight: 600;
3769
- }
3770
- .csb-branch {
3771
- display: inline-flex;
3772
- align-items: center;
3773
- gap: 3px;
3774
- color: var(--faint);
3775
- }
3776
- .csb-sep {
3777
- color: var(--faint);
3778
- }
3779
- .csb-synced {
3780
- color: var(--faint);
3781
- white-space: nowrap;
3782
- }
3783
- .csb-right {
3784
- margin-left: auto;
3785
- display: inline-flex;
3786
- align-items: center;
3787
- gap: 12px;
3788
- }
3789
- /* 「N 项可更新」indigo pill */
3790
- .csb-updates {
3791
- display: inline-flex;
3792
- align-items: center;
3793
- gap: 6px;
3794
- font-size: 12.5px;
3795
- font-weight: 600;
3796
- color: var(--br-text);
3797
- padding: 4px 11px;
3798
- border-radius: 999px;
3799
- background: var(--br-soft);
3800
- border: 1px solid var(--br-edge);
3801
- }
3802
- .csb-updates::before {
3803
- content: "";
3804
- width: 7px;
3805
- height: 7px;
3806
- border-radius: 50%;
3807
- background: var(--br);
3808
- }
3809
- /* 「已是最新」绿色平静态 */
3810
- .csb-fresh {
3811
- display: inline-flex;
3812
- align-items: center;
3813
- gap: 6px;
3814
- font-size: 12.5px;
3815
- color: #15803d;
3816
- }
3817
- /* 同步按钮:有更新 = indigo 实底;否则描边「检查更新」 */
3818
- .csb-sync-btn {
3819
- display: inline-flex;
3820
- align-items: center;
3821
- gap: 7px;
3822
- padding: 8px 15px;
3823
- border-radius: 9px;
3824
- border: 1px solid var(--border);
3825
- background: var(--surface);
3826
- color: var(--text);
3827
- font-size: 13px;
3828
- font-weight: 600;
3829
- font-family: inherit;
3830
- white-space: nowrap;
3831
- cursor: pointer;
3832
- transition: background 0.14s, border-color 0.14s, color 0.14s;
3833
- }
3834
- .csb-sync-btn:hover:not(:disabled) {
3835
- background: var(--bg);
3836
- }
3837
- .csb-sync-btn.has-updates {
3838
- border: none;
3839
- background: var(--br);
3840
- color: #fff;
3841
- }
3842
- .csb-sync-btn.has-updates:hover:not(:disabled) {
3843
- background: #4338ca;
3844
- }
3845
- .csb-sync-btn:disabled {
3846
- cursor: wait;
3847
- }
3848
-
3849
- /* ── 中心库只读名册行:头像 + 名字 + 「<by> 晋升 · <updated>」(无在线/心跳)── */
3850
- .bot-list li.cc-roster-item .roster-state {
3851
- /* 复用 .roster-meta 容器,但替换底部行内容(by/updated)。 */
3852
- }
3853
- .cc-roster-by {
3854
- display: inline-flex;
3855
- align-items: center;
3856
- gap: 5px;
3857
- font-size: 11.5px;
3858
- color: var(--faint);
3859
- }
3860
- .cc-roster-by .icon {
3861
- width: 11px;
3862
- height: 11px;
3863
- flex-shrink: 0;
3864
- }
3865
-
3866
- /* ── 「想改?回本机」只读横幅(中心库详情顶部)── */
3867
- .cc-readonly-banner {
3868
- display: flex;
3869
- align-items: center;
3870
- gap: 12px;
3871
- padding: 14px 16px;
3872
- border-radius: var(--radius-sm);
3873
- background: var(--br-soft);
3874
- border: 1px solid var(--br-edge);
3875
- margin-bottom: 20px;
3876
- }
3877
- .cc-readonly-banner .icon {
3878
- color: var(--br);
3879
- flex-shrink: 0;
3880
- width: 18px;
3881
- height: 18px;
3882
- }
3883
- .cc-readonly-banner-title {
3884
- font-size: 13.5px;
3885
- font-weight: 700;
3886
- color: var(--br-text);
3887
- }
3888
- .cc-readonly-banner-sub {
3889
- font-size: 12.5px;
3890
- color: #334155;
3891
- line-height: 1.5;
3892
- margin-top: 1px;
3893
- }
3894
- .cc-go-local-btn {
3895
- display: inline-flex;
3896
- align-items: center;
3897
- gap: 6px;
3898
- padding: 8px 14px;
3899
- border-radius: 9px;
3900
- border: none;
3901
- background: var(--br);
3902
- color: #fff;
3903
- font-size: 13px;
3904
- font-weight: 600;
3905
- font-family: inherit;
3906
- cursor: pointer;
3907
- white-space: nowrap;
3908
- flex-shrink: 0;
3909
- margin-left: auto;
3910
- transition: background 0.14s;
3911
- }
3912
- .cc-go-local-btn:hover {
3913
- background: #4338ca;
3914
- }
3915
-
3916
- /* ── 中心库侧栏底部「去本机添加/晋升」(只读 = 无添加按钮)── */
3917
- .sidebar-actions .cc-go-local-block {
3918
- width: 100%;
3919
- display: flex;
3920
- align-items: center;
3921
- justify-content: center;
3922
- gap: 7px;
3923
- padding: 10px 14px;
3924
- font-size: 13px;
3925
- font-weight: 600;
3926
- color: var(--br-text);
3927
- background: var(--br-soft);
3928
- border: 1px solid var(--br-edge);
3929
- border-radius: 10px;
3930
- cursor: pointer;
3931
- font-family: inherit;
3932
- }
3933
- .sidebar-actions .cc-go-local-block:hover {
3934
- background: var(--br-hover);
3935
- }
3936
-
3937
- /* 同步预览弹窗:设计稿 520px / 圆角 16px(加 .modal--sync class 时生效,关闭后清掉) */
3938
- .modal--sync {
3939
- width: 520px;
3940
- border-radius: 16px;
3941
- }
3942
- /* ── 连接弹窗:整张卡内容由 JS 注入,这里只放容器尺寸 ── */
3943
- .connect-modal {
3944
- width: 520px;
3945
- padding: 0;
3946
- overflow-y: auto;
3947
- }
3948
- .connect-modal .modal-body,
3949
- .connect-modal .modal-footer,
3950
- .connect-modal .modal-header {
3951
- /* 各 phase 自带内边距,容器不重复加。 */
3952
- }
3953
-
3954
- /* 连接表单输入(沿用 LkConfigForm 视觉:mono + focus 环) */
3955
- .cc-input {
3956
- width: 100%;
3957
- padding: 10px 12px;
3958
- border: 1px solid var(--border);
3959
- border-radius: 9px;
3960
- font-size: 13.5px;
3961
- font-family: ui-monospace, "Cascadia Code", monospace;
3962
- color: var(--text);
3963
- background: var(--surface);
3964
- outline: none;
3965
- box-sizing: border-box;
3966
- transition: border-color 0.15s, box-shadow 0.15s;
3967
- }
3968
- .cc-input:focus {
3969
- border-color: var(--br-focus);
3970
- box-shadow: var(--ring);
3971
- }
3972
-
3973
- /* 同步预览变更行(LkSyncPreview · CcChangeRow):新增=绿 / 更新=indigo / 移除=amber */
3974
- .cc-change-row {
3975
- display: flex;
3976
- align-items: flex-start;
3977
- gap: 11px;
3978
- padding: 11px 13px;
3979
- border-radius: 10px;
3980
- background: var(--bg);
3981
- border: 1px solid var(--border);
3982
- }
3983
- .cc-change-row.is-removed {
3984
- background: #fffbeb;
3985
- border-color: #fde68a;
3986
- }
3987
- .cc-change-badge {
3988
- flex-shrink: 0;
3989
- width: 26px;
3990
- height: 26px;
3991
- border-radius: 8px;
3992
- background: var(--surface);
3993
- display: inline-flex;
3994
- align-items: center;
3995
- justify-content: center;
3996
- }
3997
- .cc-change-tag {
3998
- font-size: 10.5px;
3999
- font-weight: 700;
4000
- padding: 1px 7px;
4001
- border-radius: 999px;
4002
- }
4003
-
4004
- /* 中心库只读详情:大头像(68px 圆角方,对齐 CcReadonlyDetail LkAvatar size=68 radius=19) */
4005
- .avatar-list.cc-detail-avatar {
4006
- width: 68px;
4007
- height: 68px;
4008
- border-radius: 19px;
4009
- }
4010
- .avatar-list.cc-detail-avatar .avatar-fallback {
4011
- font-size: 28px;
4012
- border-radius: inherit;
4013
- }
4014
-
4015
- /* 断开按钮:hover 走危险红(不可逆外发以外的破坏性操作,与 LkConnectedBlock 一致) */
4016
- .csb-disconnect-btn:hover:not(:disabled) {
4017
- color: var(--destructive-text);
4018
- border-color: #fecaca;
4019
- background: var(--destructive-weak);
4020
- }
4021
-
4022
3541
  /* ── Backend 身份层组件(backendKit.jsx 复刻)── */
4023
3542
  /*
4024
3543
  * 三轴分离颜色铁律:
@@ -4194,29 +3713,6 @@ textarea.input {
4194
3713
  font-size: 12.5px;
4195
3714
  }
4196
3715
 
4197
- /* readonly 展示(中心库) */
4198
- .lk-bk-readonly {
4199
- display: flex;
4200
- align-items: center;
4201
- gap: 12px;
4202
- padding: 13px 15px;
4203
- border-radius: 11px;
4204
- background: #f8fafc;
4205
- border: 1px solid #e2e8f0;
4206
- }
4207
- .lk-bk-readonly-name { font-size: 14px; font-weight: 700; color: #1e293b; }
4208
- .lk-bk-readonly-vendor { font-size: 12.5px; color: #64748b; margin-top: 1px; }
4209
- .lk-bk-readonly-lock {
4210
- display: inline-flex;
4211
- align-items: center;
4212
- gap: 5px;
4213
- font-size: 12px;
4214
- font-weight: 600;
4215
- color: #94a3b8;
4216
- margin-left: auto;
4217
- flex-shrink: 0;
4218
- }
4219
-
4220
3716
  /* meta strip 5 列(原 4 列扩展;响应自动折行) */
4221
3717
  .hero-meta.hero-meta-5 {
4222
3718
  grid-template-columns: repeat(5, 1fr);
@@ -4256,3 +3752,32 @@ textarea.input {
4256
3752
  font-size: 13px;
4257
3753
  line-height: 1.55;
4258
3754
  }
3755
+
3756
+ /* ── 页头 B:本机静态标识(非交互) ── */
3757
+ .ctx-static {
3758
+ display: inline-flex;
3759
+ align-items: center;
3760
+ gap: 6px;
3761
+ margin-left: 10px;
3762
+ padding: 4px 11px 4px 9px;
3763
+ border-radius: 999px;
3764
+ background: var(--bg);
3765
+ border: 1px solid var(--border);
3766
+ font-size: 12.5px;
3767
+ font-weight: 600;
3768
+ color: var(--muted);
3769
+ white-space: nowrap;
3770
+ }
3771
+ .ctx-static .ctx-dot {
3772
+ width: 6px;
3773
+ height: 6px;
3774
+ border-radius: 50%;
3775
+ background: var(--br);
3776
+ flex-shrink: 0;
3777
+ }
3778
+ .ctx-static .ctx-host {
3779
+ font-family: ui-monospace, "Cascadia Code", monospace;
3780
+ font-size: 11.5px;
3781
+ font-weight: 500;
3782
+ color: var(--faint);
3783
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "larkway",
3
- "version": "0.3.6",
3
+ "version": "0.3.8",
4
4
  "description": "Thin bridge: Feishu thread to local Claude Code CLI",
5
5
  "license": "MIT",
6
6
  "author": "Chuck Wu (chuckwu0)",
@@ -8,7 +8,7 @@
8
8
  "type": "git",
9
9
  "url": "git+https://github.com/chuckwu0/larkway.git"
10
10
  },
11
- "homepage": "https://github.com/chuckwu0/larkway#readme",
11
+ "homepage": "https://larkway.dev",
12
12
  "bugs": {
13
13
  "url": "https://github.com/chuckwu0/larkway/issues"
14
14
  },